用java回答以下问题:设计一个药店的药品销售统计系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号、单价、销售量或销售额做出排名。 在本设计中,首先从数据文件中读出各药品的信息记录,存储在顺序表中。各药品的信息包括:药品编号、药名、药品单价、销出数量、销售额。药品编号共4位,采用字母和数字混合编号,如:A125,前一位为大写字母,后三位为数字,按药品编号进行排序时,可采用多种排序法。对各药品的单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序等方法。在本系统中,对单价的排序采用冒泡排序法,对销售量的排序采用快速排序法,对销售额的排序采用堆排序法。

时间: 2024-02-24 15:55:42 浏览: 16
首先,我们需要定义一个药品类,包括药品编号、药名、药品单价、销出数量、销售额等属性。然后,我们需要定义一个顺序表类,用于存储药品信息记录,并实现按照药品编号、单价、销售量或销售额做出排名的方法。具体实现如下: ``` public class Drug { private String drugId; // 药品编号 private String drugName; // 药名 private double price; // 药品单价 private int salesVolume; // 销出数量 private double salesAmount; // 销售额 // 构造方法 public Drug(String drugId, String drugName, double price, int salesVolume, double salesAmount) { this.drugId = drugId; this.drugName = drugName; this.price = price; this.salesVolume = salesVolume; this.salesAmount = salesAmount; } // getter和setter方法 public String getDrugId() { return drugId; } public void setDrugId(String drugId) { this.drugId = drugId; } public String getDrugName() { return drugName; } public void setDrugName(String drugName) { this.drugName = drugName; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getSalesVolume() { return salesVolume; } public void setSalesVolume(int salesVolume) { this.salesVolume = salesVolume; } public double getSalesAmount() { return salesAmount; } public void setSalesAmount(double salesAmount) { this.salesAmount = salesAmount; } } public class SequenceList { private Drug[] drugs; // 用数组来存储药品信息 private int size; // 数组的长度 // 构造方法 public SequenceList(int maxSize) { drugs = new Drug[maxSize]; size = 0; } // 在数组的末尾添加一个药品 public void add(Drug drug) { if (size == drugs.length) { throw new IndexOutOfBoundsException("数组已满,不能再添加元素!"); } drugs[size++] = drug; } // 按照药品编号排序 public void sortByDrugId() { for (int i = 0; i < size - 1; i++) { for (int j = 0; j < size - 1 - i; j++) { if (drugs[j].getDrugId().compareTo(drugs[j + 1].getDrugId()) > 0) { Drug temp = drugs[j]; drugs[j] = drugs[j + 1]; drugs[j + 1] = temp; } } } } // 按照单价排序 public void sortByPrice() { // 冒泡排序 for (int i = 0; i < size - 1; i++) { for (int j = 0; j < size - 1 - i; j++) { if (drugs[j].getPrice() > drugs[j + 1].getPrice()) { Drug temp = drugs[j]; drugs[j] = drugs[j + 1]; drugs[j + 1] = temp; } } } } // 按照销售量排序 public void sortBySalesVolume() { // 快速排序 quickSort(drugs, 0, size - 1, "salesVolume"); } // 按照销售额排序 public void sortBySalesAmount() { // 堆排序 for (int i = size / 2 - 1; i >= 0; i--) { adjustHeap(drugs, i, size); } for (int i = size - 1; i >= 1; i--) { Drug temp = drugs[0]; drugs[0] = drugs[i]; drugs[i] = temp; adjustHeap(drugs, 0, i); } } // 快速排序 private void quickSort(Drug[] drugs, int low, int high, String field) { if (low < high) { int pivotPos = partition(drugs, low, high, field); quickSort(drugs, low, pivotPos - 1, field); quickSort(drugs, pivotPos + 1, high, field); } } private int partition(Drug[] drugs, int low, int high, String field) { Drug pivot = drugs[low]; while (low < high) { while (low < high && compare(drugs[high], pivot, field) >= 0) { high--; } drugs[low] = drugs[high]; while (low < high && compare(drugs[low], pivot, field) <= 0) { low++; } drugs[high] = drugs[low]; } drugs[low] = pivot; return low; } private int compare(Drug a, Drug b, String field) { switch (field) { case "salesVolume": return a.getSalesVolume() - b.getSalesVolume(); case "salesAmount": return (int) (a.getSalesAmount() - b.getSalesAmount()); default: return 0; } } // 堆排序 private void adjustHeap(Drug[] drugs, int i, int size) { Drug temp = drugs[i]; for (int j = 2 * i + 1; j < size; j = 2 * j + 1) { if (j + 1 < size && drugs[j].getSalesAmount() < drugs[j + 1].getSalesAmount()) { j++; } if (drugs[j].getSalesAmount() > temp.getSalesAmount()) { drugs[i] = drugs[j]; i = j; } else { break; } } drugs[i] = temp; } } ``` 以上是一个简单的药品销售统计系统的实现,其中包括药品类和顺序表类。对于不同的排序需求,我们采用了不同的排序方法,如冒泡排序、快速排序和堆排序。需要注意的是,这里只是一个简单的实现,实际情况可能更加复杂,需要根据具体需求进行调整和完善。

相关推荐

最新推荐

recommend-type

ROS基于C++动力学约束的路径规划源码+ppt文件.zip

