C语言简易通讯录的实现代码
本文实例为大家分享了C语言简易通讯录的具体代码,供大家参考,具体内容如下
通讯录的实现:
一.介绍:
运用C语言的数组、指针、结构体等相关知识:实现一个简易的通讯录:
此通讯录的大概内容为:
通讯录可存储1000个人的信息:
每个人的基本信息有:名字+年龄+性别+ 电话+QQ+地址
此通讯录所具有的功能:增加+删除+ 查询+修改+ 排序+退出
此通讯录在设计时:总共设计了三个文件:
contact.h:类型的声明和函数的声明
contact.c:函数功能的具体实现
test.c:测试文件
二.具体实现:
1.contact.h:
此文件中定义该通讯录中所设计的功能的函数声明以及两个结构体:
PeoInfo:存储通讯录中每个人的基本信息
Contact:存储通讯录中的数据以及通讯录中的已存储的人数
具体代码实现如下:
// //类型的声明+函数的声明 // #include#include #defineMAX1000 #defineMAX_NAME20 #defineMAX_TELE12 #defineMAX_ADDR100 #defineMAX_QQ12 #defineMAX_SEX5 typedefstructPeoInfo { charname[MAX_NAME]; chartele[MAX_TELE]; charaddr[MAX_ADDR]; charqq[MAX_QQ]; charsex[MAX_SEX]; shortage; }PeoInfo; //通讯录 typedefstructContact { PeoInfodata[MAX];//数据 intsz;//有效个数 }Contact; //添加一个人的信息 voidadd_contact(Contact*pc); //显示通讯录中的信息 voidshow_contact(Contact*pc); //删除指定的联系人 voiddel_contact(Contact*pc); //查找指定联系人 voidsearch_contact(Contact*pc); //修改指定联系人 voidmodify_contact(Contact*pc); //排序通讯录的数据 voidsort_contact(Contact*pc);
2.contact.c:
此文件是该通讯录所设计的功能的具体实现:具体包括:
(1)添加一个人的信息 voidadd_contact(Contact*pc);
(2)显示通讯录中的信息 voidshow_contact(Contact*pc);
(3)删除指定的联系人 voiddel_contact(Contact*pc);
(4)查找指定联系人 voidsearch_contact(Contact*pc);
(5)修改指定联系人 voidmodify_contact(Contact*pc);
(6)排序通讯录的数据 voidsort_contact(Contact*pc);
具体代码实现如下:
#define_CRT_SECURE_NO_WARNINGS1 #include"contact.h" voidadd_contact(Contact*pc) { if(pc->sz==MAX) { printf("通讯录已满\n"); } else { printf("请输入名字:>"); scanf("%s",pc->data[pc->sz].name); printf("请输入电话:>"); scanf("%s",pc->data[pc->sz].tele); printf("请输入地址:>"); scanf("%s",pc->data[pc->sz].addr); printf("请输入QQ:>"); scanf("%s",pc->data[pc->sz].qq); printf("请输入性别:>"); scanf("%s",pc->data[pc->sz].sex); printf("请输入年龄:>"); scanf("%d",&(pc->data[pc->sz].age)); pc->sz++; printf("添加成功\n"); } } voidshow_contact(Contact*pc) { inti=0; printf("%10s%12s%20s%5s%12s%5s\n","名字","电话","地址","年龄","QQ","性别"); for(i=0;isz;i++) { printf("%10s%12s%20s%5d%12s%5s\n",pc->data[i].name, pc->data[i].tele, pc->data[i].addr, pc->data[i].age, pc->data[i].qq, pc->data[i].sex); } } staticintfind_peo_by_name(Contact*pc,charname[]) { inti=0; for(i=0;i sz;i++) { if(strcmp(name,pc->data[i].name)==0) { returni;//找到了,返回下标 } } return-1;//找不到 } voiddel_contact(Contact*pc) { if(pc->sz==0) { printf("抱歉,通讯录为空\n"); } else { charname[MAX_NAME]={0}; printf("请输入要删除人的名字:>"); scanf("%s",name); //1.找到指定的联系人的位置 intpos=find_peo_by_name(pc,name); if(pos==-1) { printf("很遗憾,删除的人不存在\n"); } else { //2.删除 intj=0; for(j=pos;j sz-1;j++) { pc->data[j]=pc->data[j+1]; } pc->sz--; printf("删除成功\n"); } } } voidsearch_contact(Contact*pc) { charname[MAX_NAME]={0}; printf("请输入要查找人的名字:>"); scanf("%s",name); intpos=find_peo_by_name(pc,name); if(pos==-1) { printf("查无此人\n"); } else { printf("%10s%12s%20s%5s%12s%5s\n", "名字","电话","地址","年龄","QQ","性别"); printf("%10s%12s%20s%5d%12s%5s\n",pc->data[pos].name, pc->data[pos].tele, pc->data[pos].addr, pc->data[pos].age, pc->data[pos].qq, pc->data[pos].sex); } } voidmodify_contact(Contact*pc) { charname[MAX_NAME]={0}; printf("请输入要修改人的名字:>"); scanf("%s",name); intpos=find_peo_by_name(pc,name); if(pos==-1) { printf("查无此人\n"); } else { printf("请输入新的名字:>"); scanf("%s",pc->data[pos].name); printf("请输入新的电话:>"); scanf("%s",pc->data[pos].tele); printf("请输入新的地址:>"); scanf("%s",pc->data[pos].addr); printf("请输入新的QQ:>"); scanf("%s",pc->data[pos].qq); printf("请输入新的性别:>"); scanf("%s",pc->data[pos].sex); printf("请输入新的年龄:>"); scanf("%d",&(pc->data[pos].age)); } } voidsort_contact(Contact*pc) { inti=0; intj=0; for(i=0;i sz-1;i++) { intflag=1;//假设已经有序 for(j=0;j sz-1-i;j++) { if(strcmp(pc->data[j].name,pc->data[j+1].name)>0) { PeoInfotmp=pc->data[j]; pc->data[j]=pc->data[j+1]; pc->data[j+1]=tmp; flag=0; } } if(1==flag) { break; } } }
3.test.c
此文件是对该通讯录的功能实现的测试文件:包括菜单的打印,根据用户的输入,输出相关信息以及该通讯录功能的完整流程的实现等。
具体代码实现如下:
#define_CRT_SECURE_NO_WARNINGS1 #include"contact.h" //测试文件 //通讯录1000个人的信息:名字+年龄+电话+地址+QQ+性别 //增删查改排序退出 #define_CRT_SECURE_NO_WARNINGS1 voidmenu() { printf("*******************************\n"); printf("******1.add2.del****\n"); printf("******3.search4.modify***\n"); printf("******5.sort6.show***\n"); printf("******0.exit***\n"); printf("*******************************\n"); } enumOption { EXIT, ADD, DEL, SEARCH, MODIFY, SORT, SHOW }; //first_name //FirstName voidtest() { //创建的通讯录 Contactcon={0}; intinput=0; do { menu(); printf("请选择:>"); scanf("%d",&input); switch(input) { caseADD: add_contact(&con); break; caseDEL: del_contact(&con); break; caseSORT: sort_contact(&con); break; caseSHOW: show_contact(&con); break; caseSEARCH: search_contact(&con); break; caseMODIFY: modify_contact(&con); break; caseEXIT: printf("退出通讯录\n"); break; default: printf("选择错误\n"); break; } }while(input); } intmain() { test();// return0; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。