




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序设计一一超市管理系统学院:专业:班级:姓名:学号:指导老师:超市管理系统课程设计1)需求分析:设计题目:超市管理系统设计要求:有一个小型超市,出售N (N = 10)种商品,设计并实现一个系统 系统功能需求分析:1. 保存及输出:超市中的各种商品信息保存在指定文件中,可以把它们输出显示。2. 计算并排序:计算每类商品的总价值(sum,单精度)及平均价(aver,单精度, 输出一位小数),将每类商品按平均价从大到小的顺序排序打印出来。3. 统计:统计输出库存量低于100的货号及类别。统计输出有两种以上(含两种) 商品库存量低于100的商品类别。2)概要设计:系统总体设计框架:系统功能模块图:
2、3)详细设计:主要功能模块的算法设计思路:本程序主要分为八个模块:主模块、信息输 出修改模块、新建信息模块、排序模块、计算模块、统计模块1、统计模块2、 打印模块。1)主模块:通过调用各分模块实现功能;2)信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删 除商品信息,修改商品信息;3)新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息 保存在指定的文件中;4)排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排 序,放到链表里存储;5)计算模块:将所有商品的价格与库存量进行累加求和;6)打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出 来;7)
3、统计模块1:统计库存量低于100的货名及类别;8)统计模块2:统计商品库存量有2种以上(含2种)低于100的商品类 别工作流程图:4)主要源程序代码:#include stdio. h ttinclude stdlib. h ttinclude string, h/*输入,输出头文件*/*申请空间头文件*/*对字符串加工头文件*/include conio. h/*清屏头文件*/FILE *fp;int n二0;/*定义文件指针类型*/int i, j, a4,m;/*定义整数类型*/float aver4, sum4, g4, h;/*定义浮点类型*/char c5二elec char d二
4、comm char e5二food char f二offistruct good/*定义结构体*/int num; char name20; char kind40Z; float price; char unit10Z; int quantity;/*商品编号*/*商品名称*/*商品类型*/*商品价格*/*商品单位*/*商品数量*/struct good *next;/*定义结构体指针类型*/*定义字符数组类型*/ /*定义字符数组类型*/ /*定义字符数组类型*/ /*定义字符数组类型*/ *head, *pl, *p2;struct good *createlist()/*创建链表函数*
5、/struct good *headl, *pl, *p2;/*定义结构体指针类型*/if (fp二fopen (goods message, txt, w)二二NULL)/*判断能否打开文件*/printf(,?can not open the file);exit(0);/*结束程序*/headl= (struct good *)malloc(sizeof (struct good) :/*申请头结点空间*/pl=headl;p2=headl;printf(*n) printf请输入信息:编号,名称,类型,价格,单位,数目n); printf C(以输入“一1”表示结束输入)n);prin
6、tf (*n) printf Cn);9scanf (,z%d %s %s %f %s %dz/, &pl-num, pl-naine, pl-kind, &pl-price, pl-u nit, &pl-quantity) ;/*输入商品信息*/printf CrT);pl-next二NULL;fprintf (fp,,z%d %s %s %f %s %d、pl-num, pl-name, pl-kind, pl-price, pl-unit, pl-quantity); /*将商品信息写入文件*/while pl= (struct good *)malloc(sizeof(struct g
7、ood): 新空间*/printf(*n) printfC请输入信息:编号,名称,类型,价格,单位,数目n); printf C(以输入“一1”表示结束输入)n);printf(*n)* printf (”n”);scanf&pl-num);if(pl-num=-l)/*申请/*申请空间结束条件*/printf Cfprintf(fp, %d, -1); fclose(fp);return headl;nn,z);/*返回头指针*/scanf C%s %s %f %spl-name, pl-kind, &pl-price, pl-unit, &pl-quant辻y) ; /*输入商品信息*/p
8、rintf Cn”);fprintf (fp,,z%d %s %s %f %s %d、pl-num, pl-name, pl-kind, pl-price, pl-unit, pl-quantity); /*将商品信息写入文件*/pl-next二NULL;p2-next=pl;p2=pl;struct good *paixu(struct good*head2)/*链表排序函数*/struct good *p6,*p7, *r, *s;/*定义结构体指针类型*/for (i二0 ;i0;sumi=0;averti=0;p6= (struct good *)malloc(sizeof (stru
9、ct good) ;/*申请新空间/p6-next二head2;head2=p6;while (p6-next!二 NULL)/* 判断循环结束条件*/p7=p6-next;r 二 p6;while (p7-next!二 NULL)/* 判断循环结束条件*/if (p7-nextpr ice) (rnextprice)/* 判断是否调换*/r=p7;p7=p7-next;if (p6!二r)/*判断循环结束条件*/s=r-next:/* 指针调换*/r-next=snext;s-next二p6-next;p6-next=s;p6二p6-next;p6=head2;head2=head2next
10、;free (p6) ;/*释放第一个无效空间*/return head2;void jisuan()pl=head;doif (strcmp (pl-kind, c)=0)/*判断是否为电器类型*/sum0=sum0 +(pl-price)*(pl-quantity) ;/*求电器总价*/a 0 =a LOj+pl-quantity;/* 求电器总件数*/if (strcmp (plkind, d)=0)/*判断是否为日用品类型*/suml=suml + (pl-price) * (pl-quantity) ;/*求日用品总价*/al=alj+pl-quantity;/*求日用品总件数*/i
11、f (strcmp (pl-kind, e)=0)/*判断是否为办公用品类型*/sum2=sum2 + (pl-price) * (pl-quantity) ;/*求办公用品总价*/a 2 =a 2 +p l-quant i ty;/* 求办公用品总件数*/if (strcmp (pl-kind, f)=0)/*判断是否为食品类型*/sum3=sum3 + (pl-price)*(pl-quantity) ;/*求食品总价*/a3=a3+pl-quantity;/*求食品总件数 */pl=plnext;while (pl!二NULL);/*遍历链表结束条件*/for(i=0;inum, p3-
12、name, p3-kind, &p3-price, p3-unit, &p3-quantity);/*从文件中写到链表*/while (1)p4= (struct good *)malloc(sizeof (struct good) ;/*申请头结点空间*/fscanf(fp, %d ”, &p4num);if (p4-num!=-l)/*判断循环结束条件*/fscanf (fp,,z%s %s %f %s %d、p4-name, p4-kind, &p4-price, p4-unit, &p4-quantity) ; /*从文件中写 到链表*/p4-next二NULL;p3-next二p4;
13、p3=p4;elsep3-next二NULL; break;/*关闭文件*/fclose (fp);p3=head;while(p3!=NULL)printf C %d %s %s %0. If %s %dnn,?, p3-num, p3-name, p3-kind, p3-price, p3-unit, p3-quantity);printf Cn”); p3二p3-next;printf C7/);while(n!=4)p3=head;printf Cl添加商品信息n);11printf C2删除某商品信息n,z);printf r3修改某商品信息n);printfC4返回(当你完成了对某
14、一商品的添加、删除或者修改后请按scanf &n);if(n=l)/*添加商品信息*/printf C请输入商品编号 名称 类型 价格 单位 数口);p4= (struct good *)malloc(sizeof(struct good);/*申请空间scanf (,z%d %s %s %f %s %d,z, &p4-num, p4-name, p4-kind, &p4-price, p4-u nit, &p4-quantity) ;/*输入商品信息*/p4-next二NULL;while (p3-next! =NULL)/ *判断循环结束条件*/p3二p3-next;p3-next=p4;
15、p3二head;if (fp=fopen(goods message, txt, w) =NULL)/*判断能否打开文件*/printfCcan not open the file);exit(O) ;/*结束程序*/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 (,z*nz/);请按4返回pri
16、ntf (”n”);printf C请按 4 返回n0 ;printf (n”);printf (,z*nz/);/*删除商品*/if (n=2)printf (z/*n,z); printf r请输入需要删除的商品编号n);printf (z/*n,z); scanf(%d, &p);printf *n);printfCl确认删除n2取消删除n);printf (z/*n,z);scanf(%d, &r);if (r=l)if(head-num)二二p)head二head-next;free (p3) ;/*释放空间*/elsep4=head;p3=p4-next;while (p3!=NU
17、LL)/*判断循环结束条件*/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(,zcan not open the file);exit(O) ;/*结束程序*/p3二head;while (p3!=NULL)/*判断循环结束条件*/fprintf (fp,,z%d %s %s %f %s %d、p3-num, p3-name, p3-kind, p3-pr
18、ice, p3-unit, p3-quantity); /*将商品信息写入文件*/p3二p3-next;fprintf(fp, %d, -1);fclose(fp) ;/*关闭文件*/if (r=2)continue;/* 继续循环*/printf CrT);printf C请按 4 返回n);printf Cn);辻(n=3)/*修改某商品信息*/printfC请输入需要修改的商品编号);scanf (%d, &q);while (p3!二NULL)/*判断循环结束条件*/if (p3-num) =q)/*判断是否为所需要修改的商品*/printff请输入商品单价与库存量(如果单价不变请输入
19、原来的单 价)n);scanf (,z%f %dz/, &p3-price, &p3-quantity) ;/*输入商品价格与库存量*/p3二p3-next;if (fp二f open (goods message, txt, w) =NULL)/*判断能否打开文件*/printf(/zcan not open the file);exit(O) ;/*结束程序*/p3二head;while (P3!=NULL)/*判断循环结束条件权fprintf (fp,,z%d %s %s %f %s %d、p3-num, p3-name, p3-kind, p3-price, p3-unit, p3-q
20、uantity);/*将商品信息写入文件*/p3二p3-next;/*关闭文件*/printf (,zrT);printf C请按4返回printf Cnz,);辻(n=4)/*退岀*/fprintf(fp, %d, 1); fclose (fp);break;printf (z/*n);printf Cl 继续修改nn2 返回n);printf (,z*nz/);15C 黠洋设计试思scanf(%d, &p); if(p=l) continue;if (p=2)break;while(n!=2); fclose (fp);/*继续循环*/*跳出循环*/*关闭文件*/void printfO(
21、struct good *p)/*遍历链表并打印电器类商品函数*/struct good *p3;/*定义结构体指针类型*/p3 二p;while (p3!二NULL)/*判断遍历链表循环结束条件*/if (strcmp (p3-kind, c)=0)/*判断商品类型是否为电器类型*/printf (z/%dt%st%st%0. lft%st%dn,z, p3-num, p3name, p3-kind, p3-pr ice, p3-unit, p3quantity) ;/*输出电器类商品信息*/printf CrT);p3二p3-next;return;void printfl (struct
22、 good *p)/*遍历链表并打印日用品类商品函数*/struct good *p3;/*定义结构体指针类型*/p3 二p;while (p3! =NULL)/*判断遍历链表循环结束条件*/if (strcmp(p3-kind, d)=0)/*判断商品类型是否为日用品类型*/printf (z/%dt%st%st%0. lft%st%dn,) p3-num, p3-name, p3-kind, p3-pr ice, p3-unit, p3quantity) ;/*输出日用品类商品信息水/printf (“n);p3二p3-next;return;void printf2(struct goo
23、d *p)/*遍历链表并打印办公用品类商品函数*/struct good *p3;/*定义结构体指针类型*/p3 二p;while (p3! =NULL)/*判断遍历链表循环结束条件*/if (strcmp(p3-kind, e)=0)/*判断商品类型是否为办公用品类型*/printf (z/%dt%st%st%0. lft%st%dnz,, p3num, p3name, p3-kind, p3-pr ice, p3-unit, p3-quantity) ;/*输出办公用品类商品信息水/printf (“n);p3=p3-next;return;void printf3(struct good
24、 *p)/*遍历链表并打印食品类商品函数*/struct good *p3;/*定义结构体指针类型*/p3 二p;while (p3! =NULL)/*判断遍历链表循环结束条件*/if (strcmp(p3-kind, f)=0)/*判断商品类型是否为食品类型*/printf (,z%dt%st%st%0. lft%st%dnz,, p3-num, p3name, p3-kind, p3-pr ice, p3unit, p3quantity) ;/*输出食品类商品信息*/printf (n);p3=p3-next;return;17void shunxudayinOfor(i=0;i4;i+)
25、 gi=averiZ;for(j=0;j3;j+) for(i=j+l;i4;i+)/*将平均价赋给新数组*/*将新数组用冒泡排序法排序*/h=gj;gj=gi;gi=h;printf ( /n*n,); printff商品平均价格排序表(从高到低)n); printf (z/*nz);printf (”printf C编号t名称t类别t单价t单位t数量n); printf (”for(j=0;j4;j+)for(i=0;iquantityname, pl-kind) ; /*输岀商品名称及类别*/printf Cn”);pl二pl-next;void tongji2 () printf (食
26、品n);printf C商品库存量有2种以上(含2种)低于100的商品类别:rT);printf Cn);i f (a 0 =2)器类库存量是否为2种以上(含2种)低于100*/printf (电器n);printf (n);if(al=2)用品类库存量是否为2种以上(含2种)低于100Vprintf C 日用品 n);printf Cn);if (a 2 =2)品类库存量是否为2种以上(含2种)低于100*/*判断电/*判断日/*判断食printf Cn);/*判断办if (a 3 =2)公用品类库存量是否为2种以上(含2种)低于100*/ printf C办公用品n);printf Cn)
27、;int main(int argc, char* argv)struct good *pl,*p2;/*定义结构体指针类型*/while (1)重新输入新信息(并且删除原有信息)pp intf (*n) printffl输出查看或者修改已存信息n) printf Cn) printf C2 重新输入新信息(并且删除原有信息)n) printf Cn)printfC3统讣商品信息(如果您还没有查看过信息请先按1);W);W);printf Cprintf (4退出scanf (,z%dz/, &m);if (ml)shuchu() ;/*调用输岀信息函数*/*调用建立链表函数*/if (m=2
28、)systemCzcls,z); head=createlist (); if (m 二二 3)printf r统计结果如下);head=paixu(head); jisuanO ; shunxudayinO ; tongji 1(); tongji2();/*调用链表排序函数*/*调用计算函数*/*调用顺序打印函数*/*调用统计1函数*/*调用统计2函数水/辻(m4)pl二head;while (pl!二NULL)/*判断遍历链表结束条件*/p2=pl-next;free (pl);/* 释放空间*/pl二p2;break;return 0;/*结束程序*/5)调试分析过程描述:测试数据:0
29、1 ndlk drink 2. 5 box 502 apple fruit 3 kilo 2测试输出结果:g D: UserDartaA桌面Debugl. eze*1输出查看或者修改已存信息,二二董両丽責融丽看蕊二二3统计商品信息如杲您还役有查看过信息请先按1)退出-k输出查看或者修改己存信息: 重新输入新信息(芳且删除原有信息) :廳襦W看廡派癌扁玉看耳看直看元籤孑退出 所須商品信息:名称,类型,价格,单位,数目MMMMXXMMXM仔1 milk drink 2.5 box 5自心自心成 息信.完 信品品你 品商商当 橐某 加除改 添删修删除或者修改后请按4返回)单位数目#请按4返回cT *D: UserData面VDeba&l. exe1添加直品信息2删除棄商品信息3修改某商品信匚4返回(当你完应了对某一商品的添加
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年泰兴市公开招聘教师27人模拟试卷及答案详解(新)
- 2025有会计面试题目及答案
- 2025年传染病防控流程应急演练答案及解析
- 2025年麻醉学急救操作模拟考试答案及解析
- 2025事业单位综合能力测试题及答案E类
- 2025年康复护理康复护理方案制定实操考核试卷答案及解析
- 2025年营养科膳食调理方案设计模拟考试答案及解析
- 2025年肝胆胰外科手术器械操作技能考核答案及解析
- 2025年肿瘤学实验室操作规范测试答案及解析
- 2025年老年医学领域认知障碍症状评估答案及解析
- 不同茶叶的冲泡方法
- 人教版高中地理必修第一册第一章宇宙中的地球第一节地球的宇宙环境练习含答案
- 信息科技风险安全
- 中建幕墙工程安全专项施工方案
- 诊所中药饮片清单汇编
- 果树技术员(高级)考试题及答案(新版)
- 红木文化智慧树知到答案2024年广西大学
- 招标代理机构遴选投标方案(技术标)
- 吊车施工专项方案
- 肺栓塞患者护理查房课件
- 9月30日烈士纪念日缅怀先烈功绩弘扬先烈精神课件
评论
0/150
提交评论