基于C++ 的 通讯录 的实现

目录

1 基于C++的通讯录

1.1 目的

1.2 包含功能

1.3 实现

1.3.1 打印菜单

1.3.2 创建联系人和通讯录结构体

1.3.3 添加联系人

1.3.4 显示联系人

1.3.5 判断联系人是否存在

1.3.6 查找联系人

1.3.7 删除指定联系人

1.3.8 修改指定联系人

1.3.9 清空联系人

1.3.10 主函数

1.4 功能展示


1 基于C++的通讯录

1.1 目的

使用C++实现通讯录

1.2 包含功能

  • 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人

  • 显示联系人:显示通讯录中所有联系人信息

  • 删除联系人:按照姓名进行删除指定联系人

  • 查找联系人:按照姓名查看指定联系人信息

  • 修改联系人:按照姓名重新修改指定联系人

  • 清空联系人:清空通讯录中所有信息

  • 退出通讯录:退出当前使用的通讯录

1.3 实现

1.3.1 打印菜单

 void showMenu()
 {
     cout << "*******************************" << endl <<
         "*******  1、添加联系人  *******" << endl <<
         "*******  2、删除联系人  *******" << endl <<
         "*******  3、显示联系人  *******" << endl <<
         "*******  4、查找联系人  *******" << endl <<
         "*******  5、修改联系人  *******" << endl <<
         "*******  6、清空联系人  *******" << endl <<
         "*******  0、退出通讯录  *******" << endl<<
         "*******************************" << endl;
     cout << "请选择:" << endl;
 }

首先,因为我们要选择1、2、3、4、5、6、0这些数字从而开启各项功能,所以这里我使用switch语句

同时,当我们选择1-6这些数字时,功能完成后我们并不直接退出程序,而是重新回到功能展示界面供我们选择功能,因此我们使用while循环,只有选择了功能0,才执行退出功能

 while (true)
     {
         showMenu();
         int input = 0;
         cin >> input;
         switch (input)
         {
             case 1:
                 break;
             case 2:
                 break;
             case 3:
                 break;
             case 4:
                 break;
             case 5:
                 break;
             case 6:
                 break;
             case 0:
                 cout << "退出程序!" << endl;
                 return 0;
                 break;
             default:
                 break;
         }
     }

1.3.2 创建联系人和通讯录结构体

而在实现添加联系人、删除联系人等的功能之前,需要先有联系人才行,因此接下来我们先实现联系人的创建,这里使用2个结构体:联系人结构体/通讯录结构体

 #define MAX 1000
 struct person  // 定义联系人结构体
 {
     string name;
     int sex;
     int age;
     string tel;
     string address;
 };
 struct Contact // 定义通讯录结构体
 {
     struct person ContactArray[MAX]; // 创建联系人结构体数组
     int size;    // 确定当前通讯录数量,上限为MAX=1000
 };

1.3.3 添加联系人

 
void Add(Contact* Con)
 {
     if (Con->size == MAX)
     {
         cout << "通讯录已满,无法添加!" << endl;
         return;
     }
     else
     {
         cout << "请输入姓名:" << endl;
         cin >> Con->ContactArray[Con->size].name;
         
         int sex = 0;
         while (true)
         {
             cout << "请输入性别:" << endl;
             cout << "男 - 1" << "  " << "女 - 2" << endl;
             cin >> sex;
             if (sex == 1 || sex == 2)
             {
                 Con->ContactArray[Con->size].sex = sex;
                 break;
             }
             cout << "输入错误,请重新输入!" << endl;
         }
 ​
         int age = 0;
         while (true)
         {
             cout << "请输入年龄:" << endl;
             cin >> age;
             if (age > 0 && age < 110)
             {
                 Con->ContactArray[Con->size].sex = age;
                 break;
             }
             cout << "输入错误,请重新输入!" << endl;
         }
 ​
         cout << "请输入电话:" << endl;
         cin >> Con->ContactArray[Con->size].tel;
 ​
         cout << "请输入住址:" << endl;
         cin >> Con->ContactArray[Con->size].address;
 ​
         Con->size++; // 数量+1
 ​
         cout << "添加成功!" << endl;
         system("pause"); // 请按任意键继续
     }
     system("cls"); // 清屏
 }

1.3.4 显示联系人

 void Show(Contact* Con)
 {
     if (Con->size == 0)
     {
         cout << "通讯录为空!" << endl;
     }
     else
     {
         for (int i = 0; i < Con->size; i++)
         {
             cout << "序号:" << i+1 << "\t";
             cout << "姓名:" << Con->ContactArray[i].name << "\t";
             cout << "性别:" << (Con->ContactArray[i].sex == 1 ? "男" : "女") << "\t";
                                                         // 1则返回男,否则是女
             cout << "年龄:" << Con->ContactArray[i].age << "\t";
             cout << "电话:" << Con->ContactArray[i].tel << "\t";
             cout << "住址:" << Con->ContactArray[i].address << "\t";
             cout << endl;
         }
         system("pause"); // 请按任意键继续
     }
     system("cls"); // 清屏
 }

