疫苗预约管理系统——课程设计

先发布一下测试版,大家发现有bug可以提出来,最近期末了,要忙着复习。考完试,我再发完整版,写下思路、教程什么的吧。

 这个程序接口定义有点多,个人感觉代码有些多,有点复杂了,不容易看懂。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct PeopleData  /*接种人信息*/
{
	int PhoneNum;//手机号
	int PeopleID;//身份证号码
	char PeopleName[100];//姓名
	int ShotTime;//用户预约的接种时间 
	int NodeNum;//用户预约的注射点序号 
	char ShotNode[100];//用户预约的注射点
	int ShotNum;//成功预约号
	int ReservedTimes;//是否预约 
	int Inoculate;//是否注射
}PeopleData;

PeopleData People_Data[100]; //最多100个接种人

typedef struct DataType  /*注射点数据*/
{
	int NodeNum;  //注射点序号 
	char NodeName[100];  //注射点名称
	int VaccineNum;//注射点当日疫苗数量
	int ReservedNum;  //注射点已预约人数
}DataType;

struct TimeList //不同日期的注射点数据
{
	DataType data[100];
	struct TimeList* Next;
};

typedef struct Users {
	char Name[100]; //用户名
	int PeopleID;//身份证号码
	int  PhoneNum;//手机号
	char Account[100]; //账户
	char Passwd[100]; //密码
}Use;

Use allUser[100];//100个用户
Use User; //主要用于用户登录
int n = 1;//注册时,注册成功n++,
int N = 6;//代表当前有5个注射点
int Booking_num = 10000; //预定号码从10000开
TimeList* L;

void Administrator();//管理员的账号密码 
void window1();//一级菜单 
int search(char Account[]);//用于登录查询账号是否存在 
void Rengister();//注册系统 
int Login();//登录系统 
void recover();//找回账号或者密码 
void Choose1();//一级菜单的选择
/*下面几个函数传入形参t,很重要,这样才能知道你是哪个用户,才能把信息准确的放进结构体里*/
void  Choose2(int t);//二级菜单的选择
void window2();//二级菜单 
TimeList* CreateVaccine();//初始化
void Search_Vaccine();//查询疫苗剩余情况
void Reserved_Vaccine(int t);//预约疫苗
void Search_Reserved(int t);//查询预约
void Abolish_Reserved(int t);//取消预约
void Change_Passwd(int t);//修改密码  
void window0();//管理员菜单
void  Node_Manage(int t);//注射点管理 
void  Add_Node();//增加注射点
void  Delete_Node();//删除注射点
void  Change_Node();//修改注射点
void  Search_Node();//查看注射点
void  Search_User();//用户管理 
void  Inoculate_Manage();//接种管理 

int main()
{
	int i;
	Administrator();
	L = CreateVaccine();
	Choose1();
	return 0;
}
void Administrator()
{
	strcpy(allUser[0].Account, "2050131398");
	strcpy(allUser[0].Name, "Administrator");
	strcpy(allUser[0].Passwd, "cgl520520");
	allUser[0].PeopleID = 0;
	allUser[0].PhoneNum = 0;
}
void window1()//一级菜单 
{
	system("CLS");
	printf("           __________________________________________________________\n");
	printf("           |                                                        |\n");
	printf("           |                      疫苗预约系统                      |\n");
	printf("           |________________________________________________________|\n");
	printf("           |                                                        |\n");
	printf("           |                                                        |\n");
	printf("           |                     ****1.注册****                     |\n");
	printf("           |                     ****2.登陆****                     |\n");
	printf("           |                     ****3.找回****                     |\n");
	printf("           |                     ****4.退出****                     |\n");
	printf("           |                                                        |\n");
	printf("           |________________________________________________________|\n");
	printf("\n\n           请选择你需要的功能,输入代号:");

}
void Rengister()//注册系统 
{
	char key[100];
	int t;
	system("CLS");
	printf("\n           ========================注册页面=======================\n");
	printf("\n           请输入您的姓名:");
	scanf("%s", &allUser[n].Name);
	getchar();
	printf("\n           请输入您的身份证号:");
	scanf("%d", &allUser[n].PeopleID);
	getchar();
	printf("\n           请输入您的手机号码:");
	scanf("%d", &allUser[n].PhoneNum);
	getchar();
	printf("\n           请输入您的账号:");
	scanf("%s", &allUser[n].Account);
	getchar();
	printf("\n           请输入您的密码:");
	scanf("%s", &allUser[n].Passwd);
	do
	{
		printf("\n           请再次输入您的密码:");
		scanf("%s", &key);
		if (strcmp(key, allUser[n].Passwd) == 0) {
			n++;
			t = 0;
		}
		else
		{
			t = 1;
			printf("\n           两次密码不一致,请重新注册\n");
			goto b;
		}
	} while (t == 1);
	printf("\n           注册成功!\n\n\n");
b:	system("pause");
	system("CLS");
}

