超市管理系统完整源代码.pdf

上传人:l*** 文档编号:72542578 上传时间:2023-02-12 格式:PDF 页数:33 大小:410.07KB
返回 下载 相关 举报
超市管理系统完整源代码.pdf_第1页
第1页 / 共33页
超市管理系统完整源代码.pdf_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《超市管理系统完整源代码.pdf》由会员分享,可在线阅读,更多相关《超市管理系统完整源代码.pdf(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、有一个小型超市,出售 N(N10)种商品,设计并实现一个系统,完毕下列功能:1 保存及输出。超市中的各种商品信息保存在指定文献中,可以把它们输出显示。2 计算并排序。计算每类商品的总价值(sum,单精度)及平均价(aver,单精度,输出一位小数),将每类商品按平均价从大到小的顺序排序打印出来。3 记录。记录输出库存量低于 100 的货号及类别。记录输出有两种以上(含两种)商品库存量低于 100 的商品类别。1.2 总体结构本程序重要分为八个模块:主模块、信息输出修改模块、新建信息模块、排序模块、计算模块、记录模块 1、记录模块 2、打印模块。1)主模块:通过调用各分模块实现功能;2)信息输出修

2、改模块:输出显示文献中商品信息内容,添加商品信息,删除商品信息,修改商品信息;3)新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息保存在指定的文献中;4)排序模块:把文献中顺序零乱的商品信息按单价的大小从高到低进行排序,放到链表里存储;5)计算模块:将所有商品的价格与库存量进行累加求和;6)打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来;7)记录模块 1:记录库存量低于 100 的货名及类别;8)记录模块 2:记录商品库存量有 2 种以上(含 2 种)低于 100 的商品类别。附录(程序清单)#include stdio.h/*输入,输出头文献*/#includ

3、e stdlib.h/*申请空间头文献*/#include string.h/*对字符串加工头文献*/#include conio.h/*清屏头文献*/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

4、name20;/*商品名称*/char kind40;/*商品类型*/float price;/*商品价格*/char unit10;/*商品单位*/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)

5、;/*结束程序*/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%

6、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(_nn);fprintf(fp,%d,-1);fc

7、lose(fp);return head1;/*返回头指针*/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,p1-unit,p1-quantity);/*将商品信息写入文献*/p1-next=NULL;p2-next=p1;p2=p1;struct good*paixu(struct good*head2)/*链表排序函数*/struct good*p6,*p

8、7,*r,*s;/*定义结构体指针类型*/for(i=0;inext=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

9、;free(p6);/*释放第一个无效空间*/return head2;void jisuan()p1=head;doif(strcmp(p1-kind,c)=0)/*判断是否为电器类型*/sum0=sum0+(p1-price)*(p1-quantity);/*求电器总价*/a0=a0+p1-quantity;/*求电器总件数*/if(strcmp(p1-kind,d)=0)/*判断是否为日用品类型*/sum1=sum1+(p1-price)*(p1-quantity);/*求日用品总价*/a1=a1+p1-quantity;/*求日用品总件数*/if(strcmp(p1-kind,e)=0

10、)/*判断是否为办公用品类型*/sum2=sum2+(p1-price)*(p1-quantity);/*求办公用品总价*/a2=a2+p1-quantity;/*求办公用品总件数*/if(strcmp(p1-kind,f)=0)/*判断是否为食品类型*/sum3=sum3+(p1-price)*(p1-quantity);/*求食品总价*/a3=a3+p1-quantity;/*求食品总件数*/p1=p1-next;while(p1!=NULL);/*遍历链表结束条件*/for(i=0;inum,p3-name,p3-kind,&p3-price,p3-unit,&p3-quantity);

11、/*从文献中写到链表*/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;elsep3-next=NULL;break;fclose(fp);/*关闭文献*/p3=head;while(p3!=NULL)p

12、rintf(%d%s%s%0.1f%s%dnn,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(请

13、输入商品 编号名称类型价格单位数目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(

14、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

15、);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);/*释放空间*/elsep4=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)

16、=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)

17、;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

18、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

19、 继续修改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(%dt%st%st%0.1ft%st%dn,p3-num,

20、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(%dt%st%st%0.1ft%st%dn,p3-num,p3-name,p3-kind,p3-price,

21、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(%dt%st%st%0.1ft%st%dn,p3-num,p3-name,p3-kind,p3-price,p3-unit,p3-quantity);/

22、*输出办公用品类商品信息*/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(%dt%st%st%0.1ft%st%dn,p3-num,p3-name,p3-kind,p3-price,p3-unit,p3-quantity);/*输出食品类商品信息*/printf(_n);p3

23、=p3-next;return;void shunxudayin()for(i=0;i4;i+)gi=averi;/*将平均价赋给新数组*/for(j=0;j3;j+)/*将新数组用冒泡排序法排序*/for(i=j+1;i4;i+)if(gjgi)h=gj;gj=gi;gi=h;printf(n*n);printf(商品平均价格排序表(从高到低)n);printf(*n);printf(_n);printf(编号t 名称t 类别t 单价t 单位t 数量n);printf(_n);for(j=0;j4;j+)for(i=0;iquantityname,p1-kind);/*输出商品名称及类别*/

24、printf(_n);p1=p1-next;void tongji2()printf(n*n);printf(商品库存量有 2 种以上(含 2 种)低于 100 的商品类别:n);printf(*n);printf(_n);if(a0=2)/*判断电器类库存量是否为 2 种以上(含 2 种)低于 100*/printf(电器n);printf(_n);if(a1=2)/*判断日用品类库存量是否为 2 种以上(含 2 种)低于 100*/printf(日用品n);printf(_n);if(a2=2)/*判断食品类库存量是否为 2 种以上(含 2 种)低于 100*/printf(食品n);pr

25、intf(_n);if(a3=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);prin

26、tf(*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();tongji2();if(m=4)p1=head;while(p1!=NULL)p2=p1-next;free(p1);p1=p2;break;/*调用记录 1 函数*/*调用记录 2 函数*/*判断遍历链表结束条件*/*释放空间*/return 0;/*结束程序*/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