ROS基于C++动力学约束的路径规划源码+ppt文件.zip
recommend-type

ASP.NET BS结构的城市酒店入住信息管理系统的设计

ASP.NET B/S结构城市酒店入住信息管理系统的设计与实现简介 一、项目背景与意义 随着城市旅游的蓬勃发展,酒店业作为旅游产业链中的重要一环,面临着日益激烈的市场竞争。为了提升酒店的服务质量和管理效率,信息化管理成为酒店业不可或缺的一部分。因此,我们设计并实现了一个基于ASP.NET的B/S(浏览器/服务器)结构城市酒店入住信息管理系统。该系统旨在帮助酒店实现入住信息的快速录入、查询、修改和统计,提升酒店的运营效率和客户体验。 二、系统主要功能 用户管理:系统支持管理员、前台服务员、客户等不同角色的注册、登录和权限管理。通过角色权限的设置,确保系统数据的安全性和完整性。 房间管理:管理员可以添加、编辑、删除房间信息,包括房间类型、价格、状态等。前台服务员可以实时查看房间状态,为客人办理入住和退房手续。 入住信息管理:前台服务员可以录入客人的入住信息,包括姓名、证件号码、联系方式、入住时间和离店时间等。系统支持客人信息的快速查询和修改,方便前台服务员处理各种客户需求。 费用管理:系统根据客人的入住时间和房间价格自动计算费用,并支持多种支付方式。管理员可以设置折扣、优惠券等促销
recommend-type

基于streamlit的YOLOv8可视化交互界面

基于streamlit的YOLOv8可视化交互界面
recommend-type

liba52-0-0.7.5+svn613-lp152.3.2.aarch64.rpm

liba52-0-0.7.5+svn613-lp152.3.2.aarch64
recommend-type

基于matlab实现配电网三相潮流计算方法,对几种常用的配电网潮流计算方法进行了对比分析.rar

基于matlab实现配电网三相潮流计算方法,对几种常用的配电网潮流计算方法进行了对比分析.rar
recommend-type

RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz

REALTEK 8188FTV 8188eus 8188etv linux驱动程序稳定版本, 支持AP,STA 以及AP+STA 共存模式。 稳定支持linux4.0以上内核。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

Redis验证与连接:快速连接Redis服务器指南

![Redis验证与连接:快速连接Redis服务器指南](https://img-blog.csdnimg.cn/20200905155530592.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNTg5NTEw,size_16,color_FFFFFF,t_70) # 1. Redis验证与连接概述 Redis是一个开源的、内存中的数据结构存储系统,它使用键值对来存储数据。为了确保数据的安全和完整性,Redis提供了多
recommend-type

gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker app:app 报错 ModuleNotFoundError: No module named 'geventwebsocket' ]

这个报错是因为在你的环境中没有安装 `geventwebsocket` 模块,可以使用下面的命令来安装: ``` pip install gevent-websocket ``` 安装完成后再次运行 `gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker app:app` 就不会出现这个报错了。
recommend-type

c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf

校园超市商品信息管理系统课程设计旨在帮助学生深入理解程序设计的基础知识,同时锻炼他们的实际操作能力。通过设计和实现一个校园超市商品信息管理系统,学生掌握了如何利用计算机科学与技术知识解决实际问题的能力。在课程设计过程中,学生需要对超市商品和销售员的关系进行有效管理,使系统功能更全面、实用,从而提高用户体验和便利性。 学生在课程设计过程中展现了积极的学习态度和纪律,没有缺勤情况,演示过程流畅且作品具有很强的使用价值。设计报告完整详细,展现了对问题的深入思考和解决能力。在答辩环节中,学生能够自信地回答问题,展示出扎实的专业知识和逻辑思维能力。教师对学生的表现予以肯定,认为学生在课程设计中表现出色,值得称赞。 整个课程设计过程包括平时成绩、报告成绩和演示与答辩成绩三个部分,其中平时表现占比20%,报告成绩占比40%,演示与答辩成绩占比40%。通过这三个部分的综合评定,最终为学生总成绩提供参考。总评分以百分制计算,全面评估学生在课程设计中的各项表现,最终为学生提供综合评价和反馈意见。 通过校园超市商品信息管理系统课程设计,学生不仅提升了对程序设计基础知识的理解与应用能力,同时也增强了团队协作和沟通能力。这一过程旨在培养学生综合运用技术解决问题的能力,为其未来的专业发展打下坚实基础。学生在进行校园超市商品信息管理系统课程设计过程中,不仅获得了理论知识的提升,同时也锻炼了实践能力和创新思维,为其未来的职业发展奠定了坚实基础。 校园超市商品信息管理系统课程设计的目的在于促进学生对程序设计基础知识的深入理解与掌握,同时培养学生解决实际问题的能力。通过对系统功能和用户需求的全面考量,学生设计了一个实用、高效的校园超市商品信息管理系统,为用户提供了更便捷、更高效的管理和使用体验。 综上所述,校园超市商品信息管理系统课程设计是一项旨在提升学生综合能力和实践技能的重要教学活动。通过此次设计,学生不仅深化了对程序设计基础知识的理解,还培养了解决实际问题的能力和团队合作精神。这一过程将为学生未来的专业发展提供坚实基础,使其在实际工作中能够胜任更多挑战。