IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 36 C++ 结构体-增删改查 实例 -> 正文阅读

[C++知识库]36 C++ 结构体-增删改查 实例

#include <iostream>
#include <string>
using namespace std;
#define Max 1000//最大人数

void showMenu() {
	cout << "**************************" << endl;
	cout << "*****  1、添加联系人  *****" << endl;
	cout << "*****  2、显示联系人  *****" << endl;
	cout << "*****  3、删除联系人  *****" << endl;
	cout << "*****  4、查找联系人  *****" << endl;
	cout << "*****  5、修改联系人  *****" << endl;
	cout << "*****  6、清空联系人  *****" << endl;
	cout << "*****  0、退出通讯录  *****" << endl;
	cout << "**************************" << endl;
}

// 联系人结构体
struct Person
{
	string name;
	int age;
	int sex;// 1男 2女
	string phone;
	string addr;
};

// 通信录结构体
struct AddressBooks
{
	Person personArray[Max]; // 通讯录保持的联系人数组
	int count; // 通讯录总条数

};

// 添加联系人
void addPerson(AddressBooks* addressBooks) {// 传入通讯录的地址
	//判断电话本是否满了
	if (addressBooks->count >= 1000) {
		cout << "通讯录以满,无法添加。" << endl;
		return;
	}
	else {
		// 输入姓名
		cout << "请输入姓名:" << endl;
		string name;
		cin >> name;
		addressBooks->personArray[addressBooks->count].name = name;

		// 输入性别
		while (true)
		{
			cout << "请输入性别:(1.男  2.女))" << endl;
			int sex;
			cin >> sex;
			if (sex == 1 || sex == 2) {
				addressBooks->personArray[addressBooks->count].sex = sex;
				break;
			}
			else
			{
				cout << "输入有误,请重新输入1(男)或2(女):" << endl;
			}
		}

		// 输入年龄
		while (true)
		{
			cout << "请输入年龄:" << endl;
			int age;
			cin >> age;
			if (age > 0 && age <= 200) {
				addressBooks->personArray[addressBooks->count].age = age;
				break;
			}
			else {
				cout << "请输入有效的年龄数:" << endl;
			}
		}

		// 输入联系电话
		while (true)
		{
			cout << "请输入联系电话:" << endl;
			string phone;
			cin >> phone;
			if (phone.size() == 11) {
				addressBooks->personArray[addressBooks->count].phone = phone;
				break;
			}
			else {
				cout << "请输入有效的11位电话号码:" << endl;
			}
		}

		// 输入联系地址

		cout << "请输入联系地址:" << endl;
		string addr;
		cin >> addr;
		addressBooks->personArray[addressBooks->count].addr = addr;

		addressBooks->count++;
		system("cls"); // 清屏
		cout << "--- 联系人已添加成功!---:" << endl;
		cout << endl;
	}
}

// 显示所有人的信息
void showPerson(AddressBooks* addressBooks) {
	if (addressBooks->count != 0) {
		for (int i = 0; i < addressBooks->count; i++)
		{
			cout << "姓名:" << addressBooks->personArray[i].name << "\t";
			cout << "年龄:" << addressBooks->personArray[i].age << "\t";
			cout << "性别:" << (addressBooks->personArray[i].sex == 1 ? "男" : "女") << "\t";
			cout << "电话:" << addressBooks->personArray[i].phone << "\t";
			cout << "地址:" << addressBooks->personArray[i].addr << endl;
		}
	}
	else
	{
		cout << "--- 通讯录为空 ---" << endl;
		cout << endl;

	}

}


// 查找联系人
int checkPerson(AddressBooks* addressBooks, string target_name) {
	// return: -1 没有该联系人 / 否则返回下标
	cout << "通讯录总条数:" << addressBooks->count << endl;
	for (int i = 0; i < addressBooks->count; i++)
	{
		if (addressBooks->personArray[i].name == target_name) {
			return i;
		}
	}
	return -1;
}

void deletePerson(AddressBooks* addressBooks) {
	// 通讯录中是否存在联系人
	while (true)
	{
		cout << "请输入要删除的联系人姓名:(按0退出)" << endl;
		string target_name;
		cin >> target_name;
		if (target_name != "0") {
			int result = checkPerson(addressBooks, target_name);
			if (result != -1) {
				for (int i = result; i < addressBooks->count; i++)
				{
					addressBooks->personArray[i] = addressBooks->personArray[i + 1];
				}
				addressBooks->count--;
				break;
			}
			else
			{
				cout << "查无此人,请重新输入:" << endl;
			}
		}
		else {
			system("cls");
			return;
		}
	}
}

