C语言如何实现一个通讯录

这篇文章将为大家详细讲解有关C语言如何实现一个通讯录,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括:

C语言如何实现一个通讯录

姓名、性别、年龄、电话、住址

提供方法:

1.添加联系人信息2.删除指定联系人信息3.查找指定联系人信息4.修改指定联系人信息5.显示所有联系人信息6.清空所有联系人7.以名字排序所有联系人

没有开辟动态内存的方法:

头文件:test.h

#ifndef__CONTACT
#define__CONTACT
#define_CRT_SECURE_NO_WARNINGS1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
#defineN1000
typedefstructcontact
{
charname[30];
chargender[10];
intage;
inttelephone;
charaddress[100];
};//结构体没有定义变量属于声明一个结构体类型
voidmeau();
voidshow(structcontact*p,intlen);//structcontact*p:结构体指针指向这个结构体,intlen:结构体数组的长度
voidAdd_linkman(structcontact*p,intlen,intflag);
intDelete_linkman(structcontact*p,intd_number,intlen);//intd_number选择要删除第几个结构体的内容
voidFind_member(structcontact*p,intd_number,intlen);//intd_number表示要查找的第几个结构体的内容(即联系人的信息)
voidempty(structcontact*p);
voidModify(structcontact*p,intM_member);//intM_member:要修改的第几个联系人
intcmp(constvoid*a,constvoid*b);//qsort里面的比较函数定义任意类型
voidsort(structcontact*p,intlen);//根据联系人的名字进行排序
#endif//条件编译

contact.c文件

#include"test.h"
voidmeau()
{
printf("*******************************************\n");
printf("*******************************************\n");
printf("##############Myaddressbook##############\n");
printf("*1-Add2-Delete3-Find*\n");
printf("*4-Empty5-Modify6-Sort*\n");
printf("*0-Exit7-Show*\n");
printf("*******************************************\n");
printf("*******************************************\n");
}
voidshow(structcontact*p,intlen)
{
assert(p);
inti=0;
for(i=0;i<len;i++)
{
printf("name:%sgender:%sage:%dtelephone:%daddress:%s",\
p[i].name,p[i].gender,p[i].age,p[i].telephone,p[i].address);
printf("\n");
}
}
voidAdd_linkman(structcontact*p,intlen,intflag)
{
assert(p);
inti=0;
for(i=flag;i<len;i++)
{
printf("请输入姓名:");
scanf("%s",&p[i].name);
printf("请输入姓别:");
scanf("%s",&p[i].gender);
printf("请输入年龄:");
scanf("%d",&p[i].age);
printf("请输入电话:");
scanf("%d",&p[i].telephone);
printf("请输入地址:");
scanf("%s",&p[i].address);
}
}
intDelete_linkman(structcontact*p,intd_number,intlen)
{

assert(p);
inti=0;
for(i=d_number-1;i<len-1;i++)
{
p[i]=p[i+1];

}
}
voidFind_member(structcontact*p,intd_number,intlen)
{
assert(p);
if(d_number-1>=0||d_number-1<len)
{
printf("name:%sgender:%sage:%dtelephone:%daddress:%s",\
p[d_number].name,p[d_number].gender,p[d_number].age,p[d_number].telephone,p[d_number].address);
printf("\n");
}
else
{
printf("不存在该联系人:");
return;
}

}
voidempty(structcontact*p)
{
assert(p);
inti=0;
for(i=0;i<1000;i++)
{
memset(p+i,0,sizeof(structcontact));
}

}
voidModify(structcontact*p,intM_member)
{
assert(p);
printf("修改之前联系人的信息为:");
printf("\n");
printf("name:%sgender:%sage:%dtelephone:%daddress:%s",\
p[M_member-1].name,p[M_member-1].gender,p[M_member-1].age,p[M_member-1].telephone,p[M_member-1].address);
printf("\n");
printf("请输入要修改的信息:");
printf("请输入姓名:");
scanf("%s",&p[M_member-1].name);
printf("请输入姓别:");
scanf("%s",&p[M_member-1].gender);
printf("请输入年龄:");
scanf("%d",&p[M_member-1].age);
printf("请输入电话:");
scanf("%d",&p[M_member-1].telephone);
printf("请输入地址:");
scanf("%s",&p[M_member-1].address);

}
intcmp(constvoid*a,constvoid*b)
{

structcontact*aa=(structcontact*)a;
structcontact*bb=(structcontact*)b;
if(aa->name!=bb->name)
return(strcmp((aa->name),(bb->name)));

}
voidsort(structcontact*p,intlen)
{
assert(p);
qsort(p,len,sizeof(structcontact),cmp);

}

test.c文件:

#include"test.h"
intmain()
{
intnum=0;
structcontactstudent[N];
intlen=0;
intflag=0;//定义一个标志位来结构体数组中每个结构体的位置
inttotal=N;
intdelete_number=0;
meau();
while(1)
{
printf("请输入数字进行选择:");
scanf("%d",&num);
switch(num)
{
case1:{
printf("请添加len个学生的信息:");
scanf("%d",&len);
Add_linkman(student,len+flag,flag);
flag=flag+len;


}break;

case2:{
printf("请输入要删除的第i个学生的信息:");
scanf("%d",&delete_number);
Delete_linkman(student,delete_number,len+flag);
flag=flag-1;
}break;

case3:{
intFind_number=0;
printf("请输入要查找的第i个学生的信息:");
scanf("%d",&Find_number);
Find_member(student,delete_number,len+flag);

}break;

case4:{
printf("清空所有联系人:");
empty(student);

}break;

case5:{
printf("请输入要修改的的第i个学生的信息:");
intM_member=0;
scanf("%d",&M_member);
Modify(student,M_member);

}break;

case6:{
printf("根据名字排序所有联系人:\n");
sort(student,len+flag);

}break;

case7:{
printf("打印所有联系人的信息:\n");
show(student,flag);

}break;
case0:{
exit(1);
}

default:printf("entererrordata!!!");

}
}
system("pause");
return0;

}

关于“C语言如何实现一个通讯录”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

发布于 2021-05-30 14:07:15
收藏
分享
海报
0 条评论
170
上一篇:如何利用HTML5+css3+jquery+weui实现仿微信聊天界面功能 下一篇:C语言如何实现简单的通讯录
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码