1.交互式通讯录系统
功能演示
启动界面
功能1:添加联系人
键入‘1’,依次填入联系人的个人信息
功能2:显示所有联系人
键入‘2’,显示所有联系人
如果通讯录无联系人,则展示“当前联系人记录为空”
如果通讯录有联系人,则展示所有联系人信息
功能3:删除指定联系人
键入‘3’,删除指定联系人
如果通讯录无联系人,则展示“当前联系人记录为空”
如果通讯录有联系人,则会提示“请输入你要删除的联系人姓名:”
如果删除的联系人不存在,则会提示“不存在此联系人”
如果删除的联系人存在,则删除成功
功能4:查找指定联系人
键入‘4’,查找指定联系人
如果通讯录无联系人,则展示“当前联系人记录为空”
如果通讯录有联系人,则会提示“请输入你要查找的联系人姓名:”
如果查找的联系人不存在,则会提示“不存在此联系人”
如果查找的联系人存在,则会展示联系人的信息
功能5:修改联系人信息
键入‘5’,修改联系人信息
如果通讯录无联系人,则展示“当前联系人记录为空”
如果通讯录有联系人,则会提示“请输入你要查找的联系人姓名:”
如果修改的联系人不存在,则会提示“不存在此联系人”
如果需要修改的联系人存在于通讯录,则依次填入联系人的个人信息
功能6:清空联系人信息
键入‘6’,清空联系人信息
如果通讯录无联系人,则展示“当前联系人记录为空”
如果通讯录有联系人,则进行二次确认提醒
如果此时键入‘1’,则会清空所有联系人
如果此时键入‘2’,则取消清空操作
功能7:退出程序
键入‘0’,退出程序
代码实现
#include <iostream>
using namespace std;
#define MAX 1000
struct person
{
string pName;
int pSex;
int pAge;
string pPhone;
string pAddr;
};
struct addressBooks {
person personArray[MAX];
int size;
};
void showMenu();
void addPerson(addressBooks* abs);
void showPerson(addressBooks* abs);
void deletePerson(addressBooks* abs);
void selectPerson(addressBooks* abs);
int isExist(addressBooks* abs, string name);
void updatePerson(addressBooks* abs);
void clearPerson(addressBooks* abs);
int main() {
addressBooks abs;
abs.size = 0;
while (true)
{
showMenu();
int select = 0;
cin >> select;
switch (select)
{
case 0:
cout << "退出" << endl;
system("pause");
return 0;
break;
case 1:
cout << "添加联系人" << endl;
addPerson(&abs);
break;
case 2:
cout << "显示联系人" << endl;
showPerson(&abs);
break;
case 3:
cout << "删除联系人" << endl;
deletePerson(&abs);
break;
case 4:
cout << "查找联系人" << endl;
selectPerson(&abs);
break;
case 5:
cout << "修改联系人" << endl;
updatePerson(&abs);
break;
case 6:
cout << "清空联系人" << endl;
clearPerson(&abs);
break;
}
}
system("pause");
return 0;
}
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;
cout << "请输入你想选择的功能" << endl;
}
void addPerson(addressBooks* abs) {
if (abs->size == MAX) {
cout << "通讯录已满,无法添加" << endl;
}
else {
string name;
int sex;
int age;
string phone;
string addr;
cout << "请输入姓名:" << endl;
cin >> name;
abs->personArray[abs->size].pName = name;
cout << "请输入性别:" << endl;
cout << "1 -- 男:" << endl;
cout << "2 -- 女:" << endl;
cin >> sex;
while (!(sex == 1 || sex == 2)) {
cout << "输入有误,请重新输入性别:" << endl;
cout << "1 -- 男:" << endl;
cout << "2 -- 女:" << endl;
cin >> sex;
}
abs->personArray[abs->size].pSex = sex;
cout << "请输入年龄:" << endl;
cin >> age;
while (!(age >= 0 && age <= 120)) {
cout << "输入有误,请重新输入年龄:" << endl;
cin >> age;
}
abs->personArray[abs->size].pAge = age;
cout << "请输入联系电话:" << endl;
cin >> phone;
while (!(phone.size() == 11)) {
cout << "输入有误,请重新输入联系电话:" << endl;
cin >> phone;
}
abs->personArray[abs->size].pPhone = phone;
cout << "请输入住址:" << endl;
cin >> addr;
abs->personArray[abs->size].pAddr = addr;
abs->size++;
cout << "添加成功" << endl;
}
system("pause");
system("cls");
}
void showPerson(addressBooks* abs) {
if (abs->size == 0) {
cout << "当前联系人记录为空" << endl;
}
else {
for (int i = 0; i < abs->size; i++) {
cout << "姓名:" << abs->personArray[i].pName
<< "\t年龄:" << abs->personArray[i].pAge
<< "\t性别:" << (abs->personArray[i].pSex == 1 ? "男" : "女")
<< "\t电话:" << abs->personArray[i].pPhone
<< "\t住址:" << abs->personArray[i].pAddr
<< endl;
}
}
system("pause");
system("cls");
}
void deletePerson(addressBooks* abs) {
if (abs->size == 0) {
cout << "当前联系人记录为空" << endl;
}
else {
string name;
cout << "请输入你要删除的联系人姓名:" << endl;
cin >> name;
int index = isExist(abs, name);
if (index != -1)
{
for (int i = index; i < abs->size; i++) {
abs->personArray[i] = abs->personArray[i + 1];
}
abs->size--;
cout << "删除成功" << endl;
}
else {
cout << "不存在此联系人" << endl;
}
}
system("pause");
system("cls");
}
void selectPerson(addressBooks* abs) {
if (abs->size == 0) {
cout << "当前联系人记录为空" << endl;
}
else {
string name;
cout << "请输入你要查找的联系人姓名:" << endl;
cin >> name;
int index = isExist(abs, name);
if (index != -1)
{
cout << "姓名:" << abs->personArray[index].pName
<< "\t年龄:" << abs->personArray[index].pAge
<< "\t性别:" << (abs->personArray[index].pSex == 1 ? "男" : "女")
<< "\t电话:" << abs->personArray[index].pPhone
<< "\t住址:" << abs->personArray[index].pAddr
<< endl;
}
else {
cout << "不存在此联系人" << endl;
}
}
system("pause");
system("cls");
}
int isExist(addressBooks* abs, string name) {
for (int i = 0; i < abs->size; i++) {
if (abs->personArray[i].pName == name) {
return i;
}
}
return -1;
}
void updatePerson(addressBooks* abs) {
if (abs->size == 0) {
cout << "当前联系人记录为空" << endl;
}
else {
string name;
cout << "请输入你要修改的联系人姓名:" << endl;
cin >> name;
int index = isExist(abs, name);
if (index != -1)
{
string name;
int age;
int sex;
string phone;
string addr;
cout << "请输入姓名:" << endl;
cin >> name;
abs->personArray[index].pName = name;
cout << "请输入性别:" << endl;
cout << "1 -- 男:" << endl;
cout << "2 -- 女:" << endl;
cin >> sex;
while (!(sex == 1 || sex == 2)) {
cout << "输入有误,请重新输入性别:" << endl;
cout << "1 -- 男:" << endl;
cout << "2 -- 女:" << endl;
cin >> sex;
}
abs->personArray[index].pSex = sex;
cout << "请输入年龄:" << endl;
cin >> age;
while (!(age >= 0 && age <= 120)) {
cout << "输入有误,请重新输入年龄:" << endl;
cin >> age;
}
abs->personArray[index].pAge = age;
cout << "请输入联系电话:" << endl;
cin >> phone;
while (!(phone.size() == 11)) {
cout << "输入有误,请重新输入联系电话:" << endl;
cin >> phone;
}
abs->personArray[index].pPhone = phone;
cout << "请输入住址:" << endl;
cin >> addr;
abs->personArray[index].pAddr = addr;
cout << "修改成功" << endl;
}
else {
cout << "不存在此联系人" << endl;
}
}
system("pause");
system("cls");
}
void clearPerson(addressBooks* abs) {
if (abs->size == 0) {
cout << "当前联系人记录为空" << endl;
}
else {
int comfire;
cout << "是否清空所有联系人?" << endl;
cout << "1 -- 确认清空" << endl;
cout << "2 -- 取消清空" << endl;
cin >> comfire;
while (!(comfire == 1 || comfire == 2)) {
cout << "输入有误,请重新输入是否清空所有联系人?:" << endl;
cout << "1 -- 确认清空" << endl;
cout << "2 -- 取消清空" << endl;
cin >> comfire;
}
if (comfire == 1) {
abs->size = 0;
cout << "已清空联系人" << endl;
}
else {
cout << "已取消清空操作" << endl;
}
}
system("pause");
system("cls");
}