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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? phonebook.cpp

?? 用C++實(shí)現(xiàn)的一個(gè)很簡單的個(gè)人電話薄管理系統(tǒng)源代碼
?? CPP
字號(hào):
//*******************************************************************
/*****************   PhoneBook個(gè)人電話簿管理系統(tǒng)  ****************/
/*	作者:郭佩佩		*/
/*	學(xué)號(hào):09002138	*/
/*	日期:2004/11/26	*/
//*******************************************************************
#include<iostream.h>
#include<fstream.h>
#include<conio.h>
#include<iomanip.h>
#include<string.h>
#include<stdlib.h>

struct record		//結(jié)構(gòu)體類型定義
{
	char lastName[20];		//姓氏
	char firstName[15];		//名字
	char phoneNum[15];		//電話
	char mobile[15];		//手機(jī)
	record *next;
};

record *head;		//全局變量,鏈表頭指針
record *current;	//全局變量,鏈表當(dāng)前結(jié)點(diǎn)指針


//	函數(shù)原型聲明
void handleChoice(int choice);
void addRecord();
void insertNode(record *newRecord);
record *posInsertPoint(char lastname[20]);
void makeNodeNewHead(record *newRecord);
void addNodeToEnd(record *newRecord);
void moveCurrentToEnd();
void display();
void update();
void deleteRecord();
void deleteAll();
void deleteHead();
void deleteEnd(record *previous);
void deleteMiddle(record *previous);
int verifyDelete();
void deleteNode(record *previous);
void deleteList();
void searchByLastname();
void wiriteToFile();
void loadFromFile();
void help();
char pause;


//	主函數(shù)
int main()
{
	cout << "Welcome...\n";
	cout << "*************************************************************\n";
	cout << "\n\n\n          歡迎使用PhoneBook個(gè)人電話簿管理系統(tǒng)...     \n\n";
	cout << "               Press enter to continue!\n\n\n";
	cout << "\n*************************************************************";
	cin.get(pause);
	system("cls");			//執(zhí)行系統(tǒng)命令:cls-清屏
	int choice;
	head = NULL;
	loadFromFile();

	do
	{	//主菜單顯示
		cout << "Menu...\n";
		cout << "***********************************************************\n";
		cout << "            PhoneBook個(gè)人電話管理系統(tǒng)主菜單              \n\n";
		cout << "	請(qǐng)選擇以下功能:                          \n";
		cout << "	 1 - 添加一條記錄\n";
		cout << "	 2 - 顯示全部記錄\n";
		cout << "	 3 - 按姓氏查找\n";
		cout << "	 4 - 更新記錄\n";
		cout << "	 5 - 刪除一條記錄\n";
		cout << "	 6 - 清空電話簿\n";
		cout <<	"	 7 - 幫助\n";
		cout << "	 8 - 退出系統(tǒng)\n";
		cout << "***********************************************************\n";
		cout << "選擇: ";
		cin >> choice;
		handleChoice(choice);
	}
	while(choice != 8);

	return 0;
}


//	根據(jù)用戶選擇(choice)調(diào)用對(duì)應(yīng)處函數(shù)
void handleChoice(int choice)
{
	switch(choice)
	{
	case 1:						//添加一條記錄
		addRecord();
		break;
	case 2:						//顯示全部記錄
		display();
		break;
	case 3:						//按姓氏查找
		searchByLastname();
		break;
	case 4:						//更新記錄
		update();
		break;
	case 5:						//刪除一條記錄
		deleteRecord();
		break;
	case 6:						//清空電話簿
		deleteAll();
		break;
	case 7:						//幫助
		help();
		break;
	case 8:						//文件存盤,然后退出系統(tǒng)
		wiriteToFile();
		if(head != NULL)
		{
			deleteList(); 
		}
		break;
	default :					//其它輸入則出錯(cuò)
		cout <<"輸入有誤!!請(qǐng)您重新輸入選項(xiàng)!!\n";
		break;
	}
}


