今天我们来实现一个简单的c++通讯录管理系统!!!
源码关注一下,私我获取~
效果大概如下图~
大致功能:
添加联系人:包括联系人的姓名、性别、年龄、电话号码、地址
显示联系人:显示通讯录中所有联系人的信息
删除联系人:根据要删除的联系人的姓名删除对应联系人
查找联系人:根据姓名查找联系人相关信息
修改联系人:根据要修改联系人的姓名将所有信息重新修改一遍
清空通讯录:删除通讯录中的所有联系人
退出系统
准备工作:
通讯录最大人数:
这里我们define一个常量来存储通讯录的最大内存
#define MAX 1000//可存放的最大数(方便维护数据)
联系人的信息我们用结构体来存储:
代码如下:
struct Person {
string name; //姓名
int gender;//性别 1 男 2 女
int age; //年龄
string number; //电话号码
string address; //地址
};
通讯录我们也用结构体来存储联系人信息以及联系人数:
代码如下:
struct AddressBook {
Person personArray[MAX];//通讯录中保存联系人信息数组
int sum; //通讯录人数
};
由于我们功能中要实现删除操作,所以我们通讯录存储联系人的时候用链表来存储方便后续的增删查改也不会浪费空间
菜单界面:
我们用一个函数来写菜单方便之后的调用:
//一、显示菜单界面
void showMenu() {
cout << " ******通讯录管理系统******" << endl;
cout << "欢迎来到通讯录管理系统!!!" << endl;
cout << "______________________________________" << endl;
cout << "| 菜单 |" << endl;
cout << "|------------------------------------|" << endl;
cout << "| 1.添加联系人 |" << endl;
cout << "|------------------------------------|" << endl;
cout << "| 2.显示联系人 |" << endl;
cout << "|------------------------------------|" << endl;
cout << "| 3.删除联系人 |" << endl;
cout << "|------------------------------------|" << endl;
cout << "| 4.查找联系人 |" << endl;
cout << "|------------------------------------|" << endl;
cout << "| 5.修改联系人 |" << endl;
cout << "|------------------------------------|" << endl;
cout << "| 6.清空联系人 |" << endl;
cout << "|------------------------------------|" << endl;
cout << "| 0.退出通讯录 |" << endl;
cout << "|------------------------------------|" << endl;
cout << "--------------------------------------" << endl;
}
根据姓名检查联系人是否存在:
由于我们很多功能都需要通过姓名来查找联系人来查找信息、删除联系人以及修改联系人信息,所以我们单独将这个部分的功能放在一个函数中方便调用
//二、检查联系人是否存在,如果存在,返回具体位置,不存在返回-1
int isExsit(AddressBook* abs,string name) {
for (int i = 0; i < abs->sum; i++) {
//若找到该用户
if (name == abs->personArray[i].name) return i;
}
//若遍历结束没有找到,返回-1
return -1;
}
1.添加联系人:
判断通讯录是否已满:
if (abs->sum == MAX) {
cout << "通讯录已满,请先清理再添加" << endl;
return;
}
添加联系人信息(包括姓名、性别、年龄、电话号码和地址)
//姓名
string name;
cout << "请输入联系人姓名:";
cin >> name;
abs->personArray[abs->sum].name = name;
//性别
int sex = 0;
while (true) { //输入有误重新输入
cout << "请输入性别:" << endl;
cout << "1--男" << endl;
cout << "2--女" << endl;
cin >> sex;
if (sex == 1 || sex == 2) {
abs->personArray[abs->sum].gender = sex;
break;
}
else {
cout << "输入格式错误,请重新输入!!!" << endl;
cout << endl;
}
}
//年龄
cout << "请输入年龄:";
int age=0;
while (true) {
cin >> age;
if (age > 0 && age <= 200) {
abs->personArray[abs->sum].age = age;
break;
}
cout << "输入年龄不合理,请重新输入!!!" << endl;
}
//电话
cout << "请输入电话号码:(11位数字)";
string number;
while (true) {
cin >> number;
if (number.length() == 11) {
abs->personArray[abs->sum].number = number;
break;
}
cout << "输入的电话号码格式不正确,请重新输入哦!!" << endl;
}
//地址
cout << "请输入地址:";
string address;
cin >> address;
abs->personArray[abs->sum].address = address;
更新通讯录人数并提示添加成功
//更新通讯录人数
abs->sum++;
cout << "添加成功吼吼吼!" << endl;
处理界面:
system("pause");//请按任意键继续
system("cls");//清屏
2.显示所有联系人信息
判断通讯录是否为空:
if (abs->sum == 0) cout << "没有联系人显示,赶紧添加叭!!!" << endl;
遍历通讯录,输出所有联系人的信息:
else {
for (int i = 0; i < abs->sum; i++) {
cout << "姓名:" << abs->personArray[i].name<<"\t";
cout << "性别:" << (abs->personArray[i].gender== 1 ?"男":"女")<<"\t";
cout << "年龄:" << abs->personArray[i].age << "\t";
cout << "电话号码:" << abs->personArray[i].number << "\t";
cout<< "地址:" << abs->personArray[i].address << endl;
}
}
处理界面:
system("pause");//请按任意键继续
system("cls");//清屏
3.删除联系人:
查找联系人,存在则删除,不存在则提示:
cout << "请输入要删除的联系人:";
string name;
cin >> name;
int ret = isExsit(abs, name);
if (ret != -1) { //找到指定联系人
for (int i = ret; i < abs->sum; i++) {
//数据前移
abs->personArray[i] = abs->personArray[i + 1];
}
abs->sum--;//更新通讯录中的人数
cout << "滴滴!删除成功啦!!!" << endl;
}
else cout << "没有找到该联系人" << endl;
处理界面:
system("pause");//请按任意键继续
system("cls");//清屏
4.查找联系人
查找联系人,存在则输出信息,不存在则提示
string name;
cout << "请输入你要查找的联系人的姓名:";
cin >> name;
int ret=isExsit(abs, name);
if (ret != -1) {
cout << "查到该联系人,信息如下:"<<endl;
cout << "姓名:" << abs->personArray[ret].name << "\t";
cout << "性别:" << (abs->personArray[ret].gender == 1 ? "男" : "女") << "\t";
cout << "年龄:" << abs->personArray[ret].age << "\t";
cout << "电话号码:" << abs->personArray[ret].number << "\t";
cout << "地址:" << abs->personArray[ret].address << endl;
}
else cout << "没有找到这个联系人奥!" << endl;
处理界面:
system("pause");//请按任意键继续
system("cls");//清屏
5.修改联系人信息
查找联系人,如果存在则修改联系人信息,不存在则提示
string name;
cout << "请输入你要查找的联系人的姓名:";
cin >> name;
int ret = isExsit(abs, name);
if (ret != -1) {
cout << "请根据提示填写你要修改的信息:" << endl;
//姓名
string name;
cout << "请输入联系人姓名:";
cin >> name;
abs->personArray[ret].name = name;
//性别
int sex = 0;
while (true) { //输入有误重新输入
cout << "请输入性别:" << endl;
cout << "1--男" << endl;
cout << "2--女" << endl;
cin >> sex;
if (sex == 1 || sex == 2) {
abs->personArray[ret].gender = sex;
break;
}
else {
cout << "输入格式错误,请重新输入!!!" << endl;
cout << endl;
}
}
//年龄
cout << "请输入年龄:";
int age = 0;
while (true) {
cin >> age;
if (age > 0 && age <= 200) {
abs->personArray[ret].age = age;
break;
}
cout << "输入年龄不合理,请重新输入!!!" << endl;
}
//电话
cout << "请输入电话号码:(11位数字)";
string number;
while (true) {
cin >> number;
if (number.length() == 11) {
abs->personArray[ret].number = number;
break;
}
cout << "输入的电话号码格式不正确,请重新输入哦!!" << endl;
}
//地址
cout << "请输入地址:";
string address;
cin >> address;
abs->personArray[ret].address = address;
cout << "修改成功!!!" << endl;
}
else cout << "没有找到这个联系人奥!" << endl;
处理界面:
system("pause");//请按任意键继续
system("cls");//清屏
6.清空通讯录
直接将通讯录人数置为0
abs->sum = 0;
处理界面:
system("pause");//请按任意键继续
system("cls");//清屏
主函数:
我们运用switch和case结构来调用函数:
int main() {
int select;//创建用户输入的变量
AddressBook abs;//创建结构体变量
abs.sum = 0;//初始化通讯录当前人员个数
//1.菜单的调用
while (true) { //循环操作
showMenu();
system("color 7D");
cin >> select;
switch(select) {
case 1: //1.添加联系人
addPerson(&abs);//利用地址传递可以修改实参
break;
case 2: //2.添加联系人
showAdress(&abs);
break;
case 3: //3.删除联系人
deleteAddress(&abs);
break;
case 4: //4.查找联系人
findAddress(&abs);
break;
case 5: // 5.修改联系人
modifyAddress(&abs);
break;
case 6: //6.清空联系人
clearAddress(&abs);
break;
case 0: //0.退出通讯录
cout << "拜拜宝宝:)" << endl;
cout<<"欢迎下次使用!!!" << endl;
system("pause");//点击任意键退出系统
return 0;
break;
}
}
return 0;
}