int Login()//登录系统 
{
	int i;
	int ch = 1;
	char key[100];
	system("CLS");
	printf("\n           ========================登录页面=======================\n");
	printf("\n           请输入您的账号:");
	scanf("%s", &User.Account);
	//以下是管理员登录的,目前还没做管理员的
	if (strcmp(User.Account, allUser[0].Account) == 0) {
		do
		{
			printf("\n           输入您的密码:");
			scanf("%s", &key);
			getchar();
			if (strcmp(key, allUser[0].Passwd) == 0)
				ch = 0;
			else
			{
				ch = 1;
				printf("\n           密码错误,重新输入!\n");

			}
		} while (ch == 1);
		printf("\n           成功登陆!欢迎使用本系统!\n");
		return 0;
	}
	//至此
	//下面的用户登录用的
	ch = search(User.Account);//判断你的用户是否注册过
	if (!ch)
	{
		printf("\n           您输入的账号未注册!\n");
		printf("\n           请重新登录或注册账号后再次使用本程序。 \n");
		system("pause");
		Choose1();
	}
	do //防止非法输入
	{
		printf("\n           输入您的密码:");
		scanf("%s", &key);
		getchar();
		if (strcmp(key, User.Passwd) == 0)
			ch = 0;
		else
		{
			ch = 1;
			printf("\n           密码错误,重新输入!\n");

		}
	} while (ch == 1);
	printf("\n           成功登陆!欢迎使用本系统!\n");
	for (i = 1; i < n; i++)//成功后将用户数据和注射者数据进行绑定 保持一致
		if (strcmp(allUser[i].Account, User.Account) == 0) {
			People_Data[i].PhoneNum = allUser[i].PhoneNum;
			People_Data[i].PeopleID = allUser[i].PeopleID;
			strcpy(People_Data[i].PeopleName, allUser[i].Name);
			People_Data[i].Inoculate = 0;
			return i;
		}
}

int search(char Account[])//查询账号 
{
	int i;
	for (i = 1; i < n; i++)
		if (strcmp(allUser[i].Account, Account) == 0)
			break;
	if (i == n)
		return 0;
	else
	{
		User = allUser[i];
		return 1;
	}
}

