C++版的通讯录,编译器为VS2022,共包括:添加、显示、删除、查找、修改、清空、退出七个功能,其代码如下:
#include<iostream>
#include<string.h> //字符串的头文件
using namespace std;
#define MAX 1000 //通讯录中的人数上限
void menu1()
{
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;
}
void menu2()
{
cout << "***********************************" << endl;
cout << "********** 1、修改姓名 **********" << endl;
cout << "********** 2、修改性别 **********" << endl;
cout << "********** 3、修改年龄 **********" << endl;
cout << "********** 4、修改电话 **********" << endl;
cout << "********** 5、修改地址 **********" << endl;
cout << "********** 0、退出修改 **********" << endl;
cout << "***********************************" << endl;
}
struct Person
//联系人信息结构体
{
string m_Name; //姓名
int m_Sez; //性别:1是男,2是女
int m_Age; //年龄
string m_Phone; //电话
string m_Adr; //家庭住址
};
struct Adressbooks
//通讯录结构体
{
struct Person personArray[MAX];
//通讯录中用来保存联系人的数组
int m_Size;
//通讯录中的人员个数
};
//1、添加联系人
void addPerson(Adressbooks* abs)
{
//判断通讯录是否已满,如果满了就不再添加
if(abs->m_Size == MAX)
{
cout << "通讯录已满,无法再添加" << endl;
return;
}
else
{
string name = { 0 };
cout << "请输入姓名:" << endl;
cin >> name;
abs->personArray[abs->m_Size].m_Name = name;
//姓名
int sex = 0;
cout << "请输入性别:(1--男,2--女)" << endl;
while (1)
{
cin >> sex;
if (sex == 1 || sex == 2)
{
abs->personArray[abs->m_Size].m_Sez = sex;
break;
}
cout << "输入有误,请重新输入:" << endl;
}
//性别
int age = 0;
cout << "请输入年龄:" << endl;
cin >> age;
abs->personArray[abs->m_Size].m_Age = age;
//年龄
string phone = { 0 };
cout << "请输入电话号码:" << endl;
cin >> phone;
abs->personArray[abs->m_Size].m_Phone = phone;
//电话
string adr = { 0 };
cout << "请输入家庭住址:" << endl;
cin >> adr;
abs->personArray[abs->m_Size].m_Adr = adr;
//家庭住址
abs->m_Size++;
//更新通讯录人数
cout << "添加成功!" << endl;
system("pause"); //请按任意键继续
system("cls"); //清屏
}
}
//2、显示联系人
void showPerson(Adressbooks* 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_Sez == 1 ? "男" : "女") << "\t";
//1输出男,2输出女
cout << "年龄:" << abs->personArray[i].m_Age << "\t";
cout << "电话:" << abs->personArray[i].m_Phone << "\t";
cout << "住址:" << abs->personArray[i].m_Adr << endl;
}
}
system("pause"); //请按任意键继续
system("cls"); //清屏
}
//查找联系人是否存在
int isExist(Adressbooks* abs , string name)
//参数1 通讯录 参数2 对比姓名
//用联系人的名字来检测联系人是否存在
// 如果存在,则返回联系人所在数组中的具体位置,若不存在则返回-1
{
for (int i = 0; i < abs->m_Size; i++)
{
if (abs->personArray[i].m_Name == name)
//判断用户是否存在
{
return i;
//找到
}
}
return -1;
//如果遍历结束都没找到,则返回一个-1
}
//3、删除指定联系人
void deletePerson(Adressbooks* abs)
{
cout << "请输入您要删除的联系人的名称" << endl;
string name = { 0 };
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;
}
system("pause"); //请按任意键继续
system("cls"); //清屏
}
//4、查找联系人的信息
void findPerson(Adressbooks* abs)
{
cout << "输入你要查找的联系人的姓名:" << endl;
string name = { 0 };
cin >> name;
int ret = isExist(abs, name);
if (ret != -1)
{
cout << "姓名:" << abs->personArray[ret].m_Name << "\t";
cout << "性别:" << (abs->personArray[ret].m_Sez == 1 ? "男" : "女") << "\t";
//1输出男,2输出女
cout << "年龄:" << abs->personArray[ret].m_Age << "\t";
cout << "电话:" << abs->personArray[ret].m_Phone << "\t";
cout << "住址:" << abs->personArray[ret].m_Adr << endl;
}
else
{
cout << "查无此人" << endl;
}
system("pause"); //请按任意键继续
system("cls"); //清屏
}
//5、修改联系人
void modifyPerson(Adressbooks* abs)
{
cout << "输入你要修改的联系人的姓名:" << endl;
string name = { 0 };
cin >> name;
int ret = isExist(abs, name);
if (ret != -1)
{
int input = 0;
do
{
system("cls");
menu2();
cout << "请选择你要修改的信息:" << endl;
cin >> input;
switch (input)
{
case 1:
{
cout << "请输入姓名:" << endl;
cin >> name;
abs->personArray[ret].m_Name = name;
system("cls");
break;
}
case 2:
{
int sex = 0;
cout << "请输入性别:(1--男,2--女)" << endl;
while (1)
{
cin >> sex;
if (sex == 1 || sex == 2)
{
abs->personArray[ret].m_Sez = sex;
break;
}
cout << "输入有误,请重新输入:" << endl;
}
system("cls");
//性别
break;
}
case 3:
{
int age = 0;
cout << "请输入年龄:" << endl;
cin >> age;
abs->personArray[ret].m_Age = age;
//年龄
system("cls");
break;
}
case 4:
{
string phone = { 0 };
cout << "请输入电话号码:" << endl;
cin >> phone;
abs->personArray[ret].m_Phone = phone;
//电话
system("cls");
break;
}
case 5:
{
string phone = { 0 };
cout << "请输入电话号码:" << endl;
cin >> phone;
abs->personArray[ret].m_Phone = phone;
//电话
system("cls");
break;
}
default:
cout << "输入错误,请重新输入:" << endl;
break;
case 0:
cout << "修改已退出,您修改的信息已保存。" << endl;
break;
}
} while (input);
}
else
{
cout << "查无此人" << endl;
}
system("pause"); //请按任意键继续
system("cls"); //清屏
}
void clean(Adressbooks* abs)
{
abs->m_Size = 0;
cout << "通讯录已清空" << endl;
system("pause"); //请按任意键继续
system("cls"); //清屏
}
int main()
{
Adressbooks abs;
//初始化通讯录中的人员个数
abs.m_Size = 0;
int input = 0;
do
{
menu1();
//菜单
cin >> input;
switch (input)
{
case 1:
system("cls");
addPerson(&abs);
//添加联系人
break;
case 2:
system("cls");
showPerson(&abs);
//显示联系人
break;
case 3:
deletePerson(&abs);
system("cls");
//删除联系人
break;
case 4:
system("cls");
findPerson(&abs);
//查找联系人
break;
case 5:
system("cls");
modifyPerson(&abs);
//修改联系人
break;
case 6:
system("cls");
clean(&abs);
//清空联系人
break;
case 0:
//退出通讯录
break;
default:
system("cls");
cout << "输入错误,请重新输入:" << endl;
break;
}
} while (input);
system("cls");
cout << endl << "欢迎下次使用~~ヾ( ̄▽ ̄)Bye~Bye~" << endl << endl;
system("pause");
return 0;
}