ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

C++入门实战-通讯录管理系统

2022-11-20 14:11:53  阅读:355  来源: 互联网

标签:c++ 输入 文件 方法 编程 设置 代码 安装 链接 下载 压缩 系统


今天是接触C++的第二天,学习了基础内容之后用了两个多小时的时间完成了一个通讯录管理程序,功能相对简单,代码也不复杂,欢迎各位大佬指出不足之处

点击查看代码
#include<iostream>
#include<string>
#include<regex>
using namespace std;

struct PhoneNumber
{
	string name;//姓名
	string sex;//性别
	string phone;//联系电话
	string area;//地址
};
//显示菜单项
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;
}
//添加联系人
void addPhoneNumber(PhoneNumber phoneNumber[]) {
	string name;
	string sex;
	string phone;
	string area;
	string n;//判断性别
	bool flag = false;//判断控制台正确输入
	cout << "请输入姓名:" << endl;
	cin >> name;
	cout << "请选择性别:\n" << "1-男\n" << "2-女" << endl;
	do
	{
		cin >> n;
		cin.clear();
		cin.sync();
		if (n == "1" || n == "2")
		{
			flag = true;
		}
		else
		{
			flag = false;
			cout << "请输入1或2:" << endl;
		}

	} while (!flag && cin.get());
	if (n == "1") sex = "男";
	else if (n == "2") sex = "女";
	cout << "请输入手机号:" << endl;
	do
	{
		cin >> phone;
		cin.clear();
		cin.sync();
		regex e("^(13[0-9]|14[5-9]|15[0-3,5-9]|16[2,5,6,7]|17[0-8]|18[0-9]|19[0-3,5-9])\\d{8}$");//手机号校验
		if (regex_match(phone, e))
		{
			flag = true;
		}
		else
		{
			flag = false;
			cout << "请输入合法的手机号:" << endl;
		}

	} while (!flag && cin.get());
	cout << "请输入地址:" << endl;
	cin >> area;
	for (int i = 0; i < 100; i++) {
		if (phoneNumber[i].phone == phone) {
			cout << "手机号已存在,请核对后重新录入!" << endl;//保持手机号唯一性
			system("pause");
			addPhoneNumber(phoneNumber);
		}
		if (phoneNumber[i].phone.empty()) {
			phoneNumber[i].name = name;
			phoneNumber[i].sex = sex;
			phoneNumber[i].phone = phone;
			phoneNumber[i].area = area;
			break;
		}
	}
	cout << "录入成功" << endl;
	system("pause");//按任意键继续
	return;
}
//查看联系人信息
void showPhoneNumber(PhoneNumber phone[])
{
	//列名栏
	cout << "------------------------------------------------------" << endl;
	cout << "姓名      性别       联系电话       地址         " << endl;
	cout << "------------------------------------------------------" << endl;
	for (int i = 0; i < 100; i++)//查看全部联系人
	{
		if (!phone[i].phone.empty()) {
			cout << phone[i].name << "\t   " << phone[i].sex << "      " << phone[i].phone << "   " << phone[i].area << endl;
		}
	}
	system("pause");
	return;
}
//删除联系人
void deletePhoneNumber(PhoneNumber phone[])
{
	string name;
	string phoneNumber;
	string::size_type idx;//全匹配查询内存标识
	bool flag = false;//联系人是否存在
	cout << "请输入待删除联系人姓名:" << endl;
	cin >> name;
	cout << "找到以下符合条件的联系人:" << endl;
	cout << "------------------------------------------------------" << endl;
	cout << "姓名      性别       联系电话       地址         " << endl;
	cout << "------------------------------------------------------" << endl;
	for (int i = 0; i < 100; i++)
	{
		idx = phone[i].name.find(name);//模糊查找联系人姓名
		if (idx != string::npos) {
			flag = true;
			cout << phone[i].name << "\t   " << phone[i].sex << "      " << phone[i].phone << "   " << phone[i].area << endl;
		}
	}
	if (flag) {
		cout << "请输入待删除联系人联系电话:" << endl;
		cin >> phoneNumber;
		for (int i = 0; i < 100; i++)
		{
			if (phone[i].phone == phoneNumber) {//清除对应下标的数组元素属性
				phone[i].name = "";
				phone[i].sex = "";
				phone[i].phone = "";
				phone[i].area = "";
			}
		}
		cout << "已删除该联系人!" << endl;
	}
	else {
		cout << "没有找到相关联系人信息!" << endl;
	}
	system("pause");
	return;
}
//查询联系人(模糊查询)
void viewPhoneNumber(PhoneNumber phone[])
{
	string name;
	string phoneNumber;
	string::size_type idx;
	string::size_type idx1;
	string::size_type idx2;
	string::size_type idx3;
	cout << "请输入待查询联系人信息:" << endl;
	cin >> name;
	cout << "找到以下符合条件的联系人:" << endl;
	cout << "------------------------------------------------------" << endl;
	cout << "姓名      性别       联系电话       地址         " << endl;
	cout << "------------------------------------------------------" << endl;
	for (int i = 0; i < 100; i++)
	{
		idx = phone[i].name.find(name);
		idx1 = phone[i].sex.find(name);
		idx2 = phone[i].phone.find(name);
		idx3 = phone[i].area.find(name);
		if (idx != string::npos || idx1 != string::npos || idx2 != string::npos || idx3 != string::npos) {//根据联系人任意信息进行模糊查询
			cout << phone[i].name << "\t   " << phone[i].sex << "      " << phone[i].phone << "   " << phone[i].area << endl;
		}
	}
	system("pause");
	return;
}
//修改联系人信息
void updatePhoneNumber(PhoneNumber phone[])
{
	string name;
	string phoneNumber;
	string::size_type idx;
	bool flag1 = false;
	cout << "请输入待修改联系人姓名:" << endl;
	cin >> name;
	cout << "找到以下符合条件的联系人:" << endl;
	cout << "------------------------------------------------------" << endl;
	cout << "姓名      性别       联系电话       地址         " << endl;
	cout << "------------------------------------------------------" << endl;
	for (int i = 0; i < 100; i++)
	{
		idx = phone[i].name.find(name);
		if (idx != string::npos) {
			flag1 = true;
			cout << phone[i].name << "\t   " << phone[i].sex << "      " << phone[i].phone << "   " << phone[i].area << endl;
		}
	}
	if (flag1) {
		cout << "请输入待修改联系人联系电话:" << endl;
		cin >> phoneNumber;
		for (int i = 0; i < 100; i++)
		{
			if (phone[i].phone == phoneNumber) {
				string name1;
				string sex1;
				string phone1;
				string area1;
				string n;//判断性别
				bool flag = false;//判断控制台正确输入
				cout << "请输入姓名:" << endl;
				cin >> name1;
				cout << "请选择性别:\n" << "1-男\n" << "2-女" << endl;
				do
				{
					cin >> n;
					cin.clear();
					cin.sync();
					if (n == "1" || n == "2")
					{
						flag = true;
					}
					else
					{
						flag = false;
						cout << "请输入1或2:" << endl;
					}

				} while (!flag && cin.get());
				if (n == "1") sex1 = "男";
				else if (n == "2") sex1 = "女";
				cout << "请输入手机号:" << endl;
				do
				{
					cin >> phone1;
					cin.clear();
					cin.sync();
					regex e("^(13[0-9]|14[5-9]|15[0-3,5-9]|16[2,5,6,7]|17[0-8]|18[0-9]|19[0-3,5-9])\\d{8}$");
					if (regex_match(phone1, e))
					{
						flag = true;
					}
					else
					{
						flag = false;
						cout << "请输入合法的手机号:" << endl;
					}

				} while (!flag && cin.get());
				cout << "请输入地址:" << endl;
				cin >> area1;
				phone[i].name = name1;
				phone[i].sex = sex1;
				phone[i].phone = phone1;
				phone[i].area = area1;
			}
		}
		cout << "已成功修改该联系人信息!" << endl;
	}
	else {
		cout << "没有找到相关联系人信息!" << endl;
	}
	system("pause");
	return;//清空通讯录
void clearPhoneNumber(PhoneNumber phone[])
{
	string n;
	cout << "确认执行清空操作(yes/no)?" << endl;//清空前确认
	cin >> n;
	if (n == "yes") {
		for (int i = 0; i < 100; i++)
		{
			phone[i].name = "";
			phone[i].sex = "";
			phone[i].phone = "";
			phone[i].area = "";
		}
		cout << "已清空通讯录!" << endl;
	}
	cout << "已取消清空操作!" << endl;
	system("pause");
	return;
}

int main()
{
	PhoneNumber phone[100];
	showMenu();
	while (1)//循环操作
	{
		int item;
		cout << "请根据序号选择功能项:" << endl;
		cin >> item;
		switch (item)
		{
		case 1:
			addPhoneNumber(phone);
			system("cls");//清空控制台
			showMenu();
			break;
		case 2:
			showPhoneNumber(phone);
			system("cls");
			showMenu();
			break;
		case 3:
			deletePhoneNumber(phone);
			system("cls");
			showMenu();
			break;
		case 4:
			viewPhoneNumber(phone);
			system("cls");
			showMenu();
			break;
		case 5:
			updatePhoneNumber(phone);
			system("cls");
			showMenu();
			break;
		case 6:
			clearPhoneNumber(phone);
			system("cls");
			showMenu();
			break;
		case 0:
			exit(0);//退出程序
		default:
			system("cls");
			showMenu();
			break;
		}
	}
	return 0;
}

 

标签:c++,输入,文件,方法,编程,设置,代码,安装,链接,下载,压缩,系统
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有