文档介绍:该【药店的药品销售统计系统) 】是由【泰山小桥流水】上传分享,文档一共【11】页,该文档可以免费在线阅读,需要了解更多关于【药店的药品销售统计系统) 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。一、设计题目
[问题描述]
设计一系统,实现医药企业按期对销售各药品的记录进行统计,可按药品的编号、
单价、销售量或销售额做出排名。
二、需求解析
药品的销售统计是在利用电脑的实现生活中的需求,在现在医疗事业蓬勃的发展下,药店的药品数目也日趋的增加,依据社会的需求,在这类大潮的推进力下药店药品的销售管理系统成了迫切的需要,在这类大前提下,我们实现了这样的系统来完成药品的销售统计。今年来,药品零售业的格局,出现了很大的变化医药改革为零售药房,特别是为连锁药房供给了广阔的发展空间。医药企业自己发展也提出了自己发展也提出了改革的要求。企业化、代理制等形式的出现打破了过去暗自域行政区划分成立的医药流通格局,重批发轻工业零售的传统看法正跟着改革的深入而逐渐发生着变化,特别是医药零售行业早已打破了过去那种国有医药一统天下的场面,这也迫使好多医药企业纷纷适应市场变化的要求进行零分设的改革,利用原有医药零售网店的基础建设成立连锁药房,这即成为医药企业改革噶站的必然热门,有形成这些企业参加市场竞争的经济增加点,再这样的大环境之下,药店基本现状有好多状况。
一、药店的功能和经验要点发生了根天性的转变。
二、药店的布局不合理。各地药店纷纷开业,甚至出现了有点多过于米店的场面,
而且出现了扎堆经营的现象。
三、药店规模相对偏小,缺少市场竞争力。
四、堕入议论竞争的泥潭,低层次的价格竞争,使好多药店到了举步维艰的地步。
五、药店经营成本在提升,利润在降落。
六、企业整体服务意识淡漠,从业人员缺少专业素质。
由于这些现状,药店销售管理系统的研发也是火烧眉毛,目前市场上拥有的各种系统软件也由于药店这样的状况,而存在同样的状况。
三、算法设计
算法思想
在本设计中,第一从数据文件中读出各药品的信息记录,储存在序次表中。各药品的信息包含:药品编号、药名、药品单价、销出数目、销售额。药品编号
共4位,采纳字母和数字混杂编号,如:A125,前一位为大写字母,后三位为数字,按药品编号进行排序时,可采纳基数排序法。对各药品的单价、销售量或销售额进行排序时,可采纳多种排序方法,如直接插入排序、冒泡排序、快
速排序,直接选择排序等方法。在本设计中,对单价的排序采纳冒泡排序法,
对销售量的排序采纳快速排序法,对销售额的排序采纳堆排序法。
药品信息的元素种类定义:
typedefstructnode
{charnum[4];/*
药品编号*/
charname[10];/*
药品名称*/
floatprice;/*
药品单价
*/
intcount;/*
销售数目*/
floatsale;/*
本药品销售额
*/
}DataType;
储存药品信息的序次表的定义:
typedefstruct
{DataTyper[MaxSize];intlength;
}SequenList;
算法设计解析
第一从txt文件中读取数据信息并保存,本次试验采纳了5中排序
方法。此中编号排序是依据基数排序,采纳多要点字进行排序。基数排
序是借助“分配”和“采集”两种操作对单逻辑要点字进行排序的一种
内排序方法。对单价的排序采纳了直接插入排序和冒泡排序,直接插入
排序就是第一将第一个元素看作是一个有序的,而后第二个元素和第一
个比较,若大于第一个则放在以后面不然放前面,挨次直至最后一个。
冒泡排序就是采纳两个循环,马上第一个元素和第二个比较若第一个大
于第二个则交换,不然不变,而后第二个和第三个比较,同上。第一趟
可将最大的一个放在最后,挨次可得排序。销售量是快速排序,快速排
序就是第一设置一个要点字,而后让最后一个和其比较,直至找到一个
比要点字小的,而后和其交换,接下来让第一个和其比较,直至找到一
个比其大的,而后交换,在找到的地址分别做标志,挨次执行即可。销
售额使用的是堆排序,堆排序第一要成立一个完整二叉树的堆,其标准
吻合为父节点一直比子节点大。而后挨次输出顶结点,而后在成立一个
吻合标准的堆重复操作即可。
流程图
进入
登录
系统管理销售管理库存管理
基本管理
有否进
单
进退货
查察销售
查察进退货
信息
查察库存
改写库存
改写数据库
退出
四、调试解析与结果
输入药品的信息
按药品的编号。
按药品的名称。
按药品的销售额。
五、课设总结
六、附录(源代码)
#include<>
#include<>
#include<>
#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<L->type;j++)
if(strcmp(L->r[j].num,L->r[i].num)>0)
//
判断两个数的大
小,
{strcpy(num1,L->r[j].num);
strcpy(L->r[j].num,L->r[i].num);
strcpy(L->r[i].num,num1);
strcpy(name1,L->r[j].name);
strcpy(L->r[j].name,L->r[i].name);
strcpy(L->r[i].name,name1);
price1=L->r[j].price;
L->r[j].price=L->r[i].price;
L->r[i].price=price1;
count1=L->r[j].count;
L->r[j].count=L->r[i].count;
L->r[i].count=count1;
sale1=L->r[j].sale;
L->r[j].sale=L->r[i].sale;
L->r[i].sale=sale1;
}
printf("\t按药品编号排序后:\n");
printf("\t药品编号药品名称药品单价药品销售量药品销售额
\n");
for(i=0;i<L->type;i++)
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)//按药品名称排序
{
inti,j;
charnum1[10],name1[30];
floatprice1,sale1;
intcount1;
for(i=0;i<L->type;i++)
for(j=i+1;j<L->type;j++)
if(strcmp(L->r[j].name,L->r[i].name)>0)
{strcpy(num1,L->r[j].num);strcpy(L->r[j].num,L->r[i].num);
strcpy(L->r[i].num,num1);
strcpy(name1,L->r[j].name);
strcpy(L->r[j].name,L->r[i].name);
strcpy(L->r[i].name,name1);
price1=L->r[j].price;
L->r[j].price=L->r[i].price;
L->r[i].price=price1;
count1=L->r[j].count;
L->r[j].count=L->r[i].count;
L->r[i].count=count1;
sale1=L->r[j].sale;
L->r[j].sale=L->r[i].sale;
L->r[i].sale=sale1;
}
printf("\t按药品名称排序后:\n");
printf("\t药品编号药品名称药品单价药品销售量药品销售额
\n");
for(i=0;i<L->type;i++)
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);
}
voidpric(SqList*L)//按药品单价排序
{
inti=0,j;
charnum1[10],name1[30];
floatprice1,sale1;
intcount1;
for(i=0;i<L->type;i++)
for(j=i+1;j<L->type;j++)
if(L->r[j].price>L->r[i].price)
{strcpy(num1,L->r[j].num);
strcpy(L->r[j].num,L->r[i].num);
strcpy(L->r[i].num,num1);
strcpy(name1,L->r[j].name);
strcpy(L->r[j].name,L->r[i].name);
strcpy(L->r[i].name,name1);
price1=L->r[j].price;
L->r[j].price=L->r[i].price;
L->r[i].price=price1;
count1=L->r[j].count;
L->r[j].count=L->r[i].count;
L->r[i].count=count1;
sale1=L->r[j].sale;
L->r[j].sale=L->r[i].sale;
L->r[i].sale=sale1;
}
printf("\t按药品单价排序后:\n");
printf("\t药品编号药品名称药品单价药品销售量药品销售额
\n");
for(i=0;i<L->type;i++)
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);
}
voidcoun(SqList*L)//按药品销售量排序
{
inti=0,j;
charnum1[10],name1[30];
floatprice1,sale1;
intcount1;
for(i=0;i<L->type;i++)
for(j=i+1;j<L->type;j++)
if(L->r[j].count>L->r[i].count)
{strcpy(num1,L->r[j].num);
strcpy(L->r[j].num,L->r[i].num);
strcpy(L->r[i].num,num1);
strcpy(name1,L->r[j].name);
strcpy(L->r[j].name,L->r[i].name);
strcpy(L->r[i].name,name1);
price1=L->r[j].price;
L->r[j].price=L->r[i].price;
L->r[i].price=price1;
count1=L->r[j].count;
L->r[j].count=L->r[i].count;
L->r[i].count=count1;
sale1=L->r[j].sale;
L->r[j].sale=L->r[i].sale;
L->r[i].sale=sale1;
}
printf("\t按药品销售量排序后:\n");
printf("\t药品编号药品名称药品单价药品销售量药品销售额
\n");
for(i=0;i<L->type;i++)
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);
}
voidsales(SqList*L)//按药品销售额排序
{
inti=0,j;
charnum1[10],name1[30];
floatprice1,sale1;
intcount1;
for(i=0;i<L->type;i++)
for(j=i+1;j<L->type;j++)
if(L->r[j].sale>L->r[i].sale)
{strcpy(num1,L->r[j].num);
strcpy(L->r[j].num,L->r[i].num);
strcpy(L->r[i].num,num1);
strcpy(name1,L->r[j].name);
strcpy(L->r[j].name,L->r[i].name);
strcpy(L->r[i].name,name1);
price1=L->r[j].price;
L->r[j].price=L->r[i].price;
L->r[i].price=price1;
count1=L->r[j].count;
L->r[j].count=L->r[i].count;
L->r[i].count=count1;
sale1=L->r[j].sale;
L->r[j].sale=L->r[i].sale;
L->r[i].sale=sale1;
}
printf("\t按药品销售额排序后:\n");
printf("\t药品编号药品名称药品单价药品销售量药品销售额
\n");
for(i=0;i<L->type;i++)
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);
}
voidmenu()
{
printf("\t\t\t
销售记录排序\n");
printf("\t-----------------------------------------------
\n");
printf("\t|
1)
按药品编号
|\n");
printf("\t|
2)
按药品名称
|\n");
printf("\t|
3)
按药品单价
|\n");
printf("\t|
4)
按药品销售量
|\n");
printf("\t|
5)
按药品销售额
|\n");
printf("\t|
0)
退出系统
|\n");
printf("\t-----------------------------------------------
\n");
printf("
请选择<0~5>");
}
main()
{
SqList*L;
intn,i,m;
charnum1[10],name1[30];
floatprice1,sale1;
intcount1;
FILE*fp;
L=(SqList*)malloc(sizeof(SqList));
fp=fopen("","w");//创办文件if(!fp){printf("Sorry!Fileopenerror!\n");exit(0);}printf("请输入药品种类数(<=100):");scanf("%d",&n);
L->type=n;
for(i=0;i<n;i++)
{
printf("请输入该药品的编号(格式如:B125,前一位为大写字母,后三
位为数字):");
scanf("%s",num1);
getchar();
printf("请输入该药品的名称:");
scanf("%s",name1);
getchar();
printf("请输入该药品的单价:");
scanf("%f",&price1);
printf("请输入该药品的销售量
:");
scanf("%d",&count1);getchar();
sale1=price1*count1;//
销售额=单价*销售量
fprintf(fp,"%s\t%s\t%f\t%d\t%f\n",num1,name1,price1,count1,sale1);
printf("\n");
}
fclose(fp);//关闭文件
L->length=0;
fp=fopen("","r");
if(!fp){printf("Sorry!Fileopenerror!");exit(0);}
for(i=0;i<n;i++)
{
fscanf(fp,"%s\t%s\t%f\t%d\t%f\n",L->r[i].num,L->r[i].name,&L->r[i].pric
e,&L->r[i].count,&L->r[i].sale);//从文件中读信息
L->length++;
}
fclose(fp);
printf("\t
药品编号
药品名称
药品单价
药品销售量
药品销售额
\n");
for(i=0;i<L->type;i++)
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);
while(1)//循环结构
{menu();
scanf("%d",&m);
switch(m)
{
case1:number(L);break;
case2:nam(L);break;
case3:pric(L);break;
case4:coun(L);break;
case5:sales(L);break;
case0:exit(0);break;
default:printf("对不起!输入有误,请重新输入~~");break;
}