C语言实现仓库物资管理系统分享!

前言

此系统为博主大一上学期C语言课程设计的大作业,由于当时初步接触C语言,现在来看程序写的太烂了,简直不忍直视……但是还是想通过博客的形式记录下来,也可以给刚接触学习C语言的人一些参考吧!

系统功能设计

仓库初始化

查询库存

*按电器名查询
*按品牌名查询
*按送货人查询
*按提货人查询
*按电器名称由大到小顺序输出所有库存
*按库存数量由高到低输出所有库存

物资存入

物资取出

统计物资

*入库电器总价值
*出库电器总利润
*统计某月每种电器的出库数目
*统计某月每种品牌的电器的出库数目

代码

  #include<stdio.h>  #include<stdlib.h>  #include<string.h>  //------------------------------------------------------结构体区域  typedef struct  {   char name[20];       //电器名称   char brandName[20];    //品牌名称   int num;          //库存数量   int unitPrice;       //单价   int year;   int month;   int day;   char manName[20];  }stock;                 //库存  stock s[10000],t[10000],x[10000],y[10000],in[10000],out[10000],no[10000],no1[10000],no2[10000];        //全局变量  //-------------------------------------------------------函数声明区域  void menu(void);//主菜单函数  void write(void);//创建仓库函数  void find(void);//查询库存函数  void findPart(void);//部分查询函数  void findOne(void);  //按电器名查询  void findTwo(void);  //按品牌名查询  void findThree(void); //按提货人查询  void findFour(void);  //按送货人查询  void findFive(void);  //按电器名称大小顺序输出所有库存  void findSix(void);  //按库存数量由高到低输出所有库存  void deposit(void);//存入仓库函数  void takeout(void);//取出仓库函数  void tongji(void);//统计函数  void tongji1(void);//第一种统计函数  void tongji2(void);//第二种统计函数  void tongji3(void);//第三种统计函数  void tongji4(void);//第四种统计函数  int readFile(void);//读取库存记录文件中所有结构体的数目  int readFile1(void);//读取入库记录文件中所有结构体的数目  int readFile2(void);//读取出库记录文件中所有结构体的数目  void end(void);//结束退出函数  //-------------------------------------------------------主函数  int main()  {   menu();   return 0;  }  void menu(void)  {   int n,l=0;   printf("============================================================n");   printf("                              n");   printf(" -----*****欢 迎 使 用 仓 库 物 资 管 理 系 统 ! *****----- n");   printf("                              n");   printf("============================================================n");   printf("                              n");   printf(" 您可以进行以下操作:                    n");   printf("                              n");   printf("     1.  仓库初始化                  n");   printf("                              n");   printf("     2.  查询库存                   n");   printf("                              n");   printf("     3.  物资存入                   n");   printf("                              n");   printf("     4.  物资取出                   n");   printf("                              n");   printf("     5.  统计物资                   n");   printf("                              n");   printf("     0.  退出系统                   n");   printf("                              n");   printf("                              n");   printf("============================================================n");   printf("现在请选择您要进行的操作:(请输入操作前的数字)");   while(scanf("%d",&n)!=EOF)    {      switch(n)   {    case 1:system("CLS");write();break;    case 2:system("CLS");find();break;    case 3:system("CLS");deposit();break;    case 4:system("CLS");takeout();break;    case 5:system("CLS");tongji();break;    case 0:system("CLS");end();exit(0);    default :printf("没有此选项!n 请重新输入!n");      }    }                }  void write(void)    //right  {   FILE *fp;   int i,n;   fp=fopen("库存记录.dat","wb");   rewind(fp);   printf("============================================================n");   printf("请输入仓库中电器信息的组数!n    ps:相同电器但是不同品牌电器算多种!n");   scanf("%d",&n);   for(i=0;i<n;i++)   {   printf("开始写入第%d组n",i+1);   printf("请输入电器名称:");   scanf("%s",s[i].name);   printf("请输入电器品牌名称:");   scanf("%s",s[i].brandName);   printf("请输入电器数量:");   scanf("%d",&s[i].num);   printf("请输入电器单价:");   scanf("%d",&s[i].unitPrice);   printf("请输入存货时间: <年月日之间用空格隔开>例:2016 12 01n");   scanf("%d%d%d",&s[i].year,&s[i].month,&s[i].day);   printf("请输入存货人:");   scanf("%s",s[i].manName);   }   fwrite(s,sizeof(stock),n,fp);   fclose(fp);   printf("当前库存记录:(请仔细核对)n");   for(i=0;i<n;i++)    {     printf("%sn%sn%dn%dn%d.%d.%dn%sn",s[i].name,s[i].brandName,s[i].num,s[i].unitPrice,s[i].year,s[i].month,s[i].day,s[i].manName);    }     printf("电器信息写入完成!n 请按回车键返回主界面!n");   getchar();getchar();   system("CLS");   menu();  }  void findOne(void)  {   char name[10],ch='y';   int i,k,n,bn;   bn=readFile();   do   {   system("CLS");   printf("============================================================n");   printf("请输入要查询的电器名称:n");   getchar();   gets(name);   k=-1;   for(i=0;i<bn;i++)   {    if(strcmp(t[i].name,name)==0)    {    printf("该电器信息如下:n");    k=i;    printf("电器名称:%s,电器品牌:%s,库存数量:%d,电器单价:%d,入库时间:%d.%d.%d,存货人:%sn",t[k].name,t[k].brandName,t[k].num,t[k].unitPrice,t[k].year,t[k].month,t[k].day,t[k].manName);    }   }   if(k==-1)   {    printf("抱歉,本仓库中无此电器!n");   }   printf("n是否继续查询?<y/n>n");   ch=getchar();   }while(ch=='y'||ch=='Y');   printf("将返回上一级菜单!n 请按回车键确认!n");   getchar();getchar();   system("CLS");   findPart();  }  void findTwo(void)  {   char brandName[10],ch='y';   int i,k,n,bn;   bn=readFile();   do   {   system("CLS");   printf("============================================================n");   printf("请输入要查询的品牌名称:n");   getchar();   gets(brandName);   k=-1;   for(i=0;i<bn;i++)   {    if(strcmp(t[i].brandName,brandName)==0)    {    printf("该电器信息如下:n");    k=i;    printf("电器名称:%s,电器品牌:%s,库存数量:%d,电器单价:%d,入库时间:%d.%d.%d,存货人:%sn",t[k].name,t[k].brandName,t[k].num,t[k].unitPrice,t[k].year,t[k].month,t[k].day,t[k].manName);    }   }   if(k==-1)   {    printf("抱歉,本仓库中无此电器!n");     }   printf("n是否继续查询?<y/n>n");   ch=getchar();   }while(ch=='y'||ch=='Y');   printf("将返回上一级菜单!n 请按回车键确认!n");   getchar();getchar();   system("CLS");   findPart();  }  void findThree(void)      // 按送货人查询 入库  {   char manName[10],ch='y';   int i,k,n,bn1;   bn1=readFile1();   FILE *fp1;   fp1=fopen("入库记录.dat","rb+");   if(fp1==NULL)   {   printf("该仓库中未添加任何电器!n");   exit(0);   }   fread(&y,sizeof(stock),bn1,fp1);   fclose(fp1);   do   {   system("CLS");   printf("============================================================n");   printf("请输入要查询的存货人:n");   getchar();   gets(manName);   k=-1;   for(i=0;i<bn1;i++)   {    if(strcmp(y[i].manName,manName)==0)    {    printf("该电器信息如下:n");    k=i;    printf("电器名称:%s,电器品牌:%s,库存数量:%d,电器单价:%d,入库时间:%d.%d.%d,存货人:%sn",y[k].name,y[k].brandName,y[k].num,y[k].unitPrice,y[k].year,y[k].month,y[k].day,y[k].manName);    }   }   if(k==-1)   {    printf("抱歉,本仓库中无此存货人存入的电器!n");     }   printf("n是否继续查询?<y/n>n");   ch=getchar();   }while(ch=='y'||ch=='Y');   printf("将返回上一级菜单!n 请按回车键确认!n");   getchar();getchar();   system("CLS");   findPart();  }  void findFour(void)     //按提货人查询  出库  {   char manName[10],ch='y';   int i,k,n,bn2;   bn2=readFile2();   FILE *fp2;   fp2=fopen("出库记录.dat","rb+");   if(fp2==NULL)   {   printf("该仓库中未提出任何电器!n");   exit(0);   }   fread(&x,sizeof(stock),bn2,fp2);   fclose(fp2);   do   {   system("CLS");   printf("============================================================n");   printf("请输入要查询的提货人:n");   getchar();   gets(manName);   k=-1;   for(i=0;i<bn2;i++)   {    if(strcmp(x[i].manName,manName)==0)    {    printf("该电器信息如下:n");    k=i;    printf("电器名称:%s,电器品牌:%s,库存数量:%d,电器单价:%d,出库时间:%d.%d.%d,提货人:%sn",x[k].name,x[k].brandName,x[k].num,x[k].unitPrice,x[k].year,x[k].month,x[k].day,x[k].manName);    }   }   if(k==-1)   {    printf("抱歉,本仓库中无此提货人提出的电器!n");     }   printf("n是否继续查询?<y/n>n");   ch=getchar();   }while(ch=='y'||ch=='Y');   printf("将返回上一级菜单!n 请按回车键确认!n");   getchar();getchar();   system("CLS");   findPart();      }  void findFive(void)    //电器名称大小顺序输出所有库存  {   int bn;   bn=readFile();   printf("============================================================n");   FILE *fp;   fp=fopen("库存记录.dat","rb+");   if(fp==NULL)   {   printf("该仓库中无库存!n");   exit(0);   }   fread(&s,sizeof(stock),bn,fp);   int i,j;   for(i=0;i<bn-1;i++)   for(j=0;j<bn-1-i;j++)   {    if(s[j].name<s[j+1].name)    {    t[1]=s[j+1];    s[j+1]=s[j];    s[j]=t[1];    }   }   for(i=0;i<bn;i++)   printf("%d. 电器名称:%s,电器品牌:%s,库存数量:%d,电器单价:%d,入库时间:%d.%d.%d,存货人:%sn",i+1,s[i].name,s[i].brandName,s[i].num,s[i].unitPrice,s[i].year,s[i].month,s[i].day,s[i].manName);   printf("n输出完成!请按回车键返回上一级!n");   getchar();getchar();   system("CLS");   findPart();  }  void findSix(void)    //按库存数量由高到低输出所有库存  {   int bn;   bn=readFile();   printf("============================================================n");   FILE *fp;   fp=fopen("库存记录.dat","rb+");   if(fp==NULL)   {   printf("该仓库中无库存!n");   exit(0);   }   fread(&s,sizeof(stock),bn,fp);   int i,j;   for(i=0;i<bn-1;i++)   for(j=0;j<bn-1-i;j++)   {    if(s[j].num<s[j+1].num)    {    t[1]=s[j+1];    s[j+1]=s[j];    s[j]=t[1];    }   }   for(i=0;i<bn;i++)   printf("%d. 电器名称:%s,电器品牌:%s,库存数量:%d,电器单价:%d,入库时间:%d.%d.%d,存货人:%sn",i+1,s[i].name,s[i].brandName,s[i].num,s[i].unitPrice,s[i].year,s[i].month,s[i].day,s[i].manName);   printf("n输出完成!请按回车键返回上一级!n");   getchar();getchar();   system("CLS");   findPart();  }  void findPart(void)  {   int n;   printf("============================================================n");   printf("1. 按电器名查询n");   printf("2. 按品牌名查询n");   printf("3. 按送货人查询n");   printf("4. 按提货人查询n");   printf("5. 按电器名称由大到小顺序输出所有库存n");   printf("6. 按库存数量由高到低输出所有库存n");   printf("0. 返回主菜单n");   while(scanf("%d",&n)!=EOF)   switch(n)   {   case 1:system("CLS");findOne();break;   case 2:system("CLS");findTwo();break;   case 3:system("CLS");findThree();break;   case 4:system("CLS");findFour();break;   case 5:system("CLS");findFive();break;   case 6:system("CLS");findSix();break;   case 0:system("CLS");menu();break;   default :printf("没有此选项!n 请重新输入!n");   }  }  void find(void)  {   int i,bn;   FILE *fp;   fp=fopen("库存记录.dat","rb+");   if(fp==NULL)   {   printf("该仓库中无库存!n");   exit(0);   }   rewind(fp);   bn=readFile();   fread(&t,sizeof(stock),bn,fp);   getchar();   findPart();   fclose(fp);  }  void deposit(void)  //入库  {   printf("============================================================n");   int bn,bn1;   stock jia;   FILE *fp1,*fp;   int i=0,j,n=0;   char ch='y';     printf("请输入要加入仓库的电器信息:n");   do   {   fp1=fopen("入库记录.dat","ab+");   if(fp1==NULL)   {    printf("该仓库中未添加任何电器!n");    exit(0);   }   fp=fopen("库存记录.dat","ab+");   bn=readFile();   bn1=readFile1();   printf("请输入电器名称:");   scanf("%s",jia.name);   printf("请输入电器品牌:");   scanf("%s",jia.brandName);   printf("请输入电器数量:");   scanf("%d",&jia.num);   printf("请输入电器单价:");   scanf("%d",&jia.unitPrice);   printf("请输入送货时间: <ps: 年月日之间用空格隔开> 例:2016 12 01n");   scanf("%d%d%d",&jia.year,&jia.month,&jia.day);   printf("请输入送货人:");   scanf("%s",jia.manName);   fwrite(&jia,sizeof(stock),1,fp1);   fwrite(&jia,sizeof(stock),1,fp);   fclose(fp1);fclose(fp);   printf("是否继续输入?<y/n>n");   getchar();   ch=getchar();   }while(ch=='y'||ch=='Y');   printf("将返回上一级菜单!n 请按回车键确认!n");   getchar();     system("CLS");   menu();  }  void takeout(void)   //出库  {   stock jian;   printf("==============================================================n");   int bn,bn2,i,j;   char ch='y';   FILE *fp,*fp2;   bn=readFile();   bn2=readFile2();     printf("请输入要提出仓库的电器信息:n");   do   {   fp=fopen("库存记录.dat","rb+");   if(fp==NULL)   {    printf("无法打开此文件!n");    exit(0);   }   for(i=0;i<bn;i++)   {    fread(&s[i],sizeof(stock),1,fp);   }   fclose(fp);   fp2=fopen("出库记录.dat","wb+");   if(fp2==NULL)   {    printf("无法打开此文件!n");    exit(0);   }   printf("请输入电器名称:");   scanf("%s",jian.name);   printf("请输入电器品牌:");   scanf("%s",jian.brandName);   printf("请输入电器数量:");   scanf("%d",&jian.num);   printf("请输入电器单价:");   scanf("%d",&jian.unitPrice);   printf("请输入提货时间: <ps: 年月日之间用空格隔开> 例:2016 12 01n");   scanf("%d%d%d",&jian.year,&jian.month,&jian.day);   printf("请输入提货人:");   scanf("%s",jian.manName);   getchar();   fwrite(&jian,sizeof(stock),1,fp2);   fclose(fp2);   for(i=0;i<bn;i++)   {    if((strcmp(jian.name,s[i].name)==0)&&(strcmp(jian.brandName,s[i].brandName)==0))    {    if(jian.num<=s[i].num)    {     s[i].num=s[i].num-jian.num;    }    else    {     printf("库存不足!无法提出!n");     printf("请按回车键返回!");     getchar();     system("CLS");     menu();    }    }   }   fopen("库存记录.dat","wb+");   for(i=0;i<bn;i++)   {    fwrite(&s[i],sizeof(stock),1,fp);   }   fclose(fp);     printf("n出库完成! 是否继续输入?<y/n>n");   getchar();   ch=getchar();   }while(ch=='y'||ch=='Y');   printf("将返回上一级菜单!n 请按回车键确认!n");   getchar();     system("CLS");   menu();    }  void tongji(void)  {   int n;   system("CLS");   printf("==============================================================n");   printf("1. 入库电器总价值n");   printf("2. 出库电器总利润n");   printf("3.统计该月每种电器的出库数目n");   printf("4.统计该月每种品牌的电器的出库数目n");   printf("0. 返回主菜单n");   printf("请选择要进行的操作:(0到4)n");   scanf("%d",&n);   getchar();   while(n!=0&&n!=1&&n!=2&&n!=3&&n!=4)   {     printf("没有此选项!n 请重新输入!n");   scanf("%d",&n);      getchar();    }    switch(n)   {    case 1:tongji3();break;//第三种统计函数    case 2:tongji4();break;//第四种统计函数    case 3:tongji1();break;//第一种统计函数    case 4:tongji2();break;//第二种统计函数    case 0:system("CLS");menu();break;   }  }  void tongji2(void)//第二种统计函数  {     FILE *fp;    int bn1,i,year,month,k=0;    bn1=readFile1();    system("CLS");    printf("==============================================================n");   fp=fopen("出库记录.dat","rb+");   if(fp==NULL)   {   printf("无法打开此文件!n");   exit(0);   }   for(i=0;i<bn1;i++)   {   fread(&s,sizeof(stock),bn1,fp);   }    printf("请输入一个日期(年 月 如 2017 01):n");   scanf("%d%d",&year,&month);        for(i=0;i<bn1;i++)      {        if((s[i].year==year)&&(s[i].month==month))        {          printf("电器名称:%sn品牌名称:%sn出库数目:%dn",s[i].name,s[i].brandName,s[i].num);          k+=1;        }      }        if(k==0)        printf("库存记录中不存在此种电器!n");        fclose(fp);    printf("统计完成,请按回车键返回!n");   getchar();   getchar();   system("CLS");   tongji();    }  void tongji1(void)//第一种统计函数  {    FILE *fp;    int bn1,i,year,month,k=0;    bn1=readFile1();    system("CLS");    printf("==============================================================n");   fp=fopen("出库记录.dat","rb+");   if(fp==NULL)   {   printf("无法打开此文件!n");   exit(0);   }   for(i=0;i<bn1;i++)   {   fread(&s,sizeof(stock),bn1,fp);   }    printf("请输入一个日期(年 月 如 2017 01 ):n");   scanf("%d%d",&year,&month);        for(i=0;i<bn1;i++)      {        if((s[i].year==year)&&(s[i].month==month))        {          printf("电器名称:%sn出库数目:%dn",s[i].name,s[i].num);          k+=1;        }      }        if(k==0)        printf("库存记录中不存在此种电器!n");          fclose(fp);    printf("统计完成,请按回车键返回!n");   getchar();   getchar();   system("CLS");   tongji();      }  void tongji3(void)//第三种统计函数  {   FILE *fp;   int bn1,i;   long long int total=0;   bn1=readFile1();   system("CLS");   printf("==============================================================n");   fp=fopen("入库记录.dat","rb+");   if(fp==NULL)   {   printf("无法打开此文件!n");   exit(0);   }   for(i=0;i<bn1;i++)   {   fread(&s[i],sizeof(stock),1,fp);   }   fclose(fp);   for(i=0;i<bn1;i++)   {   total+=(s[i].num*s[i].unitPrice);   }   printf("商品总价值为%dn",total);   printf("统计完成,请按回车键返回!n");   getchar();   system("CLS");   tongji();  }  void tongji4(void)//第四种统计函数  {     FILE *fp1,*fp2;   int bn,bn2,i;   long long int money=0;   bn=readFile();   bn2=readFile2();   system("CLS");   printf("==============================================================n");   fp1=fopen("库存记录.dat","rb+");     if(fp1==NULL)   {   printf("无法打开此文件!n");   exit(0);   }   for(i=0;i<bn;i++)   {   fread(&s[i],sizeof(stock),1,fp1);   }   fclose(fp1);   fp2=fopen("出库记录.dat","rb+");   if(fp2==NULL)   {   printf("无法打开此文件!n");   exit(0);   }   for(i=0;i<bn2;i++)   {   fread(&t[i],sizeof(stock),1,fp2);   }   fclose(fp2);     for(i=0;i<bn2;i++)   {   money+=((t[i].unitPrice-s[i].unitPrice)*t[i].num);   }   printf("总利润为%dn",money);   printf("统计完成,请按回车键返回!n");   getchar();   system("CLS");   tongji();  }  void end(void)  {   printf("==============================================================n");   printf("                               n");   printf("                               n");   printf("                               n");   printf("      感 谢 使 用 本 系 统 !              n");   printf("                               n");   printf("       再 见 !                     n");   printf("                               n");   printf("                               n");   printf("                               n");   printf("                               n");   printf("==============================================================n");  }  int readFile(void)//库存记录文件中结构体的个数  {   FILE *fb;   int bn=0;   fb=fopen("库存记录.dat","rb+");   if(fb==NULL)   {   return bn;   }   while(!feof(fb))   {   if(fread(&no[bn],sizeof(stock),1,fb))    bn++;   }   fclose(fb);   return bn;  }  int readFile1(void)//入库记录文件中结构体的个数  {   FILE *fb;   int bn1=0;   fb=fopen("入库记录.dat","rb+");   if(fb==NULL)   {   return bn1;   }   while(!feof(fb))   {   if(fread(&no1[bn1],sizeof(stock),1,fb))    bn1++;   }   fclose(fb);   return bn1;  }  int readFile2(void)//出库记录文件中结构体的个数  {   FILE *fb;   int bn2=0;   fb=fopen("出库记录.dat","rb+");   if(fb==NULL)   {   return bn2;   }   while(!feof(fb))   {   if(fread(&no2[bn2],sizeof(stock),1,fb))    bn2++;   }   fclose(fb);   return bn2;  }

运行截图

C语言实现仓库物资管理系统

总结

两年前写的程序了,大体运行了一下,存在一点小bug,还有一些设计不合理的地方以及没有解决非法输入的问题。

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

—-想了解C语言实现仓库物资管理系统分享!全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/483523.html

(0)
上一篇 2020年11月10日
下一篇 2020年11月10日

精彩推荐