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++知识库 -> 通讯录管理系统(C++) -> 正文阅读

[C++知识库]通讯录管理系统(C++)

#include <iostream>
#include <string>
using namespace std;
#define MAX 1000		//通讯录最大容量(可更改)


void PMenu()      //菜单
{
	cout << "********************************************" << endl;
	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;
	cout << "*********************  版权所有:尹洪志  ***" << endl;
	cout << "********************************************" << endl;
}

struct Person
{
	string name;        //姓名
	int sex;			//性别 性别用数字代替,便于检测
	int age;			//年龄
	string namber;		//电话号码
	string address;		//住址
};
struct PersonBooks
{
	struct Person per[MAX];  //联系人结构数组
	int size;                //通讯录人数
};

//******添加联系人
void addR(struct PersonBooks *abs)					
{
	if (abs->size == MAX)						//检测通讯录联系人人数是否达到最大值MAX
	{
		cout << "抱歉!通讯录已满!" << endl;
		return;
	}
	else										//没有满的话,开始添加联系人
	{
		cout << "请输入姓名:" << endl;
		cin >> abs->per[abs->size].name;

		cout << "\n请输入性别" << endl;
		cout << "1 --- 男" << endl;
		cout << "2 --- 女" << endl;
		
		while (true)							/*性别验证*/
		{
			int sex2;
			cin >> sex2;
			if (sex2 == 1 || sex2 == 2) 
			{
				abs->per[abs->size].sex = sex2;
				break;							//性别正确的话,break跳出while循环
			}
			cout << "您的输入有误,请重新输入。" << endl;
		}

		cout << "\n请输入年龄:" << endl;
		cin >> abs->per[abs->size].age;

		cout << "\n请输入电话:" << endl;
		cin >> abs->per[abs->size].namber;

		cout << "\n请输入住址:" << endl;
		cin >> abs->per[abs->size].address;

	}
	cout << "添加成功" << endl;
	abs->size ++;								//联系人数量+1,PersonBooks中size(联系人人数)+1
	system("pause");		//打印:摁任意键继续
	system("cls");			//清屏
}

//******显示联系人
void PrintPerson(const PersonBooks* abs, int a)			
{
	if (a == 0)								//检测通讯录中联系人人数是否为0
	{
		cout << "当前通讯录无联系人!" << endl;
	}
	else                                     //联系人数量>=1
	{
		for (int i = 0; i < a; i++)				//for循环 遍历打印结构数组
		{
			cout << "联系人" << i + 1 << "、 姓名:" << abs->per[i].name
				 << "  性别:" << ((abs->per[i].sex > 1)?  "女" : "男")
			     << "  年龄:" << abs->per[i].age 
				 << "  电话:" << abs->per[i].namber 
				 << "  地址:" << abs->per[i].address << endl;
		}
	}
	cout << endl;
	system("pause");	//摁任意键继续
	system("cls");		//清空屏幕
}

//检验人名存在否?
int Sexit(const PersonBooks* abs, string name)			
{
	for (int i = 0; i < (abs->size); i++)		//遍历结构数组
	{
		if (abs->per[i].name == name) return i; //判断结构数组中是否有此名name  有的话直接返回i
	}
	return -1;															 	 //没有的话  返回 -1
}

//******删除联系人
void DeleteP(PersonBooks *abs)			
{
	string name;
	cout << "请输入被删除的姓名:" << endl;
	cin >> name;
	int s = Sexit(abs, name);							//检测通讯录中是否有此人
	if (s == -1)
	{
		cout << "查无此人!" << endl;
		system("pause");
		system("cls");
	}
	else                                                   //通讯录中 有 此人
	{
		cout << "请确认是否删除\n1 -> 删除\n2 -> 保留" << endl;		//*防止误删
		int sf;
		while (true)
		{
			cin >> sf;
			if (sf == 1 || sf == 2)
			{
				if (sf == 1) {
					for (; s < (abs->size - 1 ); s++)				//通过后者赋值给前者,达到-1
					{
						abs->per[s] = abs->per[s + 1];
					}
					abs->size--;									//PersonBooks中size(联系人数量)-1
					cout << "删除联系人成功!" << endl;
				}
				else cout << "已取消!" << endl;
				system("pause");
				system("cls");
				break;
			}
			cout << "您的输入有误,请重新输入。" << endl;
		}
		
	}
}

