通讯录管理系统
1 系统需求
使用C++实现一个通讯录管理系统
使用Clion+Cygwin环境
系统中实现的功能如下
- 添加联系人:添加用户信息(姓名、性别、联系电话、家庭住址),做多记录1000人
- 显示联系人:显示通讯录中所有人的信息
- 删除联系人:按照姓名删除指定联系人
- 查找联系人:按照姓名查看联系人的信息
- 修改联系人:按照姓名重新修改指定联系人信息
- 清空联系人:清空通讯录的所有信息
- 退出通讯录:退出当前使用的通讯录
2 创建项目
3 菜单功能
shouMenu函数:
void showMenu(){
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;
}
在主方法中调用该菜单界面
4 退出功能
int main() {
int select; // 功能选项
bool flag = true; // 判断是否退出通讯录
while(flag){
showMenu(); // 调用菜单界面
cout <<"请输入您的选择(数字):";
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;
flag = false;
break;
default:
cout<<"您输入有误,请重新输入!";
break;
}
}
return 0;
}
5 添加联系人
5.1 设计联系人结构体
struct Person{ // 联系人结构体,封装联系人的姓名,性别,电话,地址信息
string name; // 姓名
string gender; // 性别
string phone_number; // 电话
string address; // 住址
};
5.2 设计通讯录结构体
#define Max_SIZE 1000 // 最大人数
struct AddressBook {
struct Person persons[Max_SIZE]; //通讯录中保存的联系人数组
int size; //通讯录的人数
};
5.3 main函数中创建通讯录
AddressBook address_book; // 创建通讯录结构体变量
address_book.size = 0; // 初始化通讯录人数为0
5.4 封装添加联系人函数
void addPerson(AddressBook &addressBook) {
if (addressBook.size == Max_SIZE) { // 若联系人满,则无法添加
cout << "通讯录已满无法添加" << endl;
return;
}
string name;
string gender;
string phone_number;
string address;
cout << "请输入姓名:";
cin >> name;
cout << "请输入性别:";
cin >> gender;
cout << "请输入电话:";
cin >> phone_number;
cout << "请输入地址:";
cin >> address;
addressBook.persons[addressBook.size].name = name;
addressBook.persons[addressBook.size].gender = gender;
addressBook.persons[addressBook.size].phone_number = phone_number;
addressBook.persons[addressBook.size].address = address;
addressBook.size++;
cout << "添加成功!!!" << endl;
}
6 显示联系人
6.1 封装显示联系人函数
void showPerson(AddressBook addressBook) {
if (addressBook.size == 0) { // 无联系人,则输出为空
cout << "联系人为空" << endl;
return;
}
cout<<"联系人信息如下:"<<endl;
cout<<"----------------------------------------"<<endl;
for(int i = 0;i<addressBook.size;i++){
cout<<"姓名:"<<addressBook.persons[i].name<<"\t";
cout<<"性别"<<addressBook.persons[i].gender<<"\t";
cout<<"电话号码:"<<addressBook.persons[i].phone_number<<"\t";
cout<<"住址:"<<addressBook.persons[i].address<<endl;
cout<<"----------------------------------------"<<endl;
}
}
6.2 测试显示联系功能
case 2: // 显示联系人
showPerson(address_book);
getchar();
cout << "输入任意键继续" << endl;
getchar();
break;
7 删除联系人
删除联系人的实现步骤:
- 封装检测联系人是否存在
- 封装删除联系人功能功能
- 测试删除联系人功能
7.1 封装检测联系人是否存在函数
int isExist(AddressBook addressBook, string name) {
for (int i = 0; i < addressBook.size; i++) {
if (addressBook.persons[i].name == name) {
return i;
}
}
return -1;
}
7.2 封装删除联系人功能功能
void deletePerson(AddressBook &addressBook){
string name;
cout<<"请输入要删除的联系人姓名";
cin >> name;
int flag = isExist(addressBook,name);
if(flag == -1){
cout<<"查无此人"<<endl;
}
else{
if(flag == addressBook.size){
addressBook.size--;
}
else{
for(int i = flag;i<addressBook.size-1;i++){
addressBook.persons[i] = addressBook.persons[i+1];
addressBook.size--;
}
}
cout<<"删除成功"<<endl;
}
}
7.3 测试删除联系人功能
case 5: // 删除联系人
deletePerson(address_book);
getchar();
cout << "输入任意键继续" << endl;
getchar();
break;
8 查找联系人
实现步骤:
- 封装查找联系人函数
- 测试功能
8.1 封装查找联系人函数
void findPerson(AddressBook addressBook){
string name;
cout << "请输入要查找的联系人姓名:";
cin >> name;
int flag = isExist(addressBook, name);
if (flag == -1) {
cout << "查无此人" << endl;
}
else {
cout << "姓名:" << addressBook.persons[flag].name << "\t";
cout << "性别" << addressBook.persons[flag].gender << "\t";
cout << "电话号码:" << addressBook.persons[flag].phone_number << "\t";
cout << "住址:" << addressBook.persons[flag].address << endl;
}
}
8.2 测试功能
case 3: // 查找联系人
findPerson(address_book);
getchar();
cout << "输入任意键继续" << endl;
getchar();
break;
9 修改联系人
实现步骤:
- 封装修改联系人函数
- 测试联系人修改功能
9.1 封装修改联系人函数
void modifyPerson(AddressBook addressBook) {
string name;
cout << "请输入要查找的联系人姓名:";
cin >> name;
int flag = isExist(addressBook, name);
if (flag == -1) {
cout << "查无此人" << endl;
} else {
string name;
string gender;
string phone_number;
string address;
cout << "请输入姓名:";
cin >> name;
cout << "请输入性别:";
cin >> gender;
cout << "请输入电话:";
cin >> phone_number;
cout << "请输入地址:";
cin >> address;
addressBook.persons[flag].name = name;
addressBook.persons[flag].gender = gender;
addressBook.persons[flag].phone_number = phone_number;
addressBook.persons[flag].address = address;
cout << "修改成功!!!" << endl;
}
}
9.2 测试联系人修改功能
case 4: // 修改联系人
modifyPerson(address_book);
getchar();
cout << "输入任意键继续" << endl;
getchar();
break;
10 清空联系人
- 封装清空联系人函数
- 测试清空联系人
10.1 封装清空联系人函数
void cleanPerson(AddressBook &addressBook){
addressBook.size = 0;
cout<<"通讯录已清空"<<endl;
}
10.2 测试清空联系人
case 6: // 清空联系人
cleanPerson(address_book);
getchar();
cout << "输入任意键继续" << endl;
getchar();
break;
11 源代码
源代码评论私聊发