药店的药品销售统计系统的设计与实现.docx

上传人:b****1 文档编号:14041452 上传时间:2023-06-20 格式:DOCX 页数:12 大小:171.50KB
下载 相关 举报
药店的药品销售统计系统的设计与实现.docx_第1页
第1页 / 共12页
药店的药品销售统计系统的设计与实现.docx_第2页
第2页 / 共12页
药店的药品销售统计系统的设计与实现.docx_第3页
第3页 / 共12页
药店的药品销售统计系统的设计与实现.docx_第4页
第4页 / 共12页
药店的药品销售统计系统的设计与实现.docx_第5页
第5页 / 共12页
药店的药品销售统计系统的设计与实现.docx_第6页
第6页 / 共12页
药店的药品销售统计系统的设计与实现.docx_第7页
第7页 / 共12页
药店的药品销售统计系统的设计与实现.docx_第8页
第8页 / 共12页
药店的药品销售统计系统的设计与实现.docx_第9页
第9页 / 共12页
药店的药品销售统计系统的设计与实现.docx_第10页
第10页 / 共12页
药店的药品销售统计系统的设计与实现.docx_第11页
第11页 / 共12页
药店的药品销售统计系统的设计与实现.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

药店的药品销售统计系统的设计与实现.docx

《药店的药品销售统计系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《药店的药品销售统计系统的设计与实现.docx(12页珍藏版)》请在冰点文库上搜索。

药店的药品销售统计系统的设计与实现.docx

药店的药品销售统计系统的设计与实现

程序设计与算法综合训练》设计报告7

学号:

E11514064姓名:

汪泓章年级:

大一专业:

计科

项目名称:

药店的药品销售统计系统的设计与实现完成日期:

2016年7月6日

1.需求分析

 

(1)问题描述

设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号、单价、销售量或销售额做出排名。

 

(2)基本要求

1)药品的信息包括:

药品编号、药名、药品单价、销出数量、销售额。

其中药品编号共4位,采用字母和数字混合编号,如:

A125,前一位为大写字母,后三位为数字;

2)从数据文件中读出各药品的信息记录,存储在顺序表中;

3)按药品编号进行排序时,可采用基数排序法。

4)对各药品的单价、销售量或销售额进行排序时,可采用多种排序方法。

要求对单价的排序采用冒泡排序法,对销售量的排序采用快速排序法,对销售额的排序采用堆排序法。

5)按照题意要求独立进行设计,设计结束后按要求写出设计报告。

①输入的形式和输入值的范围:

8种药品的编号、名称、单价、销售量、销售额。

②输出的形式:

药品按单价、销售量、销售额由低到高输出。

③程序所能达到的功能:

通过三种不同的排序方法实现对药品信息的处理,极大的降低了药店的工作量。

2.概要设计 

(1) 数据结构 

药品信息的元素类型定义:

typedefstructnode

{charnum[4];

charname[10]

floatprice;

intcount;

floatsale;

}Datatype;

存储药品信息的顺序表定义:

Typedefstruct

{DataTyper[MaxSize];

(2)程序模块

(3) 各模块之间的调用关系以及算法设计

3.详细设计 

程序设计主要分为以下几个步骤:

1)建立主函数

先进行文件读取,然后通过swtich函数来完成对用户需求的读取,调用三个排序函数。

2)设置用户操作菜单

3)三种排序算法的设计

a.按单价排序(冒泡)

voidpricebubble(medicine*data)

