1、对单价的排序采用了直接插入排序和冒泡排序,直接插入排序就是首先将第一个元素看成是一个有序的,然后第二个元素和第一个比较,若大于第一个则放在其后面否则放前面,依次直至最后一个。冒泡排序就是采用两个循环,即将第一个元素和第二个比较若第一个大于第二个则交换,否则不变,然后第二个和第三个比较,同上。第一趟可将最大的一个放在最后,依次可得排序。销售量是快速排序,快速排序就是首先设置一个关键字,然后让最后一个和其比较,直至找到一个比关键字小的,然后和其交换,接下来让第一个和其比较,直至找到一个比其大的,然后交换,在找到的位置分别做标记,依次执行即可。销售额使用的是堆排序,堆排序首先要建立一个完全二叉树的堆
2、,其标准符合为父节点始终比子节点大。然后依次输出顶结点,然后在建立一个符合标准的堆重复操作即可。四、调试分析及数据测试输入药品五、测试结果测试结果符合程序写作要求#includestdlib.hstring.h#define maxsize 100 /该医药公司药品最大种类typedef struct node /药品信息的存储结构类型定义 char num10; /药品编号 char name30; float price; /单价 int count; /销售量 float sale; /销售额DataType;typedef struct /存储药品信息的顺序表的定义 DataType
3、rmaxsize; int length; int type;SqList;void number(SqList *L) /按药品编号排序 int i,j; char num110,name130; float price1,sale1; int count1; for(i=0;itype;i+) for(j=i+1;jrj.num,L-ri.num)0) strcpy(num1,L-rj.num); strcpy(L-ri.num);ri.num,num1); strcpy(name1,L-rj.name);rj.name,L-ri.name);ri.name,name1); price1=
4、L-rj.price; L-rj.price=L-ri.price;ri.price=price1; count1=L-rj.count;rj.count=L-ri.count;ri.count=count1; sale1=L-rj.sale;rj.sale=L-ri.sale;ri.sale=sale1; printf(t按药品编号排序后:n);t药品编号 药品名称 药品单价 药品销售量 药品销售额n printf(t %st %st %ft %dt %fn,L-ri.num,L-ri.name,L-ri.price,L-ri.count,L-ri.sale);void nam(SqList
5、 *L) /按药品名称排序ri.name)void pric(SqList *L) int i=0,j; if(L-rj.priceri.price) strcpy(num1,L-void coun(SqList *L)rj.countri.count)void sales(SqList *L)rj.saleri.sale)void menu()ttt销售记录排序nt-nt| 1)按药品编号 |nt| 2)按药品名称 |nt| 3)按药品单价 |nt| 4)按药品销售量 |nt| 5)按药品销售额 |nt| 0)退出系统 |n 请选择int main() SqList *L; int n,i,m; FILE *fp; L=(SqList*)malloc(sizeof(SqList); fp=fopen(medince.txt,w /创建文件 if(!fp) printf(Sorry! File open error!exit(0);请输入药品种类数(length+; while(1) menu();m); switch(m) case 1:number(L);break; case 2:nam(L); case 3:pric(L); case 4:coun(L); case 5:sales(L); case 0: default:printf(输入有误!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1