一、源码基于CodeBlocks开发环境

二、效果(展示一部分)
1、运行程序是这个界面

2、登录账号后

3、查看药品信息,总之可以对药品进行管理

三、源码
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <time.h>
#define MEDICINE_FILE "medicine.txt"
#define USER_FILE "user.txt"
typedef struct medicine
{
char drug_name[100];
int drug_number;
char drug_type[50];
int cost;
int price;
int num;
int remaining_days;
struct medicine *next;
} medicine;
medicine *head;
typedef struct user_f
{
char name[50];
char passwd[50];
} user_f;
typedef struct user
{
user_f userarray[50];
int size;
} user;
void login_menu(user *userarr);
void reg(user *userearr);
bool login(user *userarr);
void revise_passwd(user *userarr);
void get_passwd(user *userarr);
void save_user(user *userarr);
void read_user_file(user *userarr);
void showMenu();
void read_medicine_file();
void add_medicine();
void show_medicine();
void drug_number_del();
void drug_name_del();
void drug_number_revise();
void drug_name_revise();
medicine *drug_number_find(int num);
void show_drug_number_find();
medicine *drug_name_find(char *name);
void show_drug_name_find();
void drug_number_sort();
void drug_name_sort();
void save_medicine();
int main(int argc, char *argv[])
{
int select = 15;
user userarr;
head = (medicine *)malloc(sizeof(medicine));
head->next = NULL;
read_user_file(&userarr);
login_menu(&userarr);
read_medicine_file();
while (1)
{
showMenu();
while (scanf("%d", &select) != 1 || select < 0 || select > 10)
{
printf("输入有误,请重新输入\n");
scanf("%*[^\n]%*c");
}
switch (select)
{
case 0:
exit(0);
break;
case 1:
add_medicine();
break;
case 2:
show_medicine();
break;
case 3:
drug_number_del();
break;
case 4:
drug_name_del();
break;
case 5:
drug_number_revise();
break;
case 6:
drug_name_revise();
break;
case 7:
show_drug_number_find();
break;
case 8:
show_drug_name_find();
break;
case 9:
drug_number_sort();
break;
case 10:
drug_name_sort();
break;
}
}
return 0;
}
void login_menu(user *userarr)
{
while (1)
{
printf("欢迎使用药品管理系统!\n");
printf("1.注册账号\n");
printf("2.登录账号\n");
printf("3.修改密码\n");
printf("4.找回密码\n");
printf("0.退出\n");
int select = 3, flag = 0;
while (scanf("%d", &select) != 1 || select < 0 || select > 4)
{
printf("输入有误,请重新输入!\n");
scanf("%*[^\n]%*c");
}
switch (select)
{
case 0:
exit(0);
break;
case 1:
reg(userarr);
break;
case 2:
if (login(userarr))
{
printf("登录成功\n");
flag = 1;
}
else
{
printf("登录失败,程序退出\n");
exit(-1);
}
break;
case 3:
revise_passwd(userarr);
break;
case 4:
get_passwd(userarr);
break;
}
if (flag == 1)
{
break;
}
}
}
void reg(user *userarr)
{
printf("请输入账号\n");
scanf("%s", userarr->userarray[userarr->size].name);
printf("请输入密码\n");
scanf("%s", userarr->userarray[userarr->size].passwd);
userarr->size++;
printf("注册成功\n");
save_user(userarr);
}
bool login(user *userarr)
{
char name[50], passwd[50];
int i, j;
printf("\033[35m你有5次登录机会!\033[0m\n");
for (j = 0; j < 5; ++j)
{
printf("\033[35m第%d次登录\033[0m\n", j + 1);
printf(