void recover() //密码找回,这个无关紧要的代码
{
	int People_ID, Phone_Num;
	int num;
	int ch = 1;
a:	printf("\n           ========================找回页面=======================\n\n");
	printf("\n           请输入您的账号:");
	scanf("%s", &User.Account);
	getchar();
	ch = search(User.Account);
	if (!ch)
	{
		printf("\n           您输入的账号并未注册!\n");
		system("pause");
		system("CLS");
		main();
	}
	printf("\n           请输入您的身份证号:");
	scanf("%d", &People_ID);
	getchar();
	printf("\n           请输入您的手机号码:");
	scanf("%d", &Phone_Num);
	getchar();
	if (People_ID == User.PeopleID && Phone_Num == User.PhoneNum) {
		printf("\n           您的密码是: %s\n\n", User.Passwd);
		system("pause");
	}
	else
	{
		printf("\n           您的身份信息有误!\n");
		printf("\n           请重新输入。 \n");
		system("pause");
		system("CLS");
		goto a;
	}

}
void Choose1()//一级菜单的选择
{
	int t;
	int num;
	while (1) {
		window1();
		scanf("%d", &num);
		system("pause");
		system("cls");
		switch (num)
		{
		case 1: Rengister(); break;
		case 2: t = Login(); Choose2(t);
		case 3: recover(); break;
		case 4: exit(0);
		default:
			break;
		}
	}
}
void window2()//二级菜单
{
	system("CLS");
	printf("           __________________________________________________________\n");
	printf("           |                                                        |\n");
	printf("           |                      疫苗预约系统                      |\n");
	printf("           |________________________________________________________|\n");
	printf("           |                                                        |\n");
	printf("           |                                                        |\n");
	printf("           |                   ****1.查询疫苗****                   |\n");
	printf("           |                   ****2.预约疫苗****                   |\n");
	printf("           |                   ****3.查询预约****                   |\n");
	printf("           |                   ****4.取消预约****                   |\n");
	printf("           |                   ****5.修改密码****                   |\n");
	printf("           |                   ****6.退    出****                   |\n");
	printf("           |                                                        |\n");
	printf("           |________________________________________________________|\n");
	printf("\n\n           请选择你需要的功能,输入代号:");

}
TimeList* CreateVaccine()//初始化
{
	int i = 1, j;
	TimeList* List = NULL;
	TimeList* temp = (TimeList*)malloc(sizeof(struct TimeList));
	for (i = 1; i < N; i++) {
		temp->data[i].NodeNum = i;
		temp->data[i].VaccineNum = rand() % 100;
		temp->data[i].ReservedNum = 0;
	}
	strcpy(temp->data[1].NodeName, "小陈医院");
	strcpy(temp->data[2].NodeName, "小光医院");
	strcpy(temp->data[3].NodeName, "小淋医院");
	strcpy(temp->data[4].NodeName, "小帅医院");
	strcpy(temp->data[5].NodeName, "小哥医院");
	temp->Next = NULL;
	List = temp;
	for (j = 1; j < 7; j++) {
		TimeList* p = (TimeList*)malloc(sizeof(struct TimeList));
		for (i = 1; i < N; i++) {
			p->data[i].NodeNum = i;
			p->data[i].VaccineNum = rand() % 100;
			p->data[i].ReservedNum = 0;
		}
		strcpy(p->data[1].NodeName, "小陈医院");
		strcpy(p->data[2].NodeName, "小光医院");
		strcpy(p->data[3].NodeName, "小淋医院");
		strcpy(p->data[4].NodeName, "小帅医院");
		strcpy(p->data[5].NodeName, "小哥医院");
		p->Next = NULL;
		temp->Next = p;
		temp = temp->Next;
	}
	return List;
}
void  Choose2(int t)//二级菜单的选择
{
	int num;
	if (t == 0) {
		while (1) {
			window0();
			scanf("%d", &num);
			getchar();
			system("pause");
			system("cls");
			switch (num)
			{
			case 1: Node_Manage(t); break;
			case 2: Search_User(); break;
			case 3: Inoculate_Manage(); break;
			case 4: Choose1(); break;
			default:
				break;
			}
		}
	}
	else {
		while (1) {
			window2();
			scanf("%d", &num);
			getchar();
			system("cls");
			switch (num)
			{
			case 1: Search_Vaccine(); break;
			case 2: Reserved_Vaccine(t); break;
			case 3: Search_Reserved(t); break;
			case 4: Abolish_Reserved(t); break;
			case 5: Change_Passwd(t); break;
			case 6: Choose1(); break;
			default:
				break;
			}
		}
	}
}
void Search_Vaccine()//疫苗查询
{
	int i, j;
	int day;
	int num;
	TimeList* T = L;
	printf("\n           ========================疫苗查询=======================\n");
	if (N == 0) {
		printf("\n           当前没有注射点!");
		goto a;

	}
	printf("\n           请选择查询日期:");
	scanf("%d", &day);
	getchar();
	while (day < 1 || day>7)  //非法输入 
	{
		printf("\n           输入错误,请重新输入:");
		scanf("%d", &day);
		getchar();
	}
	for (i = 1; i <= day; i++) { //计算当天疫苗剩余总量
		num = 0;
		for (j = 1; j < N; j++) {
			num += T->data[j].VaccineNum;
		}
		T = T->Next;
	}
	printf("\n           当天所有注射点疫苗剩余总数为%d\n", num);
	T = L;
	for (i = 1; i < day; i++) { //将指针移动到当天
		T = T->Next;
	}
	for (j = 1; j < N; j++) {  //输出当天每个注射点剩余疫苗量
		printf("\n           %s的疫苗数量剩余%d支\n\n", T->data[j].NodeName, T->data[j].VaccineNum);
	}
a:	system("pause");
}

