今天我们来实现一个简单的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;}//若遍历结束没有找到,返回-1return -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;
}