//******查找联系人
void SearchP(PersonBooks* abs)					
{
	string name;
	cout << "请输入要查找的姓名:" << endl;
	cin >> name;
	int temp = Sexit(abs, name);//1.检验此人是否存在 //2.存在 =》   返回 i  /   不存在 =》 返回-1
	if (temp == -1) 
	{
		cout << "抱歉,查无此人!" << endl; 
		system("pause");
		system("cls");
	}
	else
	{
		cout << "姓名:" << name << endl;
		cout << "\t性别:" << ((abs->per[temp].sex > 1) ? "女" : "男") << endl;
		cout << "\t年龄:" << abs->per[temp].age<< endl;
		cout << "\t电话:" << abs->per[temp].namber  << endl;
		cout << "\t地址:" << abs->per[temp].address  << endl;
		system("pause");
		system("cls");
	}

}

//******修改联系人
void Change(PersonBooks* abs)						
{
	cout << "请输入要修改的姓名:" << endl;
	string name;
	cin >> name;
	int temp = Sexit(abs, name);				//检测通讯录中是否有此人
	if (temp == -1)
	{
		cout << "抱歉,查无此人!" << endl;
		system("pause");
		system("cls");
	}
	else
	{
		string t_sex, t_name, t_namber, t_address;			//定义临时变量,获取用户输入的内容
		int  t_sex2,t_age;									//定义临时变量,获取用户输入的内容

		cout << "您要修改的联系人信息为:" << endl;			//打印 修改 前 信息
		cout << "姓名:" << abs->per[temp].name 
			 << "   \t性别:" << ((abs->per[temp].sex > 1) ? "女" : "男")
			 << "   \t年龄:" << abs->per[temp].age 
			 << "   \t电话:" << abs->per[temp].namber 
			 << "   \t地址:" << abs->per[temp].address << endl;

		cout << "\n请输入您修改后的信息:(两个信息之间以 空格 隔开)" << endl;	//获取用户输入的信息
		cout << "姓名:   \t性别:   \t年龄:   \t电话:   \t地址:" << endl;
		cin >> t_name >> t_sex >> t_age >> t_namber >> t_address;
		
		if (t_sex == "男") t_sex2 = 1;			//性别从1-男 之间转换
		else t_sex2 = 2;
		
		//cout << t_name << t_sex << t_age << t_namber << t_address << endl;
		abs->per[temp].name		 = t_name;
		abs->per[temp].sex		 = t_sex2;
		abs->per[temp].age		 = t_age;
		abs->per[temp].namber    = t_namber;
		abs->per[temp].address   = t_address;
		cout << "修改成功!" << endl;
		system("pause");
		system("cls");
	}
}

//******清空联系人
void AllDelete(PersonBooks* abs)								
{
	if (abs->size == 0)						//当通讯录中无联系人 时
	{
		cout << "您的通讯录里 无联系人 可清空" << endl;
		system("pause");
		system("cls");
	}
	else {
		cout << "请确认是否清空通讯录?\n1 -> 删除\n2 -> 保留" << endl;		//防止误清,二次确认
		int sf;
		while (true)
		{
			cin >> sf;
			if (sf == 1 || sf == 2)
			{
				if (sf == 1) 
				{					
					abs->size = 0;
					cout << "通讯录清空成功!" << endl;
				}
				else cout << "已取消!" << endl;
				system("pause");
				system("cls");
				break;
			}
			cout << "您的输入有误,请重新输入。" << endl;
		}
	}
}

void main()
{
	PersonBooks abs;		//定义结构变量
	abs.size = 0;			//size(联系人数量)初始化


	
	while (true)
	{
		PMenu();
		int choose;
		cin >> choose;		//用户输入目录的选择

		switch (choose)
		{
			case 1:					//******添加联系人					
				addR(&abs);					
				break;

			case 2:					//******显示联系人
				PrintPerson(&abs,abs.size);
				break;

			case 3:					//******删除联系人
				
				DeleteP(&abs);
				break;

			case 4:					//******查找联系人
				SearchP(&abs);
				break;

			case 5:					//******修改联系人
				Change(&abs);
				break;

			case 6:					//******清空联系人
				AllDelete(&abs);
				break;

			case 0:
				cout << "欢迎您再次使用!" << endl;
				return ;
			default:
				cout << "您输入有误,请重新输入:" << endl;
				break;
		}
	}

	system("pause");
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 11:52:27  更:2021-08-19 11:54:23 
 
开发: 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/20 13:14:57-

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