![数据结构课程设计校园超市商品销售统计系统_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-7/27/43a86b1f-9edc-4a89-84d0-ba1356cc6f24/43a86b1f-9edc-4a89-84d0-ba1356cc6f241.gif)
![数据结构课程设计校园超市商品销售统计系统_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-7/27/43a86b1f-9edc-4a89-84d0-ba1356cc6f24/43a86b1f-9edc-4a89-84d0-ba1356cc6f242.gif)
![数据结构课程设计校园超市商品销售统计系统_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-7/27/43a86b1f-9edc-4a89-84d0-ba1356cc6f24/43a86b1f-9edc-4a89-84d0-ba1356cc6f243.gif)
![数据结构课程设计校园超市商品销售统计系统_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-7/27/43a86b1f-9edc-4a89-84d0-ba1356cc6f24/43a86b1f-9edc-4a89-84d0-ba1356cc6f244.gif)
![数据结构课程设计校园超市商品销售统计系统_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-7/27/43a86b1f-9edc-4a89-84d0-ba1356cc6f24/43a86b1f-9edc-4a89-84d0-ba1356cc6f245.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计报告目录1.需求分析11.1 问题描述11.2 设计内容12.概要设计12.1 数据结构算法选择12.2 算法要点归纳12.3 下面是针对本程序专门定义的数据结构类型42.4 各组织结构与功能分析53 测试结果及其分析64 小结8参考文献9附录:程序源代码91.需求分析1.1 问题描述 设计一系统,实现超市定期对销售各商品的记录进行统计,可按商品的编号、单价、销售量或销售额做出排名。1.2 设计内容 在本设计中,首先从数据文件中读出各商品的信息记录,存储在顺序表中。各商品的信息包括:商品编号、商品名、单价、销出数量、销售额。商品编号共4位,采用字母和数字混合编号,如:A125,
2、前一位为大写字母,后三位为数字,按商品编号进行排序时,可采用基数排序法。对各商品的单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序等方法。在本设计中,对单价的排序采用冒泡排序法,对销售量的排序采用快速排序法,对销售额的排序采用堆排序法。2.概要设计2.1 数据结构算法选择本设计主要采用了顺序表。共用四种排序方法:冒泡排序法,快速排序法,堆排序法,基数排序法。2.2 算法要点归纳1. 冒泡排序: 冒泡排序的算法思想是:通过无序区中相邻元素关键字间的比较和位置的交换,使关键字最小的元素如气泡一般逐渐往上“漂浮”直至“水面”。整个算法是从最下面的元
3、素开始,对每两个相邻元素的关键字进行比较,且使关键字较小的元素换至关键字较大的元素之上,使得经过一趟冒泡排序后,关键字最小的元素到达最上端。接着,再在剩下的元素中找关键字次小的元素,并把它换在第二个位置上。依次类推,一直到所有元素都有序为止。图 1:冒泡排序算法思想2. 快速排序:快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字,则可分别对这两部分记录继续进行排序,以达到整个序列有序。图 2:快速排序算法思想3. 堆排序:堆排序只需要一个记录大小的辅助空间,每个待排序的记录仅占有一个存储空间。它的基本思想是
4、:首先按大根堆的定义将R1n调整为堆(这个过程为初始建堆),交换R1和Rn(将最大元素R1归位,放到排序序列的最后);然后,将R1n-1调整为堆,交换R1和Rn-1;如此反复进行,直到交换了R1和R2为止。图 3:堆排序算法思想4.基数排序:基数排序是属于“分配式排序”,基数排序法又称“桶子法”。顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O(nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的比较性排序法。图 4:基数排序算法思想2.3 下面是针对本程序专门定义的数
5、据结构类型1.商品信息的元素类型定义:typedefstructnode charnum4; /*商品编号*/charname10; /*商品名称*/floatprice; /*单价*/intcount; /*销售数量*/floatsale; /*本商品销售额*/DataType;2.存储商品信息的顺序表的定义:typedefstruct DataTyperMaxSize; intlength;SequenList;2.4 各组织结构与功能分析各商品信息在设计系统中的主要功能:按照各商品信息排序,根据要求所需的排序算法对商品编号、商品名称、单价、销售量和销售额进行一个排序。图 5:功能分析图
6、3 测试结果及其分析图 6:输入商品编号、商品名称、商品单价和商品销售量图 7:按商品编号排序图 8:按商品名称排序图 9:分别按商品单价和商品销出数量排序图 10:按商品销售额排序4 小结通过这次课设,我学会了如何把数据结构的知识应用到实践当中,同时也进一步加深了对c/c+语言语法的应用,以及深刻的掌握了数据结构和c/c+语言的结合运用。 在编程过程中,遇到了许多问题,在一次次的运行错误后,问题被一步步改正,也从中学到了许多知识。虽然我的程序还不够完善,还需加以改进以实现更多的功能,但是我会尽我最大的努力去完成它,我相信我会努力去把程序做的更加完美。参考文献1王昆仑,李红等编著. 数据结构与
7、算法. 北京:中国铁道出版社,2007.2苏仕华等编著. 数据结构课程设计. 北京:机械工业出版社 ,2005.3苏仕华编著. 数据结构与算法解析. 合肥:中国科学技术大学出版社,2004.4郭嵩山等著. 国际大学生程序设计竞赛例题解. 北京:电子工业出版社,2008.5刘大有,唐海鹰等编著. 数据结构. 北京:高等教育出版社,2001.6徐孝凯编著.数据结构实用教程. 北京: 清华大学出版社,1999.7严蔚敏,陈文博编著. 数据结构及算法教程. 北京: 清华大学出版社,2001.8刘振安,刘燕君等编著. C 程序设计课程设计. 北京: 机械出版社,2004.9胡学钢. 数据结构与算法设计指
8、导. 北京: 清华大学出版社, 1999.附录:程序源代码#include#include#include#define maxsize 100 /该超市商品最大种类typedef struct node /商品信息的存储结构类型定义char num10; /商品编号 char name30; float price; /单价 int count; /销售量 float sale; /销售额DataType;typedef struct /存储商品信息的顺序表的定义 DataType rmaxsize; int length; int type;SqList;void number(SqLis
9、t *L) /按商品编号排序 int i,j; char num110,name130; float price1,sale1; int count1; for(i=0;itype;i+) for(j=i+1;jtype;j+) if(strcmp(L-rj.num,L-ri.num)0) strcpy(num1,L-rj.num); strcpy(L-rj.num,L-ri.num); strcpy(L-ri.num,num1); strcpy(name1,L-); strcpy(L-,L-); strcpy(L-,name1); pr
10、ice1=L-rj.price; L-rj.price=L-ri.price; L-ri.price=price1; count1=L-rj.count; L-rj.count=L-ri.count; L-ri.count=count1; sale1=L-rj.sale; L-rj.sale=L-ri.sale; L-ri.sale=sale1; printf(t按商品编号排序后:n); printf(t商品编号 商品名称 单价 销出数量 销售额n); for(i=0;itype;i+)printf(t%st%st%ft%dt%fn,L-ri.num,L-,L-ri.price,
11、L-ri.count,L-ri.sale);void nam(SqList *L) /按商品名称排序 int i,j; char num110,name130; float price1,sale1; int count1; for(i=0;itype;i+) for(j=i+1;jtype;j+) if(strcmp(L-,L-)0) strcpy(num1,L-rj.num); strcpy(L-rj.num,L-ri.num); strcpy(L-ri.num,num1); strcpy(name1,L-); strcpy(L-,L
12、-); strcpy(L-,name1); price1=L-rj.price; L-rj.price=L-ri.price; L-ri.price=price1; count1=L-rj.count; L-rj.count=L-ri.count; L-ri.count=count1; sale1=L-rj.sale; L-rj.sale=L-ri.sale; L-ri.sale=sale1; printf(t按商品编号排序后:n); printf(t商品编号 商品名称 单价 销出数量 销售额n); for(i=0;itype;i+)printf(t%st%st%f
13、t%dt%fn,L-ri.num,L-,L-ri.price,L-ri.count,L-ri.sale);void pric(SqList *L)/按商品单价排序int i=0,j; char num110,name130; float price1,sale1; int count1; for(i=0;itype;i+) for(j=i+1;jtype;j+) if(L-rj.priceL-ri.price) strcpy(num1,L-rj.num); strcpy(L-rj.num,L-ri.num); strcpy(L-ri.num,num1); strcpy(name1
14、,L-); strcpy(L-,L-); strcpy(L-,name1); price1=L-rj.price; L-rj.price=L-ri.price; L-ri.price=price1; count1=L-rj.count; L-rj.count=L-ri.count; L-ri.count=count1; sale1=L-rj.sale; L-rj.sale=L-ri.sale; L-ri.sale=sale1; printf(t按商品编号排序后:n); printf(t商品编号 商品名称 单价 销出数量 销售额n); fo
15、r(i=0;itype;i+) printf(t %st %st %ft %dt %fn,L-ri.num,L-,L-ri.price,L-ri.count,L-ri.sale);void coun(SqList *L)/按商品销出数量排序int i=0,j; char num110,name130; float price1,sale1; int count1; for(i=0;itype;i+) for(j=i+1;jtype;j+) if(L-rj.countL-ri.count) strcpy(num1,L-rj.num); strcpy(L-rj.num,L-ri.nu
16、m); strcpy(L-ri.num,num1); strcpy(name1,L-); strcpy(L-,L-); strcpy(L-,name1); price1=L-rj.price; L-rj.price=L-ri.price; L-ri.price=price1; count1=L-rj.count; L-rj.count=L-ri.count; L-ri.count=count1; sale1=L-rj.sale; L-rj.sale=L-ri.sale; L-ri.sale=sale1; printf(t按商品编号排序后:
17、n); printf(t商品编号 商品名称 单价 销出数量 销售额n); for(i=0;itype;i+) printf(t%st%st%ft%dt%fn,L-ri.num,L-,L-ri.price,L-ri.count,L-ri.sale);void sales(SqList *L)/按商品销售额排序int i=0,j; char num110,name130; float price1,sale1; int count1; for(i=0;itype;i+) for(j=i+1;jtype;j+) if(L-rj.saleL-ri.sale) strcpy(num1,L-
18、rj.num); strcpy(L-rj.num,L-ri.num); strcpy(L-ri.num,num1); strcpy(name1,L-); strcpy(L-,L-); strcpy(L-,name1); price1=L-rj.price; L-rj.price=L-ri.price; L-ri.price=price1; count1=L-rj.count; L-rj.count=L-ri.count; L-ri.count=count1; sale1=L-rj.sale; L-rj.sale=L-ri.sale; L-
19、ri.sale=sale1; printf(t按商品编号排序后:n); printf(t商品编号 商品名称 单价 销出数量 销售额n); for(i=0;itype;i+) printf(t %st %st %ft %dt %fn,L-ri.num,L-,L-ri.price,L-ri.count,L-ri.sale);void menu() printf(ttt销售记录排序n); printf(t-n); printf(t| 1)按商品编号 |n); printf(t| 2)按商品名称 |n); printf(t| 3)按商品单价 |n); printf(t| 4)按商品销出数量 |n); printf(t| 5)按商品销售额 |n); printf(t| 0)退出系统 |n); printf(t-n); printf( 请选择);int main() SqList *L; int n,i,m; char num110,name130; float price1,sale1; int count1; FILE *fp; L=(SqList*)malloc(sizeof(SqList); fp=fopen(medince.txt,w);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 毕业生房屋租赁合同范本
- 有限责任公司投资协议书范本
- 怀化租赁房屋合同范本
- 绘画听评课记录怎么写好
- 人教版九年级数学上册第二十四章圆《24.4弧长和扇形面积》第1课时听评课记录
- 数学学习成果展
- 生物学教学概述
- 教育情感回顾
- 季度生物科技项目汇报
- 苏科版九年级上册物理期末复习必考知识点总结汇编
- 农产品质量安全检测技术
- 【蝉妈妈】2024年抖音电商酒水行业趋势洞察报告
- 物业员工行为规范管理手册
- 海洋垃圾处理行业可行性分析报告
- 基于STM32单片机的智能停车场车位管理系统的设计与实现
- 小型家用电器制造工(省赛)理论考试题及答案
- 公共部门绩效管理案例分析
- 无人机培训计划表
- 墙面油漆翻新合同范例
- 2024届高考英语词汇3500左右
- 2024年-2025年海船船员考试-船舶人员管理考试题及答案
评论
0/150
提交评论