C语言设计一系统,实现医药公司定期对各药品的销售记录进行统计,并按药品编号、单价、销售量或销售额做出排序。 在设计中,首先从数据文件读出各药品的信息记录,存储在顺序表中。各药品的信息包括:药品编号、药品名称、单价、销售量、销售额。其中药品编号共4位,采用字母和数字混合编号,如:B125,前一位为大写字母,后三位为数字。
时间: 2024-02-13 09:04:50 浏览: 79
药店的药品销售统计系统的设计与实现.pdf
5星 · 资源好评率100%
下面是一个简单的医药公司销售记录统计系统的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. 保存药品信息并退出。
注意,该示例代码仅供参考,实际情况下可能需要根据需求进行修改和完善。
阅读全文