药店的药品销售统计系统Word格式文档下载.docx

上传人:b****6 文档编号:19778474 上传时间:2023-01-10 格式:DOCX 页数:12 大小:46.53KB
下载 相关 举报
药店的药品销售统计系统Word格式文档下载.docx_第1页
第1页 / 共12页
药店的药品销售统计系统Word格式文档下载.docx_第2页
第2页 / 共12页
药店的药品销售统计系统Word格式文档下载.docx_第3页
第3页 / 共12页
药店的药品销售统计系统Word格式文档下载.docx_第4页
第4页 / 共12页
药店的药品销售统计系统Word格式文档下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

药店的药品销售统计系统Word格式文档下载.docx

《药店的药品销售统计系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《药店的药品销售统计系统Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。

药店的药品销售统计系统Word格式文档下载.docx

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

A125,前一位为大写字母,后三位为数字,按药品编号进行排序时,可采用基数排序法。

对各药品的单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序等方法。

在本设计中,对单价的排序采用冒泡排序法,对销售量的排序采用快速排序法,对销售额的排序采用堆排序法。

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

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];

//单价

//销售量

//销售额

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)

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);

type=n;

n;

请输入该药品的编号(格式如:

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,&

//从文件中读信息

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:

抱歉!

输入有误,请重新输入~~"

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

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1