在本设计中,首先从数据文件中读出各药品的信息记录,存储在顺序表中。各药品的信息包括:药品编号、药名、药品单价、销出数量、销售额。药品编号共4位,采用字母和数字混合编号,如:A125,前一位为大写字母,后三位为数字,按药品编号进行排序时,可采用多种排序法。对各药品的单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序等方法。在本系统中,对单价的排序采用冒泡排序法,对销售量的排序采用快速排序法,对销售额的排序采用堆排序法。
时间: 2024-04-05 07:30:58 浏览: 117
这个设计中需要从数据文件中读出药品信息,并存储在顺序表中。药品信息包括药品编号、药名、药品单价、销出数量、销售额。药品编号共4位,采用字母和数字混合编号,如:A125,前一位为大写字母,后三位为数字,按药品编号进行排序时,可采用多种排序法。对各药品的单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序等方法。在本系统中,对单价的排序采用冒泡排序法,对销售量的排序采用快速排序法,对销售额的排序采用堆排序法。这是一个药品信息管理系统的设计方案。
相关问题
用Java语言:编写设计一个药店的药品销售统计系统,首先从数据文件中读出各药品的信息记录,存储在顺序表中。各药品的信息包括:药品编号、药名、药品单价、销出数量、销售额。
以下是一个简单的药品销售统计系统的 Java 代码,实现了从数据文件中读入药品信息并存储在顺序表中,以及计算每种药品的销售数量和销售额。
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DrugStore {
private static final String FILE_PATH = "drug_info.txt"; // 数据文件路径
private static class Drug {
String id; // 药品编号
String name; // 药名
double price; // 药品单价
int sold; // 销出数量
double revenue; // 销售额
Drug(String id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
this.sold = 0;
this.revenue = 0;
}
void sell(int quantity) {
this.sold += quantity;
this.revenue += quantity * this.price;
}
}
public static void main(String[] args) {
List<Drug> drugs = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader(FILE_PATH))) {
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]);
drugs.add(new Drug(id, name, price));
}
} catch (IOException e) {
e.printStackTrace();
}
// 模拟销售情况
drugs.get(0).sell(10);
drugs.get(2).sell(5);
drugs.get(4).sell(2);
// 输出销售统计结果
System.out.println("药品编号\t药名\t药品单价\t销出数量\t销售额");
for (Drug drug : drugs) {
System.out.printf("%s\t%s\t%.2f\t%d\t%.2f%n", drug.id, drug.name, drug.price, drug.sold, drug.revenue);
}
}
}
```
在上述代码中,我们定义了一个 `Drug` 类来表示每种药品的信息,其中包括药品编号、药名、药品单价、销出数量和销售额等属性。我们使用一个 `List` 来存储所有药品的信息,然后通过读取数据文件中的信息来创建 `Drug` 对象并添加到列表中。
接下来,我们模拟了一些销售情况,调用 `sell` 方法来更新药品的销售数量和销售额。最后,我们按照表格的形式输出了所有药品的销售统计结果。
当然,这只是一个简单的药品销售统计系统的实现,实际应用中可能还需要考虑更多的功能和需求。
C语言设计一系统,实现医药公司定期对各药品的销售记录进行统计,并按药品编号、单价、销售量或销售额做出排序。 在设计中,首先从数据文件读出各药品的信息记录,存储在顺序表中。各药品的信息包括:药品编号、药品名称、单价、销售量、销售额。其中药品编号共4位,采用字母和数字混合编号,如:B125,前一位为大写字母,后三位为数字。
下面是一个简单的医药公司销售记录统计系统的C语言代码示例,具体实现可能会因具体需求而异。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_DRUGS 100 // 最大药品种类数
typedef struct {
char id[5]; // 药品编号
char name[20]; // 药品名称
float price; // 单价
int sales_num; // 销售数量
float sales_amount; // 销售额
} Drug;
// 初始化药品信息
int init(Drug *drugs) {
FILE *fp = fopen("drugs.txt", "r");
if (!fp) {
printf("打开数据文件失败!\n");
return 0;
}
int n = 0;
while (fscanf(fp, "%s%s%f%d%f", drugs[n].id, drugs[n].name, &drugs[n].price, &drugs[n].sales_num, &drugs[n].sales_amount) == 5) {
n++;
}
fclose(fp);
return n;
}
// 保存药品信息
void save(Drug *drugs, int n) {
FILE *fp = fopen("drugs.txt", "w");
if (!fp) {
printf("打开数据文件失败!\n");
return;
}
for (int i = 0; i < n; i++) {
fprintf(fp, "%s\t%s\t%.2f\t%d\t%.2f\n", drugs[i].id, drugs[i].name, drugs[i].price, drugs[i].sales_num, drugs[i].sales_amount);
}
fclose(fp);
}
// 显示药品信息
void display(Drug *drugs, int n) {
printf("药品编号\t药品名称\t单价\t销售数量\t销售额\n");
for (int i = 0; i < n; i++) {
printf("%s\t\t%s\t\t%.2f\t%d\t\t%.2f\n", drugs[i].id, drugs[i].name, drugs[i].price, drugs[i].sales_num, drugs[i].sales_amount);
}
}
// 按药品编号排序
void sort_by_id(Drug *drugs, int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-1-i; j++) {
if (strcmp(drugs[j].id, drugs[j+1].id) > 0) {
Drug temp = drugs[j];
drugs[j] = drugs[j+1];
drugs[j+1] = temp;
}
}
}
}
// 按单价排序
void sort_by_price(Drug *drugs, int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-1-i; j++) {
if (drugs[j].price > drugs[j+1].price) {
Drug temp = drugs[j];
drugs[j] = drugs[j+1];
drugs[j+1] = temp;
}
}
}
}
// 按销售量排序
void sort_by_sales_num(Drug *drugs, int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-1-i; j++) {
if (drugs[j].sales_num < drugs[j+1].sales_num) {
Drug temp = drugs[j];
drugs[j] = drugs[j+1];
drugs[j+1] = temp;
}
}
}
}
// 按销售额排序
void sort_by_sales_amount(Drug *drugs, int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-1-i; j++) {
if (drugs[j].sales_amount < drugs[j+1].sales_amount) {
Drug temp = drugs[j];
drugs[j] = drugs[j+1];
drugs[j+1] = temp;
}
}
}
}
int main() {
Drug drugs[MAX_DRUGS];
int n = init(drugs);
if (!n) {
return 0;
}
while (1) {
printf("\n请选择操作:\n1. 显示药品信息\n2. 按药品编号排序\n3. 按单价排序\n4. 按销售量排序\n5. 按销售额排序\n6. 保存药品信息并退出\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
display(drugs, n);
break;
case 2:
sort_by_id(drugs, n);
printf("按药品编号排序后:\n");
display(drugs, n);
break;
case 3:
sort_by_price(drugs, n);
printf("按单价排序后:\n");
display(drugs, n);
break;
case 4:
sort_by_sales_num(drugs, n);
printf("按销售量排序后:\n");
display(drugs, n);
break;
case 5:
sort_by_sales_amount(drugs, n);
printf("按销售额排序后:\n");
display(drugs, n);
break;
case 6:
save(drugs, n);
return 0;
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
该示例代码实现了以下功能:
1. 从数据文件读取药品信息;
2. 显示药品信息;
3. 按药品编号、单价、销售量或销售额排序;
4. 保存药品信息并退出。
注意,该示例代码仅供参考,实际情况下可能需要根据需求进行修改和完善。
阅读全文