使用c语言编写程序:药品管理系统实现1添加模块2删除模块3查询模块4修改模块5浏览模块6排序模块7退出模块
时间: 2023-07-13 21:20:58 浏览: 87
好的,药品管理系统的实现可以分为以下几个步骤:
1. 定义药品结构体
药品结构体应该包括药品名称、药品编号、药品单价、药品库存等信息。
```c
typedef struct drug {
char name[20]; // 药品名称
int id; // 药品编号
float price; // 药品单价
int stock; // 药品库存
} Drug;
```
2. 实现添加模块
添加模块需要先输入药品的信息,然后将药品信息添加到一个数组中。
```c
void addDrug(Drug drugs[], int *count) {
Drug drug;
printf("请输入药品名称:");
scanf("%s", drug.name);
printf("请输入药品编号:");
scanf("%d", &drug.id);
printf("请输入药品单价:");
scanf("%f", &drug.price);
printf("请输入药品库存:");
scanf("%d", &drug.stock);
drugs[*count] = drug;
(*count)++;
printf("药品添加成功!\n");
}
```
3. 实现删除模块
删除模块需要先输入要删除的药品编号,然后在数组中查找该药品信息并删除。
```c
void deleteDrug(Drug drugs[], int *count) {
int id, index = -1;
printf("请输入要删除的药品编号:");
scanf("%d", &id);
for (int i = 0; i < *count; i++) {
if (drugs[i].id == id) {
index = i;
break;
}
}
if (index == -1) {
printf("该药品不存在!\n");
return;
}
for (int i = index; i < *count - 1; i++) {
drugs[i] = drugs[i + 1];
}
(*count)--;
printf("药品删除成功!\n");
}
```
4. 实现查询模块
查询模块需要先输入要查询的药品名称或编号,然后在数组中查找该药品信息并输出。
```c
void queryDrug(Drug drugs[], int count) {
char keyword[20];
int id = -1;
printf("请输入要查询的药品名称或编号:");
scanf("%s", keyword);
if (isdigit(keyword[0])) {
id = atoi(keyword);
}
for (int i = 0; i < count; i++) {
if (strcmp(drugs[i].name, keyword) == 0 || drugs[i].id == id) {
printf("药品名称:%s,药品编号:%d,药品单价:%.2f,药品库存:%d\n",
drugs[i].name, drugs[i].id, drugs[i].price, drugs[i].stock);
}
}
}
```
5. 实现修改模块
修改模块需要先输入要修改的药品编号,然后在数组中查找该药品信息并修改。
```c
void updateDrug(Drug drugs[], int count) {
int id, choice, index = -1;
printf("请输入要修改的药品编号:");
scanf("%d", &id);
for (int i = 0; i < count; i++) {
if (drugs[i].id == id) {
index = i;
break;
}
}
if (index == -1) {
printf("该药品不存在!\n");
return;
}
printf("请选择要修改的药品信息:\n");
printf("1.药品名称\n2.药品单价\n3.药品库存\n");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入新的药品名称:");
scanf("%s", drugs[index].name);
break;
case 2:
printf("请输入新的药品单价:");
scanf("%f", &drugs[index].price);
break;
case 3:
printf("请输入新的药品库存:");
scanf("%d", &drugs[index].stock);
break;
default:
printf("无效的选择!\n");
return;
}
printf("药品修改成功!\n");
}
```
6. 实现浏览模块
浏览模块需要将数组中所有的药品信息都输出。
```c
void browseDrug(Drug drugs[], int count) {
printf("药品列表:\n");
for (int i = 0; i < count; i++) {
printf("药品名称:%s,药品编号:%d,药品单价:%.2f,药品库存:%d\n",
drugs[i].name, drugs[i].id, drugs[i].price, drugs[i].stock);
}
}
```
7. 实现排序模块
排序模块可以按照药品编号或单价对数组中的药品信息进行排序。
```c
void sortDrug(Drug drugs[], int count) {
int choice;
printf("请选择排序方式:\n");
printf("1.按药品编号排序\n2.按药品单价排序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - 1 - i; j++) {
if (drugs[j].id > drugs[j + 1].id) {
Drug temp = drugs[j];
drugs[j] = drugs[j + 1];
drugs[j + 1] = temp;
}
}
}
printf("按药品编号排序成功!\n");
break;
case 2:
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - 1 - i; j++) {
if (drugs[j].price > drugs[j + 1].price) {
Drug temp = drugs[j];
drugs[j] = drugs[j + 1];
drugs[j + 1] = temp;
}
}
}
printf("按药品单价排序成功!\n");
break;
default:
printf("无效的选择!\n");
return;
}
}
```
8. 实现退出模块
退出模块可以直接在主函数中使用 return 0; 语句。
完整代码如下:
阅读全文