药店的药品销售统计系统排序应用1Word下载.docx
《药店的药品销售统计系统排序应用1Word下载.docx》由会员分享,可在线阅读,更多相关《药店的药品销售统计系统排序应用1Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
对单价的排序采用了直接插入排序和冒泡排序,直接插入排序就是首先将第一个元素看成是一个有序的,然后第二个元素和第一个比较,若大于第一个则放在其后面否则放前面,依次直至最后一个。
冒泡排序就是采用两个循环,即将第一个元素和第二个比较若第一个大于第二个则交换,否则不变,然后第二个和第三个比较,同上。
第一趟可将最大的一个放在最后,依次可得排序。
销售量是快速排序,快速排序就是首先设置一个关键字,然后让最后一个和其比较,直至找到一个比关键字小的,然后和其交换,接下来让第一个和其比较,直至找到一个比其大的,然后交换,在找到的位置分别做标记,依次执行即可。
销售额使用的是堆排序,堆排序首先要建立一个完全二叉树的堆,其标准符合为父节点始终比子节点大。
然后依次输出顶结点,然后在建立一个符合标准的堆重复操作即可。
四、调试分析及数据测试
输入药品
五、测试结果
测试结果符合程序写作要求
#include<
stdio.h>
stdlib.h>
string.h>
#definemaxsize100//该医药公司药品最大种类
typedefstructnode//药品信息的存储结构类型定义
{
charnum[10];
//药品编号
charname[30];
floatprice;
//单价
intcount;
//销售量
floatsale;
//销售额
}DataType;
typedefstruct//存储药品信息的顺序表的定义
DataTyper[maxsize];
intlength;
inttype;
}SqList;
voidnumber(SqList*L)//按药品编号排序
inti,j;
charnum1[10],name1[30];
floatprice1,sale1;
intcount1;
for(i=0;
i<
L->
type;
i++)
for(j=i+1;
j<
j++)
if(strcmp(L->
r[j].num,L->
r[i].num)>
0)
{strcpy(num1,L->
r[j].num);
strcpy(L->
r[i].num);
r[i].num,num1);
strcpy(name1,L->
r[j].name);
r[j].name,L->
r[i].name);
r[i].name,name1);
price1=L->
r[j].price;
L->
r[j].price=L->
r[i].price;
r[i].price=price1;
count1=L->
r[j].count;
r[j].count=L->
r[i].count;
r[i].count=count1;
sale1=L->
r[j].sale;
r[j].sale=L->
r[i].sale;
r[i].sale=sale1;
}
printf("
\t按药品编号排序后:
\n"
);
\t药品编号药品名称药品单价药品销售量药品销售额\n"
printf("
\t%s\t%s\t%f\t%d\t%f\n"
L->
r[i].num,L->
r[i].name,L->
r[i].price,L->
r[i].count,L->
r[i].sale);
}
voidnam(SqList*L)//按药品名称排序
r[i].name)>
voidpric(SqList*L)
inti=0,j;
if(L->
r[j].price>
r[i].price)
{strcpy(num1,L->
voidcoun(SqList*L)
r[j].count>
r[i].count)
voidsales(SqList*L)
r[j].sale>
r[i].sale)
voidmenu()
\t\t\t销售记录排序\n"
\t-----------------------------------------------\n"
\t|1)按药品编号|\n"
\t|2)按药品名称|\n"
\t|3)按药品单价|\n"
\t|4)按药品销售量|\n"
\t|5)按药品销售额|\n"
\t|0)退出系统|\n"
请选择<
0~5>
"
intmain()
SqList*L;
intn,i,m;
FILE*fp;
L=(SqList*)malloc(sizeof(SqList));
fp=fopen("
medince.txt"
"
w"
//创建文件
if(!
fp){printf("
Sorry!
Fileopenerror!
exit(0);
请输入药品种类数(<
=100):
scanf("
%d"
&
n);
type=n;
n;
i++)
{
请输入该药品的编号(格式如:
B125,前一位为大写字母,后三位为数字):
scanf("
%s"
num1);
getchar();
请输入该药品的名称:
name1);
请输入该药品的单价:
%f"
price1);
请输入该药品的销售量:
count1);
getchar();
sale1=price1*count1;
fprintf(fp,"
%s\t%s\t%f\t%d\t%f\n"
num1,name1,price1,count1,sale1);
fclose(fp);
length=0;
r"
fscanf(fp,"
r[i].name,&
r[i].price,&
r[i].count,&
//从文件中读信息
L->
length++;
while
(1)
{menu();
m);
switch(m)
case1:
number(L);
break;
case2:
nam(L);
case3:
pric(L);
case4:
coun(L);
case5:
sales(L);
case0:
default:
printf("
输入有误!