//	在鏈表中增加一個(gè)記錄
void addRecord()
{
	record *newRecord;
	newRecord = new record;
	if(newRecord != NULL)
	{
		system("cls");
		cout << "Add a new record...\n";
		cout << "*************************************************************\n";
		cout << "請(qǐng)您輸入...\n";
		cin.ignore(20,'\n');
		cout << "  姓氏: ";
		cin.get(newRecord->lastName,20);
		cin.ignore(20,'\n');
		cout << "  名字: ";
		cin.get(newRecord->firstName,15);
		cin.ignore(20,'\n');
		cout << "  電話號(hào)碼: ";
		cin.get(newRecord->phoneNum,15);
		cin.ignore(20,'\n');
		cout << "  手機(jī)號(hào)碼:";
		cin.get(newRecord->mobile,15);
		cin.ignore(20,'\n');
		insertNode(newRecord);
	}
	else
	{
		cout << "警告: 存儲(chǔ)器錯(cuò)誤, 新記錄添加失敗!!\n";
	}
	system("cls");
}


//	將一個(gè)由newRecord 指向的新節(jié)點(diǎn)插入鏈表中
void insertNode(record *newRecord)
{
	system("cls");
	record *before;
	record *after;
	if(head == NULL)		//鏈表為空,直接插入到頭結(jié)點(diǎn)
	{
		newRecord->next = NULL;
		head = newRecord;
	}
	else
	{
		if(strcmp(newRecord->lastName, head->lastName) < 0)
		{
			makeNodeNewHead(newRecord);
		}
		else
		{
			current = posInsertPoint(newRecord->lastName);
			before = current;
			after = current->next;
			if(after == NULL)
			{
				addNodeToEnd(newRecord);
			}
			else
			{
				before->next = newRecord;
				newRecord->next = after;
			}
		}
	}
}


//	按姓氏,返回其在鏈表中的正確位置。新節(jié)點(diǎn)即將插入此點(diǎn)。
record *posInsertPoint(char lastname[20])
{
	char tempName[20];
	record *temp;
	int tempint;
	if(head->next != NULL)
	{
		current = head;
		temp = current->next;
		strcpy(tempName, temp->lastName);
		tempint = strcmp(lastname,tempName);
		while((tempint > 0) && (current->next !=NULL))
		{
			current = temp;
			if(current->next != NULL)
			{
				temp = current->next;
				strcpy(tempName, temp->lastName);
				tempint = strcmp(lastname,tempName);
			}
		}
	}
	else
	{
		current = head;
	}
	return(current);
}


//	添加到鏈表頭部
void makeNodeNewHead(record *newRecord)
{
	record *temp;
	temp = head;
	newRecord->next = temp;
	head = newRecord;
}


//	添加到鏈表末尾
void addNodeToEnd(record *newRecord)
{
	newRecord->next = NULL;
	moveCurrentToEnd();
	current->next = newRecord;
}


//	current指針移動(dòng)到鏈表尾
void moveCurrentToEnd()
{
	current = head;
	while(current->next != NULL)
	{
		current = current->next;
	}
}


//	顯示全部記錄
void display()
{
	char fullname[36];

	current = head;
	if(current != NULL)
	{
		cout << endl;
		cout << "       姓 名                         電話號(hào)碼        手機(jī)號(hào)碼\n";
		cout << "------------------------------    --------------   ---------------\n";
		do
		{
			strcpy(fullname,"");
			strcat(fullname, current->lastName);
			strcat(fullname, ", ");
			strcat(fullname, current->firstName);
			cout.setf(ios::left);
			cout << setw(36) << fullname;
			cout.unsetf(ios::left);
			cout.setf(ios::right);
			cout << setw(12) << current->phoneNum;
			cout.unsetf(ios::left);
			cout.setf(ios::right);
			cout << setw(15) << current->mobile << endl;
			current = current->next;
			cout <<  endl;
		}
		while(current != NULL);
		cout << "Press Enter to continue \n";
		cin.get(pause);
		cin.ignore(1,pause);
		system("cls");
	}
	else
	{
		cout << "\n記錄為空!!\n";
		cout << "Press Enter to continue \n";
		cin.get(pause);
		cin.ignore(1,pause);
		system("cls");
	}
}


