资源描述
/******** 超市管理系统程序*******/
/*董能相*/
#include<stdio.h>
#include<string.h>
#define MAX 20
#define N 3
#define PAGE 2
#define PRINT1 printf("-----------------------\n");
#define PRINT2 printf("商品号--商品名称--商品种类--销售价格--生产日期(年-月-日)--保质期\n");
#define PRINT3 printf("%4d%8s%8s%8d%15d%15d%15-2%d-2%d%10d\n",goods[i].num,goods[i].name,goods[i].kind,goods[i].in_price,goods[i].out_price,goods[i].pro_time,goods[i].save_day)
int sum;/*用来记录商品数目*/
/*日期结构体类型*/
struct date
{ int year;
int month;
int date;
};
/*商品结构体类型*/
struct goods_type
{ int num; /* 商品数量*/
char name[10]; /*商品名称*/
char kind[10]; /*商品种类*/
int amount; /*商品总量*/
int left_amount;/*商品剩余数量*/
int total_price; /*商品总价格*/
int goods_up; /*商品上限*/
int goods_down; /* 商品下限 */
int in_price; /*进货价格*/
int out_price; /*销售价格*/
int in_num; /*进货数量*/
int out_num; /*售出数量*/
struct date in_time;/* 进货日期*/
struct date pro_time; /*生产日期*/
char factory[10]; /*生产厂家*/
int save_day; /*保质期 */
int profit; /* 获得利润*/
}goods[MAX];/*存放[MAX]种商品记录的结构体数组*/
/*保存信息*/
save_message(int sum)
{ FILE*fp;
int i;
if((fp=fopen("supermarket.txt","wb"))==NULL)
{ printf("读文件错误!\n");
return;
}
for(i=0;i<sum;i++)
if(fwrite(&goods[i],sizeof(struct goods_type),1,fp)!=1)
printf("写文件错误!\n");
fclose(fp);
}
/*输入模块*/
input_message()
{ int i=0,s=MAX;
clrscr();
printf("\n\n录入商品信息(最多%d种)\n",s);
printf("--------------------------------\n");
do
{ printf("\n good%d",i+1);
printf("\n num:");
scanf("%d",&goods[i].num);
printf("\n name:");
scanf("%s",&goods[i].name);
printf("\n kind:");
scanf("%s",&goods[i].kind);
printf("\n amount:");
scanf("%d",&goods[i].amount);
printf("\n goods_up:");
scanf("%d",&goods[i].goods_up);
printf("\n goods_down:");
scanf("%d",&goods[i].goods_down);
printf("\n in_price:");
scanf("%d",&goods[i].in_price);
printf("\n out_price:");
scanf("%d",&goods[i].out_price);
printf("\n in_num:");
scanf("%d",&goods[i].in_num);
printf("\n in_date(yyyy-mm-dd):");
scanf("%d-%d-%d",&goods[i].in_time.year,&goods[i].in_time.month,&goods[i].in_time.date);
printf("\n pro_date(yyyy-mm-dd):");
scanf("%d-%d-%d",&goods[i].pro_time.year,&goods[i].pro_time.month,&goods[i].pro_time.date);
printf("\n factory:");
scanf("%s",&goods[i].factory);
printf("\n save_day:");
scanf("%d",&goods[i].save_day);
i++;
}while(i<MAX);
printf("\n--%d种商品信息输入完毕!--\n",i);
sum=i;
printf("\n press any key return menu!");
bioskey(0);
}
/*读取信息*/
int read_message()
{ FILE *fp;
int i=0;
if((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);
}
/*输出模块*/
void output_message()
{ 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
{ PRINT3;
PRINT1;
if(goods[i+1].num!=0);
{ printf("按任意键继续!");
bioskey(0);
clrscr();
printf("\n\n--商品信息表--第%d页\n\n",++page);
PRINT2;
PRINT1;
}
}
}
i++;
}while(goods[i].num!=0);
printf("press any key return menu!");
bioskey(0);
}
/*添加商品信息*/
insert_message()
{ int i=sum,j,flag=0;
char choice;
clrscr();
printf("\n\n 添加一种新商品\n");
printf("--------------\n");
do
{ goods[i].num=++sum;
printf("new num:%d",goods[i].num);
printf("\n name:");
scanf("%s",goods[i].name);
printf("\n kind:");
scanf("%s",goods[i].kind);
printf("\n amount:");
scanf("%d",goods[i].amount);
printf("\n goods_up:");
scanf("%d",goods[i].goods_up);
printf("\n goods_down:");
scanf("%d",goods[i].goods_down);
printf("\n in_price:");
scanf("%d",goods[i].in_price);
printf("\n out_price:");
scanf("%d",goods[i].out_price);
printf("\n in_num:");
scanf("%d",goods[i].num);
printf("\n in_time:");
scanf("%d%d%d",goods[i].in_time.year,goods[i].in_time.month,goods[i].in_time.date);
printf("\n pro_time:");
scanf("%d%d%d",goods[i].pro_time.year,
goods[i].pro_time.month,
goods[i].pro_time.date);
printf("\n factory:");
scanf("%s",goods[i].factory);
printf("\n save_day:");
scanf("%d",goods[i].save_day);
printf("要继续吗?(Y/N)");
choice=getch();
if(choice=='Y'||choice=='y')
{ printf("\n 继续!\n");
i++;
flag=1;
}
else flag=0;
}while(flag==1);
printf("\n press any key return menu!");
bioskey(0);
}
/*删除商品信息*/
del_message()
{ int i=sum,j,flag=0;
char choice;
clrscr();
printf("\n\n\n");
printf("------------------\n");
do
{ goods[i].num=--sum;
printf("\n num:");
printf("\n name:");
scanf("%s",goods[i].name);
printf("\n kind:");
scanf("%s",goods[i].kind);
printf("\n left_amount:");
scanf("%d",goods[i].left_amount);
printf("\n total_price:");
scanf("%d",goods[i].total_price);
printf("\n 要继续吗? (Y/N)");
choice=getch();
if(choice=='Y'||choice=='y');
{ printf("\n 继续!\n");
i++;
flag=1;}
}while(flag==1);
printf("\n press any key enter the menu!");
bioskey(0);
}
/*修改模块*/
revise_message()
{ int i=0,choice,revise_num,flag;
do
{ clrscr();
printf("\n input the number of the good :");
scanf("%d",&revise_num);
for(i=0;i<sum;i++)
if(goods[i].num==revise_num)
{ printf("\n----\n");
PRINT1;
PRINT2;
PRINT3;
printf("\n 您要修改哪一项?\n");
printf("\n 1.name\n");
printf("\n 2.kind\n");
printf("\n 3.out_price\n");
printf("\n 4.pro_time\n");
printf("\n 5.save_day\n");
printf("\n please make your choice(1-5):");
scanf("%d",&choice);
switch(choice)
{ case 1:printf("\n name:");
scanf("%s",&goods[i].name);break;
case 2:printf("\n kind:");
scanf("%s",&goods[i].kind);break;
case 3:printf("\n out_price:");
scanf("%d",&goods[i].out_price);break;
case 4:printf("\n pro_time:");
scanf("%d%d%d",&goods[i].pro_time.year,&goods[i].pro_time.month,
&goods[i].pro_time.date);break;
case 5:printf("\n save_day:");
scanf("%d",&goods[i].save_day);break;
}
PRINT1;
PRINT2;
PRINT3;
break;
}
if(i==sum)
{ printf("\n该商品不存在!");
bioskey(0);
}
printf("\n\n 要继续吗?(Y/N)");
choice=getch();
if(choice=='Y'||choice=='y')
{ flag=1;
printf("\n 继续!\n");
}
else flag=0;
}while(flag==1);
printf("\n press any key return menu!");
bioskey(0);
}
/*更新模块*/
renew_message()
{ int choice;
do
{ clrscr();
printf("\n\n\n*******更新商品信息*********\n\n");
printf(" 1.insert_message\n\n");
printf(" 2.del_message\n\n");
printf(" 3.revise_message\n\n");
printf(" 0.return menu\n\n");
printf(" please make your choice(0-3):");
scanf("%d",&choice);
switch(choice)
{ case 1:insert_message();break;
case 2:del_message();break;
case 3:revise_message();break;
case 0:break;
}
}while(choice!=0);
}
/*按名称查询*/
inquire_name()
{ int i,choice,j=0,inquire_in_price;
char inquire_name[10];
clrscr();
printf("\n input the name of the good:");
scanf("%s",inquire_name);
for(i=0;i<sum;i++)
if(strcmp(goods[i].name,inquire_name)==0&&goods[i].num!=0)
{ printf("\n --商品信息--\n");
PRINT1;
PRINT2;
PRINT3;
}
else j++;
if(j==sum) printf("\n 该商品不存在!");
bioskey(0);
}
/*按类别查询*/
inquire_kind()
{ int i=0,choice,j=0,inquire_in_price;
char inquire_kind[10];
clrscr();
printf("\n input the kind of the good:");
scanf("%s",inquire_kind);
if(strcmp(goods[i].kind,inquire_kind)==0&&goods[i].num==!0);
{ printf("\n --商品信息--\n");
PRINT1;
PRINT2;
PRINT3;
}
if(j==sum) printf("\n 该商品不存在!");
bioskey(0);
}
/*按进货时间查询*/
inquire_in_time()
{ int i,choice,j=0,inquire_in_price;
struct date in_time;
clrscr();
printf("\n input the in time of the good:");
scanf("%d",inquire_in_time);
for(i=0;i<sum;i++)
if(goods[i].num!=0)
{ printf("\n--商品信息--\n");
PRINT1;
PRINT2;
PRINT3;
}
else j++;
if(j==sum) printf("该商品不存在!\n");
bioskey(0);
}
/*按进货量查询*/
inquire_in_num()
{ int i,choice,j=0,inquire_in_price;
int inquire_in_num;
clrscr();
printf("\n input the in number of the good:");
scanf("%d",inquire_in_time);
for(i=0;i<sum;i++)
if(goods[i].num!=0)
{ printf("\n--商品信息--\n");
PRINT1;
PRINT2;
PRINT3;
}
else j++;
if(j==sum) printf("该商品不存在!\n");
bioskey(0);
}
/*查询模块*/
inquire_message()
{ int choice;
do
{ clrscr();
printf("\n\n\n*****查询商品信息*******\n\n");
printf(" 1.inquire_name\n\n");
printf(" 2.inquire_kind\n\n");
printf(" 3.inquire_in_time\n\n");
printf(" 4.inquire_in_num\n\n");
printf(" 0.return menu\n\n");
printf("please make your choice (0-4):");
scanf("%d",&choice);
switch(choice)
{ case 1:inquire_name();break;
case 2:inquire_kind();break;
case 3:inquire_in_time();break;
case 4:inquire_in_num();break;
case 0:break;
}
} while(choice!=0);
}
/*统计利润*/
count_profit()
{ int i,choice,j=0,count_num,profit;
char inquire_name[10];
clrscr();
printf("\n input the number of the good :");
scanf("%d",&count_num);
for(i=0;i<sum;i++)
if(goods[i].num==count_num)
{ profit=goods[i].out_price-goods[i].in_price;
printf("\n profit:");
printf("\n-----------------------------------\n");
printf("\n num profit");
printf("\n%25d%13d\n",goods[i].num,profit);
}
else j++;
if(j==sum) printf("\n 该商品不存在!");
bioskey(0);
}
/*统计进货量*/
count_in_num()
{ int i,choice,j=0,count_num,in_num;
char inquire_name[10];
clrscr();
printf("\n input the amount of the good:");
scanf("%d",&count_in_num);
for(i=0;i<sum;i++)
if(goods[i].in_num!=0)
printf("\n %d\n",in_num);
else j++;
if(j==sum) printf("\n 该商品不存在!");
bioskey(0);
}
/*统计库存量*/
count_full()
{ int i,choic,j=0,count_num,full;
int in_num;
int out_num;
char inquire_name[10];
clrscr();
printf("\n input the number of the good:");
scanf("%d",&count_full);
for(i=0;i<sum;i++)
if(goods[i].num!=0)
{ full=goods[i].in_num-goods[i].out_num;
printf("\n full:");
printf("\n-----------------------------------\n");
printf("\n num full");
printf("\n%25d%13d\n",goods[i].num,full);
}
else j++;
if(j==sum) printf("\n 该商品不存在!");
bioskey(0);
}
/*统计模块*/
count_message()
{ int choice;
do
{ clrscr();
printf("\n\n\n*****统计商品信息******\n\n");
printf(" 1.count_profit\n\n");
printf(" 2.count_in_num\n\n");
printf(" 3.count_full\n\n");
printf(" 0.return menu\n\n");
printf("please make your choice (0-3):");
scanf("%d",&choice);
switch(choice)
{ case 1:count_profit();break;
case 2:count_in_num();break;
case 3:count_full();break;
case 0:break;
}
} while(choice!=0);
}
/*库存排行*/
sort_amount()
{ struct goods_type *p,*q[MAX];
int i,j,k;
clrscr();
printf("\n 库存排行 \n");
printf("----------------------------------\n");
printf("\n 排名 商品号 商品名称 商品类别 库存量\n");
p=goods;
for(i=0;i<sum;i++)
q[i]=p++;
for(i=0;i<sum;i++)
{ k=i;
for(j=i+1;j<sum;j++)
if(q[k]->amount<q[i]->amount) k=j;
if(k!=i)
{
q[i]=q[i];q[i]=q[k];q[k]=p;}
}
for(i=0;i<sum;i++)
printf("\n%18d %6d %8s %11d\n",i+1,q[i]->name,q[i]->kind,q[i]->amount);
bioskey(0);
}
/*利润排行*/
sort_profit()
{ struct goods_type *p,*q[MAX];
int i,j,k;
clrscr();
printf("\n 利润排行 \n");
printf("----------------------------------\n");
printf("\n 排名 商品号 商品名称 商品类别 利润 \n");
p=goods;
for(i=0;i<sum;i++)
q[i]=p++;
for(i=0;i<sum;i++)
{ k=i;
for(j=i+1;j<sum;j++)
if(q[k]->profit<q[i]->profit) k=j;
if(k!=i)
{
q[i]=q[i];q[i]=q[k];q[k]=p;}
}
for(i=0;i<sum;i++)
printf("\n%18d %6d %8s %11d\n",i+1,q[i]->name,q[i]->kind,q[i]->profit);
bioskey(0);
}
/*销售量排行*/
sort_out_num()
{ struct goods_type *p,*q[MAX];
int i,j,k;
clrscr();
printf("\n 销售量排行 \n");
printf("----------------------------------\n");
printf("\n 排名 商品号 商品名称 商品类别 销售量 \n");
p=goods;
for(i=0;i<sum;i++)
q[i]=p++;
for(i=0;i<sum;i++)
{ k=i;
for(j=i+1;j<sum;j++)
if(q[k]->out_num<q[i]->out_num) k=j;
if(k!=i)
{
q[i]=q[i];q[i]=q[k];q[k]=p;}
}
for(i=0;i<sum;i++)
printf("\n%18d %6d %8s %11d\n",i+1,q[i]->name,q[i]->kind,q[i]->out_num);
bioskey(0);
}
/*排序模块*/
sort_message()
{ int choice;
do
{ clrscr();
printf("\n\n\n*****商品排行信息******\n\n");
printf(" 1.sort_amount\n\n");
printf(" 2.sort_profit\n\n");
printf(" 3.sort_out_num\n\n");
printf(" 0.return menu\n\n");
printf("please make your choice (0-3):");
scanf("%d",&choice);
switch(choice)
{ case 1:sort_amount();break;
case 2:sort_profit();break;
case 3:sort_out_num();break;
case 0:break;
}
} 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");
printf(" 3.更新商品信息\n\n");
printf(" 4.查询商品信息\n\n");
printf(" 5.统计商品信息\n\n");
printf(" 6.商品排行信息\n\n");
printf(" 0.推出系统\n\n");
printf("please make your choice (0-6):");
scanf("%d",&choice);
switch(choice)
{ 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");
getch();
}
展开阅读全文