经典VB超市管理系统源代码
超市管理系统完整源代码
有一个小型超市,出售NN>=10种商品,设计并实现一个系统,完成下列功能:1.保存及输出;超市中的各种商品信息保存在指定文件中,可以把它们输出显示; 2.计算并排序;计算每类商品的总价值sum,单精度及平均价aver,单精度,输出一位小数,将每类商品按平均价从大到小的顺序排序打印出来;3.统计;统计输出库存量低于100的货号及类别;统计输出有两种以上含两种商品库存量低于100的商品类别;总体结构本程序主要分为八个模块:主模块、信息输出修改模块、新建信息模块、排序模块、计算模块、统计模块1、统计模块2、打印模块;1 主模块:通过调用各分模块实现功能;2 信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商品信息,修改商品信息;3 新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息保存在指定的文件中;4 排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序,放到链表里存储;5 计算模块:将所有商品的价格与库存量进行累加求和;6 打印模块:将商品信息按每类平均价格排序从高到低按顺序打印出来;7 统计模块1:统计库存量低于100的货名及类别;8 统计模块2:统计商品库存量有2种以上含2种低于100的商品类别;附录程序清单include "" /输入,输出头文件/include "" /申请空间头文件/include "" /对字符串加工头文件/include "" /清屏头文件/FILE fp;int n=0; /定义文件指针类型/int i,j,a4,m; /定义整数类型/float aver4,sum4,g4,h; /定义浮点类型/char c5="elec"; /定义字符数组类型/char d5="comm"; /定义字符数组类型/char e5="food"; /定义字符数组类型/char f5="offi"; /定义字符数组类型/struct good /定义结构体/{int num; /商品编号/char name20; /商品名称/char kind40; /商品类型/float price; /商品价格/char unit10; /商品单位/int quantity; /商品数量/struct good next; /定义结构体指针类型/}head,p1,p2;struct good createlist /创建链表函数/{struct good head1,p1,p2; /定义结构体指针类型/iffp=fopen"goods ","w"==NULL /判断能否打开文件/{printf"can not open the file";exit0; /结束程序/}head1=struct good mallocsizeofstruct good; /申请头结点空间/ p1=head1;p2=head1;printf"\n";printf"请输入信息:编号,名称,类型,价格,单位,数目\n";printf" 以输入“-1”表示结束输入\n";printf"\n";printf"____________________\n";scanf"%d %s %s %f %s %d",&p1->num,p1->name,p1->kind,&p1->price,p1->unit ,&p1->quantity; /输入商品信息/printf"____________________\n";p1->next=NULL;fprintffp,"%d %s %s %f %s %d",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity; /将商品信息写入文件/while1{p1=struct good mallocsizeofstruct good; /申请新空间/printf"\n";printf"请输入信息:编号,名称,类型,价格,单位,数目\n";printf" 以输入“-1”表示结束输入\n";printf"\n";printf"____________________\n";scanf"%d",&p1->num;ifp1->num==-1 /申请空间结束条件/{printf"____________________\n\n";fprintffp,"%d",-1;fclosefp;return head1; /返回头指针/}scanf"%s %s %f %s %d",p1->name,p1->kind,&p1->price,p1->unit,&p1->quantity; /输入商品信息/printf"________________\n";fprintffp,"%d %s %s %f %s %d",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity; /将商品信息写入文件/p1->next=NULL;p2->next=p1;p2=p1;}}struct good paixustruct goodhead2 /链表排序函数/{struct good p6,p7,r,s; /定义结构体指针类型/fori=0;i<=3;i++ /赋初值值/{ai=0;sumi=0;averi=0;}p6=struct good mallocsizeofstruct good; /申请新空间/ p6->next=head2;head2=p6;whilep6->next=NULL /判断循环结束条件/{p7=p6->next;r=p6;whilep7->next=NULL /判断循环结束条件/{ifp7->next->price>r->next->price /判断是否调换/ r=p7;p7=p7->next;}ifp6=r /判断循环结束条件/{s=r->next; /指针调换/r->next=s->next;s->next=p6->next;p6->next=s;}p6=p6->next;}p6=head2;head2=head2->next;freep6; /释放第一个无效空间/return head2;}void jisuan{p1=head;do{ifstrcmpp1->kind,c==0 /判断是否为电器类型/ {sum0=sum0+p1->pricep1->quantity; /求电器总价/a0=a0+p1->quantity; /求电器总件数/}ifstrcmpp1->kind,d==0 /判断是否为日用品类型/{sum1=sum1+p1->pricep1->quantity; /求日用品总价/a1=a1+p1->quantity; /求日用品总件数/}ifstrcmpp1->kind,e==0 /判断是否为办公用品类型/{sum2=sum2+p1->pricep1->quantity; /求办公用品总价/a2=a2+p1->quantity; /求办公用品总件数/}ifstrcmpp1->kind,f==0 /判断是否为食品类型/{sum3=sum3+p1->pricep1->quantity; /求食品总价/a3=a3+p1->quantity; /求食品总件数/}p1=p1->next;}while p1=NULL; /遍历链表结束条件/fori=0;i<4;i++averi=sumi/ai; /求每类商品平均价/printf"\n";printf"商品类型 \t 平均价\t 总库存量\n";printf"\n";printf"____________________________________________________\n"; printf"电器总价值:%\t平均价:%\t总库存量:%d\n",sum0,aver0,a0;printf"____________________________________________________\n"; printf"日用品总价值:%\t平均价:%\t总库存量:%d\n",sum1,aver1,a1; printf"____________________________________________________\n"; printf"食品总价值:%\t平均价:%\t总库存量:%d\n",sum2,aver2,a2;printf"____________________________________________________\n"; printf"办公用品总价值:%\t平均价:%\t总库存量:%d\n",sum3,aver3,a3; printf"____________________________________________________\n"; }void shuchu /输出商品信息函数/{do{struct good p3,p4,p5; /定义结构体指针类型/int n=0,p=0,q=0,r=0;printf"所有商品信息:\n";printf"编号,名称,类型,价格,单位,数目\n";printf"\n";iffp=fopen"goods ","rb+"==NULL /判断能否打开文件/{printf"can not open the file";exit0; /结束程序/}head=struct good mallocsizeofstruct good; /申请头结点空间/p3=head;fscanffp,"%d %s %s %f %s %d",&p3->num,p3->name,p3->kind,&p3->price,p3->unit,&p3->quantity; /从文件中写到链表/while1{p4=struct good mallocsizeofstruct good; /申请头结点空间/fscanffp,"%d ",&p4->num;ifp4->num=-1 /判断循环结束条件/{fscanffp,"%s %s %f %s %d",p4->name,p4->kind,&p4->price,p4->unit,&p4->quantity; /从文件中写到链表/p4->next=NULL;p3->next=p4;p3=p4;}else{p3->next=NULL;break;}}fclosefp; /关闭文件/p3=head;whilep3=NULL{printf" %d %s %s % %s %d\n\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity;printf"__________________________________\n";p3=p3->next;}printf"\n";printf"//////////////////////////////////\n";whilen=4{p3=head;printf"\n";printf"1 添加商品信息\n";printf"2 删除某商品信息\n";printf"3 修改某商品信息\n";printf"4 返回当你完成了对某一商品的添加、删除或者修改后请按4返回\n"; printf"\n";scanf"%d",&n;ifn==1 /添加商品信息/{printf"请输入商品编号名称类型价格单位数目\n";printf"\n";p4=struct good mallocsizeofstruct good; /申请空间/scanf"%d %s %s %f %s %d",&p4->num,p4->name,p4->kind,&p4->price,p4->unit ,&p4->quantity; /输入商品信息/p4->next=NULL;whilep3->next=NULL /判断循环结束条件/{p3=p3->next;}p3->next=p4;p3=head;iffp=fopen"goods ","w"==NULL /判断能否打开文件/{printf"can not open the file";exit0; /结束程序/}whilep3=NULL{fprintffp,"%d %s %s %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity /将商品信息写入文件/p3=p3->next;}fprintffp,"%d",-1;fclosefp; /关闭文件/printf"\n";printf"__________________________________\n";printf"------------请按4返回-------------\n";printf"__________________________________\n";printf"\n";}ifn==2 /删除商品/{printf"\n";printf"请输入需要删除的商品编号\n";printf"\n";scanf"%d",&p;printf"\n";printf"1 确认删除\n2 取消删除\n";printf"\n";scanf"%d",&r;ifr==1{ifhead->num==p{head=head->next;freep3; /释放空间/}else{p4=head;p3=p4->next;whilep3=NULL /判断循环结束条件/ {ifp3->num==p{p5=p3->next;freep3; /释放空间/p4->next=p5;break;}p3=p3->next;p4=p4->next;}}iffp=fopen"goods ","w"==NULL /判断能否打开文件/ {printf"can not open the file";exit0; /结束程序/}p3=head;whilep3=NULL /判断循环结束条件/{fprintffp,"%d %s %s %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity; /将商品信息写入文件/p3=p3->next;}fprintffp,"%d",-1;fclosefp; /关闭文件/}ifr==2continue; /继续循环/printf"\n";printf"__________________________________\n";printf"------------请按4返回-------------\n";printf"__________________________________\n";printf"\n";}ifn==3 /修改某商品信息/{printf"请输入需要修改的商品编号\n";scanf"%d",&q;whilep3=NULL /判断循环结束条件/{ifp3->num==q /判断是否为所需要修改的商品/{printf"请输入商品单价与库存量如果单价不变请输入原来的单价\n";scanf"%f %d",&p3->price,&p3->quantity; /输入商品价格与库存量/}p3=p3->next;}iffp=fopen"goods ","w"==NULL /判断能否打开文件/{printf"can not open the file";exit0; /结束程序/}p3=head;whilep3=NULL /判断循环结束条件/{fprintffp,"%d %s %s %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity; /将商品信息写入文件/p3=p3->next;}fprintffp,"%d",-1;fclosefp; /关闭文件/printf"\n";printf"__________________________________\n";printf"------------请按4返回-------------\n";printf"__________________________________\n";printf"\n";}ifn==4 /退出/break;}printf"\n";printf"1 继续修改\n---------\n2 返回\n";printf"\n";scanf"%d",&p;ifp==1continue; /继续循环/ifp==2break; /跳出循环/}whilen=2;fclosefp; /关闭文件/}void printf0struct good p /遍历链表并打印电器类商品函数/{struct good p3; /定义结构体指针类型/p3=p;while p3=NULL /判断遍历链表循环结束条件/{ifstrcmpp3->kind,c==0 /判断商品类型是否为电器类型/{printf"%d\t%s\t%s\t%\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity; /输出电器类商品信息/printf"________________________________________________\n";}p3=p3->next;}return;}void printf1struct good p /遍历链表并打印日用品类商品函数/{struct good p3; /定义结构体指针类型/p3=p;while p3=NULL /判断遍历链表循环结束条件/{ifstrcmpp3->kind,d==0 /判断商品类型是否为日用品类型/{printf"%d\t%s\t%s\t%\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity; /输出日用品类商品信息/printf"________________________________________________\n";}p3=p3->next;}return;}void printf2struct good p /遍历链表并打印办公用品类商品函数/{struct good p3; /定义结构体指针类型/p3=p;while p3=NULL /判断遍历链表循环结束条件/{ifstrcmpp3->kind,e==0 /判断商品类型是否为办公用品类型/{printf"%d\t%s\t%s\t%\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity; /输出办公用品类商品信息/printf"________________________________________________\n";}p3=p3->next;}return;}void printf3struct good p /遍历链表并打印食品类商品函数/{struct good p3; /定义结构体指针类型/p3=p;while p3=NULL /判断遍历链表循环结束条件/{ifstrcmpp3->kind,f==0 /判断商品类型是否为食品类型/{printf"%d\t%s\t%s\t%\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity; /输出食品类商品信息/printf"________________________________________________\n";}p3=p3->next;}return;}void shunxudayin{fori=0;i<4;i++gi=averi; /将平均价赋给新数组/forj=0;j<3;j++ /将新数组用冒泡排序法排序/fori=j+1;i<4;i++{ifgj<gi{h=gj;gj=gi;gi=h;}}printf"\n\n";printf"商品平均价格排序表从高到低\n";printf"\n";printf"________________________________________________\n";printf"编号\t名称\t类别\t单价\t单位\t数量\n";printf"________________________________________________\n"; forj=0;j<4;j++fori=0;i<4;i++{if averi==gj /判断每类商品平均价格的先后顺序/switchi{case 0:printf0head; /调用遍历链表并打印电器类商品函数/break;case 1:printf1head; /调用遍历链表并打印日用品类商品函数/break;case 2:printf2head;/调用遍历链表并打印办公用品类商品函数/break;case 3:printf3head; /调用遍历链表并打印食品类商品函数/ break;}}}void tongji1{p1=head;printf"\n\n";printf"库存量低于100的货名及类别\n";printf"\n";printf"________________________\n";printf"商品名称\t商品类型\n";printf"________________________\n";whilep1=NULL /判断遍历链表循环结束条件/{ifp1->quantity<100 /判断库存量是否小于100/{printf"%s\t%s\n",p1->name,p1->kind; /输出商品名称及类别/printf"________________________\n";}p1=p1->next;}}void tongji2{printf"\n\n";printf"商品库存量有2种以上含2种低于100的商品类别:\n";printf"\n";printf"________\n";ifa0<100&&a0>=2 /判断电器类库存量是否为2种以上含2种低于100/{printf"电器\n";printf"________\n";}ifa1<100&&a1>=2 /判断日用品类库存量是否为2种以上含2种低于100/{printf"日用品\n";printf"________\n";}ifa2<100&&a2>=2 /判断食品类库存量是否为2种以上含2种低于100/{printf"食品\n";printf"________\n";}ifa3<100&&a3>=2 /判断办公用品类库存量是否为2种以上含2种低于100/{printf"办公用品\n";printf"________\n";}}int mainint argc, char argv{struct good p1,p2; /定义结构体指针类型/while1{printf"\n";printf"1 ----------输出查看或者修改已存信息-----------\n"; printf"-----------------------------------------------\n"; printf"2 -----重新输入新信息并且删除原有信息------\n";printf"-----------------------------------------------\n"; printf"3 统计商品信息如果您还没有查看过信息请先按1\n";printf"-----------------------------------------------\n"; printf"4 -------------------退出---------------------\n"; printf"\n";scanf"%d",&m;ifm==1shuchu; /调用输出信息函数/ifm==2{system"cls";head=createlist; /调用建立链表函数/}ifm==3{printf"统计结果如下\n";head=paixuhead; /调用链表排序函数/ jisuan; /调用计算函数/shunxudayin; /调用顺序打印函数/tongji1; /调用统计1函数/tongji2; /调用统计2函数/}ifm==4{p1=head;whilep1=NULL /判断遍历链表结束条件/{p2=p1->next;freep1; /释放空间/ p1=p2;}break;}}return 0; /结束程序/ }。
超市管理系统完整+源代码
有一个小型超市,出售N(N>=10)种商品,设计并实现一个系统,完成下列功能:1.保存及输出。
超市中的各种商品信息保存在指定文件中,可以把它们输出显示。
2.计算并排序。
计算每类商品的总价值(sum,单精度)及平均价(aver,单精度,输出一位小数),将每类商品按平均价从大到小的顺序排序打印出来。
3.统计。
统计输出库存量低于100的货号及类别。
统计输出有两种以上(含两种)商品库存量低于100的商品类别。
1.2总体结构本程序主要分为八个模块:主模块、信息输出修改模块、新建信息模块、排序模块、计算模块、统计模块1、统计模块2、打印模块。
1)主模块:通过调用各分模块实现功能;2)信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商品信息,修改商品信息;3)新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息保存在指定的文件中;4)排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序,放到链表里存储;5)计算模块:将所有商品的价格与库存量进行累加求和;6)打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来;7)统计模块1:统计库存量低于100的货名及类别;8)统计模块2:统计商品库存量有2种以上(含2种)低于100的商品类别。
附录(程序清单)#include "stdio.h" /*输入,输出头文件*/#include "stdlib.h" /*申请空间头文件*/#include "string.h" /*对字符串加工头文件*/#include "conio.h" /*清屏头文件*/FILE *fp;int n=0; /*定义文件指针类型*/int i,j,a[4],m; /*定义整数类型*/float aver[4],sum[4],g[4],h; /*定义浮点类型*/char c[5]="elec"; /*定义字符数组类型*/char d[5]="comm"; /*定义字符数组类型*/char e[5]="food"; /*定义字符数组类型*/char f[5]="offi"; /*定义字符数组类型*/struct good /*定义结构体*/{int num; /*商品编号*/char name[20]; /*商品名称*/char kind[40]; /*商品类型*/float price; /*商品价格*/char unit[10]; /*商品单位*/int quantity; /*商品数量*/struct good *next; /*定义结构体指针类型*/}*head,*p1,*p2;struct good *createlist() /*创建链表函数*/ {struct good *head1,*p1,*p2; /*定义结构体指针类型*/if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/ {printf("can not open the file");exit(0); /*结束程序*/}head1=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/ p1=head1;p2=head1;printf("*********************************************\n");printf("请输入信息:编号,名称,类型,价格,单位,数目\n");printf(" (以输入“-1”表示结束输入)\n");printf("*********************************************\n");printf("____________________\n");scanf("%d %s %s %f %s %d",&p1->num,p1->name,p1->kind,&p1->price,p1-> unit,&p1->quantity); /*输入商品信息*/printf("____________________\n");p1->next=NULL;fprintf(fp,"%d %s %s %f %s %d",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity);/*将商品信息写入文件*/while(1){p1=(struct good *)malloc(sizeof(struct good)); /*申请新空间*/ printf("*********************************************\n");printf("请输入信息:编号,名称,类型,价格,单位,数目\n");printf(" (以输入“-1”表示结束输入)\n");printf("*********************************************\n");printf("____________________\n");scanf("%d",&p1->num);if(p1->num==-1) /*申请空间结束条件*/{printf("____________________\n\n");fprintf(fp,"%d",-1);fclose(fp);return head1; /*返回头指针*/}scanf("%s %s %f %s %d",p1->name,p1->kind,&p1->price,p1->unit,&p1->quan tity); /*输入商品信息*/printf("________________\n");fprintf(fp,"%d %s %s %f %s %d",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity);/*将商品信息写入文件*/p1->next=NULL;p2->next=p1;p2=p1;}}struct good *paixu(struct good*head2) /*链表排序函数*/{struct good *p6,*p7,*r,*s; /*定义结构体指针类型*/for(i=0;i<=3;i++) /*赋初值值*/{a[i]=0;sum[i]=0;aver[i]=0;}p6=(struct good *)malloc(sizeof(struct good)); /*申请新空间*/ p6->next=head2;head2=p6;while(p6->next!=NULL) /*判断循环结束条件*/{p7=p6->next;r=p6;while(p7->next!=NULL) /*判断循环结束条件*/{if((p7->next->price)>(r->next->price)) /*判断是否调换*/r=p7;p7=p7->next;}if(p6!=r) /*判断循环结束条件*/{s=r->next; /*指针调换*/r->next=s->next;s->next=p6->next;p6->next=s;}p6=p6->next;}p6=head2;head2=head2->next;free(p6); /*释放第一个无效空间*/return head2;}void jisuan(){p1=head;do{if(strcmp(p1->kind,c)==0) /*判断是否为电器类型*/{sum[0]=sum[0]+(p1->price)*(p1->quantity); /*求电器总价*/a[0]=a[0]+p1->quantity; /*求电器总件数*/}if(strcmp(p1->kind,d)==0) /*判断是否为日用品类型*/{sum[1]=sum[1]+(p1->price)*(p1->quantity); /*求日用品总价*/ a[1]=a[1]+p1->quantity; /*求日用品总件数*/}if(strcmp(p1->kind,e)==0) /*判断是否为办公用品类型*/{sum[2]=sum[2]+(p1->price)*(p1->quantity); /*求办公用品总价*/ a[2]=a[2]+p1->quantity; /*求办公用品总件数*/}if(strcmp(p1->kind,f)==0) /*判断是否为食品类型*/{sum[3]=sum[3]+(p1->price)*(p1->quantity); /*求食品总价*/a[3]=a[3]+p1->quantity; /*求食品总件数*/}p1=p1->next;}while (p1!=NULL); /*遍历链表结束条件*/for(i=0;i<4;i++)aver[i]=sum[i]/a[i]; /*求每类商品平均价*/printf("****************************************************\n");printf("商品类型\t 平均价\t 总库存量\n");printf("****************************************************\n");printf("____________________________________________________\n");printf("电器总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[0],aver[0],a[0]); printf("____________________________________________________\n");printf("日用品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[1],aver[1],a[1]);printf("____________________________________________________\n"); printf("食品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[2],aver[2],a[2]); printf("____________________________________________________\n");printf("办公用品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[3],aver[3],a[3]);printf("____________________________________________________\n"); }void shuchu() /*输出商品信息函数*/{do{struct good *p3,*p4,*p5; /*定义结构体指针类型*/int n=0,p=0,q=0,r=0;printf("所有商品信息:\n");printf("编号,名称,类型,价格,单位,数目\n");printf("**********************************\n");if((fp=fopen("goods message.txt","rb+"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}head=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/p3=head;fscanf(fp,"%d %s %s %f %s %d",&p3->num,p3->name,p3->kind,&p3->price,p3->unit,&p3->quantity);/*从文件中写到链表*/while(1){p4=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/fscanf(fp,"%d ",&p4->num);if(p4->num!=-1) /*判断循环结束条件*/{fscanf(fp,"%s %s %f %s %d",p4->name,p4->kind,&p4->price,p4->unit,&p4->quantity); /*从文件中写到链表*/p4->next=NULL;p3->next=p4;p3=p4;}else{p3->next=NULL;break;}}fclose(fp); /*关闭文件*/p3=head;while(p3!=NULL){printf(" %d %s %s %0.1f %s %d\n\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);printf("__________________________________\n");p3=p3->next;}printf("**********************************\n");printf("//////////////////////////////////\n");while(n!=4){p3=head;printf("**********************************\n");printf("1 添加商品信息\n");printf("2 删除某商品信息\n");printf("3 修改某商品信息\n");printf("4 返回(当你完成了对某一商品的添加、删除或者修改后请按4返回)\n");printf("**********************************\n");scanf("%d",&n);if(n==1) /*添加商品信息*/{printf("请输入商品编号名称类型价格单位数目\n");printf("**********************************\n");p4=(struct good *)malloc(sizeof(struct good)); /*申请空间*/scanf("%d %s %s %f %s %d",&p4->num,p4->name,p4->kind,&p4->price,p4-> unit,&p4->quantity); /*输入商品信息*/p4->next=NULL;while(p3->next!=NULL) /*判断循环结束条件*/{p3=p3->next;}p3->next=p4;p3=head;if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}while(p3!=NULL){fprintf(fp,"%d %s %s %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity)/*将商品信息写入文件*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp); /*关闭文件*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==2) /*删除商品*/{printf("**********************************\n");printf("请输入需要删除的商品编号\n");printf("**********************************\n");scanf("%d",&p);printf("**********\n");printf("1 确认删除\n2 取消删除\n");printf("**********\n");scanf("%d",&r);if(r==1){if((head->num)==p){head=head->next;free(p3); /*释放空间*/}else{p4=head;p3=p4->next;while(p3!=NULL) /*判断循环结束条件*/{if((p3->num)==p){p5=p3->next;free(p3); /*释放空间*/p4->next=p5;break;}p3=p3->next;p4=p4->next;}}if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}p3=head;while(p3!=NULL) /*判断循环结束条件*/{fprintf(fp,"%d %s %s %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*将商品信息写入文件*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp); /*关闭文件*/}if(r==2)continue; /*继续循环*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==3) /*修改某商品信息*/{printf("请输入需要修改的商品编号\n");scanf("%d",&q);while(p3!=NULL) /*判断循环结束条件*/{if((p3->num)==q) /*判断是否为所需要修改的商品*/{printf("请输入商品单价与库存量(如果单价不变请输入原来的单价)\n");scanf("%f %d",&p3->price,&p3->quantity); /*输入商品价格与库存量*/}p3=p3->next;}if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}p3=head;while(p3!=NULL) /*判断循环结束条件*/{fprintf(fp,"%d %s %s %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/*将商品信息写入文件*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp); /*关闭文件*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==4) /*退出*/break;}printf("**********\n");printf("1 继续修改\n---------\n2 返回\n");printf("**********\n");scanf("%d",&p);if(p==1)continue; /*继续循环*/if(p==2)break; /*跳出循环*/}while(n!=2);fclose(fp); /*关闭文件*/}void printf0(struct good *p) /*遍历链表并打印电器类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,c)==0) /*判断商品类型是否为电器类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price, p3->unit,p3->quantity); /*输出电器类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;void printf1(struct good *p) /*遍历链表并打印日用品类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,d)==0) /*判断商品类型是否为日用品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price, p3->unit,p3->quantity); /*输出日用品类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;}void printf2(struct good *p) /*遍历链表并打印办公用品类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,e)==0) /*判断商品类型是否为办公用品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price, p3->unit,p3->quantity); /*输出办公用品类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;}void printf3(struct good *p) /*遍历链表并打印食品类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,f)==0) /*判断商品类型是否为食品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price, p3->unit,p3->quantity); /*输出食品类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;}void shunxudayin(){for(i=0;i<4;i++)g[i]=aver[i]; /*将平均价赋给新数组*/for(j=0;j<3;j++) /*将新数组用冒泡排序法排序*/for(i=j+1;i<4;i++){if(g[j]<g[i]){h=g[j];g[j]=g[i];g[i]=h;}}printf("\n****************************\n");printf("商品平均价格排序表(从高到低)\n");printf("****************************\n");printf("________________________________________________\n"); printf("编号\t名称\t类别\t单价\t单位\t数量\n");printf("________________________________________________\n"); for(j=0;j<4;j++)for(i=0;i<4;i++){if (aver[i]==g[j]) /*判断每类商品平均价格的先后顺序*/switch(i){case 0:printf0(head); /*调用遍历链表并打印电器类商品函数*/break;case 1:printf1(head); /*调用遍历链表并打印日用品类商品函数*/break;case 2:printf2(head);/*调用遍历链表并打印办公用品类商品函数*/break;case 3:printf3(head); /*调用遍历链表并打印食品类商品函数*/break;}}}void tongji1(){p1=head;printf("\n************************\n");printf("库存量低于100的货名及类别\n");printf("************************\n");printf("________________________\n");printf("商品名称\t商品类型\n");printf("________________________\n");while(p1!=NULL) /*判断遍历链表循环结束条件*/{if(p1->quantity<100) /*判断库存量是否小于100*/{printf("%s\t%s\n",p1->name,p1->kind); /*输出商品名称及类别*/ printf("________________________\n");}p1=p1->next;}}void tongji2(){printf("\n**********************************************\n");printf("商品库存量有2种以上(含2种)低于100的商品类别:\n");printf("**********************************************\n");printf("________\n");if((a[0]<100)&&(a[0]>=2)) /*判断电器类库存量是否为2种以上(含2种)低于100*/{printf("电器\n");printf("________\n");}if((a[1]<100)&&(a[1]>=2)) /*判断日用品类库存量是否为2种以上(含2种)低于100*/{printf("日用品\n");printf("________\n");}if((a[2]<100)&&(a[2]>=2)) /*判断食品类库存量是否为2种以上(含2种)低于100*/{printf("食品\n");printf("________\n");}if((a[3]<100)&&(a[3]>=2)) /*判断办公用品类库存量是否为2种以上(含2种)低于100*/{printf("办公用品\n");printf("________\n");}}int main(int argc, char* argv[]){struct good *p1,*p2; /*定义结构体指针类型*/while(1){printf("***********************************************\n");printf("1 ----------输出查看或者修改已存信息-----------\n");printf("-----------------------------------------------\n");printf("2 -----重新输入新信息(并且删除原有信息)------\n"); printf("-----------------------------------------------\n");printf("3 统计商品信息(如果您还没有查看过信息请先按1)\n"); printf("-----------------------------------------------\n");printf("4 -------------------退出---------------------\n");printf("***********************************************\n");scanf("%d",&m);if(m==1)shuchu(); /*调用输出信息函数*/if(m==2){system("cls");head=createlist(); /*调用建立链表函数*/}if(m==3){printf("统计结果如下\n");head=paixu(head); /*调用链表排序函数*/ jisuan(); /*调用计算函数*/shunxudayin(); /*调用顺序打印函数*/tongji1(); /*调用统计1函数*/tongji2(); /*调用统计2函数*/}if(m==4){p1=head;while(p1!=NULL) /*判断遍历链表结束条件*/ {p2=p1->next;free(p1); /*释放空间*/p1=p2;}break;}}return 0; /*结束程序*/}。
(店铺管理)超市管理系统完整+源代码最全版
(店铺管理)超市管理系统完整+源代码有壹个小型超市,出售N(N>=10)种商品,设计且实现壹个系统,完成下列功能:1.保存及输出。
超市中的各种商品信息保存在指定文件中,能够把它们输出显示。
2.计算且排序。
计算每类商品的总价值(sum,单精度)及平均价(aver,单精度,输出壹位小数),将每类商品按平均价从大到小的顺序排序打印出来。
3.统计。
统计输出库存量低于100的货号及类别。
统计输出有俩种之上(含俩种)商品库存量低于100的商品类别。
1.2总体结构本程序主要分为八个模块:主模块、信息输出修改模块、新建信息模块、排序模块、计算模块、统计模块1、统计模块2、打印模块。
1)主模块:通过调用各分模块实现功能;2)信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商品信息,修改商品信息;3)新建商品信息模块:建立壹个新结构体,为链表存信息用,且且将信息保存在指定的文件中;4)排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序,放到链表里存储;5)计算模块:将所有商品的价格和库存量进行累加求和;6)打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来;7)统计模块1:统计库存量低于100的货名及类别;8)统计模块2:统计商品库存量有2种之上(含2种)低于100的商品类别。
附录(程序清单)#include"stdio.h"/*输入,输出头文件*/#include"stdlib.h"/*申请空间头文件*/#include"string.h"/*对字符串加工头文件*/#include"conio.h"/*清屏头文件*/FILE*fp;intn=0;/*定义文件指针类型*/inti,j,a[4],m;/*定义整数类型*/floataver[4],sum[4],g[4],h;/*定义浮点类型*/charc[5]="elec";/*定义字符数组类型*/chard[5]="comm";/*定义字符数组类型*/chare[5]="food";/*定义字符数组类型*/charf[5]="offi";/*定义字符数组类型*/structgood/*定义结构体*/{intnum;/*商品编号*/charname[20];/*商品名称*/charkind[40];/*商品类型*/floatprice;/*商品价格*/charunit[10];/*商品单位*/intquantity;/*商品数量*/structgood*next;/*定义结构体指针类型*/}*head,*p1,*p2;structgood*createlist()/*创建链表函数*/{structgood*head1,*p1,*p2;/*定义结构体指针类型*/if((fp=fopen("goodsmessage.txt","w"))==NULL)/*判断能否打开文件*/ {printf("cannotopenthefile");exit(0);/*结束程序*/}head1=(structgood*)malloc(sizeof(structgood));/*申请头结点空间*/ p1=head1;p2=head1;printf("*********************************************\n");printf("请输入信息:编号,名称,类型,价格,单位,数目\n");printf("(以输入“-1”表示结束输入)\n");printf("*********************************************\n");printf("____________________\n");scanf("%d%s%s%f%s%d",&p1->num,p1->name,p1->kind,&p1->price,p 1->unit,&p1->quantity);/*输入商品信息*/printf("____________________\n");p1->next=NULL;fprintf(fp,"%d%s%s%f%s%d",p1->num,p1->name,p1->kind,p1->price,p 1->unit,p1->quantity);/*将商品信息写入文件*/while(1){p1=(structgood*)malloc(sizeof(structgood));/*申请新空间*/printf("*********************************************\n");printf("请输入信息:编号,名称,类型,价格,单位,数目\n");printf("(以输入“-1”表示结束输入)\n");printf("*********************************************\n");printf("____________________\n");scanf("%d",&p1->num);if(p1->num==-1)/*申请空间结束条件*/{printf("____________________\n\n");fprintf(fp,"%d",-1);fclose(fp);returnhead1;/*返回头指针*/}scanf("%s%s%f%s%d",p1->name,p1->kind,&p1->price,p1->unit,&p1-> quantity);/*输入商品信息*/printf("________________\n");fprintf(fp,"%d%s%s%f%s%d",p1->num,p1->name,p1->kind,p1->price,p 1->unit,p1->quantity);/*将商品信息写入文件*/p1->next=NULL;p2->next=p1;p2=p1;}}structgood*paixu(structgood*head2)/*链表排序函数*/ {structgood*p6,*p7,*r,*s;/*定义结构体指针类型*/for(i=0;i<=3;i++)/*赋初值值*/{a[i]=0;sum[i]=0;aver[i]=0;}p6=(structgood*)malloc(sizeof(structgood));/*申请新空间*/ p6->next=head2;head2=p6;while(p6->next!=NULL)/*判断循环结束条件*/{p7=p6->next;r=p6;while(p7->next!=NULL)/*判断循环结束条件*/{if((p7->next->price)>(r->next->price))/*判断是否调换*/ r=p7;p7=p7->next;}if(p6!=r)/*判断循环结束条件*/{s=r->next;/*指针调换*/r->next=s->next;s->next=p6->next;p6->next=s;}p6=p6->next;}p6=head2;head2=head2->next;free(p6);/*释放第壹个无效空间*/returnhead2;}voidjisuan(){p1=head;do{if(strcmp(p1->kind,c)==0)/*判断是否为电器类型*/{sum[0]=sum[0]+(p1->price)*(p1->quantity);/*求电器总价*/a[0]=a[0]+p1->quantity;/*求电器总件数*/}if(strcmp(p1->kind,d)==0)/*判断是否为日用品类型*/{sum[1]=sum[1]+(p1->price)*(p1->quantity);/*求日用品总价*/ a[1]=a[1]+p1->quantity;/*求日用品总件数*/}if(strcmp(p1->kind,e)==0)/*判断是否为办公用品类型*/{sum[2]=sum[2]+(p1->price)*(p1->quantity);/*求办公用品总价*/a[2]=a[2]+p1->quantity;/*求办公用品总件数*/}if(strcmp(p1->kind,f)==0)/*判断是否为食品类型*/{sum[3]=sum[3]+(p1->price)*(p1->quantity);/*求食品总价*/ a[3]=a[3]+p1->quantity;/*求食品总件数*/}p1=p1->next;}while(p1!=NULL);/*遍历链表结束条件*/for(i=0;i<4;i++)aver[i]=sum[i]/a[i];/*求每类商品平均价*/printf("****************************************************\n"); printf("商品类型\t平均价\t总库存量\n");printf("****************************************************\n"); printf("____________________________________________________\n"); printf("电器总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[0],aver[0],a[0]);printf("____________________________________________________\n");printf("日用品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[1],aver[1],a[1]);printf("____________________________________________________\n"); printf("食品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[2],aver[2],a[2]);printf("____________________________________________________\n"); printf("办公用品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[3],aver[3],a[3]);printf("____________________________________________________\n"); }voidshuchu()/*输出商品信息函数*/{do{structgood*p3,*p4,*p5;/*定义结构体指针类型*/intn=0,p=0,q=0,r=0;printf("所有商品信息:\n");printf("编号,名称,类型,价格,单位,数目\n");printf("**********************************\n");if((fp=fopen("goodsmessage.txt","rb+"))==NULL)/*判断能否打开文件*/ {printf("cannotopenthefile");exit(0);/*结束程序*/}head=(structgood*)malloc(sizeof(structgood));/*申请头结点空间*/p3=head;fscanf(fp,"%d%s%s%f%s%d",&p3->num,p3->name,p3->kind,&p3->pric e,p3->unit,&p3->quantity);/*从文件中写到链表*/while(1){p4=(structgood*)malloc(sizeof(structgood));/*申请头结点空间*/fscanf(fp,"%d",&p4->num);if(p4->num!=-1)/*判断循环结束条件*/{fscanf(fp,"%s%s%f%s%d",p4->name,p4->kind,&p4->price,p4->unit,&p4 ->quantity);/*从文件中写到链表*/p4->next=NULL;p3->next=p4;p3=p4;}else{p3->next=NULL;break;}}fclose(fp);/*关闭文件*/p3=head;while(p3!=NULL){printf("%d%s%s%0.1f%s%d\n\n",p3->num,p3->name,p3->kind,p3->pric e,p3->unit,p3->quantity);printf("__________________________________\n");p3=p3->next;}printf("**********************************\n");printf("//////////////////////////////////\n");while(n!=4){p3=head;printf("**********************************\n");printf("1添加商品信息\n");printf("2删除某商品信息\n");printf("3修改某商品信息\n");printf("4返回(当你完成了对某壹商品的添加、删除或者修改后请按4返回)\n"); printf("**********************************\n");scanf("%d",&n);if(n==1)/*添加商品信息*/{printf("请输入商品编号名称类型价格单位数目\n");printf("**********************************\n");p4=(structgood*)malloc(sizeof(structgood));/*申请空间*/scanf("%d%s%s%f%s%d",&p4->num,p4->name,p4->kind,&p4->price,p 4->unit,&p4->quantity);/*输入商品信息*/p4->next=NULL;while(p3->next!=NULL)/*判断循环结束条件*/{p3=p3->next;}p3->next=p4;p3=head;if((fp=fopen("goodsmessage.txt","w"))==NULL)/*判断能否打开文件*/ {printf("cannotopenthefile");exit(0);/*结束程序*/}while(p3!=NULL){fprintf(fp,"%d%s%s%f%s%d",p3->num,p3->name,p3->kind,p3->price,p 3->unit,p3->quantity)/*将商品信息写入文件*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp);/*关闭文件*/printf("**********************************\n"); printf("__________________________________\n"); printf("------------请按4返回-------------\n"); printf("__________________________________\n"); printf("**********************************\n"); }if(n==2)/*删除商品*/{printf("**********************************\n"); printf("请输入需要删除的商品编号\n");printf("**********************************\n"); scanf("%d",&p);printf("**********\n");printf("1确认删除\n2取消删除\n");printf("**********\n");scanf("%d",&r);if(r==1){if((head->num)==p){head=head->next;free(p3);/*释放空间*/}else{p4=head;p3=p4->next;while(p3!=NULL)/*判断循环结束条件*/ {if((p3->num)==p){p5=p3->next;free(p3);/*释放空间*/p4->next=p5;break;}p3=p3->next;p4=p4->next;}}if((fp=fopen("goodsmessage.txt","w"))==NULL)/*判断能否打开文件*/ {printf("cannotopenthefile");exit(0);/*结束程序*/}p3=head;while(p3!=NULL)/*判断循环结束条件*/{fprintf(fp,"%d%s%s%f%s%d",p3->num,p3->name,p3->kind,p3->price,p 3->unit,p3->quantity);/*将商品信息写入文件*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp);/*关闭文件*/}if(r==2)continue;/*继续循环*/printf("**********************************\n"); printf("__________________________________\n"); printf("------------请按4返回-------------\n"); printf("__________________________________\n"); printf("**********************************\n"); }if(n==3)/*修改某商品信息*/{printf("请输入需要修改的商品编号\n");scanf("%d",&q);while(p3!=NULL)/*判断循环结束条件*/{if((p3->num)==q)/*判断是否为所需要修改的商品*/{printf("请输入商品单价和库存量(如果单价不变请输入原来的单价)\n"); scanf("%f%d",&p3->price,&p3->quantity);/*输入商品价格和库存量*/}p3=p3->next;}if((fp=fopen("goodsmessage.txt","w"))==NULL)/*判断能否打开文件*/ {printf("cannotopenthefile");exit(0);/*结束程序*/}p3=head;while(p3!=NULL)/*判断循环结束条件*/{fprintf(fp,"%d%s%s%f%s%d",p3->num,p3->name,p3->kind,p3->price,p 3->unit,p3->quantity);/*将商品信息写入文件*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp);/*关闭文件*/printf("**********************************\n"); printf("__________________________________\n"); printf("------------请按4返回-------------\n"); printf("__________________________________\n"); printf("**********************************\n"); }if(n==4)/*退出*/break;}printf("**********\n");printf("1继续修改\n---------\n2返回\n"); printf("**********\n");scanf("%d",&p);if(p==1)continue;/*继续循环*/if(p==2)break;/*跳出循环*/}while(n!=2);fclose(fp);/*关闭文件*/}voidprintf0(structgood*p)/*遍历链表且打印电器类商品函数*/{structgood*p3;/*定义结构体指针类型*/p3=p;while(p3!=NULL)/*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,c)==0)/*判断商品类型是否为电器类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3 ->price,p3->unit,p3->quantity);/*输出电器类商品信息*/printf("________________________________________________\n");}p3=p3->next;}return;}voidprintf1(structgood*p)/*遍历链表且打印日用品类商品函数*/{structgood*p3;/*定义结构体指针类型*/p3=p;while(p3!=NULL)/*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,d)==0)/*判断商品类型是否为日用品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3 ->price,p3->unit,p3->quantity);/*输出日用品类商品信息*/printf("________________________________________________\n");}p3=p3->next;}return;}voidprintf2(structgood*p)/*遍历链表且打印办公用品类商品函数*/{structgood*p3;/*定义结构体指针类型*/p3=p;while(p3!=NULL)/*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,e)==0)/*判断商品类型是否为办公用品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3 ->price,p3->unit,p3->quantity);/*输出办公用品类商品信息*/printf("________________________________________________\n");}p3=p3->next;}return;}voidprintf3(structgood*p)/*遍历链表且打印食品类商品函数*/{structgood*p3;/*定义结构体指针类型*/p3=p;while(p3!=NULL)/*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,f)==0)/*判断商品类型是否为食品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3 ->price,p3->unit,p3->quantity);/*输出食品类商品信息*/printf("________________________________________________\n");}p3=p3->next;}return;}voidshunxudayin(){g[i]=aver[i];/*将平均价赋给新数组*/for(j=0;j<3;j++)/*将新数组用冒泡排序法排序*/for(i=j+1;i<4;i++){if(g[j]<g[i]){h=g[j];g[j]=g[i];g[i]=h;}}printf("\n****************************\n");printf("商品平均价格排序表(从高到低)\n");printf("****************************\n");printf("________________________________________________\n"); printf("编号\t名称\t类别\t单价\t单位\t数量\n");printf("________________________________________________\n");for(i=0;i<4;i++){if(aver[i]==g[j])/*判断每类商品平均价格的先后顺序*/ switch(i){case0:printf0(head);/*调用遍历链表且打印电器类商品函数*/ break;case1:printf1(head);/*调用遍历链表且打印日用品类商品函数*/ break;case2:printf2(head);/*调用遍历链表且打印办公用品类商品函数*/ break;case3:printf3(head);/*调用遍历链表且打印食品类商品函数*/ break;}}voidtongji1(){p1=head;printf("\n************************\n");printf("库存量低于100的货名及类别\n");printf("************************\n");printf("________________________\n");printf("商品名称\t商品类型\n");printf("________________________\n");while(p1!=NULL)/*判断遍历链表循环结束条件*/{if(p1->quantity<100)/*判断库存量是否小于100*/{printf("%s\t%s\n",p1->name,p1->kind);/*输出商品名称及类别*/ printf("________________________\n");p1=p1->next;}}voidtongji2(){printf("\n**********************************************\n");printf("商品库存量有2种之上(含2种)低于100的商品类别:\n");printf("**********************************************\n");printf("________\n");if((a[0]<100)&&(a[0]>=2))/*判断电器类库存量是否为2种之上(含2种)低于100*/{printf("电器\n");printf("________\n");}if((a[1]<100)&&(a[1]>=2))/*判断日用品类库存量是否为2种之上(含2种)低于100*/printf("日用品\n");printf("________\n");}if((a[2]<100)&&(a[2]>=2))/*判断食品类库存量是否为2种之上(含2种)低于100*/{printf("食品\n");printf("________\n");}if((a[3]<100)&&(a[3]>=2))/*判断办公用品类库存量是否为2种之上(含2种)低于100*/{printf("办公用品\n");printf("________\n");}}intmain(intargc,char*argv[]){structgood*p1,*p2;/*定义结构体指针类型*/while(1){printf("***********************************************\n"); printf("1----------输出查见或者修改已存信息-----------\n"); printf("-----------------------------------------------\n"); printf("2-----重新输入新信息(且且删除原有信息)------\n"); printf("-----------------------------------------------\n"); printf("3统计商品信息(如果您仍没有查见过信息请先按1)\n"); printf("-----------------------------------------------\n"); printf("4-------------------退出---------------------\n");printf("***********************************************\n"); scanf("%d",&m);if(m==1)shuchu();/*调用输出信息函数*/if(m==2){system("cls");head=createlist();/*调用建立链表函数*/}if(m==3){printf("统计结果如下\n");head=paixu(head);/*调用链表排序函数*/ jisuan();/*调用计算函数*/shunxudayin();/*调用顺序打印函数*/ tongji1();/*调用统计1函数*/tongji2();/*调用统计2函数*/}if(m==4){p1=head;while(p1!=NULL)/*判断遍历链表结束条件*/ {p2=p1->next;free(p1);/*释放空间*/ p1=p2;}break;}}return0;/*结束程序*/ }。
超市管理系统设计代码
import java.awt.*;import java.awt.event.*;import javax.swing.table.*;import javax.swing.event.*;import javax.swing.*;import java.sql.*;import java.util.*;import java.io.*;class Myframe1 extends JFrame //设置主界面{JFrame f=new JFrame();JLabel L1,L2;JButton btn1,btn2,btn3,btn4;public Myframe1(){f=new JFrame("主界面");L1=new JLabel("超市商品管理系统欢迎您");L1.setFont(new Font("TimesRoman",Font.BOLD,18));L2=new JLabel("您辛苦了~~~~");L2.setFont(new Font("TimesRoman",Font.BOLD,18)); btn1=new JButton("进货管理系统");btn2=new JButton("售货管理系统");btn3=new JButton("商品信息管理");btn4=new JButton("管理系统帮助");Container container=this.getContentPane();container.setLayout(new GridLayout(9,3,0,50));for(int i=0;i<3;i++)container.add(new JLabel());container.add(new JLabel());container.add(L1);container.add(new JLabel());container.add(new JLabel());container.add(btn1);container.add(new JLabel());container.add(new JLabel()); container.add(btn2);container.add(new JLabel());container.add(new JLabel()); container.add(btn3);container.add(new JLabel());container.add(new JLabel()); container.add(btn4);container.add(new JLabel());container.add(new JLabel()); container.add(L2);container.add(new JLabel());container.setBackground(Color.cyan);f.add(container);f.setLocation(60,60);f.setSize(750,650);f.setVisible(true);Montior bn=new Montior();btn1.addActionListener(bn);btn2.addActionListener(bn);btn3.addActionListener(bn);btn4.addActionListener(bn);}class Montior implements ActionListener{public void actionPerformed(ActionEvent e1) {if(e1.getSource()==btn1){new Myframe2();}if(e1.getSource()==btn2){new Myframe3();}if(e1.getSource()==btn3){new Myframe4();}if(e1.getSource()==btn4){new bangzhu();}}}}class bangzhu extends JFrame {JTextPane ta=new JTextPane();JScrollPane sp=new JScrollPane(ta);public bangzhu(){super("管理系统帮助");ta.setFont(new Font("TimesRoaman",Font.BOLD+Font.PLAIN,20));ta.setText(" 1.初次进入登录系统,系统中没有售货员信息,可以进入系统但是为了以后能够使用方便\n"+" 还是增加售货员信息,以便下次登录。
VB精典实用源代码(详细))
个人收藏的VB精典实用源代码。
若朋友您想要问如何才能学好vb,或者入门需要看什么教材一类的问题,建议你抱着一颗刻苦钻研的心去面对这门学问,多动脑,少提问,遇到不知道的,多查资料,多看看帖子,或者用断点来亲自试验。
实在不会了,请在此贴中查找您的常见问题,如果还没有,那请您发出新贴,向各位高手讨教:)查找方法:按ctrl+f,输入要查找的问题关键字即可每个问题中间用///分隔,这只是一部分最常见到的问题,以后会逐渐更新。
////////////////////////////////////////////////////////////////////////////////////如何用VB建立快捷方式Private Declare Function fCreateShellLink Lib "STKIT432.DLL" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArgs As String) As LongSub Command1_Click()Dim lReturn As Long'添加到桌面lReturn = fCreateShellLink("..\..\Desktop", "Shortcut to Calculator", "c:\windows\calc.exe", "")'添加到程序组lReturn = fCreateShellLink("", "Shortcut to Calculator", "c:\windows\calc.exe", "")'添加到启动组lReturn = fCreateShellLink("\Startup", "Shortcut to Calculator", "c:\windows\calc.exe", "")End Sub//////////////////////////////////////////////////////////////////////////////////// 如何让程序在Windows 启动时自动执行?有以下二个方法:方法1: 直接将快捷方式放到启动群组中。
小超市管理系统可运行代码
case 1:Add();break;
case 2:Delet();break;
}
getchar();
return;
}
void Add()
{
printf("\t请输入所添加商品的商品编号:");
scanf("%ld",goods[n].num);
strcpy(goods[i].name,goods[i+1].name);
strcpy(goods[i+1].name,p1);
temp=goods[i].num;
goods[i].num=goods[i+1].num;
goods[i+1].num=temp;
printf("\n\t请输入所添加商品的名称:");
scanf("%s",goods[n].name);
printf("\n\t请输入所添加商品的类别:");
scanf("%s",goods[n].sort);
printf("\n\t请输入所添加商品的数量:");
scanf("%d",goods[n].count);
printf("\t 7→查询商品信息\n");
printf("\t 8→浏览商品信息\n");
printf("\t 9→保存商品信息\n");
printf("\t请选择您所需要的操作(或选择(0)退出)\n");
scanf("%d",&m);
(店铺管理)超市管理系统代码最全版
(店铺管理)超市管理系统代码usingSystem;usingSystem.Collections.Generic;ponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.T ext;usingSystem.Windows.Forms;namespace超市管理信息系统{publicpartialclassf_供应商基本信息:Form{//公有变量记录选定数据publicstringstrOldNO="";publicstringstrOldName="";publicstringstrOldAdd="";publicf_供应商基本信息(){InitializeComponent();}privatevoidf_供应商基本信息_Load(objectsender,EventArgse){//TODO:这行代码将数据加载到表“连锁超市管理信息数据库DataSet.供应商”中。
您能够根据需要移动或移除它。
this.供应商T ableAdapter.Fill(this.连锁超市管理信息数据库DataSet.供应商); }//新增数据单击事件privatevoidbtnInsert_Click(objectsender,EventArgse){//获取前台数据stringstrName=txtName.T ext;stringstrAdd=txtAdd.T ext;stringstrNO=txtNO.T ext;intiNO=0;intiErrCode=0;//对前台编号数据的格式审核try{iNO=Convert.ToInt32(txtNO.T ext.Trim());}catch(ExceptioneINO){iErrCode=1;}//对前台名称数据的格式审核if(strName.Length>20)iErrCode=2;}if(strAdd.Length>30){iErrCode=3;}if(iErrCode!=0){MessageBox.Show("你所输入的数据有误,请核查!");}else{try{//新增写入数据库this.供应商T ableAdapter.Insert(iNO,strName,strAdd);}catch(ExceptionexInsert){MessageBox.Show("新增数据发生错误,请和管理员联系!"); }//刷新数据列数this.供应商T ableAdapter.Fill(this.连锁超市管理信息数据库DataSet.供应商);}//单击数据表单元格触发事件privatevoiddataGridView1_CellClick(objectsender,DataGridViewCellEventArgse) {//获取对应行的各个单元格数据stringstrNO=this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString(); stringstrName=this.dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString(); stringstrAdd=this.dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString(); //填充回对应的文本框txtNO.T ext=strNO;txtName.T ext=strName;txtAdd.T ext=strAdd;//将原数据值赋予公有变量strOldNO=strNO;strOldName=strName;strOldAdd=strAdd;}//删除按钮事件privatevoidbtnDelete_Click(objectsender,EventArgse)//获取前台数据stringstrName=txtName.T ext; stringstrAdd=txtAdd.T ext; stringstrNO=txtNO.T ext;intiNO=0;intiErrCode=0;//对前台编号数据的格式审核try{iNO=Convert.ToInt32(txtNO.T ext.Trim()); }catch(ExceptioneINO){iErrCode=1;}//对前台名称数据的格式审核if(strName.Length>20){iErrCode=2;}if(strAdd.Length>30)iErrCode=3;}if(iErrCode!=0){MessageBox.Show("你所输入的数据有误,请核查!");}else{try{//新增写入数据库this.供应商T ableAdapter.Delete(iNO,strName,strAdd);}catch(ExceptionexInsert){MessageBox.Show("删除数据发生错误,请和管理员联系!");}}//刷新数据列数this.供应商T ableAdapter.Fill(this.连锁超市管理信息数据库DataSet.供应商); }//修改按钮事件privatevoidbtnUpdate_Click(objectsender,EventArgse) {//获取前台数据stringstrName=txtName.T ext;stringstrAdd=txtAdd.T ext;stringstrNO=txtNO.T ext;intiNO=0;intiErrCode=0;//对前台编号数据的格式审核try{iNO=Convert.ToInt32(txtNO.T ext.Trim());}catch(ExceptioneINO){iErrCode=1;}//对前台名称数据的格式审核if(strName.Length>20){iErrCode=2;}if(strAdd.Length>30){iErrCode=3;}if(iErrCode!=0){MessageBox.Show("你所输入的数据有误,请核查!");}else{try{this.供应商TableAdapter.Update(iNO,strName,strAdd,Convert.ToInt32(strOldNO),strOldName,s trOldAdd);}catch(ExceptionexUpdate){MessageBox.Show("修改数据发生错误,请和管理员联系!");}}//刷新数据列数this.供应商T ableAdapter.Fill(this.连锁超市管理信息数据库DataSet.供应商); }}}usingSystem;usingSystem.Collections.Generic;ponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.T ext;usingSystem.Windows.Forms;namespace超市管理信息系统{publicpartialclassf_供应商基本信息:Form{//公有变量记录选定数据publicstringstrOldNO="";publicstringstrOldName="";publicstringstrOldAdd="";publicf_供应商基本信息(){InitializeComponent();privatevoidf_供应商基本信息_Load(objectsender,EventArgse){//TODO:这行代码将数据加载到表“连锁超市管理信息数据库DataSet.供应商”中。
超市系统的源代码
}//获得指定商品信息publicstaticString[]getRowStock(Stringid){String[]s=newString[6];1.DBUtil_SM.class自定义了各种对数据操作的静态方法,包括对各个数据库的增删改查,其中关于user表中的删除仅能由权限2以上的治理人员执行,代码如下(手工编写)packagepaim;importjava.sql.*;importjava.util.*;importjava.io.*;publicclassDBUtil_SM{//猎取用户信息publicstaticList<String[]>getVIPList(){ArrayList<String[]>vl=newArrayList<String[]>();try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","","");Statementst=con.createStatement();Stringsql="selectid,name,age,sex,workuntil,tel,lvl,totalfromVIP_IM";ResultSetrs=st.executeQuery(sql);while(rs.next()){String[]s=newString[8];for(inti=0;i<s.length;i++){s[i]=rs.getString(i+1);}vl.add(s);}rs.close();st.close();con.close();}catch(Exceptione){e.printStackTrace();}returnvl;}//猎取库存信息publicstaticList<String[]>getStockList(){ArrayList<String[]>sl=newArrayList<String[]>();try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","",""); Statementst=con.createStatement();Stringsql="selectid,name,price,count,vprice,typefromstockorderbytype"; ResultSetrs=st.executeQuery(sql);while(rs.next()){String[]s=newString[6];for(inti=0;i<s.length;i++){s[i]=rs.getString(i+1);}sl.add(s);}rs.close();st.close();con.close();}catch(Exceptione){e.printStackTrace();}returnsl;}//添加用户信息publicstaticvoidtoInsertID(String[]s){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","","");Statementst=con.createStatement();Stringsql="insertintoVIP_IMvalues('"+s[0]+"','"+s[1]+"','"+s[2]+"','"+s[3]+"','"+s[4]+"','"+s[5]+"','"+s[6]+"','"+s[7] +"')";st.executeUpdate(sql);st.close();con.close();}catch(Exceptione){e.printStackTrace();}}//删除用户信息publicstaticvoidtoDelID(Stringid){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","","");Statementst=con.createStatement();st.executeUpdate("deletefromVIP_IMwhereid='"+id+"'");st.executeUpdate("deletefromuserwhereid='"+id+"'");st.close();con.close();}catch(Exceptione){e.printStackTrace();}}//更新用户数据publicstaticvoidtoUpdateID(String[]s){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","","");Statementst=con.createStatement();Stringsql="updateVIP_IMsetname='"+s[1]+"',age="+s[2]+",sex='"+s[3]+"',workuntil='"+s[4]+"',tel='"+s[5]+"',lvl= '"+s[6]+"',total="+s[7]+"whereid='"+s[0]+"'";st.executeUpdate(sql);st.close();con.close();}catch(Exceptione){e.printStackTrace();}}//提取一个用户信息publicstaticString[]getRowID(Stringid){String[]s=newString[8];try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","","");Statementst=con.createStatement();ResultSetrs=st.executeQuery("selectid,name,age,sex,workuntil,tel,lvl,totalfromVIP_IMwhereid='"+id+"'");if(rs.next()){for(inti=0;i<s.length;i++){s[i]=rs.getString(i+1);}}rs.close();st.close();con.close();}catch(Exceptione){e.printStackTrace();}returns;}//删除库存信息publicstaticvoidtoDelStock(Stringid){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","","");Statementst=con.createStatement();st.executeUpdate("deletefromstockwhereid='"+id+"'");st.close();con.close();}catch(Exceptione){e.printStackTrace();}}//添加库存信息publicstaticvoidtoInsertStock(String[]s){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","","");Statementst=con.createStatement();Stringsql="insertintostockvalues('"+s[0]+"','"+s[1]+"','"+s[2]+"','"+s[3]+"','"+s[4]+"','"+s[5]+"')"; st.executeUpdate(sql);st.close();con.close();}catch(Exceptione){e.printStackTrace();}}//更新物品信息publicstaticvoidtoUpdateStock(String[]s){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","","");Statementst=con.createStatement();Stringsql="updatestocksetname='"+s[1]+"',price="+s[2]+",count="+s[3]+",vprice="+s[4]+",type='"+s[5]+"'wherei d='"+s[0]+"'";st.executeUpdate(sql);st.close();con.close();}catch(Exceptione){e.printStackTrace();}try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","","");Statementst=con.createStatement();ResultSetrs=st.executeQuery("selectid,name,price,count,vprice,typefromstockwhereid='"+id+"'");if(rs.next()){for(inti=0;i<s.length;i++){s[i]=rs.getString(i+1);}}rs.close();st.close();con.close();}catch(Exceptione){e.printStackTrace();}returns;}//用户登录publicstaticintgetUser(String[]k){String[]s=newString[4];inti=0;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","",""); Statementst=con.createStatement();ResultSetrs=st.executeQuery("selectid,name,lit,pswfromuserwhereid='"+k[0]+"'"); if(rs.next()){for(intj=0;j<s.length;j++){s[j]=rs.getString(j+1);}i=5;}else{returni;}if(k[1].equals(s[3])){if(s[2].equals("1")){i=1;}else{i=2;}}else{i=3;}rs.close();st.close();con.close();}catch(Exceptione){e.printStackTrace();}returni;}//修改密码publicstaticvoidtoUpdatePsw(String[]s){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","",""); Statementst=con.createStatement();Stringsql="updateusersetpsw='"+s[1]+"'whereid='"+s[0]+"'";st.executeUpdate(sql);st.close();con.close();}catch(Exceptione){e.printStackTrace();}}//猎取积分列表publicstaticList<String[]>getTotalList(){ArrayList<String[]>sl=newArrayList<String[]>();try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","",""); Statementst=con.createStatement();Stringsql="selectid,name,totalfromtotalorderbytotal";ResultSetrs=st.executeQuery(sql);while(rs.next()){String[]s=newString[3];for(inti=0;i<s.length;i++){s[i]=rs.getString(i+1);}}rs.close();st.close();con.close();}catch(Exceptione){e.printStackTrace();}returnsl;}//猎取商品积分publicstaticintgetTotalS(Stringid){intt=0;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","",""); Statementst=con.createStatement();Stringsql="selecttotalfromtotalwhereid='"+id+"'";ResultSetrs=st.executeQuery(sql);if(rs.next()){t=rs.getInt(1);}rs.close();st.close();con.close();}catch(Exceptione){e.printStackTrace();}returnt;}//猎取用户积分publicstaticintgetTotalV(Stringid){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","",""); Statementst=con.createStatement();Stringsql="selecttotalfromVIP_IMwhereid='"+id+"'";ResultSetrs=st.executeQuery(sql);if(rs.next()){t=rs.getInt(1);}rs.close();st.close();con.close();}catch(Exceptione){e.printStackTrace();}returnt;}//猎取积分商品名称publicstaticStringgetTotalName(Stringid){Stringt="";try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","",""); Statementst=con.createStatement();Stringsql="selectnamefromtotalwhereid='"+id+"'";ResultSetrs=st.executeQuery(sql);if(rs.next()){t=rs.getString(1);}rs.close();st.close();con.close();}catch(Exceptione){e.printStackTrace();}returnt;}//积分兑换表publicstaticvoidaddList(String[]s){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","","");Statementst=con.createStatement();Stringsql="insertintototallist(id,name,ltotal,tname,ttotal)values('"+s[0]+"','"+s[1]+"','"+s[2]+"','"+s[3]+"','"+s[4]+"') ";st.executeUpdate(sql);st.close();con.close();}catch(Exceptione){e.printStackTrace();}}//用户消费记录publicstaticList<String[]>getIDTotal(Stringid){ArrayList<String[]>sl=newArrayList<String[]>();try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","","");Statementst=con.createStatement();Stringsql="selectid,name,ltotal,tname,ttotalfromtotallistwhereid='"+id+"'";ResultSetrs=st.executeQuery(sql);while(rs.next()){String[]s=newString[5];for(inti=0;i<s.length;i++){s[i]=rs.getString(i+1);}sl.add(s);}rs.close();st.close();con.close();}catch(Exceptione){e.printStackTrace();}returnsl;}//用户账户插进publicstaticvoidtoInsertUser(String[]s){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","",""); Statementst=con.createStatement();Stringsql="insertintouservalues('"+s[0]+"','"+s[1]+"','"+s[2]+"','"+s[3]+"')"; st.executeUpdate(sql);st.close();con.close();}catch(Exceptione){e.printStackTrace();}}//积分物品添加publicstaticvoidaddTotal(String[]s){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","",""); Statementst=con.createStatement();Stringsql="insertintototalvalues('"+s[0]+"','"+s[1]+"','"+s[2]+"')";st.executeUpdate(sql);st.close();con.close();}catch(Exceptione){e.printStackTrace();}}//更新积分物品信息publicstaticvoidtoUpdateTotal(String[]s){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","",""); Statementst=con.createStatement();Stringsql="updatetotalsetname='"+s[1]+"',total='"+s[2]+"'whereid='"+s[0]+"'"; st.executeUpdate(sql);st.close();con.close();}catch(Exceptione){e.printStackTrace();}}//删除积分物品信息publicstaticvoidtoDelTotal(Stringid){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","",""); Statementst=con.createStatement();st.executeUpdate("deletefromtotalwhereid='"+id+"'");st.close();con.close();}catch(Exceptione){e.printStackTrace();}}//猎取积分列表publicstaticString[]getTotalListS(Stringid){String[]s=newString[3];try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:dbsm","","");Statementst=con.createStatement();Stringsql="selectid,name,totalfromtotalwhereid='"+id+"'";ResultSetrs=st.executeQuery(sql);while(rs.next()){for(inti=0;i<s.length;i++){s[i]=rs.getString(i+1);}}rs.close();st.close();con.close();}catch(Exceptione){e.printStackTrace();}returns;}}2.SMServlet.class用于响应jsp请求依据情况调用DBUtil_SM中的方法,返回结果,代码如下(手工编写)packagepaim;importjavax.servlet.*;importjavax.servlet..*;importjava.io.*;publicclassSMServletextendsServlet{@OverridepublicvoiddoGet(ServletRequestrequest,ServletResponseresponse)throwsIOException,ServletException {doPost(request,response);}@OverridepublicvoiddoPost(ServletRequestrequest,ServletResponseresponse)throwsIOException,ServletException {Stringaction=request.getParameter("action");if(action.equals("del_id"))//删除用户{Stringid=request.getParameter("id");DBUtil_SM.toDelID(id);request.getRequestDispatcher("/admin.jsp").include(request,response);}if(action.equals("add_id"))//添加用户{String[]s=newString[9];if(request.getParameter("id")!=null){s[0]=newString(request.getParameter("id").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("name")!=null){s[1]=newString(request.getParameter("name").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("age")!=null){s[2]=newString(request.getParameter("age").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("sex")!=null){s[3]=newString(request.getParameter("sex").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("workuntil")!=null){s[4]=newString(request.getParameter("workuntil").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("tel")!=null){s[5]=newString(request.getParameter("tel").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("lvl")!=null){s[6]=newString(request.getParameter("lvl").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("total")!=null){s[7]=newString(request.getParameter("total").getBytes("ISO8859_1"),"GB2312");}s[8]=newString(request.getParameter("psw").getBytes("ISO8859_1"),"GB2312");} String[]g=newString[2];g[0]=s[0];g[1]=s[8];if(DBUtil_SM.getUser(g)!=0)//返回0即不存在用户{request.getRequestDispatcher("/useradd.jsp?str=1").include(request,response);}else{String[]user=newString[4];user[0]=s[0];user[1]=s[1];user[2]="1";user[3]=s[8];DBUtil_SM.toInsertID(s);DBUtil_SM.toInsertUser(user);request.getRequestDispatcher("/admin.jsp").include(request,response);}}if(action.equals("update_id"))//修改用户信息{Stringlit=request.getParameter("lim");String[]s=newString[8];s[0]=request.getParameter("id");if(request.getParameter("name")!=null){s[1]=newString(request.getParameter("name").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("age")!=null){s[2]=newString(request.getParameter("age").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("sex")!=null){s[3]=newString(request.getParameter("sex").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("workuntil")!=null){s[4]=newString(request.getParameter("workuntil").getBytes("ISO8859_1"),"GB2312");} if(request.getParameter("tel")!=null){s[5]=newString(request.getParameter("tel").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("lvl")!=null){s[6]=newString(request.getParameter("lvl").getBytes("ISO8859_1"),"GB2312");}s[7]=newString(request.getParameter("total").getBytes("ISO8859_1"),"GB2312");} DBUtil_SM.toUpdateID(s);if(lit.equals("use"))//依据用户权限显示页面{request.getRequestDispatcher("/userlist.jsp?id="+s[0]).include(request,response);}else{request.getRequestDispatcher("/admin.jsp").include(request,response);}}if(action.equals("del_stock"))//删除物品{Stringid=request.getParameter("id");DBUtil_SM.toDelStock(id);request.getRequestDispatcher("/admin.jsp").include(request,response);}if(action.equals("add_stock"))//添加物品信息{String[]s=newString[6];if(request.getParameter("id")!=null){s[0]=newString(request.getParameter("id").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("name")!=null){s[1]=newString(request.getParameter("name").getBytes("ISO8859_1"),"GB2312");} if(request.getParameter("price")!=null){s[2]=newString(request.getParameter("price").getBytes("ISO8859_1"),"GB2312");} if(request.getParameter("count")!=null){s[3]=newString(request.getParameter("count").getBytes("ISO8859_1"),"GB2312");} if(request.getParameter("vprice")!=null){s[4]=newString(request.getParameter("vprice").getBytes("ISO8859_1"),"GB2312");} if(request.getParameter("type")!=null){s[5]=newString(request.getParameter("type").getBytes("ISO8859_1"),"GB2312");} DBUtil_SM.toInsertStock(s);request.getRequestDispatcher("/admin.jsp").include(request,response);}if(action.equals("update_stock"))//修改物品信息{if(request.getParameter("id")!=null){s[0]=newString(request.getParameter("id").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("name")!=null){s[1]=newString(request.getParameter("name").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("price")!=null){s[2]=newString(request.getParameter("price").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("count")!=null){s[3]=newString(request.getParameter("count").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("vprice")!=null){s[4]=newString(request.getParameter("vprice").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("type")!=null){s[5]=newString(request.getParameter("type").getBytes("ISO8859_1"),"GB2312");} DBUtil_SM.toUpdateStock(s);request.getRequestDispatcher("/admin.jsp").include(request,response);}if(action.equals("login"))//登陆验证{String[]k=newString[2];k[0]=request.getParameter("id");k[1]=request.getParameter("psw");inti=DBUtil_SM.getUser(k);if(i==1)//判定是否为用户{request.getRequestDispatcher("/userlist.jsp?id="+k[0]+"&&lim=use").forward(request,response); }if(i==0||i==5||i==3)//用户名不存在密码错误{request.getRequestDispatcher("/login.jsp?str=9").include(request,response);}if(i==2)//治理员跳转{request.getRequestDispatcher("/admin.jsp").include(request,response);}}if(action.equals("password"))//密码修改{k[0]=request.getParameter("id");k[1]=request.getParameter("opsw");String[]s=newString[2];s[0]=k[0];s[1]=request.getParameter("npsw1");inti=DBUtil_SM.getUser(k);if(i==1){DBUtil_SM.toUpdatePsw(s);request.getRequestDispatcher("/userlist.jsp?id="+s[0]+"&&lim=use").forward(request,response); }if(i==0||i==5||i==3){request.getRequestDispatcher("/update.jsp?id="+s[0]+"&&str=9").include(request,response);}if(i==2){DBUtil_SM.toUpdatePsw(s);request.getRequestDispatcher("/admin.jsp").include(request,response);}}if(action.equals("total"))//兑换积分积分余额积分消费判定操作{String[]id=newString[2];id[0]=request.getParameter("id");id[1]=request.getParameter("tid");int[]t=newint[5];t[0]=DBUtil_SM.getTotalV(id[0]);t[1]=DBUtil_SM.getTotalS(id[1]);t[3]=t[0]-t[1];Stringtname=DBUtil_SM.getTotalName(id[1]);String[]sl=DBUtil_SM.getRowID(id[0]);String[]ll=newString[6];if(t[3]<0){request.getRequestDispatcher("/total.jsp?id="+id[0]+"&&str=1").forward(request,response);}else{sl[7]=Integer.toString(t[3]);ll[0]=sl[0];ll[1]=sl[1];ll[2]=Integer.toString(t[3]);ll[3]=DBUtil_SM.getTotalName(id[1]);ll[4]=Integer.toString(t[1]);DBUtil_SM.addList(ll);DBUtil_SM.toUpdateID(sl);request.getRequestDispatcher("/total.jsp?id="+id[0]).forward(request,response);}}if(action.equals("addtotal"))//添加积分物品{String[]s=newString[3];if(request.getParameter("id")!=null){s[0]=newString(request.getParameter("id").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("name")!=null){s[1]=newString(request.getParameter("name").getBytes("ISO8859_1"),"GB2312");} if(request.getParameter("total")!=null){s[2]=newString(request.getParameter("total").getBytes("ISO8859_1"),"GB2312");} DBUtil_SM.addTotal(s);request.getRequestDispatcher("/admin.jsp").include(request,response);}if(action.equals("del_total"))//删除积分物品{Stringid=request.getParameter("id");DBUtil_SM.toDelTotal(id);request.getRequestDispatcher("/admin.jsp").include(request,response);}if(action.equals("totalupdate"))//积分物品修改{String[]s=newString[3];if(request.getParameter("id")!=null){s[0]=newString(request.getParameter("id").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("name")!=null){s[1]=newString(request.getParameter("name").getBytes("ISO8859_1"),"GB2312");}if(request.getParameter("total")!=null){s[2]=newString(request.getParameter("total").getBytes("ISO8859_1"),"GB2312");}DBUtil_SM.toUpdateTotal(s);request.getRequestDispatcher("/admin.jsp").include(request,response);}}}3.Web.xml为配置文件代码如下(自动生成后添加参数)<?xmlversion="1.0"encoding="ISO-8859-1"?><web-appxmlns="://java.sun/xml/ns/javaee"xmlns:xsi=":///2001/XMLSchema-instance"xsi:schemaLocation="://java.sun/xml/ns/javaee://java.sun/xml/ns/javaee/web-app_2_5.xsd"version="2.5"><display-name>SuperMarket</display-name><description>SuperMarket</description><servlet><servlet-name>SMServlet</servlet-name><servlet-class>paim.SMServlet</servlet-class></servlet><servlet-mapping><servlet-name>SMServlet</servlet-name><url-pattern>/SMServlet</url-pattern></servlet-mapping><welcome-file-list><welcome-file></welcome-file></welcome-file-list></web-app>4.Admin.jsp文件为治理员治理模块的主界面,代码如下(HTML格式为自动生成,jsp 代码为手工编写)<%@pagecontentType="text/html;charset=gbk"import="paim.DBUtil_SM,java.util.*"%><head><linkrel="stylesheet"type="text/css"></head><bodybgcolor="#FFFFFF"><palign="center"><strong>用户信息治理</strong><%request.setCharacterEncoding("GBK");response.setCharacterEncoding("GBK");List<String[]>vl=DBUtil_SM.getVIPList();List<String[]>sl=DBUtil_SM.getStockList();List<String[]>tl=DBUtil_SM.getTotalList();%><tableborder=1borderColorDark=#ffffecborderColorLight=#5e5e00cellPadding=1cellSpacing=0width=100% ><trbgcolor=ccccccalign=center><td>用户名</td><td>年龄</td><td>性不</td><td>工作单位</td><td>联系方式</td><td>会员等级</td><td>积分</td><tdcolspan="2">治理</td></tr><%for(String[]s:vl){if(s[4]==null||s[4].equals("")){s[4]="暂无信息";}if(s[5]==null||s[5].equals("")){s[5]="暂无信息";}%><tralign="center"><td><ahref="userlist.jsp?id=<%=s[0]%>"><%=s[1]%></a></td><td><%=s[2]%></td><td><%=s[3]%></td ><td><%=s[4]%></td><td><%=s[5]%></td><td><%=s[6]%></td><td><%=s[7]%></td> <td><ahref="update.jsp?id=<%=s[0]%>&&lit=5">修改</a></td><td><ahref="SMServlet?action=del_id&&id=<%=s[0]%>">删除</a></td></tr>}%></table><palign="right"><ahref="useradd.jsp">添加用户</a><palign="center"><strong>库存信息治理</strong><tableborder=1borderColorDark=#ffffecborderColorLight=#5e5e00cellPadding=1cellSpacing=0width=100% ><trbgcolor=ccccccalign=center><td>商品编号</td><td>名称</td><td>价格</td><td>会员价</td><td>类型</td><td>库存</td><tdcolspan="2">治理</td></tr><%for(String[]s:sl){%><tralign=center><td><%=s[0]%></td><td><%=s[1]%></td><td><%=s[2]%></td><td><%=s[4]%></td><td><%=s[5]%></t d><td><%=s[3]%></td><td><ahref="stockupdate.jsp?id=<%=s[0]%>">修改</a></td><td><ahref="SMServlet?action=del_stock&&id=<%=s[0]%>">删除</a></td></tr><%}%></table><palign="right"><ahref="stockadd.jsp">添加物品</a><palign="center"><strong>积分物品信息治理</strong><tableborder=1borderColorDark=#ffffecborderColorLight=#5e5e00cellPadding=1cellSpacing=0width=100% ><trbgcolor=ccccccalign=center><td>编号</td><td>物品</td><td>所需积分</td><tdcolspan="2">治理</td></tr><%for(String[]s:tl){%>。
超市商品管理系统(含附源代码)(20200701103200)
黔南民族师范学院软件设计课程设计报告题目超市商品管理系统系部名称:计科系专业名称:信息管理与信息系统班级:学号:B12计信班1208045139学生姓名:胡崇祯指导教师:黄茹时间:2013年11月9日至2013年12月8日、课程设计目的1. 通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固《 C 语言程序设计》课程学习的内容,掌握工程软件设计的基本方法。
2. 学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。
3. 为后续各门计算机课程的学习打下坚实基础。
4. 为毕业设计和以后工作打下必要基础。
二、课程设计内容1. 编写程序并进行调试运行。
2. 输入商品信息,并保存于文件。
每个商品信息包含信息如:库存量、进价、售价、保质期、生产商等。
3. 对已存入的商品信息进行更新操作,包括添加一个商品信息、删除某个商品信息和修改某个商品信息。
4. 通过输入商品名、商品号、商品类型的方式查询商品信息。
5. 最后输出商品信息,供需要时打印。
三、需求分析1. 该程序可用于对商品基本信息的存储、更新、查询、排序、输出等操作,以实现对商品信息的管理。
2. 其中更新功能包括:添加信息、删除信息、修改信息、可根据需要添加一个或多个商品信息,也可对个别商品信息进行适当的删除或修改。
以便随时更新商品信息。
3. 程序中设计的查询功能可根据需要从若干数据中查询某个商品信息,并且可根据三种不同的方法查询:按商品号查询、按商品类型和按商品查询,以满足不同的需要。
四、概要设计1、方案设计对系统进行分析,给出结构图分析:系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计—自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计结构图如下:2、模块功能说明(对各个模块进行功能的描述)(1) .输入模块:录入需要管理的商品信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。
VB精典实用源代码(详细))
个人收藏的VB精典实用源代码。
若朋友您想要问如何才能学好vb,或者入门需要看什么教材一类的问题,建议你抱着一颗刻苦钻研的心去面对这门学问,多动脑,少提问,遇到不知道的,多查资料,多看看帖子,或者用断点来亲自试验。
实在不会了,请在此贴中查找您的常见问题,如果还没有,那请您发出新贴,向各位高手讨教:)查找方法:按ctrl+f,输入要查找的问题关键字即可每个问题中间用///分隔,这只是一部分最常见到的问题,以后会逐渐更新。
////////////////////////////////////////////////////////////////////////////////////如何用VB建立快捷方式Private Declare Function fCreateShellLink Lib "STKIT432.DLL" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArgs As String) As LongSub Command1_Click()Dim lReturn As Long'添加到桌面lReturn = fCreateShellLink("..\..\Desktop", "Shortcut to Calculator", "c:\windows\calc.exe", "")'添加到程序组lReturn = fCreateShellLink("", "Shortcut to Calculator", "c:\windows\calc.exe", "")'添加到启动组lReturn = fCreateShellLink("\Startup", "Shortcut to Calculator", "c:\windows\calc.exe", "")End Sub////////////////////////////////////////////////////////////////////////////////////如何让程序在Windows 启动时自动执行?有以下二个方法:方法1: 直接将快捷方式放到启动群组中。
VB(仓库管理系统源代码)
1。
请购作业程序Private Sub ComCX_Click()’查询’在”编号”文本框中输入编号,连接数据库,查询编号,并将"编号",”品名”,”规格","单位”,"单价"的数据分别导入到相应文本框。
Set CN = New ADODB。
ConnectionSet Rs = New ADODB。
RecordsetCN。
Open "Provider=Microsoft。
Jet。
OLEDB.4。
0;Data Source=”&"F:\VB设计专用\仓库数据资料\仓库数据资料。
mdb;Persist Security Info=False"'打开数据库Rs.CursorType = adOpenStatic ’制定一个静态游标Rs.LockType = adLockOptimistic ’设置锁定模式为开放式Rs.Open "select *from JLBH where FtextBHSJ Like’" & ”%” & Trim(textBHSJ。
Text)& ”%” &”’”, CNDoEventsDo Until Rs。
EOF = TrueIf Rs.EOF = False ThenlistBHSJ1.AddItem (Rs。
Fields(0))listPMSJ1。
AddItem (Rs。
Fields(1))listGGSJ1.AddItem (Rs。
Fields(2))listDWSJ1。
AddItem (Rs。
Fields(3))listDJSJ1。
AddItem (Rs.Fields(4))Rs.MoveNextEnd IfLoopEnd SubPrivate Sub comFHZY_Click()’返回上页frmQGZY.HidefrmCKGLXT。
超市管理系统源程序
超市管理系统源程序#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%s%s%8d%15%-%2d-%2d%10d\n",goods[i].num,goods [i].name,goods[i].kind,goods[i].out_price,goods[i].pro_t ime.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 kind[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;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 第%d种商品",i+1);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("%s",&goods[i].amout);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);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_tim e.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_t ime.month,&goods[i].pro_time.date);printf("\n 生产厂家:");scanf("%s",goods[i].factory);printf("\n 保质期:");scanf("%s",goods[i].save_day);i++;}while(i<MAX);printf("\n --%d种商品信息输入完毕!--\n",i);sum=i;printf("\n 按任意键返回主菜单!");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);}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("按任意键返回主菜单!");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("\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);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);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_tim e.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_t ime.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();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() /*修改模块*/{int i=0,choice,revise_num,flag;do{clrscr();printf("\n 输入要修改的商品号:");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.名称 \n");printf("\n 2.种类 \n");printf("\n 3.销售价格\n");printf("\n 4.生产日期\n");printf("\n 5.保质期 \n"); printf("\n 请选择(1-5)\n");scanf("%d",&choice);switch(choice){case 1;printf("\n 输入修改后的名称:");scanf("%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;case 4;printf("\n 输入修改后的生产日期:");scanf("%d-%d-%d",&goods[i].pro_time.year,&goods[i].pro_t ime.month,&goods[i].pro_time.date);break;case 5;printf("\n 输入修改后的保质期:");scanf("%s",&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 按任意键返回主菜单!");bioskey(0);}renew_message() /*更新模块*/int 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(" 请选择(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 : break;}}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<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_count_time(){;}inquire_message() /*查询模块*/{int 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(" 请选择(0-3) ");scanf("%d",&choice);switch(choice){case 2 : inquire_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 输入要统计的商品号:");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 商品利润 ");printf("\n -------------------\n ");printf("\n 商品号利润 ");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 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(" 请选择(0-3):");switch(choice){case 1 : count_profit() ;break;case 2 : count_in_amount() ;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");printf("----------------------------\n");printf("\n 排名商品号商品名称商品类别库存量\n"); p=goods;for(i=0;i<sum;i++)q[i]=p++;for(i=0;i<sum;i++){k=i;if(q[k]->amount<q[j]->amount)k=j;if(k!=i){p=q[i];q[i]=q[k];q[k]=p;}}for(i=0;i<sum;i++)printf("\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();********\n\n");printf(" 1.库存量排行\n\n");printf(" 2.利润排行\n\n"); printf(" 3.销售量排行\n\n");printf(" 0.返回主菜单\n\n");printf(" 请选择(0-3)\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;}}while(choice!=0);}main() /*主程序*/{int choice;sum=read_message();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-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");}。