




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、设计题目、问题描述 设计一系统,实现医药公司定期对销售各药品的记录进行统计, 可按药品的编号、 单价、 销售量或销售额做出排名。二、需求分析药品的销售统计是在利用电脑的实现生活中的需求, 在如今医疗事业蓬勃的发展下, 药 店的药品数目也日益的增多, 根据社会的需求, 在这种大潮的推动力下药店药品的销售管理 系统成了迫切的需要,在这种大前提下,我们实现了这样的系统来完成药品的销售统计。今 年来,药品零售业的格局,出现了很大的变化医药改革为零售药房,特别是为连锁药房提供 了广阔的发展空间。医药企业自身发展也提出了自身发展也提出了改革的要求。集团化、代 理制等形式的出现打破了过去暗地域行政区划分设立
2、的医药流通格局, 重批发轻工业零售的 传统观念正随着改革的深入而逐步发生着变化, 特别是医药零售行业早已打破了过去那种国 有医药一统天下的局面, 这也迫使许多医药企业纷纷适应市场变化的要求进行零分设的改革, 利用原有医药零售网店的基础建设建立连锁药房,这即成为医药企业改革噶站的必然热点, 有形成这些企业参与市场竞争的经济增长点, 再这样的大环境之下, 药店基本现状有很多情 况。一、药店的功能和经验重点发生了根本性的转变。二、药店的布局不合理。各地药店纷纷开业,甚至出现了有点多过于米店的局面,并且 出现了扎堆经营的现象。三、药店规模相对偏小,缺乏市场竞争力。四、陷入评价竞争的泥潭,低层次的价格竞
3、争,使很多药店到了举步维艰的地步。五、药店经营成本在提高,利润在下降。六、企业整体服务意识淡薄,从业人员缺乏专业素质。因为这些现状, 药店销售管理系统的研发也是迫在眉睫, 目前市场上拥有的各种系统软 件也因为药店这样的状况,而存在相同的状况。三、算法设计1. 算法思想 在本设计中,首先从数据文件中读出各药品的信息记录,存储在顺序表中。各药品 的信息包括:药品编号、药名、药品单价、销出数量、销售额。药品编号共4 位,采用字母和数字混合编号,如:A125,前一位为大写字母,后三位为数字,按药品 编号进行排序时,可采用基数排序法。对各药品的单价、销售量或销售额进行排序 时,可采用多种排序方法,如直接
4、插入排序、冒泡排序、快速排序,直接选择排序 等方法。在本设计中,对单价的排序采用冒泡排序法,对销售量的排序采用快速排 序法,对销售额的排序采用堆排序法。药品信息的元素类型定义:typedef struct node char num4; /* 药品编号 */char name10; /* 药品名称 */float price; /* 药品单价 */int count; /* 销售数量 */float sale; /* 本药品销售额 */DataType;存储药品信息的顺序表的定义:typedef struct DataType rMaxSize;int length;SequenList;2.
5、 算法设计分析首先从 txt 文件中读取数据信息并保存,本次试验采用了 5 中排序方法。其中编号排 序是按照基数排序,采用多关键字进行排序。基数排序是借助“分配”和“收集” 两种操作对单逻辑关键字进行排序的一种内排序方法。对单价的排序采用了直接插 入排序和冒泡排序,直接插入排序就是首先将第一个元素看成是一个有序的,然后 第二个元素和第一个比较,若大于第一个则放在其后面否则放前面,依次直至最后 一个。冒泡排序就是采用两个循环,即将第一个元素和第二个比较若第一个大于第 二个则交换,否则不变,然后第二个和第三个比较,同上。第一趟可将最大的一个 放在最后,依次可得排序。销售量是快速排序, 快速排序就是
6、首先设置一个关键字, 然后让最后一个和其比较,直至找到一个比关键字小的,然后和其交换,接下来让 第一个和其比较,直至找到一个比其大的,然后交换,在找到的位置分别做标记, 依次执行即可。销售额使用的是堆排序,堆排序首先要建立一个完全二叉树的堆, 其标准符合为父节点始终比子节点大。然后依次输出顶结点,然后在建立一个符合 标准的堆重复操作即可。3. 流程图四、调试分析与结果输入药品的信息按药品的编号。按药品的名称。按药品的销售额。五、课设总结六、 附录(源代码)#include<stdio.h>#include<stdlib.h>#include<string.h>
7、;#define maxsize 100 /该医药公司药品最大种类typedef struct node /药品信息的存储结构类型定义char num10; / char name30; float price; / int count; / float sale; / DataType; typedef struct /药品编号单价销售量销售额存储药品信息的顺序表的定义DataType rmaxsize; int length; int type;SqList;void number(SqList *L) /int i,j;char num110,name130; float price1,
8、sale1;int count1; for(i=0;i<L->type;i+) / for(j=i+1;j<L->type;j+)按药品编号排序循环if(strcmp(L->rj.num,L->ri.num)>0) / strcpy(num1,L->rj.num);strcpy(L->rj.num,L->ri.num);判断两个数的大小,strcpy(L->ri.num,num1);strcpy(name1,L->); strcpy(L->,L->);strcpy(L-
9、>,name1);price1=L->rj.price;L->rj.price=L->ri.price;L->ri.price=price1;count1=L->rj.count;L->rj.count=L->ri.count; L->ri.count=count1; sale1=L->rj.sale; L->rj.sale=L->ri.sale;L->ri.sale=sale1; printf("t按药品编号排序后 :n");printf("t 药品编号 药品名称 药品单
10、价 药品销售量 药品销售额 n"); for(i=0;i<L->type;i+)printf("t %st %st %ft %dt %fn",L->ri.num,L->,L->ri.price,L->ri.count,L->ri.sale);void nam(SqList *L) / 按药品名称排序int i,j;char num110,name130;float price1,sale1;int count1;for(i=0;i<L->type;i+)for(j=i+1;j<L->t
11、ype;j+) if(strcmp(L->,L->)>0) strcpy(num1,L->rj.num); strcpy(L->rj.num,L->ri.num); strcpy(L->ri.num,num1); strcpy(name1,L->); strcpy(L->,L->); strcpy(L->,name1); price1=L->rj.price;L->rj.price=L->ri.price;L->ri.pr
12、ice=price1;count1=L->rj.count;L->rj.count=L->ri.count;L->ri.count=count1;sale1=L->rj.sale;L->rj.sale=L->ri.sale;L->ri.sale=sale1;printf("t按药品名称排序后 :n");药品销售额 n");printf("t药品编号 药品名称 药品单价 药品销售量for(i=0;i<L->type;i+)printf("t %st %st %ft %dt %fn&quo
13、t;,L->ri.num,L->,L->ri. price,L->ri.count,L->ri.sale);void pric(SqList *L) / 按药品单价排序int i=0,j;char num110,name130;float price1,sale1;int count1;for(i=0;i<L->type;i+)for(j=i+1;j<L->type;j+)if(L->rj.price>L->ri.price)strcpy(num1,L->rj.num); strcpy(L->rj
14、.num,L->ri.num); strcpy(L->ri.num,num1); strcpy(name1,L->); strcpy(L->,L->); strcpy(L->,name1); price1=L->rj.price; L->rj.price=L->ri.price; L->ri.price=price1;count1=L->rj.count; L->rj.count=L->ri.count; L->ri.count=count1; sale1
15、=L->rj.sale; L->rj.sale=L->ri.sale; L->ri.sale=sale1; printf("t 按药品单价排序后 :n");药品销售额 n");printf("t 药品编号 药品名称 药品单价 药品销售量 for(i=0;i<L->type;i+)printf("t %st %st %ft %dt %fn",L->ri.num,L->,L->ri. price,L->ri.count,L->ri.sale);void cou
16、n(SqList *L) / 按药品销售量排序int i=0,j;char num110,name130;float price1,sale1;int count1;for(i=0;i<L->type;i+)for(j=i+1;j<L->type;j+) if(L->rj.count>L->ri.count) strcpy(num1,L->rj.num); strcpy(L->rj.num,L->ri.num); strcpy(L->ri.num,num1); strcpy(name1,L->); strcp
17、y(L->,L->); strcpy(L->,name1); price1=L->rj.price; L->rj.price=L->ri.price; L->ri.price=price1;count1=L->rj.count; L->rj.count=L->ri.count; L->ri.count=count1; sale1=L->rj.sale;药品销售额 n");药品销售额 n");L->rj.sale=L->ri.sale;L->ri
18、.sale=sale1;printf("t按药品销售量排序后 :n");printf("t药品编号 药品名称 药品单价 药品销售量for(i=0;i<L->type;i+)printf("t %st %st %ft %dt %fn",L->ri.num,L->,L->ri. price,L->ri.count,L->ri.sale);void sales(SqList *L) / 按药品销售额排序int i=0,j;char num110,name130;float price1,sale
19、1;int count1;for(i=0;i<L->type;i+)for(j=i+1;j<L->type;j+) if(L->rj.sale>L->ri.sale) strcpy(num1,L->rj.num); strcpy(L->rj.num,L->ri.num); strcpy(L->ri.num,num1); strcpy(name1,L->); strcpy(L->,L->); strcpy(L->,name1); price1=L-&g
20、t;rj.price; L->rj.price=L->ri.price; L->ri.price=price1;count1=L->rj.count; L->rj.count=L->ri.count; L->ri.count=count1; sale1=L->rj.sale; L->rj.sale=L->ri.sale; L->ri.sale=sale1; printf("t按药品销售额排序后 :n");printf("t药品编号 药品名称 药品单价 药品销售量for(i=0;i<L->
21、type;i+)printf("t %st %st %ft %dt %fn",L->ri.num,L->,L->ri. price,L->ri.count,L->ri.sale);void menu()printf("ttt 销售记录排序 n");printf("tn");printf("t|1)按药品编号|n");printf("t|2)按药品名称|n");printf("t|3)按药品单价|n");printf("t|
22、4)按药品销售量|n")printf("t|5)按药品销售额|n")printf("t|0)退出系统|n");printf("tn");printf("请选择 <05>"); main() SqList *L; int n,i,m; char num110,name130; float price1,sale1;int count1;FILE *fp;L=(SqList*)malloc(sizeof(SqList); fp=fopen("medince.txt","
23、;w"); / 创建文件 if(!fp) printf("Sorry! File open error!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,"%st%st%ft%dt%fn",num1,name1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年一年级下学期数学第七单元《三个两位数连加》(教案)
- 2025年会计劳务合同模板
- 2025年专利转让合同水产养殖产品适用
- 人教版三年级下册第一单元-位置和方向(一)-(单元测试)含答案
- 人教版三年级英语上册期末测试卷
- 2-除数是一位数的除法-人教版三年级数学下册单元测试卷(含答案)
- 2025年湖南石油化工职业技术学院单招职业倾向性测试题库带答案
- 2024年碳纤维热场材料项目投资申请报告代可行性研究报告
- 2024年亚叶酸钙项目资金需求报告代可行性研究报告
- 2025年广东省惠州市单招职业倾向性测试题库完整
- 大学生创新创业基础教程(高校创新创业教育课程)全套教学课件
- 2024年内蒙古交通职业技术学院单招职业技能测试题库完整
- 天津和平区2024届高三一模数学试题(解析版)
- 2024年江苏农林职业技术学院单招职业适应性测试题库完美版
- 《中东》地图填图专练
- 2024年江苏苏海控股集团有限公司招聘笔试冲刺题(带答案解析)
- 工商联业务工作培训
- 商业街消防安全培训
- 湖北省曾都区乌鸦山矿区建筑用辉绿岩矿矿产资源开发利用与生态复绿方案
- 2024年国家电网招聘之通信类题库附答案【黄金题型】
- 初二主题班会课件《珍爱生命注意安全》
评论
0/150
提交评论