C语言实现仓库物资管理系统
前言
此系统为博主大一上学期C语言课程设计的大作业,由于当时初步接触C语言,现在来看程序写的太烂了,简直不忍直视……但是还是想通过博客的形式记录下来,也可以给刚接触学习C语言的人一些参考吧!
系统功能设计
仓库初始化
查询库存
*按电器名查询
*按品牌名查询
*按送货人查询
*按提货人查询
*按电器名称由大到小顺序输出所有库存
*按库存数量由高到低输出所有库存
物资存入
物资取出
统计物资
*入库电器总价值
*出库电器总利润
*统计某月每种电器的出库数目
*统计某月每种品牌的电器的出库数目
代码
#include#include #include //------------------------------------------------------结构体区域 typedefstruct { charname[20];//电器名称 charbrandName[20];//品牌名称 intnum;//库存数量 intunitPrice;//单价 intyear; intmonth; intday; charmanName[20]; }stock;//库存 stocks[10000],t[10000],x[10000],y[10000],in[10000],out[10000],no[10000],no1[10000],no2[10000];//全局变量 //-------------------------------------------------------函数声明区域 voidmenu(void);//主菜单函数 voidwrite(void);//创建仓库函数 voidfind(void);//查询库存函数 voidfindPart(void);//部分查询函数 voidfindOne(void);//按电器名查询 voidfindTwo(void);//按品牌名查询 voidfindThree(void);//按提货人查询 voidfindFour(void);//按送货人查询 voidfindFive(void);//按电器名称大小顺序输出所有库存 voidfindSix(void);//按库存数量由高到低输出所有库存 voiddeposit(void);//存入仓库函数 voidtakeout(void);//取出仓库函数 voidtongji(void);//统计函数 voidtongji1(void);//第一种统计函数 voidtongji2(void);//第二种统计函数 voidtongji3(void);//第三种统计函数 voidtongji4(void);//第四种统计函数 intreadFile(void);//读取库存记录文件中所有结构体的数目 intreadFile1(void);//读取入库记录文件中所有结构体的数目 intreadFile2(void);//读取出库记录文件中所有结构体的数目 voidend(void);//结束退出函数 //-------------------------------------------------------主函数 intmain() { menu(); return0; } voidmenu(void) { intn,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) { case1:system("CLS");write();break; case2:system("CLS");find();break; case3:system("CLS");deposit();break; case4:system("CLS");takeout();break; case5:system("CLS");tongji();break; case0:system("CLS");end();exit(0); default:printf("没有此选项!\n请重新输入!\n"); } } } voidwrite(void)//right { FILE*fp; inti,n; fp=fopen("库存记录.dat","wb"); rewind(fp); printf("============================================================\n"); printf("请输入仓库中电器信息的组数!\nps:相同电器但是不同品牌电器算多种!\n"); scanf("%d",&n); for(i=0;i 例:20161201\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"); ch=getchar(); }while(ch=='y'||ch=='Y'); printf("将返回上一级菜单!\n请按回车键确认!\n"); getchar();getchar(); system("CLS"); findPart(); } voidfindTwo(void) { charbrandName[10],ch='y'; inti,k,n,bn; bn=readFile(); do { system("CLS"); printf("============================================================\n"); printf("请输入要查询的品牌名称:\n"); getchar(); gets(brandName); k=-1; for(i=0;i \n"); ch=getchar(); }while(ch=='y'||ch=='Y'); printf("将返回上一级菜单!\n请按回车键确认!\n"); getchar();getchar(); system("CLS"); findPart(); } voidfindThree(void)//按送货人查询入库 { charmanName[10],ch='y'; inti,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 \n"); ch=getchar(); }while(ch=='y'||ch=='Y'); printf("将返回上一级菜单!\n请按回车键确认!\n"); getchar();getchar(); system("CLS"); findPart(); } voidfindFour(void)//按提货人查询出库 { charmanName[10],ch='y'; inti,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 \n"); ch=getchar(); }while(ch=='y'||ch=='Y'); printf("将返回上一级菜单!\n请按回车键确认!\n"); getchar();getchar(); system("CLS"); findPart(); } voidfindFive(void)//电器名称大小顺序输出所有库存 { intbn; bn=readFile(); printf("============================================================\n"); FILE*fp; fp=fopen("库存记录.dat","rb+"); if(fp==NULL) { printf("该仓库中无库存!\n"); exit(0); } fread(&s,sizeof(stock),bn,fp); inti,j; for(i=0;i 例:20161201\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(); } voidtakeout(void)//出库 { stockjian; printf("==============================================================\n"); intbn,bn2,i,j; charch='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 例:20161201\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 \n"); getchar(); ch=getchar(); }while(ch=='y'||ch=='Y'); printf("将返回上一级菜单!\n请按回车键确认!\n"); getchar(); system("CLS"); menu(); } voidtongji(void) { intn; 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) { case1:tongji3();break;//第三种统计函数 case2:tongji4();break;//第四种统计函数 case3:tongji1();break;//第一种统计函数 case4:tongji2();break;//第二种统计函数 case0:system("CLS");menu();break; } } voidtongji2(void)//第二种统计函数 { FILE*fp; intbn1,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 运行截图
总结
两年前写的程序了,大体运行了一下,存在一点小bug,还有一些设计不合理的地方以及没有解决非法输入的问题。
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。