数据结构课程设计校园超市商品销售统计系统

上传人:xmg****18 文档编号:120437873 上传时间:2020-02-06 格式:DOC 页数:23 大小:298KB
返回 下载 相关 举报
数据结构课程设计校园超市商品销售统计系统_第1页
第1页 / 共23页
数据结构课程设计校园超市商品销售统计系统_第2页
第2页 / 共23页
数据结构课程设计校园超市商品销售统计系统_第3页
第3页 / 共23页
数据结构课程设计校园超市商品销售统计系统_第4页
第4页 / 共23页
数据结构课程设计校园超市商品销售统计系统_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《数据结构课程设计校园超市商品销售统计系统》由会员分享,可在线阅读,更多相关《数据结构课程设计校园超市商品销售统计系统(23页珍藏版)》请在金锄头文库上搜索。

1、. . . . .目录1.需求分析11.1 问题描述11.2 设计内容12.概要设计12.1 数据结构算法选择12.2 算法要点归纳12.3 下面是针对本程序专门定义的数据结构类型42.4 各组织结构与功能分析53 测试结果及其分析64 小结8参考文献9附录:程序源代码9. 专业.专注 .1.需求分析1.1 问题描述 设计一系统,实现超市定期对销售各商品的记录进行统计,可按商品的编号、单价、销售量或销售额做出排名。1.2 设计内容 在本设计中,首先从数据文件中读出各商品的信息记录,存储在顺序表中。各商品的信息包括:商品编号、商品名、单价、销出数量、销售额。商品编号共4位,采用字母和数字混合编号

2、,如:A125,前一位为大写字母,后三位为数字,按商品编号进行排序时,可采用基数排序法。对各商品的单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序等方法。在本设计中,对单价的排序采用冒泡排序法,对销售量的排序采用快速排序法,对销售额的排序采用堆排序法。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 各组织结构与功能分析各商品信息在设计系统中的主要功能:按照各商品信息排序,根据要求所需的排序算法对商品编号、商品名称、单价、销售量和销售额进行一个排序。图

6、5:功能分析图 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 numb

9、er(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-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-rj.name); strcpy(L-rj.name,L-ri.name); strcpy(L-ri.name,na

10、me1); 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%ft%dt%fn,L-ri.num,L-ri.name,L-r

11、i.price,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-rj.name,L-ri.name)0) strcpy(num1,L-rj.num); strcpy(L-rj.num,L-ri.num); strcpy(L-ri.num,num1); strcpy(name1,L-rj.name); strcpy(L-r

12、j.name,L-ri.name); strcpy(L-ri.name,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%ft%dt%fn,L-ri.num,L-ri.name,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

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号