*★,°*:.☆( ̄▽ ̄)/$:*.°★*
欢迎来到我的博文,文章主要记录我的学习过程,今天分享如何用C++实现通讯录管理系统,并非技术性文章,若有错误欢迎读者给予指正。
通讯录是一个可以记录亲人,好友的工具。利用c++来实现一个通讯录管理系统。系统中需要实现以下功能:
添加联系人:向通讯录中添加新的联系人,主要信息包括(姓名、性别,年龄,联系电话,家庭住址,)最多记1000人。
显示联系人:显示通讯录中所有联系人。
删除联系人:按照姓名删除指定联系人。 修改联系人:按照姓名修改指定联系人信息。
清空联系人:清空通录录中所有信息。
退出通讯录:退出当前使用的通讯录。
二、程序代码
#include
#include
using namespace std;
#define MAX 1000//通讯录储存最大人数
struct Person//联系人结构体
{
string m_Name;//姓名
int m_sex;//性别:1男 2女
int m_age;//年龄
string m_phone;//号码
string m_Addr;//住址
};
struct Addressbook//通讯录结构体
{
struct Person Addressbook[MAX];//联系人结构数组
int m_size;//当前储存人数
};
//1添加联系人
void addPerson(struct Addressbook* abs)
{
//判断通讯录是否满了 通讯录满了就不再添加
if (abs->m_size == MAX)
{
cout << "通讯录满了" << endl;
return;
}
else
{
//abs->m_size> name;
abs->Addressbook[abs->m_size].m_Name = name;
//性别:1男 2女
while (true)
{
cout << "请输入性别" << endl;
cout << "1----男" << endl;
cout << "2----女" << endl;
int sex = 0;
cin >> sex;
if (sex == 1 || sex == 2)
{
abs->Addressbook[abs->m_size].m_sex = sex;
break;
}
cout << "输入有误请重新请输入" << endl;
}
//年龄
while (true)
{
cout << "请输入年龄" << endl;
int age = 0;
cin >> age;
if (age < 0)
{
cout << "输入有误请重新请输入" << endl;
}
else
{
abs->Addressbook[abs->m_size].m_age = age;
break;
}
}
//号码
cout << "请输入联系号码" << endl;
string Phone;
cin >> Phone;
abs->Addressbook[abs->m_size].m_phone = Phone;
//住址
string Addr;
cout << "请输入联系住址" << endl;
cin >> Addr;
abs->Addressbook[abs->m_size].m_Addr = Addr;
}
cout << "成功添加联系人成功" << endl;
//更新通讯录人数
abs->m_size++;
system("pause");//请按任意键继续
system("cls");//清屏操作
}
void showPerson(Addressbook* abs)
{
if (abs->m_size ==0)
{
cout << "无联系人" << endl;
}
else
{
for (int i = 0; i < abs->m_size; i++)
{
cout << " 姓名:" << abs->Addressbook[i].m_Name << "\t";
cout << " 性别:" << (abs->Addressbook[i].m_sex==1 ? "男" : "女") << "\t";
cout << " 年龄:" << abs->Addressbook[i].m_age << "\t";
cout << " 号码:" << abs->Addressbook[i].m_phone << "\t";
cout << " 住址:" << abs->Addressbook[i].m_Addr << endl;
}
}
system("pause");//请按任意键继续
system("cls");//清屏操作
}
//1 检测联系人是否存在
//如果联系人不存在则提示无联系人
//如果存在存在则返回联系人在通讯录中的位置
int isExist(Addressbook* abs,string name)//参数1通讯录//参数2对比姓名
{
for (int i = 0; i < abs->m_size; i++)
{
//如果通讯录有和对比姓名相等则返回位置
if (abs->Addressbook[i].m_Name == name)
{
return i;
}
}
return -1;//对比完没有一样的名字则返回-1;
}
//删除指定联系人
void deletPerson(Addressbook* 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->Addressbook[i] = abs->Addressbook[i + 1];
}
cout << "删除成功" << endl;
abs->m_size--;
}
else
{
cout << "查无此人" << endl;
}
abs->m_size--;
system("pause");//请按任意键继续
system("cls");//清屏操作
}
//4查找指定联系人
void findPerson(Addressbook* abs)
{
cout << "请输入您要查找联系人的姓名" << endl;
string name;
cin >> name;
int ret = isExist(abs, name);
if (ret != -1)
{
cout << " 姓名:" << abs->Addressbook[ret].m_Name << "\t";
cout << " 性别:" << (abs->Addressbook[ret].m_sex == 1 ? "男" : "女") << "\t";
cout << " 年龄:" << abs->Addressbook[ret].m_age << "\t";
cout << " 号码:" << abs->Addressbook[ret].m_phone << "\t";
cout << " 住址:" << abs->Addressbook[ret].m_Addr << endl;
}
else
{
cout << "无联系人" << endl;
}
system("pause");//请按任意键继续
system("cls");//清屏操作
}
//修改指定联系人信息
void modifPerson(Addressbook* abs)
{
cout << "请输入您要修改联系人的姓名" << endl;
string name;
cin >> name;
int ret = isExist(abs, name);
if (ret != -1)
{
while (true)
{
cout << "请输入您要修改信息" << endl;
cout << "*********************************" << endl;
cout << "*********1:姓名************" << endl;
cout << "*********2: 性别***********" << endl;
cout << "*********3: 年龄***********" << endl;
cout << "*********4: 号码***********" << endl;
cout << "*********5: 住址***********" << endl;
cout << "*********************************" << endl;
cout << "请输入您要修改信息" << endl;
int a = 0;
cin >> a;
switch (a)
{//修改姓名
case 1:
{
string name;
cout << "请输入姓名" << endl;
cin >> name;
abs->Addressbook[ret].m_Name = name;
cout << "修改成功" << endl;
system("pause");//请按任意键继续
system("cls");//清屏操作
return;
}
//性别:1男 2女
case 2:
{
while (true)
{
cout << "请输入性别" << endl;
cout << "1----男" << endl;
cout << "2----女" << endl;
int sex = 0;
cin >> sex;
while (true)
{
if (sex == 1 || sex == 2)
{
abs->Addressbook[ret].m_sex = sex;
system("cls");//清屏操作
cout << "修改成功" << endl;
system("pause");//请按任意键继续
return;
}
else
{
cout << "输入有误请重新请输入" << endl;
break;
system("cls");//清屏操作
}
}
}
}
break;
//年龄
case 3:
{
while (true)
{
cout << "请输入年龄" << endl;
int age = 0;
cin >> age;
if (age < 0)
{
cout << "输入有误请重新请输入" << endl;
}
else
{
abs->Addressbook[ret].m_age = age;
cout << "修改成功" << endl;
system("pause");//请按任意键继续
system("cls");//清屏操作
}
return;
}
}
case 4:
{
//号码
cout << "请输入联系号码" << endl;
string Phone;
cin >> Phone;
abs->Addressbook[ret].m_phone = Phone;
cout << "修改成功" << endl;
system("pause");//请按任意键继续
system("cls");//清屏操作
}
return;
case 5:
{
//住址
string Addr;
cout << "请输入联系住址" << endl;
cin >> Addr;
abs->Addressbook[ret].m_Addr = Addr;
cout << "修改成功" << endl;
system("pause");//请按任意键继续
system("cls");//清屏操作
}
return;
define:
break;
cout << "选择错误请重新选择" << endl;
}
}
cout << "修改成功" << endl;
system("pause");//请按任意键继续
system("cls");//清屏操作
}
else
{
cout << "未找到联系人" << endl;
}
system("pause");//请按任意键继续
system("cls");//清屏操作
}
void cleanPerson(Addressbook* abs)
{
abs->m_size = 0;
cout << "屏幕已清空" << endl;
system("pause");//请按任意键继续
system("cls");//清屏操作
}
//1 封装显示页面函数
void showmenu()
{
cout << "*********************************" << endl;
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()
{
struct Addressbook abs;
abs.m_size = 0;
int select = 0;
while(true)
{
showmenu();
cin >> select;
switch (select)
{
case 1://添加联系人
/*添加联系人实现步骤:
设计联系人结构体
设计通讯录结构体
main函数中创建通讯录
封装添加联系人函数
测试添加联系人功能
5.1设计联系人结构体
联系人信息包括:姓名、性别、年龄、联系电话、家庭住址
*/
addPerson(&abs);//利用地址传递,可以修饰实际参数
break;
case 2://显示联系人
//封装显示联系人函数
showPerson(&abs);
//测试显示联系人功能
break;
case 3://按照姓名删除联系人
//{
// //1 检测联系人是否存在
// //如果联系人不存在则提示无联系人
// //如果存在存在则返回联系人在通讯录中的位置
// cout << "请输入要删除联系人的姓名" << endl;
// string name;
// cin >> name;
// if (isExist(&abs, name) == -1)
// cout << "查无此人" << endl;
// else
// cout << "找到了" << endl;
// //2 封装删除联系人函数
// //3 测试删除联系人功能
//}
deletPerson(&abs);
break;
case 4://查找联系人
findPerson(&abs);
//封装查找联系人函数
//测试查找指定联系人
break;
case 5://修改联系人
modifPerson(&abs);
// 1 封装修改联系人函数
// //2测试修改联系人功能
break;
case 6://清空联系人
cleanPerson(&abs);
break;
case 0://退出通讯录
cout << "欢迎下次使用" << endl;
system("pause");
return 0;
default:
cout << "选择错误,请重新选择" << endl;
system("pause");
system("cls");
break;
}
}
system("pause");
return 0;
}
1:菜单功能
功能描述:用户选择功能界面
界面如下:
在main中调用showMenul)
代码:
//1 封装显示页面函数
void showmenu()
{
cout << "*********************************" << endl;
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()
{
struct Addressbook abs;
abs.m_size = 0;
int select = 0;
while(true)
{
showmenu();
cin >> select;
switch (select)
{
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 0:
default:
cout << "选择错误,请重新选择" << endl;
system("pause");
system("cls");
break;
}
}
system("pause");
return 0;
}
2:退出功能
功能描述:退出通讯录系统
思路:根据用户的不同选择,进入不同功能,可以选择switch分支结构,将整个架构进行搭建当用户选择0时,执行退出功能。
代码
int main()
{
struct Addressbook abs;
abs.m_size = 0;
int select = 0;
while(true)
{
showmenu();
cin >> select;
switch (select)
{
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 0:
cout << "欢迎下次使用" << endl;
system("pause");
return 0;
default:
cout << "选择错误,请重新选择" << endl;
system("pause");
system("cls");
break;
}
}
system("pause");
return 0;
}
3:添加联系人功能
功能描述:实现添加联系人信息,上限为1000人实现
步骤:
设计联系人结构体
设计通讯录结构体
main函数中创建通讯录;
封装联系人函数
测试功能
代码
//1添加联系人
void addPerson(struct Addressbook* abs)
{
//判断通讯录是否满了 通讯录满了就不再添加
if (abs->m_size == MAX)
{
cout << "通讯录满了" << endl;
return;
}
else
{
//abs->m_size> name;
abs->Addressbook[abs->m_size].m_Name = name;
//性别:1男 2女
while (true)
{
cout << "请输入性别" << endl;
cout << "1----男" << endl;
cout << "2----女" << endl;
int sex = 0;
cin >> sex;
if (sex == 1 || sex == 2)
{
abs->Addressbook[abs->m_size].m_sex = sex;
break;
}
cout << "输入有误请重新请输入" << endl;
}
//年龄
while (true)
{
cout << "请输入年龄" << endl;
int age = 0;
cin >> age;
if (age < 0)
{
cout << "输入有误请重新请输入" << endl;
}
else
{
abs->Addressbook[abs->m_size].m_age = age;
break;
}
}
//号码
cout << "请输入联系号码" << endl;
string Phone;
cin >> Phone;
abs->Addressbook[abs->m_size].m_phone = Phone;
//住址
string Addr;
cout << "请输入联系住址" << endl;
cin >> Addr;
abs->Addressbook[abs->m_size].m_Addr = Addr;
}
cout << "成功添加联系人成功" << endl;
//更新通讯录人数
abs->m_size++;
system("pause");//请按任意键继续
system("cls");//清屏操作
}
void showmenu()
{
cout << "*********************************" << endl;
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()
{
struct Addressbook abs;
abs.m_size = 0;
int select = 0;
while(true)
{
showmenu();
cin >> select;
switch (select)
{
case 1:
addPerson(&abs);//利用地址传递,可以修饰实际参数
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 0:
default:
cout << "选择错误,请重新选择" << endl;
system("pause");
system("cls");
break;
}
}
system("pause");
return 0;
}
4:显示联系人
功能描述:显示通讯录中已有联系人的信息封装显示联系人函数
测示该函数。
思路:判断通讯录中的人数若人数为0则提记录为0
若人数大于0,则显示通迅录中联系人的信息。
代码
void showPerson(Addressbook* abs)
{
if (abs->m_size ==0)
{
cout << "无联系人" << endl;
}
else
{
for (int i = 0; i < abs->m_size; i++)
{
cout << " 姓名:" << abs->Addressbook[i].m_Name << "\t";
cout << " 性别:" << (abs->Addressbook[i].m_sex==1 ? "男" : "女") << "\t";
cout << " 年龄:" << abs->Addressbook[i].m_age << "\t";
cout << " 号码:" << abs->Addressbook[i].m_phone << "\t";
cout << " 住址:" << abs->Addressbook[i].m_Addr << endl;
}
}
system("pause");//请按任意键继续
system("cls");//清屏操作
}
void showmenu()
{
cout << "*********************************" << endl;
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()
{
struct Addressbook abs;
abs.m_size = 0;
int select = 0;
while(true)
{
showmenu();
cin >> select;
switch (select)
{
case 1:
break;
case 2:
showPerson(&abs);
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 0:
default:
cout << "选择错误,请重新选择" << endl;
system("pause");
system("cls");
break;
}
}
system("pause");
return 0;
}
5:删除联系人
功能描述:按照姓名删除指定联系人
实现步骤聚:
检测联系人是否存在
封装删除联系人函数
测试函数功能
int isExist(Addressbook* abs,string name)//参数1通讯录//参数2对比姓名
{
for (int i = 0; i < abs->m_size; i++)
{
//如果通讯录有和对比姓名相等则返回位置
if (abs->Addressbook[i].m_Name == name)
{
return i;
}
}
return -1;//对比完没有一样的名字则返回-1;
}
void deletPerson(Addressbook* 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->Addressbook[i] = abs->Addressbook[i + 1];
}
cout << "删除成功" << endl;
abs->m_size--;
}
else
{
cout << "查无此人" << endl;
}
abs->m_size--;
system("pause");//请按任意键继续
system("cls");//清屏操作
}
void showmenu()
{
cout << "*********************************" << endl;
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()
{
struct Addressbook abs;
abs.m_size = 0;
int select = 0;
while(true)
{
showmenu();
cin >> select;
switch (select)
{
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 0:
default:
cout << "选择错误,请重新选择" << endl;
system("pause");
system("cls");
break;
}
}
system("pause");
return 0;
}
6:查找联系人
功能描述按照用户输入的姓名查看指定联系人信息步骤蔡:
封装查找函数.
测试函数
思路:判断用户输入的名字是否存在
//查找指定联系人
void findPerson(Addressbook* abs)
{
cout << "请输入您要查找联系人的姓名" << endl;
string name;
cin >> name;
int ret = isExist(abs, name);
if (ret != -1)
{
cout << " 姓名:" << abs->Addressbook[ret].m_Name << "\t";
cout << " 性别:" << (abs->Addressbook[ret].m_sex == 1 ? "男" : "女") << "\t";
cout << " 年龄:" << abs->Addressbook[ret].m_age << "\t";
cout << " 号码:" << abs->Addressbook[ret].m_phone << "\t";
cout << " 住址:" << abs->Addressbook[ret].m_Addr << endl;
}
else
{
cout << "无联系人" << endl;
}
system("pause");//请按任意键继续
system("cls");//清屏操作
}
void showmenu()
{
cout << "*********************************" << endl;
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()
{
struct Addressbook abs;
abs.m_size = 0;
int select = 0;
while(true)
{
showmenu();
cin >> select;
switch (select)
{
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
findPerson(&abs);
break;
case 5:
break;
case 6:
break;
case 0:
default:
cout << "选择错误,请重新选择" << endl;
system("pause");
system("cls");
break;
}
}
system("pause");
return 0;
}