#include<iostream>
#include<string>#define P 1000 //通讯录最大人数
using namespace std;//联系人结构体struct person{
string m_name; //姓名
int m_sex; //性别 1、男 2、女
int m_age; //年龄
string m_phone;//电话
string m_addr; //住址};//通讯录结构体struct Addressbooks{
struct person a[P]; //通讯录中保存的联系人数组
int y;//通讯录中当前记录联系人个数};
//1、添加联系人
void R(Addressbooks* abs){ if (abs->y == P)//判断通讯录是否已满 { cout << "通讯录已满" << endl; return; }
else { //访问姓名 string name; cout << "请输入姓名:" << endl;
cin >> name;
abs->a[abs->y].m_name = name;
//性别 cout << "请输入性别:" << endl;
cout << "1---男" << endl;
cout << "2----女" << endl; int sex; while (true) { cin >> sex;//如果输入的是1、2可以退出循环 if (sex == 1 || sex == 2) { abs->a[abs->y].m_sex = sex; break; }
cout << "输入有误,请重新输入" << endl; }
//年龄 cout << "请输入年龄:" << endl; int age; cin >> age; abs->a[abs->y].m_age = age;
//电话 cout << "请输入联系电话:" << endl; string phone; cin >> phone; abs->a[abs->y].m_phone = phone;
//住址 cout << "请输入家庭住址:" << endl; string address; cin >> address; abs->a[abs->y].m_addr = address;
//更新通讯录的人数 abs->y++; cout << "添加成功!!!" << endl; system("pause");//请按任意键继续 system("cls");//清屏操作 }}
//2、显示联系人
void F(Addressbooks* abs){ if (abs->y == 0)//判断通讯录中人数是否为0,提示为空
{ cout << "当前记录为空" << endl; } else { for (int i = 0; i < abs->y; i++) { cout << "\t姓名:" << abs->a[i].m_name << "\t性别:" << (abs->a[i].m_sex == 1 ? "男" : "女") << "\t年龄:" << abs->a[i].m_age << "\t电话:" << abs->a[i].m_phone << "\t住址:" << abs->a[i].m_addr << endl; } } system("pause"); system("cls");//清屏}
//查找函数
int S(Addressbooks* abs, string name)//参数1 通讯录 参数2 对比姓名
{ for (int i = 0; i < abs->y; i++) { if (abs->a[i].m_name == name) { return i;//找到了返回下标编号 } } return -1;//未找到返回-1}
//3、删除联系人
void T(Addressbooks* abs)
{ cout << "请输入您需要删除的联系人" << endl; string name; cin >> name; int ret = S(abs, name); if (ret != -1) //-1未查到 { for (int i = ret; i < abs->y; i++) { abs->a[i] = abs->a[i + 1];//数据前移 abs->y--; } //更新人数
cout << "删除成功 !" << endl; } else { cout << "未查到" << endl; } system("pause"); system("cls");}
//4、查找联系人
void G(Addressbooks* abs)
{ cout << "请输入您要查找的联系人:" << endl; string name; cin >> name; int ret = S(abs, name);
if (ret != -1) { cout << "姓名:" << abs->a[ret].m_name << "\t"; cout << "性别:" << (abs->a[ret].m_sex == 1 ? "男" : "女") << "\t"; cout << "年龄:" << abs->a[ret].m_age << "\t"; cout << "电话:" << abs->a[ret].m_phone << "\t"; cout << "住址:" << abs->a[ret].m_addr << endl; }
else { cout << "查无此人" << endl; } system("pause"); system("cls");}
//5、修改联系人
void M(Addressbooks* abs)
{ cout << "请输入您要修改的联系人:" << endl; string name; cin >> name; int ret = S(abs, name);
if (ret != -1) { //姓名 string name; cout << "请输入姓名:" << endl; cin >> name; abs->a[ret].m_name = name; //性别 cout << "请输入性别:" << endl; cout << "1———男" << endl; cout << "2---女" << endl; int sex = 0;
while (true) { cin >> sex; if (sex == 1 || sex == 2) { abs->a[ret].m_sex = sex; break; } cout << "输入有误,请重新输入" << endl; } //年龄 cout << "请输入年龄:" << endl; int age; cin >> age; abs->a[ret].m_age = age; //电话 cout << "请输入联系电话:" << endl; string phone; cin >> phone; abs->a[ret].m_phone = phone; //住址 cout << "请输入一个家庭住址:" << endl; string add; cin >> add; abs->a[ret].m_addr = add; cout << "修改成功!" << endl; }
else { cout << "查无此人" << endl; } system("pause"); system("cls");}
//6、清空联系人
void X(Addressbooks* abs)
{ abs->y = 0; 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()
{ int x, y; struct person a[P];//定义通讯录数组 Addressbooks abs; //创建通讯录结构体变量 abs.y = 0; //初始化通讯录中当前人员个数
while (true) //创建死循环,true为真 值为1
{ showMenu(); //菜单的调用 cin >> x; switch (x)
{ case 1: R(&abs); break;//1、添加联系人 case 2: F(&abs); break;//2、显示联系人 case 3: T(&abs); break;//3、删除联系人 case 4: G(&abs); break;//4、查找联系人 case 5: M(&abs); break;//5、修改联系人 case 6: X(&abs); break;//6、清除联系人 case 0: cout << "谢谢使用,欢迎你的下次使用" << endl; system("pause"); //按任意键,退出系统 return 0; break;//0、退出通讯录 default: cout << "输入错误,请重新输入" << endl; } } system("pause"); return 0;}