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

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

?? 程序15.2:學員通訊錄程序.cpp

?? mfc動態鏈接庫介紹程序
?? CPP
字號:
/******程序12.1:學員通訊錄程序.cpp******/
#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>
using namespace std;

class Student
{
private:
	string sName;		//姓名
	string sAddree;		//姓名
	string sPhone;		//電話
	string sMobile;		//手機
	string sEmail;		//郵箱
public:
	Student(string sName)	//用來從鍵盤讀數據信息
	{
		cout<<"\n****** 輸入《"<<sName<<"》信息 ******\n";
		this->sName=sName;
		cout<<"   通信地址  : ";
		cin>>sAddree;
		cout<<"   電話號碼  : ";
		cin>>sPhone;
		cout<<"   手機號碼  : ";
		cin>>sMobile;
		cout<<"   電子信箱  : ";
		cin>>sEmail;
		cout<<"****** 輸入《"<<sName<<"》完畢 ******\n";
	}
	Student(string sName,string sAddree,string sPhone,
			string sMobile,string sEmail)//用來從文件讀數據信息
	{	
		this->sName=sName;
		this->sAddree=sAddree;
		this->sPhone=sPhone;
		this->sMobile=sMobile;
		this->sEmail=sEmail;
	}
	void Display()				//顯示個人數據信息
	{
		cout<<"\n****** 顯示《"<<sName<<"》信息 ******\n";
		cout << "   地址是  :" << sAddree << endl;
		cout << "   電話是  :" << sPhone << endl;
		cout << "   手機是  :" << sMobile << endl;
		cout << "   郵箱是  :" << sEmail << endl;
		cout<<"****** 顯示《"<<sName<<"》完畢 ******\n";
	}
	bool CmpKey(string str)		//在鏈表中查找相關數據
	{
		if(sName == str) 
			return true;
		if(sPhone == str) 
			return true;
		if(sMobile == str) 
			return true;
		if(sEmail == str) 
			return true;
		return false;
	}
	void Modify()				//修改節點數據信息
	{
		do
		{
		cout << "\n******《修改通訊錄信息》******\n";
		cout << "1. 姓名是  :" << sName << endl;
		cout << "2. 地址是  :" << sAddree<< endl;
		cout << "3. 電話是  :" << sPhone << endl;
		cout << "4. 手機是  :" << sMobile << endl;
		cout << "5. 郵箱是  :" << sEmail << endl << endl;
		int iChoice;
		cout << "   選擇要修改項目的編號(1—5) : " << endl;
		cout << "   按任意其它鍵退出修改, 輸入 : " ;
		cin >> iChoice;
			switch(iChoice)
			{
			case 1:
				cout << "   輸入修改后的姓名  : ";
				cin >> sName;
				break;
			case 2:
				cout << "   輸入修改后的地址  : ";
				cin >> sAddree;
				break;
			case 3:
				cout << "   輸入修改后的電話  : ";
				cin >> sPhone;
				break;
			case 4:
				cout << "   輸入修改后的手機  : ";
				cin >> sMobile;
				break;
			case 5:
				cout << "   輸入修改后的郵箱  : ";
				cin >> sEmail;
				break;
			default:
				break;
			}
			if(iChoice>=1&&iChoice<=5)
			{
			cout<<"   還要繼續修改其它選項嗎(y/n): ";
			char cChoice;
			cin >> cChoice;
			if(cChoice=='y'||cChoice=='Y')
				continue;
			else
				{
				cout << "******《修改通訊錄完畢》******\n";
				break;		
				}
			}
		}while(1);
	}
	string GetName()		//用于訪問私有成員變量sName
	{
		return sName;
	}
	string GetPhone()		//用于訪問私有成員變量sPhone
	{
		return sPhone;
	}
	string GetMobile()		//用于訪問私有成員變量sMobile
	{
		return sMobile;
	}
	string GetEmail()		//用于訪問私有成員變量sEmail
	{
		return sEmail;
	}
};

class Node
{
public:
	Student stud;			//節點數據信息(INFO) 
	string sName;			//節點標示名稱
	Node *NEXT;				//指向下一節點的節點指針(NEXT) 
	Node(string sName,Node *NEXT=NULL):stud(sName)
	{
		this->sName=sName;
		this->NEXT=NEXT;
	}
	Node(string sName,string sAddree,string sPhone,string sMobile,
		 string sEmail):stud(sName,sAddree,sPhone,sMobile,sEmail)
	{
						//空語句體,用來從文件讀數據信息	
	}
};

class List				//定義一個List類
{
private:
	Node*	Start;		//表頭指針,固定在表頭
	Node*	Curr;		//當前遍歷位置指針
	Node*	Prev;		//當前位置的前節點指針
	Node*	End;		//表尾指針,固定在表尾
	int		iPosition;	//當前節點在表中的位置序號
public:
	List()				//構造符函數
	{
		Start=Curr=Prev=End=NULL;
		iPosition=1;
	}
	~List()				//析造符函數
	{
		while(Start!=NULL)
		{
			Curr=Start;
			Start=Start->NEXT;
			delete Curr;
		}
	}
	void AddNode();		//增加節點
	void AddNodeSta();	//增加節點到表頭
	void AddNodeEnd();	//增加節點到表尾
	void AddNode(string sName,string sAddree,string sPhone,
				string sMobile,string sEmail);//從文件中讀取節點
	void Traverse();	//遍歷鏈表(瀏覽所有節點信息)
	void Modify();		//修改節點
	void QueryNode();	//查詢節點(按照關鍵字查找符合條件的節點)
	void DelNode();		//刪除當前節點
	void DelNodeSta();	//刪除表頭節點
	void DelNodeEnd();	//刪除表尾節點
	void RowOrder();	//鏈表按字母順序排序
	void Save(ofstream &ofile);	//保存節點信息到文件
};

void List::AddNode()	//增加節點,按拼音順序增加到相應的位置
{					
	string str;			//聲明節點標示變量
	cout<<"\n   輸入姓名 : ";
	cin >> str;
	if(Start==NULL)		//條件成立,創建新鏈表的第一個節點
	{
		Start=new Node(str,NULL);
					//新建節點,	sName=str, Start->NEXT=NULL
		End=Start;
		cout << "\n   創建鏈表的第一個節點完畢!!! " << endl;
		return;						//函數返回,不再向下執行
	}
	if(str<=Start->sName)			//條件成立,將節點增加到表頭
	{
		Start=new Node(str,Start);	//新建節點作為表頭
					//新建節點,	sName=str, Start->NEXT=Start
		cout << "\n   增加鏈表節點到表頭完畢!!! " << endl;
		return;					//函數返回,不再向下執行
	}
	Prev=Start;				//Prev指針初始化到表頭
	Curr=Prev->NEXT;		//Cur指針初始化到表頭
	while(Curr!=NULL)			//使用循環查找插入節點位置
	{
		if(str>Prev->sName && str<=Curr->sName)
		{
			Node *N=new Node(str,Curr);
					//新建節點,	sName=str, N->NEXT=Curr
			Prev->NEXT=N;		//新建節點在Prev之后Curr之前
			cout << "\n   增加鏈表節點到表中完畢!!! " << endl;
			return;				//函數返回,不再向下執行
		}
		Prev=Curr;				//后移Prev指針
		Curr=Prev->NEXT;		//后移Cur指針
	}
	End=new Node(str,NULL);
						//新建節點,	sName=str, End->NEXT=NULL
	Prev->NEXT=End;
	cout << "\n   增加鏈表節點到表尾!!! " << endl;
}

void List::AddNodeSta()	//增加節點到表頭
{
	string str;			//聲明節點標示變量
	cout<<"\n   輸入姓名 : ";
	cin >> str;
	if(Start==NULL)		//條件成立,創建新鏈表的第一個節點
	{
		Start=new Node(str,NULL);
					//新建節點,	sName=str, Start->NEXT=NULL
		End=Start;
		cout << "\n   創建鏈表的第一個節點完畢!!! " << endl;
		return;					//函數返回,不再向下執行
	}
	Start=new Node(str,Start);	//新建節點作為表頭
				//新建節點,	sName=str, Start->NEXT=Start
	cout << "\n   增加鏈表節點到表頭完畢!!! " << endl;
}

void List::AddNodeEnd()	//增加節點到表尾
{
	string str;			//聲明節點標示變量
	cout<<"\n   輸入姓名 : ";
	cin >> str;
	if(Start==NULL)		//條件成立,創建新鏈表的第一個節點
	{
		Start=new Node(str,NULL);
					//新建節點,	sName=str, Start->NEXT=NULL
		End=Start;
		cout << "\n   創建鏈表的第一個節點完畢!!! " << endl;
		return;						//函數返回,不再向下執行
	}
	Prev=Start;				//Prev指針初始化到表頭
	Curr=Prev->NEXT;		//Cur指針初始化到表頭
	while(Curr!=NULL)			//使用循環查找插入節點位置
	{
		Prev=Curr;				//后移Prev指針
		Curr=Prev->NEXT;		//后移Cur指針
	}
	End=new Node(str,NULL);
						//新建節點,	sName=str, End->NEXT=NULL
	Prev->NEXT=End;
	cout << "\n   增加鏈表節點到表尾!!! " << endl;
}

void List::AddNode(string sName,string sAddree,string sPhone,
				   string sMobile,string sEmail)
{		//從文件中讀取節點,讀入后的順序和文件中的順序一致
	if(Start==NULL)
	{
		Start=new Node(sName,sAddree,sPhone,sMobile,sEmail);
		Curr=End=Start;
	}
	else
	{
		Curr=End;
		End=new Node(sName,sAddree,sPhone,sMobile,sEmail);
		Curr->NEXT=End;
	}
}

void List::Modify()
{
	string sKey;				//聲明關鍵字變量
	cout << "\n   輸入修改關鍵字(姓名/地址/電話/手機/郵箱) : ";
	cin >> sKey;
	for(Curr=Start;Curr!=NULL;Curr=Curr->NEXT)
	{
	   if(sKey==Curr->sName||Curr->stud.CmpKey(sKey))
	   {
		   Curr->stud.Modify();//修改節點信息		   
	   }
	}
	if(Curr=NULL)
		cout << "\n   查詢完畢,沒有查詢到相關信息!!! " << endl;
}

void List::Traverse()					//遍歷鏈表(瀏覽所有節點信息)
{
	if(Start==NULL)
	{
		cout << "\n   鏈表不存在!!! " << endl;
	}
	else
	{
		iPosition=1;
		for(Curr=Start;Curr!=NULL;Curr=Curr->NEXT)
		{							//循環顯示所有節點信息
			cout<<iPosition++<<" . ";		//顯示節點序號
			cout<<Curr->sName<<endl;	//顯示節點標示
//			Curr->stud.GetName()<<endl;	//顯示節點信息姓名
//			Curr->stud.Display()<<endl;	//顯示節點信息全部
		}
		cout << "\n   鏈表遍歷完畢!!! " << endl;
	}
}

void List::QueryNode()	//查詢節點(按照關鍵字查找符合條件的節點)
{
	string sKey;	//聲明關鍵字變量
	cout << "\n   輸入查詢關鍵字(姓名/地址/電話/手機/郵箱) : ";
	cin >> sKey;
	for(Curr=Start;Curr!=NULL;Curr=Curr->NEXT)
	{
	   if(sKey==Curr->sName||Curr->stud.CmpKey(sKey))
	   {
			cout<<"\n   查詢到一個相關節點,顯示如下: "<<endl;
			Curr->stud.Display();		//顯示節點信息全部
			cout<<"\n   繼續查詢下一個相關節點嗎(y/n): ";	
			char ch;
			cin>>ch;
			if(ch=='y'||ch=='Y')
				continue;
			else
				cout << "\n   查詢完畢!!! " << endl;
				return;
	   }
	}
	if(Curr==NULL)
		cout << "\n   查詢完畢,沒有查詢到相關信息!!! " << endl;
}

