数据结构课程设计校园超市商品销售统计系统_第1页
数据结构课程设计校园超市商品销售统计系统_第2页
数据结构课程设计校园超市商品销售统计系统_第3页
数据结构课程设计校园超市商品销售统计系统_第4页
数据结构课程设计校园超市商品销售统计系统_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、,如:A125,前一位为大写字母,后三位为数字,按商品编号进行排序时,可采用基数排序法。对各商品的单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序等方法。在本设计中,对单价的排序采用冒泡排序法,对销售量的排序采用快速排序法,对销售额的排序采用堆排序法。2 .概要设计2.1 数据结构算法选择本设计主要采用了顺序表。共用四种排序方法:冒泡排序法,快速排序法,堆排序法,基数排序法。2.2 算法要点归纳1 .冒泡排序:冒泡排序的算法思想是:通过无序区中相邻元素关键字间的比较和位置的交换,使关键字最小的元素如气泡一般逐渐往上“漂浮”直至“水面”。整个算

3、法是从最下面的元素开始,对每两个相邻元素的关键字进行比较,且使关键字较小的元素换至关键字较大的元素之上,使得经过一趟冒泡排序后,关键字最小的元素到达最上端。接着,再在剩下的元素中找关键字次小的元素,并把它换在第二个位置上。依次类推,一直到所有元素都有序为止。132738第六JS排序后1327S849第五趟排序后3813”49布 第四趟排序后384913274965第三趟排序后3S49651327而7«第一一趟排序后""65761327夜97第一趟排序后9857 637-9B台e座一F 4369712-4 同步3短与图1:冒泡排序算法思想2 .快速排序:快速排序是对

4、冒泡排序的一种改进。它的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字,则可分别对这两部分记录继续进行排序,以达到整个序列有序。1快速排序思想最终结果IA1A4|A3A6|A5A7MAO|A8|A9图2:快速排序算法思想3 .堆排序:堆排序只需要一个记录大小的辅助空间,每个待排序的记录仅占有一个存储空间。它的基本思想是:首先按大根堆的定义将R-n调整为堆(这个过程为初始建堆),交换R1和Rn(将最大元素R1归位,放到排序序列的最后)然后,将R1n-1调整为堆,交换R1和Rn-1;如此反复进行,直到交换了R1和R2为止。图3:堆排序算法思想4

