通讯录管理系统---C++

通讯录管理系统



内容

// 添加联系人(姓名,性别,年龄,联系电话,家庭住址)
// 显示联系人
// 删除联系人
// 查找联系人
// 修改联系人
// 清空联系人
// 退出通讯录


提示:以下是本篇文章正文内容,下面案例可供参考

一、代码

1.头文件

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<fstream>

#define _FILE "person.txt"

using namespace std;

2.类

class Person
{
public:
	// 属性

	// 姓名
	string m_name;

	// 性别
	string m_sex;

	// 年龄
	int m_age;

	// 联系方式
	int m_phone_number;

	// 家庭住址
	string m_address;

};

3.函数声明

// 添加联系人
void add_person();

// 显示联系人
void show_person();

// 显示联系人_01
void show_person_01();

// 删除联系人
void delete_person();

// 查找联系人
void find_person();

// 修改联系人
void modification_person();

// 清空联系人
void clear_person();

4.主函数入口

int main()
{
	// 初始化用户选择
	int select = 0;

	// 开启大循环
	while (true)
	{
		cout << "\t\t   ---------------------通讯录管理系统---------------------" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                    1、添加联系人                     |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                    2、显示联系人                     |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                    3、删除联系人                     |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                    4、查找联系人                     |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                    5、修改联系人                     |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                    6、清空联系人                     |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                    0、退出                           |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   --------------------------------------------------------" << endl;

		cout << "请输入您的选择:" << endl;


		

		// 接受用户选择
		cin >> select;

		// 根据用户选择不同进入不同的方向
		switch (select)
		{
		case 1:  // 添加联系人(姓名,性别,年龄,联系电话,家庭住址)
			add_person();
			break;
		case 2:        // 显示联系人
			show_person();
			break;
		case 3:        // 删除联系人
			show_person_01();
			delete_person();
			break;
		case 4:        // 查找联系人
			find_person();
			break;
		case 5:        // 修改联系人
			show_person_01();
			modification_person();
			break;
		case 6:        // 清空联系人
			clear_person();
			break;
		case 0:        // 退出通讯录
			system("cls");
			cout << "确定要退出通讯录吗?" << endl;
			cout << "1、确定" << endl;
			cout << "2、否定" << endl;

			// 初始化用户选择
			int choice = 0;

			// 接收用户选择
			while (true)
			{
				cin >> choice;
				if (choice == 1)
				{
					cout << "欢迎您下一次使用,再见!" << endl;

					// 清屏操作
					system("pause");
					system("cls");

					exit(0);
				}
				else if (choice == 2)
				{
					// 清屏操作
					system("cls");
					break;

				}
				else
				{
					cout << "输入有误,请重新输入!" << endl;
				}

			}
			break;
		}




	}

	return 0;
}

5.添加联系人

// 添加联系人
void add_person()
{
	system("cls");
	cout << "请输入要存储人员数量:" << endl;

	// 创建一个容器用于接受人员
	vector<Person>v;

	// 初始化用户选择
	int select = 0;
	while (true)
	{
		// 接受用户选择
		cin >> select;

		if (select >= 1)
		{
			break;
		}
		else
		{
			cout << "输入有误,请重新输入!" << endl;
		}
	}

	// 定义名字
	string name;

	// 定义性别
	string sex;

	// 定义年龄
	int age;

	// 定义联系方式
	int phone_num;

	// 定义家庭住址
	string address;

	 规定v的大小
	//v.resize(select);

	for (int i = 0; i < select; i++)
	{
		cout << "-----------------------" << endl;
		cout << "请输入第" << i + 1 << "名人员信息:" << endl;

		// 录入姓名
		cout << "请输入姓名:" << endl;
		cin >> name;

		// 录入性别
		cout << "请输入性别:" << endl;
		cin >> sex;

		// 录入年龄
		cout << "请输入年龄:" << endl;
		cin >> age;

		// 录入联系方式
		cout << "请输入联系方式:" << endl;
		cin >> phone_num;

		// 录入家庭地址
		cout << "请输入家庭地址:" << endl;
		cin >> address;

		// 创建对象
		Person p;
		p.m_name = name;
		p.m_sex = sex;
		p.m_age = age;
		p.m_phone_number = phone_num;
		p.m_address = address;
		

		// 把类放到容器里面
		// vector的容量

		v.push_back(p);

	}



	// 把容器里的数据存放到文件中

	ofstream ofs;
	ofs.open(_FILE, ios::in | ios::app);

	for (vector<Person>::iterator it = v.begin(); it != v.end(); it++)
	{
		ofs << it->m_name << "    ";
		ofs << it->m_sex << "    ";
		ofs << it->m_age << "    ";
		ofs << it->m_phone_number << "    ";
		ofs << it->m_address << endl;
	}

	cout << "恭喜你,录入成功:" << endl;

	// 清空容器
	v.erase(v.begin(), v.end());
	ofs.close();

	// 清屏操作
	system("pause");
	system("cls");

	return;

}

