药店的药品销售统计系统(20210201082644)
- 格式:docx
- 大小:79.80 KB
- 文档页数:25
药店的药品销售统计系统数据结构心得报告问题描述设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号、单价、销售量或销售额做出排名。
需求分析按编号排序输出药品销售记录按单价排序输出药品销售记录按销售量排序输出药品销售记录按销售额排序输出药品销售记录算法思想首先从数据文件中读出各药品的息记录,存储在顺序表中。
按编号排序时采用直接插入排序法,将待插入的记录暂存到监视哨中,记录逐个后移,直到找到插入位置;按单价排序时采用冒泡排序法,就是不断地比较和交换,将比较大的交换到前面,直到不需要交换为止;按销售量排序采用快速排序,去第一个记录为枢轴,把比枢轴小的关键字交换到前面,大的交换到后面,结果把排序记录分成两个表,再对左右子表重复上述过程,直至每一子表只有一个记录时,排序完成;按销售额排序采用堆排序,建初堆,然后把堆调整成大根堆。
算法设计1、菜单void menu()——输出所有功能选择。
2、输出全部息void Allprint(SequenList S)——从前往后遍历结构体数组,输出药的具体息。
3、读文件void Read(SequenList &S)——从数据文件中读出各药品的息记录,存储在顺序表中。
4、按编号排序void Numsort(SequenList &S)——直接插入排序法,将待插入的记录暂存到监视哨中,记录逐个后移,直到找到插入位置5、按单价排序void Pricesort(SequenList &S)——冒泡排序法,不断地比较和交换,将比较大的交换到前面,直到不需要交换为止。
6、对子表排序int Par(SequenList &S,int low,int high)——对顺序表的子表进行一趟排序,返回枢轴位置。
7、快速排序void Qsort(SequenList &S,int low,int high)——对子序列快速排序。
、按销售量排序void Countsort(SequenList &S)——对顺序表L做快速排序。
药品销售系统实验报告1. 引言药品销售系统是一种通过计算机网络实现药品销售、库存管理、订单处理等功能的系统。
本报告旨在介绍我们设计、实现和测试的药品销售系统,并对其进行评估。
2. 系统设计与实现我们的药品销售系统采用了分层架构,包括用户界面、业务逻辑层和数据访问层。
用户界面提供了用户操作系统的界面,业务逻辑层负责处理用户请求并进行相应的逻辑判断,数据访问层负责与数据库进行交互获取数据。
系统的功能模块包括药品浏览、药品搜索、药品下单、订单查询和库存管理。
用户可以通过界面浏览药品信息,搜索指定药品,下单购买药品,查询订单状态以及进行库存管理(如添加、删除、修改库存等操作)。
在实现过程中,我们采用了Java语言作为主要开发语言,使用MySQL作为数据库管理系统,采用了Spring Boot框架进行开发。
3. 实验过程3.1 数据库设计我们首先设计了数据库的结构,包括药品信息表、订单信息表和库存信息表。
药品信息表包含药品的ID、名称、价格、生产厂家等字段。
订单信息表包含订单的ID、用户ID、订单状态等字段。
库存信息表包含药品的ID、库存数量等字段。
3.2 用户界面设计我们通过HTML、CSS和JavaScript实现了用户界面。
界面包括了药品列表展示、搜索框、下单表单、订单查询表格以及库存管理表格等组件。
3.3 业务逻辑实现我们使用Java编写了业务逻辑层的代码,包括药品搜索、下单、订单查询和库存管理等功能的实现。
对于药品搜索功能,我们通过接收用户输入的关键字,并通过数据库查询匹配到的药品信息。
对于下单功能,我们先接收用户填写的下单信息,然后将订单信息插入订单信息表,并更新库存信息表中的库存数量。
订单查询和库存管理功能的实现类似。
3.4 数据访问实现我们使用Spring Boot框架提供的JPA功能,实现了数据访问层的代码。
通过JPA,我们可以方便地进行数据库操作,包括查询、插入、更新和删除等。
4. 实验结果与评估我们对药品销售系统进行了功能测试和性能测试。
医药销售管理系统1医药销售管理系统(1)基础信息管理:药品信息、员工信息、客户信息、供应商信息等(2)进货管理:入库登记、入库登记查询、入库报表等(3)库房管理:库存查询、库存盘点、退货处理、库存报表等(4)销售管理:销售登记、销售退货、销售报表及相应查询等(5)统计:当日统计、当月统计及报表等DFD顶层图0层图客户医药销售管理系统管理员供应商客户销售管理1.0库房管理2.0统计4.0进货管理3.0客户信息库存信息供应商管理员信息供应商信息管理员订货或退货发货,退货或退订验证查询进货1层图销售管理库房管理订货销售登记1.1库存信息客户信息订单销售报表1.2销售退货1.3销售统计退货退货款退货信息订单信息订单信息客户客户库存报表2.3库存管理2.1客户发货库存信息库存查询2.2 库存统计药品信息查询1.4入库信息进货管理统计进货入库登记3.1供应商库存信息供应商信息入库登记查询3.2入库报表3.3入库信息入库统计管理员身份验证4.1管理员信息统计报表4.2入库统计库存统计销售统计查询结果管理员客户订单药品提交订购发货库存表进货供应商供货客户名提交订单号地区备注剩余款项 1 n订单编号客户名药品名药品编号价格数量1n药品编号药品名数量供应商编号n m供应商编号供应商名地区备注mnnm药品名药品编号类别供应商有效期产地别名进价零售价批发价备注销售日期入库时间单价数据流项目:⒈数据流:客户信息数据流来源:客户信息表数据流去向:核对客户信息组成:客户信息=客户名+提交订单号+剩余款项+地区+备注流量:每天上十次⒉数据流:药品信息数据流来源:库存表数据流去向:药品信息查询组成:药品信息=药品编号+药品名+别名+类型+供应商+有效期+产地+进价+零售价+批发价+备注流量:每天上十次⒊数据流:订单信息数据流来源:订单信息表数据流去向:发货管理组成:订单信息=订单号+客户名+药品编号+药品名+价格+数量+销售日期流量:每天上十次⒋数据流:库存信息数据流来源:库存表数据流去向:核对药品库存查询、核对进货单、核对订单组成: 库存信息=药品编号+药品名+供应商编号+入库时间+数量流量:每天上十次⒌数据流:供应商信息数据流来源:供应商信息表数据流去向:核对进货单组成:供应商信息=供应商编号+供应商名+地区+备注流量:每天上十次⒍数据流:管理员信息数据流来源:管理员信息表数据流去向:核对管理员信息组成:管理员信息=管理员姓名+密码+权限流量:每天上十次数据存储条目:。
数据结构课程设计药品销售统计系统在当今数字化的时代,有效的数据管理和分析对于企业的运营和决策至关重要。
药品销售行业也不例外,一个高效准确的药品销售统计系统能够为企业提供关键的信息,帮助其优化库存管理、制定营销策略以及提高客户满意度。
本次数据结构课程设计的目标就是构建这样一个实用的药品销售统计系统。
一、系统需求分析首先,明确药品销售统计系统的主要功能需求。
它需要能够记录药品的基本信息,如药品名称、规格、生产厂家、进价、售价等。
同时,要能够记录每一笔销售交易,包括销售日期、销售数量、销售对象等。
系统还应该具备统计功能,能够按照不同的条件,如时间段、药品类别、销售区域等,对销售数据进行汇总和分析。
为了满足这些功能需求,系统需要具备数据存储、数据查询、数据更新和数据统计的能力。
在数据存储方面,要选择合适的数据结构来有效地组织和管理药品信息和销售记录。
在数据查询和更新方面,要设计高效的算法,以快速准确地获取和修改数据。
在数据统计方面,要能够灵活地根据用户的需求生成各种统计报表。
二、数据结构选择考虑到系统的功能需求和数据特点,选择合适的数据结构是关键。
对于药品信息,可以使用结构体数组来存储。
每个结构体包含药品的各种属性,如名称、规格、进价、售价等。
对于销售记录,可以使用链表来存储。
链表的节点包含销售日期、销售数量、销售对象等信息。
链表的优点是便于动态地添加和删除销售记录,能够适应销售业务的不断变化。
为了提高查询效率,可以建立索引。
例如,为药品名称建立哈希索引,以便快速查找特定药品的信息。
三、系统功能模块设计1、药品信息管理模块药品信息录入:允许用户输入新药品的详细信息,并将其保存到系统中。
药品信息修改:可以对已存在的药品信息进行修改,如调整进价、售价等。
药品信息删除:对于不再销售的药品,能够从系统中删除其信息。
2、销售记录管理模块销售记录录入:记录每一笔销售交易的相关信息。
销售记录查询:根据指定条件,如销售日期、销售对象等,查询销售记录。
药店计算机管理信息系统情况说明药店计算机管理信息系统是指药店通过计算机技术和信息管理软件,对药品库存、销售、采购等业务进行全面管理和自动化处理的系统。
本文将详细说明药店计算机管理信息系统的功能和优势,以及其对药店运营的影响。
一、系统功能药店计算机管理信息系统主要包括以下功能:1.药品库存管理:系统能够实时监控药品库存情况,并根据销售数据自动更新库存数量。
在库存不足时,系统会自动提醒采购药品,确保药店不会出现库存短缺情况。
2.销售管理:系统可以追踪和记录药品的销售情况,包括销售数量、销售时间、销售价格等信息。
通过这些数据,药店可以及时了解畅销产品和滞销产品,为销售策略的调整提供依据。
3.采购管理:系统能够根据销售数据和库存情况,智能地进行采购药品的计划和订购。
药店可以设置库存警戒线,当库存低于该线时,系统将自动生成采购订单,提高药店采购效率。
4.药品分类和价格管理:系统可根据药品的属性和用途进行分类管理,并设定不同的价格策略。
药店可以根据市场需求灵活地调整价格,提高商品竞争力。
5.财务管理:系统可以管理药店的财务数据,包括收入、支出、利润等信息。
通过财务报表的生成和分析,药店可以及时进行财务决策,掌握经营状况。
二、系统优势药店计算机管理信息系统具有以下优势:1.提高效率:系统实现了药品库存、销售、采购等业务的自动化处理,减少了人工操作的繁琐和错误,大大提高了工作效率。
2.降低成本:系统能够智能地进行库存管理和采购计划,避免了库存积压和过度采购带来的资金浪费,降低了药店的运营成本。
3.优化管理:系统可以实时监控药品销售情况和库存情况,为药店管理者提供决策依据,优化业务流程和经营策略。
4.提升服务质量:系统能够追踪和分析客户购买习惯,为客户提供更准确和个性化的药品推荐和服务,提升药店的服务质量和客户满意度。
三、对药店运营的影响药店计算机管理信息系统对药店的运营产生了积极的影响:1.优化库存管理:药店能够更精确地掌握药品的库存情况,避免了因库存不足或过多导致的经营风险,提高了库存周转率。
药店销售明细统计
用数据透视表统计同一商品编码,商品名称,规格的数量和金额。
原始表格如下:
第一步:
把表格中商品编码,单价,金额修改成数值。
方法是插入列,原列乘1,结果复制,粘帖为数值。
文字格式无法用数据透视表。
第二步,全选,插入数据透视表,
确定。
形成一个新的sheetg表,
把编码1拖入右下行,把数量1,金额拖入右下值。
第三步,把数据透视表复制,粘帖到新的sheet表中,把需要的扩展项加上。
第四步,在商品名称下,插入VLOOKUP公式,单击fx插入函数,
查找值为商品编码的第一格。
数据表为,从商品编码的第一格,到商品名称的最后一格。
选中后按F4。
数序列为从商品编码到商品名称的列数2.
匹配条件为0。
规格,单价和其他扩展项以此类推。
医药销售管理系统数据库设计一、系统概述当前社会医药行业发展迅速,为提高医药销售管理的效率和准确性,设计了医药销售管理系统。
该系统旨在帮助医药企业管理销售数据、客户信息、产品信息等,并能进行销售业绩分析、库存管理等功能。
二、数据库设计1. 数据库结构本系统的数据库采用关系型数据库管理系统,包括以下表:•客户表(Customer):存储客户信息,包括客户ID、姓名、联系方式等字段。
•产品表(Product):存储产品信息,包括产品ID、名称、价格等字段。
•销售记录表(Sales_Record):存储销售记录,包括销售记录ID、客户ID、产品ID、销售数量、销售日期等字段。
•库存表(Inventory):存储产品库存信息,包括产品ID、库存数量等字段。
2. 数据库字段设计客户表(Customer)字段名类型描述CustomerID INT 客户IDName VARCHAR 姓名Contact VARCHAR 联系方式产品表(Product)字段名类型描述ProductID INT 产品IDName VARCHAR 产品名称Price DECIMAL 价格销售记录表(Sales_Record)字段名类型描述SalesRecordID INT 销售记录IDCustomerID INT 客户IDProductID INT 产品IDSalesQuantity INT 销售数量SalesDate DATE 销售日期库存表(Inventory)字段名类型描述ProductID INT 产品IDStockQuantity INT 库存数量3. 数据库关系设计•客户表和销售记录表之间存在一对多关系,一个客户可以有多条销售记录。
•产品表和销售记录表之间也存在一对多关系,一个产品可以对应多条销售记录。
•产品表和库存表之间为一对一关系,每个产品对应唯一的库存信息。
三、系统功能医药销售管理系统将提供以下核心功能:1.客户信息管理:包括客户的添加、修改和删除操作。
2022年全国药品销售数据查询(可视化销售分析库)全国药品销售市场环境正在逐步走向规范化,“科学”的调研销售再药企中份量也会越来越重,而基于全国药品市场调查数据的决策将会越来越得到医药企业的广泛认同。
所以一份好的市场销售调查报告在医药产品销售中会起到至关重要或者生死攸关的作用。
药品销售数据一般分为医院销售数据和药店销售数据。
想要查询药品销售数据就得先采集数据,一般有很多方式比如通过一些公司的年报或者投资报告进行市场销售的分析,或者通过微信公众号的一些推文来搜集,甚至还可以问医药代表等统计起来繁琐而复杂,统计面维度窄还不准,推荐使用专业的医药销售数据库——药融云医药数据库系统v3.0上千万条数据药品销售数据-数据采集-数据清洗-建模分析-动态可视化药融云数据库更新说明:2022年4月对全国医院放大数据的2021年度数据进行了进一步校准更新本数据库是基于全国各省市2200+二级及以上医院的分层抽样(含1795家综合医院、473家专科医院),根据城市级别医院数量、医院床位、医院类型、地域性疾病、当地医疗水平等等,通过专业的计算模型分层放大,最终涵盖近10000家二级及以上医院的药品销售数据。
药物全面涵盖化学药/生物药及中成药,其中化学药/生物药涉及14大类、90个亚类,5000+个通用名品种;中成药涉及13个大类,74个亚类,6000+个通用名品种。
本库查询方式灵活,可通过药品、企业、ATC分类、用药类型(中成药、原料药、医疗器械、药用辅料、药械组合、生物制品、化学药)、用药途径、年份等多条件筛选。
分析维度涵盖年度趋势、季度趋势、企业销售格局、品种销售格局、剂型销售格局、规格销售格局、用药途径销售格局。
动态可视化分析及图表与原始数据的方式进行呈现。
分类销售数据分析图表,更新方式:季度更新,季度呈现。
使用药融云的医药销售数据库可查询某种药品和某药企的销售情况,分析医药市场占比,计算投入产出比。
药店的药品销售统计系统数据结构课程设计1. 引言药店药品销售统计系统是现代药店管理的重要组成部分,通过对药店的药品销售数据进行统计和分析,可以帮助药店进行销售预测、库存管理、经营决策等方面的工作。
本文将对药店的药品销售统计系统的数据结构进行课程设计,其中包括以下要素:药品信息、销售记录、客户信息和库存管理。
在设计过程中,将充分考虑数据结构的存储和操作效率,以满足实际应用的需求。
2. 药品信息2.1 药品数据结构药品信息是药店管理中的重要数据之一,我们需要为药品信息设计一个合适的数据结构。
在药品数据结构中,我们可以考虑以下字段: - 药品名称 - 生产厂家 - 规格 - 单价 - 库存数量2.2 药品数据结构的操作在药品数据结构中,我们需要实现以下操作: - 药品信息的添加:根据输入的药品信息,将药品添加到药品数据结构中。
- 药品信息的查询:根据药品名称或其他属性,查询药品信息。
- 药品信息的修改:根据药品名称或其他属性,修改药品信息。
- 药品信息的删除:根据药品名称或其他属性,删除药品信息。
3. 销售记录3.1 销售记录数据结构销售记录是药店管理中的核心数据之一,我们需要为销售记录设计一个合适的数据结构。
在销售记录数据结构中,我们可以考虑以下字段: - 销售日期 - 销售药品- 销售数量 - 销售金额3.2 销售记录数据结构的操作在销售记录数据结构中,我们需要实现以下操作: - 销售记录的添加:根据输入的销售记录,将销售记录添加到销售记录数据结构中。
- 销售记录的查询:根据销售日期或其他属性,查询销售记录。
- 销售记录的修改:根据销售日期或其他属性,修改销售记录。
- 销售记录的删除:根据销售日期或其他属性,删除销售记录。
4. 客户信息4.1 客户信息数据结构客户信息是药店管理中的重要数据之一,我们需要为客户信息设计一个合适的数据结构。
在客户信息数据结构中,我们可以考虑以下字段: - 客户姓名 - 性别 - 年龄 - 联系方式4.2 客户信息数据结构的操作在客户信息数据结构中,我们需要实现以下操作: - 客户信息的添加:根据输入的客户信息,将客户信息添加到客户信息数据结构中。
设计题目[ 问题描述 ]设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号、单价、销售量或销售额做出排名。
需求分析药品的销售统计是在利用电脑的实现生活中的需求,在如今医疗事业蓬勃的发展下,药店的药品数目也日益的增多,根据社会的需求,在这种大潮的推动力下药店药品的销售管理系统成了迫切的需要,在这种大前提下,我们实现了这样的系统来完成药品的销售统计。
今年来,药品零售业的格局,出现了很大的变化医药改革为零售药房,特别是为连锁药房提供了广阔的发展空间。
医药企业自身发展也提出了自身发展也提出了改革的要求。
集团化、代理制等形式的出现打破了过去暗地域行政区划分设立的医药流通格局,重批发轻工业零售的传统观念正随着改革的深入而逐步发生着变化,特别是医药零售行业早已打破了过去那种国有医药一统天下的局面,这也迫使许多医药企业纷纷适应市场变化的要求进行零分设的改革,利用原有医药零售网店的基础建设建立连锁药房,这即成为医药企业改革噶站的必然热点,有形成这些企业参与市场竞争的经济增长点,再这样的大环境之下,药店基本现状有很多情况。
、药店的功能和经验重点发生了根本性的转变。
、药店的布局不合理。
各地药店纷纷开业,甚至出现了有点多过于米店的局面,并且出现了扎堆经营的现象。
三、药店规模相对偏小,缺乏市场竞争力。
四、陷入评价竞争的泥潭,低层次的价格竞争,使很多药店到了举步维艰的地步。
五、药店经营成本在提高,利润在下降。
六、企业整体服务意识淡薄,从业人员缺乏专业素质。
因为这些现状,药店销售管理系统的研发也是迫在眉睫,目前市场上拥有的各种系统软件也因为药店这样的状况,而存在相同的状况。
算法设计1.算法思想在本设计中,首先从数据文件中读出各药品的信息记录,存储在顺序表中。
各药品的信息包括:药品编号、药名、药品单价、销出数量、销售额。
药品编号共采用字母和数字混合编号,如:A125,前一位为大写字母,后三位为数字,按药品编号进行排序时,可采用基数排序法。
对各药品的单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序等方法。
在本设计中,对单价的排序采用冒泡排序法,对销售量的排序采用快速排序法,对销售额的排序采用堆排序法。
药品信息的元素类型定义: typedef struct node{ char num[4];/*药品编号 */char name[10];/*药品名称 */float price; /* 药品单价 */4 位,int count; /* 销售数量 */float sale; /* 本药品销售额 */ }DataType;存储药品信息的顺序表的定义: typedef struct { DataType r[MaxSize];int length;}SequenList;2.算法设计分析首先从 txt 文件中读取数据信息并保存,本次试验采用了 5 中排序方法。
其中编号排序是按照基数排序,采用多关键字进行排序。
基数排序是借助“分配”和“收集”两种操作对单逻辑关键字进行排序的一种内排序方法。
对单价的排序采用了直接插入排序和冒泡排序,直接插入排序就是首先将第一个元素看成是一个有序的,然后第二个元素和第一个比较,若大于第一个则放在其后面否则放前面,依次直至最后一个。
冒泡排序就是采用两个循环,即将第一个元素和第二个比较若第一个大于第二个则交换,否则不变,然后第二个和第三个比较,同上。
第一趟可将最大的一个放在最后,依次可得排序。
销售量是快速排序,快速排序就是首先设置一个关键字,然后让最后一个和其比较,直至找到一个比关键字小的,然后和其交换,接来让第一个和其比较,直至找到一个比其大的,然后交换,在找到的位置分别做标记,依次执行即可。
销售额使用的是堆排序,堆排序首先要建立一个完全二叉树的堆,其标准符合为父节点始终比子节点大。
然后依次输出顶结点,然后在建立一个符合标准的堆重复操作即可。
3.流程图四、调试分析与结果灵* C: UJoDUM^t^ emd Sett uL^aXAdMinia-t ra-f DT\Debuck^^)4坏21日.munH>x式DAu£5-■u>編容单销的的旳囱U雪書E口F誓药葯该决诀谯ti一位为大弓亍耳.后三位为数T^:pw2武C—爭辰_4|称£垢窑聶目9忖前一位为大写字号,后三位珈字〉:曲™主加01H»(Knnni输入药品的信息n'eiUkii i—PBi*- 兵XHLnwaAWJOWE !flSDran ':曹品单价se.eoseeaL5.UUWUI30. wiHmn 館哥F对貯药品箱售量药.£■哺售疝L£Se.900909Z4tKI,WUW«Ttn.nRon 腼uu斤£董断号品品品品nm系--J--RJJ—^1■>,>>>>wnss-二蚩同£安两境丸轴EMB4>5->">玮a卑*U.M4M4 riS.WHHH i;WWW按药品的编号。
药*5量iS咼品请SaaLK4.MI4M a-MwiiMff J如枷删按药品的名称。
按药品的销售额。
#in cludevstdio.h> #in clude<stdlib.h>l五、课设总结八、附录(源代码)#include<string.h>#define maxsize 100 // 该医药公司药品最大种类typedef struct node // 药品信息的存储结构类型定义char num[10]; // 药品编号char name[30];float price; // 单价int count; // 销售量float sale; // 销售额}DataType;typedef struct// 存储药品信息的顺序表的定义DataType r[maxsize];int length;inttype;}SqList;void number(SqList *L) // 按药品编号排序inti,j;char num1[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");药品编号 药品名称 药品单价 药品销售量 药品销售额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);int i,j; char num1[10],name1[30];float price1,sale1;int count1;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);\n");printf("\tvoid nam(SqList *L) //按药品名称排序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;void pric(SqList *L) // 按药品单价排序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);int i=0,j;char num1[10],name1[30];float price1,sale1;int count1;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);void coun(SqList *L) // 按药品销售量排序int i=0,j;char num1[10],name1[30];float price1,sale1;int count1;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);void sales(SqList *L) // 按药品销售额排序int i=0,j;char num1[10],name1[30];float price1,sale1;int count1;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;药品编号 药品名称 药品单价 药品销售量 药品销售额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);\n");printf("\t按药品销售额排序后 :\n"); printf("\tvoid menu()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;int n,i,m;char num1[10],name1[30];float price1,sale1;int count1;FILE *fp;L=(SqList*)malloc(sizeof(SqList));创建文件fp=fopen("medince.txt","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,"%s\t%s\t%f\t%d\t%f\n",num1,name1,price1,count1,sale1);printf("\n");}L->length=0;fp=fopen("medince.txt","r");if(!fp) {printf("Sorry! File open error!");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].price,& 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);fclose(fp); //关闭文件从文件中读信息while(1) // 循环结构{ menu();scanf("%d",&m);switch(m)case 1:number(L);break;case 2:nam(L);break;case 3:pric(L);break;case 4:coun(L);break;case 5:sales(L);break;case 0:exit(0);break;抱歉!输入有误,请重新输入 ~~");break;default:printf("}。