亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? task_deeds.cpp

?? 學生成績管理。 Win32(dos)字符界面。可實現讀入、簡單計算、統計、輸出等操作
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
}	

void StudentAdd_Delete(student *&headOfStudent,courselist *&headOfCourse)
{
	short i;
	cout<<" 1. 增加學生紀錄"<<endl
		<<" 2. 刪除學生紀錄"<<endl
		<<" 0. 返回上一級菜單"<<endl
		<<"請選擇: ";
	cin>>i;
	while (cin.fail() || (i>2 || i<0))
	{
		cout<<char(7);
		cout<<"\n輸入錯誤 !"<<endl
			<<"輸入菜單中您要選擇的項目前的序號即可,即0-2的數字"<<endl
			<<"請選擇: ";
		cin.clear();
		cin.ignore(100,'\n');
		cin>>i;
	}
	switch (i)
	{
		case 1: student *temp;
				courseOfStudent *course,*endcourse,*p;
				courselist *courses,*q;
				char coursename[20];
				bool flag;
				do
				{
					cout<<"\n請輸入添加的學生記錄,如果添加結束,請輸入 * "<<endl;
					temp=new student;
					if (temp==NULL)
					{
						cout<<char(7);
						cout<<"\n申請內存空間失敗,添加學生記錄失敗!"<<endl;
						return;
					}
					cout<<"請輸入學生的姓名:";
					cin>>temp->studentName;
					if (temp->studentName[0]=='*')
						return;
					cout<<"請輸入學生的學號:";
					cin>>temp->studentNumber;
					temp->courses=NULL;
					temp->pNameLc=NULL;
					temp->pNameRc=NULL;
					temp->pNumberLc=NULL;
					temp->pNumberRc=NULL;
					temp->pScoreLc=NULL;
					temp->pScoreRc=NULL;
					cout<<"請輸入該學生的各門課程及相應分數,如果該生未選這門課程,輸入-1"<<endl;
					course=NULL;endcourse=NULL;
					courses=headOfCourse;
					while (courses)
					{
						cout<<courses->courseName<<':';
						p=new courseOfStudent;
						if (p==NULL)
						{
							cout<<char(7);
							cout<<"\n申請內存失敗!不能添加學生課程信息!"<<endl;
							break;
						}
						strcpy(p->courseName,courses->courseName);
						p->next=NULL;
						cin>>p->score;
						while (cin.fail())
						{
							cout<<char(7);
							cout<<"\n輸入錯誤!學生課程成績應該是 0.0-100.0 的數!"<<endl
								<<"請重新輸入"<<temp->studentName<<"的"<<p->courseName<<"的成績:";
							cin.clear();
							cin.ignore(100,'\n');
							cin>>p->score;
						}
						if (course==NULL)
						{
							course=p;
							endcourse=p;
						}
						else
						{
							endcourse->next=p;
							endcourse=p;
						}
						courses=courses->next;
					}
					temp->courses=course;
					if (headOfCourse)
						cout<<"\n如果該學生還有其他課程,請按照“ 課程名 該課學分 該生成績 ”的格式輸入!退出請輸入 * "<<endl;
					else
						cout<<"\n請按照“ 課程名 該課學分 該生成績 ”的格式輸入!退出請輸入 * "<<endl;
					courses=headOfCourse;
					if (courses)
						while (courses->next) courses=courses->next;
					flag=false;
					while (cin>>coursename)
					{
						if (coursename[0]=='*') break;
						flag=true;
						q=new courselist;
						if (q==NULL)
						{
							cout<<char(7);
							cout<<"\n申請內存空間失敗!不能添加課程信息!"<<endl;
							break;
						}
						strcpy(q->courseName,coursename);
						cin>>q->credits;
						q->next=NULL;
						if (courses)
						{
							courses->next=q;
							courses=q;
						}
						else
						{
							courses=q;
							headOfCourse=q;
						}
						p=new courseOfStudent;
						if (p==NULL)
						{
							cout<<char(7);
							cout<<"\n申請內存失敗!不能添加學生課程信息!"<<endl;
							break;
						}
						strcpy(p->courseName,coursename);
						p->next=NULL;
						cin>>p->score;
						if (course==NULL)
						{
							course=p;
							endcourse=p;
						}
						else
						{
							endcourse->next=p;
							endcourse=p;
						}
					}

					if (flag) 
					{
						if (headOfStudent)
							AddCourses(headOfStudent,headOfCourse);
					}

					StudentAdd_Name(headOfStudent,temp);
					StudentAdd_Number(headOfStudent,temp);

				}while (1);
				break;

		case 2: StudentDelete(headOfStudent);break;
	}
}

