当前位置:   article > 正文

C语言之通讯录

C语言之通讯录

一、程序需求设计

1)实现一个通讯录中保存人的信息

  • 名字
  • 年龄
  • 性别
  • 电话
  • 住址

2)程序基本功能

  1. 通讯录中可以存放100个人的信息
  2. 增加联系人
  3. 删除指定联系人
  4. 修改指定联系人
  5. 查找指定联系人
  6. 显示所有联系人的信息
  7. 排序功能

二、程序文件类型

        test.c - 测试通讯录

        contact.c - 函数和类型的声明

        contact.c - 函数的实现

设计保存人的信息的结构体

  1. typedef struct PeoInfo{
  2. char name[MAX_NAME];
  3. int age;
  4. char sex[MAX_SEX];
  5. char tele[MAX_TELE];
  6. char addr[MAX_ADDR];
  7. }PeoInfo;

三、代码模块

1)菜单

  1. void menu() {
  2. printf("************************************\n");
  3. printf("***** 1.add 2.del *****\n");
  4. printf("***** 3.search 4.modify *****\n");
  5. printf("***** 5.show 6.sort *****\n");
  6. printf("***** 0.exit *****\n");
  7. printf("************************************\n");
  8. }

2)初始化将通讯录置0

  1. void InitContact(Contact* pc){
  2. assert(pc);
  3. memset(pc->data, 0, sizeof(pc->data));
  4. pc->sz = 0;
  5. }

3)添加联系人

  1. void ADDContact(Contact* pc){
  2. assert(pc);
  3. if (pc->sz == MAX) {
  4. printf("通讯录已满,无法添加\n");
  5. return ;
  6. }
  7. printf("请输入名字>>>");
  8. scanf("%s", pc->data[pc->sz].name);//name本身就是数组,数组名就是地址
  9. printf("请输入年龄>>>");
  10. scanf("%d", &(pc->data[pc->sz].age));
  11. printf("请输入性别>>>");
  12. scanf("%s", pc->data[pc->sz].sex);
  13. printf("请输入电话>>>");
  14. scanf("%s", pc->data[pc->sz].tele);
  15. printf("请输入地址>>>");
  16. scanf("%s", pc->data[pc->sz].addr);
  17. pc->sz++;
  18. printf("成功添加联系人\n");
  19. }

4)展示联系人内容

  1. void ShowContact(const Contact* pc){
  2. assert(pc);
  3. printf("%-7s\t%-4s\t%-5s\t%-11s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");
  4. for (int i = 0; i < pc->sz; i++) {
  5. printf("%-7s\t%-4d\t%-5s\t%-11s\t%-30s\n",
  6. pc->data[i].name,
  7. pc->data[i].age,
  8. pc->data[i].sex,
  9. pc->data[i].tele,
  10. pc->data[i].addr
  11. );
  12. }
  13. }

5)删除指定联系人

  1. void DelContact(Contact* pc){
  2. assert(pc);
  3. if (pc->sz == 0) {
  4. printf("通讯录为空,无法删除\n");
  5. return;
  6. }
  7. char name[MAX_NAME] = { 0 };
  8. printf("请输入要删除的名字>>>");
  9. scanf("%s", &name);
  10. //找到要删除的人,删除
  11. int del= FindByName(pc, name);
  12. if (del == -1) {
  13. printf("不存在指定联系人\n");
  14. return;
  15. }
  16. for (int i = del; i < pc->sz-1; i++) {
  17. pc->data[i] = pc->data[i + 1];
  18. }
  19. pc->sz--;
  20. printf("成功删除联系人\n");
  21. }

6)查找指定联系人

  1. void SearchContact(const Contact* pc){
  2. assert(pc);
  3. char name[MAX_NAME] = { 0 };
  4. printf("请输入要查找人的名字>>>");
  5. scanf("%s", name);
  6. int pos = FindByName(pc, name);
  7. if (pos == -1)
  8. printf("要查找的人不存在\n");
  9. else {
  10. printf("%-7s\t%-4s\t%-5s\t%-11s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");
  11. printf("%-7s\t%-4d\t%-5s\t%-11s\t%-30s\n",pc->data[pos].name,pc->data[pos].age,pc->data[pos].sex,pc->data[pos].tele,pc->data[pos].addr);
  12. }
  13. }

7)修改指定联系人

  1. void ModifyContact(Contact* pc){
  2. assert(pc);
  3. char name[MAX_NAME] = { 0 };
  4. printf("请输入要修改人的名字>>>");
  5. scanf("%s", name);
  6. int pos = FindByName(pc, name);
  7. if (pos == -1)
  8. printf("要查找的人不存在\n");
  9. else {
  10. printf("请输入名字>>>");
  11. scanf("%s", pc->data[pos].name);//name本身就是数组,数组名就是地址
  12. printf("请输入年龄>>>");
  13. scanf("%d", &(pc->data[pos].age));
  14. printf("请输入性别>>>");
  15. scanf("%s", pc->data[pos].sex);
  16. printf("请输入电话>>>");
  17. scanf("%s", pc->data[pos].tele);
  18. printf("请输入地址>>>");
  19. scanf("%s", pc->data[pos].addr);
  20. printf("修改成功\n");
  21. }
  22. }

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

闽ICP备14008679号