• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

c语言 搞代码 4年前 (2022-01-06) 29次浏览 已收录 0个评论

这篇文章主要为大家详细介绍了C语言实现仓库物资管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

前言

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

系统功能设计

仓库初始化

查询库存

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

物资存入

物资取出

统计物资

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

代码

 #include #include #include //------------------------------------------------------结构体区域 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 01\n"); 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("%s\n%s\n%d\n%d\n%d.%d.%d\n%s\n",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,存货人:%s\n",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是否继续查询?\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,存货人:%s\n",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是否继续查询?\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,存货人:%s\n",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是否继续查询?\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,提货人:%s\n",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是否继续查询?\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,存货人:%s\n",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("=======================================================<span style="color:transparent">来源gaodai#ma#com搞*!代#%^码$网</span>=====\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,存货人:%s\n",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("请输入送货时间:  例:2016 12 01\n"); 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("是否继续输入?\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("请输入提货时间:  例:2016 12 01\n"); 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出库完成! 是否继续输入?\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("电器名称:%s\n品牌名称:%s\n出库数目:%d\n",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("电器名称:%s\n出库数目:%d\n",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("商品总价值为%d\n",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("总利润为%d\n",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; }

运行截图

总结

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

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

以上就是C语言实现仓库物资管理系统的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C语言实现仓库物资管理系统

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址