⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档 (2).txt

📁 处理学生信息的管理系统源代码,包括学生信息的录入修改和查询
💻 TXT
📖 第 1 页 / 共 2 页
字号:
	{
		cerr<<"\n\n\n\t\t对不起,暂时没有学生名单!!请按任意键继续.."<<endl;
		return 1;
	}
	while(q)
	{
		q->stu.getname(N);
		cout<<"\t\t  "<<N<<setw(25-strlen(N))<<" 已选 "<<q->stu.retfactcourse()<<" 门课 "<<endl;
		q = q->Next ;
	}
	char M[20];
	cout<<"\n\t\t输入要查看的学生姓名:";
	cin>>M;
	i=0;
	q=P->Next;
	while(q)
	{
		q->stu.getname(N);
		if(strcmp(N,M)==0)
			i++;
		q = q->Next;
	}
	int j=0,k=1;
	if(i==0)
	{
		cout<<"\n\t\t\t没找到这个学生!!请按任意键继续.."<<endl;
		return 1;
	}
	else if(i>1)
	{
		cout<<"\n\t\t共找到"<<i<<"个姓名为"<<M<<"的学生"<<endl;
		cout<<"\t\t选择第几个:";
		cin>>k;
	}
	if(k>i||k<=0)
	{
		cerr<<"\n\t\t\t输入有误!按任意键继续.."<<endl;
		return 1;
	}
	q = P->Next;
	j=0;
	q=P->Next;
	while(q)
	{
		q->stu.getname(N);
		if(strcmp(N,M)==0)
			j++;
		if(j==k)
		{
			system("cls");;
			course *T=q->stu.retroot();
			if(T==NULL)
			{
				cout<<"\n\n\n\t\t\t"<<N<<"同学你还未选课! 请按任意键继续.."<<endl;
				return 1;
			}
			if (T!=NULL)
				T = T->Next;
			cout<<"\n\n\n\t\t"<<N<<"同学你已选"<<q->stu.retfactcourse()<<"门课,具体如下\n\n"<<endl;
			cout<<"\t\t\t课程名称\t\t成绩\n"<<endl;
			while(T)
			{
				cout<<"\t\t\t "<<T->cname<<setw(25-strlen(T->cname))<<T->grade<<endl;
				T = T->Next;
			}
			j=0;
		}
		q = q->Next;
	}
	cout<<"\n\t\t请按任意键继续..."<<endl;
	return 1;
}

int menu_1_3(subjectdb *P)   //选课情况
{
	subjectdb *q=P->Next;
	char N[20];
	system("cls");
	cout<<"\n\n\t\t\t\t选课情况操作"<<endl;
	if(q!=NULL)
	{
		cout<<"\n\n\n\t\t所有选课情况如下:\n"<<endl;
		cout<<"\n\t\t\t课程名称\t\t选课人数\n"<<endl;
	}
	else
	{
		cerr<<"\n\n\n\t\t对不起,暂时没有课程!!请按任意键继续.."<<endl;
		return 1;
	}
	while(q)
	{
		q->sub.getkname(N);
		cout<<"\t\t\t"<<N<<setw(28-strlen(N))<<q->sub.retactivestudent()<<endl;
		q = q->Next ;
	}
	cout<<"\n\t\t请按任意键继续.."<<endl;
	return 1;
}
int menu_1_4(studentdb *X,subjectdb *P)   //退出系统
{
	menu_2_9(X,P);
	
	return 0;
}
/////////////////////////////////////////////////////////////////////////////////////

//管理端功能函数
int menu_2_1(studentdb *P)   //增加学生
{
	char N[20];
	system("cls");;
	cout<<"\n\n\t\t\t\t增加学生操作\n"<<endl;
	cout<<"\n\n\t\t请输入学生姓名:";
	cin>>N;
	cout<<endl<<"\t\t增加学生操作成功,按任意键继续"<<endl;
	studentdb *newnode = new studentdb;
	newnode->Next = P->Next ;
	newnode->stu.readname(N);
	P->Next = newnode ;
	return 1;
}

