学生管理系统

这是一个用C语言实现的学生管理系统,包括学生、教师及管理员的登录、注册、成绩管理等功能,并支持多种查询和排序操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学生管理系统是我在学习完C语言后自己写的代码,很长,很多的地方运用的不好,还要多多改进
#include<windows.h> 
#include<stdio.h>
#include<string.h>
#define N sizeof(struct student)
#define M sizeof(struct teacher)
#define L sizeof(struct leader)
struct student{
	int num;
	char mima[20];
	char name[20];
	char sex[20];
	float yuwen;
	float math;
	float english;
	float sum;
	struct student *next;
};
struct teacher{
	int num;
	char name[20]; 
	char mima[20];
	char kind[20];
	struct teacher *next;
};

struct leader{
	int num;
	char name[20];
	char mima[20];
	struct leader *next;
};

void denglu();//登录界面 
void denglu1();//主界面 
void teacher_denglu(struct teacher *head_teacher,struct student *head_student);//教师登录 
void student_denglu(struct student *head_student);//学生登录 
void leader_denglu(struct leader *head_leader,struct teacher *head_teacher,struct student *head_student);//管理员登录 
void student_menu(struct student *head_student,int num);//学生菜单 
void teacher_menu(struct teacher *head_teacher,int num1,struct student *head_student);//教师菜单 
void leader_menu(struct leader *head_leader,int num1,struct teacher *head_teacher,struct student *head_student);//管理员菜单 
void leader_search(struct student *head_student,struct teacher *head_teacher);//管理员查询 
void leader_Delete(struct student *head_student,struct teacher *head_teacher);//管理员删除 
void leader_change(struct student *head_student,struct teacher *head_teacher);//管理员修改 
void leader_bianli(struct student *head_student,struct teacher *head_teacher,struct leader *leader);//管理员遍历 
struct student *student_zhuce(struct student *head_student);//学生注册 
struct teacher *teacher_zhuce(struct teacher *head_teacher);//教师注册 
struct leader *leader_zhuce(struct leader *head_leader);//管理员注册 
void search_one(struct student *head_student,int num);//查询学生单个成绩 
void search_sum(struct student *head_student,int num);//查询所有成绩 
void search_No(struct student *head_student,int num);//查询排名 
void change_studnet_mima(struct student *head_student,int num);//修改学生密码 
void change_grate(struct student *head_student,int num);//修改学生成绩 
void change_teacher_mima(struct teacher *head_teacher,int num);//修改教师密码 
void search_teacher(struct teacher *head_teacher,int num);//查询教师信息 
void search_student(struct student *head_student,int num);//查询学生信息 
struct teacher *Delete_teacher(struct teacher *head_teacher,int num);//删除教师 
struct student *Delete_student(struct student *head_student,int num);//删除学生 
void change_teacher(struct teacher *head_teacher,int num);//修改教师信息 
void change_leader_mima(struct leader *head_leader,int num);//修改管理员密码 
void bianli_student(struct student *head_student);//遍历学生 
void bianli_teacher(struct teacher *head_teacher);//遍历教师 
void bianli_leader(struct leader *head_leader);//遍历管理员 
void write(struct student *head_student,struct teacher *head_teacher,struct leader *head_leader);//写入文件 
void sort(struct student *head_student);//排序 
void sort_num(struct student *head_student);//按学号排序 
void sort_sum(struct student *head_student);//按总分排序 
void sort_yuwen(struct student *head_student);//按语文成绩排序 
void sort_math(struct student *head_student);//按数学成绩排序 
void sort_english(struct student *head_student);//按英语成绩排序 
void write_student(struct student *head_student);//写入学生文件 
void write_teacher(struct teacher *head_teacher);//写入教师文件 
void write_leader(struct leader *head_leader);//写入管理员文件 

int main(void)
{
	denglu();//登录界面 
	denglu1();
	
	return 0; 
}

struct student *creat_student()//将学生数据从文件中读入学生链表 
{
	struct student *head,*p1,*p2,*p3,t; 
	FILE *p;
	head=NULL;
	p1=p2=(struct student*)malloc(N);
	p=fopen("学生.txt","r");
	if((p=fopen("学生.txt","r"))==NULL)
	{
		printf("文件打开错误");
		return head;
	}
	while(fread(&t,N,1,p)!=0)//读取文件直到没有数据 
	{
		if(head==NULL)
		{
			head=(struct student*)malloc(N);
			head->num=t.num;
			head->next=NULL;
			strcpy(head->mima,t.mima);
			strcpy(head->name,t.name);
			strcpy(head->sex,t.sex);
			head->yuwen=t.yuwen;
			head->math=t.math;
			head->english=t.english;
			head->sum=t.sum;
			head->next=NULL;
		}
		else
		{
			if(head->next==NULL)
			{
				head->next=p1;
			}
			p1->num=t.num;
			p1->next=NULL;
			strcpy(p1->mima,t.mima);
			strcpy(p1->name,t.name);
			strcpy(p1->sex,t.sex);
			p1->yuwen=t.yuwen;
			p1->math=t.math;
			p1->english=t.english;
			p1->sum=t.sum;
			p1=(struct student*)malloc(N);
			p3=p2;
			p2->next=p1;
			p2=p1;
		}
	}
	if(head==NULL)
	{
		head=(struct student*)malloc(N);
		head->next=NULL;
		return head;
		fclose(p);
	}
	if(head->next==NULL)
	{
		return head;
		fclose(p);
	}
	else
	{
	free(p1);
	p3->next=NULL;
	fclose(p);
	return head;
	}
	
}

struct teacher *creat_teacher()//将教师数据从文件中读入教师链表 
{
	struct teacher *head,*p1,*p2,*p3,t;
	FILE *p;
	head=NULL;
	p1=p2=(struct teacher*)malloc(M);
	p=fopen("教师.txt","r");
	if((p=fopen("教师.txt","r"))==NULL)
	{
		printf("文件打开错误");
		return head;
 	}
	while(fread(&t,M,1,p)!=0)//读取文件直到没有数据 
	{
		if(head==NULL)
		{
			head=(struct teacher*)malloc(M);
			head->num=t.num;
			head->next=NULL;
			strcpy(head->name,t.name);
			strcpy(head->mima,t.mima);
			strcpy(head->kind,t.kind);
		}
		else
		{
			if(head->next==NULL)
			{
				head->next=p1;
			}
			p1->num=t.num;
			p1->next=NULL;
			strcpy(p1->name,t.name);
			strcpy(p1->mima,t.mima);
			strcpy(p1->kind,t.kind);
			p1=(struct teacher*)malloc(M);
			p3=p2;
			p2->next=p1;
			p2=p1;
		}
 }
	if(head==NULL)
	{
		head=(struct teacher*)malloc(M);
		head->next=NULL;
		return head;
		fclose(p);
	}
	if(head->next==NULL)
	{
		return head;
		fclose(p);
	}
	else
	{
	free(p1);
	p3->next=NULL;
	fclose(p);
	return head;
	}
}

