数据结构.docx
- 文档编号:25918450
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:16
- 大小:106.10KB
数据结构.docx
《数据结构.docx》由会员分享,可在线阅读,更多相关《数据结构.docx(16页珍藏版)》请在冰豆网上搜索。
数据结构
《数据结构》
课程设计报告
设计题目药品销售统计系统
学院名称信息工程学院
专业班级12计本1
姓名
学号
程序设计书目录
一.课程题目
二.设计目标
三.问题描述
四.需求分析
五.概要设计
六.详细设计(给出算法的伪码描述和流程图)
七.测试分析
八.使用说明
九.测试数据
一十.课程设计总结
1.课程题目:
药品销售统计系统
二.设计目标:
通过对药品销售统计系统的课程设计,加深队程序设计的理解,熟练掌握和加深c语言的基本知识和语法规范,同时更进一步地理解数据结构各种排序的应用,也提高了我们进行程序设计的基本能力。
这次课程设计提供一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼分析解决实际问题的能力,从而进一步提高了实际运用的能力。
3.问题描述:
设计一个系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号、单价、销售量或者销售额做出排名。
4.需求分析:
1.定义药品信息的结构体;
2.输入药品信息;
3.用冒泡排序法对药品单价排序;
4.用快速排序法对销售量排序;
5.用直接插入排序法和选择排序法对销售额排序;
6.打印内容。
5.概要设计:
1.本程序主要运用了结构体的定义、线性表的顺序存储、及函数调用的相关知识。
A.结构体的定义:
typedefstruct
{
charnum[10];/*药品编号*/
charname[16];/*药品名称*/
floatprice;/*药品单价*/
intcount;/*销售数量*/
floatsale;/*本药品销售额*/
intnext;
}DataType;
B.线性表的顺序存储:
typedefstruct
{
DataTyper[MaxSize];
intlength;
}SequenList;
2.进入主函数,开始进入while循环,输入药品的各类信息,输入完成后,显示菜单。
用户自己选择。
选择1,调用冒泡排序法对药品单价排序BubbleSort(SequenList&L);选择2,调用快速排序法对销售量排序QuickSort(SequenList*L);选择3,调用选择排序法对销售额排序SelectionSort(SequenList&L);选择0,提出系统。
六.详细设计:
总体操作步骤:
(1)流程图;
(2)分配存储空间,定义结构体,顺序表;
(3)输入数据,调用函数;
(4)完成操作。
流程图:
1.冒泡排序:
voidBubbleSort(SequenList&L)//冒泡排序
{
inti,j;
boolflag;
DataTypetemp;
for(i=L.length-1;i>=0;i--){
flag=0;
for(j=0;j
{
if(L.r[j].price>L.r[j+1].price)
{
temp=L.r[j];
L.r[j]=L.r[j+1];
L.r[j+1]=temp;
flag=1;
}
}
if(!
flag)break;
}
printf("按单价排序后的结果是:
\n");
for(i=0;i { printf("%s%s%f%d%f",L.r[i].num,L.r[i].name,L.r[i].price,L.r[i].count,L.r[i].sale); printf("\n"); } } 2.快速排序: voidQuickSort(SequenList*L)//快速排序 { inti; Qsort(L,0,L->length-1); printf("用快速排序对销售量排序后的结果是: \n"); for(i=0;i { printf("%s%s%f%d%f",L->r[i].num,L->r[i].name,L->r[i].price,L->r[i].count,L->r[i].sale); printf("\n"); } } 3.选择排序: voidSelectionSort(SequenList&L)//选择排序 { inti,j,min; DataTypetemp; for(i=0;i { min=i; for(j=i+1;j { if(L.r[j].sale min=j; temp=L.r[i]; L.r[i]=L.r[min]; L.r[min]=temp; } } for(i=0;i { printf("%s%s%f%d%f",L.r[i].num,L.r[i].name,L.r[i].price,L.r[i].count,L.r[i].sale); printf("\n"); } } 程序源代码: #include"stdio.h" #defineMaxSize100 typedefstruct { charnum[10];/*药品编号*/ charname[16];/*药品名称*/ floatprice;/*药品单价*/ intcount;/*销售数量*/ floatsale;/*本药品销售额*/ intnext; }DataType; typedefstruct { DataTyper[MaxSize]; intlength; }SequenList; voidBubbleSort(SequenList&L)//冒泡排序 { inti,j; boolflag; DataTypetemp; for(i=L.length-1;i>=0;i--){ flag=0; for(j=0;j { if(L.r[j].price>L.r[j+1].price) { temp=L.r[j]; L.r[j]=L.r[j+1]; L.r[j+1]=temp; flag=1; } } if(! flag)break; } printf("按单价排序后的结果是: \n"); for(i=0;i { printf("%s%s%f%d%f",L.r[i].num,L.r[i].name,L.r[i].price,L.r[i].count,L.r[i].sale); printf("\n"); } } voidswap(DataType*a,DataType*b) { DataTypetemp=*a; *a=*b; *b=temp; } voidQsort(SequenList*L,intLow,intHigh) { DataTypetemp=L->r[Low]; intleft=Low,right=High; if(Low>=High)return; swap(&L->r[Low],&L->r[right]); while (1) { while((Low while((Low if(Low swap(&L->r[Low],&L->r[High]); elsebreak; } swap(&L->r[Low],&L->r[right]);//对两个子集进行快排 Qsort(L,left,Low-1); Qsort(L,Low+1,right); } voidQuickSort(SequenList*L)//快速排序 { inti; Qsort(L,0,L->length-1); printf("用快速排序对销售量排序后的结果是: \n"); for(i=0;i { printf("%s%s%f%d%f",L->r[i].num,L->r[i].name,L->r[i].price,L->r[i].count,L->r[i].sale); printf("\n"); } } voidSelectionSort(SequenList&L)//选择排序 { inti,j,min; DataTypetemp; for(i=0;i { min=i; for(j=i+1;j { if(L.r[j].sale min=j; temp=L.r[i]; L.r[i]=L.r[min]; L.r[min]=temp; } } for(i=0;i { printf("%s%s%f%d%f",L.r[i].num,L.r[i].name,L.r[i].price,L.r[i].count,L.r[i].sale); printf("\n"); } } voidmain() { SequenListk; k.length=0; intchoice; while(k.length<5) { printf("---请输入药品编号---: "); scanf("%s",&k.r[k.length].num); printf("---请输入药品名称---: "); scanf("%s",&k.r[k.length].name); printf("---请输入药品单价---: "); scanf("%f",&k.r[k.length].price); printf("---请输入药品销售数量---: "); scanf("%d",&k.r[k.length].count); printf("---请输入药品销售额---: "); scanf("%f",&k.r[k.length].sale); k.length++; } printf("此系统有如下功能: \n"); printf("=========================================\n"); printf("1、用冒泡对药品单价排序*\n"); printf("2、用快排对药品销售量排序*\n"); printf("3、用选择排序对销售额排序*\n"); printf("0、退出系统*\n"); printf("=========================================\n"); printf("请输入您的选择: \n"); scanf("%d",&choice); while(choice) { switch(choice) { case1: BubbleSort(k);break;//冒泡排序 case2: QuickSort(&k);break;//快速排序 case3: SelectionSort(k);break;//选择排序 default: printf("没有您选择的功能,请确定后重新输入\n"); } printf("=========================================\n"); printf("1、用冒泡对药品单价排序*\n"); printf("2、用快排对药品销售量排序*\n"); printf("3、用选择排序对销售额排序*\n"); printf("0、退出系统*\n"); printf("=========================================\n"); printf("请输入您的选择: \n"); scanf("%d",&choice); } } 7.测试分析: 白盒: 代码完整,可运行。 √ 黑盒: 8.使用说明: 打开开始菜单找到VC++6.0,打开此软件,用鼠标单击文件菜单里的打开选项,导入文件,按ctrl+f7,看文件是否有错误,如果没有错误按ctrl+f5进行运行。 程序运行中首先需要输入药品的各类信息。 然后会出现菜单供大家选择,我们首先选择1,用冒泡排序法对药品单价排序,再回车,又出现菜单,供大家选择。 选择2,快速排序法对销售量排序,回车,出现菜单。 选择3,选择排序法对销售额排序,回车出现原始菜单。 我们选择0,退出。 九.测试数据: 输入药品信息: 1.用冒泡排序法对药品单价排序: 2.用快速排序法对销售量排序: 3.用直接插入排序法和选择排序法对销售额排序: 4.退出系统: 10.课程设计总结: 最后一次课程设计总算圆满结束了。 本次课程设计要求的是对排序的掌握,说实话觉得有点难。 以前只对冒泡有点了解,数据结构又学习了快速排序、简单插入排序、选择排序、希尔排序等等。 要全部掌握还是有点小困难。 所以课程设计要求下来,看了几遍书,查阅了不少资料。 总算勉强完成,但对于如何从文件中调用数据,还是不太会,由于时间问题,所以我就直接输入了数据,看来下去还得多做 研究和学习啊! 总之这四次课程设计,对我还是收获蛮大的! 我相信在以后的学习和工作中一定会让我受益匪浅的!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构