{inti,j;

i=9;

while(i>=1)

{for(j=1;j<=i;j++)

if(data[j].price>data[j+1].price)

change(&data[j],&data[j+1]);

i=j-2;

}

b.按销售量排序(快速排序)

voidsellsort(medicine*data,intlow,inthigh)

{inti,j;

if(low

{j=sellpartition(data,low,high);

sellsort(data,low,j-1);

sellsort(data,j+1,high);

}

c.按销售额排序(堆排序)

voidmoneysort(medicine*data)

{inti;

for(i=5;i>=1;i--)

moneyhead(data,i,10);

change(&data[1],&data[10]);

for(i=1;i<=8;i++)

{moneyhead(data,1,10-i);

change(&data[1],&data[10-i]);}

d.按编号排序(冒泡法)

注:

由于是后来做的,不同于前三种排序程序中的变量名。

4.测试与分析

按编号排序:

 

5.总结

通过本次实验,培养了我关于系统的设计理念,掌握具体的编程方法,提高了个人的综合实践能力。

另外,自己对于基数排序法这一块还不够熟悉,得重新学习一遍。

6.附录

源程序清单:

主程序代码:

#include

typedefstruct

{

charnumber[5];

charname[10];

floatprice;

intsell;

intmoney;

}medicine;

voidchange(medicine*p1,medicine*p2)

{medicinea;

strcpy(a.number,p1->number);strcpy(a.name,p1->name);

a.money=p1->money;a.price=p1->price;a.sell=p1->sell;

strcpy(p1->number,p2->number);strcpy(p1->name,p2->name);

p1->money=p2->money;p1->price=p2->price;p1->sell=p2->sell;

strcpy(p2->number,a.number);strcpy(p2->name,a.name);

p2->money=a.money;p2->price=a.price;p2->sell=a.sell;

}

voidpricebubble(medicine*data)

{inti,j;

i=9;

while(i>=1)

{for(j=1;j<=i;j++)

if(data[j].price>data[j+1].price)

change(&data[j],&data[j+1]);

i=j-2;

}

printf("按单价排序:

\n");

printf("编号名字单价销售量销售额\n");

for(i=1;i<=10;i++)

printf("%s%-8s%-4.1f%-4d%-5d\n",data[i].number,data[i].name,data[i].price,data[i].sell,data[i].money);

}

 

intsellpartition(medicine*data,intlow,inthigh)

{intpocket;

pocket=data[low].sell;

while(low

{while(data[high].sell>=pocket&&low

change(&data[low],&data[high]);

while(data[low].sell<=pocket&&low

change(&data[low],&data[high]);

}

return(low);

}

voidsellsort(medicine*data,intlow,inthigh)

{inti,j;

if(low

{j=sellpartition(data,low,high);

sellsort(data,low,j-1);

sellsort(data,j+1,high);

}

if(low==1&&high==10)

{printf("按销售量排序:

\n");

printf("编号名字单价销售量销售额\n");

for(i=1;i<=10;i++)

printf("%s%-8s%-4.1f%-4d%-5d\n",data[i].number,data[i].name,data[i].price,data[i].sell,data[i].money);}

}

voidmoneyhead(medicine*data,ints,intm)

{intt;

t=s*2;

while(t<=m)

{if(tdata[t].money)t++;

if(data[t].money>data[s].money)change(&data[t],&data[s]);

s=t;t=s*2;

}

}

voidmoneysort(medicine*data)

{inti;

for(i=5;i>=1;i--)

moneyhead(data,i,10);

change(&data[1],&data[10]);

for(i=1;i<=8;i++)

{moneyhead(data,1,10-i);

change(&data[1],&data[10-i]);}

printf("按销售额排序:

\n");

printf("编号名字单价销售量销售额\n");

for(i=1;i<=10;i++)

printf("%s%-8s%-4.1f%-4d%-5d\n",data[i].number,data[i].name,data[i].price,data[i].sell,data[i].money);

}

voidmenu()

{

printf("\t\t\t销售记录排序\n");

printf("\t----------------------------\n");

printf("\t|1.按药品单价|\n");

printf("\t|2.按药品销售量|\n");

printf("\t|3.按药品销售额|\n");

printf("\t|0.退出系统|\n");

printf("\t----------------------------\n");

printf("请选择<0~3>");

}

voidmain()

{intm;

medicinedata[11];FILE*fp;

fp=fopen("ElemTypedata","rb");

fread(&data[1],sizeof(medicine),10,fp);

while

(1)

{menu();

scanf("%d",&m);

switch(m)

{

case1:

pricebubble(data);break;

case2:

sellsort(data,1,10);break;

case3:

moneysort(data);break;

case0:

exit(0);break;

default:

printf("抱歉!

输入有误,请重新输入!

");break;

}

}

}

按编号排序:

#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;itype;i++)

for(j=i+1;jtype;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;

count1=L->r[j].count;

L->r[j].count=L->r[i].count;

L->r[i].count=count1;

sale1=L->r[i].sale;

L->r[i].sale=sale1;

//判断两个数的大小

}

printf("\t按药品编号排序后:

\n");

printf("\t药品编号药品名称药品单价药品销售量药品销售额\");

for(i=0;itype;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);

}

读取文件程序代码:

#include

typedefstruct

{

charbh[5];

charname[8];

intprice;

intnum;

intmoney;

}ElemType;

voidmain()

{FILE*fp;ElemTypedata[10];inti;

fp=fopen("ElemTypedata","wb");

for(i=0;i<10;i++)

scanf("%s%s%d%d%d",data[i].bh,data[i].name,&data[i].price,&data[i].num,&data[i].money);

fwrite(data,sizeof(ElemType),10,fp);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2