运用学到的C++结构体知识创建一个通讯录系统,有7大功能:
- 添加联系人:向通讯录中添加联系人姓名、电话、性别、年龄、家庭住址,最多可添加1000人。
- 显示联系人:显示通讯录中所有联系人信息
- 删除联系人:按照姓名进行删除指定联系人
- 查找联系人:按照姓名查找指定联系人
- 修改联系人:按照姓名重新修改指定联系人
- 清空联系人:清空通讯录中所有信息
- 退出通讯录:退出当前使用的通讯录
1、显示菜单栏
功能:显示用户可以执行的操作,实现菜单功能。
void showMenu()
{cout <<"*******************************" <}
效果&#xff1a;
2、退出通讯录
功能&#xff1a;退出通讯录系统
思路&#xff1a;根据用户的选择&#xff0c;执行不同的操作&#xff0c;可以用switch分支结构。
int main()
{int select &#61; 0;//输入你的选择项while(true){showMenu();cin >> select;switch (select){case 0://退出通讯录cout <<"欢迎下次使用" <}
效果&#xff1a;
3、添加联系人
功能&#xff1a;向通讯录中添加新的联系人及其其他相关信息。
- 创建联系人结构体
- 创建通讯录
- 添加联系人函数
- 测试功能
3.1 创建联系人结构体
struct contact
{string name;//姓名string gender;//性别int age;//年纪string phone_number;//联系电话string address;//地址
};
3.2 创建通讯录
# define MAX 1000
struct contact_book {struct contact array[MAX];//通讯录的最大容量int m_size;//通讯录目前有多少联系人
};
3.3 添加联系人函数
功能&#xff1a;添加新的联系人
需要判断一下通讯录容量是否达到上限。
void addPreson(struct contact_book *a)
{string name, gender, phone_number, address;int age;if (a->m_size &#61;&#61; MAX) {cout <<"通讯录已满&#xff0c;无法添加" <m_size;string name, addre, phone_number, gender;int age;cout <<"姓名&#xff1a;";cin >> name;a->array[index].name&#61;name;cout <<"性别&#xff1a;";cin >> gender;while (gender !&#61; "男" && gender !&#61; "女"){cout <<"性别输入有误&#xff0c;请重新输入"<> gender;}a->array[index].gender &#61; gender;cout <<"年龄&#xff1a;";cin >> age;a->array[index].age&#61;age;cout <<"联系电话&#xff1a;";cin >> phone_number;a->array[index].phone_number&#61;phone_number;cout <<"住址&#xff1a;";cin >> addre;a->array[index].address&#61;addre;a->m_size&#43;&#43;;cout <<"添加成功&#xff01;";system("cls");}}
3.4 测试功能
在主程序中加入”添加联系人“代码&#xff0c;测试功能。
int main()
{int select &#61; 0;//输入你的选择项contact_book arr;//结构体数组定义arr.m_size &#61; 0;while(true){showMenu();cin >> select;switch (select){case 1:// 添加联系人addPreson(&arr);break;case 0://退出通讯录cout <<"欢迎下次使用" <}
效果&#xff1a;
4、显示联系人
功能&#xff1a; 显示通讯录中所有的联系人及其信息。
4.1 显示联系人函数
void showPerson(contact_book* a)
{if (a->m_size &#61;&#61; 0){cout <<"当前记录为空" <m_size; i&#43;&#43;){cout <<"姓名&#xff1a;" <array[i].name <<"\t" <<"性别&#xff1a;" <array[i].gender <<"\t"<<"年龄&#xff1a;" <array[i].age<<"\t" <<"联系电话&#xff1a;" <array[i].phone_number<<"\t"<<"住址&#xff1a;" <array[i].address <}
4.2 主程序中调用
int main()
{int select &#61; 0;//输入你的选择项contact_book arr;//结构体数组定义arr.m_size &#61; 0;while(true){showMenu();cin >> select;switch (select){case 0://退出通讯录cout <<"欢迎下次使用" <}
效果&#xff1a;
5 删除联系人
功能&#xff1a;删除指定姓名的联系人
思路&#xff1a;
- 判断联系人是否存在
- 存在的话删除
5.1 判断联系人是否存在
int chechperson(string name,contact_book* a)
{if (a->m_size &#61;&#61; 0)return -1;else{for (int i &#61; 0; i m_size; i&#43;&#43;){if (name &#61;&#61; a->array[i].name)return i;}return -1;}
}
5.2 删除联系人函数
void deletePerson(contact_book* a)
{string name;cout <<"请输入你想删除的联系人" <> name;int index &#61; chechperson(name, a);if (index &#61;&#61; -1)cout <<"用户不存在"<m_size; i&#43;&#43;){a->array[index] &#61; a->array[index &#43; 1];}a->m_size--;}
}
5.3 主程序中调用
int main()
{int select &#61; 0;//输入你的选择项contact_book arr;//结构体数组定义arr.m_size &#61; 0;while(true){showMenu();cin >> select;switch (select){case 0://退出通讯录cout <<"欢迎下次使用" <}
效果&#xff1a;
6 查找联系人
功能&#xff1a;查找指定姓名的联系人信息。
void findPerson(contact_book* a)
{string name;cout <<"请输入要查找的联系人&#xff1a;";cin >> name;int i &#61; chechperson(name, a);if (i !&#61; -1){cout <<"姓名&#xff1a;" <array[i].name <<"\t" <<"性别&#xff1a;" <array[i].gender <<"\t"<<"年龄&#xff1a;" <array[i].age <<"\t" <<"联系电话&#xff1a;" <array[i].phone_number <<"\t"<<"住址&#xff1a;" <array[i].address <}
效果&#xff1a;
7 修改联系人
功能&#xff1a;修改指定姓名联系人的信息
void correctPersor(contact_book* a)
{//先找到有没有这个人cout <<"请输入想修改的联系人&#xff1a;";string name;cin >> name;int i &#61; chechperson(name, a);if (i!&#61;-1){cout <<"姓名&#xff1a;" <array[i].name <<"\t" <<"性别&#xff1a;" <array[i].gender <<"\t"<<"年龄&#xff1a;" <array[i].age <<"\t" <<"联系电话&#xff1a;" <array[i].phone_number <<"\t"<<"住址&#xff1a;" <array[i].address <> a->array[i].name;cout <<"性别&#xff1a;";cin >> gender;while (gender !&#61; "男" && gender !&#61; "女"){cout <<"性别输入有误&#xff0c;请重新输入" <> gender;}a->array[i].gender &#61; gender;cout <<"年龄&#xff1a;";cin >> a->array[i].age;cout <<"联系电话&#xff1a;";cin >> a->array[i].phone_number;cout <<"住址&#xff1a;";cin >> a->array[i].address;cout <<"修改成功&#xff01;";}elsecout <<"查找不到此联系人" <}
效果&#xff1a;
8 清空联系人
功能&#xff1a;把所有的联系人清空
思路&#xff1a;把通讯录数组的容量置为0
void clearPerson(contact_book* a)
{a->m_size &#61; 0;cout <<"清除成功";system("cls");
}
效果&#xff1a;