void AddCourses(student *&headOfStudent,courselist *&headOfCourse)
{
	courseOfStudent *course=headOfStudent->courses,*p;
	courselist *courseslist=headOfCourse;
	if (course)
	{
		while (course->next)
		{
			course=course->next;
			courseslist=courseslist->next;
		}
		courseslist=courseslist->next;
	}
	while (courseslist)
	{
		p=new courseOfStudent;
		if (p==NULL)
		{
			cout<<char(7);
			cout<<"\n申請內存空間失敗!不能添加課程信息!"<<endl;
			return;
		}
		strcpy(p->courseName,courseslist->courseName);
		p->score=-1;
		p->next=NULL;
		if (course)
		{
			course->next=p;
			course=p;
		}
		else
		{
			course=p;
		}
		courseslist=courseslist->next;
	}

	if (headOfStudent->pNameLc)
		AddCourses(headOfStudent->pNameLc,headOfCourse);
	if (headOfStudent->pNameRc)
		AddCourses(headOfStudent->pNameRc,headOfCourse);
}

void StudentAdd_Name(student *&head,student *&temp)
{
	if (head==NULL)
	{
		head=temp;
		return;
	}
	char i=strcmp(head->studentName,temp->studentName);
	if (i>0)
		StudentAdd_Name(head->pNameLc,temp);
	else
		StudentAdd_Name(head->pNameRc,temp);
}

void StudentAdd_Number(student *&head,student *&temp)
{
	if (head==NULL)
	{
		head=temp;
		return;
	}
	char i=strcmp(head->studentNumber,temp->studentNumber);
	if (i>0)
		StudentAdd_Number(head->pNumberLc,temp);
	else
	if (i<0)
		StudentAdd_Number(head->pNumberRc,temp);
}