int menu_2_2(subjectdb *P)   //增加课程
{
	float k;
	char N[20],M[20];
	system("cls");;
	cout<<"\n\n\t\t\t\t增加课程操作\n"<<endl;
	cout<<"\n\n\t\t  请输入课程名称:";
	cin>>N;
	cout<<endl;
	subjectdb *q = P->Next;
	while(q)
	{
		q->sub.getkname(M);
		if(strcmp(N,M)==0)
		{
			cout<<"\n\t\t此课程已经存在,按任意键继续"<<endl;
			return 1;
		}
		q = q->Next;
	}
	cout<<"\t\t输入此课程的学分:";
	cin>>k;
	cout<<"\n\t\t增加课程操作成功,按任意键继续"<<endl;
	subjectdb *newnode = new subjectdb;
	newnode->Next = P->Next ;
	newnode->sub.setkname(N);
	newnode->sub.getcredit(k);
	P->Next = newnode ;
	return 1;
}

int menu_2_3(studentdb *P)   //删除学生
{
	system("cls");
	cout<<"\n\n\t\t\t\t删除学生操作"<<endl;
	menu_2_7(P);
	studentdb *q = P->Next;
	if(q==NULL)
		return 1;
	int i;
	char N[20],M[20];
	cout<<"\n\t请输入要删除的学生姓名 :";
	cin>>N;
	i=0;
	while(q)
	{
		q->stu.getname(M);
		if(strcmp(N,M)==0)
			i++;
		q = q->Next;
	}
	int j=0,k=1;
	if(i==0)
	{
		cerr<<"\n\t\t没有这个学生!!请按任意键继续.."<<endl;
		return 1;
	}
	else if(i>1)
	{
		cout<<"\n\t\t共找到"<<i<<"个姓名为"<<N<<"的学生"<<endl;
		cout<<"\n\t\t要删除第几个:";
		cin>>k;
	}
	if(k>i||k<=0)
		return 1;
	q = P->Next;
	studentdb *R = P;
	j=0;
	while(q)
	{
		q->stu.getname(M);
		if(strcmp(N,M)==0)
			j++;
		if(j==k)
		{
			R->Next = q->Next;
			free(q);
			cout<<"\n\t\t删除学生操作成功,按任意键继续.."<<endl;
			return 1;
		}
		q = q->Next;
		R = R->Next;
	}
	return 1;
} 

int menu_2_4(subjectdb *P)   //删除课程
{
	subjectdb *q=P->Next;
	char N[20];
	system("cls");;
	cout<<"\n\n\t\t\t\t删除课程操作"<<endl;
	if(q!=NULL)
		cout<<"\n\n\n\t\t所有课程如下:\n"<<endl;
	else
	{
		cerr<<"\n\n\n\t\t对不起,暂时没有课程!!请按任意键继续.."<<endl;
		return 1;
	}
	while(q)
	{
		q->sub.getkname(N);
		cout<<"\t\t\t\t"<<N<<endl;
		q = q->Next ;
	}
	q = P->Next;
	subjectdb *R = P;
	if(q==NULL)
		return 1;
	char M[20];
	cout<<"\n\t    请输入要删除的课程 :";
	cin>>M;
	while(q)
	{
		q->sub.getkname(N);
		if(strcmp(N,M)==0)
		{
			R->Next = q->Next;
			free(q);
			cout<<"\n\t\t删除课程操作成功,按任意键继续"<<endl;
			return 1;
		}
		q = q->Next;
		R = R->Next;
	}
	cerr<<"\n\t\t没有此课程!!\t请按任意键继续.."<<endl;
	return 1;
}

int menu_2_5(studentdb *X,subjectdb *P)   //填写成绩
{
	subjectdb *q=P->Next;
	char M[20],N[20],NA[20];
	float score;
	system("cls");
	cout<<"\n\n\t\t\t\t  填写成绩操作\n"<<endl;
	if(q!=NULL)
		cout<<"\n\t\t\t课程名称\t\t选课人数\n"<<endl;
	else
	{
		cout<<"\n\n\n\t\t对不起,暂时没有任何选修课程。请按任意键继续.."<<endl;
		return 1;
	}
	while(q)
	{
		q->sub.getkname(N);
		cout<<"\t\t\t"<<N<<setw(28-strlen(N))<<q->sub.retactivestudent()<<endl;
		q = q->Next ;
	}
	q = P->Next;
	cout<<"\n\t请输入课程名称 :";
	cin>>M;
	while(q)
	{
		q->sub.getkname(N);
		studentname *K = q->sub.retfirst();
		if(K!=NULL)
			K = K->Next;
		if(strcmp(N,M)==0)
		{
			system("cls");;
			if(K!=NULL)
			{
				cout<<"\n\n\t\t请填写选修"<<M<<"的学生成绩\n"<<endl;
				cout<<"\n\t\t\t姓名\t\t成绩"<<endl;
			}
			if(K==NULL)
				cerr<<"\n\t\t\t无任何信息!!请按任意键继续.."<<endl;
			while(K)
			{
				cout<<"\n\t\t\t"<<K->tname<<"\t\t ";
				cin>>score;
				studentdb *XX = X->Next;
				while(XX)
				{
					XX->stu.getname(NA);
					if(strcmp(NA,K->tname)==0)
						XX->stu.wrecourse(M,score);
					XX = XX->Next;
				}
				K = K->Next;
			}
			if(K==NULL)
				cout<<"\n\t\t填写成绩完毕!!请按任意键继续.."<<endl;
			return 1;
		}
		q = q->Next;
	}
	cerr<<"\n\t\t没有此课程!!请按任意键继续.."<<endl;
	return 1;
}