//	按姓氏查找記錄
void searchByLastname()
{
	system("cls");
	char searchStr[20];
	current = head;
	cin.ignore(20,'\n');
	cout << "Search...\n";
	cout << "*******************************************************************\n";
	cout << "請(qǐng)輸入姓氏: ";
	cin.get(searchStr,20);
	cin.ignore(20,'\n');
	while((current != NULL) && (strcmp(current->lastName, searchStr) != 0))
	{
		current = current->next;
		if(current != NULL)
		{
		cout << "匹配的記錄:\n";
		cout << current->firstName << ' ' << current->lastName << endl;
		cout << current->phoneNum << ' ' << current->mobile << endl;
		cout << "Press Enter to Contiune\n";
		cin.get(pause);
		system("cls");
		}
		else
		{
		cout << "沒有匹配記錄!!\n";
		cout << "Press Enter to Contiune\n";
		cin.get(pause);
		system("cls");
		}
	}
}


//	更新記錄
void update()
{
	system("cls");
	char searchStr[20];
	current = head;
	cin.ignore(20,'\n');
	cout << "Update...\n";
	cout << "********************************************************************\n";
	cout << "請(qǐng)輸入需要更新記錄的姓氏:";
	cin.get(searchStr,20);
	cin.ignore(20,'\n');
	while((current != NULL) && (strcmp(current->lastName, searchStr) != 0))
	{
		current = current->next;
	}
	if(current != NULL)
	{
		cout << "匹配的記錄:\n";
		cout << current->lastName << ' ' << current->firstName << ' ';
		cout << current->phoneNum << ' ' << current->mobile << endl;
		cout << "請(qǐng)您輸入新的記錄信息...\n";
		cout << "姓氏: ";
		cin.get(current->lastName,20);
		cin.ignore(20,'\n');
		cout << "名字: ";
		cin.get(current->firstName,15);
		cin.ignore(20,'\n');
		cout << "電話號(hào)碼: ";
		cin.get(current->phoneNum,15);
		cin.ignore(20,'\n');
		cout << "手機(jī)號(hào)碼:";
		cin.get(current->mobile,15);
		cin.ignore(20,'\n');

		cout << "更新成功!!\n";
		cout << "Press Enter to Contiune\n";
		cin.get(pause);
		system("cls");
	}
	else
	{
		cout << "沒有指定要更新的記錄!!\n";
		cout << "Press Enter to Contiune\n";
		cin.get(pause);
		system("cls");
	}
}


//	刪除一條記錄
void deleteRecord()
{
	system("cls");
	char searchStr[20];
	record *previous;
	previous = NULL;
	current = head;
	cin.ignore(20,'\n');
	cout << "請(qǐng)輸入需要?jiǎng)h除的記錄的姓氏: ";
	cin.get(searchStr,20);
	cin.ignore(20,'\n');
	while((current != NULL) && (strcmp(current->lastName, searchStr) != 0))
	{
		previous = current;
		current = current->next;
	}
	if(current != NULL)
	{
		cout << "\n匹配記錄\n";
		cout << current->firstName << ' ' << current->lastName << endl;
		cout << current->phoneNum << ' ' << current->mobile << endl;
		if(verifyDelete())
		{
			deleteNode(previous);
			cout << "\n記錄刪除成功!!\n";
		}
		else
		{
			cout << "\n記錄刪除失敗!!\n";
		}
	}
	else
	{
		cout << "\n沒有匹配記錄,刪除失敗!!\n";
	}
	system("cls");
}


//	清空電話簿
void deleteAll()
{
	if(verifyDelete())
	{
		deleteList();
		cout << "\n記錄刪除成功!!\n";
	}
	else
	{
		cout << "\n記錄刪除失敗!!\n";
	}
	system("cls");
}


