版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告超市数据汇总系统课程:程序设计基础班级: 150407 学号: 20152476姓名:黄志浩指导教师:孙旸2016年1月12日33 / 33文档可自由编辑打印目录设计题目3选题背景4设计内容5设计思路6程序清单与运行结果7程序清单7运行结果截图15总结、设计结果说明、设计体会19设计题目问题描述:在数据处理中经常需要对大量数据进行汇总,将相同关键字记录的某些数据项的值叠加起来,生成一个分类汇总表。假设某超级市场销售有m种商品(假设商品的编号为1,2,3,m),有n台前台收款机(假设收款机的编号为1,2,3,n)进行收款,以记录的形式提供给计算机,每个记录表示某台收款机的一种商品一次
2、交易的数量和销售额。记录由4个域组成:收款机编号、商品编号、销售数量、销售金额。构造一个结构体类型,每次销售数据以一个结构体变量保存在一个数据文件中。实现要求: 编写实现将数据记录插入到数据文件的最后的函数; 编写以收款机为单位的数据分类处理函数。构造n个单链表,每个链表保存一台收款机的销售记录,这n个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪台收款机。读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到n个单链表; 编写以商品为单位的数据分类处理函数。构造m个单链表,每个链表保存一种商品的销售记录,这m个单链表的头指针存放在一个指针数组中,通过数组的下
3、标就可以知道是哪种商品。读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到m个单链表; 统计每台收款机的销售总额; 以收款机为单位,将所有收款机按销售总额的非递减顺序构造一个单链表并输出; 以商品为单位,统计每种商品的销售总额; 以商品为单位,将所有销售的商品按销售总额的非递减顺序构造一个单链表并输出; 设计一个菜单,具有上述要求的所有功能、退出系统等最基本的功能。选题背景随着我国改革开放的不断深入、经济飞速的发展,企业要想生存发展,要想在激烈的市场竞争中立于不败之地,没有现代化的管理是万万不行的。作为现代社会的一部分,超市必须适应社会的发展,因此实现超市的信息化管理是很有
4、必要的。 在传统的手工管理中,往往是用人工清点的方式来掌握超市中现有的商品,使用手工记账的方式来掌握商品的进货和销售情况。这种方式在商品数量较少、商品库存变换少的情况下,不失为一种较好的方法。但是,在目前的大中型超市中,往往需要处理的商品种类数以千计,而且每天所发生的进货和销售情况纷繁复杂。如果要借助人工来实现这一系列数据的记录和管理,工作量将非常巨大,而且容易出现错误,造成管理上的混乱,更何况还需要对商品的数据进行统计和分析。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已被人们所认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对超市信息
5、进行管理有着手工管理所无法比拟的优点,例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高超市管理的效率,也能使超市步入科学化、正规化的管理。基于这些问题,为了使超市管理工作规范化、系统化、程序化,避免超市管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效地查询和修改商品情况,建立一个超市管理系统是非常必要的。设计内容1.实现将数据记录插入到数据文件的最后;2.以收款机为单位的数据分类处理。构造n个单链表,每个链表保存一台收款机的销售记录,这n个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪台收款机。读取数据文件的记录,
6、将所有的销售记录(数据文件中的全部记录)分解插入到n个单链表;3.统计每台收款机的销售总额;4.以收款机为单位,将所有收款机按销售总额的非递减顺序构造一个单链表并输出;5.以商品为单位的数据分类处理。构造m个单链表,每个链表保存一种商品的销售记录,这m个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪种商品。读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到m个单链表;6.以商品为单位,统计每种商品的销售总额;7.以商品为单位,将所有销售的商品按销售总额的非递减顺序构造一个单链表并输出;设计思路1. 首先将数据通过程序存储到文件中供程序提取并操作。2. 将文
7、件中的数据提取并做成一个单链表。3. 将上一步的单链表分成N个单链表,每个收款机为一个单链表。 N个单链表头指针放在一个指针数组里。4. 查找N个单链表中的数据并计算总金额,同时把总金额存储到一个数组中供下步使用。5. 根据总金额将指针数组排序并输出。6. 以商品为单位,重复3-5步。程序清单与运行结果程序清单#include"stdio.h"#include"malloc.h"#include"string.h"#include"stdlib.h"#define N 3 / 3个收款机 #define M 9 /
8、 9种商品 char acount10="737701995"/管理员账号 char password10="123456"/管理员密码 struct Node* atmN; /存放收款机链表头指针 struct Node* goodsM;/ 商品链表头指针 char n1N='a','b','c'char n2M='1','2','3','4','5','6','7','8',&
9、#39;9'float m1N;/每台收款机收款总额 float m2M;/每种商品销售总额 struct shop/结构体数据 char ATM;/ 标号为 a-cchar GOODS; /标号为 1-9float num;float price;float total; ;struct Node/链表 struct shop content;struct Node *next;void add()struct shop data;FILE *fp=NULL;fp=fopen("data.txt","a");if(fp=NULL)printf(
10、"文件打开失败!");return;char flag='y'while(flag='y'|flag='Y')printf("输入收款机号:(a-c) ");rewind(stdin);scanf("%c",&data.ATM);printf("输入商品号:(1-9) "); rewind(stdin);scanf("%c",&data.GOODS);printf("输入销售商品数量:");scanf("
11、;%f",&data.num); printf("输入销售价格:");scanf("%f",&data.price);data.total=data.num*data.price;fprintf(fp,"%c%c%f %f %f",data.ATM,data.GOODS,data.num,data.price,data.total);fputc('n',fp);printf("是否继续 y/Y ");rewind(stdin);scanf("%c",&a
12、mp;flag); if(flag!='y'&&flag!='Y')fclose(fp);return;struct Node* creatNode() /提取文件数据 建成一个链表 char ch;FILE *fp=NULL;fp=fopen("data.txt","r");struct Node *h,*p1,*p2;p2=(struct Node*)malloc(sizeof(struct Node);h=p2;fscanf(fp,"%c%c",&p2->conten
13、t.ATM,&p2->content.GOODS);fscanf(fp,"%f%f%f",&p2->content.num,&p2->content.price,&p2->content.total);ch=fgetc(fp);while(!feof(fp)p1=(struct Node*)malloc(sizeof(struct Node);fscanf(fp,"%c%c",&p1->content.ATM,&p1->content.GOODS);fscanf(fp,&
14、quot;%f",&p1->content.num);fscanf(fp,"%f",&p1->content.price);fscanf(fp,"%f",&p1->content.total);ch=fgetc(fp);p2->next=p1;p2=p1;ch=fgetc(fp);fclose(fp);p2->next=NULL;if(h=NULL)printf("提取数据失败!");return 0;elsereturn h;void creatatm() /根据收款机
15、建立N个链表 int i=0;struct Node* h;h=creatNode();while(n1i!=NULL)struct Node *q,*p1=NULL,*p2,*H; p2=(struct Node*)malloc(sizeof(struct Node);H=p2;q=h;while(q) if(q->content.ATM=n1i) p1=(struct Node*)malloc(sizeof(struct Node);p1->content=q->content;p2->next=p1;p2=p1; q=q->next; p2->next
16、=NULL; H=H->next; atmi=H; i+;return;void addtotal() /计算各收款机收款总额并存储总额数据 int i=0;creatatm();float Total=0;struct Node *q;while(i<N)q=atmi;while(q)Total+=q->content.total;q=q->next;m1i=Total;i+;Total=0; printf("n");void ATMtotal() /每台收款机销售总额 addtotal();int i=0;while(i<N)if(m1i!
17、=0) /如果第i-1台收款机没有收到汇款,则不输出printf("%c号收款机收款总额为%6.2fn",n1i,m1i);i+;void ATMsort()/将收款机按销售总额排序 链表 addtotal();int j,k;float temp;struct Node *Temp;for(j=0;j<N;j+)for(k=j;k<N;k+)if(m1k<m1j)temp=m1k;/对各收款机总金额排序 m1k=m1j;m1j=temp;Temp=atmk;/对链表排序 atmk=atmj;atmj=Temp;k-;for(int i=0;i<N;
18、i+)if(m1i!=0)printf("%c号收款机总金额为%6.2f n",atmi->content.ATM,m1i); void creatgoods() /根据商品建立 M个链表 int i=0;struct Node* h;h=creatNode();while(n2i!=NULL)struct Node *q,*p1=NULL,*p2,*H; p2=(struct Node*)malloc(sizeof(struct Node);H=p2;q=h;while(q) if(q->content.GOODS=n2i) p1=(struct Node*)
19、malloc(sizeof(struct Node);p1->content=q->content;p2->next=p1;p2=p1; q=q->next; p2->next=NULL; H=H->next; goodsi=H; i+;return;void addtotal2() /计算每种商品销售总额并存储总额数据 int i=0;creatgoods();float Total=0;struct Node *q;while(i<M)q=goodsi;while(q)Total+=q->content.total;q=q->next;
20、m2i=Total;i+;Total=0; printf("n");void GOODStotal() /每种商品销售总额 addtotal2();int i=0;while(i<M)if(m2i!=0)/如果第i-1种商品没有卖出过,则不输出printf("%c号商品销售总额为%6.2fn",n2i,m2i);i+;void GOODSsort()/将商品按销售总额排序 链表 addtotal2();int j,k;float temp;struct Node *Temp;for(j=0;j<M;j+)for(k=j;k<M;k+)i
21、f(m2k<m2j)temp=m2k;/对各收款机总金额排序 m2k=m2j;m2j=temp;Temp=goodsk;/对链表排序 goodsk=goodsj;goodsj=Temp;k-;for(int i=0;i<M;i+)if(m2i!=0)printf("%c号商品销售总金额为%6.2f n",goodsi->content.GOODS,m2i);void print()struct Node* h;h=creatNode();printf("收款机 商品 数量 单价 总金额n");while(h->next!=NULL
22、)printf("%c %c %6.2f",h->content.ATM,h->content.GOODS,h->content.num) ; printf(" %6.2f %6.2fn",h->content.price,h->content.total); h=h->next; void delate()FILE *fp=fopen("hzh.txt","a");remove("data.txt");fclose(fp);rename("hzh.
23、txt","data.txt");return;void menu()int flag;printf(" 欢迎使用超市数据分类汇总系统nn");while(1)printf("*n");printf("新增记录 2统计每台收款机的销售总额 3将所有收款机按收款总额排序n"); printf("4统计每种商品的销售总额 5将所有销售的商品按销售总额排序 n"); printf("6查看所有销售数据 7删除所有记录 8退出n"); printf("*nn");scanf("%d",&flag);switch(flag)case 1:add();break;case 2:ATMtotal();break;case 3:ATMsort();break;case 4:GOODStotal();break;case 5:GOODSsort();b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东韶关新丰县丰城街道办事处招聘社区工作者(人选)补充备考题库附答案
- 2025年舟山群岛新区六横管理委员会招聘3人备考题库附答案
- 2025山东济南综保控股集团招聘22人笔试备考试题附答案
- 2025年商洛市中心医院招聘(35人)考试题库附答案
- 2026内蒙古呼和浩特市桥华学校招聘笔试参考题库及答案解析
- 2026山东滨州市公安机关警务辅助人员招录141人笔试参考题库及答案解析
- 泰安新泰市紫光实验中学招聘笔试备考试题及答案解析
- 2026泰安东平县江河实验学校招聘笔试备考题库及答案解析
- 2026上海普陀区人民调解协会招聘13人笔试参考题库及答案解析
- 2026四川广元市利州区中医医院考核招聘专业技术人员2人笔试参考题库及答案解析
- 开曼群岛公司法2024版中文译本(含2024年修订主要内容)
- 贵阳市普通中学2023-2024学年度高一第一学期数学期末监测考试试卷
- 湘教 八下 数学 第2章《平行四边形的判定》课件
- 骨科技能操作流程及评分标准
- 控制区人员通行证件考试1附有答案
- 2016-2023年北京财贸职业学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 《思想道德与法治》
- 沪教版生物科学八年级上册重点知识点总结
- 汽车美容装潢工(四级)职业资格考试题库-下(判断题汇总)
- 焊缝的图示法
- 2020年云南省中考英语试卷真题及答案详解(含作文范文)
评论
0/150
提交评论