6.显示联系人

// 显示联系人
void show_person()
{
	system("cls");
	ifstream ifs;
	ifs.open(_FILE, ios::in);

	if (!ifs.is_open())
	{
		cout << "文件打开失败!" << endl;
		// 清屏操作
		system("pause");
		system("cls");
		return;
	}
	

	// 判断是否为空
	char c;
	
	if (ifs.eof())
	{
		cout << "文件为空!" << endl;
		ifs.close();
		// 清屏操作
		system("pause");
		system("cls");
		return;
		
	}

	// 定义名字
	string name;

	// 定义性别
	string sex;

	// 定义年龄
	int age;

	// 定义联系方式
	int phone_num;

	// 定义家庭住址
	string address;

	// 读入信息从文件中
	while (ifs >> name && ifs >> sex && ifs >> age &&
		ifs >> phone_num && ifs >> address)
	{
		cout << "姓名:" << name << "    ";
		cout << "性别:" << sex << "    ";
		cout << "年龄:" << age << "    ";
		cout << "联系方式:" << phone_num << "    ";
		cout << "家庭住址:" << address << endl;
	}

	ifs.close();

	// 清屏操作
	system("pause");
	system("cls");

	return;

}

7.显示联系人01(目的:删除或修改之前全部查看一遍)

// 显示联系人_01
void show_person_01()
{
	system("cls");
	ifstream ifs;
	ifs.open(_FILE, ios::in);

	if (!ifs.is_open())
	{
		cout << "文件打开失败!" << endl;
		// 清屏操作
		system("pause");
		system("cls");
		return;
	}


	// 判断是否为空
	char c;
	if (ifs.eof())
	{
		cout << "文件为空!" << endl;
		ifs.close();
		// 清屏操作
		system("pause");
		system("cls");
		return;

	}

	// 定义名字
	string name;

	// 定义性别
	string sex;

	// 定义年龄
	int age;

	// 定义联系方式
	int phone_num;

	// 定义家庭住址
	string address;

	// 读入信息从文件中
	while (ifs >> name && ifs >> sex && ifs >> age &&
		ifs >> phone_num && ifs >> address)
	{
		cout << "姓名:" << name << "    ";
		cout << "性别:" << sex << "    ";
		cout << "年龄:" << age << "    ";
		cout << "联系方式:" << phone_num << "    ";
		cout << "家庭住址:" << address << endl;
	}

	ifs.close();

}

8.删除联系人