//	幫助
void help()
{
help:
	int question;
	system("cls");
	cout << "Help...\n";
	cout << "**************************************************************\n";
	cout << "	請(qǐng)選擇幫助的主題:\n";
	cout << "	 1: 我的記錄怎么了?\n";
	cout << "	 2: 我怎么樣清除所有記錄?\n";
	cout << "	 3: 怎么進(jìn)行操作?\n";
	cout << "	 4: 怎么聯(lián)系我?\n";
	cout << "	 5: 退出\n";
	cout << "**************************************************************\n";
	cout << "選擇: ";
	cin >>  question;
	switch(question)
	{
	case 1:
		cout << "\n建議:\n";
		cout << "  檢查電話簿文件路徑是否正確,\n";
		cout << "  檢查文件名是否正確.\n";
		cout << "Press Enter to continue \n";
		cin.get(pause);
		cin.ignore(1,pause);
		system("cls");
		goto help;
		break;
	case 2:
		cout << "\n建議:\n";
		cout << "  返回主菜單,選擇清空電話簿,或者直接刪除文件PhoneBook.dat.\n";
		cout << "Press Enter to contiune\n";
		cin.get(pause);
		cin.ignore(1,pause);
		system("cls");
		goto help;
		break;
	case 3:
		cout << "\n建議:\n";
		cout << "  直接選擇主菜單各個(gè)功能號(hào)就OK.\n";
		cout << "Press Enter to contiune\n";
		cin.get(pause);
		cin.ignore(1,pause);
		system("cls");
		goto help;
		break;
	case 4:
		cout << "\n回答:\n";
		cout << "  我的電話:025-85047627\n";
		cout << "  我的地址:東大浦口校區(qū)090021信箱\n";
		cout << "  我的E-mail: \n";
		cout << "    straydog@126.com\n";
		cout << "    guopp126@126.com\n";
		cout << "Press Enter to contiune\n";
		cin.get(pause);
		cin.ignore(1,pause);
		system("cls");
		goto help;
		break;
	default:
		cout << "Press Enter To exit";
		cout << "Press Enter to contiune\n";
		break;
	}
}


//	用戶操作確認(rèn)
int verifyDelete()
{
	char YesNo;
	cout << "\nAre you sure (Y/N) ";
	cin >> YesNo;
	if((YesNo == 'Y') || (YesNo == 'y'))
	{
		return(1);
	}
	else
	{
		return(0);
	}
}


//	刪除結(jié)點(diǎn)
void deleteNode(record *previous)
{
	if(current == head)
	{
		deleteHead();
	}
	else
	{
		if(current->next == NULL)
		{
			deleteEnd(previous);
		}
		else
		{
			deleteMiddle(previous);
		}
	}
}


//	刪除頭結(jié)點(diǎn)
void deleteHead()
{
	current = head;
	if(head->next != NULL)
	{
		head = current->next;
	}
	else
	{
		head = NULL;
	}
	delete current;
}


//	刪除尾結(jié)點(diǎn)
void deleteEnd(record *previous)
{
	delete current;
	previous->next = NULL;
	current = head;
}


//	刪除鏈表中間結(jié)點(diǎn)
void deleteMiddle(record *previous)
{
	previous->next = current->next;
	delete current;
	current = head;
}


//	刪除鏈表
void deleteList()
{
	record *temp;
	current = head;
	do
	{
		temp = current->next;
		delete current;
		current = temp;
	}
	while(temp != NULL);
	head = NULL;
}


//	把鏈表信息寫入文件存盤
void wiriteToFile()
{
	ofstream outfile;
	outfile.open("PhoneBook.dat",ios::out);
	if (outfile)
	{
		current = head;
		if(head != NULL)
		{
			do
			{
				outfile << current->lastName << endl;
				outfile << current->firstName << endl;
				outfile << current->phoneNum << endl;
				outfile << current->mobile << endl;
				current = current->next;
			}
			while(current != NULL);
		}
		outfile << "End" << endl;
		outfile.close();
	}
	else
	{
		cout << "打開文件錯(cuò)誤!!\n";
	}
}


