ImageVerifierCode 换一换
格式:DOC , 页数:22 ,大小:237KB ,
资源ID:6102842      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6102842.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言程序设计超市管理系统1.doc)为本站会员(cjc2202537)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

C语言程序设计超市管理系统1.doc

1、 程序设计超市管理系统学院: 专业: 班级: 姓名: 学号: 指导老师: 超市管理系统课程设计1)需求分析:设计题目:超市管理系统设计要求:有一个小型超市,出售 N(N 10)种商品,设计并实现一个系统系统功能需求分析:1 保存及输出:超市中的各种商品信息保存在指定文件中,可以把它们输出显示。2 计算并排序:计算每类商品的总价值(sum,单精度)及平均价(aver,单精度,输出一位小数),将每类商品按平均价从大到小的顺序排序打印出来。3 统计:统计输出库存量低于 100 的货号及类别。统计输出有两种以上(含两种)商品库存量低于 100 的商品类别。2)概要设计:系统总体设计框架:主模块信息输出

2、修改模块新建信息模块排序模块 计算模块 统计模块1统计模块2打印模块系统功能模块图:主模块信息输出修改模块新建信息模块排序模块 统计模块1统计模块2打印模块添加商品 主模块 商品价格(从高到低)删除某商品信息修改某商品信息主模块信息输出 计算模块 商品信息平均价3)详细设计:主要功能模块的算法设计思路:本程序主要分为八个模块:主模块、信息输出修改模块、新建信息模块、排序模块、计算模块、统计模块 1、统计模块 2、打印模块。1) 主模块:通过调用各分模块实现功能;2) 信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商品信息,修改商品信息;3) 新建商品信息模块:建立一个新结构体

3、,为链表存信息用,并且将信息保存在指定的文件中;4) 排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序,放到链表里存储;5) 计算模块:将所有商品的价格与库存量进行累加求和;6) 打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来;7) 统计模块 1:统计库存量低于 100 的货名及类别;8) 统计模块 2:统计商品库存量有 2 种以上(含 2 种)低于 100 的商品类别工作流程图:开始输出商品信息或修改商品信息新建商品信息(删除原有信息)统计商品信息退出输入商品信息(编号、名称、类型、价格、单位、数目)结束输入添加商品信息修改某商品信息删除某商品信息确认或取消

4、 输入商品单价和库存量返回输出(商品类型、平均价、总库存量)排序(按价格从高到低)4)主要源程序代码:#include “stdio.h“ /*输入,输出头文件*/ #include “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

5、 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() /*创建

6、链表函数*/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” 表示结束