// 删除联系人
void delete_person()
{
	
	fstream fs;
	fs.open(_FILE, ios::in);

	if (!fs.is_open())
	{
		cout << "文件打开失败!" << endl;
		// 清屏操作
		system("pause");
		system("cls");
		return;
	}


	// 判断是否为空
	char c;
	if (fs.eof())
	{
		cout << "文件为空!" << endl;
		fs.close();
		// 清屏操作
		system("pause");
		system("cls");
		return;

	}

	// 定义名字
	string name;

	// 定义性别
	string sex;

	// 定义年龄
	int age;

	// 定义联系方式
	int phone_num;

	// 定义家庭住址
	string address;

	// 创建一个对象接受信息
	Person p;

	// 创建一个接受容器
	vector<Person>v1;

	// 读入信息从文件中
	while (fs >> name && fs >> sex && fs >> age &&
		fs >> phone_num && fs >> address)
	{
		p.m_name = name;
		p.m_sex = sex;
		p.m_age = age;
		p.m_phone_number = phone_num;
		p.m_address = address;
		v1.push_back(p);


	}

	/*for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		cout << it->m_name << endl;
	}*/


	 选择查询方式
	//int select = 0;

	cout << "请选择您要删除人的姓名:" << endl;
	string delete_name;

	// 读入名字
	cin >> delete_name;


	for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		if ((it->m_name) == delete_name)
		{
			v1.erase(it);
			cout << "删除成功!" << endl;
			break;
		}
		
	}


	fs.close();

	// 清空文件并重新录入

	fs.open(_FILE, ios::trunc);
	fs.close();

	fs.open(_FILE, ios::out);
	for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		fs << it->m_name << "    ";
		fs << it->m_sex << "    ";
		fs << it->m_age << "    ";
		fs << it->m_phone_number << "    ";
		fs << it->m_address << endl;
	}
	fs.close();

	// 清屏操作
	system("pause");
	system("cls");

}

9.查找联系人

// 查找联系人
void find_person()
{
	system("cls");
	ifstream ifs;
	ifs.open(_FILE, ios::in);

	if (!ifs.is_open())
	{
		cout << "文件打开失败!" << endl;
		// 清屏操作
		system("pause");
		system("cls");
		return;
	}


	// 判断是否为空
	char c;

	if (ifs.eof())
	{
		cout << "文件为空!" << endl;
		ifs.close();
		// 清屏操作
		system("pause");
		system("cls");
		return;

	}

	// 定义名字
	string name;

	// 定义性别
	string sex;

	// 定义年龄
	int age;

	// 定义联系方式
	int phone_num;

	// 定义家庭住址
	string address;

	// 创建一个对象接受信息
	Person p;

	// 创建一个接受容器
	vector<Person>v1;

	// 读入信息从文件中
	while (ifs >> name && ifs >> sex && ifs >> age &&
		ifs >> phone_num && ifs >> address)
	{
		p.m_name = name;
		p.m_sex = sex;
		p.m_age = age;
		p.m_phone_number = phone_num;
		p.m_address = address;
		v1.push_back(p);


	}

	// 请选择查找方式
	int select = 0;

	cout << "请选择查找方式:" << endl;
	cout << "1、姓名" << endl;
	cout << "2、联系方式" << endl;

	

	while (true)
	{
		cin >> select;


		if (select == 1)
		{
			string find_name;


			cout << "请输入要查找的姓名:" << endl;
			cin >> find_name;

			for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
			{
				if ((it->m_name) == find_name)
				{
					cout << "已找到!信息如下:" << endl;
					cout << "姓名:" << it->m_name << "    ";
					cout << "性别:" << it->m_sex << "    ";
					cout << "年龄:" << it->m_age << "    ";
					cout << "联系方式:" << it->m_phone_number << "    ";
					cout << "家庭住址:" << it->m_address << endl;
					// 清屏操作
					system("pause");
					system("cls");
					return;
				}

			}
			cout << "查无此人!" << endl;
			// 清屏操作
			system("pause");
			system("cls");
			return;

		}
		else if (select == 2)
		{
			int find_phone_num;

			cout << "请输入要查找的联系方式:" << endl;
			cin >> find_phone_num;

			for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
			{
				if ((it->m_phone_number) == find_phone_num)
				{
					cout << "已找到!信息如下:" << endl;
					cout << "姓名:" << it->m_name << "    ";
					cout << "性别:" << it->m_sex << "    ";
					cout << "年龄:" << it->m_age << "    ";
					cout << "联系方式:" << it->m_phone_number << "    ";
					cout << "家庭住址:" << it->m_address << endl;
					// 清屏操作
					system("pause");
					system("cls");
					return;
				}

			}
			cout << "查无此人!" << endl;
			// 清屏操作
			system("pause");
			system("cls");
			return;

		}
		else
		{
			cout << "输入有误,请重新输入!" << endl;
		}


	}
	
	ifs.close();

	// 清屏操作
	system("pause");
	system("cls");

	return;


}

