请你按照下面要求用c语言写一个程序,功能:设计药房管理系统,输入药品基本信息(药品编号、名称、单价、库存数量、品牌),并实现以下功能: 1、修改、删除指定药品的信息 2、按单价或库存数量排序并显示药品信息 3、统计指定品牌药品数量
时间: 2023-03-29 18:02:23 浏览: 114
好的,我可以回答这个问题。以下是药房管理系统的 C 语言程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_DRUGS 100 // 最大药品数量
// 药品结构体
typedef struct {
char id[20]; // 药品编号
char name[50]; // 药品名称
float price; // 单价
int stock; // 库存数量
char brand[50]; // 品牌
} Drug;
// 药品数组
Drug drugs[MAX_DRUGS];
int num_drugs = ; // 当前药品数量
// 显示菜单
void show_menu() {
printf("1. 添加药品\n");
printf("2. 修改药品\n");
printf("3. 删除药品\n");
printf("4. 按单价排序并显示药品信息\n");
printf("5. 按库存数量排序并显示药品信息\n");
printf("6. 统计指定品牌药品数量\n");
printf(". 退出\n");
}
// 添加药品
void add_drug() {
if (num_drugs >= MAX_DRUGS) {
printf("药品数量已达到最大值,无法添加!\n");
return;
}
Drug drug;
printf("请输入药品编号:");
scanf("%s", drug.id);
printf("请输入药品名称:");
scanf("%s", drug.name);
printf("请输入药品单价:");
scanf("%f", &drug.price);
printf("请输入药品库存数量:");
scanf("%d", &drug.stock);
printf("请输入药品品牌:");
scanf("%s", drug.brand);
drugs[num_drugs++] = drug;
printf("药品添加成功!\n");
}
// 修改药品
void modify_drug() {
char id[20];
printf("请输入要修改的药品编号:");
scanf("%s", id);
int i;
for (i = ; i < num_drugs; i++) {
if (strcmp(drugs[i].id, id) == ) {
printf("请输入新的药品名称:");
scanf("%s", drugs[i].name);
printf("请输入新的药品单价:");
scanf("%f", &drugs[i].price);
printf("请输入新的药品库存数量:");
scanf("%d", &drugs[i].stock);
printf("请输入新的药品品牌:");
scanf("%s", drugs[i].brand);
printf("药品修改成功!\n");
return;
}
}
printf("未找到该药品!\n");
}
// 删除药品
void delete_drug() {
char id[20];
printf("请输入要删除的药品编号:");
scanf("%s", id);
int i;
for (i = ; i < num_drugs; i++) {
if (strcmp(drugs[i].id, id) == ) {
int j;
for (j = i; j < num_drugs - 1; j++) {
drugs[j] = drugs[j + 1];
}
num_drugs--;
printf("药品删除成功!\n");
return;
}
}
printf("未找到该药品!\n");
}
// 按单价排序并显示药品信息
void sort_by_price() {
int i, j;
for (i = ; i < num_drugs - 1; i++) {
for (j = i + 1; j < num_drugs; j++) {
if (drugs[i].price > drugs[j].price) {
Drug temp = drugs[i];
drugs[i] = drugs[j];
drugs[j] = temp;
}
}
}
printf("药品编号\t药品名称\t单价\t库存数量\t品牌\n");
for (i = ; i < num_drugs; i++) {
printf("%s\t%s\t%.2f\t%d\t%s\n", drugs[i].id, drugs[i].name, drugs[i].price, drugs[i].stock, drugs[i].brand);
}
}
// 按库存数量排序并显示药品信息
void sort_by_stock() {
int i, j;
for (i = ; i < num_drugs - 1; i++) {
for (j = i + 1; j < num_drugs; j++) {
if (drugs[i].stock > drugs[j].stock) {
Drug temp = drugs[i];
drugs[i] = drugs[j];
drugs[j] = temp;
}
}
}
printf("药品编号\t药品名称\t单价\t库存数量\t品牌\n");
for (i = ; i < num_drugs; i++) {
printf("%s\t%s\t%.2f\t%d\t%s\n", drugs[i].id, drugs[i].name, drugs[i].price, drugs[i].stock, drugs[i].brand);
}
}
// 统计指定品牌药品数量
void count_by_brand() {
char brand[50];
printf("请输入要统计的品牌:");
scanf("%s", brand);
int count = ;
int i;
for (i = ; i < num_drugs; i++) {
if (strcmp(drugs[i].brand, brand) == ) {
count += drugs[i].stock;
}
}
printf("%s品牌药品数量为:%d\n", brand, count);
}
int main() {
int choice;
do {
show_menu();
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_drug();
break;
case 2:
modify_drug();
break;
case 3:
delete_drug();
break;
case 4:
sort_by_price();
break;
case 5:
sort_by_stock();
break;
case 6:
count_by_brand();
break;
case :
printf("谢谢使用!\n");
break;
default:
printf("无效选项!\n");
break;
}
} while (choice != );
return ;
}
阅读全文