void Reserved_Vaccine(int t)//疫苗预约
{
	int i, j, flag = 1, times = 1;
	int day;
	char ch[100];
	TimeList* T = L;
	printf("\n           ========================疫苗预约=======================\n");
	if (N == 0) {
		printf("\n           当前没有注射点!"); //判断输入的注射点是否存在 
		system("pause");
		goto a;

	}
	if (People_Data[t].Inoculate == 1) {
		printf("\n           您已经注射过,无需再预约!"); //目前设置的是只一针,注射过便不能预约 
		system("pause");
		goto a;
	}
	if (People_Data[t].ReservedTimes == 0) { // 没有预约过才能预约
		printf("\n           请选择预约日期:");
		scanf("%d", &day);
		getchar();
		while (day < 1 || day>7)  //非法输入 
		{
			printf("\n           输入错误,请重新输入:");
			scanf("%d", &day);
		}
		for (i = 1; i < day; i++) { //将指针移动到当天
			T = T->Next;
		}
		printf("\n           请选择预约的医院: ");
		scanf("%s", ch);
		getchar();
		for (j = 1; j < N; j++) {
			flag++;//flag用于判断输入的医院是否存在的
			if (strcmp(ch, T->data[j].NodeName) == 0) { //跳到当前医院
				printf("\n           当前是%d.%s", T->data[j].NodeNum, T->data[j].NodeName);
				getchar();
				if (T->data[j].VaccineNum <= 0) { //判断疫苗库存
					printf("\n           %s当前疫苗数量不足\n", T->data[j].NodeName);
					printf("\n           请重新预约!\n");
					getchar();
					break;
				}
				else if (T->data[j].ReservedNum >= T->data[j].VaccineNum) //判断预约人数
				{
					printf("\n           %s当前预约人数已满\n", T->data[j].NodeName);
					printf("\n           请重新预约!\n");
					getchar();
					break;
				}
				else {
					printf("\n           预约成功!请按时到注射点接种疫苗\n"); //成功后分配预约号
					printf("\n           您的预约号是%d", Booking_num);
					T->data[j].VaccineNum--; //某天某点的疫苗数量减一
					T->data[j].ReservedNum++;//某天某点的预约数量加一
					People_Data[t].ShotNum = Booking_num;//分配预约号
					Booking_num++;
					People_Data[t].ShotTime = day;//预约的注射时间
					People_Data[t].ReservedTimes = 1;//表示已经预约过
					People_Data[t].NodeNum = T->data[j].NodeNum;
					strcpy(People_Data[t].ShotNode, T->data[j].NodeName);//预约的注射点
					getchar();
					break;
				}
				break;
			}
			else if (strcmp(ch, T->data[j].NodeName) != 0 && flag == N) { //flag用于判断输入的医院是否存在的
				printf("\n           当前注射点不存\n");
				printf("\n           请重新预约!\n");
				getchar();
			}
		}
	}
	else {  // 有预约过不能预约
		printf("\n           已经有预约,不能重复预约!\n\n\n");
	a:		system("pause");
	}
}

