• 通讯录管理系统


    通讯录管理系统

    添加联系人功能:联系人上限1000人,信息(姓名、性别、年龄、联系电话、住址)

    实现步骤:
    1.设计联系人结构体
    2.设计通讯录结构体
    3.main函数中创建通讯录
    4.封装添加联系人函数
    5.测试添加联系人功能

    关于清屏操作:
    system("pause"); //按任意键继续
    system("cls"); //清屏

    删除联系人:
    1.检测是否存在联系人
    2.封装删除联系人
    3.测试删除联系人功能

    源码如下:

      1 #include<iostream>
      2 #include<string>
      3 #include<iomanip>
      4 using namespace std;
      5 #define MAX 1000   //最大人数
      6 
      7 //联系人结构体
      8 struct Person
      9 {
     10     string m_Name;   //姓名
     11     int m_Sex;   //性别 1 - 男 2 - 女
     12     int m_Age;   //年龄
     13     string m_Phone;   //电话
     14     string m_Address;   //地址
     15 };
     16 
     17 //通讯录的结构体
     18 struct Addressbooks
     19 {
     20     struct Person personArray[MAX];   //通讯录中保存的联系人数组
     21     int m_Size;   //通讯录中人员个数
     22 };
     23 
     24 void showMenu();  //菜单函数
     25 void addPerson(Addressbooks* abs);  //添加联系人
     26 void showPerson(Addressbooks* abs);  //显示所有联系人
     27 int isExist(Addressbooks* abs, string name);  //检测联系人是否存在,参数一 通讯录 参数二 对比姓名
     28 void deletePerson(Addressbooks* abs);  //删除指定联系人
     29 void findPerson(Addressbooks* abs);   //查找指定联系人信息
     30 void modifyPerson(Addressbooks* abs);  //修改指定联系人的信息
     31 void cleanPerson(Addressbooks* abs);   //清除所有联系人
     32 
     33 int main()
     34 {
     35     // 创建通讯录结构体变量
     36     Addressbooks abs;
     37     //初始化通讯录中当前人数
     38     abs.m_Size = 0;
     39 
     40     int select = 0;
     41     while (true) 
     42     {
     43         showMenu(); //调用菜单
     44         cout << '	';
     45         cin >> select;
     46         switch (select)
     47         {
     48         case 1:   //1、添加联系人
     49             addPerson(&abs);  //利用地址传递,可以修改实参
     50             break;
     51         case 2:   //2、显示联系人
     52             showPerson(&abs);
     53             break;
     54         case 3:   //3、删除联系人
     55             deletePerson(&abs);
     56             break;
     57         case 4:   //4、查找联系人
     58             findPerson(&abs);
     59             break;
     60         case 5:   //5、修改联系人
     61             modifyPerson(&abs);
     62             break;
     63         case 6:   //6、清空联系人 
     64             cleanPerson(&abs);
     65             break;
     66         case 0:   //0、退出通讯录
     67             cout << "	欢迎下次使用!" << endl;
     68             system("pause");
     69             return 0;
     70             break;
     71         default:
     72             break;
     73         }
     74     }
     75     return 0;
     76 }
     77 
     78 void showMenu()
     79 {
     80     cout << "	****** 通讯录管理系统 ******" << endl;
     81     cout << "	**** 1、添加联系人      ****" << endl;
     82     cout << "	**** 2、显示联系人      ****" << endl;
     83     cout << "	**** 3、删除联系人      ****" << endl;
     84     cout << "	**** 4、查找联系人      ****" << endl;
     85     cout << "	**** 5、修改联系人      ****" << endl;
     86     cout << "	**** 6、清空联系人      ****" << endl;
     87     cout << "	**** 0、退出通讯录      ****" << endl;
     88     cout << "	***************************" << endl;
     89 }
     90 
     91 void addPerson(Addressbooks* abs)
     92 {
     93     //判断通讯录是否已满
     94     if (abs->m_Size == MAX)
     95     {
     96         cout << "	通讯录已满,无法添加!" << endl;
     97         return;
     98     }
     99     else
    100     {
    101         //添加联系人
    102         //姓名
    103         string name;
    104         cout << "	请输入姓名:";
    105         cin >> name;
    106         abs->personArray[abs->m_Size].m_Name = name;
    107         //性别
    108         cout << "	请输入性别:(1-男,2-女) ";
    109         int sex = 0;
    110         while (true)
    111         {
    112             // 如果输入1,2则退出,否则重新输入
    113             cin >> sex;
    114             if (sex == 1 || sex == 2)
    115             {
    116                 abs->personArray[abs->m_Size].m_Sex = sex;
    117                 break;
    118             }
    119             cout << "	输入有误,请重新输入!" << endl;
    120         }
    121         //年龄
    122         int age = 0;
    123         cout << "	请输入年龄:";
    124         cin >> age;
    125         abs->personArray[abs->m_Size].m_Age = age;
    126         //电话
    127         cout << "	请输入联系电话:";
    128         string phone;
    129         cin >> phone;
    130         abs->personArray[abs->m_Size].m_Phone = phone;
    131         //住址
    132         cout << "	请输入住址:";
    133         string address;
    134         cin >> address;
    135         abs->personArray[abs->m_Size].m_Address = address;
    136         //更新通讯录人数
    137         abs->m_Size++;
    138         cout << "	添加成功!" << endl;
    139         system("pause");  //按任意键继续
    140         system("cls");  //清屏
    141     }
    142 }
    143 
    144 void showPerson(Addressbooks* abs)
    145 {
    146     //判断通讯录中人数是否为0
    147     if (abs->m_Size == 0)
    148     {
    149         cout << "	当前通讯录的记录为空!" << endl;
    150     }
    151     else
    152     {
    153         cout << "	当前通讯录信息:" << endl;
    154         cout << "	" << setw(5) << "序号" << setw(10) << "姓名" << setw(5) << "性别" << setw(5) << "年龄" << setw(15) << "联系电话" << setw(15) << "联系地址" << endl;
    155         for (int i = 0; i < abs->m_Size; i++)
    156         {
    157             string ch;
    158             if (abs->personArray[i].m_Sex == 1)
    159                 ch = "";
    160             else
    161                 ch = "";
    162             cout << "	" << setw(5) << i + 1 << setw(10) << abs->personArray[i].m_Name << setw(5) << ch << setw(5) << abs->personArray[i].m_Age << setw(15) << abs->personArray[i].m_Phone << setw(15) << abs->personArray[i].m_Address << endl;
    163         }
    164         cout << "	当前通讯录中的人数为:" << abs->m_Size << "人。" << endl;
    165     }
    166     system("pause");  //按任意键继续
    167     system("cls");  //清屏
    168 }
    169 
    170 int isExist(Addressbooks* abs, string name)
    171 {
    172     for (int i = 0; i < abs->m_Size; i++)
    173     {
    174         //找到用户输入的姓名
    175         if (abs->personArray[i].m_Name == name)
    176         {
    177             return i;  //找到了返回数组下标
    178         }
    179     }
    180     return -1;  //如果遍历结束没找到返回-1
    181 }
    182 
    183 void deletePerson(Addressbooks* abs)
    184 {
    185     cout << "	请输入要输入的联系人:";
    186     string name;
    187     cin >> name;
    188     int ret = isExist(abs, name);
    189     //ret == -1 没查到
    190     //ret != -1 查到
    191     if (ret != -1)
    192     {
    193         //查找到,进行删除操作
    194         for (int i = ret; i < abs->m_Size; i++)
    195         {
    196             //数据前移
    197             abs->personArray[i] = abs->personArray[i + 1];
    198         }
    199         abs->m_Size--;  //更新总人数
    200         cout << "	删除成功!" << endl;
    201     }
    202     else
    203     {
    204         cout << "	查无此人!" << endl;
    205     }
    206     system("pause");  //按任意键继续
    207     system("cls");  //清屏
    208 }
    209 
    210 void findPerson(Addressbooks* abs)
    211 {
    212     cout << "	请输入要查找的联系人:";
    213     string name;
    214     cin >> name;
    215     //判断输入的联系人姓名是否存在
    216     int ret = isExist(abs, name);
    217     if (ret != -1)
    218     {
    219         //找到了
    220         cout << "	姓名:" << abs->personArray[ret].m_Name << endl;
    221         string ch;
    222         if (abs->personArray[ret].m_Sex == 1)
    223             ch = "";
    224         else
    225             ch = "";
    226         cout << "	性别:" << ch << endl;
    227         cout << "	年龄:" << abs->personArray[ret].m_Age << endl;
    228         cout << "	联系电话:" << abs->personArray[ret].m_Phone << endl;
    229         cout << "	住址:" << abs->personArray[ret].m_Address << endl;
    230     }
    231     else
    232     {
    233         //未找到联系人
    234         cout << "	查无此人!" << endl;
    235     }
    236     system("pause");  //按任意键继续
    237     system("cls");  //清屏
    238 }
    239 
    240 void modifyPerson(Addressbooks* abs)
    241 {
    242     cout << "	请输入要修改的联系人姓名:";
    243     string name;
    244     cin >> name;
    245     int ret = isExist(abs, name);
    246     if (ret != -1)
    247     {
    248         //找到指定联系人
    249         cout << "	请输入要修改的内容:(1.姓名 2.性别 3.年龄 4.电话 5.住址 0.修改结束)" << endl;
    250         int choice;
    251         while (true)
    252         {
    253             cout << "	choice = ";
    254             cin >> choice;
    255             switch (choice)
    256             {
    257             case 1:
    258             {string nam;
    259             cout << "	请输入姓名:";
    260             cin >> nam;
    261             abs->personArray[ret].m_Name = nam; }
    262                 break;
    263             case 2:
    264             {
    265                 while(true) {
    266                     cout << "	请输入性别:(1 - 男,2 - 女)";
    267                     int s = 0;
    268                     cin >> s;
    269                     if (s == 1 || s == 2)
    270                     {
    271                         abs->personArray[ret].m_Sex = s;
    272                         break;
    273                     }
    274                     else
    275                     {
    276                         cout << "	输入有误,请重新输入!" << endl;
    277                     }
    278                 }
    279             }
    280                 break;
    281             case 3:
    282             {
    283                 cout << "	请输入年龄:";
    284                 int a;
    285                 cin >> a;
    286                 abs->personArray[ret].m_Age = a;
    287             }
    288                 break;
    289             case 4:
    290             {
    291                 cout << "	请输入联系电话:";
    292                 string p;
    293                 cin >> p;
    294                 abs->personArray[ret].m_Phone = p;
    295             }
    296                 break;
    297             case 5:
    298             {
    299                 cout << "	请输入住址:";
    300                 string add;
    301                 cin >> add;
    302                 abs->personArray[ret].m_Address = add;
    303             }
    304                 break;
    305             case 0:
    306                 break;
    307             default:
    308                 cout << "	输入内容有误!请重新输入!" << endl;
    309             }
    310             if (choice == 0)
    311                 break;
    312         }
    313     }
    314     else  //未找到联系人
    315     {
    316         cout << "	查无此人!" << endl;
    317     }
    318     system("pause");
    319     system("cls");
    320 }
    321 
    322 void cleanPerson(Addressbooks* abs)
    323 {
    324     
    325     char falg;
    326     cout << "	是否清空" << abs->m_Size << "条联系人信息!" << endl;
    327     cout << "	Y. 确定      N. 放弃" << endl;
    328     cout << "	请输入你的选择:";
    329     while (true) {
    330         cin >> falg;
    331         if (falg == 'Y')
    332         {
    333             abs->m_Size = 0;  //将当前人数置零,逻辑上的清空操作
    334             cout << "	通讯录已清空!" << endl;
    335             break;
    336         }
    337         else if (falg == 'N')
    338         {
    339             cout << "	您已放弃清空操作!" << endl;
    340             break;
    341         }
    342         else
    343         {
    344             cout << "	输入有误!请重新输入!" << endl;
    345         }
    346     }
    347     system("pause");
    348     system("cls");
    349 }
  • 相关阅读:
    HDU
    HDU
    CodeForces
    HDU——2955 Robberies (0-1背包)
    南京区域赛之后
    算法作业三-哈夫曼编码
    HDU
    POJ 1220 NUMBER BASE CONVERSION(进制转换,大数)
    HDU 1535 Invitation Cards(最短路)
    HDU 3572 Task Schedule(网络流+当前弧优化)
  • 原文地址:https://www.cnblogs.com/wlyperfect/p/12609638.html
Copyright © 2020-2023  润新知