1、 超市管理系统源程序
#include
2、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.date,goods[i].save_day) int sum;/*记录商品数目*/ struct date /*日期结构体类型*/ { int year; int month; int date; } struct goods_type /*商品结构体类型*/ { int sum; char name[10]; char k
3、ind[10]; int amount; int goods_up; int goods_down; int in_price; int out_price; int in_num; struct date in_time; struct date pro_time; char factory[10]; int save_day; int profit; }goods[MAX]; /*存放MAX种商品记录的结构体数据*/ save_message(jin sum) /*保存信息*/ { FILE *fp; int i;
4、if((fp=fopen("supermarket.txt","wb"))==NULL)
{
printf("读文件错误!\n");
return;
}
for(i=0;i 5、 录入商品信息 (最多%d种)\n",s);
printf(" -------------------------\n");
do
{
printf("\n 第%d种商品",i+1);
printf("\n 商品号:");
scanf("%d",&goods[i].num);
if(goods[i].num==0) break;
printf("\n 商品名称:");
scanf("%s",goods 6、[i].name);
printf("\n 商品类别:");
scanf("%s",goods[i].kind);
printf("\n 商品总量:");
scanf("%s",&goods[i].amout);
printf("\n 商品上限:");
scanf("%s",&goods[i].goods_up);
printf("\n 商品下限:");
scanf("%s",&goods[i].goods_down);
7、 printf("\n 进货价格:");
scanf("%s",&goods[i].in_price);
printf("\n 销售价格:");
scanf("%s",&goods[i].out_price);
printf("\n 进货数量:");
scanf("%s",&goods[i].in_num);
printf("\n 进货日期(yyyy-mm-dd):");
scanf("%d-%d-%d",&goods[i].in_ti 8、me.year,&goods[i].in_time.month,&goods[i].in_time.date);
printf("\n 商品名称:");
printf("\n 生产日期(yyyy-mm-dd):");
scanf("%d-%d-%d",&goods[i].pro_time.year,&goods[i].pro_time.month,&goods[i].pro_time.date);
printf("\n 生产厂家:");
scanf("%s",goods[i].fac 9、tory);
printf("\n 保质期:");
scanf("%s",goods[i].save_day);
i++;
}while(i 10、fp=fopen("supermarket.txt","rb"))==NULL)
{
printf("\n\n*****暂时还没有任何库存信息,按任意键进入主菜单选择基本信息的录入!******\n");
return;
}
while(feof(fp)!=1)
{
fread(&goods[i],sizeof(struct goods_type),1,fp);
if(goods[i].num==0) break;
else i++;
}
fclose(fp);
return(i);
}
output_message 11、) /*输出模块*/
{
int i=0,j=0,count,page=1;
clrscr();
printf("\n\n --商品信息表-- 第%d页\n\n",page);
PRINT2;
PRINT1;
do
{
if(goods[i].num!=0)
{
j++;
if(j%PAGE!=0)
{
PRINT3;
PRINT1;
}
else
{
12、 PRINT3;
PRINT1;
if(goods[i+1].num!=0)
{
printf("按任意键继续!");
bioskey(0);
clrscr();
printf("\n\n --商品信息表-- 第%d页\n\n",++page);
PRINT2;
13、 PRINT1;
}
}
}
i++;
}while(goods[i].num!=0);
printf("按任意键返回主菜单!");
bioskey(0);
}
insert_message() /*添加商品信息*/
{
int i=sum,j,flag=0;
char choice;
clrscr();
printf("\n\n 添加一种新商品\n");
printf(" --------------------\n" 14、);
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("%s",&goods[i].amout); 15、
printf("\n 商品上限:");
scanf("%s",&goods[i].goods_up);
printf("\n 商品下限:");
scanf("%s",&goods[i].goods_down);
printf("\n 进货价格:");
scanf("%s",&goods[i].in_price);
printf("\n 销售价格:");
scanf("%s",&goods[i].out_price);
16、 printf("\n 进货数量:");
scanf("%s",&goods[i].in_num);
printf("\n 进货日期(yyyy-mm-dd):");
scanf("%d-%d-%d",&goods[i].in_time.year,&goods[i].in_time.month,&goods[i].in_time.date);
printf("\n 商品名称:");
printf("\n 生产日期(yyyy-mm-dd):");
scan 17、f("%d-%d-%d",&goods[i].pro_time.year,&goods[i].pro_time.month,&goods[i].pro_time.date);
printf("\n 生产厂家:");
scanf("%s",goods[i].factory);
printf("\n 保质期:");
scanf("%s",goods[i].save_day);
printf("\n 要继续吗?(Y/N)");
choice=getch();
18、if(choice=='y'||choice=='Y')
{
printf("\n 继续!\n");
i++;
flag=1;
}
else flag=0;
}while(flag==1);
printf("\n 按任意键返回主菜单!");
bioskey(0);
}
del_message() /*删除商品信息*/
{;}
revise_message() / 19、修改模块*/
{
int i=0,choice,revise_num,flag;
do
{
clrscr();
printf("\n 输入要修改的商品号:");
scanf("%d",&revise_num);
for(i=0;i 20、 PRINT2;
PRINT3;
printf("\n 您要修改那一项?\n");
printf("\n 1.名称 \n");
printf("\n 2.种类 \n");
printf("\n 3.销售价格 \n");
printf("\n 4.生产日期 21、 \n");
printf("\n 5.保质期 \n");
printf("\n 请选择(1-5) \n");
scanf("%d",&choice);
switch(choice)
{
case 1;printf("\n 输入修改后的名称:");
sc 22、anf("%s",&goods[i].name);break;
case 2;printf("\n 输入修改后的种类:");
scanf("%s",&goods[i].kind);break;
case 3;printf("\n 输入修改后的销售价格:");
scanf("%s",&goods[i].out_price);break;
23、 case 4;printf("\n 输入修改后的生产日期:");
scanf("%d-%d-%d",&goods[i].pro_time.year,&goods[i].pro_time.month,&goods[i].pro_time.date);break;
case 5;printf("\n 输入修改后的保质期:");
scanf("%s",&goods[i].save_day);b 24、reak;
}
PRINT1;
PRINT2;
PRINT3;
break;
}
if(i==sum)
{
printf("\n 该商品不存在!");
bioskey(0);
}
printf("\n\n 继续修改吗?(Y/N)");
25、 choice=getch();
if(choice=='y'||choice=='Y')
{
flag=1;
printf("\n 继续!\n");
}
else flag=0;
}while(flag==1);
printf("\n 按任意键返回主菜单!");
bioskey(0);
}
renew_message() /*更新模块*/
{
int c 26、hoice;
do
{
clrscr();
printf("\n\n\n ********更新商品信息*******\n\n");
printf(" 1.添加商品信息\n\n");
printf(" 2.删除商品信息\n\n");
printf(" 3.修改商品信息\n\n");
printf(" 0.返回 27、主菜单\n\n");
printf(" 请选择(0-3):\n\n");
scanf("%d",&choice);
switch(choice)
{
case 1 : insert_message();break;
case 2 : del_message();break;
case 3 : revise_message();break;
case 0 : bre 28、ak;
}
}while(choice!=0);
}
inquire_name()
{
int i,choixe,j=0,inquire_in_price;
char inquire_name[10];
clrscr();
printf("\n 输入要查询的商品名称:");
scanf("%s",inquire_name);
for(i=0;i 29、e,inquire_name)==0&&goods[i].num!=0)
{
printf("\n --商品信息--\n");
PRINT1;
PRINT2;
PRINT3;
}
else j++;
if(j==sum)
printf("\n 该商品不存在!");
bioskey(0);
}
inquire_kind 30、) /*按类别查询*/
{;}
inquire_count_time()
{;}
inquire_message() /*查询模块*/
{
int choice;
do
{
clrscr();
printf("\n\n\n *****查询商品信息*******\n\n");
printf(" 1.按商品名称查询 \n\n");
printf(" 2.按商品类别查询 \n 31、\n");
printf(" 3.按进货量和进货价格查询 \n\n");
printf(" 0.返回主菜单 \n\n");
printf(" 请选择(0-3) ");
scanf("%d",&choice);
switch(choice)
{
case 1 : inquire_name(); ;break;
case 2 : inq 32、uire_kind(); ;break;
case 3 : inquire_count_time(); ;break;
case 0 : break;
}
}while(choice!=0);
}
count_profit() /*统计利润*/
{
int i,choice,j=0,count_num,profit;
char inquire_name[10];
clrscr();
printf("\n 输入要统计的商品号:");
33、scanf("%d",&count_num);
for(i=0;i 34、 利润 ");
printf("\n%25d%13d\n",goods[i].num,profit);
}
else j++;
if(j==sum)
printf("\n 该商品不存在!");
bioskey(0);
}
count_in_amount() /*统计进货量*/
{;}
count_full() /*统计库存量*/
{;}
count_message() /*统计模块*/
{
int 35、 choice;
do
{
clrscr();
printf("\n\n\n ********统计商品信息*******\n\n");
printf(" 1.统计某商品的利润\n\n");
printf(" 2.统计某商品的进货量\n\n");
printf(" 3.统计同种名称不同货号商品库存量\n\n");
printf(" 0.返回主菜单\n\n");
printf 36、" 请选择(0-3):");
scanf("%d",&choice);
switch(choice)
{
case 1 : count_profit() ;break;
case 2 : count_in_amount() ;break;
case 3 : count_full() ;break;
case 0 : break;
}
37、 }while(choice!=0);
}
sort_amount() /*库存排行*/
{
struct goods_type *p,*q[MAX];
int i,j,k;
clrscr();
printf(" 库存排行\n");
printf("----------------------------\n");
printf("\n 排名 商品号 商品名称 商品类别 库存量\n");
p=goods;
for(i=0;i 38、 q[i]=p++;
for(i=0;i 39、tf("\n%18d %6d %8d %11s %10d\n",i+1,q[i]->name,q[i]->kind,q[i]->amount);
bioskey(0);
}
sort_profit() /*利润排行*/
{;}
sort_out_amount() /*销售量排行*/
{;}
sort_message() /*排行模块*/
{
int choice;
do
{
clrscr();
printf("\n\n\n 40、 ********商品排行信息********\n\n");
printf(" 1.库存量排行\n\n");
printf(" 2.利润排行\n\n");
printf(" 3.销售量排行\n\n");
printf(" 0.返回主菜单\n\n");
printf(" 请选择(0-3 41、\n\n");
scanf("%d",&choice);
switch(choice)
{
case 1 : sort_amount(); ;break;
case 2 : sort_profit(); ;break;
case 3 : sort_out_amount(); ;break;
case 0 : break;
}
42、 }while(choice!=0);
}
main() /*主程序*/
{
int choice;
sum=read_message();
bioskey(0);
do
{
clrscr();
printf("\n\n\n *********超市管理系统********\n\n");
printf(" 1.录入商品信息 \n\n");
printf(" 2.打印商品信息 \n\n");
print 43、f(" 3.更新商品信息 \n\n");
printf(" 4.查询商品信息 \n\n");
printf(" 5.统计商品信息 \n\n");
printf(" 6.商品排行信息 \n\n");
printf(" 请选择(0-6)");
scanf("%d",&choice);
switch(choice)
{
44、 case 1: input_message(); break;
case 2: output_message(); break;
case 3: renew_message(); break;
case 4: inquire_message(); break;
case 5: count_message(); break;
case 6: sort_message(); break;
case 0: break;
}
}while(choice!=0);
save_message(sum);
printf("\n-以上商品信息已保存!--(文件名:supermarket.txt)\n");
}
amount)
k=j;
if(k!=i)
{
p=q[i];q[i]=q[k];q[k]=p;
}
}
for(i=0;i