void findPerson(AddressBooks * addressBooks) {

	while (true)
	{
		cout << "请输入要查找的联系人姓名:(按0退出)" << endl;
		string target_name;
		cin >> target_name;
		if (target_name != "0") {
			int result = checkPerson(addressBooks, target_name);
			if (result != -1) {
				cout << "姓名:" << addressBooks->personArray[result].name << "\t";
				cout << "年龄:" << addressBooks->personArray[result].age << "\t";
				cout << "性别:" << (addressBooks->personArray[result].sex == 1 ? "男" : "女") << "\t";
				cout << "电话:" << addressBooks->personArray[result].phone << "\t";
				cout << "地址:" << addressBooks->personArray[result].addr << endl;
				cout << endl;
			}
			else {
				cout << "查无此人,请重新输入:" << endl;
			}
		}
		else {
			system("cls"); // 清屏
			return;
		}

	}
}

// 修改通讯录
void modifyPerson(AddressBooks* addressBooks) {
	while (true)
	{
		cout << "请输入要修改的联系人姓名:(按0退出)" << endl;
		string target_name;
		cin >> target_name;
		if (target_name != "0") {
			int result = checkPerson(addressBooks, target_name);
			if (result != -1) {

				cout << endl;
				cout << "---  开始修改  ---" << endl;
				// 输入姓名
				cout << "请输入姓名:" << endl;
				string name;
				cin >> name;
				addressBooks->personArray[result].name = name;

				// 输入性别
				while (true)
				{
					cout << "请输入性别:(1.男  2.女))" << endl;
					int sex;
					cin >> sex;
					if (sex == 1 || sex == 2) {
						addressBooks->personArray[result].sex = sex;
						break;
					}
					else
					{
						cout << "输入有误,请重新输入1(男)或2(女):" << endl;
					}
				}


				// 输入年龄
				while (true)
				{
					cout << "请输入年龄:" << endl;
					int age;
					cin >> age;
					if (age > 0 && age <= 200) {
						addressBooks->personArray[result].age = age;
						break;
					}
					else {
						cout << "请输入有效的年龄数:" << endl;
					}
				}

				// 输入联系电话
				while (true)
				{
					cout << "请输入联系电话:" << endl;
					string phone;
					cin >> phone;
					if (phone.size() == 11) {
						addressBooks->personArray[result].phone = phone;
						break;
					}
					else {
						cout << "请输入有效的11位电话号码:" << endl;
					}
				}

				// 输入联系地址

				cout << "请输入联系地址:" << endl;
				string addr;
				cin >> addr;
				addressBooks->personArray[result].addr = addr;

				cout << "--- 联系人已修改成功!---:" << endl;
				cout << endl;

			}
			else {
				cout << "查无此人,请重新输入:" << endl;
			}
		}
		else {
			system("cls"); // 清屏
			return;
		}

	}
}

void cleanPerson(AddressBooks * addressBooks) {
	while (true)
	{
		cout << "是否确认清空通讯录?(Y/N)" << endl;
		string target_name;
		cin >> target_name;
		if (target_name == "Y" || target_name == "N") {
			if (target_name == "Y") {
				addressBooks->count = 0;
				cout << "---  通讯录已清空  ---" << endl;
				cout << endl;
				break;
			}
			else
			{
				system("cls"); // 清屏
				return;
			}
		}
		else {
			cout << "输入有误请重新输入" << endl;
		}
	}
}

int main() {
	//  初始化通讯录
	AddressBooks addressBooks;
	addressBooks.count = 0;

	// 初始化选择
	int select = 0;

	// 循环程序
	while (true)
	{
		showMenu();
		cout << "请选择您所需要的服务:" << endl;
		cin >> select;
		switch (select)
		{
		case 1:// 添加联系人
			addPerson(&addressBooks);// 传入通讯录地址
			break;
		case 2:// 显示联系人
			showPerson(&addressBooks);// 显示通讯录内容
			break;
		case 3:// 删除联系人
			deletePerson(&addressBooks);// 删除联系人
			break;
		case 4:// 查找联系人
			findPerson(&addressBooks);
			break;
		case 5:// 修改联系人
			modifyPerson(&addressBooks);
			break;
		case 6:// 清空联系人
			cleanPerson(&addressBooks);
			break;
		case 0:// 退出通讯录
			cout << "系统已退出,感谢您的支持,欢迎再次使用。" << endl;
			system("pause");
			return 0;

		default:
			cout << "输入有误,请选择1-6服务,按0退出。" << endl;
			break;
		}
	}

	return 0;

}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 09:26:01  更:2021-08-06 09:28:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/9 6:57:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码