超市商品管理系统C语言源代码.docx
《超市商品管理系统C语言源代码.docx》由会员分享,可在线阅读,更多相关《超市商品管理系统C语言源代码.docx(19页珍藏版)》请在冰豆网上搜索。
超市商品管理系统C语言源代码
#include
#include
#include#include
#include
#include
#defineMAX20
#definePRINT1printf("---------------------------------------------------------\n")
#definePRINT2printf("商品号--商品名称--商品种类--销售价格--生产日期(年-月-日)--保质期\n")
#definePRINT3printf("M%8s%8s崓----M\n",goods[i].num,goods[i].name,goods[i].kind,goods[i].out_price,goods[i].pro_time.year,goods[i].pro_time.month,goods[i].pro_time.day,goods[i].save_day)
intsum;
structdate
{
intyear;
intmonth;
intday;
};
structgoods_type/*定义结构体*/
{
intnum;
charname[10];
charkind[10];
intamount;
intin_price;
intout_price;
structdatepro_time;
intsave_day;
intprofit;
}goods[MAX];
Save_Message(intsum);/*函数声明*/
voidInquire_message(void);
voidInquire_goodskind(void);
voidInquire_goodsname(void);
intRead_Message(void);
voidRenew_Messahe(void);
voidRevise_Message(void);
voidDelete_Message(void);
voidInsert_Message();
voidShow_Message(void);
intInput_Message(void);
voidCount_Message();
longCount_Profit();
longCount_Amount();
voidSort_amount(void);
voidSort_Message(void);
voidSort_Message(void)
{
intchoice;
do
{
clrscr();
printf("\n\n\n*******商品信息排行********\n\n");
printf("1:
按库存量排行\n\n");
printf("0:
返回主菜单\n\n");
printf("请选择(0-1):
");
scanf("%d",&choice);
switch(choice)
{
case1:
Sort_amount();break;
case0:
break;
}
}while(choice!
=0);
}
voidSort_amount(void)/*库存量排序*/
{
structgoods_type*p,*q[MAX];
inti,j,k;
clrscr();
printf("库存排行");
PRINT1;
printf("\n\n排名商品号商品名称商品类别库存量\n\n");
p=goods;
for(i=0;iq[i]=p;
for(i=0;i{
k=i;
for(j=i1;jif(q[k]->amountamount)
k=j;
if(k!
=i)
{
p=q[i];
q[i]=q[k];
q[k]=p;
}
}
for(i=0;i{
printf("%d",i1);
printf("%d",q[i]->num);
printf("%s",q[i]->name);
printf("%s",q[i]->kind);
printf("%d\n",q[i]->amount);
}
bioskey(0);
}
longCount_Amount()/*统计库存量*/
{
inti,j=0,choice,count_num,Amount;
charinquire_name[10];
clrscr();
printf("\n请输入想要统计的商品号:
");
scanf("%d",&count_num);
for(i=0;iif(goods[i].num==count_num)
{
Amount=goods[i].amount;
printf("-------------------------");
printf("商品号库存量");
printf("\n崓",goods[i].num,Amount);
}
else
j;
if(j==sum)
printf("该商品信息不存在!
!
!
");
bioskey(0);
}
longCount_Profit()/*统计利润模块*/
{
inti,choice,j=0,count_num,profit;
clrscr();
printf("\n请输入想要统计的商品号:
");
scanf("%d",&count_num);
for(i=0;iif(goods[i].num==count_num)
{
profit=goods[i].out_price-goods[i].in_price;
printf("\n商品利润");
printf("\n-------------------------------");
printf("\n商品号利润");
printf("\n崓\n",&goods[i].num,&profit);
}
else
j;
if(j==sum)
printf("\n该商品不存在!
!
!
");
printf("\n按任意键返回主菜单!
!
");
bioskey(0);
}
voidCount_Message(void)/*统计模块*/
{
intchoice;
do{
clrscr();
printf("**************统计商品信息*************\n\n\n");
printf("*******1:
统计库存量************\n\n\n");
printf("*******2:
统计利润************\n\n\n");
printf("*******0:
返回主菜单************\n\n\n");
printf("*******请选择(0-2):
************\n\n\n");
scanf("%d",&choice);
switch(choice)
{
case1:
Count_Amount();break;
case2:
Count_Profit();break;
case0:
break;
}
}while(choice!
=0);
}
intInput_Message(void)/*输入模块*/
{
inti=0,s=MAX;
charbd;
clrscr();
printf("开始输入商品信息.\n");
printf("\n\n商品信息:
(最多%d)\n",s);
printf("===============================\n");
do
{
printf("\n第%d商品",i1);
printf("\n商品号:
");
scanf("%d",&goods[i].num);
if(goods[i].num==0)break;
printf("\n商品名称:
");
scanf("%s",goods[i].name);
printf("\n商品种类:
");
scanf("%s",goods[i].kind);
printf("\n商品库存量:
");
scanf("%d",&goods[i].amount);
printf("\n进货价格:
");
scanf("%d",&goods[i].in_price);
printf("\n销售价格:
");
scanf("%d",&goods[i].out_price);
printf("\n生产日期(yyyy-mm-dd):
");
scanf("%d-%d-%d",&goods[i].pro_time.year,&goods[i].pro_time.month,&goods[i].pro_time.day);
printf("\n保质期:
");
scanf("%d",&goods[i].save_day);
printf("继续输入信息,yorn?
?
");
fflush(stdin);
scanf("%c",&bd);
if(bd=='y')
i;
else
break;
}while(iprintf("\n--%d所有商品录入完毕!
--\n\n\n",i1);
getch();
printf("按任意键返回主菜单.");
sum=i;
printf("输入回车返回主菜单!
!
!
");
bioskey(0);
}
voidShow_Message(void)/*显示输出模块*/
{
inti=0,j=0,count,page=7;
clrscr();
printf("\n\n--商品信息--在第%d页\n\n",page);
PRINT2;
PRINT1;
do
{
if(goods[i].num!
=0)
{
j;
if(j%page!
=0)
{
PRINT3;
PRINT1;
}
else
{
PRINT3;
PRINT1;
if(goods[i1].num!
=0)
{
printf("按任意键继续!
");
bioskey(0);
clrscr();
printf("\n\n--------商品信息--------在第%d页\n\n",page);
PRINT2;
PRINT1;
}
}
}
i;
}while(goods[i].num!
=0);
printf("按任意键返回主菜单!
!
!
!
!
");
bioskey(0);
}
voidInsert_Message(void)/*添加商品信息模块*/
{
inti=sum,j,flag=0;
charchoice;
clrscr();
printf("\n\n添加一种新商品\n\n");
printf("\n-------------------------------------------------\n");
do
{
goods[i].num=sum;
printf("\n新商品号:
%d",goods[i].num);
printf("\n新商品名:
");
scanf("%s",goods[i].name);
printf("\n新商品种类:
");
scanf("%s",goods[i].kind);
printf("\n新商品数量:
");
scanf("%d",&goods[i].amount);
printf("\n进价:
");
scanf("%d",&goods[i].in_price);
printf("\n售价:
");
scanf("%d",&goods[i].out_price);
printf("\n生产日期(yyyy-mm-dd):
");
scanf("%d-%d-%d",&goods[i].pro_time.year,&goods[i].pro_time.month,&goods[i].pro_time.day);
printf("\n保质期:
");
scanf("%d",&goods[i].save_day);
i;
printf("\n\n想继续添加商品吗?
(Y/N)");
fflush(stdin);
choice=getch();
if(choice=='y'||choice=='Y')
{
printf("继续");
flag=1;
}
else
flag=0;
}while(flag==1);
printf("\n\n\n按任意键返回主菜单.........");
bioskey(0);
}
voidDelete_Message(void)/*删除商品信息模块*/
{
inti,j,numberkey,flag=0;
charchoice;
printf("开始删除......\n\n");
do
{
clrscr();
printf("请输入你要删除的商品号:
\n");
scanf("%d",&numberkey);
for(i=0;i{
if(goods[i].num==numberkey)
{
for(j=i;jgoods[j]=goods[j1];
sum--;
flag=1;
printf("删除成功!
!
\n\n\n");
break;
}
}
if(flag==0)
{
printf("不存在该商品信息!
!
!
");
bioskey(0);
}
printf("\n\n是否继续输入(y/n)?
\n");
getchar();
scanf("%c",&choice);
}while(choice=='y'||choice=='Y');
printf("\n按任意键返回");
bioskey(0);
}
voidRevise_Message(void)/*修改商品信息模块*/
{
inti,j,flag,choice,revise_num;
charch;
do
{
clrscr();
printf("\n\n开始修改...");
printf("\n\n请输入你想输入的商品号:
\n");
scanf("%d",&revise_num);
for(i=0;i{
if(goods[i].num==revise_num)
{
printf("确定修改此商品信息吗?
(y/n)");
PRINT1;
PRINT2;
PRINT3;
getchar();
ch=getchar();
if(ch='y')
{
printf("\n\n\n修改商品信息的哪一项?
");
printf("\n\n1:
商品名称");
printf("\n\n2:
商品类型");
printf("\n\n3:
销售价格");
printf("\n\n4:
生产日期");
printf("\n\n5:
保质期");
printf("\n\n请选择(0-5)\n");
scanf("\n%d",&choice);
switch(choice)
{
case1:
printf("请输入修改后的商品名\n");
scanf("%s",&goods[i].name);break;
case2:
printf("请输入修改后的商品类型\n");
scanf("%s",&goods[i].kind);break;
case3:
printf("请输入修改后的商品销售价格\n");
scanf("%d",&goods[i].out_price);break;
case4:
printf("请输入修改后的商品生产日期\n");
scanf("%d-%d-%d",&goods[i].pro_time.year,&goods[i].pro_time.month,&goods[i].pro_time.day);break;
case5:
printf("请输入修改后的商品保质期\n");
scanf("%d",&goods[i].save_day);break;
case0:
break;
}
printf("修改商品信息:
\n");
PRINT2;
PRINT3;
}
else
break;
}
else
j;
if(j==sum)
printf("不存在该商品信息..");
}
printf("\n\n继续修改商品信息吗(y/n)?
");
getchar();
ch=getchar();
if(ch=='y')
{
printf("继续.\n");
flag=1;
}
else
flag=0;
}while(flag==1);
printf("修改完成!
!
\n\n");
getch();
}
voidRenew_Message(void)/*更新商品信息模块*/
{
intchoice;
do
{
clrscr();
printf("\n\n*********更新商品信息*********");
printf("\n\n1:
添加商品信息.\n\n");
printf("\n\n2:
删除商品信息.\n\n");
printf("\n\n3:
修改商品信息.\n\n");
printf("\n\n0:
返回上一级.\n\n");
printf("\n\n请选择(0-3):
");
scanf("%d",&choice);
switch(choice)
{
case1:
Insert_Message();break;
case2:
Delete_Message();break;
case3:
Revise_Message();break;
case0:
break;
}
}while(choice!
=0);
}
intRead_Message(void)/*读取信息模块*/
{
FILE*fp;
inti=0;
if((fp=fopen("999.txt","rb"))==NULL)
{
printf("\n\t现在还没有保存全部信息,按回车键回到主菜单输入商品信息!
!
");
printf("\n\t按任意键返回!
!
!
!
\n");
getch();
return;
}
while(feof(fp)!
=1)
{
fread(&goods[i],sizeof(structgoods_type),1,fp);
if(goods[i].num==0)
break;
else
i;
}
fclose(fp);
return(i);
}
voidInquire_goodsname(void)/*按商品名称查询*/
{
inti,j,choice;
charnamekey[10];
j=0;
printf("开始查询...");
printf("请输入你要查询的商品号:
\n");
scanf("%s",namekey);
for(i=0;iif(strcmp(goods[i].name,namekey)==0&&goods[i].num!
=0)
{
printf("---商品信息----");
PRINT1;
PRINT2;
PRINT3;
}
else
j;
if(j==sum)
printf("该商品不存在!
");
printf("按任意键返回主菜单.");
getch();
}
voidInquire_goodskind(void)/*按商品类型查询*/
{
inti,j,choice;
charkindkey[10];
j=0;
printf("开始查询...");
printf("请输入你要查询的商品种类:
\n");
scanf("%s",kindkey);
for(i=0;iif(strcmp(goods[i].kind,kindkey)==0&&goods[i].num!
=0)
{
printf("---商品信息----");
PRINT1;
PRINT2;
PRINT3;
}
else
j;
if(j==sum)
printf("该商品不存在!
");
printf("按任意键返回主菜单.");
getch();
}
voidInquire_Message(void)/*查询模块*/
{
intchoice;
do
{
printf("\n*****查询商品信息*****\n");
printf("\n*****1:
按商品名称.*****\n");
printf("\n*****2:
按商品种类.*****\n");
printf("\n*****0:
返回上一级.*****\n");
printf("\n请选择(0-2):
*****\n");
scanf("%d",&choice);
switch(choice)
{
case1:
Inquire_goodsname();break;
case2:
Inquire_goodskind();break;
case0:
break;
}
}while(choice!
=0);
}
Save_Message(intsum)/*保存模块*/
{
FILE*fp;
inti;
if((fp=fopen("999.txt","wb"))==NULL)
{
printf("\n\n不能打开文件!
\n\n");
exit();
}
for(i=0;i<=sum;i)
if(fwrite(&goods[i],sizeof(structgoods_type),1,fp)!
=1)
printf("写文件出错!
");
fclose(fp);