void StudentDelete(student *&head)
{
	short i;
	cout<<" 1. 輸入要刪除學生的名字"<<endl
		<<" 2. 輸入要刪除學生的學號"<<endl
		<<"請選擇:";
	cin>>i;
	while (cin.fail() || (i!=1 && i!=2))
	{
		cout<<char(7);
		cout<<"\n輸入錯誤 !"<<endl
			<<"輸入菜單中您要選擇的項目前的序號即可,即輸入 1 或 2 "<<endl
			<<"請選擇: ";
		cin.clear();
		cin.ignore(100,'\n');
		cin>>i;
	}

	char name[25],number[20];
	student *temp,*father,*p;
	switch (i)
	{
		case 1: cout<<"\n請輸入要刪除的學生的名字:";
				cin>>name;
				father=head;
				temp=SearchByName(head,name,father);
				p=temp;
				if (temp==NULL)
				{
					cout<<char(7);
					cout<<"\n沒有該學生的記錄!刪除無效!"<<endl;
					return;
				}
				strcpy(number,temp->studentNumber);
				break;

		case 2: cout<<"\n請輸入要刪除的學生的學號:";
				cin>>number;
				father=head;
				temp=SearchByNumber(head,number,father);
				p=temp;
				if (temp==NULL)
				{
					cout<<char(7);
					cout<<"\n沒有該學生的記錄!刪除無效!"<<endl;
					return;
				}
				strcpy(name,temp->studentName);
				father=head;
				temp=SearchByName(head,name,father);
				break;
	}

	if (temp==father)     //要刪除根節點
	{
		if (temp->pNameRc==NULL)
		{
			head=head->pNameLc;
		}
		else       //左子樹加到右子樹的最左下
		{
			temp=temp->pNameRc;
			while (temp->pNameLc)
				temp=temp->pNameLc;
			temp->pNameLc=father->pNameLc;
			head=father->pNameRc;
		}
	}
	else                 //刪除非根節點
	{
		if (temp==father->pNameLc)   //刪除節點為左節點
		{
			if (temp->pNameRc==NULL)   //右子樹為空
			{
				father->pNameLc=temp->pNameLc;
			}
			else              //右子樹不為空,先將左子樹加到右子樹的最左下
			{
				temp=temp->pNameRc;
				while (temp->pNameLc)
					temp=temp->pNameLc;
				temp->pNameLc=father->pNameLc->pNameLc;
				father->pNameLc=father->pNameLc->pNameRc;
			}
		}
		else                       //刪除節點為右節點
		{
			if (temp->pNameRc==NULL)   //右子樹為空
			{
				father->pNameRc=temp->pNameLc;
			}
			else              //右子樹不為空,先將左子樹加到右子樹的最左下
			{
				temp=temp->pNameRc;
				while (temp->pNameLc)
					temp=temp->pNameLc;
				temp->pNameLc=father->pNameRc->pNameLc;
				father->pNameRc=father->pNameRc->pNameRc;
			}
		}
	}

	father=head;
	temp=SearchByNumber(head,number,father);
	if (temp==father)     //要刪除根節點
	{
		if (temp->pNumberRc==NULL)
		{
			head=head->pNumberLc;
		}
		else       //左子樹加到右子樹的最左下
		{
			temp=temp->pNumberRc;
			while (temp->pNumberLc)
				temp=temp->pNumberLc;
			temp->pNumberLc=father->pNumberLc;
			head=father->pNumberRc;
		}
	}
	else                 //刪除非根節點
	{
		if (temp==father->pNumberLc)   //刪除節點為左節點
		{
			if (temp->pNumberRc==NULL)   //右子樹為空
			{
				father->pNumberLc=temp->pNumberLc;
			}
			else              //右子樹不為空,先將左子樹加到右子樹的最左下
			{
				temp=temp->pNumberRc;
				while (temp->pNumberLc)
					temp=temp->pNumberLc;
				temp->pNumberLc=father->pNumberLc->pNumberLc;
				father->pNumberLc=father->pNumberLc->pNumberRc;
			}
		}
		else                       //刪除節點為右節點
		{
			if (temp->pNumberRc==NULL)   //右子樹為空
			{
				father->pNumberRc=temp->pNumberLc;
			}
			else              //右子樹不為空,先將左子樹加到右子樹的最左下
			{
				temp=temp->pNumberRc;
				while (temp->pNumberLc)
					temp=temp->pNumberLc;
				temp->pNumberLc=father->pNumberRc->pNumberLc;
				father->pNumberRc=father->pNumberRc->pNumberRc;
			}
		}
	}

	if (i==1)
		cout<<"\n學生"<<p->studentName<<"的成績記錄已被刪除!"<<endl;
	else
		cout<<"\n學生"<<p->studentNumber<<"的成績記錄已被刪除!"<<endl;
	delete p;
}

void Search(student *&head)
{
	short i;
	char s[25];
	student *temp=NULL,*code;
	while (1)
	{
		cout<<" 1. 按姓名查找學生成績"<<endl
			<<" 2. 按學號查找學生成績"<<endl
			<<" 0. 返回上一級菜單"<<endl
			<<"請選擇: ";
		cin>>i;
		while (cin.fail() || (i>2 || i<0) )
		{
			cout<<char(7);
			cout<<"\n輸入錯誤 !"<<endl
				<<"輸入菜單中您要選擇的項目前的序號即可,即0-2的數字"<<endl
				<<"請選擇: ";
			cin.clear();
			cin.ignore(100,'\n');
			cin>>i;
		}
		switch (i)
		{
			case 1: do
					{
						cout<<"\n請輸入您要查詢的學生的名字,如果查詢結束,請輸入一個 * "<<endl;
						cin>>s;
						if (s[0]=='*') break;
						if (head)
							temp=SearchByName(head,s,code);
						else
							temp=NULL;
						if (temp==NULL)
						{
							cout<<char(7);
							cout<<"\n沒有該學生的記錄!查詢失敗!"<<endl;
						}
						else
						{
							PrintSingleStudent(temp);
						}
					}while (1);
					break;

			case 2: do
					{
						cout<<"\n請輸入您要查詢的學生的學號,如果查詢結束,請輸入一個 * "<<endl;
						cin>>s;
						if (s[0]=='*') break;
						if (head)
							temp=SearchByNumber(head,s,code);
						else
							temp=NULL;
						if (temp==NULL)
						{
							cout<<char(7);
							cout<<"\n沒有該學生的記錄!查詢失敗!"<<endl;
						}
						else
						{
							PrintSingleStudent(temp);
						}
					}while (1);
					break;

			case 0:return;
		}
	}
}