int menu_2_6(subjectdb *P)   //更改学分
{
	float k;
	system("cls");
	cout<<"\n\n\n\t\t\t\t更改学分操作\n"<<endl;
	subjectdb *q = P->Next;
	char N[20],M[20];
	if(q!=NULL)
		cout<<"\n\n\n\t\t 所有课程如下:\n"<<endl;
	else
	{
		cerr<<"\n\n\n\t\t对不起,暂时没有任何可选课程。请按任意键继续.."<<endl;
		return 1;
	}
	while(q)
	{
		q->sub.getkname(N);
		cout<<"\t\t\t\t  "<<N<<endl;
		q = q->Next ;
	}
	q = P->Next;
	cout<<"\n\n\n\t\t请输入要改的课程 :";
	cin>>M;
	while(q)
	{
		q->sub.getkname(N);
		if(strcmp(N,M)==0)
		{
			cout<<"\n\t\t\t原来学分为 :"<<q->sub.readcredit()<<endl;
			cout<<"\n\t\t\t现要更改为 :";
			cin>>k;
			q->sub.getcredit(k);
			cout<<"\n\t\t更改课程学分成功,按任意键继续"<<endl;
			return 1;
		}
		q = q->Next;
	}
	cerr<<"\n\t\t无此课程!!请按任意键继续.."<<endl;
	return 1;
}

int menu_2_7(studentdb *P)   //学生情况
{
	studentdb *q=P->Next;
	char N[20];
	system("cls");
	cout<<"\n\n\n\t\t\t\t学生情况操作\n"<<endl;
	if(q!=NULL)
		cout<<"\n\n\n\t\t所有学生名单如下:\n"<<endl;
	else
	{
		cerr<<"\n\n\n\t\t对不起,暂时没有学生名单!请按任意键继续.."<<endl;
		return 1;
	}
	while(q)
	{
		q->stu.getname(N);
		cout<<"\t\t\t\t"<<N;
		cout<<endl;
		q = q->Next ;
	}
	cout<<"\n\t\t按任意键继续.."<<endl;
	return 1;
}


int menu_2_8(subjectdb *P)   //选课情况
{
	subjectdb *q = P->Next;
	char M[20],N[20];
	system("cls");
	cout<<"\n\n\t\t\t\t选课情况操作"<<endl;
	if(q!=NULL)
	{
		cout<<"\n\n\n\t\t所有选课情况如下:\n"<<endl;
		cout<<"\n\t\t\t课程名称\t\t选课人数\n"<<endl;
	}
	else
	{
		cerr<<"\n\n\n\t\t对不起,暂时没有课程!!请按任意键继续.."<<endl;
		return 1;
	}
	while(q)
	{
		q->sub.getkname(N);
		cout<<"\t\t\t"<<N<<setw(28-strlen(N))<<q->sub.retactivestudent()<<endl;
		q = q->Next ;
	}
	q = P->Next;
	cout<<"\n\t请输入课程名称 :";
	cin>>M;
	while(q)
	{
		q->sub.getkname(N);
		studentname *K = q->sub.retfirst();
		if(K!=NULL)
			K = K->Next;
		if(strcmp(N,M)==0)
		{
			system("cls");;
			if(K==NULL)
			{
				cerr<<"\n\n\t无任何选课信息!!\t请按任意键继续.."<<endl;
				return 1;
			}
			cout<<"\n\n\n\t\t选修"<<M<<"课的学生名单如下:\n"<<endl;
			cout<<"\n\t\t\t姓名\t\t  成绩"<<endl;
			while(K)
			{
				cout<<"\n\t\t\t"<<K->tname<<setw(20-strlen(K->tname))<<K->result<<endl;
				K = K->Next;
			}
			cout<<"\n\t\t请按任意键继续.."<<endl;
			return 1;
		}
		q = q->Next;
	}
	cerr<<"\n\t\t无此课程!!\t请按任意键继续.."<<endl;
	return 1;
} 