5、 .基数排序:基数排序是属于“分配式排序”,基数排序法又称“桶子法”。顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O(nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的比较性排序法。19图4:基数排序算法思想2.31.商品信息的元素类型定义: typedef struct char num4;char name10;float price;int count;float sale;DataType;F面是针对本程序专门定义的数据结构类型node/*商品编号*/*商品

6、名称*/*单价*/*销售数量*/*本商品销售额*/2.存储商品信息的顺序表的定义:typedefstructDataTyperMaxSize;intlength;SequenList;2.4各组织结构与功能分析各商品信息在设计系统中的主要功能:按照各商品信息排序,根据要求所需的排序算法对商品编号、商品名称、单价、销售量和销售额进行一个排序。系统功能商品编号商品名称用基数排序用冒泡排序商品单价用冒泡排序用快速排序k 商品销售额 用堆排序图5:功能分析图3测试结果及其分析CM"F:xueli123Debuglieze认JA'坟JA'队.-.-八-1*主QE主QE主QE主Q

7、E主QE商该该该该0:<R,<":=1:2曷n.类的的的的种品品品三口号商商总:泉5DJ>弋上,-.000前一位为大写字母,后三位为数字)二的见主后主闫主后主闫电入遂直品的前聂轻苴弱无人该商品的患称闲面搭档前入该商品的单程5.皿言入该商品的销售量;34B125,刖一位为大写子母,后三位为数字八主闫主后主闫主-R加入该商品的编号(格式如二现入该商品的卡人该商品的俞入该商品的销售量中2好康师傅系列方便面1:2.50前一位为大写字母,后三位为数字)迷皿3主-R主闫主后主闫趣入该商品的等受格式如:输入该商品的名称百事可乐输入该商品的单位3皿输入该商品的销售量逐B125,刖一

8、位为大写子母,后三位为数字:D皿4后三位为数字E5;清风系列纸巾翻修黯整聚繇典匿需前一位为大写字母,请输人核需品的100.000000170.00000072180.000000135.000000180.000000图6:输入冏品编号、冏品名称、冏品单价和冏品销售量LN"F:xuelil23Debugli.exe*请输入该商品的错售量:钿商品编号商品名称单价销出数量销售额A001农夫山泉2.00000050B002洵面境档5.00000034C003康师傅系列方便面2.500000D004吉事可乐3.00000045E005清血系列纸巾4.50000040销售记录排序123450量

9、数额口lr#出售销销统品品品品口累商商商商商出房誓篇号排序后:商品名称一单价E005D004C003B002A001器,纸巾嘉色|列方便面错出数量4.5000003.0000005.0000002.000000错售额4045.5000003450180.000000135.00000072180.000000170.000000100.000000图7:按商品编号排序Q:zueli123Debugli.exe,销售记录排序123450量数额口1出售销销统品品品品口累商商商商商出E005B002A001C003D004画品至神里价遣风卷列纸币泡面常档农夫山泉一销出数量4.5000005.0000

10、002.000000销售额403450康师傅系列方便面2.500000百事可乐3.00000045销售记录排序180.000000170.000000100.00000072180.000000135.000000量数额出售错情统品品品品口累商商商商商中_.-._.-._.-._.-._.-.1-1.>>>>>>123450图8:按商品名称排序CM'F-xueli123DebugliezeB002E005D004C003A001单价销出数量5.0000004.5000003.0000002.000000销售额344045.50000050170.00

11、0000180.000000135.00000072180.000000100.000000销售记录排序艺编号0口1123450量数额出售错情统品品品品口累商商商商商出-乐列山序口端夫事即排商寰百住墙巾ft-m错出数量22.0000003.0000004.5000005.000000销售额5000005045403472180.000000100.000000135.000000180.000000170.000000图9:分别按商品单价和商品销出数量排序C003E005B002D004A00112 3 4 5 0量数额 口1出售销销统 品品品品口累 商商商商商出晶君矍里价销出数量师傅系列方使

12、面2啧凤羞列纸巾 圃面患档4.5000005.0000003.Q&QQQ&2.000000销售额5000004034455072180.000000180.000000170.000000135.000000100.000000销售记录排序量数额出售错情统 品品品品口累 商商商商商中 _ . _ . _ . _ . _ . .1 >>>>>> 12 3 4 5 0Q:zueli123Debugli.exe,销售记录排序图10:按商品销售额排序4小结通过这次课设,我学会了如何把数据结构的知识应用到实践当中,同时也进一步加深了对C/C+语言语法的

13、应用,以及深刻的掌握了数据结构和C/C+语言的结合运用。在编程过程中,遇到了许多问题,在一次次的运行错误后,问题被一步步改正,也从中学到了许多知识。虽然我的程序还不够完善,还需加以改进以实现更多的功能,但是我会尽我最大的努力去完成它,我相信我会努力去把程序做的更加完美。参考文献1王昆仑,李红等编著.数据结构与算法.北京:中国铁道出版社,2007.2苏仕华等编著.数据结构课程设计.北京:机械工业出版社,2005.3苏仕华编著.数据结构与算法解析.合肥:中国科学技术大学出版社,2004.4郭嵩山等著.国际大学生程序设计竞赛例题解.北京:电子工业出版社,2008.5刘大有,唐海鹰等编著.数据结构.北

14、京:高等教育出版社,2001.6徐孝凯编著.数据结构实用教程.北京:清华大学出版社,1999.7严蔚敏,陈文博编著.数据结构及算法教程.北京:清华大学出版社,2001.8刘振安,刘燕君等编著.C程序设计课程设计.北京:机械出版社,2004.9胡学钢.数据结构与算法设计指导.北京:清华大学出版社,1999.附录:程序源代码#include<stdio.h>#include<stdlib.h>#include<string.h>#definemaxsize100/该超市商品最大种类typedefstructnode/商品信息的存储结构类型定义charnum10;

15、/商品编号charname30;floatprice;/单价intcount;/销售量floatsale;销售额DataType;typedefstruct/存储商品信息的顺序表的定义DataTypermaxsize;intlength;inttype;SqList;voidnumber(SqList*L)/按商品编号排序inti,j;charnum110,name130;floatprice1,sale1;intcount1;for(i=0;i<L->type;i+)for(j=i+1;j<L->type;j+)if(strcmp(L->rj.num,L->

16、;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);price1=L->rj.price;L->rj.price=L->ri.price;L->ri.price=price1;count1=L->rj.count;L->rj.cou

17、nt=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;i<L->type;i+)printf("t%st%st%ft%dt%fn",L->ri.num,L->,L->ri.price,L->ri.count,

18、L->ri.sale);voidnam(SqList*L)/按商品名称排序inti,j;charnum110,name130;floatprice1,sale1;intcount1;for(i=0;i<L->type;i+)for(j=i+1;j<L->type;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->r

19、);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("

20、;t按商品编号排序后:n");printf("t商品编号商品名称单价销出数量销售额n");for(i=0;i<L->type;i+)printf("t%st%st%ft%dt%fn",L->ri.num,L->,L->ri.price,L->ri.count,L->ri.sale);voidpric(SqList*L)/按商品单价排序inti=0,j;charnum110,name130;floatprice1,sale1;intcount1;for(i=0;i<L->type

21、;i+)for(j=i+1;j<L->type;j+)if(L->rj.price>L->ri.price)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);price1=L->rj.price;L->rj.price=L->ri.price;L