10.修改联系人

// 修改联系人
void modification_person()
{

	fstream fs;
	fs.open(_FILE, ios::in);

	if (!fs.is_open())
	{
		cout << "文件打开失败!" << endl;
		// 清屏操作
		system("pause");
		system("cls");
		return;
	}


	// 判断是否为空
	char c;
	if (fs.eof())
	{
		cout << "文件为空!" << endl;
		fs.close();
		// 清屏操作
		system("pause");
		system("cls");
		return;

	}

	// 定义名字
	string name;

	// 定义性别
	string sex;

	// 定义年龄
	int age;

	// 定义联系方式
	int phone_num;

	// 定义家庭住址
	string address;

	// 创建一个对象接受信息
	Person p;

	// 创建一个接受容器
	vector<Person>v1;

	// 读入信息从文件中
	while (fs >> name && fs >> sex && fs >> age &&
		fs >> phone_num && fs >> address)
	{
		p.m_name = name;
		p.m_sex = sex;
		p.m_age = age;
		p.m_phone_number = phone_num;
		p.m_address = address;
		v1.push_back(p);


	}

	/*for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		cout << it->m_name << endl;
	}*/


	 选择查询方式
	//int select = 0;

	cout << "请选择您要修改人的姓名:" << endl;
	string modification_name;

	// 读入名字
	cin >> modification_name;


	for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		if ((it->m_name) == modification_name)
		{
			
			cout << "-----------------------" << endl;
			cout << "请输入新人员信息:" << endl;

			// 录入姓名
			cout << "请输入姓名:" << endl;
			cin >> it->m_name;

			// 录入性别
			cout << "请输入性别:" << endl;
			cin >> it->m_sex;

			// 录入年龄
			cout << "请输入年龄:" << endl;
			cin >> it->m_age;

			// 录入联系方式
			cout << "请输入联系方式:" << endl;
			cin >> it->m_phone_number;

			// 录入家庭地址
			cout << "请输入家庭地址:" << endl;
			cin >> it->m_address;

			cout << "修改成功!" << endl;

			/*cout << it->m_name << it->m_sex << it->m_age 
			<< it->m_phone_number << it->m_address << endl;*/
			

		}
		
	}
	/*for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		cout << it->m_name << it->m_sex << it->m_age
			<< it->m_phone_number << it->m_address << endl;
	}*/


	fs.close();

	// 清空文件并重新录入

	fs.open(_FILE, ios::trunc);
	fs.close();

	fs.open(_FILE, ios::out);
	for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		fs << it->m_name << "    ";
		fs << it->m_sex << "    ";
		fs << it->m_age << "    ";
		fs << it->m_phone_number << "    ";
		fs << it->m_address << endl;
	}
	fs.close();

	// 清屏操作
	system("pause");
	system("cls");
	return;

}

11.清空联系人

// 清空联系人
void clear_person()
{
	system("cls");
	cout << "确认是否清空联系人" << endl;
	cout << "1、确认" << endl;
	cout << "2、否认" << endl;


	int select = 0;

	while (true)
	{
		cin >> select;
		if (select == 1)
		{
			fstream fs;
			fs.open(_FILE, ios_base::out);
			cout << "清空成功!" << endl;
			fs.close();
			// 清屏操作
			system("pause");
			system("cls");
			return;


		}
		else if (select == 2)
		{
			system("cls");
			return;
		}
		else
		{
			cout << "输入有误,请重新输入!" << endl;
		}
	}

}

