基于C语言怎么实现静态通讯录
导读:本文共3957.5字符,通常情况下阅读需要13分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 一、项目要求实现一个通讯录通讯录可以用来存储100个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:添加联系人信息删除指定联系人信息查找指定联系人信息修改指定联系人信息显示所有联系人信息清空所有联系人以名字排序所有联系人二、Contact.h#pragmaonce#define_CRT_SECURE_NO_WARNINGS1#include... ...
目录
(为您整理了一些要点),点击可以直达。一、项目要求
实现一个通讯录
通讯录可以用来存储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枚举选项。
五、动图展示
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
基于C语言怎么实现静态通讯录的详细内容,希望对您有所帮助,信息来源于网络。