void Search_Reserved(int t)//预约查询
{
	TimeList* T = L;
	int i;
	printf("\n           ========================预约查询=======================\n");
	//利用t找到你是谁,读取你的相关信息
	for (i = 1; i < People_Data[t].ShotTime; i++) { //将指针移动到当天
		T = T->Next;
	}
	if (People_Data[t].Inoculate == 1) {  //如果你注射过就没有预约信息了 
		printf("\n           您已经注射过!\n");
	}
	else {
		if (People_Data[t].ReservedTimes == 1 && T->data[People_Data[t].NodeNum].VaccineNum == 0) {  //防止管理员修改了注射点数据为0,错误显示 
			printf("\n           抱歉! 当前库存不足,当前预约无效,请重新预约!\n\n\n");
			People_Data[t].ReservedTimes == 0;
			goto a;

		}
		if (People_Data[t].ReservedTimes == 1 && strcmp(T->data[People_Data[t].NodeNum].NodeName, People_Data[t].ShotNode) != 0) { //防止管理员删除了注射点,错误显示 
			printf("\n           抱歉! 当前注射点不存在,当前预约无效,请重新预约!\n\n\n");
			People_Data[t].ReservedTimes == 0;
			goto a;
		}
		else if (People_Data[t].ReservedTimes == 1) { //如果有预约输出相关信息 
			printf("\n           您的预约的注射点是:%s\n", People_Data[t].ShotNode);
			printf("\n           您的预约的注射时间是:星期%d\n", People_Data[t].ShotTime);
			printf("\n           您的预约的预约号是:%d\n", People_Data[t].ShotNum);
		}
		else {
			printf("\n           您当前没有预约\n\n\n");//没有预约
		}
	}
a:    system("pause");
}

void Abolish_Reserved(int t)//取消预约
{
	char ch;
	int i, j;
	TimeList* T = L;
	printf("\n           ========================取消预约=======================\n");
	if (People_Data[t].ReservedTimes == 1) {
		printf("\n           确认是否取消Y/N:");
		scanf("%c", &ch);
		getchar();
		if (ch == 'Y' || ch == 'y') {
			for (i = 1; i < People_Data[t].ShotTime; i++) { //跳到当前预约的时间
				T = T->Next;
			}
			getchar();
			for (j = 1; j < N; j++) {
				if (strcmp(T->data[j].NodeName, People_Data[t].ShotNode) == 0) {  //跳到当前预约的地点
					T->data[j].VaccineNum++;//某天某点的疫苗数量加一
					T->data[j].ReservedNum--;//某天某点的预约数量减一
					People_Data[t].ReservedTimes = 0;
					printf("\n           取消成功!");
					system("pause");
					break;
				}
			}
		}
	}
	else {
		printf("\n           您当前没有预约\n\n\n");
		system("pause");
	}
}

void Change_Passwd(int t)//修改密码
{
	int i;
	char key[100];
	printf("\n           ========================修改密码=======================\n");
	for (i = 1; i <= n; i++)
		if ((People_Data[t].PeopleID == allUser[i].PeopleID) && (People_Data[t].PhoneNum == allUser[i].PhoneNum))  //确保 allUser于People_Data数据一致 
			break;
	printf("\n           请输入当前密码:");
	scanf("%s", &key);
	getchar();
	if (strcmp(key, allUser[i].Passwd) == 0) {  //首先原密码要正确 ,再是修改的密码两次输入一致 
		printf("\n           请输入修改后密码:");
		scanf("%s", &User.Passwd);
		printf("\n           请再次输入您的密码:");
		scanf("%s", &key);
		getchar();
		if (strcmp(key, User.Passwd) == 0) {
			strcpy(allUser[i].Passwd, User.Passwd); //一致则修改成功 
			printf("\n           修改成功!  ");
			system("pause");
		}
		else
		{
			printf("\n           两次密码不一致,请重新修改\n");//不一致则重新修改 
			system("pause");
			system("cls");
		}
	}
	else {
		printf("\n           当前密码错误,不能修改!\n");//原密码错误不能修改
		system("pause");
	}
}

void window0()//管理员菜单 
{
	system("CLS");
	printf("           __________________________________________________________\n");
	printf("           |                                                        |\n");
	printf("           |                   疫苗预约管理员系统                   |\n");
	printf("           |________________________________________________________|\n");
	printf("           |                                                        |\n");
	printf("           |                                                        |\n");
	printf("           |                   ****1.站点管理****                   |\n");
	printf("           |                   ****2.用户管理****                   |\n");
	printf("           |                   ****3.接种管理****                   |\n");
	printf("           |                   ****4.退    出****                   |\n");
	printf("           |                                                        |\n");
	printf("           |________________________________________________________|\n");
	printf("\n\n           请选择你需要的功能,输入代号:");

}

