# define  _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
# include <stdlib.h>
# include <conio.h>
# include <string.h>
# include <windows.h>


struct StuMsg	//学生信息
{
	char id[4];				//学生学号
	char name[10];			//学生名字
	int  age;				//学生年龄
	char sex[8];			//性别
	char birthday[20];		//生日
	char tel[15];			//电话
	char address[70];		//地址
	char email[20];			//邮件
}st[20];

int i=0;
int j;
void shuru(void);
int DengLu(char username[20], char password[20]);
void YanZ(void);
void XianShi(void);
void ChaName(void);
void ChaNo(void);
void Dle(void);
void XiuGai(void);
void CaiDan(void);

void main()
{
	int i;
	YanZ();
	CaiDan();
	
}

void CaiDan(void)
{
	int i;
	for (;;)
	{
		system("cls");
		printf("\n");
		printf("\n");
		printf("\n");
		printf("============================学生信息管理系统===================================\n");
		printf("||                                                                           ||\n");
		printf("||                                                                           ||\n");
		printf("||                                                                           ||\n");
		printf("||                                                                           ||\n");
		printf("||                          一: 输入学生信息                                ||\n");
		printf("||                          二: 显示学生信息                                ||\n");
		printf("||                          三: 查找学生姓名信息                            ||\n");
		printf("||                          四:  查找学生学号信息                            ||\n");
		printf("||                          五: 删除学生信息                                ||\n");
		printf("||                          六: 修改学生信息                                ||\n");
		printf("||                          七: 退出程序                                    ||\n");
		printf("||                                                                           ||\n");
		printf("||                                                                           ||\n");
		printf("===============================================================================\n");
		fflush(stdin);
		printf("\n");
		printf("\n");
		printf("\t\t   请输入功能选项:");

		scanf("%d", &i);
		switch (i)
		{
		case 1:
			shuru();
			break;
		case 2:
			XianShi();
			break;
		case 3:
			ChaName();
			break;
		case 4:
			ChaNo();
			break;
		case 5:
			Dle();
			break;
		case 6:
			XiuGai();
			break;
		case 7:
			exit(0);
		}
	}


}



void shuru(void)		//学生信息输入函数
{
	char a;
	system("cls");
	
	printf("请输入学生信息:\n");
	do{

		printf("请输入第%d个学生学号:", i + 1);
		scanf("%s", &st[i].id);
		printf("请输入第%d个学生姓名:", i + 1);
		scanf("%s", &st[i].name);
		printf("请输入第%d个学生年龄:", i + 1);
		scanf("%d", &st[i].age);
		printf("请输入第%d个学生性别:", i + 1);
		scanf("%s", &st[i].sex);
		printf("请输入第%d个学生生日:", i + 1);
		scanf("%s", &st[i].birthday);
		printf("请输入第%d个学生电话:", i + 1);
		scanf("%s", &st[i].tel);
		printf("请输入第%d个学生地址:", i + 1);
		scanf("%s", &st[i].address);
		printf("请输入第%d个学生邮箱:", i + 1);
		scanf("%s", &st[i].email);
		printf("\n是否继续输入另外一个学生信息?(y/n)");
		fflush(stdin);
		a = getchar();
		i++;
	} while (a == 'y' && i <= 50);
	CaiDan();
}

void XianShi(void)
{
	system("cls");
	for (j = 0; j < i; j++)
	{
		printf("第%d个学生学号是:", j + 1);
		printf("%s\n", st[j].id);
		printf("第%d个学生姓名是:", j + 1);
		printf("%s\n", st[j].name);
		fflush(stdin);
		printf("第%d个学生年龄是:", j + 1);
		printf("%d\n", st[j].age);
		fflush(stdin);
		printf("第%d个学生性别是:", j + 1);
		printf("%s\n", st[j].sex);
		printf("第%d个学生生日是:", j + 1);
		printf("%s\n", st[j].birthday);
		printf("第%d个学生电话是:", j + 1);
		printf("%s\n", st[j].tel);
		printf("第%d个学生地址是:", j + 1);
		printf("%s\n", st[j].address);
		printf("第%d个学生邮箱是:", j + 1);
		printf("%s\n", st[j].email);
		printf("\n\n");
	}
	system("pause");
	CaiDan();
}

void ChaName(void)
{
	char name[10];
	int i;
	system("cls");
	printf("请输入你要查找的学生姓名:");
	scanf("%s", name);
	for (i = 0; i < j; i++)
	{
		if (strcmp(name, st[i].name) == 0)
		{
			printf("该学生学号是:");
			printf("%s\n", st[i].id);
			printf("该学生姓名是:");
			printf("%s\n", st[i].name);
			printf("该学生年龄是:");
			printf("%s\n", st[i].age);
			printf("该学生性别是:");
			printf("%s\n", st[i].sex);
			printf("该学生生日是:");
			printf("%s\n", st[i].birthday);
			printf("该学生电话是:");
			printf("%s\n", st[i].tel);
			printf("该学生地址是:");
			printf("%s\n", st[i].address);
			printf("该学生邮箱是:");
			printf("%s\n", st[i].email);
		}
	}
	system("pause");
	CaiDan();
}

