用VS2019所写,个人学习C++的第一个小项目,注释多,简单易懂,供大家参考。
可实现的功能有:
1、添加联系人
2、显示联系人
3、删除联系人
4、查找联系人
5、修改联系人
6、清空联系人
代码如下:
#include<iostream>
using namespace std;
#define MAX 100//通讯录最大人数
//联系人结构体
struct Preson
{
string m_Name;//姓名
int m_Sex;//性别 1男 2女
int m_Age;//年龄
string m_Phone;//电话
string m_Addr;//住址
};
//通讯录结构体
struct Addressbooks
{
struct Preson presonArray[MAX];
int m_max;//通讯录中的人数
};
//菜单界面
void ShowMenu()
{
cout << "-----1、添加联系人-----" << endl;
cout << "-----2、显示联系人-----" << endl;
cout << "-----3、删除联系人-----" << endl;
cout << "-----4、查找联系人-----" << endl;
cout << "-----5、修改联系人-----" << endl;
cout << "-----6、清空联系人-----" << endl;
cout << "-----0、退出通讯录-----" << endl;
}
//1、添加通讯录联系人函数
void addpreson(Addressbooks* abs)
{
//判断通讯录是否已经满人
if (abs->m_max == 100)
{
cout << "您的通信录人数已满" << endl;
return;
}
else
{
//添加联系人
//姓名
string name;
cout << "请输入您要添加联系人的姓名为:" << endl;
cin >> name;
abs->presonArray[abs->m_max].m_Name = name;
//性别
cout << "请输入您要添加联系人的性别为:"<<"1、男"<<"2、女"
<< endl;
int sex;
while (true)
{
cin >> sex;
if (sex == 1 || sex == 2)
{
abs->presonArray[abs->m_max].m_Sex = sex;
break;
}
cout << "输入有误请重新再输!" << endl;
}
//年龄
int age;
cout << "请输入您要添加联系人的年龄为:" << endl;
cin >> age;
abs->presonArray[abs->m_max].m_Age = age;
//电话
string phone;
cout << "请输入您要添加联系人的电话号码为:" << endl;
cin >> phone;
abs->presonArray[abs->m_max].m_Phone = phone;
//地址
string addr;
cout << "请输入您要添加联系人的地址为:" << endl;
cin >> addr;
abs->presonArray[abs->m_max].m_Addr = addr;
//更新通信录人数
abs->m_max++;
cout << "恭喜添加成功!" << endl;
system("pause");//请按任意键继续
system("cls");//清屏操作
}
}
//2、显示函数
void showpreson(Addressbooks* abs)
{
//判断通信录人数是否为0,若是显示为空
//如果不为零显示通信录联系人的信息
if (abs->m_max == 0)
{
cout << "您的通信录为空" << endl;
}
else
{
for (int i = 0; i < abs->m_max;i++)
{
cout << "您的第" << i+1 << "个联系人姓名为:" << abs->presonArray[i].m_Name << "\t";
cout << "性别:" << (abs->presonArray[i].m_Sex == 1 ? "男" : "女") << "\t";
cout << "年龄:" << abs->presonArray[i].m_Age << "\t";
cout << "电话号码:" << abs->presonArray[i].m_Phone << "\t";
cout << "地址:" << abs->presonArray[i].m_Addr << endl;
}
}
system("pause");//按任意键继续
system("cls");//清屏
}
//检测函数
//检测联系人是否存在,如果存在,返回联系人在数组中的具体位置,不存在返回-1
//参数一 通信录 参数二 对比姓名
int isExist(Addressbooks* abs, string name)
{
for (int i = 0;i < abs->m_max;i++)
{
//找到用户输入的姓名
if (abs->presonArray[i].m_Name == name)
{
return i;
}
}
//没找到返回-1
return -1;
}
//3、删除函数
void deletePerson(Addressbooks* abs)
{
cout << "请输入您要输入的联系人" << endl;
string name;
cin >> name;
//ret来接收返回值
int ret = isExist(abs, name);
if (ret != -1)
{
for (int i = ret;i < abs->m_max;i++)
{
//数据前移
abs->presonArray[i] = abs->presonArray[i + 1];
}
abs->m_max--;//更新通信录中联系人数
cout << "恭喜删除成功!" << endl;
}
else
{
cout << "对不起查无此人!" << endl;
}
system("pause");
system("cls");
}
//4、查找指定的联系人信息
void findPreson(Addressbooks* abs)
{
cout << "请输入您要查找联系人的姓名:" << endl;
string name;
cin >> name;
int ret = isExist(abs, name);//调用查找函数,查找是否有所要查找的联系人
if (ret != -1)//若所要查找的联系人存在
{
cout << "您的第" << ret + 1 << "个联系人姓名为:" << abs->presonArray[ret].m_Name << "\t";
cout << "性别:" << (abs->presonArray[ret].m_Sex == 1 ? "男" : "女") << "\t";
cout << "年龄:" << abs->presonArray[ret].m_Age << "\t";
cout << "电话号码:" << abs->presonArray[ret].m_Phone << "\t";
cout << "地址:" << abs->presonArray[ret].m_Addr << endl;
}
else//若没有所要查找的人
{
cout << "对不起查无此人!" << endl;
}
system("pause");//按任意键继续
system("cls");//清屏
}
//5、修改联系人
void modifyPreson(Addressbooks* abs)
{
cout << "请输入您要修改联系人的姓名" << endl;
string name;
cin >> name;
int ret = isExist(abs, name);//调用查找函数,查找联系人是否存在
if (ret != -1)//找到指定联系人
{
//先显示一下联系人当前的信息
cout << "您的第" << ret + 1 << "个联系人姓名为:" << abs->presonArray[ret].m_Name << "\t";
cout << "性别:" << (abs->presonArray[ret].m_Sex == 1 ? "男" : "女") << "\t";
cout << "年龄:" << abs->presonArray[ret].m_Age << "\t";
cout << "电话号码:" << abs->presonArray[ret].m_Phone << "\t";
cout << "地址:" << abs->presonArray[ret].m_Addr << endl;
//姓名
cout << "姓名是否要修改?" <<"1、修改 2、不修改" << endl;
int a = 0;
cin >> a;
if (a == 1)//若要修改
{
cout << "请输入修改后的姓名:" << endl;
string name;
cin >> name;
abs->presonArray[ret].m_Name = name;
}
//性别
cout << "性别是否要修改?" << "1、修改 2、不修改" << endl;
int b = 0;
cin >> b;
if (b == 1)//若要修改
{
cout << "请输入修改后的性别:" <<"1: 男 2:女" << endl;
int sex;
cin >> sex;
abs->presonArray[ret].m_Sex = sex;
}
//年龄
cout << "年龄是否要修改?" << "1、修改 2、不修改" << endl;
int c = 0;
cin >> c;
if (c == 1)//若要修改
{
cout << "请输入修改后的年龄:" << endl;
int age;
cin >> age;
abs->presonArray[ret].m_Age = age;
}
//电话
cout << "电话是否要修改?" << "1、修改 2、不修改" << endl;
int d = 0;
cin >> d;
if (d == 1)//若要修改
{
cout << "请输入修改后的电话:" << endl;
string phone;
cin >> phone;
abs->presonArray[ret].m_Phone = phone;
}
//住址
cout << "住址是否要修改?" << "1、修改 2、不修改" << endl;
int e = 0;
cin >> e;
if (e == 1)//若要修改
{
cout << "请输入修改后的住址:" << endl;
string addr;
cin >> addr;
abs->presonArray[ret].m_Addr = addr;
}
cout << "恭喜修改成功!" << endl;
}
else//未找到指定联系人
{
cout << "对不起查无此人!" << endl;
}
system("pause");//按任意键继续
system("cls");//清屏
}
//6、清空所有联系人
void cleanPreson(Addressbooks* abs)
{
abs->m_max = 0;//将当前记录的联系人数置0,做逻辑清空操作
cout << "通讯录已清空!" << endl;
system("pause");//按任意键继续
system("cls");//清屏操作
}
int main()
{
Addressbooks abs;//创建通信录
abs.m_max = 0;//初始化通信录
//用户选择输入
int select = 0;
while (1)
{
ShowMenu();
cin >> select;
switch (select)
{
case 1://1、添加联系人
addpreson(&abs);
break;
case 2://2、显示联系人
showpreson(&abs);
break;
case 3://3、删除联系人
deletePerson(&abs);
break;
case 4://4、查找联系人
findPreson(&abs);
break;
case 5://5、修改联系人
modifyPreson(&abs);
break;
case 6://6、清空联系人
cleanPreson(&abs);
break;
case 0://0、退出通讯录
cout << "欢迎下次使用" << endl;
system("pause");
return 0;
break;
}
}
system("pause");
return 0;
}