此案例贯穿了基础编程的大部分知识点,最具代表性的案例
通讯录功能介绍
储存数据包括:姓名·性别·年龄·电话·住址
功能有:添加·查询·删除·修改·清空
代码展示
#include <iostream>
#define Max 1000
using namespace std;
//联系人结构体
struct Person
{
string m_name;//姓名
int m_gender = 0;//性别 0女 1男
int m_age = 0;//年龄
string m_phoneNum;//电话
string m_address;//住址
};
//通讯录结构体
struct Addressbooks
{
//通讯录中保存联系人数组
struct Person personArray[Max];
//通讯里中当前记录联系人个数
int m_size = 0;
};
//1.添加联系人功能
void addPerson(Addressbooks * abs)
{
//判断通讯录是否满人
if (abs->m_size == Max)
{
cout << "通讯录已满,无法添加!" << endl;
return;
}
else
{
//添加具体联系人
string name;
cout << "请输入姓名:";
cin >> name;
abs->personArray[abs->m_size].m_name = name;
int gender = 0;
cout << "请输入性别(女 0/男 1);";
cin >> gender;
while (true)
{
if (gender == 0 || gender == 1)
{
abs->personArray[abs->m_size].m_gender = gender;
break;
}
else
{
cout << "输入有误,请重新输入性别(女 0/男 1):";
cin >> gender;
}
}
//年龄
int age = 0;
cout << "请输入年龄:";
cin >> age;
abs->personArray[abs->m_size].m_age = age;
//电话
string phoneNum;
cout << "请输入电话号码:";
cin >> phoneNum;
abs->personArray[abs->m_size].m_phoneNum = phoneNum;
//住址
string address;
cout << "请输入住址:";
cin >> address;
abs->personArray[abs->m_size].m_address = address;
//更新人数
abs->m_size++;
cout << "添加成功" << endl;
system("pause");
system("cls");
}
}
//显示联系人
void showPerson(Addressbooks* abs)
{
if (abs->m_size == 0)
{
cout << "通讯录为空" << endl;
}
else
{
for (int i = 0;i < abs->m_size;i++)
{
cout << "姓名:" << abs->personArray[i].m_name << "\t";//name
cout << "性别:" << (abs->personArray[i].m_gender == 0 ? "女" : "男") << "\t";//gender
cout << "年龄:" << abs->personArray[i].m_age << "\t";//age
cout << "电话号码:" << abs->personArray[i].m_phoneNum << "\t";//phone
cout << "住址:" << abs->personArray[i].m_address << "\t";//address
cout << endl;
}
}
system("pause");
system("cls");
}
//删除联系人(是否存在)
int existPerson(Addressbooks* abs, string name)
{
for (int i = 0;i < abs->m_size;i++)
{
if (abs->personArray[i].m_name == name)
{
return i;
}
}
return -1;
}
//删除指定联系人
void deletePerson(Addressbooks* abs)
{
string name;
cout << "请您输入想要删除的联系人的姓名:";
cin >> name;
int ret = existPerson(abs, name);
if (ret != -1)
{
for (int i = ret;i < abs->m_size;i++)
{
//数据前移
abs->personArray[i] = abs->personArray[i = 1];
}
if (abs->m_size > 0)
{
abs->m_size--;//更新人员数量
cout << "删除成功" << endl;
}
else
{
cout << "删除失败,通讯录为空" << endl;
}
}
else
{
cout << "查无此人" << endl;
}
system("pause");
system("cls");
}
//查找联系人
void findPerson(Addressbooks* abs)
{
if (abs->m_size > 0)
{
string name;
cout << "请输入您想要查找的联系人的姓名:";
cin >> name;
int ret = existPerson(abs, name);
if (ret != -1)
{
cout << "姓名:" << abs->personArray[ret].m_name << "\t";//name
cout << "性别:" << (abs->personArray[ret].m_gender == 0 ? "女" : "男") << "\t";//gender
cout << "年龄:" << abs->personArray[ret].m_age << "\t";//age
cout << "电话号码:" << abs->personArray[ret].m_phoneNum << "\t";//phone
cout << "住址:" << abs->personArray[ret].m_address << "\t";//address
cout << endl;
}
else
{
cout << "查无此人" << endl;
}
}
else
{
cout << "无法查找,通讯录为空" << endl;
}
system("pause");
system("cls");
}
//修改指定联系人
void modifyPerson(Addressbooks* abs)
{
string name;
cout << "请输入您想要修改的联系人的姓名:";
cin >> name;
int ret = existPerson(abs, name);
if (ret != -1)
{
//name
string name;
cout << "请输入姓名:";
cin >> name;
abs->personArray[ret].m_name = name;
//gender
int gender = 0;
cout << "请输入性别(0 女/1 男):";
cin >> gender;
abs->personArray[ret].m_gender = gender;
//age
int age = 0;
cout << "请输入年龄:";
cin >> age;
abs->personArray[ret].m_age = age;
//phone
string phoneNum;
cout << "请输入电话号码:";
cin >> phoneNum;
abs->personArray[ret].m_phoneNum = phoneNum;
//address
string address;
cout << "请输入住址:";
cin >> address;
abs->personArray[ret].m_address = address;
cout << "修改成功" << endl;
}
else
{
cout << "查无此人" << endl;
}
system("pause");
system("cls");
}
//清空联系人
void cleanPerson(Addressbooks* abs)
{
while (1) {
char confirm;
cout << "确定要清空联系人吗?(y/n):";
cin >> confirm;
if (confirm == 'y' || confirm == 'Y')
{
abs->m_size = 0;
cout << "联系人已清空" << endl;
break;
}
else
{
if (confirm == 'n' || confirm == 'N')
{
cout << "清空取消" << endl;
break;
}
else
{
cout << "!!没有此操作!!" << endl;
}
}
}
system("pause");
system("cls");
}
//显示菜单
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;
}
int main()
{
//创建结构体变量
Addressbooks abs;
//初始化通讯录中当前人员个数
abs.m_size = 0;
while (true) //循环调用
{
int select = 0;//创建用户选择输入的变量
//调用菜单界面
showMenu();
cin >> select;
switch (select)
{
case 1://添加联系人
addPerson(&abs);
break;
case 2: //显示联系人
showPerson(&abs);
break;
case 3: //删除联系人
deletePerson(&abs);
break;
case 4: // 查找联系人
findPerson(&abs);
break;
case 5: //修改联系人
modifyPerson(&abs);
break;
case 6:
cleanPerson(&abs);//清空联系人
break;
case 0: //退出通讯录
cout << "欢迎下次使用" << endl;
system("pause");
return 0;
default:
cout << "!!没有此操作!!" << endl;
break;
}
}
system("pause");
return 0;
}