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

📄 change.cpp

📁 学校的教学管理系统
💻 CPP
字号:
#include"head.h"
#include<iostream.h>
#include<stdlib.h>
#include<string.h>

extern void DisplayBasic(Student* &);

void Change(Student* &head)
{
	Student* pGuard;
	Student* pS;
	Student* ptr;
	char choice;
	char Name[20];
	int Class;
	int Number;

	cout<<"已记录的学生如下:"<<endl;
	DisplayBasic(head);

	cout<<"说明:本程序提供①根据学生的学号"
		<<"               ②根据学生姓名和所在的班级"
		<<"               两种方式来查找并修改学生的信息."
		<<endl;
status0:
	cout<<"请选择修改方式(1/2):";
	cin>>choice;

	if(choice=='1')
	{
status1:
		cout<<"请输入要修改的学生的学号:"<<endl;
		cin>>Number;

		for(pGuard=head;pGuard!=NULL;pGuard=pGuard->next)
		{
			if(pGuard->Number==Number)
			{
				pS=new Student;
				for(int i=0;i<MAX;i++)
				{
					pS->Score[i]=pGuard->Score[i]; //把已记录的成绩也保存下来
				}
status2:
				system("cls");
				cout<<"找到该学生,已记录的信息如下:"<<endl;
				
				cout<<"		学生姓名:		"<<pGuard->Name <<endl;
		
				cout<<"		班级:			"<<pGuard->Class <<endl;
		
				cout<<"		学号:			"<<pGuard->Number <<endl;

				cout<<"		性别:			";
				if(pGuard->Sex==1)
					cout<<"男"<<endl;
				else
					cout<<"女"<<endl;
		
				cout<<"		年龄:			"<<pGuard->Age <<endl;
	
				cout<<"		宿舍号:			"<<pGuard->Room <<endl;

				cout<<"		电话号码:		"<<pGuard->Tel <<endl<<endl<<endl;

				cout<<"现在请输入新的学生信息(如果没有变化请按照原来的数值输入):"<<endl;

				cout<<"请输入学生所在的班级:  ";
				cin>>pS->Class;
				cout<<endl<<"请输入学生的学号:  ";
				cin>>pS->Number;
				cout<<endl<<"请输入学生的姓名:  ";
				cin>>pS->Name;
status3:
				cout<<endl<<"请输入学生的性别(男用1表示,女用2表示):  ";
				cin>>pS->Sex;
				if(pS->Sex!=1&&pS->Sex!=2)
				{
					cout<<"您键入的内容有错,请重新选择."<<endl;
					goto status3;
				}
				cout<<endl<<"请输入学生的年龄:  ";
				cin>>pS->Age;
				cout<<endl<<"请输入学生的宿舍号:  ";
				cin>>pS->Room;
				cout<<endl<<"请输入学生的电话号码:  ";
				cin>>pS->Tel;
status4:	
				cout<<"请核对以上信息,输入内容完全无误吗?  (y/n):"<<endl;
				cin>>choice;

				if(choice=='N'||choice=='n')
				{
					cout<<"那么请重新输入吧."<<endl;
					system("pause");
					system("cls");
					goto status2;
				}
				else if(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
				{
					cout<<"您键入的内容有错,请重新选择."<<endl;
					system("pause");
					system("cls");
					goto status4;
				}
				else
				{
					if(pS->Class==pGuard->Class)   //判断学生的班别是否有变化
					{
						if(pGuard==head)         //先判断pGuard的情况,否则会使下面的ptr出错
						{
							head=pS;
							pS->next=pGuard->next;
							delete pGuard;
						}
						else
						{
							for(ptr=head;ptr->next!=pGuard;ptr=ptr->next)
								;                         //使ptr指向pGuard的前一个节点
							ptr->next=pS;
							pS->next=pGuard->next;
							delete pGuard;                //以上3句把pGuard和pS交换,删除pGuard
						}
					}
					else      //如果学生的班级有了变化
					{
						if(pGuard==head)
						{
							head=pS;
							pS->next=pGuard->next;
							delete pGuard;
						}
						else
						{
							for(ptr=head;ptr->next!=pGuard;ptr=ptr->next)
								;                         //同上,使ptr指向pGuard的前一个节点
							ptr=pGuard->next;
							delete pGuard;                 //以上两句把无效了的pGuard删除


							 //现在是插入新的节点,即pS
							for(pGuard=head;pGuard->next!=NULL&&pGuard->next->Class<pS->Class;pGuard=pGuard->next)
							;
							if(pGuard==head&&pGuard->Class>pS->Class)
							{
								head=pS;
								pS->next=pGuard;
							}
							else if(pGuard==head&&pGuard->Class<pS->Class)
							{
								pS->next=head->next;
								head->next=pS;
							}
							else
							{
								pS->next=pGuard->next;
								pGuard->next=pS;
							}
						}
					}
				}
				
				cout<<"已成功修改该学生的信息!"<<endl;
				return;
			}
		}
		cout<<"没有找到该学生的信息!"<<endl;
status5:
		cout<<"要重新输入学生的学号吗?(y/n):";
		cin>>choice;
		if(choice=='y'||choice=='Y')
		{
			cout<<"那么请重新输入吧!"<<endl;
			system("pause");
			goto status1;
		}
		else if(choice!='y'&&choice!='Y'&&choice!='n'&&choice!='N')
		{
			cout<<"您键入的内容有误,请重新选择."<<endl;
			goto status5;
		}
	}
	else if(choice=='2')
	{
status10:
		cout<<"请输入要修改的学生的姓名:";
		cin>>Name;
		cout<<"请输入学生所在的班级:";
		cin>>Class;

		for(pGuard=head;pGuard!=NULL;pGuard=pGuard->next)
		{
			if(pGuard->Class==Class&&strcmp(pGuard->Name,Name)==0)
			{
				pS=new Student;
				for(int i=0;i<MAX;i++)
				{
					pS->Score[i]=pGuard->Score[i]; //把已记录的成绩也保存下来
				}
status6:
				cout<<"找到该学生,已记录的信息如下:"<<endl;
				
				cout<<"		学生姓名:		"<<pGuard->Name <<endl;
		
				cout<<"		班级:			"<<pGuard->Class <<endl;
		
				cout<<"		学号:			"<<pGuard->Number <<endl;

				cout<<"		性别:			";
				if(pGuard->Sex==1)
					cout<<"男"<<endl;
				else
					cout<<"女"<<endl;
		
				cout<<"		年龄:			"<<pGuard->Age <<endl;
	
				cout<<"		宿舍号:			"<<pGuard->Room <<endl;

				cout<<"		电话号码:		"<<pGuard->Tel <<endl<<endl<<endl;

				cout<<"现在请输入新的学生信息(如果没有变化请按照原来的数值输入):"<<endl;

				cout<<"请输入学生所在的班级:  ";
				cin>>pS->Class;
				cout<<endl<<"请输入学生的学号:  ";
				cin>>pS->Number;
				cout<<endl<<"请输入学生的姓名:  ";
				cin>>pS->Name;
status7:
				cout<<endl<<"请输入学生的性别(男用1表示,女用2表示):  ";
				cin>>pS->Sex;
				if(pS->Sex!=1&&pS->Sex!=2)
				{
					cout<<"您键入的内容有错,请重新选择."<<endl;
					goto status7;
				}
				cout<<endl<<"请输入学生的年龄:  ";
				cin>>pS->Age;
				cout<<endl<<"请输入学生的宿舍号:  ";
				cin>>pS->Room;
				cout<<endl<<"请输入学生的电话号码:  ";
				cin>>pS->Tel;
status8:
				cout<<"请核对以上信息,输入内容完全无误吗?  (y/n):"<<endl;
				cin>>choice;

				if(choice=='N'||choice=='n')
				{
					cout<<"那么请重新输入吧."<<endl;
					system("pause");
					system("cls");
					goto status6;
				}
				else if(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
				{
					cout<<"您键入的内容有错,请重新选择."<<endl;
					system("pause");
					system("cls");
					goto status8;
				}
				else
				{
					if(pS->Class==pGuard->Class)   //同上,判断学生的班别是否有变化
					{
						if(pGuard==head)
						{
							head=pS;
							pS->next=pGuard->next;
							delete pGuard;
						}
						else
						{
							for(ptr=head;ptr->next!=pGuard;ptr=ptr->next)
								;                         //使ptr指向pGuard的前一个节点
							ptr->next=pS;
							pS->next=pGuard->next;
							delete pGuard; //以上3句把pGuard和pS交换,删除pGuard
						}
					}
					else      //如果学生的班级有了变化
					{
						if(pGuard==head)
						{
							head=pS;
							pS->next=pGuard->next;
							delete pGuard;
						}
						else
						{
							for(ptr=head;ptr->next!=pGuard;ptr=ptr->next)
								;                         //同上,使ptr指向pGuard的前一个节点
							ptr=pGuard->next;
							delete pGuard;                 //以上两句把无效了的pGuard删除


							//现在是插入新的节点,即pS
							for(pGuard=head;pGuard->next!=NULL&&pGuard->next->Class<pS->Class;pGuard=pGuard->next)
							;
							if(pGuard==head&&pGuard->Class>pS->Class)
							{
								head=pS;
								pS->next=pGuard;
							}
							else if(pGuard==head&&pGuard->Class<pS->Class)
							{
								pS->next=head->next;
								head->next=pS;
							}
							else
							{
								pS->next=pGuard->next;
								pGuard->next=pS;
							}
						}
					}
				}
				cout<<"已成功修改该学生的基本信息."<<endl;
				return;
			}
		}
		cout<<"没有找到该学生的信息!"<<endl;
status9:
		cout<<"要重新输入学生的班级和姓名吗?(y/n):";
		cin>>choice;
		if(choice=='y'||choice=='Y')
		{
			cout<<"那么请重新输入吧!"<<endl;
			system("pause");
			goto status10;
		}
		else if(choice!='y'&&choice!='Y'&&choice!='n'&&choice!='N')
		{
			cout<<"您键入的内容有误,请重新选择."<<endl;
			goto status9;
		}
	}
	else if(choice!='1'&&choice!='2')
	{
		cout<<"您键入的内容有错,请重新选择."<<endl;
		goto status0;
	}
}


				
		

⌨️ 快捷键说明

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