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