药店的药品销售统计系统Word文件下载.docx
- 文档编号:16438493
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:14
- 大小:101.27KB
药店的药品销售统计系统Word文件下载.docx
《药店的药品销售统计系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《药店的药品销售统计系统Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
对各药品的单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序等方法。
在本设计中,对单价的排序采用冒泡排序法,对销售量的排序采用快速排序法,对销售额的排序采用堆排序法。
药品信息的元素类型定义:
typedefstructnode
{charnum[4];
/*药品编号*/
charname[10];
/*药品名称*/
floatprice;
/*药品单价*/
intcount;
/*销售数量*/
floatsale;
/*本药品销售额*/
}DataType;
存储药品信息的顺序表的定义:
typedefstruct
{DataTyper[MaxSize];
intlength;
}SequenList;
2.算法设计分析
首先从txt文件中读取数据信息并保存,本次试验采用了5中排序方法。
其中编号排序是按照基数排序,采用多关键字进行排序。
基数排序是借助“分配”和“收集”两种操作对单逻辑关键字进行排序的一种内排序方法。
对单价的排序采用了直接插入排序和冒泡排序,直接插入排序就是首先将第一个元素看成是一个有序的,然后第二个元素和第一个比较,若大于第一个则放在其后面否则放前面,依次直至最后一个。
冒泡排序就是采用两个循环,即将第一个元素和第二个比较若第一个大于第二个则交换,否则不变,然后第二个和第三个比较,同上。
第一趟可将最大的一个放在最后,依次可得排序。
销售量是快速排序,快速排序就是首先设置一个关键字,然后让最后一个和其比较,直至找到一个比关键字小的,然后和其交换,接下来让第一个和其比较,直至找到一个比其大的,然后交换,在找到的位置分别做标记,依次执行即可。
销售额使用的是堆排序,堆排序首先要建立一个完全二叉树的堆,其标准符合为父节点始终比子节点大。
然后依次输出顶结点,然后在建立一个符合标准的堆重复操作即可。
3.流程图
四、调试分析与结果
输入药品的信息
按药品的编号。
按药品的名称。
按药品的销售额。
五、课设总结
六、附录(源代码)
#include<
stdio.h>
stdlib.h>
string.h>
#definemaxsize100//该医药公司药品最大种类
typedefstructnode//药品信息的存储结构类型定义
{
charnum[10];
//药品编号
charname[30];
floatprice;
//单价
//销售量
floatsale;
//销售额
}DataType;
typedefstruct//存储药品信息的顺序表的定义
DataTyper[maxsize];
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"
i++)
\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)>
0)
\t按药品名称排序后:
voidpric(SqList*L)//按药品单价排序
inti=0,j;
if(L->
r[j].price>
r[i].price)
{strcpy(num1,L->
price1=L->
printf("
\t按药品单价排序后:
voidcoun(SqList*L)//按药品销售量排序
r[j].count>
r[i].count)
\t按药品销售量排序后:
voidsales(SqList*L)//按药品销售额排序
r[j].sale>
r[i].sale)
\t按药品销售额排序后:
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>
"
main()
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);
L->
type=n;
n;
i++)
{
请输入该药品的编号(格式如:
B125,前一位为大写字母,后三位为数字):
%s"
num1);
getchar();
请输入该药品的名称:
name1);
请输入该药品的单价:
%f"
price1);
请输入该药品的销售量:
count1);
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,&
//从文件中读信息
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("
抱歉!
输入有误,请重新输入~~"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 药店 药品 销售 统计 系统