int menu_2_9(studentdb *Y,subjectdb *P)   //保存数据
{
	studentdb *Z = Y->Next;
	subjectdb *X = P->Next;
	system("cls");;
	fstream file("subject.txt",ios::out);
	while(X)
	{
		file.write ((char *)&(X->sub),sizeof(X->sub));
		X = X->Next;
	}
	file.close();
	fstream file1("student.txt",ios::out);
	fstream file2("course.txt",ios::out);
	while(Z)
	{
		file1.write ((char *)&(Z->stu),sizeof(Z->stu));
		int time = Z->stu.retfactcourse();
		course *co = Z->stu.retroot(),*co1;
		if(co!=NULL)
			co1 = co->Next;
		while(time)
		{
			file2.write((char *)(co1),sizeof(*co1));
			co1 = co1->Next;
			time = time - 1;
		}
		Z = Z->Next;
	}
	file2.close ();
	file1.close();
	cout<<"\n\n\n\t\t\t保存数据成功!按任意键继续.."<<endl;
	return 1;
}

int menu_2_0()    //退出系统
{
	
	return 0;
}

int main()
{
	subjectdb *P = new subjectdb,*Q=P;
	P->Next = NULL;
	subject M;
	fstream file("subject.txt",ios::in);
	while(1)
	{
		file.read((char *)&M,sizeof(M));
		if(!file) break;
		Q->Next = new subjectdb;
		Q->Next ->Next = NULL;
		Q->Next ->sub = M;
		Q = Q->Next;
	}
	file.close ();
	studentdb *Y = new studentdb,*X=Y;
	Y->Next=NULL;
	student N;
	course O;
	fstream file1("student.txt",ios::in);
	fstream file2("course.txt",ios::in);
	while(1)
	{
		file1.read((char *)&N,sizeof(N));
		if(!file1) break;
		Y->Next = new studentdb;
		Y->Next ->Next = NULL;
		Y->Next ->stu = N;
		int time = N.retfactcourse();
		Y->Next->stu.clrroot ();
		while(time)
		{
			file2.read ((char *)&O,sizeof(course));
			if(!file2) break;
			Y->Next->stu.addcourse(O.cname ,O.grade);
			time--;
		}
		Y=Y->Next;
	}
	file2.close ();
	file1.close ();
	Q=P->Next;
	while(Q)
	{
		Q->sub.clractivestudnet();
		Q->sub.findstudent(X);
		Q = Q->Next;
	}
	char c;
	char b;
	int br=1;
	b = menu();
	if(b=='1')
	{
		while(1)
		{
			c = custom();
			switch(c)
			{
			case '1':br = menu_1_1(X,P);getch();break;  //学生选课
			case '2':br = menu_1_2(X,P);getch();break;  //学生情况
			case '3':br = menu_1_3(P);getch();  break;  //选课情况
			case '4':br = menu_1_4(X,P);        break;  //退出系统
			}
			if (br == 0)
				break;
		}
	}
	if(b=='2')
	{
		
		while(1)
		{
			c = server();
			switch(c)
			{
			case '1':br = menu_2_1(X);getch();  break;   //增加学生
			case '2':br = menu_2_2(P);getch();  break;   //增加课程
			case '4':br = menu_2_4(P);getch();  break;   //删除课程
			case '3':br = menu_2_3(X);getch();  break;   //删除学生
			case '5':br = menu_2_5(X,P);getch();break;   //填写成绩
			case '6':br = menu_2_6(P);getch();  break;   //更改学分
			case '7':br = menu_2_7(X);getch();  break;   //学生情况
			case '8':br = menu_2_8(P);getch();  break;   //选课情况
			case '9':br = menu_2_9(X,P);getch();break;   //保存数据
			case '0':br = menu_2_0();break;              //退出系统
			}
			if (br == 0)
				break;
		}
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -