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

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

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

?? 學習C++的一些范例
?? 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一区二区三区免费野_久草精品视频
国产乱码精品一区二区三区忘忧草| 国产精品自拍在线| 精品亚洲porn| 色素色在线综合| 日韩美女主播在线视频一区二区三区| 国产精品成人免费在线| 日本不卡一区二区| 日本高清成人免费播放| 久久久精品人体av艺术| 三级欧美在线一区| 欧美中文字幕久久| 中日韩av电影| 国产裸体歌舞团一区二区| 欧美日韩国产乱码电影| 亚洲色图制服诱惑| 国产精品一区在线| 精品少妇一区二区三区免费观看| 亚洲情趣在线观看| 成人免费电影视频| 久久一夜天堂av一区二区三区 | 欧美午夜精品久久久久久超碰 | 久久精品国产久精国产| 欧美日韩国产综合久久| 日韩久久一区二区| av福利精品导航| 欧美国产一区在线| 国产激情一区二区三区| 久久综合网色—综合色88| 天堂影院一区二区| 欧美日韩国产首页在线观看| 一区二区成人在线观看| 91小视频在线| 一区二区三区日韩欧美精品| 波多野结衣一区二区三区| 国产亚洲福利社区一区| 国产精品中文欧美| 国产亚洲一二三区| 国产久卡久卡久卡久卡视频精品| 日韩三级视频中文字幕| 美洲天堂一区二卡三卡四卡视频| 欧美精品乱码久久久久久按摩 | 日本精品一级二级| 国产欧美一区二区三区在线老狼| 欧美激情在线免费观看| 激情综合亚洲精品| 精品国产91久久久久久久妲己| 男女男精品视频| 精品1区2区在线观看| 狠狠色丁香婷婷综合久久片| 久久久久高清精品| 成人动漫一区二区| 亚洲免费大片在线观看| 欧美视频一区二区三区在线观看| 亚洲成人精品一区二区| 日韩一区二区免费视频| 国产美女精品在线| **网站欧美大片在线观看| 欧日韩精品视频| 国产美女主播视频一区| 国产精品久久久久桃色tv| 色婷婷亚洲婷婷| 蜜臀久久99精品久久久久宅男| 3d动漫精品啪啪一区二区竹菊| 亚洲成年人网站在线观看| 91精品国产福利| 国产成人综合网站| 一区二区三区美女视频| 日韩女优电影在线观看| 99这里只有精品| 三级久久三级久久| 国产精品久久免费看| 欧美性大战久久久久久久蜜臀| 久久精品国产99| 中文字幕一区二区三区四区 | 五月激情六月综合| 久久久欧美精品sm网站| 欧美在线一二三| 国产乱码精品一区二区三| 亚洲最大成人综合| 国产视频一区在线观看| 欧美艳星brazzers| 国产69精品久久99不卡| 日韩中文字幕亚洲一区二区va在线| 久久久久久久网| 欧美日韩视频在线观看一区二区三区| 国产精品中文有码| 日韩黄色免费网站| 亚洲男人的天堂在线aⅴ视频| 精品卡一卡二卡三卡四在线| 欧洲精品一区二区| 不卡高清视频专区| 国内精品免费在线观看| 日韩av一区二区在线影视| 136国产福利精品导航| 久久亚洲影视婷婷| 91精品国产品国语在线不卡| 91看片淫黄大片一级在线观看| 国内国产精品久久| 日本va欧美va瓶| 亚洲国产乱码最新视频 | 一区二区三区免费网站| 国产三级一区二区| 26uuu久久综合| 欧美一级欧美一级在线播放| 欧美在线免费观看亚洲| 色综合久久88色综合天天| 成人app网站| 成人视屏免费看| 风间由美一区二区三区在线观看| 强制捆绑调教一区二区| 亚洲第一在线综合网站| 亚洲一区二区三区四区五区黄| 中文字幕一区日韩精品欧美| 久久精品一区二区| 久久久久久久久99精品| 久久久蜜臀国产一区二区| 久久久久久久综合狠狠综合| 精品国产免费久久| 精品国产乱码久久久久久1区2区 | 精品粉嫩aⅴ一区二区三区四区| 这里只有精品电影| 欧美一二三四在线| 日韩女同互慰一区二区| 精品国产乱码久久久久久浪潮 | 久久久久久久电影| 国产午夜亚洲精品理论片色戒| 久久蜜桃一区二区| 国产欧美综合在线| 亚洲欧洲av另类| 亚洲最新视频在线播放| 午夜精品在线视频一区| 男女激情视频一区| 国产一区二区三区国产| 成人少妇影院yyyy| 色94色欧美sute亚洲线路一ni | 日韩午夜精品视频| 久久综合九色欧美综合狠狠 | 日韩一级大片在线| 久久亚洲一区二区三区明星换脸| 国产无遮挡一区二区三区毛片日本| 欧美激情一区二区三区| 亚洲色图.com| 日本成人中文字幕| 国产精品一二三在| 色拍拍在线精品视频8848| 欧美日本一区二区| 久久精品一区蜜桃臀影院| 亚洲激情在线激情| 久久99最新地址| 99久久精品99国产精品| 欧美精品久久一区| 久久久噜噜噜久久中文字幕色伊伊| 国产精品午夜在线| 视频一区中文字幕| 成人精品国产一区二区4080| 欧美三级韩国三级日本三斤| 日韩你懂的在线观看| 国产精品久久午夜| 欧美aa在线视频| 99久久777色| 久久亚洲一级片| 亚洲黄色小视频| 国产精品影视网| 欧美久久久影院| 国产精品女主播av| 久久精品国产**网站演员| 不卡的电影网站| 久久一日本道色综合| 亚洲国产人成综合网站| 丁香桃色午夜亚洲一区二区三区| 欧美日韩三级视频| 最近日韩中文字幕| 国内精品视频666| 91精品国产91久久久久久一区二区| 中文子幕无线码一区tr| 看国产成人h片视频| 欧美视频一区在线| 亚洲男人天堂av| 高清久久久久久| 精品入口麻豆88视频| 婷婷中文字幕综合| 日本二三区不卡| 亚洲精品视频在线观看网站| 国产精品一区一区三区| 精品久久久久香蕉网| 日韩二区在线观看| 欧美日韩久久不卡| 一区二区三区加勒比av| 97久久精品人人爽人人爽蜜臀| 久久久另类综合| 国产一区二区三区四区在线观看| 欧美精品在线视频| 亚洲国产精品麻豆| 欧美性猛交xxxxxx富婆| 亚洲精品伦理在线| 在线一区二区三区四区五区| 国产精品久久久久久一区二区三区| 国产精品一区二区不卡| 久久久久久久久99精品| 国产专区欧美精品|