student *SearchByName(student *&head,char name[],student *&code)
{
	short i=strcmp(head->studentName,name);
	if (i==0) return head;
	code=head;
	if (i>0)
	{
		if (head->pNameLc)
			return SearchByName(head->pNameLc,name,code);
		else
			return NULL;
	}
	else
	{
		if (head->pNameRc)
			return SearchByName(head->pNameRc,name,code);
		else
			return NULL;
	}
}

student *SearchByNumber(student *&head,char number[],student *&code)
{
	short i=strcmp(head->studentNumber,number);
	if (i==0) return head;
	code=head;
	if (i>0)
	{
		if (head->pNumberLc)
			return SearchByNumber(head->pNumberLc,number,code);
		else
			return NULL;
	}
	else
	{
		if (head->pNumberRc)
			return SearchByNumber(head->pNumberRc,number,code);
		else
			return NULL;
	}
}

void Sort(student *&headOfStudent,courselist *&headOfCourse)
{
	short i;
	cout<<" 1. 按照姓名排序"<<endl
		<<" 2. 按照學號排序"<<endl
		<<" 3. 按照某門成績排序"<<endl
		<<" 0. 返回上一級菜單"<<endl
		<<"請選擇:";
	cin>>i;
	while (cin.fail() || (i>3 || i<0))
	{
		cout<<char(7);
		cout<<"\n輸入錯誤 !"<<endl
			<<"輸入菜單中您要選擇的項目前的序號即可,即0-2的數字"<<endl
			<<"請選擇: ";
		cin.clear();
		cin.ignore(100,'\n');
		cin>>i;
	}

	if (i!=0 && headOfStudent==NULL)
	{
		cout<<char(7);
		cout<<"\n沒有學生記錄!不能進行排序!"<<endl;
		return;
	}

	char coursename[20];
	courselist *temp;
	switch (i)
	{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区精品仙草咪| 日本v片在线高清不卡在线观看| 一区二区三区四区乱视频| 日韩一区精品字幕| 972aa.com艺术欧美| 欧美精品一区二区三区视频| 亚洲欧美国产毛片在线| 狠狠网亚洲精品| 亚洲国产精华液网站w| 日本不卡免费在线视频| 色婷婷国产精品综合在线观看| 久久综合精品国产一区二区三区| 一区二区三区在线观看动漫| 成人午夜在线免费| 精品免费99久久| 日韩高清在线电影| 欧美情侣在线播放| 亚洲一区二区av在线| 91香蕉视频在线| 日本一区二区高清| 国产精品一二三四| 久久人人爽爽爽人久久久| 蜜桃av一区二区| 欧美第一区第二区| 日产国产高清一区二区三区| 欧美三级视频在线| 一区二区三区在线播| 在线区一区二视频| 亚洲综合在线五月| 欧美在线999| 亚洲国产精品视频| 欧美日韩免费高清一区色橹橹| 亚洲男女毛片无遮挡| 色婷婷av一区二区三区gif| 亚洲精品成a人| 欧美视频一区二区在线观看| 无码av中文一区二区三区桃花岛| 欧美午夜不卡视频| 午夜婷婷国产麻豆精品| 欧美久久久久久蜜桃| 青青草国产成人av片免费| 日韩一区二区在线观看视频 | 一本色道久久综合狠狠躁的推荐 | 9i看片成人免费高清| 中文字幕制服丝袜一区二区三区| 99久久夜色精品国产网站| 国产精品国产自产拍高清av| 99re在线视频这里只有精品| 亚洲天堂中文字幕| 欧美人体做爰大胆视频| 青青草视频一区| 日本一区二区三区dvd视频在线| 国产精品一区二区免费不卡| 国产精品麻豆网站| 欧美网站一区二区| 极品美女销魂一区二区三区 | 亚洲一区二区三区在线看| 欧美日韩精品一区二区天天拍小说| 视频一区二区欧美| 午夜在线电影亚洲一区| 欧美一级片在线| 成人在线综合网站| 夜夜操天天操亚洲| 26uuu成人网一区二区三区| 99久久精品免费看国产| 日本不卡一二三区黄网| 久久久国产一区二区三区四区小说| 播五月开心婷婷综合| 午夜精品免费在线观看| 国产欧美一区视频| 欧美日韩久久不卡| www.欧美.com| 日本不卡一区二区三区高清视频| 国产精品理论片| 日韩欧美一二三四区| 99视频在线精品| 美女www一区二区| 亚洲激情校园春色| 久久亚洲综合色| 精品视频999| 国产69精品久久久久毛片| 午夜精品久久久久| 中文字幕成人网| 日韩欧美的一区二区| 欧洲av一区二区嗯嗯嗯啊| 国产精品乡下勾搭老头1| 日韩在线卡一卡二| 一区二区三区日本| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲成人先锋电影| 自拍视频在线观看一区二区| 日韩免费一区二区| 欧美日韩精品二区第二页| 97久久精品人人爽人人爽蜜臀| 精一区二区三区| 日韩和欧美的一区| 亚洲与欧洲av电影| 亚洲丝袜精品丝袜在线| 欧美激情在线观看视频免费| 欧美电视剧免费观看| 欧美一区二区三区人| 欧美人与禽zozo性伦| 欧美三级电影网站| 色美美综合视频| 99久久综合精品| 国产成人免费在线观看| 国产精品1024| 国模套图日韩精品一区二区| 捆绑变态av一区二区三区| 日本不卡一二三| 看国产成人h片视频| 裸体歌舞表演一区二区| 久久成人羞羞网站| 狠狠色丁香九九婷婷综合五月| 久久精品免费观看| 国内一区二区在线| 国产一区91精品张津瑜| 国产乱色国产精品免费视频| 色噜噜偷拍精品综合在线| 色综合天天视频在线观看| 一本色道久久综合精品竹菊| 色素色在线综合| 欧美三区在线观看| 欧美一卡2卡三卡4卡5免费| 日韩欧美一区二区久久婷婷| 欧美mv日韩mv| 欧美激情一区二区三区不卡| 国产精品美女久久久久久久久久久 | 中文av一区二区| 国产精品福利一区二区三区| 亚洲欧美日韩国产成人精品影院| 亚洲精品久久久蜜桃| 日韩制服丝袜av| 国产高清不卡二三区| 色婷婷激情一区二区三区| 精品视频在线免费| 久久亚洲捆绑美女| 国产精品久久久久9999吃药| 亚洲国产精品久久艾草纯爱| 久久99精品久久久| 91在线视频观看| 欧美日韩国产在线观看| 久久免费的精品国产v∧| 一区在线观看视频| 日韩精品乱码免费| 大美女一区二区三区| 欧日韩精品视频| 精品国产三级a在线观看| 国产精品女同一区二区三区| 亚洲福中文字幕伊人影院| 国产在线精品不卡| 一本久道中文字幕精品亚洲嫩| 欧美一区二视频| 中文字幕在线一区| 日韩精品国产精品| aaa欧美日韩| 日韩精品一区二区三区老鸭窝| 亚洲欧美自拍偷拍| 麻豆成人久久精品二区三区红| av一区二区久久| 日韩精品一区二区三区在线观看| 国产精品拍天天在线| 青椒成人免费视频| 在线免费观看日本欧美| 国产亚洲精品福利| 婷婷综合五月天| 91视视频在线直接观看在线看网页在线看| 欧美三级中文字| 亚洲色大成网站www久久九九| 1区2区3区精品视频| 国产大陆精品国产| 日韩欧美一区二区久久婷婷| 亚洲一区二区三区三| 不卡欧美aaaaa| 久久综合色播五月| 婷婷久久综合九色综合绿巨人 | 狠狠v欧美v日韩v亚洲ⅴ| 欧美日本在线播放| 亚洲色图19p| 成人av电影免费在线播放| 欧美成人精品1314www| 国模大尺度一区二区三区| 正在播放亚洲一区| 亚洲3atv精品一区二区三区| 91在线观看免费视频| 欧美国产禁国产网站cc| 国产精品一区免费在线观看| 精品国产91久久久久久久妲己 | 麻豆精品久久久| 欧美日韩电影在线播放| 一区二区三区日韩欧美| 99精品热视频| 中文字幕在线不卡| 成人sese在线| 国产精品欧美精品| 99麻豆久久久国产精品免费优播| 国产精品久久久爽爽爽麻豆色哟哟| 国产传媒一区在线| 国产视频一区二区在线| 国产成人8x视频一区二区|