付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、有一个小型超市,出售 N (N = 10 )种商品,设计并实现一个系统, 完成下列功能: 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 的商品类别 struct
3、good int num; char name20; char kind40; float price; char unit10; int quantity; /* 定义结构体 */ /*商品编号 */ /*商品名称 */ /*商品类型 */ /*商品价格 */ /* 商品单位 */ /*商品数量 */ *head,*p1,*p2;附 录(程序清单) #include stdio.h #include stdlib.h #include string.h #include conio.h /* 输入,输出头文件 */ /*申请空间头文件 */ /*对字符串加工头文件 */ /* 清屏头文件 *
4、/ 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 *next; /* 定义结构体指针类型 */ struct good *createlist() /* 创建链表函数 */ printf(*n); prin
5、tf( 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) struct good *head1,*p1,*p2; /*定义结构体指针类型 */ if(fp=fopen
6、(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); n); p1=(struct good *)malloc(sizeof(struct good)
7、; /*申请新空间 */ printf( 请输入信息 :编号,名称,类型,价格,单位,数目 n); printf( _ n); scanf(%d,&p1-num); if(p1-num=-1) printf( _ nn); 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-n
8、um,p1-name,p1-kind,p1-price,p1-unit,p1-quantity); /*将商品信息写入文件 */ p1-next=NULL; p2-next=p1; p2=p1; printf( f* *n); printf( 以输入 “1”表示结束输入) n); printf( f* *n); /*申请空间结束条件 */ /* 返回头指针 */ struct good *paixu(struct good*head2) /* 链表排序函数 */ struct good *p6,*p7,*r,*s; /*定义结构体指针类型 */ for(i=0;inext=head2; hea
9、d2=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); /*释放
10、第一个无效空间 */ return head2; void jisuan() p1=head; do if(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
11、-kind,e)=0) /*判断是否为办公用品类型 */printf( n); 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-n
12、ame,p3-kind,&p3-price,p3-unit,&p3-quantity); /*从文件中写到链表 */ while(1) /*输出商品信息函数 */ /*定义结构体指针类型 */ printf( * *n); printf( 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
13、,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 %dnn,p3-num,p3-name,p3- kind,p3-price,p3-unit,p3-quantity); printf( _ n); p3=p3-next; f* printf(/n);*n); while(n!=4) p3=head;
14、 printf(1 添加商品信息 n); printf(2 删除某商品信息 n); printf(3 修改某商品信息 n); printf(4 返回(当你完成了对某一商品的添加、 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; wh
15、ile(p3-next!=NULL) /*判断循环结束条件 */ p3=p3-next; p3-next=p4; p3=head; if(fp=fopen(goods message.txt,w)=NULL) /*判断能 否打开文件 */printf( f* *n); 删除或者修改后请按 4 返回) printf( f* *n); scanf(%d,&n); if(n=1) /* 添加商品信息 */ printf( * *n); printf( printf(can not open the file); exit(0); /* 结束程序 */ while(p3!=NULL) fpri
16、ntf(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( - 请按 4 返回 - n); printf( _ n); printf( 请输入需要删除的商品编号 n); scanf(%d,&p); printf(1 确认删除 n2 取消删除 n); printf( f* *n); printf( f* *n);
17、 if(n=2) /*删除商品 */ printf( f* *n); printf( f* *n); printf( f* *n); printf( scanf(%d,&r); if(r=1)f* *n); 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
18、-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); /* 关闭文件 *
19、/ if(r=2) continue; /* 继续循环 */ printf( _ n); printf( - 请按 4 返回 - n); printf( _ n); if(n=3) /* 修改某商品信息 */ printf( 请输入需要修改的商品编号 n); scanf(%d,&q); while(p3!=NULL) /*判断循环结束条件 */ if(p3-num)=q) /*判断是否为所需要修改的商品 */printf( f* *n); printf( f* *n); printf( 请输入商品单价与库存量(如果单价不变请输入原来的单价) n); scanf(%f %d,&p
20、3-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; fpr
21、intf(fp,%d,-1); fclose(fp); /* 关闭文件 */ printf( _ n); printf( - 请按 4 返回 - n); printf( _ n); if(n=4)printf( f* *n); /*输入商品价 /*判断能 printf( f* *n); /*退出*/ break; scanf(%d,&p); if(p=1) continue; /*继续循环 */ if(p=2) break; /* 跳出循环 */ while(n!=2); fclose(fp); /* 关闭文件 */ struct good *p3; /*定义结构体指针类型 */ p3
22、=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( _ n); p3=p3-next; return; printf( *n); printf(1 继续修改 n n2 返回 n); printf( *n); void printf0(struct good *p) /* 遍
23、历链表并打印电器类商品函数 */ struct good *p3; /* 定义结构体指针类型 */ 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
24、); /* 输出日用品类商品信息 */ printf( _ n); p3=p3-next; return; void printf2(struct good *p) /* 遍历链表并打印办公用品类商品函数 */printf(%dt%st%st%0.1ft%st%dn,p3-num,p3-name,p3-kind,p3-price, p3-unit,p3-quantity); /*输出食品类商品信息 */ p3=p; while (p3!=NULL) /*判断遍历链表循环结束条件 */ if(strcmp(p3-kind,e)=0) /*判断商品类型是否为办公用品类型 */ printf(%dt
25、%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 printf3(struct good *p) /* 遍历链表并打印食品类商品函数 */ struct good *p3; /* 定义结构体指针类型 */ p3=p; while (p3!=NULL) /*判断遍历链表循环结束条件 */ if(strcmp(p3-kind,f)=0) /*判断商品类型是否为食品类型 */ printf(
26、n); printf(编号t 名称t 类别t 单价t 单位t 数量n); printf( n); p3=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);printf(n * *n); printf(商品平均价格排序表(从高到低) n); printf( * *n); for(j=0;j4;j+) for(i=0;iquantityname,p1-kind); /* 输出商品名称及类别 */ printf( _ n); p1=p1-next; void tongji2() printf(商品库存量有 2 种以上(含 2 种)低于 100 的商品类别:n); printf( _ n); if(a0=2) 量是否为 2 种以上(含 2 种)低于 100*/ printf(电器 n);printf(n * *n); printf( * *
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于虚拟现实的智能蒙皮技术培训与模拟系统研究
- 快递公司网络运营面试宝典
- 2026年全网主流网红推广平台:传声港全矩阵生态解析
- 护理安全监控:智能监控系统的应用
- 护理环境中的患者疼痛评估
- 护理专业概述
- 新时代基础英语 3
- 2020年广东省广州市荔湾区九年级下学期毕业班阶段性训练道德与法治试题(含答案)
- 旅游行业HR面经典问题与回答方法
- 旅行社总经理面试要点与策略
- 《汽车车身结构认知与维修》 课件全套 项目1-5 汽车车身结构认知、车身焊接-汽车车身校正
- 【大学生对视力矫正手术的顾虑因素调查报告(后含问卷)6800字(论文)】
- 实训室文化建设设计
- 新人教版五年级下册英语全册教案(表格式)
- 23、资质证书使用与管理制度
- 企业人力资源管理师(三级)人力资源管理师考试题库及答案
- 土建生态环保和绿色施工环境管理培训ppt
- 酒瓶里的风景:勃艮第葡萄酒
- 药学分子生物学:第二章 DNA的复制、损伤和修复
- 2023-2024学年度新人教版必修二Unit4 History and Traditions基础巩固练习
- 施工组织设计(老旧小区改造及配套设施)
评论
0/150
提交评论