基于C语言怎么实现静态通讯录(c语言,开发技术)

时间:2024-05-05 00:07:28 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    一、项目要求

    实现一个通讯录

    通讯录可以用来存储100个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址

    提供方法:

    • 添加联系人信息

    • 删除指定联系人信息

    • 查找指定联系人信息

    • 修改指定联系人信息

    • 显示所有联系人信息

    • 清空所有联系人

    • 以名字排序所有联系人

    二、Contact.h

    #pragmaonce#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<assert.h>#include<string.h>#include<stdlib.h>#defineMAX_NAME20#defineMAX_SEX10#defineMAX_TELE12#defineMAX_ADDR30#defineMAX_CAPACITY100typedefstructPeoInfo{charname[MAX_NAME];charsex[MAX_SEX];chartele[MAX_TELE];charaddr[MAX_ADDR];intage;}PeoInfo;typedefstructContact{PeoInfodate[MAX_CAPACITY];intsize;}Contact;voidContactInit(Contact*pc);//初始化通讯录voidContactPrint(constContact*pc);//打印voidContactAdd(Contact*pc);//增加联系人信息voidContactDel(Contact*pc);//删除联系人信息voidContactFind(constContact*pc);//查找信息voidContactModify(Contact*pc);//修改信息voidContactSortByName(Contact*pc);//排序voidContactEmpty(Contact*pc);//清空通讯录

    先定义一个PeoInfo的结构体类型,里面包含了人的信息。

    再将PeoInfo的数组和数组有效元素个数size包含至Contact,作为通讯录的模板。

    三、Contact.c

    1、静态函数

    staticintFindByName(constContact*pc,constchararr[])//通过名字查找{assert(pc&&arr);for(inti=0;i<pc->size;i++){if(strcmp(pc->date[i].name,arr)==0){returni;}}return-1;}

    可以通过名字查找通讯录中是否存在联系人,存在返回下标,不存在返回-1

    2、初始化通讯录

    voidContactInit(Contact*pc)//初始化通讯录{assert(pc);pc->size=0;memset(pc->date,0,sizeof(pc->date));}

    将size置为0,使用memset函数将pc->date的内存按字节全部置为0

    3、打印

    voidContactPrint(constContact*pc)//打印{assert(pc);printf("姓名\t性别\t电话\t地址\t年龄\n");for(inti=0;i<pc->size;i++){printf("%s\t%s\t%s\t%s\t%d\n",pc->date[i].name,pc->date[i].sex,pc->date[i].tele,pc->date[i].addr,pc->date[i].age);}}

    for循环遍历打印pc->date中的结构体成员

    4、增加联系人信息

    voidContactAdd(Contact*pc)//增加联系人信息{assert(pc&&pc->size<=MAX_CAPACITY);printf("请输入姓名:\n");scanf("%s",pc->date[pc->size].name);printf("请输入性别:\n");scanf("%s",pc->date[pc->size].sex);printf("请输入电话:\n");scanf("%s",pc->date[pc->size].tele);printf("请输入地址:\n");scanf("%s",pc->date[pc->size].addr);printf("请输入年龄:\n");scanf("%d",&(pc->date[pc->size].age));pc->size++;}

    注意增加联系人后pc->size++

    5、通过名字查找

    voidContactFind(constContact*pc)//查找信息{assert(pc);printf("请输入姓名查找:");chararr[20]={0};scanf("%s",arr);intpos=FindByName(pc,arr);if(pos!=-1){printf("查找到如下信息:\n");printf("姓名\t性别\t电话\t地址\t年龄\n");printf("%s\t%s\t%s\t%s\t%d\n",pc->date[pos].name,pc->date[pos].sex,pc->date[pos].tele,pc->date[pos].addr,pc->date[pos].age);}elseprintf("通讯录查无此人!\n");}

    先判断查找的信息是否在通讯录中,再打印该下标的信息。

    6、删除联系人信息

    voidContactDel(Contact*pc)//删除联系人信息{assert(pc);printf("请输入姓名查找:");chararr[20]={0};scanf("%s",arr);intpos=FindByName(pc,arr);//记录size的位置if(pos==-1){printf("通讯录没有该信息\n");return;}for(inti=pos;i<pc->size-1;i++)//移动元素{pc->date[i]=pc->date[i+1];}pc->size--;printf("删除成功!\n");}

    通过静态函数FindByName返回的下标,通过for循环将后续元素逐个进行覆盖。

    7、修改信息

    voidContactModify(Contact*pc)//修改信息{assert(pc);printf("请输入姓名查找:");chararr[20]={0};scanf("%s",arr);intpos=FindByName(pc,arr);if(pos==-1){printf("找不到\n");return;}else{printf("请输入更改后的姓名:\n");scanf("%s",pc->date[pos].name);printf("请输入更改后的性别:\n");scanf("%s",pc->date[pos].sex);printf("请输入更改后的电话:\n");scanf("%s",pc->date[pos].tele);printf("请输入更改后的地址:\n");scanf("%s",pc->date[pos].addr);printf("请输入更改后的年龄:\n");scanf("%d",&(pc->date[pos].age));}}

    先判断查找的信息是否在通讯录中,再打印该下标的信息。

    8、排序通讯录

    intname_cmp(constvoid*e1,constvoid*e2){returnstrcmp(((PeoInfo*)e1)->name,((PeoInfo*)e2)->name);}voidContactSortByName(Contact*pc)//排序{assert(pc&&pc->size!=0);qsort(pc->date,pc->size,sizeof(PeoInfo),name_cmp);printf("排序完成\n");}

    使用qsort函数排序通讯录,可参照本文学习qsort排序结构体的方法

    9、清空通讯录

    voidContactEmpty(Contact*pc)//清空通讯录{assert(pc);ContactInit(pc);printf("通讯录已清空\n");}

    本文为静态通讯录,非动态开辟内存,此处使用初始化函数即可。

    四、text.c

    #include"contact.h"voidmenu(){printf("###########################\n");printf("#####1、add2、del######\n");printf("#####3、find4、modify###\n");printf("#####5、print6、sort#####\n");printf("#####7、empty8、exit#####\n");printf("###########################\n");}enumoption{ADD=1,DEL,FIND,MODIFY,PRINT,SORT,EMPTY,EXIT};intmain(){intinput=0;Contactc;//创建一个通讯录ContactInit(&c);//初始化通讯录while(1){menu();printf("请输入选项:\n");scanf("%d",&input);if(input==ADD)ContactAdd(&c);//增加联系人信息elseif(input==DEL)ContactDel(&c);//删除联系人信息elseif(input==FIND)ContactFind(&c);//查找联系人信息elseif(input==MODIFY)ContactModify(&c);//修改联系人信息elseif(input==PRINT)ContactPrint(&c);//打印elseif(input==SORT)ContactSortByName(&c);//排序elseif(input==EMPTY)ContactEmpty(&c);//清空通讯录elseif(input==EXIT)break;//退出elseprintf("输入错误!请重新输入!\n");}return0;}

    使用enum枚举选项。

    五、动图展示

    基于C语言怎么实现静态通讯录

     </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
    本文:基于C语言怎么实现静态通讯录的详细内容,希望对您有所帮助,信息来源于网络。
    上一篇:Vue3中的异步组件defineAsyncComponentAPI怎么使用下一篇:

    13 人围观 / 0 条评论 ↓快速评论↓

    (必须)

    (必须,保密)

    阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18