void List::DelNode()	//刪除當前節點
{
	string sKey;		//聲明關鍵字變量
	cout<<"\n   輸入刪除節點關鍵字(姓名/地址/電話/手機/郵箱) : ";
	cin >> sKey;
	for(Prev=Curr=Start;Curr!=NULL;Prev=Curr,Curr=Prev->NEXT)
	{
		if(sKey==Curr->sName||Curr->stud.CmpKey(sKey))
		{
			Curr->stud.Display();		//顯示節點全部信息
			cout << "\n   確實要刪除當前節點嗎?(y/n) : ";
			char ch;
			cin >> ch;
			if(ch=='y'||ch=='Y')
			{
				Prev->NEXT=Curr->NEXT;	//刪除當前節點
				if(Curr==Start)
				{
				   Start=Start->NEXT;
				}
				delete Curr;
				cout << "\n   刪除鏈表當前節點完畢!!! " << endl;
				return;
			}
		}
	}
	cout << "\n   瀏覽完畢,未發現相關節點!!! " << endl;
}

void List::DelNodeSta()		//刪除表頭節點
{
	if(Start==NULL)
		cout << "\n   鏈表不存在!!! " << endl;
		return;
	Start=Start->NEXT;
	delete Start;
	cout << "\n   刪除鏈表表頭節點完畢!!! " << endl;
}

void List::DelNodeEnd()		//刪除表尾節點
{
	if(Start==NULL)
		cout << "\n   鏈表不存在!!! " << endl;
		return;
	for(Curr=Start;Curr->NEXT!=NULL;Prev=Curr,Curr=Prev->NEXT);
	Prev->NEXT=NULL;		//刪除表尾節點
	delete Curr;
	cout << "\n   刪除鏈表表尾節點完畢!!! " << endl;
}

void List::RowOrder()		//鏈表按字母順序排序
{
	if(Start==NULL)
	{
		cout << "\n   鏈表不存在!!! " << endl;
	}
	else
	{
		Prev=Start;
		Curr=Start->NEXT;
		while(Curr!=NULL) 
		{
			if(Prev->sName > Curr->sName)
			{
				Node *Temp;
				Temp=Prev;
				Prev=Curr;
				Curr=Temp;
				Prev=Start;
				Curr=Start->NEXT;
				continue;
			}
			Prev=Curr;
			Curr=Curr->NEXT;			
		}
		cout << "\n   鏈表按字母順序排序完畢!!! " << endl;
	}
}

void List::Save(ofstream &ofile)
{
	for(Prev=Curr=Start;Curr!=NULL;Curr=Curr->NEXT)
	{
		ofile << Curr->stud.GetName() << endl;
		ofile << Curr->stud.GetPhone() << endl;
		ofile << Curr->stud.GetMobile() << endl;
		ofile << Curr->stud.GetEmail() << endl;
	}
}