void  Node_Manage(int t)//注射点管理
{
	int num;
	while (1) {
		system("CLS");
		printf("           __________________________________________________________\n");
		printf("           |                                                        |\n");
		printf("           |                   疫苗预约管理员系统                   |\n");
		printf("           |________________________________________________________|\n");
		printf("           |                                                        |\n");
		printf("           |                                                        |\n");
		printf("           |                  ****1.增加注射点****                  |\n");
		printf("           |                  ****2.删除注射点****                  |\n");
		printf("           |                  ****3.修改注射点****                  |\n");
		printf("           |                  ****4.查看注射点****                  |\n");
		printf("           |                  ****5.退      出****                  |\n");
		printf("           |                                                        |\n");
		printf("           |________________________________________________________|\n");
		printf("\n\n           请选择你需要的功能,输入代号:");
		scanf("%d", &num);
		getchar();
		system("cls");
		switch (num)
		{
		case 1: Add_Node(); break;
		case 2: Delete_Node(); break;
		case 3: Change_Node(); break;
		case 4: Search_Node(); break;
		case 5: Choose2(t); break;
		default:
			break;
		}
	}
}

void Add_Node() //增加注射点
{
	TimeList* T = L;
	char name[100];
	int num;
	int i = 1;
	printf("\n           ========================增加注射点======================\n");
	printf("\n           请输入注射点名称:");
	scanf("%s", &name);
	getchar();
	while (T != NULL) {  //给不同时间的新注射点赋值初始化 
		strcpy(T->data[N].NodeName, name);
		printf("\n           请输入周%d注射点疫苗数量:", i);
		scanf("%d", &num);
		getchar();
		T->data[N].VaccineNum = num;
		T->data[N].NodeNum = N;
		T->data[N].ReservedNum = 0;
		i++;
		T = T->Next;
	}
	N++; //注射点总数加1 
	printf("\n           增加成功!\n\n\n");
	system("pause");
}

void Delete_Node()
{
	TimeList* T = L;
	int num;
	int i, j;
	printf("\n           ========================删除注射点======================\n");
	printf("\n           请输入需要删除的注射点序号:");
	scanf("%d", &num);
	if (N == 0) {    //注射点没了 
		printf("\n           当前没有注射点!");
		goto a;

	}
	while (num < 1 || num>N)  //非法输入 
	{
		printf("\n           输入错误,请重新输入:");
		scanf("%d", &num);
		getchar();
	}
	for (j = 1; j <= 7; j++) {
		for (i = num; i < N; i++) {
			T->data[i] = T->data[i + 1];   //将后一个数据覆盖前一个数据 
		}
		T = T->Next;
	}
	T = L;
	for (j = 1; j <= 7; j++) {
		for (i = 1; i < N; i++) {   //重新排注射点序号 
			T->data[i].NodeNum = i;
		}
		T = T->Next;
	}
	N--;
	printf("\n           删除成功!\n\n\n");
a:  system("pause");

}

void  Change_Node()
{
	int day;
	int num;
	char ch[100];
	int i, j, flag = 1;
	TimeList* T = L;
	printf("\n           ========================修改注射点======================\n");
	if (N == 0) {
		printf("\n           当前没有注射点!");
		goto a;
	}
	printf("\n           请输入需要修改的日期:");
	scanf("%d", &day);
	getchar();
	while (day < 1 || day>7)  //非法输入 
	{
		printf("\n           输入错误,请重新输入:");
		scanf("%d", &day);
	}
	for (i = 1; i < day; i++) { //将指针移动到当天
		T = T->Next;
	}
	printf("\n           请选择需要修改的医院: ");
	scanf("%s", &ch);
	getchar();
	for (j = 1; j < N; j++) {
		flag++;
		if (strcmp(T->data[j].NodeName, ch) == 0) {  //跳到当前的地点
			printf("\n           请输入当前疫苗数量:");
			scanf("%d", &num);
			getchar();
			T->data[j].VaccineNum = num;
			system("pause");
			break;
		}
		else if (strcmp(ch, T->data[j].NodeName) != 0 && flag == N) { //flag用于判断输入的医院是否存在的
			printf("\n           当前注射点不存在\n");
			printf("\n           请重新修改!\n");
			getchar();
		}
	}
a: system("pause");
}

