c++通讯录管理系统

  • Post author:
  • Post category:其他


1、系统需求

通讯录是一个可以记录亲人、好友信息的工具。

本教程主要利用C++来实现一个通讯录管理系统

系统中需要实现的功能如下:

●添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人

●显示联系人:显示通讯录中所有联系人信息

●删除联系人:按照姓名进行删除指定联系人

●查找联系人:按照姓名查看指定联系人信息

●修改联系人:按照姓名重新修改指定联系人

●清空联系人:清空通讯录中所有信息

●退出通讯录:退出当前使用的通讯录


添加联系人


实现添加联系人功能,联系人上限为1000人,联系人信息包括(姓名、 性别、年龄、联系电话、家庭住址)

添加联系人实现步骤:

●设计联系人结构体

●设计通讯录结构体

●main函数中创建通讯录

●封装添加联系人函数

●测试添加联系人功能

#include<iostream>
using namespace std;
#include<string>
#define MAX 100                                                                                 
//联系人结构体
struct Person
{
	string m_Name;
	int m_Sex;
	int m_Age;
	string m_Phone;
	string m_Addr;
 };
 
struct Addressbooks
{
	struct Person personArray[MAX]; //通讯录中保存的联系人数组
	int m_Size;   //通讯录中人员个数 
}; 
//1.添加联系人 
void addPerson(Addressbooks *abs)  //因为传的是地址我这里用指针去接受地址
{
	//判断通讯录是否已满
	if(abs->m_Size==MAX)
	{
		cout<<"通讯录已满,无法添加"<<endl;
		return ;
	 } 
	 else
	 {
	 	//添加联系人
		 string name;
		 cout<<"请输入姓名:"<<endl;
		 cin>>name;
		 abs->personArray[abs->m_Size].m_Name = name; // =用户输入的name 
		 //性别 
		 cout<<"请输入性别:"<<endl;
		 cout<<"1------男"<<endl;
		 cout<<"2------女"<<endl;
		 int sex=0;
		 while(true)
		 {
		 	// 如果输入的是1或者2可以退出循环,因为输入的是正确值
			// 如果输入有误,重新输入 
		 	cin>>sex;
		 	if(sex==1||sex==2)
		 	{
		 		abs->personArray[abs->m_Size].m_Sex =sex;
		 		break;
			 
			 }
			 cout<<"输入有误,请重新输入"<<endl;
		  }
		//年龄
		cout<<"请输入年龄:"<<endl;
		int age =0;
		cin>>age;
		abs->personArray[abs->m_Size].m_Age =age;
		//电话
		cout<<"请输入联系电话:"<<endl;
		string phone;
		cin>>phone;
		abs->personArray[abs->m_Size].m_Phone =phone;
		
		//住址
		cout<<"请输入家庭住址:"<<endl;
		string address;
		cin>>address;
		abs->personArray[abs->m_Size].m_Addr = address;
		
		//更新通讯录人数
		abs->m_Size++;
		cout<<"添加成功"<<endl;
		system("pause"); //请按任意键继续
		system("cls"); //清屏 
		  
	 }
 } 
 //显示联系人
 void showPerson(Addressbooks*abs)
 {
 	//判断通讯录中人数是否为0,如果为0提示记录为空
	//如果不为0,显示记录的联系人信息
	if (abs->m_Size==0)
	{
		cout<<"当前记录为空"<<endl;
	 } 
	 else
	 {
	 	for(int i=0;i<abs->m_Size;i++)
	 	{
	 		cout<<"姓名:"<<abs->personArray[i].m_Name<<"\t";
	 		cout<<"性别:"<<(abs->personArray[i].m_Sex==1?"男":"女")<<"\t"; 
			cout<<"年龄:"<<abs->personArray[i].m_Age<<"\t";
			cout<<"电话:"<<abs->personArray[i].m_Phone<<"\t";
			cout<<"住址:"<<abs->personArray[i].m_Addr<<endl;
			  
			  
			  
		 }
	 }
	 system("pause");
	 system("cls");
  } 
  //检查联系人是否存在,如果存在,返回联系人所在的数组中的具体位置,不存在返回-1
  int isExist(Addressbooks*abs,string name)
  {
  	for(int i=0;i<abs->m_Size;i++)
  	{
  		//找到用户输入的姓名了 
  		if(abs->personArray[i].m_Name==name)
  		{
  			return i; //找到了返回这个人在数组中的下标编号 
		  }
	  }
	  return -1;//如果遍历结束都没有找到 返回-1 
   } 
