当前位置: 首页 > article >正文

C++通讯录管理系统

网上看到的一个小需求,练练手

代码如下:

#include <iostream>
#include <string>
#include <vector>


//联系人
class Contact {
public:
	Contact(const std::string& _name = "无名氏", const std::string& _phoneNumber = "00000") :name(_name), phoneNumber(_phoneNumber) {};		//初始化构造函数

	bool operator == (const Contact contact) {
		return (this->name == contact.name);
	}

	//展示信息
	void showMsg() {
		std::cout << "姓名:" << name << std::endl;
		std::cout << "电话:" << phoneNumber << '\n' << std::endl;
	}

	//修改电话
	void changeNumber(const std::string& _number) {
		phoneNumber = _number;	
	}



private:
	std::string name;			//姓名
	std::string phoneNumber;	//联系方式
};



//第四个模块 通讯录
class Contacts {
public:

	//第五个模块 在通讯录的末尾写入信息并返回选单
	void Add(const std::string& name, const std::string& phoneNumber);

	

	//函数重载
	bool Find(const std::string& name);
	

	//第七个模块 修改某人信息,未找到则提示通讯录中无此人信息,并返回选单
	void Alter(const std::string & name);

	//第八个模块 删除某人信息,如果未找到要删除的人,则提示通讯录中没有此人信息,并返回选单
	void Delete(const std::string & name);

	//第九个模块 显示通讯录中的所有记录
	void List();

private:
	//第六个模块 查询某人信息,找到了,返回某人信息,未找到,则提示通讯录中没有此人信息并返回选单。
	auto inFind(const std::string& name);

private:
	std::vector <Contact> ContactVec;
};


Contacts contacts;

//清空缓冲区
void clearInputBuffer() {
	int c;
	while ((c = getchar()) != '\n' && c != EOF) {}  // 清空直到遇到换行符或文件结束
}



//第二个模块 - Menu
void menu()
{
	std::cout << "Creat please enter 1" << std::endl;
	std::cout << "Add please enter 2" << std::endl;
	std::cout << "Find please enter 3" << std::endl;
	std::cout << "Alter please enter 4" << std::endl;
	std::cout << "Delete please enter 5" << std::endl;
	std::cout << "List please enter 6" << std::endl;
	std::cout << "Quit please enter 0" << std::endl;


	char ch;			//等待用户输入
		
	ch = getchar();		//获取用户输入
	clearInputBuffer();

	std::string inName;		//名字
	std::string inNumber;	//号码

	switch (ch) {
	case '0':		//退出系统
		std::cout << "通讯系统已退出" << std::endl;
		return;
	case '1':		//创建通讯录
		std::cout << "通讯录已创建" << std::endl; 
		clearInputBuffer();
		menu();
		break;
	case '2':		//添加联系人
		std::cout << "请输入名字" << std::endl;
		std::getline(std::cin, inName);
		std::cout << "请输入号码" << std::endl;
		std::getline(std::cin, inNumber);
		contacts.Add(inName,inNumber);
		clearInputBuffer();
		menu();
		break;
	case '3':		//查找联系人
		std::cout << "请输入名字" << std::endl;
		std::getline(std::cin, inName);
		contacts.Find(inName);
		clearInputBuffer();
		menu();
		break;
	case '4':
		std::cout << "请输入要修改联系人姓名" << std::endl;
		std::getline(std::cin, inName);
		contacts.Alter(inName);
		clearInputBuffer();
		menu();
		break;
	case '5':
		std::cout << "请输入要删除的联系人姓名" << std::endl;
		std::getline(std::cin, inName);
		contacts.Delete(inName);
		clearInputBuffer();
		menu();
		break;
	case '6':
		contacts.List();
		clearInputBuffer();
		menu();
		break;
	}

}

//第一个模块
int main()
{
	menu();

	return 0;
}


auto Contacts::inFind(const std::string& name)
{
	Contact contact(name);
	auto it = ContactVec.begin();
	while (it != ContactVec.end())
	{
		if (*it == contact)
		{
			return it;
		}
		it++;
	}

}

void Contacts::Add(const std::string& name, const std::string& phoneNumber)
{
	auto it = inFind(name);

	if (it != ContactVec.end())
	{
		std::cout << "联系人已存在" << std::endl;
	}
	else {
		Contact contact(name, phoneNumber);		//初始化联系人
		ContactVec.push_back(contact);			//插入联系人
		std::cout << "联系人添加成功" << std::endl;
	}
}



bool Contacts::Find(const std::string& name)
{
	auto it = inFind(name);
	if (it != ContactVec.end())
	{
		it->showMsg();
		return true;
	}
	else {
		std::cout << "通讯录中无此人信息" << std::endl;
		return false;
	}
}

void Contacts::Alter(const std::string& name)
{
	auto it = inFind(name);
	if (it != ContactVec.end() )
	{
		std::string inputPhoneNumber;
		std::cout << "请输入要修改的电话号码" << std::endl;
		std::getline(std::cin, inputPhoneNumber);
		it->changeNumber(inputPhoneNumber);
		std::cout << "修改后的信息如下" << std::endl;
		it->showMsg();
	}
	else {
		std::cout << "通讯录中没有此人信息" << std::endl;
	}
}

void Contacts::Delete(const std::string& name)
{
	auto it = inFind(name);

	if (it != ContactVec.end())
	{
		ContactVec.erase(it);					
	}
	else {
		std::cout << "通讯录中没有此人信息" << std::endl;
	}
}

void Contacts::List()
{
	for (auto it : ContactVec)
	{
		it.showMsg();			
	}
}

 


http://www.kler.cn/a/460018.html

相关文章:

  • Python实现接口签名调用
  • Docker安装(Docker Engine安装)
  • 计算机网络复习(练习题)
  • 活动预告 |【Part2】Microsoft 安全在线技术公开课:安全性、合规性和身份基础知识
  • GAN对抗生成网络(二)——算法及Python实现
  • 聊聊 C# 中的委托
  • 9. 大数据集群(PySpark)+Hive+MySQL+PyEcharts+Flask:信用贷款风险分析与预测
  • DotnetSpider实现网络爬虫
  • 云轴科技ZStack获评OpenCloudOS社区2024年度优秀贡献单位
  • C++ 设计模式:门面模式(Facade Pattern)
  • 基于Ubuntu2404桌面版制作qcow2镜像
  • 玛哈特矫平机助力其龙机械,引领汽摩配件制造技术升级
  • 中犇科技数字化智能中台系统login存在sql注入漏洞
  • 015-spring-动态原理、AOP的xml和注解方式
  • 【每日学点鸿蒙知识】自定义时间选择器、Image加载本地资源、线程切换、hap包安装、沉浸式无效
  • k8s的可观测性
  • Airbnb/Booking 系统设计(high level architecture)
  • java工作流模式、背包模式、适配器工厂模式整合架构,让服务任务编排更便捷
  • 如何在LabVIEW中更好地使用ActiveX控件?
  • JJJ:linux等待队列用法 init_waitqueue_entry
  • Java虚拟机——JVM高级特性与最佳实践
  • 第10章 初等数论
  • python修改ppt中的文字部分及插入图片
  • 【TG\SE二次开发】天工CAD二次开发-c++模板介绍
  • UniApp 路由导航详解
  • 【数据结构】非线性数据结构——图