int main(int argc,char* argv[])		//向主函數傳入參數
{
	List list;
	if(argc>1)
	{
		cout << argv[0] << endl;	//顯示程序文件名
		cout << argv[1] << endl;	//顯示加載文件名
		ifstream ifile(argv[1]);	//讀取文件
		string sName,sAddree,sPhone,sMobile,sEmail;
		while(true)
		{
			if(!(ifile >> sName)) break;
			if(!(ifile >> sPhone)) break;
			if(!(ifile >> sMobile)) break;
			if(!(ifile >> sEmail)) break;
			list.AddNode(sName,sAddree,sPhone,sMobile,sEmail);
		}
	}
	cout << " ******************************《通 訊 錄 程 序》****************************** "<< endl;
	char cCmd;
	do
	{
		cout << "\n   增加(A)  遍歷(T)  修改(M)  刪除(D)  查詢(Q)  排序(R)  保存(S)   退出(X): ";
		cin >> cCmd;
		switch(cCmd)
		{
			case 'a':
			case 'A':
				{
					list.AddNode();
					break;
				}
			case 'm':
			case 'M':
				{
					list.Modify();
					break;
				}
			case 'd':
			case 'D':
				{
					list.DelNode();
					break;
				}
			case 't':
			case 'T':
				{
					list.Traverse();
					break;
				}
			case 'q':
			case 'Q':
				{
					list.QueryNode();
					break;
				}
			case 'r':
			case 'R':
				{
					list.RowOrder();
					break;
				}
			case 's':
			case 'S':
				{
					cout << "\n   輸入要保存的文件路徑名 : ";
					string sFile;
					cin >> sFile;
					ofstream ofile(sFile.data());
					list.Save(ofile);
					break;
				}
			case 'x':
			case 'X':
				{
					cout << "\n  ****************《操作完畢,感謝您使用宋振會軟件工作室產品》****************\n"<< endl;	
					break;	
				}

			default:
					cout << "\n   輸入錯誤,重新選擇菜單 : ";
			}
	}while(cCmd!='x' && cCmd!='X' );
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女精品自拍一二三四| 成人黄色a**站在线观看| 国产大陆a不卡| 欧美伦理电影网| 中文字幕在线观看不卡| 久久99国内精品| 欧美男女性生活在线直播观看| 久久久精品欧美丰满| 日韩不卡免费视频| 欧美日韩卡一卡二| 亚洲欧洲成人自拍| 国产不卡一区视频| 欧美大片日本大片免费观看| 亚洲国产综合91精品麻豆| 成人免费视频视频在线观看免费| 欧美一区二区福利视频| 亚洲女同女同女同女同女同69| 国产一区二区伦理片| 日韩免费一区二区三区在线播放| 亚洲不卡av一区二区三区| 色嗨嗨av一区二区三区| 国产精品国产三级国产普通话三级 | 久久夜色精品一区| 无吗不卡中文字幕| 在线一区二区三区四区五区 | 337p日本欧洲亚洲大胆色噜噜| 亚洲午夜在线视频| 色老头久久综合| 一区二区三区四区亚洲| 91丨九色丨尤物| 亚洲天堂a在线| 暴力调教一区二区三区| 综合久久国产九一剧情麻豆| 成人综合在线观看| 国产丝袜欧美中文另类| 国产精品一区不卡| 国产精品网站在线| 99久久久精品| 一区二区三区在线观看欧美| 在线视频中文字幕一区二区| 亚洲午夜久久久久久久久电影网| 欧美揉bbbbb揉bbbbb| 首页欧美精品中文字幕| 欧美一区二区在线不卡| 久久电影网站中文字幕 | 国产成人免费视频网站高清观看视频 | 麻豆91在线观看| 精品国产乱码久久久久久蜜臀| 韩国v欧美v亚洲v日本v| 国产精品伦一区| 色婷婷综合久久久久中文| 亚洲国产美女搞黄色| 日韩一区二区在线播放| 国产成人午夜高潮毛片| 伊人开心综合网| 欧美一区二区三区男人的天堂 | 日韩国产欧美视频| 欧美r级电影在线观看| 成人黄色免费短视频| 亚洲激情欧美激情| 日韩欧美在线观看一区二区三区| 国产一区二区三区观看| 亚洲欧美国产毛片在线| 欧美一区二区福利视频| 成人精品国产一区二区4080| 亚洲一区在线免费观看| 欧美成人猛片aaaaaaa| av在线不卡观看免费观看| 亚洲一区视频在线| 久久人人超碰精品| 91久久精品国产91性色tv| 久久精品国产99| 亚洲精品免费看| 久久综合丝袜日本网| 一本在线高清不卡dvd| 蜜臀av国产精品久久久久| 欧美韩日一区二区三区四区| 欧美日产在线观看| 成人在线一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎 | 色婷婷综合久色| 国模套图日韩精品一区二区| 一区二区高清视频在线观看| 亚洲精品在线一区二区| 欧美午夜免费电影| 成人听书哪个软件好| 久久成人av少妇免费| 一区二区在线电影| 国产欧美日韩麻豆91| 精品久久久久久久一区二区蜜臀| 在线精品视频免费播放| 成人黄色在线网站| 国产高清亚洲一区| 蜜桃一区二区三区在线观看| 性做久久久久久久久| 亚洲三级久久久| 国产精品久久久久久久蜜臀| 欧美videofree性高清杂交| 欧美日产在线观看| 欧美日韩精品福利| 在线看不卡av| 91福利国产精品| 99国产欧美久久久精品| 成人中文字幕在线| 国产成人自拍在线| 国产激情偷乱视频一区二区三区| 青椒成人免费视频| 日韩av在线播放中文字幕| 亚洲福中文字幕伊人影院| 亚洲日本va午夜在线电影| 亚洲色图视频网| 亚洲伦理在线精品| 自拍偷在线精品自拍偷无码专区| 欧美国产一区视频在线观看| 久久久五月婷婷| 久久久精品欧美丰满| 国产亚洲欧美中文| 久久久精品天堂| 欧美国产综合色视频| 国产精品久久久久一区二区三区| 中文字幕欧美三区| 亚洲图片你懂的| 亚洲一区在线播放| 日本在线不卡视频| 精品一区二区免费| 国产69精品久久99不卡| av午夜一区麻豆| 日本精品一级二级| 欧美酷刑日本凌虐凌虐| 欧美一区二区三区思思人| 欧美va在线播放| 国产精品色一区二区三区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 国产精品国产三级国产a| 一区二区在线看| 蜜臀精品久久久久久蜜臀 | 欧美日韩国产高清一区二区三区| 欧美日韩亚洲综合在线| 精品日韩在线一区| 国产精品美女久久福利网站| 一区二区三区视频在线观看| 亚洲va国产天堂va久久en| 久久国产精品免费| av午夜一区麻豆| 777奇米四色成人影色区| 欧美成人国产一区二区| 国产网红主播福利一区二区| 亚洲激情自拍偷拍| 狠狠色狠狠色综合| 91丨porny丨首页| 91精品在线免费观看| 国产欧美一区二区精品忘忧草 | 精品一区二区成人精品| 91年精品国产| 欧美v国产在线一区二区三区| 国产精品欧美久久久久一区二区 | 欧美美女网站色| 国产人久久人人人人爽| 视频在线观看国产精品| 韩国一区二区视频| 精品视频在线看| 国产三级一区二区| 日韩精品福利网| 91免费在线播放| 久久久无码精品亚洲日韩按摩| 亚洲免费在线视频一区 二区| 蜜臂av日日欢夜夜爽一区| 91色|porny| 久久久久久免费网| 免费看日韩精品| 91福利精品视频| 国产精品久久久久久久午夜片| 日韩电影免费在线观看网站| 色婷婷精品久久二区二区蜜臀av| 日韩一区二区在线看| 亚洲精品国产a| 成人免费毛片高清视频| 欧美成人一区二区| 丝袜脚交一区二区| 欧美色中文字幕| 亚洲精品视频一区| av在线一区二区| 国产精品久久久久久久久晋中| 六月丁香婷婷色狠狠久久| 欧美日韩国产天堂| 亚洲永久免费av| 在线一区二区三区四区| 亚洲另类色综合网站| 94色蜜桃网一区二区三区| 国产精品视频免费| 成人免费视频一区| 国产精品欧美一区二区三区| 成人一级黄色片| 国产女人aaa级久久久级| 理论片日本一区| 日韩视频一区在线观看| 蜜臀久久久久久久| 欧美一区二区三区免费观看视频| 五月天精品一区二区三区| 欧美日韩国产首页|