1.3.5 判断联系人是否存在

 int Exist(Contact* Con,string name)
 {    
     for (int i = 0; i <= Con->size; i++)
     {    //循环遍历数组,查看名字有没有
         if (Con->ContactArray[i].name == name)
             return i;
         else
             return -1;
     }
 }

1.3.6 查找联系人

 void Find(Contact* Con)
 {
     cout << "请输入要查找人的名字:" << endl;
     string name;
     cin >> name;
     int ret = Exist(Con, name);    //返回值来确定是否有此人
     if (ret == -1)
     {
         cout << "查无此人!" << endl;
     }
     else
     {
         cout << "序号:" << ret + 1 << "\t";
         cout << "姓名:" << Con->ContactArray[ret].name << "\t";
         cout << "性别:" << (Con->ContactArray[ret].sex == 1 ? "男" : "女") << "\t";
                                                 // 1则返回男,否则是女
         cout << "年龄:" << Con->ContactArray[ret].age << "\t";
         cout << "电话:" << Con->ContactArray[ret].tel << "\t";
         cout << "住址:" << Con->ContactArray[ret].address << "\t";
         cout << endl;
     }
     system("pause");
     system("cls"); // 清屏
 }

1.3.7 删除指定联系人

 void Del(Contact* Con)
 {
     cout << "请输入要删除人的名字:" << endl;
     string name;
     cin >> name;
     int ret = Exist(Con,name);
     if (ret == -1)
     {
         cout << "查无此人!" << endl;
     }
     else    //存在则删除
     {
         for (; ret < Con->size; ret++)
         {
             // 数据前移,覆盖前面数据即可
             Con->ContactArray[ret] = Con->ContactArray[ret + 1];
         }
         Con->size--;    //大小-1
         cout << "删除成功!" << endl;
     }
     system("pause");
     system("cls");
 }

1.3.8 修改指定联系人

 void Mod(Contact* Con)
 {
     cout << "请输入要修改人的名字:" << endl;
     string name;
     cin >> name;
     int ret = Exist(Con, name);
     if (ret == -1)
     {
         cout << "查无此人!" << endl;
     }
     else    //存在则修改
     {
        //修改姓名
         cout << "请输入姓名:" << endl;
         cin >> Con->ContactArray[ret].name;
 ​
        //修改性别
         int sex = 0;
         while (true)
         {
             cout << "请输入性别:" << endl;
             cout << "男 - 1" << "  " << "女 - 2" << endl;
             cin >> sex;
             if (sex == 1 || sex == 2)
             {
                 Con->ContactArray[Con->size].sex = sex;
                 break;
             }
             cout << "输入错误,请重新输入!" << endl;
         }
 ​
        //修改年龄
         int age = 0;
         while (true)
         {
             cout << "请输入年龄:" << endl;
             cin >> age;
             if (age > 0 && age < 110)
             {
                 Con->ContactArray[Con->size].age = age;
                 break;
             }
             cout << "输入错误,请重新输入!" << endl;
         }
 ​
         cout << "请输入电话:" << endl;
         cin >> Con->ContactArray[ret].tel;
 ​
         cout << "请输入住址:" << endl;
         cin >> Con->ContactArray[ret].address;
 ​
         cout << "修改成功!" << endl;
     }
     system("pause");
     system("cls"); // 清屏
 }

1.3.9 清空联系人

 void Des(Contact* Con)
 {
     char input;
     cout << "请确认是否要清空联系人?" << endl
         << " 确认输入Y ,否则输入N" << endl;
     cin >> input;
     if (input == 'Y')
     {
         Con->size = 0;
         cout << "已清空通讯录!" << endl;
     }
     system("pause");
     system("cls"); // 清屏
 }

1.3.10 主函数

 int main()
 {
     Contact Con;
     Con.size = 0;
 ​
     while (true)
     {
         showMenu();
         int input = 0;
         cin >> input;
         switch (input)
         {
             case 1:
                 Add(&Con);
                 break;
             case 2:
                 Del(&Con);
                 break;
             case 3:
                 Show(&Con);
                 break;
             case 4:
                 Find(&Con);
                 break;
             case 5:
                 Mod(&Con);
                 break;
             case 6:
                 Des(&Con);
                 break;
             case 0:
                 cout << "退出程序!" << endl;
                 return 0;
                 break;
             default:
                 break;
         }
     }
     return 0;
 }

1.4 功能展示

添加

显示

查找

 

修改

删除

显示

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值