void ChaNo(void)
{
	char i[4];
	int k;
	system("cls");
	printf("请输入你要查找的学生学号:");
	scanf("%s", i);
	for (k = 0; k < j; k++)
	{
		if (strcmp(i, st[k].id) == 0)
		{
			printf("该学生学号是:");
			printf("%s\n", st[k].id);
			printf("该学生姓名是:");
			printf("%s\n", st[k].name);
			printf("该学生年龄是:");
			printf("%d\n", st[k].age);
			printf("该学生性别是:");
			printf("%s\n", st[k].sex);
			printf("该学生生日是:");
			printf("%s\n", st[k].birthday);
			printf("该学生电话是:");
			printf("%s\n", st[k].tel);
			printf("该学生地址是:");
			printf("%s\n", st[k].address);
			printf("该学生邮箱是:");
			printf("%s\n", st[k].email);
		}
	}
	system("pause");
	CaiDan();
}

void Dle(void)
{
	char id[4];
	int k;
	int a;
	system("cls");
	printf("请输入要删除学生的学号:");
	scanf("%s",id);
	for (k = 0; k < j; k++)
	{
		if (strcmp(id, st[k].id) == 0)
		{
			break;
		}
		else
		{
			printf("没有找到该学生");
		}
	}
	for (a = 0; a < j; a++)
	{
		st[a] = st[a + 1];
	}

	fflush(stdin);
	system("pause");
	CaiDan();
}

void XiuGai(void)
{
	char id[4];
	int i;
	system("cls");
	XianShi();
	
	printf("\n请输入需要修改学生的学号:");
	scanf("%s",&id);

	for (i = 0; i < j; i++)
	{
		if (strcmp(id, st[i].id) == 0)
		{
			printf("请输入学生学号:");
			scanf("%s", &st[i].id);
			printf("请输入学生姓名:");
			scanf("%s", &st[i].name);
			printf("请输入学生年龄:");
			scanf("%d", &st[i].age);
			fflush(stdin);
			printf("请输入学生性别:");
			scanf("%s", &st[i].sex);
			printf("请输入学生生日:");
			scanf("%s", &st[i].birthday);
			printf("请输入学生电话:");
			scanf("%s", &st[i].tel);
			printf("请输入学生地址:");
			scanf("%s", &st[i].address);
			printf("请输入学生邮箱:");
			scanf("%s", &st[i].email);
		}
	}
	CaiDan();
}

int DengLu(char name[20], char pwd[20])//用户名密码验证
{
	FILE *fp1;			//文件指针变量
	char str[20];
	/*
	*以只读方式打开文件
	*read.txt格式为 :用户名 密码 (中间有一空格)无限循环
	*/
	if ((fp1 = fopen("guanl.txt", "r")) == NULL)	//判断文件夹是否有read.txt文件
	{
		printf("cannot open file\n");
		return 0;
	}
	/*
	*判断账户是否存在
	*/
	while (!feof(fp1))
	{
		fscanf(fp1, "%s", str);
		if (strcmp(str, name) == 0)
		{
			printf("用户名正确\n", name);
			fscanf(fp1, "%s", str);
			if (strcmp(str, pwd) == 0)
			{
				return 1;
			}
			else
			{
				fclose(fp1);
				return 0;
			}
		}
		fscanf(fp1, "%s", str);
	}
	fclose(fp1);
	return 0;
}

void YanZ(void)//用户名密码验证,输入错3次自动退出游戏
{
	char user[20];	//用户名
	char pwd[20];	//密码
	int i;

	for (i = 2;; i--)
	{
		printf("\n\n\n\n");
		printf("   ************************************************************************\n");
		printf("   *                                                                      *\n");
		printf("   * 欢迎使用本系统,本系统为学生信息管理系统,登陆后可选 *\n");
		printf("   *                                                                      *\n");
		printf("   ************************************************************************\n");
		printf("\n\n");
		printf("                     请输入帐号: ");
		scanf("%s", &user);
		printf("                     请输入密码:");
		scanf("%s", &pwd);
		if (DengLu(user, pwd) == 1)//判断输入的号码是否正确
		{
			printf("------------------------------登录成功!------------------------------");
			break;
		}
		else//如果不正确循环判断还有多少次游戏退出
		{
			printf("用户名密码错误");
			printf("还有%d次验证错误退出\n", i);
			if (i == 0)
			{
				exit(0);
			}
		}
	}
	system("cls");
}