7、输入)n“);printf(“*n“);printf(“_n“);scanf(“%d %s %s %f %s %d“, /*输入商品信息*/ 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(“请输入信息:编号,名称,类型,价格,单位

8、,数目n“);printf(“ (以输入 “1” 表示结束输入)n“);printf(“*n“);printf(“_n“);scanf(“%d“,if(p1-num=-1) /*申请空间结束条件*/printf(“_nn“);fprintf(fp,“%d“,-1);fclose(fp);return head1; /*返回头指针*/scanf(“%s %s %f %s %d“,p1-name,p1-kind, /*输入商品信息*/printf(“_n“);fprintf(fp,“%d %s %s %f %s %d “,p1-num,p1-name,p1-kind,p1-price,p1-uni

9、t,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;inext=head2;head2=p6;while(p6-next!=NULL) /*判断循环结束条件*/p7=p6-next;r=p6;while(p7-next!=NULL) /*判断循环结束条件*/if(p7-next-price)(r-next-price) /*判断是否调换

10、 */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;doif(strcmp(p1-kind,c)=0) /*判断是否为电器类型*/ sum0=sum0+(p1-price)*(p1-quantity); /*求电器总价*/a0=a0+p1-quantity; /

11、*求电器总件数*/ if(strcmp(p1-kind,d)=0) /*判断是否为日用品类型*/ sum1=sum1+(p1-price)*(p1-quantity); /*求日用品总价*/a1=a1+p1-quantity; /*求日用品总件数*/ if(strcmp(p1-kind,e)=0) /*判断是否为办公用品类型*/ sum2=sum2+(p1-price)*(p1-quantity); /*求办公用品总价*/a2=a2+p1-quantity; /*求办公用品总件数*/ if(strcmp(p1-kind,f)=0) /*判断是否为食品类型*/ sum3=sum3+(p1-pri

12、ce)*(p1-quantity); /*求食品总价*/a3=a3+p1-quantity; /*求食品总件数*/ p1=p1-next;while (p1!=NULL); /*遍历链表结束条件*/for(i=0;inum,p3-name,p3-kind, /*从文件中写到链表*/ while(1)p4=(struct good *)malloc(sizeof(struct good); /*申请头结点空间*/ fscanf(fp,“%d “,if(p4-num!=-1) /*判断循环结束条件*/fscanf(fp,“%s %s %f %s %d “,p4-name,p4-kind, /*从文

13、件中写到链表*/ p4-next=NULL;p3-next=p4;p3=p4;elsep3-next=NULL;break;fclose(fp); /*关闭文件*/ p3=head;while(p3!=NULL) printf(“ %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“);

14、printf(“2 删除某商品信息n“);printf(“3 修改某商品信息n“);printf(“4 返回(当你完成了对某一商品的添加、删除或者修改后请按 4 返回)n“);printf(“*n“); scanf(“%d“,if(n=1) /*添加商品信息*/ printf(“请输入商品 编号 名称 类型 价格 单位 数目n“);printf(“*n“); p4=(struct good *)malloc(sizeof(struct good); /*申请空间*/scanf(“%d %s %s %f %s %d“, /*输入商品信息*/ p4-next=NULL;while(p3-next!

15、=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);f

16、close(fp); /*关闭文件*/printf(“*n“); printf(“_n“);printf(“-请按 4 返回-n“);printf(“_n“);printf(“*n“); if(n=2) /*删除商品*/printf(“*n“); printf(“请输入需要删除的商品编号 n“);printf(“*n“); scanf(“%d“,printf(“*n“); printf(“1 确认删除n2 取消删除n“);printf(“*n“); scanf(“%d“,if(r=1)if(head-num)=p)head=head-next;free(p3); /*释放空间*/elsep4=

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

18、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“,while(p3!=NULL) /*判断循环结束条件*/if

19、(p3-num)=q) /*判断是否为所需要修改的商品*/ printf(“请输入商品单价与库存量(如果单价不变请输入原来的单价)n“);scanf(“%f %d“, /*输入商品价格与库存量*/ 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-

20、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“,if(p=1)continue; /*继续循环*/if(p=2)break; /

21、*跳出循环*/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,p3-name,p3-kind,p3-price,p3-unit,p3-quantity); /*输出电器类商品信息*/printf

22、(“_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,p3-unit,p3-quantity); /*输出日用品类商品信息*/printf(“_n“);p3=

23、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); /*输出办公用品类商品信息*/printf(“_n“);p3=p3-next;

24、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=p3-next;return;void s

25、hunxudayin()for(i=0;iquantityname,p1-kind); /*输出商品名称及类别*/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(

26、“日用品n“);printf(“_n“);if(a2=2) /*判断食品类库存量是否为 2 种以上(含 2 种)低于 100*/printf(“食品n“);printf(“_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

27、(“2 -重新输入新信息(并且删除原有信息)-n“);printf(“-n“);printf(“3 统计商品信息(如果您还没有查看过信息请先按 1)n“); printf(“-n“);printf(“4 -退出-n“);printf(“*n“);scanf(“%d“,if(m=1)shuchu(); /*调用输出信息函数*/if(m=2)system(“cls“);head=createlist(); /*调用建立链表函数*/ if(m=3)printf(“统计结果如下n“); head=paixu(head); /*调用链表排序函数 */ jisuan(); /*调用计算函数*/ shunx

28、udayin(); /*调用顺序打印函数*/ tongji1(); /*调用统计 1 函数*/ tongji2(); /*调用统计 2 函数*/ if(m=4)p1=head;while(p1!=NULL) /*判断遍历链表结束条件*/p2=p1-next;free(p1); /*释放空间*/p1=p2;break;return 0; /*结束程序*/ 5)调试分析过程描述:测试数据:01 milk drink 2.5 box 502 apple fruit 3 kilo 2测试输出结果:存在问题的思考:源代码出错,漏了一些分号导致程序频频出错,在进行编写时注意小地方别出错!否则会影响大局!6)总结:学习体会与收获:通过这个超市管理系统程序设计实验,我从理论知识跨越到实践上,感到收效良多,从崇拜计算机到学会控制计算机,在心理上不再觉得计算机是万能的,人的大脑才是万能的,算法才是万能的数学才是万能的,在这次实验中,实现一个完整的程序大大加深了我对 C语言课程的兴趣!对 C语言课程设计的认识以及自己的建议:C语言课程设计就是通过编译实现需要的功能的一种程序的设计,建议自己以后在这方面多下功夫,真正实现自己编译以个完整的 C程序,实现自己的梦想和未来!

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报