//	從數(shù)據(jù)文件PhoneBook.dat中讀取數(shù)據(jù)重建鏈表處理函數(shù)
void loadFromFile()
{
	record *newRecord;
	ifstream infile;
	int loop = 0;
	infile.open("PhoneBook.dat",ios::in);
	if (infile)
	{
		do
		{
			newRecord = new record;
			if(newRecord != NULL)
			{
				infile.get(newRecord->lastName,20);
				infile.ignore(20,'\n');
				if((strcmp(newRecord->lastName, "") != 0) && (strcmp(newRecord->lastName, "End") != 0))
				{
					infile.get(newRecord->firstName, 15);
					infile.ignore(20,'\n');
					infile.get(newRecord->phoneNum, 15);
					infile.ignore(20,'\n');
					infile.get(newRecord->mobile, 15);
					insertNode(newRecord);
				}
				else
				{
					delete newRecord;
					loop = 1;
				}
			}
			else
			{
				cout << "警告: 存儲(chǔ)器錯(cuò)誤, 從磁盤加載文件失敗!!\n";
				loop = 1;
			}
		}
		while(loop == 0);
		infile.close();
	}
	else
	{
		cout << "電話簿為空!!\n";
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线不卡一卡二卡三卡四卡| 在线免费观看日韩欧美| 国产成人av影院| 成人午夜视频福利| 91美女片黄在线观看91美女| 欧美日韩一本到| 国产亚洲综合在线| 亚洲最大色网站| 免费在线观看一区| 成年人国产精品| 91麻豆精品国产自产在线观看一区| 精品少妇一区二区三区| 中文字幕日韩精品一区| 国内国产精品久久| 色狠狠一区二区| 国产网红主播福利一区二区| 一区二区三区不卡视频| 国产成人av电影在线观看| 欧美最猛黑人xxxxx猛交| 欧美国产1区2区| 久久电影国产免费久久电影| 色哟哟亚洲精品| 欧美极品aⅴ影院| 老司机精品视频在线| 色呦呦网站一区| **网站欧美大片在线观看| 国产一区二区精品在线观看| 欧美日高清视频| 亚洲综合在线第一页| 成人国产免费视频| 久久精品人人爽人人爽| 免费成人你懂的| 欧美一区二区三区公司| 亚洲mv大片欧洲mv大片精品| 日本道免费精品一区二区三区| 国产午夜精品在线观看| 国产麻豆精品在线| 久久精品日韩一区二区三区| 狠狠色综合日日| 久久免费美女视频| 成人性生交大片免费| 国产精品天天摸av网| 成人激情电影免费在线观看| 国产精品免费人成网站| av电影在线观看不卡| 国产精品久久久久久久久免费相片| 国产成人午夜高潮毛片| 国产欧美一区二区精品秋霞影院| 国产成人av网站| 亚洲色图第一区| 欧美日韩性生活| 蜜桃视频一区二区| 久久久久97国产精华液好用吗| 国产乱码字幕精品高清av| 国产欧美日韩在线| 色天使色偷偷av一区二区| 日韩成人精品在线观看| 国产日韩欧美麻豆| 91麻豆自制传媒国产之光| 五月天中文字幕一区二区| 日韩久久久精品| k8久久久一区二区三区| 日韩综合在线视频| 欧美国产激情一区二区三区蜜月 | 伊人婷婷欧美激情| 69p69国产精品| 97精品国产97久久久久久久久久久久| 亚洲一区二区欧美日韩| 国产午夜精品福利| 欧美高清一级片在线| 成人精品亚洲人成在线| 日日夜夜精品视频免费 | 亚洲h动漫在线| 中文乱码免费一区二区| 欧美一区三区二区| 色诱视频网站一区| 成人免费毛片高清视频| 美腿丝袜亚洲色图| 亚洲精品国产视频| 国产精品日韩精品欧美在线 | 国产欧美一区二区精品性色 | 日韩欧美自拍偷拍| 欧美午夜电影一区| 91亚洲精品久久久蜜桃网站| 韩国理伦片一区二区三区在线播放| 亚洲v中文字幕| 亚洲一级在线观看| 亚洲福利一区二区| 亚洲一区二区黄色| 亚洲一区中文日韩| 亚洲免费三区一区二区| 亚洲色图色小说| 亚洲精品中文在线影院| 国产精品久久99| 亚洲精品国久久99热| 尤物在线观看一区| 午夜精品久久久久影视| 亚洲一区二区三区视频在线| 亚洲国产综合色| 性感美女久久精品| 美女网站在线免费欧美精品| 日韩一区欧美二区| 麻豆一区二区三| 国产成人av电影在线观看| 国产.精品.日韩.另类.中文.在线.播放| 狠狠狠色丁香婷婷综合激情| 国产一区久久久| 99re在线精品| 欧美一区在线视频| 亚洲国产激情av| 亚洲风情在线资源站| 精品无码三级在线观看视频| 高清成人在线观看| 欧洲精品在线观看| 日韩精品中文字幕在线不卡尤物| 久久丝袜美腿综合| 亚洲韩国精品一区| 国产成人在线视频免费播放| 91老师片黄在线观看| 日韩一区二区麻豆国产| 国产日韩精品一区二区三区在线| 亚洲乱码国产乱码精品精可以看| 日韩激情视频网站| 99这里都是精品| 欧美不卡视频一区| 亚洲图片有声小说| www.成人网.com| 久久九九99视频| 免费成人在线观看视频| 91国产丝袜在线播放| 国产精品美女久久福利网站| 美腿丝袜亚洲一区| 日本丶国产丶欧美色综合| 欧美激情综合在线| 精品一区二区三区在线播放视频| 欧美三级乱人伦电影| 中文字幕在线一区二区三区| 国产麻豆精品theporn| 日韩午夜在线观看| 男女视频一区二区| 91精品国产色综合久久不卡蜜臀 | 蜜臀久久久久久久| 欧美精品乱码久久久久久按摩| 一区二区三区免费网站| 99久久夜色精品国产网站| 中文无字幕一区二区三区| 激情综合色综合久久| 精品国产三级电影在线观看| 日本欧美久久久久免费播放网| 欧美午夜精品电影| 午夜精品在线视频一区| 欧美卡1卡2卡| 久久av资源站| 久久综合色婷婷| 国产精品中文字幕日韩精品| 国产日韩亚洲欧美综合| 成人国产一区二区三区精品| 亚洲人吸女人奶水| 欧美日韩成人激情| 美脚の诱脚舐め脚责91| 国产欧美一二三区| 91国偷自产一区二区三区成为亚洲经典 | 日本一道高清亚洲日美韩| 欧美色图在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美久久一区二区| 久久精品国产澳门| 国产精品第13页| 91精品欧美久久久久久动漫| 黑人精品欧美一区二区蜜桃| 日韩一区欧美小说| 欧美一区二区福利视频| av网站一区二区三区| 水蜜桃久久夜色精品一区的特点| 久久综合色婷婷| 欧美日韩情趣电影| 东方欧美亚洲色图在线| 婷婷国产v国产偷v亚洲高清| 欧美高清在线一区| 日韩丝袜情趣美女图片| 91极品美女在线| 国产乱码精品一区二区三| 亚洲成在人线在线播放| 国产精品久久久久婷婷二区次| 欧美欧美午夜aⅴ在线观看| 国产99久久久国产精品免费看| 日韩va亚洲va欧美va久久| 综合精品久久久| 国产精品入口麻豆原神| 26uuu色噜噜精品一区| 91精品视频网| 欧美日韩国产123区| 成人午夜在线播放| 免播放器亚洲一区| 日本免费新一区视频| 亚洲一区二区三区影院| 国产精品福利一区| 国产精品久久一卡二卡| 欧美经典三级视频一区二区三区| 日韩午夜在线影院|