二、全部代码

// 添加联系人(姓名,性别,年龄,联系电话,家庭住址)
// 显示联系人
// 删除联系人
// 查找联系人
// 修改联系人
// 清空联系人
// 退出通讯录

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<fstream>

#define _FILE "person.txt"

using namespace std;

class Person
{
public:
	// 属性

	// 姓名
	string m_name;

	// 性别
	string m_sex;

	// 年龄
	int m_age;

	// 联系方式
	int m_phone_number;

	// 家庭住址
	string m_address;

};

// 添加联系人
void add_person();

// 显示联系人
void show_person();

// 显示联系人_01
void show_person_01();

// 删除联系人
void delete_person();

// 查找联系人
void find_person();

// 修改联系人
void modification_person();

// 清空联系人
void clear_person();


int main()
{
	// 初始化用户选择
	int select = 0;

	// 开启大循环
	while (true)
	{
		cout << "\t\t   ---------------------通讯录管理系统---------------------" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                    1、添加联系人                     |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                    2、显示联系人                     |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                    3、删除联系人                     |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                    4、查找联系人                     |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                    5、修改联系人                     |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                    6、清空联系人                     |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                    0、退出                           |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   |                                                      |" << endl;
		cout << "\t\t   --------------------------------------------------------" << endl;

		cout << "请输入您的选择:" << endl;


		

		// 接受用户选择
		cin >> select;

		// 根据用户选择不同进入不同的方向
		switch (select)
		{
		case 1:  // 添加联系人(姓名,性别,年龄,联系电话,家庭住址)
			add_person();
			break;
		case 2:        // 显示联系人
			show_person();
			break;
		case 3:        // 删除联系人
			show_person_01();
			delete_person();
			break;
		case 4:        // 查找联系人
			find_person();
			break;
		case 5:        // 修改联系人
			show_person_01();
			modification_person();
			break;
		case 6:        // 清空联系人
			clear_person();
			break;
		case 0:        // 退出通讯录
			system("cls");
			cout << "确定要退出通讯录吗?" << endl;
			cout << "1、确定" << endl;
			cout << "2、否定" << endl;

			// 初始化用户选择
			int choice = 0;

			// 接收用户选择
			while (true)
			{
				cin >> choice;
				if (choice == 1)
				{
					cout << "欢迎您下一次使用,再见!" << endl;

					// 清屏操作
					system("pause");
					system("cls");

					exit(0);
				}
				else if (choice == 2)
				{
					// 清屏操作
					system("cls");
					break;

				}
				else
				{
					cout << "输入有误,请重新输入!" << endl;
				}

			}
			break;
		}




	}

	return 0;
}



// 添加联系人
void add_person()
{
	system("cls");
	cout << "请输入要存储人员数量:" << endl;

	// 创建一个容器用于接受人员
	vector<Person>v;

	// 初始化用户选择
	int select = 0;
	while (true)
	{
		// 接受用户选择
		cin >> select;

		if (select >= 1)
		{
			break;
		}
		else
		{
			cout << "输入有误,请重新输入!" << endl;
		}
	}

	// 定义名字
	string name;

	// 定义性别
	string sex;

	// 定义年龄
	int age;

	// 定义联系方式
	int phone_num;

	// 定义家庭住址
	string address;

	 规定v的大小
	//v.resize(select);

	for (int i = 0; i < select; i++)
	{
		cout << "-----------------------" << endl;
		cout << "请输入第" << i + 1 << "名人员信息:" << endl;

		// 录入姓名
		cout << "请输入姓名:" << endl;
		cin >> name;

		// 录入性别
		cout << "请输入性别:" << endl;
		cin >> sex;

		// 录入年龄
		cout << "请输入年龄:" << endl;
		cin >> age;

		// 录入联系方式
		cout << "请输入联系方式:" << endl;
		cin >> phone_num;

		// 录入家庭地址
		cout << "请输入家庭地址:" << endl;
		cin >> address;

		// 创建对象
		Person p;
		p.m_name = name;
		p.m_sex = sex;
		p.m_age = age;
		p.m_phone_number = phone_num;
		p.m_address = address;
		

		// 把类放到容器里面
		// vector的容量

		v.push_back(p);

	}



	// 把容器里的数据存放到文件中

	ofstream ofs;
	ofs.open(_FILE, ios::in | ios::app);

	for (vector<Person>::iterator it = v.begin(); it != v.end(); it++)
	{
		ofs << it->m_name << "    ";
		ofs << it->m_sex << "    ";
		ofs << it->m_age << "    ";
		ofs << it->m_phone_number << "    ";
		ofs << it->m_address << endl;
	}

	cout << "恭喜你,录入成功:" << endl;

	// 清空容器
	v.erase(v.begin(), v.end());
	ofs.close();

	// 清屏操作
	system("pause");
	system("cls");

	return;

}

