C++版动态通讯录
基本功能
1.添加联系人;
2.删除联系人;
3.查找联系人 ;
4.修改联系人·;
5.打印联系人 ;
6.清空联系人;
0.退出通讯录
代码如下
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string>
#define MAX 1000//最多储存联系人个数
using namespace std;
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;
};
void shouMenu()
{
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 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;
cout << "请输入性别:" << endl;
cout << "1 ---男" << endl;
cout << "2 ---女" << endl;
int sex = 0;
while (true)
{
cin >> sex;
if (sex == 1 || sex == 2)
{
abs->personArray[abs->m_Size].m_Sex = sex;
break;
}
cout << "输入有误,请重新输入" << endl;
}
int age;
cout << "请输入年龄:" << endl;
cin >> age;
abs->personArray[abs->m_Size].m_Age = age;
string phone;
cout << "请输入电话:" << endl;
cin >> phone;
abs->personArray[abs->m_Size].m_Phone = phone;
string addr;
cout << "请输入住址:" << endl;
cin >> addr;
abs->personArray[abs->m_Size].m_Addr = addr;
cout << "添加成功!" << endl;
abs->m_Size++;
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";
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");//清零
}
int isExit(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;
//ret==-1没有查到
//ret!=-1查到了
int ret = isExit(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");
}
void findPerson(Addressbooks * abs)//查
{
cout << "请输入想要查找联系人的姓名" << endl;
string name;
cin >> name;
int ret = isExit(abs, name);
if (ret!=-1)//找到联系人
{
cout << "姓名:" << abs->personArray[ret].m_Name << "\t";
cout << "性别:" << (abs->personArray[ret].m_Sex == 1 ? "男" : "女") << "\t";
cout << "年龄:" << abs->personArray[ret].m_Age << "\t";
cout << "电话:" << abs->personArray[ret].m_Phone << "\t";
cout << "住址:" << abs->personArray[ret].m_Addr << endl;
}
else
{
cout << "找不到该联系人" << endl;
}
system("pause");
system("cls");
}
void modifyPerson(Addressbooks * abs)//改
{
cout << "请输入要修改联系人的姓名" << endl;
string name;
cin >> name;
int ret = isExit(abs, name);
if (ret != -1)
{
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 << "输入有误,请重新输入" << endl;
}
int age;
cout << "请输入年龄:" << endl;
cin >> age;
abs->personArray[ret].m_Age = age;
string phone;
cout << "请输入电话:" << endl;
cin >> phone;
abs->personArray[ret].m_Phone = phone;
string addr;
cout << "请输入住址:" << endl;
cin >> addr;
abs->personArray[ret].m_Addr = addr;
cout << "修改成功!" << endl;
}
else
{
cout << "找不到该联系人" << endl;
}
system("pause");
system("cls");
}
void cleanPerson(Addressbooks * abs)
{
abs->m_Size = 0;
cout << "通讯录清空完成!" << endl;
system("pause");
system("cls");
}
int main()
{
Addressbooks abs;//创建通讯录结构体变量
abs.m_Size = 0;//初始化通讯录当前人员个数
int select = 0;
while (true)
{
shouMenu();
cin >> select;
switch (select)
{
case 1://增
addPerson(&abs);
break;
case 2://删
deletePerson(&abs);
break;
case 3://查
findPerson(&abs);
break;
case 4://改
modifyPerson(&abs);
break;
case 5://打印
showPerson(&abs);
break;
case 6://清空
cleanPerson(&abs);
break;
case 0://退出
cout << "欢迎下次使用" << endl;
system("pause");
return 0;
break;
default:
break;
}
}
system("pause");
return 0;
}
满足基本功能的C++通讯录就实现啦,感兴趣的朋友们快试试吧!
非常感谢各位的点赞,欢迎大家评论!