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

这篇文章将为大家详细讲解有关C语言如何实现仓库物资管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

系统功能设计

仓库初始化

查询库存

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

物资存入

物资取出

统计物资

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

代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//------------------------------------------------------结构体区域
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<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("请输入存货时间:<年月日之间用空格隔开>例: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;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();
}
voidfindOne(void)
{
charname[10],ch='y';
inti,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是否继续查询?<y/n>\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<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是否继续查询?<y/n>\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<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是否继续查询?<y/n>\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<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是否继续查询?<y/n>\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<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();
}
voidfindSix(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<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();
}
voidfindPart(void)
{
intn;
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)
{
case1:system("CLS");findOne();break;
case2:system("CLS");findTwo();break;
case3:system("CLS");findThree();break;
case4:system("CLS");findFour();break;
case5:system("CLS");findFive();break;
case6:system("CLS");findSix();break;
case0:system("CLS");menu();break;
default:printf("没有此选项!\n请重新输入!\n");
}
}
voidfind(void)
{
inti,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);
}
voiddeposit(void)//入库
{
printf("============================================================\n");
intbn,bn1;
stockjia;
FILE*fp1,*fp;
inti=0,j,n=0;
charch='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:年月日之间用空格隔开>例: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("是否继续输入?<y/n>\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<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:年月日之间用空格隔开>例: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<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();

}
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<bn1;i++)
{
fread(&s,sizeof(stock),bn1,fp);
}
printf("请输入一个日期(年月如201701):\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();

}
voidtongji1(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<bn1;i++)
{
fread(&s,sizeof(stock),bn1,fp);
}
printf("请输入一个日期(年月如201701):\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();


}
voidtongji3(void)//第三种统计函数
{
FILE*fp;
intbn1,i;
longlonginttotal=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();
}
voidtongji4(void)//第四种统计函数
{

FILE*fp1,*fp2;
intbn,bn2,i;
longlongintmoney=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();
}
voidend(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");
}
intreadFile(void)//库存记录文件中结构体的个数
{
FILE*fb;
intbn=0;
fb=fopen("库存记录.dat","rb+");
if(fb==NULL)
{
returnbn;
}
while(!feof(fb))
{
if(fread(&no[bn],sizeof(stock),1,fb))
bn++;
}
fclose(fb);
returnbn;
}
intreadFile1(void)//入库记录文件中结构体的个数
{
FILE*fb;
intbn1=0;
fb=fopen("入库记录.dat","rb+");
if(fb==NULL)
{
returnbn1;
}
while(!feof(fb))
{
if(fread(&no1[bn1],sizeof(stock),1,fb))
bn1++;
}
fclose(fb);
returnbn1;
}
intreadFile2(void)//出库记录文件中结构体的个数
{
FILE*fb;
intbn2=0;
fb=fopen("出库记录.dat","rb+");
if(fb==NULL)
{
returnbn2;
}
while(!feof(fb))
{
if(fread(&no2[bn2],sizeof(stock),1,fb))
bn2++;
}
fclose(fb);
returnbn2;
}

运行截图

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

关于“C语言如何实现仓库物资管理系统”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

发布于 2021-05-30 14:07:28
收藏
分享
海报
0 条评论
168
上一篇:c语言如何实现两个单链表的交叉合并方式 下一篇:C语言如何实现文本文件/二进制文件格式互换
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码