// 显示联系人
void show_person()
{
	system("cls");
	ifstream ifs;
	ifs.open(_FILE, ios::in);

	if (!ifs.is_open())
	{
		cout << "文件打开失败!" << endl;
		// 清屏操作
		system("pause");
		system("cls");
		return;
	}
	

	// 判断是否为空
	char c;
	
	if (ifs.eof())
	{
		cout << "文件为空!" << endl;
		ifs.close();
		// 清屏操作
		system("pause");
		system("cls");
		return;
		
	}

	// 定义名字
	string name;

	// 定义性别
	string sex;

	// 定义年龄
	int age;

	// 定义联系方式
	int phone_num;

	// 定义家庭住址
	string address;

	// 读入信息从文件中
	while (ifs >> name && ifs >> sex && ifs >> age &&
		ifs >> phone_num && ifs >> address)
	{
		cout << "姓名:" << name << "    ";
		cout << "性别:" << sex << "    ";
		cout << "年龄:" << age << "    ";
		cout << "联系方式:" << phone_num << "    ";
		cout << "家庭住址:" << address << endl;
	}

	ifs.close();

	// 清屏操作
	system("pause");
	system("cls");

	return;

}

// 显示联系人_01
void show_person_01()
{
	system("cls");
	ifstream ifs;
	ifs.open(_FILE, ios::in);

	if (!ifs.is_open())
	{
		cout << "文件打开失败!" << endl;
		// 清屏操作
		system("pause");
		system("cls");
		return;
	}


	// 判断是否为空
	char c;
	if (ifs.eof())
	{
		cout << "文件为空!" << endl;
		ifs.close();
		// 清屏操作
		system("pause");
		system("cls");
		return;

	}

	// 定义名字
	string name;

	// 定义性别
	string sex;

	// 定义年龄
	int age;

	// 定义联系方式
	int phone_num;

	// 定义家庭住址
	string address;

	// 读入信息从文件中
	while (ifs >> name && ifs >> sex && ifs >> age &&
		ifs >> phone_num && ifs >> address)
	{
		cout << "姓名:" << name << "    ";
		cout << "性别:" << sex << "    ";
		cout << "年龄:" << age << "    ";
		cout << "联系方式:" << phone_num << "    ";
		cout << "家庭住址:" << address << endl;
	}

	ifs.close();

}


