• 通讯录管理系统


    目录

    1.系统需求

     2.创建项目

     3.菜单功能

    4.退出功能

    5.添加联系人

     5.1设计联系人结构体、设计通讯录结构体

    5.2main函数中创建通讯录

     5.3封装添加联系人函数

     5.4测试添加联系人

    6.显示联系人

    7.删除联系人

     7.1封装检测联系人是否存在

    7.2删除联系人,测试删除联系人

    8、查找联系人

    9.修改联系人 

    10.清空联系人


    1.系统需求

     2.创建项目

     

     3.菜单功能

    1. #include
    2. using namespace std;
    3. //-封装函数显示该界面 如 void showMenu()
    4. //-在main函数中调用封装好的函数
    5. //菜单界面
    6. void showMenu()
    7. {
    8. cout << "**************************"<
    9. cout << "***** 1、添加联系人 *****" << endl;
    10. cout << "***** 2、显示联系人 *****" << endl;
    11. cout << "***** 3、删除联系人 *****" << endl;
    12. cout << "***** 4、查找联系人 *****" << endl;
    13. cout << "***** 5、修改联系人 *****" << endl;
    14. cout << "***** 6、清空联系人 *****" << endl;
    15. cout << "***** 0、退出通讯录 *****" << endl;
    16. cout << "**************************" << endl;
    17. }
    18. int main()
    19. {
    20. showMenu();
    21. system("pause");//按任意键继续
    22. return 0;
    23. }

    4.退出功能

    1. #include
    2. using namespace std;
    3. //-封装函数显示该界面 如 void showMenu()
    4. //-在main函数中调用封装好的函数
    5. //菜单界面
    6. void showMenu()
    7. {
    8. cout << "**************************"<
    9. cout << "***** 1、添加联系人 *****" << endl;
    10. cout << "***** 2、显示联系人 *****" << endl;
    11. cout << "***** 3、删除联系人 *****" << endl;
    12. cout << "***** 4、查找联系人 *****" << endl;
    13. cout << "***** 5、修改联系人 *****" << endl;
    14. cout << "***** 6、清空联系人 *****" << endl;
    15. cout << "***** 0、退出通讯录 *****" << endl;
    16. cout << "**************************" << endl;
    17. }
    18. int main()
    19. {
    20. int select;//创建用户选择输入的变量
    21. while (1)
    22. {
    23. showMenu();//菜单调用
    24. cin >> select;
    25. switch (select)
    26. {
    27. case 1://1、添加联系人
    28. break;
    29. case 2://2、显示联系人
    30. break;
    31. case 3:// 3、删除联系人
    32. break;
    33. case 4://4、查找联系人
    34. break;
    35. case 5://5、修改联系人
    36. break;
    37. case 6://6、清空联系人
    38. break;
    39. case 0://0、退出通讯录
    40. cout << "欢迎下次使用" << endl;
    41. system("pause");//按任意键继续
    42. return 0;//return 0退出函数,退出系统
    43. break;
    44. default:
    45. break;
    46. }
    47. }
    48. system("pause");//按任意键继续
    49. return 0;
    50. }

    5.添加联系人

     5.1设计联系人结构体、设计通讯录结构体

    1. #include
    2. using namespace std;
    3. //#define Max 1000
    4. const int Max = 1000;
    5. //设计联系人结构体
    6. struct person
    7. {
    8. //姓名
    9. string m_name;
    10. //性别 1男2女
    11. int m_sex;
    12. //年龄
    13. int age;
    14. //电话
    15. string m_phone;
    16. //住址
    17. string m_Addr;
    18. };
    19. //通讯录结构体
    20. struct Addressbooks
    21. {
    22. //保存联系人的数组
    23. person personArray[Max];
    24. //通讯录中当前记录的联系人的个数
    25. int m_Size;
    26. };
    27. //菜单界面
    28. void showMenu()
    29. {
    30. cout << "**************************"<
    31. cout << "***** 1、添加联系人 *****" << endl;
    32. cout << "***** 2、显示联系人 *****" << endl;
    33. cout << "***** 3、删除联系人 *****" << endl;
    34. cout << "***** 4、查找联系人 *****" << endl;
    35. cout << "***** 5、修改联系人 *****" << endl;
    36. cout << "***** 6、清空联系人 *****" << endl;
    37. cout << "***** 0、退出通讯录 *****" << endl;
    38. cout << "**************************" << endl;
    39. }
    40. int main()
    41. {
    42. int select;//创建用户选择输入的变量
    43. while (1)
    44. {
    45. showMenu();//菜单调用
    46. cin >> select;
    47. switch (select)
    48. {
    49. case 1://1、添加联系人
    50. break;
    51. case 2://2、显示联系人
    52. break;
    53. case 3:// 3、删除联系人
    54. break;
    55. case 4://4、查找联系人
    56. break;
    57. case 5://5、修改联系人
    58. break;
    59. case 6://6、清空联系人
    60. break;
    61. case 0://0、退出通讯录
    62. cout << "欢迎下次使用" << endl;
    63. system("pause");//按任意键继续
    64. return 0;//return 0退出函数,退出系统
    65. break;
    66. default:
    67. break;
    68. }
    69. }
    70. system("pause");//按任意键继续
    71. return 0;
    72. }

    5.2main函数中创建通讯录

     5.3封装添加联系人函数

     5.4测试添加联系人

    1. #include
    2. using namespace std;
    3. //#define Max 1000
    4. const int Max = 1000;
    5. //设计联系人结构体
    6. struct person
    7. {
    8. //姓名
    9. string m_name;
    10. //性别 1男2女
    11. int m_sex;
    12. //年龄
    13. int age;
    14. //电话
    15. string m_phone;
    16. //住址
    17. string m_Addr;
    18. };
    19. //通讯录结构体
    20. struct Addressbooks
    21. {
    22. //保存联系人的数组
    23. person personArray[Max];
    24. //通讯录中当前记录的联系人的个数
    25. int m_Size;
    26. };
    27. //1、添加联系人
    28. void addPerson(Addressbooks* p)
    29. {
    30. //判断通讯录是否已满,如果满了就不再添加
    31. if (p->m_Size == Max)
    32. {
    33. cout << "通讯录已满,无法添加!" << endl;
    34. }
    35. else
    36. {
    37. cout << "请输入要添加的联系人的姓名,性别(1男,2女),年龄,电话,住址,以空格分割" << endl;
    38. string name;
    39. int sex;
    40. int age;
    41. string phone;
    42. string Addr;
    43. cin >> name >> sex >> age >> phone >> Addr;
    44. p->personArray[p->m_Size].m_name = name;
    45. p->personArray[p->m_Size].m_sex = sex;
    46. p->personArray[p->m_Size].age = age;
    47. p->personArray[p->m_Size].m_phone = phone;
    48. p->personArray[p->m_Size].m_Addr = Addr;
    49. //更新通讯录中的人数
    50. p->m_Size++;//等价于 p->m_Size += 1;
    51. /*
    52. while(1)//输错性别,就一直输入,直到正确才退出
    53. {
    54. cin >> sex;
    55. if (sex == 1 || sex == 2)
    56. {
    57. p->personArray[p->m_Size].m_sex = sex;
    58. break;
    59. }
    60. cout<<"输入有误,请重新输入<
    61. }
    62. */
    63. cout << "添加成功" << endl;
    64. system("pause");//请按任意键继续
    65. system("cls");//清屏操作
    66. }
    67. }
    68. //菜单界面
    69. void showMenu()
    70. {
    71. cout << "**************************"<
    72. cout << "***** 1、添加联系人 *****" << endl;
    73. cout << "***** 2、显示联系人 *****" << endl;
    74. cout << "***** 3、删除联系人 *****" << endl;
    75. cout << "***** 4、查找联系人 *****" << endl;
    76. cout << "***** 5、修改联系人 *****" << endl;
    77. cout << "***** 6、清空联系人 *****" << endl;
    78. cout << "***** 0、退出通讯录 *****" << endl;
    79. cout << "**************************" << endl;
    80. }
    81. int main()
    82. {
    83. Addressbooks abs;//创建通讯录结构体变量
    84. abs.m_Size = 0;//初始化通讯录中当前人员的个数
    85. int select;//创建用户选择输入的变量
    86. while (1)
    87. {
    88. showMenu();//菜单调用
    89. cin >> select;
    90. switch (select)
    91. {
    92. case 1://1、添加联系人
    93. addPerson(&abs);//利用地址传递,可以修改实参
    94. break;
    95. case 2://2、显示联系人
    96. break;
    97. case 3:// 3、删除联系人
    98. break;
    99. case 4://4、查找联系人
    100. break;
    101. case 5://5、修改联系人
    102. break;
    103. case 6://6、清空联系人
    104. break;
    105. case 0://0、退出通讯录
    106. cout << "欢迎下次使用" << endl;
    107. system("pause");//按任意键继续
    108. return 0;//return 0退出函数,退出系统
    109. break;
    110. default:
    111. break;
    112. }
    113. }
    114. system("pause");//按任意键继续
    115. return 0;
    116. }

    6.显示联系人

    1. #include
    2. using namespace std;
    3. //#define Max 1000
    4. const int Max = 1000;
    5. //设计联系人结构体
    6. struct person
    7. {
    8. //姓名
    9. string m_name;
    10. //性别 1男2女
    11. int m_sex;
    12. //年龄
    13. int age;
    14. //电话
    15. string m_phone;
    16. //住址
    17. string m_Addr;
    18. };
    19. //通讯录结构体
    20. struct Addressbooks
    21. {
    22. //保存联系人的数组
    23. person personArray[Max];
    24. //通讯录中当前记录的联系人的个数
    25. int m_Size;
    26. };
    27. //1、添加联系人
    28. void addPerson(Addressbooks* p)
    29. {
    30. //判断通讯录是否已满,如果满了就不再添加
    31. if (p->m_Size == Max)
    32. {
    33. cout << "通讯录已满,无法添加!" << endl;
    34. }
    35. else
    36. {
    37. cout << "请输入要添加的联系人的姓名,性别(1男,2女),年龄,电话,住址,以空格分割" << endl;
    38. string name;
    39. int sex;
    40. int age;
    41. string phone;
    42. string Addr;
    43. cin >> name >> sex >> age >> phone >> Addr;
    44. p->personArray[p->m_Size].m_name = name;
    45. p->personArray[p->m_Size].m_sex = sex;
    46. p->personArray[p->m_Size].age = age;
    47. p->personArray[p->m_Size].m_phone = phone;
    48. p->personArray[p->m_Size].m_Addr = Addr;
    49. //更新通讯录中的人数
    50. p->m_Size++;//等价于 p->m_Size += 1;
    51. /*
    52. while(1)//输错性别,就一直输入,直到正确才退出
    53. {
    54. cin >> sex;
    55. if (sex == 1 || sex == 2)
    56. {
    57. p->personArray[p->m_Size].m_sex = sex;
    58. break;
    59. }
    60. cout<<"输入有误,请重新输入<
    61. }
    62. */
    63. cout << "添加成功" << endl;
    64. system("pause");//请按任意键继续
    65. system("cls");//清屏操作
    66. }
    67. }
    68. //2、显示联系人
    69. void showPerson(Addressbooks* p)
    70. {
    71. if (p->m_Size == 0)
    72. {
    73. cout << "记录为空" << endl;
    74. }
    75. else
    76. {
    77. for (int i = 0; i < p->m_Size; i++)
    78. {
    79. cout <<"姓名:"<< p->personArray[i].m_name << " "
    80. << "性别:"<<(p->personArray[i].m_sex == 1 ? "男" : "女") << " "
    81. <<"年龄:"<< p->personArray[i].age << " "
    82. <<"电话:"<< p->personArray[i].m_phone << " "
    83. << "地址:"<personArray[i].m_Addr << endl;
    84. }
    85. }
    86. system("pause");//按任意键继续
    87. system("cls");//清屏
    88. }
    89. //菜单界面
    90. void showMenu()
    91. {
    92. cout << "**************************"<
    93. cout << "***** 1、添加联系人 *****" << endl;
    94. cout << "***** 2、显示联系人 *****" << endl;
    95. cout << "***** 3、删除联系人 *****" << endl;
    96. cout << "***** 4、查找联系人 *****" << endl;
    97. cout << "***** 5、修改联系人 *****" << endl;
    98. cout << "***** 6、清空联系人 *****" << endl;
    99. cout << "***** 0、退出通讯录 *****" << endl;
    100. cout << "**************************" << endl;
    101. }
    102. int main()
    103. {
    104. Addressbooks abs;//创建通讯录结构体变量
    105. abs.m_Size = 0;//初始化通讯录中当前人员的个数
    106. int select;//创建用户选择输入的变量
    107. while (1)
    108. {
    109. showMenu();//菜单调用
    110. cin >> select;
    111. switch (select)
    112. {
    113. case 1://1、添加联系人
    114. addPerson(&abs);//利用地址传递,可以修改实参
    115. break;
    116. case 2://2、显示联系人
    117. showPerson(&abs);
    118. break;
    119. case 3:// 3、删除联系人
    120. break;
    121. case 4://4、查找联系人
    122. break;
    123. case 5://5、修改联系人
    124. break;
    125. case 6://6、清空联系人
    126. break;
    127. case 0://0、退出通讯录
    128. cout << "欢迎下次使用" << endl;
    129. system("pause");//按任意键继续
    130. return 0;//return 0退出函数,退出系统
    131. break;
    132. default:
    133. break;
    134. }
    135. }
    136. system("pause");//按任意键继续
    137. return 0;
    138. }

    7.删除联系人

     7.1封装检测联系人是否存在

    1. #include
    2. using namespace std;
    3. //#define Max 1000
    4. const int Max = 1000;
    5. //设计联系人结构体
    6. struct person
    7. {
    8. //姓名
    9. string m_name;
    10. //性别 1男2女
    11. int m_sex;
    12. //年龄
    13. int age;
    14. //电话
    15. string m_phone;
    16. //住址
    17. string m_Addr;
    18. };
    19. //通讯录结构体
    20. struct Addressbooks
    21. {
    22. //保存联系人的数组
    23. person personArray[Max];
    24. //通讯录中当前记录的联系人的个数
    25. int m_Size;
    26. };
    27. //1、添加联系人
    28. void addPerson(Addressbooks* p)
    29. {
    30. //判断通讯录是否已满,如果满了就不再添加
    31. if (p->m_Size == Max)
    32. {
    33. cout << "通讯录已满,无法添加!" << endl;
    34. }
    35. else
    36. {
    37. cout << "请输入要添加的联系人的姓名,性别(1男,2女),年龄,电话,住址,以空格分割" << endl;
    38. string name;
    39. int sex;
    40. int age;
    41. string phone;
    42. string Addr;
    43. cin >> name >> sex >> age >> phone >> Addr;
    44. p->personArray[p->m_Size].m_name = name;
    45. p->personArray[p->m_Size].m_sex = sex;
    46. p->personArray[p->m_Size].age = age;
    47. p->personArray[p->m_Size].m_phone = phone;
    48. p->personArray[p->m_Size].m_Addr = Addr;
    49. //更新通讯录中的人数
    50. p->m_Size++;//等价于 p->m_Size += 1;
    51. /*
    52. while(1)//输错性别,就一直输入,直到正确才退出
    53. {
    54. cin >> sex;
    55. if (sex == 1 || sex == 2)
    56. {
    57. p->personArray[p->m_Size].m_sex = sex;
    58. break;
    59. }
    60. cout<<"输入有误,请重新输入<
    61. }
    62. */
    63. cout << "添加成功" << endl;
    64. system("pause");//请按任意键继续
    65. system("cls");//清屏操作
    66. }
    67. }
    68. //2、显示联系人
    69. void showPerson(Addressbooks* p)
    70. {
    71. if (p->m_Size == 0)
    72. {
    73. cout << "记录为空" << endl;
    74. }
    75. else
    76. {
    77. for (int i = 0; i < p->m_Size; i++)
    78. {
    79. cout <<"姓名:"<< p->personArray[i].m_name << " "
    80. << "性别:"<<(p->personArray[i].m_sex == 1 ? "男" : "女") << " "
    81. <<"年龄:"<< p->personArray[i].age << " "
    82. <<"电话:"<< p->personArray[i].m_phone << " "
    83. << "地址:"<personArray[i].m_Addr << endl;
    84. }
    85. }
    86. system("pause");//按任意键继续
    87. system("cls");//清屏
    88. }
    89. //检测联系人是否存在,如果存在返回所在数组的具体位置,不存在返回-1
    90. int isExit(Addressbooks* p,string name)
    91. {
    92. for (int i = 0; i < p->m_Size; i++)
    93. {
    94. //找到用户输入的姓名
    95. if (p->personArray[i].m_name == name)
    96. {
    97. return i;//找到了返回位置
    98. }
    99. }
    100. return -1;//遍历结束没找到,返回-1
    101. }
    102. //菜单界面
    103. void showMenu()
    104. {
    105. cout << "**************************"<
    106. cout << "***** 1、添加联系人 *****" << endl;
    107. cout << "***** 2、显示联系人 *****" << endl;
    108. cout << "***** 3、删除联系人 *****" << endl;
    109. cout << "***** 4、查找联系人 *****" << endl;
    110. cout << "***** 5、修改联系人 *****" << endl;
    111. cout << "***** 6、清空联系人 *****" << endl;
    112. cout << "***** 0、退出通讯录 *****" << endl;
    113. cout << "**************************" << endl;
    114. }
    115. int main()
    116. {
    117. Addressbooks abs;//创建通讯录结构体变量
    118. abs.m_Size = 0;//初始化通讯录中当前人员的个数
    119. int select;//创建用户选择输入的变量
    120. while (1)
    121. {
    122. showMenu();//菜单调用
    123. cin >> select;
    124. switch (select)
    125. {
    126. case 1://1、添加联系人
    127. addPerson(&abs);//利用地址传递,可以修改实参
    128. break;
    129. case 2://2、显示联系人
    130. showPerson(&abs);
    131. break;
    132. case 3:// 3、删除联系人
    133. {//注意 switch case case里是多段代码时,用花括号
    134. string name;
    135. cin >> name;
    136. if (isExit(&abs, name) == -1)
    137. {
    138. cout << "查无此人" << endl;
    139. }
    140. else
    141. {
    142. cout << "找到此人" << endl;
    143. }
    144. }
    145. break;
    146. case 4://4、查找联系人
    147. break;
    148. case 5://5、修改联系人
    149. break;
    150. case 6://6、清空联系人
    151. break;
    152. case 0://0、退出通讯录
    153. cout << "欢迎下次使用" << endl;
    154. system("pause");//按任意键继续
    155. return 0;//return 0退出函数,退出系统
    156. break;
    157. default:
    158. break;
    159. }
    160. }
    161. system("pause");//按任意键继续
    162. return 0;
    163. }

    7.2删除联系人,测试删除联系人

    1. #include
    2. using namespace std;
    3. //#define Max 1000
    4. const int Max = 1000;
    5. //设计联系人结构体
    6. struct person
    7. {
    8. //姓名
    9. string m_name;
    10. //性别 1男2女
    11. int m_sex;
    12. //年龄
    13. int age;
    14. //电话
    15. string m_phone;
    16. //住址
    17. string m_Addr;
    18. };
    19. //通讯录结构体
    20. struct Addressbooks
    21. {
    22. //保存联系人的数组
    23. person personArray[Max];
    24. //通讯录中当前记录的联系人的个数
    25. int m_Size;
    26. };
    27. //1、添加联系人
    28. void addPerson(Addressbooks* p)
    29. {
    30. //判断通讯录是否已满,如果满了就不再添加
    31. if (p->m_Size == Max)
    32. {
    33. cout << "通讯录已满,无法添加!" << endl;
    34. }
    35. else
    36. {
    37. cout << "请输入要添加的联系人的姓名,性别(1男,2女),年龄,电话,住址,以空格分割" << endl;
    38. string name;
    39. int sex;
    40. int age;
    41. string phone;
    42. string Addr;
    43. cin >> name >> sex >> age >> phone >> Addr;
    44. p->personArray[p->m_Size].m_name = name;
    45. p->personArray[p->m_Size].m_sex = sex;
    46. p->personArray[p->m_Size].age = age;
    47. p->personArray[p->m_Size].m_phone = phone;
    48. p->personArray[p->m_Size].m_Addr = Addr;
    49. //更新通讯录中的人数
    50. p->m_Size++;//等价于 p->m_Size += 1;
    51. /*
    52. while(1)//输错性别,就一直输入,直到正确才退出
    53. {
    54. cin >> sex;
    55. if (sex == 1 || sex == 2)
    56. {
    57. p->personArray[p->m_Size].m_sex = sex;
    58. break;
    59. }
    60. cout<<"输入有误,请重新输入<
    61. }
    62. */
    63. cout << "添加成功" << endl;
    64. system("pause");//请按任意键继续
    65. system("cls");//清屏操作
    66. }
    67. }
    68. //2、显示联系人
    69. void showPerson(Addressbooks* p)
    70. {
    71. if (p->m_Size == 0)
    72. {
    73. cout << "记录为空" << endl;
    74. }
    75. else
    76. {
    77. for (int i = 0; i < p->m_Size; i++)
    78. {
    79. cout <<"姓名:"<< p->personArray[i].m_name << " "
    80. << "性别:"<<(p->personArray[i].m_sex == 1 ? "男" : "女") << " "
    81. <<"年龄:"<< p->personArray[i].age << " "
    82. <<"电话:"<< p->personArray[i].m_phone << " "
    83. << "地址:"<personArray[i].m_Addr << endl;
    84. }
    85. }
    86. system("pause");//按任意键继续
    87. system("cls");//清屏
    88. }
    89. //检测联系人是否存在,如果存在返回所在数组的具体位置,不存在返回-1
    90. int isExit(Addressbooks* p,string name)
    91. {
    92. for (int i = 0; i < p->m_Size; i++)
    93. {
    94. //找到用户输入的姓名
    95. if (p->personArray[i].m_name == name)
    96. {
    97. return i;//找到了返回位置
    98. }
    99. }
    100. return -1;//遍历结束没找到,返回-1
    101. }
    102. //删除联系人函数
    103. void deletePerson(Addressbooks* p)
    104. {
    105. string name;
    106. cout << "请输入要删除的联系人姓名" << endl;
    107. cin >> name;
    108. int res = isExit(p, name);
    109. if (res == -1)
    110. {
    111. cout << "查无此人" << endl;
    112. }
    113. else
    114. {
    115. //查到此人,进行删除
    116. //将要删除的人的后面的人往前移就好
    117. for (int i = res; res < p->m_Size - 1; i++)
    118. {
    119. //数据前移
    120. p->personArray[i] = p->personArray[i+1];
    121. }
    122. /*for (int i = res + 1; i < p->m_Size; i++)
    123. {
    124. //数据前移
    125. p->personArray[i-1] = p->personArray[i];
    126. }*/
    127. p->m_Size--;//更新通讯录中的人员数
    128. cout << "删除成功" << endl;
    129. }
    130. system("pause");
    131. system("cls");
    132. }
    133. //菜单界面
    134. void showMenu()
    135. {
    136. cout << "**************************"<
    137. cout << "***** 1、添加联系人 *****" << endl;
    138. cout << "***** 2、显示联系人 *****" << endl;
    139. cout << "***** 3、删除联系人 *****" << endl;
    140. cout << "***** 4、查找联系人 *****" << endl;
    141. cout << "***** 5、修改联系人 *****" << endl;
    142. cout << "***** 6、清空联系人 *****" << endl;
    143. cout << "***** 0、退出通讯录 *****" << endl;
    144. cout << "**************************" << endl;
    145. }
    146. int main()
    147. {
    148. Addressbooks abs;//创建通讯录结构体变量
    149. abs.m_Size = 0;//初始化通讯录中当前人员的个数
    150. int select;//创建用户选择输入的变量
    151. while (1)
    152. {
    153. showMenu();//菜单调用
    154. cin >> select;
    155. switch (select)
    156. {
    157. case 1://1、添加联系人
    158. addPerson(&abs);//利用地址传递,可以修改实参
    159. break;
    160. case 2://2、显示联系人
    161. showPerson(&abs);
    162. break;
    163. case 3:// 3、删除联系人
    164. deletePerson(&abs);
    165. break;
    166. case 4://4、查找联系人
    167. break;
    168. case 5://5、修改联系人
    169. break;
    170. case 6://6、清空联系人
    171. break;
    172. case 0://0、退出通讯录
    173. cout << "欢迎下次使用" << endl;
    174. system("pause");//按任意键继续
    175. return 0;//return 0退出函数,退出系统
    176. break;
    177. default:
    178. break;
    179. }
    180. }
    181. system("pause");//按任意键继续
    182. return 0;
    183. }

    8、查找联系人

    1. #include
    2. using namespace std;
    3. //#define Max 1000
    4. const int Max = 1000;
    5. //设计联系人结构体
    6. struct person
    7. {
    8. //姓名
    9. string m_name;
    10. //性别 1男2女
    11. int m_sex;
    12. //年龄
    13. int age;
    14. //电话
    15. string m_phone;
    16. //住址
    17. string m_Addr;
    18. };
    19. //通讯录结构体
    20. struct Addressbooks
    21. {
    22. //保存联系人的数组
    23. person personArray[Max];
    24. //通讯录中当前记录的联系人的个数
    25. int m_Size;
    26. };
    27. //1、添加联系人
    28. void addPerson(Addressbooks* p)
    29. {
    30. //判断通讯录是否已满,如果满了就不再添加
    31. if (p->m_Size == Max)
    32. {
    33. cout << "通讯录已满,无法添加!" << endl;
    34. }
    35. else
    36. {
    37. cout << "请输入要添加的联系人的姓名,性别(1男,2女),年龄,电话,住址,以空格分割" << endl;
    38. string name;
    39. int sex;
    40. int age;
    41. string phone;
    42. string Addr;
    43. cin >> name >> sex >> age >> phone >> Addr;
    44. p->personArray[p->m_Size].m_name = name;
    45. p->personArray[p->m_Size].m_sex = sex;
    46. p->personArray[p->m_Size].age = age;
    47. p->personArray[p->m_Size].m_phone = phone;
    48. p->personArray[p->m_Size].m_Addr = Addr;
    49. //更新通讯录中的人数
    50. p->m_Size++;//等价于 p->m_Size += 1;
    51. /*
    52. while(1)//输错性别,就一直输入,直到正确才退出
    53. {
    54. cin >> sex;
    55. if (sex == 1 || sex == 2)
    56. {
    57. p->personArray[p->m_Size].m_sex = sex;
    58. break;
    59. }
    60. cout<<"输入有误,请重新输入<
    61. }
    62. */
    63. cout << "添加成功" << endl;
    64. system("pause");//请按任意键继续
    65. system("cls");//清屏操作
    66. }
    67. }
    68. //2、显示联系人
    69. void showPerson(Addressbooks* p)
    70. {
    71. if (p->m_Size == 0)
    72. {
    73. cout << "记录为空" << endl;
    74. }
    75. else
    76. {
    77. for (int i = 0; i < p->m_Size; i++)
    78. {
    79. cout <<"姓名:"<< p->personArray[i].m_name << " "
    80. << "性别:"<<(p->personArray[i].m_sex == 1 ? "男" : "女") << " "
    81. <<"年龄:"<< p->personArray[i].age << " "
    82. <<"电话:"<< p->personArray[i].m_phone << " "
    83. << "地址:"<personArray[i].m_Addr << endl;
    84. }
    85. }
    86. system("pause");//按任意键继续
    87. system("cls");//清屏
    88. }
    89. //检测联系人是否存在,如果存在返回所在数组的具体位置,不存在返回-1
    90. int isExit(Addressbooks* p,string name)
    91. {
    92. for (int i = 0; i < p->m_Size; i++)
    93. {
    94. //找到用户输入的姓名
    95. if (p->personArray[i].m_name == name)
    96. {
    97. return i;//找到了返回位置
    98. }
    99. }
    100. return -1;//遍历结束没找到,返回-1
    101. }
    102. //3、删除联系人函数
    103. void deletePerson(Addressbooks* p)
    104. {
    105. string name;
    106. cout << "请输入要删除的联系人姓名" << endl;
    107. cin >> name;
    108. int res = isExit(p, name);
    109. if (res == -1)
    110. {
    111. cout << "查无此人" << endl;
    112. }
    113. else
    114. {
    115. //查到此人,进行删除
    116. //将要删除的人的后面的人往前移就好
    117. for (int i = res; res < p->m_Size - 1; i++)
    118. {
    119. //数据前移
    120. p->personArray[i] = p->personArray[i+1];
    121. }
    122. /*for (int i = res + 1; i < p->m_Size; i++)
    123. {
    124. //数据前移
    125. p->personArray[i-1] = p->personArray[i];
    126. }*/
    127. p->m_Size--;//更新通讯录中的人员数
    128. cout << "删除成功" << endl;
    129. }
    130. system("pause");
    131. system("cls");
    132. }
    133. //4、查找联系人
    134. void findPerson(Addressbooks* p)
    135. {
    136. cout << "请输入要查找的联系人姓名" << endl;
    137. string name;
    138. cin >> name;
    139. int res = isExit(p, name);
    140. if (res == -1)
    141. {
    142. cout << "查无此人" << endl;
    143. }
    144. else
    145. {
    146. cout << "姓名:" << p->personArray[res].m_name << " "
    147. << "性别:" << (p->personArray[res].m_sex == 1 ? "男" : "女") << " "
    148. << "年龄:" << p->personArray[res].age << " "
    149. << "电话:" << p->personArray[res].m_phone << " "
    150. << "住址:" << p->personArray[res].m_Addr << endl;
    151. }
    152. system("pause");
    153. system("cls");
    154. }
    155. //菜单界面
    156. void showMenu()
    157. {
    158. cout << "**************************"<
    159. cout << "***** 1、添加联系人 *****" << endl;
    160. cout << "***** 2、显示联系人 *****" << endl;
    161. cout << "***** 3、删除联系人 *****" << endl;
    162. cout << "***** 4、查找联系人 *****" << endl;
    163. cout << "***** 5、修改联系人 *****" << endl;
    164. cout << "***** 6、清空联系人 *****" << endl;
    165. cout << "***** 0、退出通讯录 *****" << endl;
    166. cout << "**************************" << endl;
    167. }
    168. int main()
    169. {
    170. Addressbooks abs;//创建通讯录结构体变量
    171. abs.m_Size = 0;//初始化通讯录中当前人员的个数
    172. int select;//创建用户选择输入的变量
    173. while (1)
    174. {
    175. showMenu();//菜单调用
    176. cin >> select;
    177. switch (select)
    178. {
    179. case 1://1、添加联系人
    180. addPerson(&abs);//利用地址传递,可以修改实参
    181. break;
    182. case 2://2、显示联系人
    183. showPerson(&abs);
    184. break;
    185. case 3:// 3、删除联系人
    186. deletePerson(&abs);
    187. break;
    188. case 4://4、查找联系人
    189. findPerson(&abs);
    190. break;
    191. case 5://5、修改联系人
    192. break;
    193. case 6://6、清空联系人
    194. break;
    195. case 0://0、退出通讯录
    196. cout << "欢迎下次使用" << endl;
    197. system("pause");//按任意键继续
    198. return 0;//return 0退出函数,退出系统
    199. break;
    200. default:
    201. break;
    202. }
    203. }
    204. system("pause");//按任意键继续
    205. return 0;
    206. }

    9.修改联系人 

    1. #include
    2. using namespace std;
    3. //#define Max 1000
    4. const int Max = 1000;
    5. //设计联系人结构体
    6. struct person
    7. {
    8. //姓名
    9. string m_name;
    10. //性别 1男2女
    11. int m_sex;
    12. //年龄
    13. int age;
    14. //电话
    15. string m_phone;
    16. //住址
    17. string m_Addr;
    18. };
    19. //通讯录结构体
    20. struct Addressbooks
    21. {
    22. //保存联系人的数组
    23. person personArray[Max];
    24. //通讯录中当前记录的联系人的个数
    25. int m_Size;
    26. };
    27. //1、添加联系人
    28. void addPerson(Addressbooks* p)
    29. {
    30. //判断通讯录是否已满,如果满了就不再添加
    31. if (p->m_Size == Max)
    32. {
    33. cout << "通讯录已满,无法添加!" << endl;
    34. }
    35. else
    36. {
    37. cout << "请输入要添加的联系人的姓名,性别(1男,2女),年龄,电话,住址,以空格分割" << endl;
    38. string name;
    39. int sex;
    40. int age;
    41. string phone;
    42. string Addr;
    43. cin >> name >> sex >> age >> phone >> Addr;
    44. p->personArray[p->m_Size].m_name = name;
    45. p->personArray[p->m_Size].m_sex = sex;
    46. p->personArray[p->m_Size].age = age;
    47. p->personArray[p->m_Size].m_phone = phone;
    48. p->personArray[p->m_Size].m_Addr = Addr;
    49. //更新通讯录中的人数
    50. p->m_Size++;//等价于 p->m_Size += 1;
    51. /*
    52. while(1)//输错性别,就一直输入,直到正确才退出
    53. {
    54. cin >> sex;
    55. if (sex == 1 || sex == 2)
    56. {
    57. p->personArray[p->m_Size].m_sex = sex;
    58. break;
    59. }
    60. cout<<"输入有误,请重新输入<
    61. }
    62. */
    63. cout << "添加成功" << endl;
    64. system("pause");//请按任意键继续
    65. system("cls");//清屏操作
    66. }
    67. }
    68. //2、显示联系人
    69. void showPerson(Addressbooks* p)
    70. {
    71. if (p->m_Size == 0)
    72. {
    73. cout << "记录为空" << endl;
    74. }
    75. else
    76. {
    77. for (int i = 0; i < p->m_Size; i++)
    78. {
    79. cout <<"姓名:"<< p->personArray[i].m_name << " "
    80. << "性别:"<<(p->personArray[i].m_sex == 1 ? "男" : "女") << " "
    81. <<"年龄:"<< p->personArray[i].age << " "
    82. <<"电话:"<< p->personArray[i].m_phone << " "
    83. << "地址:"<personArray[i].m_Addr << endl;
    84. }
    85. }
    86. system("pause");//按任意键继续
    87. system("cls");//清屏
    88. }
    89. //检测联系人是否存在,如果存在返回所在数组的具体位置,不存在返回-1
    90. int isExit(Addressbooks* p,string name)
    91. {
    92. for (int i = 0; i < p->m_Size; i++)
    93. {
    94. //找到用户输入的姓名
    95. if (p->personArray[i].m_name == name)
    96. {
    97. return i;//找到了返回位置
    98. }
    99. }
    100. return -1;//遍历结束没找到,返回-1
    101. }
    102. //3、删除联系人函数
    103. void deletePerson(Addressbooks* p)
    104. {
    105. string name;
    106. cout << "请输入要删除的联系人姓名" << endl;
    107. cin >> name;
    108. int res = isExit(p, name);
    109. if (res == -1)
    110. {
    111. cout << "查无此人" << endl;
    112. }
    113. else
    114. {
    115. //查到此人,进行删除
    116. //将要删除的人的后面的人往前移就好
    117. for (int i = res; res < p->m_Size - 1; i++)
    118. {
    119. //数据前移
    120. p->personArray[i] = p->personArray[i+1];
    121. }
    122. /*for (int i = res + 1; i < p->m_Size; i++)
    123. {
    124. //数据前移
    125. p->personArray[i-1] = p->personArray[i];
    126. }*/
    127. p->m_Size--;//更新通讯录中的人员数
    128. cout << "删除成功" << endl;
    129. }
    130. system("pause");
    131. system("cls");
    132. }
    133. //4、查找联系人
    134. void findPerson(Addressbooks* p)
    135. {
    136. cout << "请输入要查找的联系人姓名" << endl;
    137. string name;
    138. cin >> name;
    139. int res = isExit(p, name);
    140. if (res == -1)
    141. {
    142. cout << "查无此人" << endl;
    143. }
    144. else
    145. {
    146. cout << "姓名:" << p->personArray[res].m_name << " "
    147. << "性别:" << (p->personArray[res].m_sex == 1 ? "男" : "女") << " "
    148. << "年龄:" << p->personArray[res].age << " "
    149. << "电话:" << p->personArray[res].m_phone << " "
    150. << "住址:" << p->personArray[res].m_Addr << endl;
    151. }
    152. system("pause");
    153. system("cls");
    154. }
    155. //5.修改指定联系人
    156. void modifyPreson(Addressbooks* p)
    157. {
    158. cout << "请输入要修改的联系人姓名:" << endl;
    159. string name;
    160. cin >> name;
    161. int res = isExit(p, name);
    162. if (res == -1)
    163. {
    164. cout << "查无此人" << endl;
    165. }
    166. else
    167. {
    168. int select;
    169. while (1)
    170. {
    171. cout << "请输入要修改的内容,1:姓名 2:性别 3:年龄:4: 电话 5: 地址 0:修改完毕" << endl;
    172. cin >> select;
    173. switch (select)
    174. {
    175. case 1:
    176. {
    177. cout << "请输入姓名:" << endl;
    178. cin >> name;
    179. p->personArray[res].m_name = name;
    180. }
    181. break;
    182. case 2:
    183. {
    184. int sex;
    185. cout << "请输入性别:1 男 2 女" << endl;
    186. cin >> sex;
    187. p->personArray[res].m_sex= sex;
    188. }
    189. break;
    190. case 3:
    191. {
    192. int age;
    193. cout << "请输入年龄:" << endl;
    194. cin >> age;
    195. p->personArray[res].age = age;
    196. }
    197. break;
    198. case 4:
    199. {
    200. cout << "请输入电话:" << endl;
    201. cin >> name;
    202. p->personArray[res].m_phone = name;
    203. }
    204. break;
    205. case 5:
    206. {
    207. cout << "请输入地址:" << endl;
    208. cin >> name;
    209. p->personArray[res].m_Addr= name;
    210. }
    211. break;
    212. case 0:
    213. {
    214. cout << "修改完毕" << endl;
    215. system("pause");
    216. system("cls");
    217. return;
    218. }
    219. break;
    220. default:
    221. break;
    222. }
    223. }
    224. }
    225. system("pause");
    226. system("cls");
    227. }
    228. //菜单界面
    229. void showMenu()
    230. {
    231. cout << "**************************"<
    232. cout << "***** 1、添加联系人 *****" << endl;
    233. cout << "***** 2、显示联系人 *****" << endl;
    234. cout << "***** 3、删除联系人 *****" << endl;
    235. cout << "***** 4、查找联系人 *****" << endl;
    236. cout << "***** 5、修改联系人 *****" << endl;
    237. cout << "***** 6、清空联系人 *****" << endl;
    238. cout << "***** 0、退出通讯录 *****" << endl;
    239. cout << "**************************" << endl;
    240. }
    241. int main()
    242. {
    243. Addressbooks abs;//创建通讯录结构体变量
    244. abs.m_Size = 0;//初始化通讯录中当前人员的个数
    245. int select;//创建用户选择输入的变量
    246. while (1)
    247. {
    248. showMenu();//菜单调用
    249. cin >> select;
    250. switch (select)
    251. {
    252. case 1://1、添加联系人
    253. addPerson(&abs);//利用地址传递,可以修改实参
    254. break;
    255. case 2://2、显示联系人
    256. showPerson(&abs);
    257. break;
    258. case 3:// 3、删除联系人
    259. deletePerson(&abs);
    260. break;
    261. case 4://4、查找联系人
    262. findPerson(&abs);
    263. break;
    264. case 5://5、修改联系人
    265. modifyPreson(&abs);
    266. break;
    267. case 6://6、清空联系人
    268. break;
    269. case 0://0、退出通讯录
    270. cout << "欢迎下次使用" << endl;
    271. system("pause");//按任意键继续
    272. return 0;//return 0退出函数,退出系统
    273. break;
    274. default:
    275. break;
    276. }
    277. }
    278. system("pause");//按任意键继续
    279. return 0;
    280. }

    10.清空联系人

    1. #include
    2. using namespace std;
    3. //#define Max 1000
    4. const int Max = 1000;
    5. //设计联系人结构体
    6. struct person
    7. {
    8. //姓名
    9. string m_name;
    10. //性别 1男2女
    11. int m_sex;
    12. //年龄
    13. int age;
    14. //电话
    15. string m_phone;
    16. //住址
    17. string m_Addr;
    18. };
    19. //通讯录结构体
    20. struct Addressbooks
    21. {
    22. //保存联系人的数组
    23. person personArray[Max];
    24. //通讯录中当前记录的联系人的个数
    25. int m_Size;
    26. };
    27. //1、添加联系人
    28. void addPerson(Addressbooks* p)
    29. {
    30. //判断通讯录是否已满,如果满了就不再添加
    31. if (p->m_Size == Max)
    32. {
    33. cout << "通讯录已满,无法添加!" << endl;
    34. }
    35. else
    36. {
    37. cout << "请输入要添加的联系人的姓名,性别(1男,2女),年龄,电话,住址,以空格分割" << endl;
    38. string name;
    39. int sex;
    40. int age;
    41. string phone;
    42. string Addr;
    43. cin >> name >> sex >> age >> phone >> Addr;
    44. p->personArray[p->m_Size].m_name = name;
    45. p->personArray[p->m_Size].m_sex = sex;
    46. p->personArray[p->m_Size].age = age;
    47. p->personArray[p->m_Size].m_phone = phone;
    48. p->personArray[p->m_Size].m_Addr = Addr;
    49. //更新通讯录中的人数
    50. p->m_Size++;//等价于 p->m_Size += 1;
    51. /*
    52. while(1)//输错性别,就一直输入,直到正确才退出
    53. {
    54. cin >> sex;
    55. if (sex == 1 || sex == 2)
    56. {
    57. p->personArray[p->m_Size].m_sex = sex;
    58. break;
    59. }
    60. cout<<"输入有误,请重新输入<
    61. }
    62. */
    63. cout << "添加成功" << endl;
    64. system("pause");//请按任意键继续
    65. system("cls");//清屏操作
    66. }
    67. }
    68. //2、显示联系人
    69. void showPerson(Addressbooks* p)
    70. {
    71. if (p->m_Size == 0)
    72. {
    73. cout << "记录为空" << endl;
    74. }
    75. else
    76. {
    77. for (int i = 0; i < p->m_Size; i++)
    78. {
    79. cout <<"姓名:"<< p->personArray[i].m_name << " "
    80. << "性别:"<<(p->personArray[i].m_sex == 1 ? "男" : "女") << " "
    81. <<"年龄:"<< p->personArray[i].age << " "
    82. <<"电话:"<< p->personArray[i].m_phone << " "
    83. << "地址:"<personArray[i].m_Addr << endl;
    84. }
    85. }
    86. system("pause");//按任意键继续
    87. system("cls");//清屏
    88. }
    89. //检测联系人是否存在,如果存在返回所在数组的具体位置,不存在返回-1
    90. int isExit(Addressbooks* p,string name)
    91. {
    92. for (int i = 0; i < p->m_Size; i++)
    93. {
    94. //找到用户输入的姓名
    95. if (p->personArray[i].m_name == name)
    96. {
    97. return i;//找到了返回位置
    98. }
    99. }
    100. return -1;//遍历结束没找到,返回-1
    101. }
    102. //3、删除联系人函数
    103. void deletePerson(Addressbooks* p)
    104. {
    105. string name;
    106. cout << "请输入要删除的联系人姓名" << endl;
    107. cin >> name;
    108. int res = isExit(p, name);
    109. if (res == -1)
    110. {
    111. cout << "查无此人" << endl;
    112. }
    113. else
    114. {
    115. //查到此人,进行删除
    116. //将要删除的人的后面的人往前移就好
    117. for (int i = res; res < p->m_Size - 1; i++)
    118. {
    119. //数据前移
    120. p->personArray[i] = p->personArray[i+1];
    121. }
    122. /*for (int i = res + 1; i < p->m_Size; i++)
    123. {
    124. //数据前移
    125. p->personArray[i-1] = p->personArray[i];
    126. }*/
    127. p->m_Size--;//更新通讯录中的人员数
    128. cout << "删除成功" << endl;
    129. }
    130. system("pause");
    131. system("cls");
    132. }
    133. //4、查找联系人
    134. void findPerson(Addressbooks* p)
    135. {
    136. cout << "请输入要查找的联系人姓名" << endl;
    137. string name;
    138. cin >> name;
    139. int res = isExit(p, name);
    140. if (res == -1)
    141. {
    142. cout << "查无此人" << endl;
    143. }
    144. else
    145. {
    146. cout << "姓名:" << p->personArray[res].m_name << " "
    147. << "性别:" << (p->personArray[res].m_sex == 1 ? "男" : "女") << " "
    148. << "年龄:" << p->personArray[res].age << " "
    149. << "电话:" << p->personArray[res].m_phone << " "
    150. << "住址:" << p->personArray[res].m_Addr << endl;
    151. }
    152. system("pause");
    153. system("cls");
    154. }
    155. //5.修改指定联系人
    156. void modifyPreson(Addressbooks* p)
    157. {
    158. cout << "请输入要修改的联系人姓名:" << endl;
    159. string name;
    160. cin >> name;
    161. int res = isExit(p, name);
    162. if (res == -1)
    163. {
    164. cout << "查无此人" << endl;
    165. }
    166. else
    167. {
    168. int select;
    169. while (1)
    170. {
    171. cout << "请输入要修改的内容,1:姓名 2:性别 3:年龄:4: 电话 5: 地址 0:修改完毕" << endl;
    172. cin >> select;
    173. switch (select)
    174. {
    175. case 1:
    176. {
    177. cout << "请输入姓名:" << endl;
    178. cin >> name;
    179. p->personArray[res].m_name = name;
    180. }
    181. break;
    182. case 2:
    183. {
    184. int sex;
    185. cout << "请输入性别:1 男 2 女" << endl;
    186. cin >> sex;
    187. p->personArray[res].m_sex= sex;
    188. }
    189. break;
    190. case 3:
    191. {
    192. int age;
    193. cout << "请输入年龄:" << endl;
    194. cin >> age;
    195. p->personArray[res].age = age;
    196. }
    197. break;
    198. case 4:
    199. {
    200. cout << "请输入电话:" << endl;
    201. cin >> name;
    202. p->personArray[res].m_phone = name;
    203. }
    204. break;
    205. case 5:
    206. {
    207. cout << "请输入地址:" << endl;
    208. cin >> name;
    209. p->personArray[res].m_Addr= name;
    210. }
    211. break;
    212. case 0:
    213. {
    214. cout << "修改完毕" << endl;
    215. system("pause");
    216. system("cls");
    217. return;
    218. }
    219. break;
    220. default:
    221. break;
    222. }
    223. }
    224. }
    225. system("pause");
    226. system("cls");
    227. }
    228. //6.清空联系人
    229. void cleanPerson(Addressbooks* p)
    230. {
    231. p->m_Size = 0; //将当前记录联系人数量设置为0
    232. cout << "通讯录已清空" << endl;
    233. system("pause");
    234. system("cls");
    235. }
    236. //菜单界面
    237. void showMenu()
    238. {
    239. cout << "**************************"<
    240. cout << "***** 1、添加联系人 *****" << endl;
    241. cout << "***** 2、显示联系人 *****" << endl;
    242. cout << "***** 3、删除联系人 *****" << endl;
    243. cout << "***** 4、查找联系人 *****" << endl;
    244. cout << "***** 5、修改联系人 *****" << endl;
    245. cout << "***** 6、清空联系人 *****" << endl;
    246. cout << "***** 0、退出通讯录 *****" << endl;
    247. cout << "**************************" << endl;
    248. }
    249. int main()
    250. {
    251. Addressbooks abs;//创建通讯录结构体变量
    252. abs.m_Size = 0;//初始化通讯录中当前人员的个数
    253. int select;//创建用户选择输入的变量
    254. while (1)
    255. {
    256. showMenu();//菜单调用
    257. cin >> select;
    258. switch (select)
    259. {
    260. case 1://1、添加联系人
    261. addPerson(&abs);//利用地址传递,可以修改实参
    262. break;
    263. case 2://2、显示联系人
    264. showPerson(&abs);
    265. break;
    266. case 3:// 3、删除联系人
    267. deletePerson(&abs);
    268. break;
    269. case 4://4、查找联系人
    270. findPerson(&abs);
    271. break;
    272. case 5://5、修改联系人
    273. modifyPreson(&abs);
    274. break;
    275. case 6://6、清空联系人
    276. cleanPerson(&abs);
    277. break;
    278. case 0://0、退出通讯录
    279. cout << "欢迎下次使用" << endl;
    280. system("pause");//按任意键继续
    281. return 0;//return 0退出函数,退出系统
    282. break;
    283. default:
    284. break;
    285. }
    286. }
    287. system("pause");//按任意键继续
    288. return 0;
    289. }

  • 相关阅读:
    IDEA Windows下SPARK连接Hive
    cadence virtuoso layout drc error
    C#switch…case…判断
    GBase 8c维护审计日志(二)
    O2OA(翱途)开发平台 V8.2已发布,更安全、更高效、更开放
    IShellFolder2::GetDetailsOf第二个参数(UINT iColumn)数值对应详细信息的项
    【二进制部署k8s-1.29.4】八、worker端安装kubelet和cotainerd
    常见DOM操作
    倍福PLC和C#通过ADS通信传输String类型
    HCIA-HarmonyOS Application Developer 课程大纲
  • 原文地址:https://blog.csdn.net/qq_37891604/article/details/128189108