//删除指定联系人
void deletePerson(Addressbooks*abs)
{
	cout<<"请输入你要删除的联系人"<<endl;
	string name;
	cin>>name;
	int ret = isExist(abs,name);
	if(ret!=-1)
	{
		for(int i=ret;i<abs->m_Size;i++)
		{
			abs->personArray[i]=abs->personArray[i+1];
			abs->m_Size--;
		}
		cout<<"删除成功"<<endl;
	 } 
	 else{
	 	cout<<"查无此人"<<endl;
	 }
	
 } 
 //查找指定联系人信息
 void findPerson(Addressbooks *abs)
 {
 	cout<<"请输入你要查找的联系人"<<endl;
 	string name;
 	cin>>name;
 	int ret = isExist(abs,name);
 	if(ret!=-1)
 	{
 		cout<<"姓名:"<<abs->personArray[ret].m_Name <<"\t";
 		cout<<"性别:"<<abs->personArray[ret].m_Sex <<"\t";
 		cout<<"年龄:"<<abs->personArray[ret].m_Age<<"\t";
 		cout<<"电话:"<<abs->personArray[ret].m_Phone <<"\t";
 		cout<<"住址:"<<abs->personArray[ret].m_Addr <<"\t";
	 }
	 else
	 {
	 	cout<<"查无此人"<<endl; 
	 }
	 system("pause");
	 system("cls");
  } 
 //修改指定联系人信息
 void modifyPerson(Addressbooks*abs)
 {
 	cout<<"请输入你要修改的联系人"<<endl;
 	string name;
 	cin>>name;
 	int ret = isExist(abs,name);
	 if(ret!=-1)
	 {
	 	//姓名
		 string name;
		 cout<<"请输入姓名:"<<endl;
		 cin>>name;
		 abs->personArray[ret].m_Name =name;
		 cout<<"请输入性别:"<<endl;
		 cout<<"1---男"<<endl;
		 cout<<"2---女"<<endl;
		 int sex=0;
		 while(true)
		 {
		 	cin>>sex;
		 	if(sex==1||sex==2)
		 	{
		 		abs->personArray[ret].m_Sex = sex;
		 		break;
			 }
			 cout<<"输入有误,请重新输入";
		 }
		 //年龄
		 cout<<"请输入年龄:"<<endl;
		 int age=0;
		 cin>>age;
		 abs->personArray[ret].m_Age = age;
		 //联系电话
		 
		 cout<<"请输入联系电话"<<endl;
		 string phone= "";
		 cin>>phone;
		 abs->personArray[ret].m_Phone =phone;
		 //家庭住址
		 cout<<"请输入家庭住址:"<<endl;
		 string address;
		 cin>>address;
		 abs->personArray[ret].m_Addr = address;
		 cout<<"修改成功"<<endl; 
		  
		  
	  } 
	  else
	  {
	  	cout<<"查无此人"<<endl;
	  }
	  system("pause");
	  system("cls");
  } 
//清空所有联系人
void cleanPerson(Addressbooks*abs)
{
	abs->m_Size=0;
	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;
	 
 	
 	
 	int select=0; //创建用户选择输入的变量 
 	while(true)
 	{
 		showMenu();
 		cin>>select;
 		switch(select)
 		{
 			case 1: 
 			    addPerson(&abs); //不能填abs 值传递不会修饰实参,所以我想在添加人员之后往里面数组确实添加一个人进去我要传递地址 
 				break;
 			case 2:
 				showPerson(&abs);
 				break;
 			case 3:
 				deletePerson(&abs);
// 				{
//				 cout<<"请输入删除联系人姓名:"<<endl;
//				 string name;
//				 cin>>name;
//				 if(isExist(&abs,name)==-1)
//				 {
//				 	cout<<"查无此人"<<endl;
//				 }
//				 else {
//				 	cout<<"找到此人"<<endl;
//				 }
//			}
 				break;
 			case 4:
 				findPerson(&abs);
 				break;
 			case 5:
 				modifyPerson(&abs);
 				break;
 			case 6:
 				cleanPerson(&abs);
 				break;
 			case 0:
 				cout<<"欢迎下次使用"<<endl;
 				return 0;
 				break;
 			default:
 				break;
		 }
 		
 		
 		
	 }
 }



版权声明:本文为qq_45528961原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。