// 删除联系人
void delete_person()
{
	
	fstream fs;
	fs.open(_FILE, ios::in);

	if (!fs.is_open())
	{
		cout << "文件打开失败!" << endl;
		// 清屏操作
		system("pause");
		system("cls");
		return;
	}


	// 判断是否为空
	char c;
	if (fs.eof())
	{
		cout << "文件为空!" << endl;
		fs.close();
		// 清屏操作
		system("pause");
		system("cls");
		return;

	}

	// 定义名字
	string name;

	// 定义性别
	string sex;

	// 定义年龄
	int age;

	// 定义联系方式
	int phone_num;

	// 定义家庭住址
	string address;

	// 创建一个对象接受信息
	Person p;

	// 创建一个接受容器
	vector<Person>v1;

	// 读入信息从文件中
	while (fs >> name && fs >> sex && fs >> age &&
		fs >> phone_num && fs >> address)
	{
		p.m_name = name;
		p.m_sex = sex;
		p.m_age = age;
		p.m_phone_number = phone_num;
		p.m_address = address;
		v1.push_back(p);


	}

	/*for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		cout << it->m_name << endl;
	}*/


	 选择查询方式
	//int select = 0;

	cout << "请选择您要删除人的姓名:" << endl;
	string delete_name;

	// 读入名字
	cin >> delete_name;


	for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		if ((it->m_name) == delete_name)
		{
			v1.erase(it);
			cout << "删除成功!" << endl;
			break;
		}
		
	}


	fs.close();

	// 清空文件并重新录入

	fs.open(_FILE, ios::trunc);
	fs.close();

	fs.open(_FILE, ios::out);
	for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		fs << it->m_name << "    ";
		fs << it->m_sex << "    ";
		fs << it->m_age << "    ";
		fs << it->m_phone_number << "    ";
		fs << it->m_address << endl;
	}
	fs.close();

	// 清屏操作
	system("pause");
	system("cls");

}

// 查找联系人
void find_person()
{
	system("cls");
	ifstream ifs;
	ifs.open(_FILE, ios::in);

	if (!ifs.is_open())
	{
		cout << "文件打开失败!" << endl;
		// 清屏操作
		system("pause");
		system("cls");
		return;
	}


	// 判断是否为空
	char c;

	if (ifs.eof())
	{
		cout << "文件为空!" << endl;
		ifs.close();
		// 清屏操作
		system("pause");
		system("cls");
		return;

	}

	// 定义名字
	string name;

	// 定义性别
	string sex;

	// 定义年龄
	int age;

	// 定义联系方式
	int phone_num;

	// 定义家庭住址
	string address;

	// 创建一个对象接受信息
	Person p;

	// 创建一个接受容器
	vector<Person>v1;

	// 读入信息从文件中
	while (ifs >> name && ifs >> sex && ifs >> age &&
		ifs >> phone_num && ifs >> address)
	{
		p.m_name = name;
		p.m_sex = sex;
		p.m_age = age;
		p.m_phone_number = phone_num;
		p.m_address = address;
		v1.push_back(p);


	}

	// 请选择查找方式
	int select = 0;

	cout << "请选择查找方式:" << endl;
	cout << "1、姓名" << endl;
	cout << "2、联系方式" << endl;

	

	while (true)
	{
		cin >> select;


		if (select == 1)
		{
			string find_name;


			cout << "请输入要查找的姓名:" << endl;
			cin >> find_name;

			for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
			{
				if ((it->m_name) == find_name)
				{
					cout << "已找到!信息如下:" << endl;
					cout << "姓名:" << it->m_name << "    ";
					cout << "性别:" << it->m_sex << "    ";
					cout << "年龄:" << it->m_age << "    ";
					cout << "联系方式:" << it->m_phone_number << "    ";
					cout << "家庭住址:" << it->m_address << endl;
					// 清屏操作
					system("pause");
					system("cls");
					return;
				}

			}
			cout << "查无此人!" << endl;
			// 清屏操作
			system("pause");
			system("cls");
			return;

		}
		else if (select == 2)
		{
			int find_phone_num;

			cout << "请输入要查找的联系方式:" << endl;
			cin >> find_phone_num;

			for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
			{
				if ((it->m_phone_number) == find_phone_num)
				{
					cout << "已找到!信息如下:" << endl;
					cout << "姓名:" << it->m_name << "    ";
					cout << "性别:" << it->m_sex << "    ";
					cout << "年龄:" << it->m_age << "    ";
					cout << "联系方式:" << it->m_phone_number << "    ";
					cout << "家庭住址:" << it->m_address << endl;
					// 清屏操作
					system("pause");
					system("cls");
					return;
				}

			}
			cout << "查无此人!" << endl;
			// 清屏操作
			system("pause");
			system("cls");
			return;

		}
		else
		{
			cout << "输入有误,请重新输入!" << endl;
		}


	}
	
	ifs.close();

	// 清屏操作
	system("pause");
	system("cls");

	return;


}

