当前位置:   article > 正文

通讯录初实现_利用线性表实现一个通讯录管理,

利用线性表实现一个通讯录管理,
  1. #define _CRT_SECURE_NO_WARNINGS 1
  2. #define MAX 100
  3. #define MAX_NAME 20
  4. #define MAX_SEX 5
  5. #define MAX_TELE 15
  6. #define MAX_ADDR 30
  7. #include<stdio.h>
  8. #include<string.h>
  9. enum Option
  10. {
  11. EXIT,
  12. ADD,
  13. DEL,
  14. SEARCH,
  15. MODIFY,
  16. SHOW
  17. };
  18. struct PeoInfo
  19. {
  20. char name[MAX_NAME];
  21. int age;
  22. char sex[MAX_SEX];
  23. char tele[MAX_TELE];
  24. char addr[MAX_ADDR];
  25. };
  26. //通讯录声明
  27. struct Contact
  28. {
  29. struct PeoInfo data[MAX];//存放一个信息
  30. int size;//记录当前已有的元素个数
  31. };
  32. //函数声明
  33. //初始化通讯录
  34. void InitContact(struct Contact* ps);
  35. //添加联系人
  36. void AddContact(struct Contact* ps);
  37. //展示通讯录
  38. void ShowContact(const struct Contact* ps);
  39. //删除联系人
  40. void DelContact(struct Contact* ps);
  41. //查找联系人
  42. void SearchContact(const struct Contact* ps);
  43. //修改联系人信息
  44. void ModdifyContact(struct Contact* ps);
  1. #include "contact.h"
  2. void InitContact(struct Contact* ps)
  3. {
  4. memset(ps->data, 0, sizeof(ps->data));
  5. ps->size = 0;
  6. }
  7. void AddContact(struct Contact* ps)
  8. {
  9. if (ps->size == MAX)
  10. {
  11. printf("通讯录已满,无法增加\n");
  12. }
  13. else
  14. {
  15. printf("请输入名字:");
  16. scanf("%s", ps->data[ps->size].name);
  17. printf("请输入年龄:");
  18. scanf("%d", &(ps->data[ps->size].age));
  19. printf("请输入性别:");
  20. scanf("%s", ps->data[ps->size].sex);
  21. printf("请输入电话:");
  22. scanf("%s", ps->data[ps->size].tele);
  23. printf("请输入地址:");
  24. scanf("%s", ps->data[ps->size].addr);
  25. ps->size++;
  26. printf("添加成功\n");
  27. }
  28. }
  29. void ShowContact(const struct Contact* ps)
  30. {
  31. if (ps->size == 0)
  32. {
  33. printf("通讯录为空\n");
  34. }
  35. else
  36. {
  37. int i = 0;
  38. printf("%-10s\t%-4s\t%-5s\t%-12s\t%-20s\n", "名字", "年龄", "性别", "电话", "地址");
  39. for (i = 0; i < ps->size; i++)
  40. {
  41. printf("%-10s\t%-4d\t%-5s\t%-12s\t%-20s\n",
  42. ps->data[i].name,
  43. ps->data[i].age,
  44. ps->data[i].sex,
  45. ps->data[i].tele,
  46. ps->data[i].addr);
  47. }
  48. }
  49. }
  50. static int FindByName(const struct Contact* ps, char name[MAX_NAME])
  51. {
  52. int i = 0;
  53. for (i = 0; i < ps->size; i++)
  54. {
  55. if (strcmp(ps->data[i].name, name) == 0)
  56. return i;
  57. }
  58. return -1;
  59. }
  60. void DelContact(struct Contact* ps)
  61. {
  62. char name[MAX_NAME];
  63. printf("请输入删除人的名字:");
  64. scanf("%s", name);
  65. //查找要删除的人在什么位置
  66. int pos = FindByName(ps, name);//找到返回下标,否则返回-1
  67. if (pos == -1)
  68. printf("联系人不存在\n");
  69. else
  70. {
  71. int j = 0;
  72. for (j = pos; j < ps->size - 1; j++)
  73. ps->data[j] = ps->data[j + 1];
  74. ps->size--;
  75. printf("删除成功\n");
  76. }
  77. }
  78. void SearchContact(const struct Contact* ps)
  79. {
  80. char name[MAX_NAME];
  81. printf("请输入查找人的名字:");
  82. scanf("%s", name);
  83. int pos = FindByName(ps, name);
  84. if (pos == -1)
  85. printf("联系人不存在\n");
  86. else
  87. {
  88. printf("%-10s\t%-4s\t%-5s\t%-12s\t%-20s\n", "名字", "年龄", "性别", "电话", "地址");
  89. printf("%-10s\t%-4d\t%-5s\t%-12s\t%-20s\n",
  90. ps->data[pos].name,
  91. ps->data[pos].age,
  92. ps->data[pos].sex,
  93. ps->data[pos].tele,
  94. ps->data[pos].addr);
  95. }
  96. }
  97. void ModdifyContact(struct Contact* ps)
  98. {
  99. char name[MAX_NAME];
  100. printf("请输入要修改联系人名字:");
  101. scanf("%s", name);
  102. int pos = FindByName(ps, name);
  103. if (pos == -1)
  104. printf("要修改的联系人不存在\n");
  105. else
  106. {
  107. printf("请输入年龄:");
  108. scanf("%d", &(ps->data[pos].age));
  109. printf("请输入性别:");
  110. scanf("%s", ps->data[pos].sex);
  111. printf("请输入电话:");
  112. scanf("%s", ps->data[pos].tele);
  113. printf("请输入地址:");
  114. scanf("%s", ps->data[pos].addr);
  115. printf("信息已重新修改完成\n");
  116. }
  117. }
  1. #include "contact.h"
  2. void menu()
  3. {
  4. printf("** 1.添加 2.删除 **\n");
  5. printf("** 3.查找 4.修改 **\n");
  6. printf("** 5.显示 0.退出 **\n");
  7. }
  8. int main()
  9. {
  10. int input = 0;
  11. struct Contact con;
  12. //初始化通讯录
  13. InitContact(&con);
  14. do
  15. {
  16. menu();
  17. printf("请选择:");
  18. scanf("%d", &input);
  19. switch (input)
  20. {
  21. case ADD:
  22. AddContact(&con);
  23. break;
  24. case DEL:
  25. DelContact(&con);
  26. break;
  27. case SEARCH:
  28. SearchContact(&con);
  29. break;
  30. case MODIFY:
  31. ModdifyContact(&con);
  32. break;
  33. case SHOW:
  34. ShowContact(&con);
  35. break;
  36. case EXIT:
  37. printf("退出通讯录\n");
  38. break;
  39. default:
  40. printf("输入有误,请重新输入:");
  41. break;
  42. }
  43. } while (input);
  44. return 0;
  45. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/559418
推荐阅读
相关标签
  

闽ICP备14008679号