#include <iostream>
using namespace std;
#include <string.h>
#define MAX 100
void show_menu()//菜单选项
{
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;
}
struct Person {//联系人基本信息
string name;
int sex;
int age;
string adress;
string phone_num;
};
struct PersonArray {//通讯录结构体
Person list[MAX];
int m_size=0;//定义通讯录存储信息的最大容量
};
void AddPerson(PersonArray *p)
{
if (p->m_size == MAX)
{
cout << "通讯录已满,无法添加" << endl;
return;
}
else
{
cout << "请输入新联系人的姓名:" << endl;
string m_name;
cin >> m_name;
p->list[p->m_size].name = m_name;
cout << "请输入新联系人的性别:(输入1表示男生,输入2表示女生)" << endl;
int sex_0;
cin >> sex_0;
p->list[p->m_size].sex = sex_0;
cout << "请输入新联系人的年龄:" << endl;
int age_0;
cin >> age_0;
p->list[p->m_size].age = age_0;
cout << "请输入家庭住址:"<<endl;
string adress_0;
cin >> adress_0;
p->list[p->m_size].adress = adress_0;
cout << "请输入联系方式:";
string phone_num_0;
cin >> phone_num_0;
p->list[p->m_size].phone_num = phone_num_0;
p->m_size++;
cout << "联系人添加成功!" << endl;
system("pause");
system("cls");
}
}
void ShowPerson(PersonArray* p)
{
if (p->m_size == 0)
cout << "没有任何联系人!" << endl;
else {
for (int i = 0; i < p->m_size; i++)
{
cout << p->list[i].name << "\t";
cout << p->list[i].sex << "\t";
cout << p->list[i].age << "\t";
cout << p->list[i].adress << "\t";
cout << p->list[i].phone_num << endl;
}
system("pause");
system("cls");
}
}
int LookForPerson(string name, PersonArray *p)
{
for (int i = 0; i < p->m_size; i++)
{
if (p->list[i].name == name)
return i;
}
return -1;
}
void DeletePerson(string name,PersonArray *p,int x)
{
if (x == -1)
cout << "查无此人!" << endl;
else {
int i = 0;
for (; p->list[i].name != name; i++);
for (int j = i; j < p->m_size - 1; j++)
{
p->list[j] = p->list[j + 1];
}
p->m_size--;
cout << "删除联系人成功!" << endl;
system("pause");
system("cls");
}
}
void CorrectPerson(string name, PersonArray* p)
{
int i = 0;
for (; name != p->list[i].name; i++);
cout << "请输入新联系人的姓名:" << endl;
string m_name;
cin >> m_name;
p->list[i].name = m_name;
cout << "请输入新联系人的性别:(输入1表示男生,输入2表示女生)" << endl;
int sex_0;
cin >> sex_0;
p->list[i].sex = sex_0;
cout << "请输入新联系人的年龄:" << endl;
int age_0;
cin >> age_0;
p->list[i].age = age_0;
cout << "请输入家庭住址:" << endl;
string adress_0;
cin >> adress_0;
p->list[i].adress = adress_0;
cout << "请输入联系方式:";
string phone_num_0;
cin >> phone_num_0;
p->list[i].phone_num = phone_num_0;
cout << "联系人修改成功!" << endl;
system("pause");
system("cls");
}
void ClearPerson(PersonArray* p)
{
p->m_size = 0;
cout << "已成功清空所有联系人!" << endl;
system("pause");
system("cls");
}
int main()
{
PersonArray q;
int select = 0;
while (true)
{
show_menu();
cin >> select;
switch (select)
{
case 1://添加联系人
AddPerson(&q);
break;
case 2://显示联系人
ShowPerson(&q);
break;
case 3://删除联系人
{
cout << "请输入要删除的联系人姓名:";
string name_0;
cin >> name_0;
int x = LookForPerson(name_0, &q);
DeletePerson(name_0, &q,x);
}
break;
case 4://查找联系人
{
cout << "请输入要查找的联系人姓名:" << endl;
string name_1;
cin >> name_1;
int x = LookForPerson(name_1, &q);
if (x == -1)
cout << "查无此人!" << endl;
else {
cout << "要查找的联系人信息如下:" << endl;
cout << q.list[x].name << "\t";
cout << (q.list[x].sex == 1 ? "男生" : "女生") << "\t";
cout << q.list[x].age <<"岁" <<"\t";
cout << q.list[x].adress << "\t";
cout << q.list[x].phone_num << endl;
}
system("pause");
system("cls");
break;
}
case 5://修改联系人
{
cout << "请输入你要修改的联系人名字:";
string name_2;
cin >> name_2;
CorrectPerson(name_2, &q);
break;
}
case 6://清空联系人
ClearPerson(&q);
break;
case 0://退出通讯录
{
cout << "欢迎下次使用!";
system("pause");
return 0;
break;
}
}
}
}
C++实现的源码如上。