// 修改联系人
void modification_person()
{

	fstream fs;
	fs.open(_FILE, ios::in);

	if (!fs.is_open())
	{
		cout << "文件打开失败!" << endl;
		// 清屏操作
		system("pause");
		system("cls");
		return;
	}


	// 判断是否为空
	char c;
	if (fs.eof())
	{
		cout << "文件为空!" << endl;
		fs.close();
		// 清屏操作
		system("pause");
		system("cls");
		return;

	}

	// 定义名字
	string name;

	// 定义性别
	string sex;

	// 定义年龄
	int age;

	// 定义联系方式
	int phone_num;

	// 定义家庭住址
	string address;

	// 创建一个对象接受信息
	Person p;

	// 创建一个接受容器
	vector<Person>v1;

	// 读入信息从文件中
	while (fs >> name && fs >> sex && fs >> age &&
		fs >> phone_num && fs >> address)
	{
		p.m_name = name;
		p.m_sex = sex;
		p.m_age = age;
		p.m_phone_number = phone_num;
		p.m_address = address;
		v1.push_back(p);


	}

	/*for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		cout << it->m_name << endl;
	}*/


	 选择查询方式
	//int select = 0;

	cout << "请选择您要修改人的姓名:" << endl;
	string modification_name;

	// 读入名字
	cin >> modification_name;


	for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		if ((it->m_name) == modification_name)
		{
			
			cout << "-----------------------" << endl;
			cout << "请输入新人员信息:" << endl;

			// 录入姓名
			cout << "请输入姓名:" << endl;
			cin >> it->m_name;

			// 录入性别
			cout << "请输入性别:" << endl;
			cin >> it->m_sex;

			// 录入年龄
			cout << "请输入年龄:" << endl;
			cin >> it->m_age;

			// 录入联系方式
			cout << "请输入联系方式:" << endl;
			cin >> it->m_phone_number;

			// 录入家庭地址
			cout << "请输入家庭地址:" << endl;
			cin >> it->m_address;

			cout << "修改成功!" << endl;

			/*cout << it->m_name << it->m_sex << it->m_age 
			<< it->m_phone_number << it->m_address << endl;*/
			

		}
		
	}
	/*for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		cout << it->m_name << it->m_sex << it->m_age
			<< it->m_phone_number << it->m_address << endl;
	}*/


	fs.close();

	// 清空文件并重新录入

	fs.open(_FILE, ios::trunc);
	fs.close();

	fs.open(_FILE, ios::out);
	for (vector<Person>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		fs << it->m_name << "    ";
		fs << it->m_sex << "    ";
		fs << it->m_age << "    ";
		fs << it->m_phone_number << "    ";
		fs << it->m_address << endl;
	}
	fs.close();

	// 清屏操作
	system("pause");
	system("cls");
	return;

}

// 清空联系人
void clear_person()
{
	system("cls");
	cout << "确认是否清空联系人" << endl;
	cout << "1、确认" << endl;
	cout << "2、否认" << endl;


	int select = 0;

	while (true)
	{
		cin >> select;
		if (select == 1)
		{
			fstream fs;
			fs.open(_FILE, ios_base::out);
			cout << "清空成功!" << endl;
			fs.close();
			// 清屏操作
			system("pause");
			system("cls");
			return;


		}
		else if (select == 2)
		{
			system("cls");
			return;
		}
		else
		{
			cout << "输入有误,请重新输入!" << endl;
		}
	}

}

三、效果预览

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删除了张三
在这里插入图片描述
在这里插入图片描述
修改成功
在这里插入图片描述
清空成功

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值