22、->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;i<L->type;i+)printf("t%st%st%付dt%fn",L-&g

23、t;ri.num,L->,L->ri.price,L->ri.count,L->ri.sale);voidcoun(SqList*L)/按商品销出数量排序inti=0,j;charnum110,name130;floatprice1,sale1;intcount1;for(i=0;i<L->type;i+)for(j=i+1;j<L->type;j+)if(L->rj.count>L->ri.count)strcpy(num1,L->rj.num);strcpy(L->rj.num,L->ri.n

24、um);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.s

25、ale=L->ri.sale;L->ri.sale=sale1;printf("t按商品编号排序后:n");printf("t商品编号商品名称单价销出数量销售额n");for(i=0;i<L->type;i+)printf("t%st%st%ft%dt%fn",L->ri.num,L->,L->ri.price,L->ri.count,L->ri.sale);voidsales(SqList*L)/按商品销售额排序inti=0,j;charnum110,name130

26、;floatprice1,sale1;intcount1;for(i=0;i<L->type;i+)for(j=i+1;j<L->type;j+)if(L->rj.sale>L->ri.sale)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);pri

27、ce1=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;i<L-

28、>type;i+)printf("t%st%st%付dt%fn",L->ri.num,L->,L->ri.price,L->ri.count,L->ri.sale);voidmenu()printf("ttt销售记录排序n");printf("tn");printf("t|1)按商品编号|n");printf("t|2)按商品名称|n");printf("t|3)按商品单价|n");printf("t|4)按商品销出

29、数量|n");printf("t|5)按商品销售额|n");printf("t|0)退出系统|n");printf("tn");printf("请选择<05>");intmain()SqList*L;intn,i,m;charnum110,name130;floatprice1,sale1;intcountl;FILE*fp;L=(SqList*)malloc(sizeof(SqList);fp=fopen("medince.txt","w");/创建文件if(!fp)printf("Sorry!Fileopenerror!n");exit(0);printf("请输入商品种类数(<=100):");scanf("%d",&n);L->type=n;for(i=0;i<n;i+)printf(”请输入该商品的编号:");scanf("%s",num1);getchar();printf(”请输入该商品的名称:");scanf("%s",name1);get

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论