用java语言编写:设计一个药店的药品销售统计系统,首先从数据文件中读出各药品的信息记录,存储在顺序表中。各药品的信息包括:药品编号、药名、药品单价、销出数量、销售额。其中药品编号共4位,采用字母和数字混合编号,如:A125,前一位为大写字母,后三位为数字,按药品编号进行排序时,可采用多种排序法。在本系统中,对单价的排序采用冒泡排序法,对销售量的排序采用快速排序法,对销售额的排序采用堆排序法。代码
时间: 2024-03-09 15:44:16 浏览: 20
以下是一个简单的代码实现,包含了药品类的定义、数据文件读取、排序算法实现和用户界面的实现。
```
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class DrugStoreSystem {
public static void main(String[] args) {
DrugStoreSystem system = new DrugStoreSystem();
system.run();
}
private List<Drug> drugList = new ArrayList<>();
// 从数据文件中读取药品信息
private void loadData(String fileName) {
try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
String line;
while ((line = reader.readLine()) != null) {
String[] fields = line.split(",");
String id = fields[0];
String name = fields[1];
double price = Double.parseDouble(fields[2]);
int amount = Integer.parseInt(fields[3]);
double sales = Double.parseDouble(fields[4]);
Drug drug = new Drug(id, name, price, amount, sales);
drugList.add(drug);
}
} catch (IOException e) {
System.out.println("读取数据文件失败:" + e.getMessage());
}
}
// 对药品编号进行排序
private void sortById() {
Collections.sort(drugList, new Comparator<Drug>() {
@Override
public int compare(Drug d1, Drug d2) {
return d1.getId().compareTo(d2.getId());
}
});
}
// 对药品单价进行排序
private void sortByPrice() {
for (int i = 0; i < drugList.size() - 1; i++) {
for (int j = 0; j < drugList.size() - i - 1; j++) {
if (drugList.get(j).getPrice() > drugList.get(j + 1).getPrice()) {
Collections.swap(drugList, j, j + 1);
}
}
}
}
// 对销售量进行排序
private void sortByAmount() {
Collections.sort(drugList, new Comparator<Drug>() {
@Override
public int compare(Drug d1, Drug d2) {
return d2.getAmount() - d1.getAmount();
}
});
}
// 对销售额进行排序
private void sortBySales() {
Collections.sort(drugList, new Comparator<Drug>() {
@Override
public int compare(Drug d1, Drug d2) {
return Double.compare(d2.getSales(), d1.getSales());
}
});
}
// 打印药品列表
private void printList(List<Drug> list) {
System.out.println("编号\t药名\t单价\t销量\t销售额");
for (Drug drug : list) {
System.out.println(drug);
}
}
// 用户界面
private void run() {
loadData("data.txt");
System.out.println("药品列表:");
printList(drugList);
System.out.println("按编号排序:");
sortById();
printList(drugList);
System.out.println("按单价排序:");
sortByPrice();
printList(drugList);
System.out.println("按销量排序:");
sortByAmount();
printList(drugList);
System.out.println("按销售额排序:");
sortBySales();
printList(drugList);
}
}
class Drug {
private String id;
private String name;
private double price;
private int amount;
private double sales;
public Drug(String id, String name, double price, int amount, double sales) {
this.id = id;
this.name = name;
this.price = price;
this.amount = amount;
this.sales = sales;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
public int getAmount() {
return amount;
}
public double getSales() {
return sales;
}
@Override
public String toString() {
return id + "\t" + name + "\t" + price + "\t" + amount + "\t" + sales;
}
}
```
在代码中,我们使用了Java标准库中的Collections.sort方法对药品列表进行排序,同时也实现了冒泡排序和自定义比较器的快速排序和堆排序。用户界面中,我们依次展示了药品列表和四种排序后的药品列表。