C++学习案例记录&分享十二(通讯录系统)

此案例贯穿了基础编程的大部分知识点,最具代表性的案例


通讯录功能介绍

储存数据包括:姓名·性别·年龄·电话·住址

功能有:添加·查询·删除·修改·清空


代码展示

#include <iostream>
#define Max 1000
using namespace std;
//联系人结构体
struct Person 
{
	string m_name;//姓名
	int m_gender = 0;//性别 0女 1男
	int m_age = 0;//年龄
	string m_phoneNum;//电话
	string m_address;//住址
};

//通讯录结构体
struct Addressbooks 
{
	//通讯录中保存联系人数组
	struct Person personArray[Max];
	//通讯里中当前记录联系人个数
	int m_size = 0;
};

//1.添加联系人功能
void addPerson(Addressbooks * abs) 
{
	//判断通讯录是否满人
	if (abs->m_size == Max)
	{
		cout << "通讯录已满,无法添加!" << endl;
		return;
	}
	else
	{
		//添加具体联系人
		string name;
		cout << "请输入姓名:";
		cin >> name;
		abs->personArray[abs->m_size].m_name = name;
		int gender = 0;
		cout << "请输入性别(女 0/男 1);";
		cin >> gender;
		while (true)
		{
			if (gender == 0 || gender == 1)
			{
				abs->personArray[abs->m_size].m_gender = gender;
				break;
			}
			else
			{
				cout << "输入有误,请重新输入性别(女 0/男 1):";
				cin >> gender;
			}
		}
		//年龄
		int age = 0;
		cout << "请输入年龄:";
		cin >> age;
		abs->personArray[abs->m_size].m_age = age;
		//电话
		string phoneNum;
		cout << "请输入电话号码:";
		cin >> phoneNum;
		abs->personArray[abs->m_size].m_phoneNum = phoneNum;
		//住址
		string address;
		cout << "请输入住址:";
		cin >> address;
		abs->personArray[abs->m_size].m_address = address;
		//更新人数
		abs->m_size++;
		cout << "添加成功" << endl;
		system("pause");
		system("cls");
	}	

}

//显示联系人
void showPerson(Addressbooks* abs) 
{
	if (abs->m_size == 0)
	{
		cout << "通讯录为空" << endl;
	}
	else
	{
		for (int i = 0;i < abs->m_size;i++)
		{
			cout << "姓名:" << abs->personArray[i].m_name << "\t";//name
			cout << "性别:" << (abs->personArray[i].m_gender == 0 ? "女" : "男") << "\t";//gender
			cout << "年龄:" << abs->personArray[i].m_age << "\t";//age
			cout << "电话号码:" << abs->personArray[i].m_phoneNum << "\t";//phone
			cout << "住址:" << abs->personArray[i].m_address << "\t";//address
			cout << endl;
		}
	}
	system("pause");
	system("cls");
}

//删除联系人(是否存在)
int existPerson(Addressbooks* abs, string name) 
{
	for (int i = 0;i < abs->m_size;i++)
	{
		if (abs->personArray[i].m_name == name) 
		{
			return i;
		}
	}
	return -1;
}

//删除指定联系人
void deletePerson(Addressbooks* abs) 
{
	string name;
	cout << "请您输入想要删除的联系人的姓名:";
	cin >> name;
	int ret = existPerson(abs, name);
	if (ret != -1) 
	{
		for (int i = ret;i < abs->m_size;i++)
		{
			//数据前移
			abs->personArray[i] = abs->personArray[i = 1];
		}
		if (abs->m_size > 0) 
		{
			abs->m_size--;//更新人员数量
			cout << "删除成功" << endl;
		}
		else 
		{
			cout << "删除失败,通讯录为空" << endl;
		}
	}
	else
	{
		cout << "查无此人" << endl;
	}	
	system("pause");
	system("cls");
}

//查找联系人
void findPerson(Addressbooks* abs)
{
	if (abs->m_size > 0) 
	{
		string name;
		cout << "请输入您想要查找的联系人的姓名:";
		cin >> name;
		int ret = existPerson(abs, name);
		if (ret != -1)
		{
			cout << "姓名:" << abs->personArray[ret].m_name << "\t";//name
			cout << "性别:" << (abs->personArray[ret].m_gender == 0 ? "女" : "男") << "\t";//gender
			cout << "年龄:" << abs->personArray[ret].m_age << "\t";//age
			cout << "电话号码:" << abs->personArray[ret].m_phoneNum << "\t";//phone
			cout << "住址:" << abs->personArray[ret].m_address << "\t";//address
			cout << endl;
		}
		else
		{
			cout << "查无此人" << endl;
		}
	}
	else 
	{
		cout << "无法查找,通讯录为空" << endl;
	}
	system("pause");
	system("cls");
}

//修改指定联系人
void modifyPerson(Addressbooks* abs) 
{
	string name;
	cout << "请输入您想要修改的联系人的姓名:";
	cin >> name;
	int ret = existPerson(abs, name);
	if (ret != -1) 
	{
		//name
		string name;
		cout << "请输入姓名:";
		cin >> name;
		abs->personArray[ret].m_name = name;
		//gender
		int gender = 0;
		cout << "请输入性别(0 女/1 男):";
		cin >> gender;
		abs->personArray[ret].m_gender = gender;
		//age
		int age = 0;
		cout << "请输入年龄:";
		cin >> age;
		abs->personArray[ret].m_age = age;
		//phone
		string phoneNum;
		cout << "请输入电话号码:";
		cin >> phoneNum;
		abs->personArray[ret].m_phoneNum = phoneNum;
		//address
		string address;
		cout << "请输入住址:";
		cin >> address;
		abs->personArray[ret].m_address = address;

		cout << "修改成功" << endl;
	}
	else 
	{
		cout << "查无此人" << endl;
	}
	system("pause");
	system("cls");
}

//清空联系人
void cleanPerson(Addressbooks* abs)
{	
	while (1) {
		char confirm;
		cout << "确定要清空联系人吗?(y/n):";
		cin >> confirm;
		if (confirm == 'y' || confirm == 'Y')
		{
			abs->m_size = 0;
			cout << "联系人已清空" << endl;
			break;
		}
		else
		{
			if (confirm == 'n' || confirm == 'N') 
			{
				cout << "清空取消" << endl;
				break;
			}
			else 
			{
				cout << "!!没有此操作!!" << endl;
			}
		}
	}
	system("pause");
	system("cls");
}

//显示菜单
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;
}

int main() 
{
	//创建结构体变量
	Addressbooks abs;
	//初始化通讯录中当前人员个数
	abs.m_size = 0;
	
	while (true) //循环调用
	{
		int select = 0;//创建用户选择输入的变量
		//调用菜单界面
		showMenu();

		cin >> select;
	
		switch (select) 
		{
		case 1://添加联系人
			addPerson(&abs);
			break;
		case 2: //显示联系人
			showPerson(&abs);
			break;
		case 3: //删除联系人
			deletePerson(&abs);
			break;
		case 4: // 查找联系人
			findPerson(&abs);
			break;
		case 5: //修改联系人
			modifyPerson(&abs);
			break;
		case 6: 
			cleanPerson(&abs);//清空联系人
			break;
		case 0: //退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");
			return 0;
		default:
			cout << "!!没有此操作!!" << endl;
			break;
		}
	}
	system("pause");
	return 0;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