struct leader *creat_leader()//将教师数据从文件中读入教师链表 
{
	struct leader *head,*p1,*p2,*p3,t;
	FILE *p;
	head=NULL;
	p1=p2=(struct leader*)malloc(L);
	p=fopen("管理员.txt","r");
	if((p=fopen("管理员.txt","r"))==NULL)
	{
		printf("文件打开错误");
		return head;
 	}
	while(fread(&t,L,1,p)!=0)//读取文件直到没有数据 
	{
		if(head==NULL)
		{
			head=p1;
		}
		p1->num=t.num;
		p1->next=NULL;
		strcpy(p1->name,t.name);
		strcpy(p1->mima,t.mima);
		p1=(struct leader*)malloc(L);
		p3=p2;
		p2->next=p1;
		p2=p1;
	}
	if(head==NULL)
	{
		return head;
		fclose(p);
	}
	else
	{
	free(p1);
	p3->next=NULL;
	fclose(p);
	return head;
	}
}


void denglu()
{
	while(!kbhit())
	{
		printf("\n\n\n\t\t\t\t\t★★★★★★★★★★★★★★\n\n");
		printf("\t\t\t\t\t★★★★★★★★★★★★★★\n\n");
		printf("\t\t\t\t\t  欢迎进入教务管理系统!!!\n\n");
		printf("\t\t\t\t\t★★★★★★★★★★★★★★\n\n");
		printf("\t\t\t\t\t★★★★★★★★★★★★★★\n\n");
		Sleep(1000);
		system("cls");
		printf("\n\n\n\t\t\t\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
		printf("\t\t\t\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
		printf("\t\t\t\t\t  欢迎进入教务管理系统!!!\n\n");
		printf("\t\t\t\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
		printf("\t\t\t\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
		Sleep(1000);
		system("cls");
	}
}

void denglu1()
{
	struct student *head_student=creat_student();//创建三个链表 
	struct teacher *head_teacher=creat_teacher();
	struct leader *head_leader=creat_leader(); 
	char c;
	getchar();
	
	do
	{
		fflush(stdin);
		printf("\t----------------------------------------\n");//主界面 
		printf("\t|            学生管理系统              |\n");
		printf("\t----------------------------------------\n");
		printf("\t|          1.学生登录                  |\n");
		printf("\t|          2.教师登录                  |\n");
		printf("\t|          3.管理员登录                |\n");
		printf("\t|          4.注册                      |\n");
		printf("\t|          0.退出程序                  |\n");
		printf("\t----------------------------------------\n");
		
		printf("请选择:"); 
		c=getchar();
		
		switch(c-'0')
		{
			case 1:
				student_denglu(head_student);// 学生登录
				break;
			case 2:
				teacher_denglu(head_teacher,head_student);//教师登录
				break;
			case 3:
				leader_denglu(head_leader,head_teacher,head_student);//管理员登录
				break;
			case 4:
				system("cls"); 
				int choice;
					do
					{	
					printf("\t----------------------------------------\n");//注册界面 
					printf("\t|            学生管理系统              |\n");
					printf("\t----------------------------------------\n");
					printf("\t|          1.学生注册                  |\n");
					printf("\t|          2.教师注册                  |\n");
					printf("\t|          3.管理员注册                |\n");
					printf("\t|          0.返回主菜单                |\n");
					printf("\t----------------------------------------\n");
					printf("请选择:"); 
						scanf("%d",&choice); 
						switch(choice)
						{
							case 1:
								head_student=student_zhuce(head_student);//学生注册
								break;
							case 2:
								head_teacher=teacher_zhuce(head_teacher);//教师注册
								break;
							case 3:
								head_leader=leader_zhuce(head_leader);//管理员注册
								break;
							case 0:
								break;
							default:
								printf("输入错误!请重试!!!\n");
								system("pause");
								system("cls");
						} 
					}
				while(choice!=0);
			    break;
			case 0:
				break;
			default:
				printf("输入错误!请重试!!!\n");
				fflush(stdin);
				system("pause");
				system("cls");
		} 
		
	}
	while((c-'0')!=0);//退出 
	system("cls");
	printf("\t\t\t\t*************************************\n");
	printf("\t\t\t\t           谢谢使用!!!\n");
	printf("\t\t\t\t*************************************");
	write(head_student,head_teacher,head_leader);//将数据写入文件 
}

void teacher_denglu(struct teacher *head_teacher,struct student *head_student)//教师登录 
{
	if(head_student->next==NULL||head_teacher->next==NULL)//判断教师链表和学生链表是否为空 
	{
		printf("学生或教师链表为空!!!\n");
		system("pause");
		system("cls");
	}
	else
	{
	char mima1[20];
	int num1;
	struct teacher *p;
	int s;
	int flag=0;
	
	srand((int)time(NULL));
	int start =(rand()%(99999-10000+1))+ 10000;//初始化验证码 
	printf("请输入教工号:");
	scanf("%d",&num1);
	printf("请输入密码:");
	scanf("%s",mima1);
	printf("请输入验证码:%d\n",start);
	printf("请输入验证码:");
	scanf("%d",&s);
	if(s==start)//判断验证码是否满足 
	{
		for(p=head_teacher->next;p;p=p->next)
		{
			if(p->num==num1&&strcmp(p->mima,mima1)==0)//判断教工号和密码是否满足 
			{
				printf("\t----------------------------------------\n");
				printf("\t              登录成功!\n");
				printf("\t        欢迎进入教务管理系统!!!\n");
				printf("\t----------------------------------------\n");
				flag=1;
				system("pause");
				system("cls");
				teacher_menu(head_teacher,num1,head_student);//进入教师菜单 
			}
		}
		if(!flag)
		{
				printf("\t\t\t\t查无此人!!!\n");//若所有教师都不满足,输出 查无此人
				system("pause");
				system("cls"); 
				return ;
		}
	}
	else
	{
		printf("\t\t\t\t验证码错误!!!");//若验证码不满足,输出 验证码错误
		system("pause");
		system("cls"); 
	}
}
}

void student_denglu(struct student *head_student)//学生登录 
{
	if(head_student->next==NULL)//判断学生链表是否 
	{
		printf("学生链表为空!!!\n");
		system("pause");
		system("cls");
	}
	else
	{
	char mima1[20];
	int num1;
	struct student *p;
	int s;
	int flag=0;
	
	srand((int)time(NULL));//初始化验证码 
	int start =(rand()%(99999-10000+1))+ 10000;
	printf("请输入学号:");
	scanf("%d",&num1);
	printf("请输入密码:");
	scanf("%s",mima1);
	printf("请输入验证码:%d\n",start);
	printf("请输入验证码:");
	scanf("%d",&s);
	if(s==start)//判断验证码是否满足 
	{
		for(p=head_student->next;p;p=p->next)
		{
			if(p->num==num1&&strcmp(p->mima,mima1)==0)//判断学号与密码是否匹配 
			{
				printf("\t----------------------------------------\n");
				printf("\t              登录成功!\n");
				printf("\t        欢迎进入教务管理系统!!!\n");
				printf("\t----------------------------------------\n");
				flag=1;
				system("pause");
				system("cls");
				student_menu(head_student,num1);//进入学生菜单 
			}
		}
		if(!flag)
		{
				printf("\t\t\t\t查无此人!!!\n");//判断是否有此人 
				system("pause");
				system("cls"); 
		}
	}
	else
	{
		printf("\t\t\t\t验证码错误!!!");//若验证码不满足,输出 验证码错误
		system("pause");
		system("cls"); 
	}
}
}

void leader_denglu(struct leader *head_leader,struct teacher *head_teacher,struct student *head_student)
{
	if(head_student->next==NULL||head_teacher->next==NULL||head_leader==NULL)
	{
		printf("学生,教师或管理员其中之一链表为空!!!\n");
		system("pause");
		system("cls");
	}
	else
	{
	char mima1[20];
	int num1;
	struct leader *p;
	int s;
	int flag=0;
	
	srand((int)time(NULL));//初始化验证码 
	int start =(rand()%(99999-10000+1))+ 10000;
	printf("请输入管理员号:");
	scanf("%d",&num1);
	printf("请输入密码:");
	scanf("%s",mima1);
	printf("请输入验证码:%d\n",start);
	printf("请输入验证码:");
	scanf("%d",&s);
	if(s==start)//判断验证码是否满足 
	{
		for(p=head_leader;p;p=p->next)
		{
			if(p->num==num1&&strcmp(p->mima,mima1)==0)//判断管理员号与密码是否匹配 
			{
				printf("\t----------------------------------------\n");
				printf("\t              登录成功!\n");
				printf("\t        欢迎进入教务管理系统!!!\n");
				printf("\t----------------------------------------\n");
				flag=1;
				system("pause");
				system("cls");
				leader_menu(head_leader,num1,head_teacher,head_student);//进入管理员菜单 
			}
		}
		if(!flag)
		{
				printf("\t\t\t\t查无此人!!!\n");//判断是否有此人 
				system("pause");
				system("cls"); 
				return ;
		}
	}
	else
	{
		printf("\t\t\t\t验证码错误!!!");//若验证吗不满足,输出 验证码错误
		system("pause");
		system("cls"); 
	}
}
}

struct student *student_zhuce(struct student *head_student)
{
	int num;
	int flag=0;
	char mima[20];
	char sex[20];
	char name[20];
	
	struct student *p=head_student,*p1,*p2;
	
	printf("请输入学号:");
	scanf("%d",&num);
	for(p1=head_student;p1;p1=p1->next)
	{
		if(p1->num==num)
		flag=1;
	 } 
	 if(flag)//判断是否注册过 
	 {
	 	printf("\t\t\t此学号已被注册过!!!\n");
	 	return head_student;
	 }
	printf("请输入密码:");
	scanf("%s",mima);
	printf("请输入姓名:");
	scanf("%s",name);
	printf("请输入性别:");
	scanf("%s",sex); 
	if(head_student->next==NULL)//注册第一个人的信息 
	{
		p1=(struct student*)malloc(N);
		head_student->next=p1;
		p1->num=num;
		strcpy(p1->mima,mima);
		strcpy(p1->name,name);
		strcpy(p1->sex,sex); 
		p1->yuwen=0;
		p1->math=0;
		p1->english=0;
		p1->sum=p1->math+p1->english+p1->yuwen;
		p1->next=NULL; 
		printf("注册成功!!!");
		system("pause");
		system("cls");
	}
	else{
	while(p)//尾插法插入新节点 
	{
		p2=p;
		p=p->next;
	}	
	p1=(struct student*)malloc(N);	
	p1->num=num;
	strcpy(p1->mima,mima);
	strcpy(p1->name,name);
	strcpy(p1->sex,sex); 
	p1->yuwen=0;
	p1->math=0;
	p1->english=0;
	p1->sum=p1->math+p1->english+p1->yuwen;
	p1->next=NULL;
	p2->next=p1;
	printf("注册成功!!!\n");
	system("pause");
	system("cls");
	}
	return head_student;
}

struct teacher *teacher_zhuce(struct teacher *head_teacher)
{
	int num;
	int flag=0; 
	char name[20];
	char mima[20];
	char kind[20];
	
	struct teacher *p=head_teacher,*p1,*p2;
	printf("请输入教工号:");
	scanf("%d",&num);
	for(p1=head_teacher;p1;p1=p1->next)
	{
		if(p1->num==num)
		flag=1;
	 } 
	 if(flag)//判断是否注册过 
	 {
	 	printf("\t\t\t此教工号已被注册过!!!\n");
	 	return head_teacher;
	 }
	printf("请输入密码:");
	scanf("%s",mima);
	printf("请输入姓名:");
	scanf("%s",name);
	printf("请输入所授科目:");
	scanf("%s",kind);
	if(head_teacher->next==NULL)//注册第一个人的信息 
	{
		p1=(struct teacher*)malloc(M);
		head_teacher->next=p1;
		p1->num=num;
		strcpy(p1->mima,mima);
		strcpy(p1->name,name);
		strcpy(p1->kind,kind);
		p1->next=NULL;
		printf("注册成功!!!\n");
		system("pause");
		system("cls");
	}
	else
	{
	while(p)//尾插法插入新节点 
	{
		p2=p;
		p=p->next;
	}
	p1=(struct teacher*)malloc(M);
	p1->num=num;	
	strcpy(p1->mima,mima);
	strcpy(p1->name,name);
	strcpy(p1->kind,kind);
	p1->next=NULL;	
	p2->next=p1;
	printf("注册成功!!!\n");
	system("pause");
	system("cls");
}
	return head_teacher;
}

struct leader *leader_zhuce(struct leader *head_leader)
{
	int num;
	int flag=0;
	char mima[20];
	char name[20];
	
	struct leader *p=head_leader,*p1,*p2;
	
	printf("请输入管理员号:");
	scanf("%d",&num);
	for(p1=head_leader;p1;p1=p1->next)
	{
		if(p1->num==num)
		flag=1;
	 } 
	 if(flag)//判断是否注册过 
	 {
	 	printf("\t\t\t此学号已被注册过!!!\n");
	 	return head_leader;
	 }
	printf("请输入密码:");
	scanf("%s",mima);
	printf("请输入姓名:");
	scanf("%s",name);
	
	if(head_leader==NULL)//注册第一个人的信息 
	{
		p1=(struct leader*)malloc(L);
		head_leader=p1;
		p1->num=num;
		strcpy(p1->mima,mima);
		strcpy(p1->name,name);
		p1->next=NULL;
		printf("注册成功!!!\n");
		system("pause");
		system("cls");
	}
	else
	{
	while(p)//尾插法插入新节点 
	{
		p2=p;
		p=p->next;
	}
	p1=(struct leader*)malloc(L);
	p1->num=num;
	strcpy(p1->mima,mima);
	strcpy(p1->name,name);
	p1->next=NULL;
	p2->next=p1;
	printf("注册成功!!!\n");
	system("pause");
	system("cls");
	}
	return head_leader;
}

void student_menu(struct student *head_student,int num)
{
	int choice;
	char c;
	
	do
	{
		fflush(stdin);
		system("cls");
		printf("\t----------------------------------------\n");//学生菜单界面 
		printf("\t|            学生管理系统              |\n");
		printf("\t----------------------------------------\n");
		printf("\t|          1.单科成绩查询              |\n");
		printf("\t|          2.全部成绩查询              |\n");
		printf("\t|          3.排名查询                  |\n");
		printf("\t|          4.修改密码                  |\n");
		printf("\t|          0.返回主菜单                |\n");
		printf("\t----------------------------------------\n");
		printf("请选择:"); 
	
		c=getchar();
		switch((c-'0'))
		{
			case 1:
				search_one(head_student,num);//单科成绩查询
				break;
			case 2:
				search_sum(head_student,num);//全部成绩查询
				break;
			case 3:
				search_No(head_student,num);//排名查询
				break;
			case 4:
				change_studnet_mima(head_student,num);//修改密码
				break;
			case 0:
				break;//返回 
			default:
				printf("输入错误!请重试!!!\n");
				fflush(stdin);
				system("pause");
				system("cls");
		}
	}while((c-'0')!=0);
	 
}

void teacher_menu(struct teacher *head_teacher,int num1,struct student *head_student)
{
	char c;
	int num;

	do
	{
		fflush(stdin);
		system("cls");
		printf("\t----------------------------------------\n");//教师菜单界面 
		printf("\t|            学生管理系统              |\n");
		printf("\t----------------------------------------\n");
		printf("\t|          1.查询学生成绩              |\n");
		printf("\t|          2.修改学生成绩              |\n");
		printf("\t|          3.删除学生                  |\n");
		printf("\t|          4.修改密码                  |\n");
		printf("\t|          5.遍历学生                  |\n");
		printf("\t|          6.学生排序                  |\n");
		printf("\t|          0.返回主菜单                |\n");
		printf("\t----------------------------------------\n");
		printf("请选择:"); 
		c=getchar();
	
		switch(c-'0')
		{
		case 1:
			printf("请输入所查学生学号:");
			scanf("%d",&num); 
			search_sum(head_student,num);//查询学生成绩
			break;
		case 2:
			printf("学生信息为:\n"); 
			bianli_student(head_student);
			printf("请输入所改学生学号:");
			scanf("%d",&num); 
			change_grate(head_student,num);//修改学生成绩
			break;
		case 3:
			printf("学生信息为:\n"); 
			bianli_student(head_student);
			printf("请输入所删学生学号:");
			scanf("%d",&num); 
			head_student=Delete_student(head_student,num);//删除学生
			break;
		case 4:
			change_teacher_mima(head_teacher,num1);//修改密码
			break;
		case 5:
			bianli_student(head_student);//遍历学生
			system("pause");
			system("cls");
			break;
		case 6:
			sort(head_student); //学生排序
			break;
		case 0:
			break;//返回 
		default:
				printf("输入错误!请重试!!!\n");
				system("pause");
				system("cls");
		}
	}while((c-'0')!=0); 
}

void leader_menu(struct leader *head_leader,int num1,struct teacher *head_teacher,struct student *head_student)
{
	int c;
	int num;
	
	do
	{
		fflush(stdin);
		system("cls");
		printf("\t----------------------------------------\n");//管理员菜单界面 
		printf("\t|            学生管理系统              |\n");
		printf("\t----------------------------------------\n");
		printf("\t|          1.查询师生信息              |\n");
		printf("\t|          2.删除师生信息              |\n");
		printf("\t|          3.修改师生信息              |\n");
		printf("\t|          4.修改密码                  |\n");
		printf("\t|          5.遍历各信息                |\n");
		printf("\t|          6.学生排序                  |\n");
		printf("\t|          0.返回主菜单                |\n");
		printf("\t----------------------------------------\n");
		printf("请选择:"); 
		c=getchar();
		switch(c-'0')
		{
			case 1:
				leader_search(head_student,head_teacher); //查询师生信息
				break;
			case 2:
				leader_Delete(head_student,head_teacher);//删除师生信息
				break;
			case 3:
				leader_change(head_student,head_teacher); //修改师生信息
				break;
			case 4:
				change_leader_mima(head_leader,num1);//修改密码
				break;
			case 5:
				leader_bianli(head_student,head_teacher,head_leader);//遍历各信息
				break;
			case 6:
				sort(head_student); // 学生排序
				break;
			case 0:
				break;
			default:
				printf("输入错误!请重试!!!\n");
				fflush(stdin);
				system("pause");
				system("cls");
		}
	}while((c-'0')!=0);
}
void leader_search(struct student *head_student,struct teacher *head_teacher)
{
	int num;
	char c;
	
	do
	{
		fflush(stdin);
		system("cls"); 
		printf("\t----------------------------------------\n");
		printf("\t|            学生管理系统              |\n");
		printf("\t----------------------------------------\n");
		printf("\t|          1.查询老师信息              |\n");
		printf("\t|          2.查询学生信息              |\n");
		printf("\t|          0.返回                      |\n");
		printf("\t----------------------------------------\n");
		printf("请选择:"); 
		c=getchar();
	switch(c-'0')
	{
	
		case 1:
			printf("请输入学教工号:");//查询老师信息
			scanf("%d",&num); 
			search_teacher(head_teacher,num);
			break;
		case 2:
			printf("请输入学生学号:");//查询学生信息
			scanf("%d",&num); 
			search_student(head_student,num);
			break;
		case 0:
			break;
		default:
			printf("输入错误!请重试!!!\n");
			fflush(stdin);
			system("pause");
			system("cls");
	}
	}while((c-'0')!=0);
}

void leader_Delete(struct student *head_student,struct teacher *head_teacher)
{
	int num;
	char c;
	
	do{
		fflush(stdin);
		system("cls");
		printf("\t----------------------------------------\n");
		printf("\t|            学生管理系统              |\n");
		printf("\t----------------------------------------\n");
		printf("\t|          1.删除老师信息              |\n");
		printf("\t|          2.删除学生信息              |\n");
		printf("\t|          0.返回                      |\n");
		printf("\t----------------------------------------\n");
		printf("请选择:"); 
		c=getchar();
		switch(c-'0')
		{
			case 1:
				printf("请输入学教工号:");//删除老师信息
				scanf("%d",&num); 
				head_teacher=Delete_teacher(head_teacher,num);
				break;
			case 2:
				printf("请输入所删学生学号:");//删除学生信息
				scanf("%d",&num); 
				head_student=Delete_student(head_student,num);
				break;
			case 0:
				break;//返回 
			default:
			printf("输入错误!请重试!!!\n");
			fflush(stdin);
			system("pause");
			system("cls");
		} 	
	}while((c-'0')!=0);
}

void leader_change(struct student *head_student,struct teacher *head_teacher)
{
	int num;
	char c;
	
	do
	{
		fflush(stdin);
		system("cls");
		printf("\t----------------------------------------\n");
		printf("\t|            学生管理系统              |\n");
		printf("\t----------------------------------------\n");
		printf("\t|          1.修改老师信息              |\n");
		printf("\t|          2.修改学生信息              |\n");
		printf("\t|          0.返回                      |\n");
		printf("\t----------------------------------------\n");
		printf("请选择:"); 
		c=getchar();
	switch(c-'0')
	{
	
		case 1:
				printf("请输入所改教工号:");
				scanf("%d",&num); 
				change_teacher(head_teacher,num);//修改老师信息 
				break;
		case 2:
				printf("请输入所改学生学号:");
				scanf("%d",&num); 
				change_grate(head_student,num);//修改学生信息 
				break;
		case 0:
			break;//返回 
		default:
			printf("输入错误!请重试!!!\n");
			fflush(stdin);
			system("pause");
			system("cls");
	}
	}while((c-'0')!=0);
}

void leader_bianli(struct student *head_student,struct teacher *head_teacher,struct leader *head_leader)
{
	int num;
	char c;
	
	do{
		fflush(stdin);
		system("cls");
		printf("\t----------------------------------------\n");
		printf("\t|            学生管理系统              |\n");
		printf("\t----------------------------------------\n");
		printf("\t|          1.遍历学生                  |\n");
		printf("\t|          2.遍历教师                  |\n");
		printf("\t|          3.遍历管理员                |\n");
		printf("\t|          0.返回                      |\n");
		printf("\t----------------------------------------\n");
		printf("请选择:"); 

		c=getchar();
		switch(c-'0')
		{
			case 1:
				bianli_student(head_student);//遍历学生 
				system("pause");
				system("cls");
				break;
			case 2:
				bianli_teacher(head_teacher);//遍历老师 
				system("pause");
				system("cls");
				break;
			case 3:
				bianli_leader(head_leader);//遍历管理员 
				system("pause");
				system("cls");
				break;
			case 0:
				break;//返回 
			default:
			printf("输入错误!请重试!!!\n");
			fflush(stdin);
			system("pause");
			system("cls");
		} 	
	}while((c-'0')!=0);
}

void search_one(struct student *head_student,int num)
{
	char c;
	struct student *p=head_student->next;
	while(p->num!=num&&p)
	{
		p=p->next;
		if(p==NULL)
		{
		printf("查无此人!!!\n");//判断有没有此人 
		system("pause");
		system("cls");
		return;
		}
	}


	do
	{
		fflush(stdin);
		printf("\t----------------------------------------\n");
		printf("\t|            学生管理系统              |\n");
		printf("\t----------------------------------------\n");
		printf("\t        请选择要查询的科目:           |\n");
		printf("\t|          1.语文                      |\n");
		printf("\t|          2.数学                      |\n");
		printf("\t|          3.英语                      |\n");
		printf("\t|          0.返回                      |\n");
		printf("\t----------------------------------------\n");
		printf("请选择:"); 
	
		c=getchar();
		switch(c-'0')
		{
			case 1:
				printf("\t\t\t语文成绩为%.2f\n",p->yuwen);//查询语文成绩 
				system("pause");
				system("cls");
				break;
			case 2:
				printf("\t\t\t数学成绩为%.2f\n",p->math);//查询数学成绩 
				system("pause");
				system("cls");
				break;
			case 3:
				printf("\t\t\t英语成绩为%.2f\n",p->english);//查询英语成绩 
				system("pause");
				system("cls");
				break;
			case 0:
					break;//返回 
			default:
					printf("输入错误!请重试!!!\n");
					fflush(stdin);
					system("pause");
					system("cls");
			}
		}while((c-'0')!=0);
} 

void search_sum(struct student *head_student,int num)
{
	struct student *p=head_student->next;
	while(p->num!=num)
	{
		p=p->next;
		if(p==NULL)
		{
			printf("查无此人!!!\n");//判断有没有此人 
			system("pause");
			system("cls");
			return;
		}
	}
	
		printf("\t\t\t语文\t数学\t英语\t总分\n");
		printf("\t\t\t%.2f\t%.2f\t%.2f\t%.2f\n",p->yuwen,p->math,p->english,p->sum);
		system("pause");
		system("cls");
}

void search_No(struct student *head_student,int num)//排名查询 
{
	int no;
	char c;
	struct student *p1,*p2;
	
	p1=head_student->next;
	while(p1->num!=num)
	{
		p1=p1->next;
		if(p1==NULL)
		{
			printf("查无此人!!!\n");//判断有没有此人 
			system("pause");
			system("cls");
		}
	}

	do
	{
		fflush(stdin);
		p2=head_student->next; 
		no=1;
		system("cls");
		printf("\t----------------------------------------\n");
		printf("\t|            学生管理系统              |\n");
		printf("\t----------------------------------------\n");
		printf("\t        请选择要查询的科目:           |\n");
		printf("\t|          1.查询语文排名              |\n");
		printf("\t|          2.查询数学排名              |\n");
		printf("\t|          3.查询英语排名              |\n");
		printf("\t|          4.查询总排名                |\n");
		printf("\t|          0.返回                      |\n");
		printf("\t----------------------------------------\n");
		printf("请选择:"); 
	
		c=getchar();
		switch(c-'0')
		{
			case 1:
				while(p2)
				{
					if(p2->yuwen>p1->yuwen)//记录所有比之较大的 
					no++;
					p2=p2->next;
				}
				printf("语文排名为%d\n",no);
				system("pause");
				system("cls");
				break;
			case 2:
				while(p2)
				{
					if(p2->math>p1->math)//记录所有比之较大的 
					no++;
					p2=p2->next;
				}
				printf("数学排名为%d\n",no);
				system("pause");
				system("cls");
				break;
			case 3:
				while(p2)
				{
					if(p2->english>p1->english)//记录所有比之较大的 
					no++;
					p2=p2->next;
				}
				printf("英语排名为%d\n",no);
				system("pause");
				system("cls");
				break;
			case 4:
				while(p2)
				{
					if(p2->sum>p1->sum)//记录所有比之较大的 
					no++;
					p2=p2->next;
				}
				printf("总排名为%d\n",no);
				system("pause");
				system("cls");
				break;
			case 0:
				break;
			default:
				printf("输入错误!请重试!!!\n");
				fflush(stdin);
				system("pause");
				system("cls");
			}
		}while((c-'0')!=0);
}
void change_studnet_mima(struct student *head_student,int num)
{
	struct student *p=head_student->next;
	char mima1[20];
	char mima[20];
	
	while(p->num!=num)
	{
		p=p->next;
		if(p==NULL)
		{
			printf("查无此人!!!\n");//判断有没有此人 
			system("pause");
			system("cls");
			return;
		}
	}
	
	printf("请输入原密码:");
	scanf("%s",mima);
	printf("请输入新密码:"); 
	scanf("%s",mima1);
	
	if(strcmp(p->mima,mima)==0)//判断是否与原密码相等 
	{
		printf("修改成功!!!\n");
		strcpy(p->mima,mima1);//覆盖原密码 
		system("pause");
		system("cls");
	}
	else
	{
		printf("与原密码不符,修改失败!!!\n");
	}
}

void change_grate(struct student *head_student,int num)
{
	struct student *p1=head_student->next;
	float grate;
	char c;
	
	while(p1->num!=num)
	{
		p1=p1->next;
		if(p1==NULL)
		{
		printf("查无此人!!!\n");//判断有没有此人 
		system("pause");
		system("cls");
		return;
		}
	} 
	do
	{
		fflush(stdin);
		system("cls");
		printf("\t----------------------------------------\n");
		printf("\t|            学生管理系统              |\n");
		printf("\t----------------------------------------\n");
		printf("\t        请选择要修改的科目:           |\n");
		printf("\t|          1.修改语文成绩              |\n");
		printf("\t|          2.修改数学成绩              |\n");
		printf("\t|          3.修改英语成绩              |\n");
		printf("\t|          0.返回                      |\n");
		printf("\t----------------------------------------\n");
		printf("请选择:"); 
		c=getchar();
		
		switch(c-'0')
		{
			case 1:
				printf("%s的原语文成绩为%.2f\n",p1->name,p1->yuwen);//修改语文成绩
				printf("请输入修改后的成绩:");
				scanf("%f",&grate);
				p1->yuwen=grate;
				p1->sum=(grate+p1->math+p1->english);
				printf("修改成功!!!\n");
				system("pause");
				system("cls");
				break;
			case 2:
				printf("%s的原数学成绩为%.2f\n",p1->name,p1->math);//修改数学成绩
				printf("请输入修改后的成绩:");
				scanf("%f",&grate);
				p1->math=grate;
				p1->sum=(p1->yuwen+grate+p1->english);
				printf("修改成功!!!\n");
				system("pause");
				system("cls");
				break;
			case 3:
				printf("%s的原英语成绩为%.2f\n",p1->name,p1->english);//修改英语成绩
				printf("请输入修改后的成绩:");
				scanf("%f",&grate);
				p1->english=grate;
				p1->sum=(p1->yuwen+p1->math+grate);
				printf("修改成功!!!\n");
				system("pause");
				system("cls");
				break;
			case 0://返回 
				break;
			default:
				printf("输入错误!请重试!!!\n");
				fflush(stdin);
				system("pause");
				system("cls");
		}
	}while((c-'0')!=0);
}

void change_teacher_mima(struct teacher *head_teacher,int num)
{
	struct teacher *p=head_teacher->next;
	char mima1[20];
	char mima[20];
	
	while(p->num!=num)
	{
		p=p->next;
		if(p==NULL)
		{
			printf("查无此人!!!\n");//判断有没有此人 
			system("pause");
			system("cls");
			return;
		}
	}
		printf("请输入原密码:");
		scanf("%s",mima);
		printf("请输入新密码:"); 
		scanf("%s",mima1);
		
		if(strcmp(p->mima,mima)==0)//判断是否与原密码相等 
		{
			printf("修改成功!!!\n");
			strcpy(p->mima,mima1);//覆盖原密码 
			system("pause");
			system("cls");
		}
		else
		{
			printf("与原密码不符,修改失败!!!\n");
			system("pause");
			system("cls");
		}	
}

void search_teacher(struct teacher *head_teacher,int num)
{
	struct teacher *p=head_teacher->next;
	while(p->num!=num)
	{
		p=p->next;
		if(p==NULL)
		{
			printf("查无此人!!!\n");//判断有没有此人 
			system("pause");
			system("cls");
			return;
		}
	}
	printf("\t\t\t姓名\t教工号\t所授科目\n");
	printf("\t\t\t%s\t%d\t%s\n",p->name,p->num,p->kind);
	system("pause");
	system("cls");
}

void search_student(struct student *head_student,int num)
{
	struct student *p=head_student->next;
	while(p->num!=num)
	{
		p=p->next;
		if(p==NULL)
		{
		printf("查无此人!!!\n");//判断有没有此人 
		system("pause");
		system("cls");
		return;
		}
	}
	printf("\t\t\t学号\t姓名\t性别\t语文\t数学\t英语\t总分\n");
	printf("\t\t\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",p->num,p->name,p->sex,p->yuwen,p->math,p->english,p->sum);
	system("pause");
	system("cls");
}

struct teacher *Delete_teacher(struct teacher *head_teacher,int num)
{
	struct teacher *ptemp;
	struct teacher *p;
	
	if(head_teacher->next==NULL)
	{
		printf("删除失败,无信息!!!\n");//若链表中无信息,删除失败 
		system("pause");
		system("cls");
		return head_teacher;
	}
		ptemp=head_teacher;
		p=ptemp;
		while(ptemp->num!=num&&ptemp)
		{
			p=ptemp;
			ptemp=ptemp->next;	
			if(ptemp==NULL)
			{
			printf("查无此人!!!\n");//判断有没有此人 
			system("pause");
			system("cls");
			return head_teacher;
			}
		}
		p->next=ptemp->next;//将节点的指针域链接,释放中间节点 
		free(ptemp);
		printf("删除成功!!!\n");
		system("pause");
		system("cls");
	return head_teacher;
}

struct student *Delete_student(struct student *head_student,int num)
{
	struct student *ptemp;
	struct student *p;
	
	if(head_student->next==NULL)
	{
		printf("删除失败,无信息!!!\n");//若链表中无信息,删除失败 
		system("pause");
		system("cls");
		return head_student;
	}
		ptemp=head_student;
		p=ptemp;
		while(ptemp->num!=num)
		{
			p=ptemp;
			ptemp=ptemp->next;
			if(ptemp==NULL)
			{
				printf("查无此人!!!\n");//判断有没有此人 
				system("pause");
				system("cls");
				return head_student;
			}
		}
		p->next=ptemp->next;//将节点的指针域链接,释放中间节点 
		free(ptemp);
		printf("删除成功!!!\n");
		system("pause");
		system("cls");

	return head_student;
}

void change_teacher(struct teacher *head_teacher,int num)
{
	struct teacher *p=head_teacher->next;
	char kind[20];
	while(p->num!=num)//判断有没有这个人 
	{
		p=p->next;
		if(p==NULL)
		{
			printf("查无此人!!!\n");
			system("pause");
			system("cls");
			return;
		}
	}
	
		printf("请输入所改科目:");
		scanf("%s",kind);
		printf("修改成功!!!\n");
		strcpy(p->kind,kind);
		system("pause");
		system("cls");
}


void change_leader_mima(struct leader *head_leader,int num)
{
	struct leader *p=head_leader;
	char mima1[20];
	char mima[20];
	
	while(p->num!=num)
	{
		p=p->next;
		if(p==NULL)
		{
			printf("查无此人!!!\n");//判断有没有此人 
			system("pause");
			system("cls");
			return;
		}
	}
	
		printf("请输入原密码:");
		scanf("%s",mima);
		printf("请输入新密码:"); 
		scanf("%s",mima1);
		if(strcmp(p->mima,mima)==0)//判断是否是原密码 
		{
			printf("修改成功!!!\n");
			strcpy(p->mima,mima1);//覆盖原密码 
			system("pause");
			system("cls");
		}
		else
		{
			printf("与原密码不符,修改失败!!!\n");
		}
}
void bianli_student(struct student *head_student)
{
	struct student *p=head_student->next;
	printf("\t\t\t学号\t姓名\t性别\t语文\t数学\t   英语\t   总分\n");
	while(p)//遍历学生信息 
	{
		printf("\t\t\t%d%8s%8s%10.2f%10.2f%10.2f%10.2f\n",p->num,p->name,p->sex,p->yuwen,p->math,p->english,p->sum);
		p=p->next;
	}
}

void bianli_teacher(struct teacher *head_teacher)
{
	struct teacher *p=head_teacher->next;
	printf("\t\t\t姓名\t教工号\t所授科目\n");
	while(p)//遍历教师 
	{
		printf("\t\t\t%s%8d%8s\n",p->name,p->num,p->kind);
		p=p->next;
	}	
}

void bianli_leader(struct leader *head_leader)
{
	struct leader *p=head_leader;
	printf("\t\t\t管理员号\t姓名\n");
	while(p)//遍历管理员 
	{
		printf("\t\t\t%d%16s\n",p->num,p->name);
		p=p->next;
	} 
}


void sort_num(struct student *head_student)
{
	struct student *p,*q;
	struct student *min;
	int t;
	char t1[20];
	float t2;

	for(p=head_student->next;p->next!=NULL;p=p->next)
		{
			min=p;//把当前的视为最小的 
			for(q=p->next;q;q=q->next)
			{
				if(q->num>min->num)
				min=q;//找到一个最小的 
			}
			if(min!=p)//若两个不相等,交换数据 
			{
				t=p->num;p->num=min->num;min->num=t;
				strcpy(t1,p->name);strcpy(p->name,min->name);strcpy(min->name,t1);
				strcpy(t1,p->mima);strcpy(p->mima,min->mima);strcpy(min->mima,t1);
				strcpy(t1,p->sex);strcpy(p->sex,min->sex);strcpy(min->sex,t1);
				t2=p->english;p->english=min->english;min->english=t2;
				t2=p->math;p->math=min->math;min->math=t2;
				t2=p->yuwen;p->yuwen=min->yuwen;min->yuwen=t2;
				t2=p->sum;p->sum=min->sum;min->sum=t2;
			}
		}
		printf("已经完成排序\n"); 
}

void sort_sum(struct student *head_student)
{
	struct student *p,*q;
	struct student *min;
	int t;
	char t1[20];
	float t2;

	for(p=head_student->next;p->next!=NULL;p=p->next)
		{
			min=p;//把当前的视为最小的 
			for(q=p->next;q;q=q->next)
			{
				if(q->sum>min->sum)
				min=q;//找到一个最小的 
			}
			if(min!=p)//若两个不相等,交换数据 
			{
				t=p->num;p->num=min->num;min->num=t;
				strcpy(t1,p->name);strcpy(p->name,min->name);strcpy(min->name,t1);
				strcpy(t1,p->mima);strcpy(p->mima,min->mima);strcpy(min->mima,t1);
				strcpy(t1,p->sex);strcpy(p->sex,min->sex);strcpy(min->sex,t1);
				t2=p->english;p->english=min->english;min->english=t2;
				t2=p->math;p->math=min->math;min->math=t2;
				t2=p->yuwen;p->yuwen=min->yuwen;min->yuwen=t2;
				t2=p->sum;p->sum=min->sum;min->sum=t2;
			}
		}
		printf("已经完成排序\n"); 
}  

void sort_yuwen(struct student *head_student)
{
	struct student *p,*q;
	struct student *min;
	int t;
	char t1[20];
	float t2;

	for(p=head_student->next;p->next!=NULL;p=p->next)
		{
			min=p;//把当前的视为最小的 
			for(q=p->next;q;q=q->next)
			{
				if(q->yuwen>min->yuwen)
				min=q;//找到一个最小的 
			}
			if(min!=p)//若两个不相等,交换数据 
			{
				t=p->num;p->num=min->num;min->num=t;
				strcpy(t1,p->name);strcpy(p->name,min->name);strcpy(min->name,t1);
				strcpy(t1,p->mima);strcpy(p->mima,min->mima);strcpy(min->mima,t1);
				strcpy(t1,p->sex);strcpy(p->sex,min->sex);strcpy(min->sex,t1);
				t2=p->english;p->english=min->english;min->english=t2;
				t2=p->math;p->math=min->math;min->math=t2;
				t2=p->yuwen;p->yuwen=min->yuwen;min->yuwen=t2;
				t2=p->sum;p->sum=min->sum;min->sum=t2;
			}
		}
		printf("已经完成排序\n"); 
}

void sort_math(struct student *head_student)
{
	struct student *p,*q;
	struct student *min;
	int t;
	char t1[20];
	float t2;

	for(p=head_student->next;p->next!=NULL;p=p->next)
		{
			min=p;//把当前的视为最小的 
			for(q=p->next;q;q=q->next)
			{
				if(q->math>min->math)
				min=q;//找到一个最小的 
			}
			if(min!=p)//若两个不相等,交换数据 
			{
				t=p->num;p->num=min->num;min->num=t;
				strcpy(t1,p->name);strcpy(p->name,min->name);strcpy(min->name,t1);
				strcpy(t1,p->mima);strcpy(p->mima,min->mima);strcpy(min->mima,t1);
				strcpy(t1,p->sex);strcpy(p->sex,min->sex);strcpy(min->sex,t1);
				t2=p->english;p->english=min->english;min->english=t2;
				t2=p->math;p->math=min->math;min->math=t2;
				t2=p->yuwen;p->yuwen=min->yuwen;min->yuwen=t2;
				t2=p->sum;p->sum=min->sum;min->sum=t2;
			}
		}
		printf("已经完成排序\n"); 
}

void sort_english(struct student *head_student)
{
	struct student *p,*q;
	struct student *min;
	int t;
	char t1[20];
	float t2;

	for(p=head_student->next;p->next!=NULL;p=p->next)
		{
			min=p;//把当前的视为最小的 
			for(q=p->next;q;q=q->next)
			{
				if(q->english>min->english)
				min=q;//找到一个最小的 
			}
			if(min!=p)//若两个不相等,交换数据 
			{
				t=p->num;p->num=min->num;min->num=t;
				strcpy(t1,p->name);strcpy(p->name,min->name);strcpy(min->name,t1);
				strcpy(t1,p->mima);strcpy(p->mima,min->mima);strcpy(min->mima,t1);
				strcpy(t1,p->sex);strcpy(p->sex,min->sex);strcpy(min->sex,t1);
				t2=p->english;p->english=min->english;min->english=t2;
				t2=p->math;p->math=min->math;min->math=t2;
				t2=p->yuwen;p->yuwen=min->yuwen;min->yuwen=t2;
				t2=p->sum;p->sum=min->sum;min->sum=t2;
			}
		}
		printf("已经完成排序\n"); 
}

void sort(struct student *head_student)
{
	char c;
	do{ 
	fflush(stdin);
	printf("\t----------------------------------------\n");
		printf("\t|            学生管理系统              |\n");
		printf("\t----------------------------------------\n");
		printf("\t      	 请选择排序方式:            |\n");
		printf("\t|          1.语文排序                  |\n");
		printf("\t|          2.数学排序                  |\n");
		printf("\t|          3.英语排序                  |\n");
		printf("\t|          4.总分排序                  |\n");
		printf("\t|          5.学号排序                  |\n");
		printf("\t|          0.返回                      |\n");
		printf("\t----------------------------------------\n");
		printf("请选择:"); 
	c=getchar();
	switch(c-'0') 
	{
		case 1:
			sort_yuwen(head_student);//按语文排序 
			bianli_student(head_student);
			break;
		case 2:
			sort_math(head_student);//按数学排序 
			bianli_student(head_student);
			break;
		case 3:
			sort_english(head_student);//按英语排序 
			bianli_student(head_student);
			break;
		case 4:
			sort_sum(head_student);//按总分排序
			bianli_student(head_student);
			break;
		case 5:
			sort_num(head_student);//按学号排序
			bianli_student(head_student);
			break;
		case 0:
			break;
		default:
			printf("输入错误!请重试!!!\n");
			fflush(stdin);
			system("pause");
			system("cls");
	}
	}while((c-'0')!=0);
}

void write(struct student *head_student,struct teacher *head_teacher,struct leader *head_leader)
{
	write_student(head_student);
	write_teacher(head_teacher);
	write_leader(head_leader);
}

void write_student(struct student *head_student)//写入学生文件 
{
	FILE *pt;
	struct student *p=head_student;
	
	pt=fopen("学生.txt","wt+");
	while(p) 
	{
		fwrite(p,N,1,pt);
		p=p->next;
	}
	fclose(pt);
}

void write_teacher(struct teacher *head_teacher)//写入教师文件 
{
	FILE *pt;
	struct teacher *p=head_teacher;
	
	pt=fopen("教师.txt","wt+");
	while(p) 
	{
		fwrite(p,M,1,pt);
		p=p->next;
	}
	fclose(pt);
}

void write_leader(struct leader *head_leader)//写入管理员文件 
{
	FILE *pt;
	struct leader *p=head_leader;
	
	pt=fopen("管理员.txt","wt+");
	while(p) 
	{
		fwrite(p,L,1,pt);
		p=p->next;
	}
	fclose(pt);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值