• 通讯录的实现


    这个代码通过顺序表的方式,来实现通讯录,功能有显示,删除,修改,查找,增加的功能

    可以拿去应付期末考试哦

    结言:本人笔拙,无法将自身的想法一一阐述,希望各位在阅读完后,能给出相应的意见,也欢迎大家在阅读之后提出一些问题,我很乐意帮助大家 

    1. #include <assert.h>
    2. #include <stdio.h>
    3. #include <string.h>
    4. #define NAME_MAX 10
    5. #define SEX_MAX 5
    6. #define TELE_MAX 10
    7. #define ADDR_MAX 10
    8. #define MAX 100
    9. //类型的声明
    10. typedef struct PeoInfo
    11. {
    12. char name[NAME_MAX];
    13. int age;
    14. char sex[SEX_MAX];
    15. char tele[TELE_MAX];
    16. char addr[ADDR_MAX];
    17. }PeoInfo;
    18. typedef struct Contact
    19. {
    20. PeoInfo data[MAX];//存放数据
    21. int sz;//记录的时当前通讯录中存放的人的信息个数
    22. }Contact;
    23. //初始化通讯录
    24. void InitContact(Contact* pc);
    25. //增加联系人
    26. void AddContact(Contact* pc);
    27. //显示所有的联系人
    28. void ShowContact(const Contact* pc);
    29. //删除指定联系人
    30. void DelContact(Contact* pc);
    31. //查找指定联系人
    32. void SearchContact(Contact* pc);
    33. //修改指定联系人
    34. void ModifyContact(Contact* pc);
    35. void InitContact(Contact* pc)
    36. {
    37. assert(pc);
    38. pc->sz = 0;
    39. memset(pc->data, 0, sizeof(pc->data));
    40. return;
    41. }
    42. void AddContact(Contact* pc)
    43. {
    44. assert(pc);
    45. if (pc->sz == MAX)
    46. {
    47. printf("通讯录已满");
    48. return;
    49. }
    50. printf("请输入name");
    51. scanf("%s", pc->data[pc->sz].name);
    52. printf("请输入age");
    53. scanf("%d", &pc->data[pc->sz].age);
    54. printf("请输入sex");
    55. scanf("%s", pc->data[pc->sz].sex);
    56. printf("请输入tale");
    57. scanf("%s", pc->data[pc->sz].tele);
    58. printf("请输入addr");
    59. scanf("%s", pc->data[pc->sz].addr);
    60. printf("添加成功\n");
    61. pc->sz++;
    62. return;
    63. }
    64. void ShowContact(const Contact* pc)
    65. {
    66. assert(pc);
    67. int i;
    68. printf("%-20s%-5s%-5s%-12s%-30s\n", "名字", "年龄", "性别", "电话", "地址");
    69. for (i = 0; i < pc->sz; i++)
    70. {
    71. printf("%-20s%-5d%-5s%-12s%-30s\n", pc->data[i].name, pc->data[i].age, pc->data[i].sex, pc->data[i].tele, pc->data->addr);
    72. }
    73. return;
    74. }
    75. static int findname(Contact* pc, char name[])
    76. {
    77. assert(pc);
    78. int i = 0;
    79. for (i = 0; i < pc->sz; i++)
    80. {
    81. if (strcmp(pc->data[i].name, name) == 0)
    82. {
    83. return i;
    84. }
    85. }
    86. return -1;//找不到
    87. }
    88. void DelContact(Contact* pc)
    89. {
    90. assert(pc);
    91. int i;
    92. char s[10];
    93. printf("请输入你要删除人的名字");
    94. scanf("%s", s);
    95. int ret = findname(pc, s);
    96. if (ret != -1)
    97. {
    98. for (i = ret; i < pc->sz - 1; i++)
    99. {
    100. pc->data[i] = pc->data[i + 1];
    101. }
    102. pc->sz--;
    103. printf("删除成功\n");
    104. }
    105. else
    106. {
    107. printf("并无此人\n");
    108. }
    109. return;
    110. }
    111. void SearchContact(Contact* pc)
    112. {
    113. assert(pc);
    114. char s[10];
    115. printf("请输入要联系人的名字");
    116. scanf("%s", s);
    117. int ret = findname(pc, s);
    118. if (ret == -1)
    119. {
    120. printf("要查找的人不存在\n");
    121. return;
    122. }
    123. //显示出来
    124. printf("%-20s%-5s%-5s%-12s%-30s\n", "名字", "年龄", "性别", "电话", "地址");
    125. printf("%-20s%-5d%-5s%-12s%-30s\n",
    126. pc->data[ret].name, pc->data[ret].age, pc->data[ret].sex, pc->data[ret].tele, pc->data[ret].addr);
    127. }
    128. void ModifyContact(Contact* pc)
    129. {
    130. assert(pc);
    131. char s[10];
    132. printf("请输入要修改的名字");
    133. scanf("%s", s);
    134. int ret = findname(pc, s);
    135. if (ret != -1)
    136. {
    137. printf("请输入name");
    138. scanf("%s", pc->data[ret].name);
    139. printf("请输入age");
    140. scanf("%d", &pc->data[ret].age);
    141. printf("请输入sex");
    142. scanf("%s", pc->data[ret].sex);
    143. printf("请输入tale");
    144. scanf("%s", pc->data[ret].tele);
    145. printf("请输入addr");
    146. scanf("%s", pc->data[ret].addr);
    147. printf("修改成功\n");
    148. }
    149. else
    150. {
    151. printf("查无此人");
    152. }
    153. return;
    154. }
    155. void menu()
    156. {
    157. printf("********************************\n");
    158. printf("**** 1. add 2. del ****\n");
    159. printf("**** 3. search 4.modify ****\n");
    160. printf("**** 5. show 6. sort ****\n");
    161. printf("**** 0. exit ****\n");
    162. printf("********************************\n");
    163. }
    164. enum option {
    165. EXIT,
    166. ADD,
    167. DEL,
    168. SEARCH,
    169. MODIFY,
    170. SHOW,
    171. SORT
    172. };
    173. int main()
    174. {
    175. Contact con;
    176. InitContact(&con);
    177. int input = 0;
    178. do {
    179. menu();
    180. printf("请输入你的选择");
    181. scanf("%d", &input);
    182. switch (input)
    183. {
    184. case ADD:AddContact(&con); break;
    185. case DEL:DelContact(&con); break;
    186. case SEARCH:SearchContact(&con); break;
    187. case MODIFY:ModifyContact(&con); break;
    188. case SHOW:ShowContact(&con); break;
    189. case SORT:
    190. break;
    191. }
    192. } while (input);
    193. return 0;
    194. }

  • 相关阅读:
    Python到底难学吗?到底可以用它来干嘛?
    如何解决.NET8 类库Debug时,Debug文件夹中不包含Packages中引入的文件
    原装应广单片机 MCU芯片PMS152 SOP8封装 单片机开发
    太空 5G 在启动板上
    从React源码分析看useEffect
    象群游牧优化算法(EHO)(Matlab完整代码实现)
    借助 Aspose.Words,在 C# 中将 Word 转换为 JPG
    【C语言】深入解开指针(三)
    腾讯音乐:说说Redis脑裂问题?
    硬核!让初学者快速掌握经典算法的宝典——数据结构与算法经典问题解析
  • 原文地址:https://blog.csdn.net/2301_77452038/article/details/133364902