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;isz;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;jsz-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;isz-1;i++)
{
intflag=1;//假设已经有序
for(j=0;jsz-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;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。