1、数据结构数据结构课程设计报告设计题目 药品销售统计系统 学院名称 信息工程学院 专 业 班 级 12计本1 姓 名 学 号 程序设计书目录一 课程题目二 设计目标三 问题描述四 需求分析五 概要设计六 详细设计(给出算法的伪码描述和流程图)七 测试分析八 使用说明九 测试数据一十 课程设计总结1.课程题目:药品销售统计系统二.设计目标: 通过对药品销售统计系统的课程设计,加深队程序设计的理解,熟练掌握和加深c语言的基本知识和语法规范,同时更进一步地理解数据结构各种排序的应用,也提高了我们进行程序设计的基本能力。这次课程设计提供一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合
2、起来,锻炼分析解决实际问题的能力,从而进一步提高了实际运用的能力。3问题描述: 设计一个系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号、单价、销售量或者销售额做出排名。4需求分析:1. 定义药品信息的结构体;2. 输入药品信息;3. 用冒泡排序法对药品单价排序;4. 用快速排序法对销售量排序;5. 用直接插入排序法和选择排序法对销售额排序;6. 打印内容。 5概要设计:1.本程序主要运用了结构体的定义、线性表的顺序存储、及函数调用的相关知识。A.结构体的定义:typedef struct char num10; /*药品编号*/ char name16; /*药品名称*/ f
3、loat price; /*药品单价*/ int count; /*销售数量*/ float sale; /*本药品销售额*/ int next;DataType; B线性表的顺序存储:typedef struct DataType rMaxSize; int length;SequenList;2. 进入主函数,开始进入while循环,输入药品的各类信息,输入完成后,显示菜单。用户自己选择。选择1,调用冒泡排序法对药品单价排序BubbleSort(SequenList &L);选择2,调用快速排序法对销售量排序QuickSort(SequenList *L);选择3,调用选择排序法对销售额排
4、序SelectionSort(SequenList &L) ;选择0,提出系统。六详细设计:总体操作步骤:(1) 流程图;(2) 分配存储空间,定义结构体,顺序表;(3)输入数据,调用函数;(4)完成操作 。 流程图: 1.冒泡排序: void BubbleSort(SequenList &L) /冒泡排序 int i,j; bool flag; DataType temp; for(i=L.length-1;i=0;i-) flag=0; for (j=0;jL.rj+1.price) temp=L.rj; L.rj=L.rj+1; L.rj+1=temp; flag=1; if(!flag
5、)break; printf(按单价排序后的结果是:n); for (i=0;ilength-1); printf(用快速排序对销售量排序后的结果是:n); for( i=0;ilength;i+) printf(%s %s %f %d %f,L-ri.num,L-ri.name,L-ri.price,L-ri.count,L-ri.sale); printf(n); 3.选择排序: void SelectionSort(SequenList &L) /选择排序 int i,j,min; DataType temp; for(i=0;iL.length-1;i+) min=i; for(j=i
6、+1;jL.length;j+) if(L.rj.sale L.rmin.sale) min=j; temp=L.ri; L.ri=L.rmin; L.rmin=temp; for( i=0;i=0;i-) flag=0; for (j=0;jL.rj+1.price) temp=L.rj; L.rj=L.rj+1; L.rj+1=temp; flag=1; if(!flag)break; printf(按单价排序后的结果是:n); for (i=0;irLow; int left=Low,right=High; if(Low=High)return; swap(&L-rLow,&L-rrig
7、ht); while(1) while(Low=L-rLow.count ) Low+; while(LowHigh)&(temp.count rHigh.count ) High-; if(LowrLow,&L-rHigh); else break; swap(&L-rLow,&L-rright); /对两个子集进行快排 Qsort(L,left,Low-1); Qsort(L,Low+1,right);void QuickSort(SequenList *L)/快速排序 int i; Qsort(L,0,L-length-1); printf(用快速排序对销售量排序后的结果是:n); fo
8、r( i=0;ilength;i+) printf(%s %s %f %d %f,L-ri.num,L-ri.name,L-ri.price,L-ri.count,L-ri.sale); printf(n); void SelectionSort(SequenList &L) /选择排序 int i,j,min; DataType temp; for(i=0;iL.length-1;i+) min=i; for(j=i+1;jL.length;j+) if(L.rj.sale L.rmin.sale) min=j; temp=L.ri; L.ri=L.rmin; L.rmin=temp; fo
9、r( i=0;iL.length;i+) printf(%s %s %f %d %f,L.ri.num,L.ri.name,L.ri.price,L.ri.count,L.ri.sale); printf(n); void main() SequenList k; k.length=0; int choice; while (k.length5) printf(-请输入药品编号-:); scanf(%s,&k.rk.length.num); printf(-请输入药品名称-:); scanf(%s,&k.rk.length.name); printf(-请输入药品单价-:); scanf(%f
10、,&k.rk.length.price); printf(-请输入药品销售数量-:); scanf(%d,&k.rk.length.count); printf(-请输入药品销售额-:); scanf(%f,&k.rk.length.sale); k.length+; printf(此系统有如下功能:n); printf( =n); printf( 1、用冒泡对药品单价排序 *n); printf( 2、用快排对药品销售量排序 * n); printf( 3、用选择排序对销售额排序 * n); printf( 0、退出系统 * n); printf( = n); printf(请输入您的选择:
11、n); scanf(%d,&choice); while (choice) switch(choice) case 1:BubbleSort(k);break; /冒泡排序 case 2:QuickSort(&k);break; /快速排序 case 3:SelectionSort(k);break; /选择排序 default:printf(没有您选择的功能,请确定后重新输入 n); printf( =n); printf( 1、用冒泡对药品单价排序 *n); printf( 2、用快排对药品销售量排序 * n); printf( 3、用选择排序对销售额排序 * n); printf( 0、
12、退出系统 * n); printf( = n); printf(请输入您的选择:n); scanf(%d,&choice); 7测试分析:白盒:代码完整,可运行。 黑盒:8使用说明: 打开开始菜单找到VC+6.0,打开此软件,用鼠标单击文件菜单里的打开选项,导入文件,按ctrl+f7,看文件是否有错误,如果没有错误按ctrl+f5进行运行。程序运行中首先需要输入药品的各类信息。然后会出现菜单供大家选择,我们首先选择1,用冒泡排序法对药品单价排序,再回车,又出现菜单,供大家选择。选择2,快速排序法对销售量排序,回车,出现菜单。选择3,选择排序法对销售额排序,回车出现原始菜单。我们选择0,退出。九
13、测试数据: 输入药品信息: 1.用冒泡排序法对药品单价排序:2.用快速排序法对销售量排序:3.用直接插入排序法和选择排序法对销售额排序:4.退出系统: 10课程设计总结: 最后一次课程设计总算圆满结束了。本次课程设计要求的是对排序的掌握,说实话觉得有点难。以前只对冒泡有点了解,数据结构又学习了快速排序、简单插入排序、选择排序、希尔排序等等。要全部掌握还是有点小困难。所以课程设计要求下来,看了几遍书,查阅了不少资料。总算勉强完成,但对于如何从文件中调用数据,还是不太会,由于时间问题,所以我就直接输入了数据,看来下去还得多做研究和学习啊! 总之这四次课程设计,对我还是收获蛮大的!我相信在以后的学习和工作中一定会让我受益匪浅的!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1