void  Search_Node()
{
	int i, j;
	int day;
	int num;
	TimeList* T = L;
	printf("\n           ========================查看注射点======================\n");
	if (N == 0) {
		printf("\n           当前没有注射点!");
		goto a;

	}
	printf("\n           请选择查询日期:");
	scanf("%d", &day);
	getchar();
	while (day < 1 || day>7)  //非法输入 
	{
		printf("\n           输入错误,请重新输入:");
		scanf("%d", &day);
		getchar();
	}
	for (i = 1; i <= day; i++) { //计算当天疫苗剩余总量
		num = 0;
		for (j = 1; j < N; j++) {
			num += T->data[j].VaccineNum;
		}
		T = T->Next;
	}
	printf("\n           当天所有注射点疫苗剩余总数为%d\n", num);
	T = L;
	for (i = 1; i < day; i++) { //将指针移动到当天
		T = T->Next;
	}
	for (j = 1; j < N; j++) {  //输出当天每个注射点剩余疫苗量
		printf("\n           %s的疫苗数量剩余%d支\n\n", T->data[j].NodeName, T->data[j].VaccineNum);
	}
a:	system("pause");
}

void  Search_User() //用户管查询
{
	int num;
	printf("\n           ========================用户查询========================\n");
	printf("\n           请输入用户编号:");
	scanf("%d", &num);
	getchar();
	while (num<1 || num>n - 1) {  //非法输入 
		printf("\n           输入错误,请重新输入:");
		scanf("%d", &num);
		getchar();
	}
	if (People_Data[num].PeopleID == 0 || People_Data[num].PhoneNum == 0) { //防止用户没登录没有数据输出异常 
		printf("\n           该用户尚未登录,暂无数据!");
	}
	else {  //有登录用户的注射相关信息 
		printf("\n           姓名:%s", People_Data[num].PeopleName);
		printf("\n           身份证号:%d", People_Data[num].PeopleID);
		printf("\n           电话号码:%d", People_Data[num].PhoneNum);
		if (People_Data[num].Inoculate == -1) {  //判断是否爽约 
			printf("\n           该用户已经爽约\n");
			People_Data[num].ReservedTimes = 0;
			goto a;
		}
		else if (People_Data[num].Inoculate == 0) {  //没爽约并且有预约 
			if (People_Data[num].ReservedTimes == 1) {
				printf("\n           预约的注射地点:%s", People_Data[num].ShotNode);
				printf("\n           预约的注射时间:%d", People_Data[num].ShotTime);
				printf("\n           预约的注射单号:%d", People_Data[num].ShotNum);
			}
			else {   //没有预约 
				printf("\n           该用户当前暂无预约\n");
			}
		}
		else {
			printf("\n           该用户已经注射!\n");
		}
	}
	printf("\n\n\n");
a:	system("pause");
}

void  Inoculate_Manage() //接种管理
{
	char ch[10];
	int num;
	printf("\n           ========================接种管理========================\n");
	printf("\n           请输入用户编号:");
	scanf("%d", &num);
	getchar();
	while (num<1 || num>n - 1) { //非法输入 
		printf("\n           输入错误,请重新输入:");
		scanf("%d", &num);
		getchar();
	}
	if (People_Data[num].PeopleID == 0 || People_Data[num].PhoneNum == 0) {   //防止用户没登录没有数据输出异常 
		printf("\n           该用户尚未登录,暂无数据!");
	}
	else {
		printf("\n           姓名:%s", People_Data[num].PeopleName);
		if (People_Data[num].ReservedTimes == 1) { //有预约输出用户的注射相关信息 
			printf("\n           预约的注射地点:%s", People_Data[num].ShotNode);
			printf("\n           预约的注射时间:%d", People_Data[num].ShotTime);
			printf("\n           预约的注射单号:%d", People_Data[num].ShotNum);
			
			printf("\n\n           该用户是否注射Y/N: ");//由管理员判断用户是否注射 
			scanf("%s", &ch);
			getchar();
			if (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0) {
				People_Data[num].Inoculate = 1;
			}
			else {
				People_Data[num].Inoculate = -1;
			}
			printf("\n           操作成功!\n\n\n");

		}
		else {   //没有预约 
			printf("\n           该用户当前暂无预约\n");
		}
	}
	system("pause");
}

  • 8
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值