C语言如何实现通讯录系统

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

C语言通讯录系统实现,供大家参考,具体内容如下

C语言如何实现通讯录系统

需求分析:

利用文件读,写的方法

实现增加通讯录联系人信息

实现删除通讯录联系人信息

实现查找通讯录联系人信息

实现修改通讯录联系人信息

实现查看现有通讯录联系人信息

代码实现:

//main.c
//C语言通讯录实现
//
//CreatedbyBrisingaon15/10/14.
//Copyright©2015年yan.Allrightsreserved.
//

#include<stdio.h>
#include<string.h>
#defineLEN10
#defineNAMELEN22
#defineTELLEN12

//*************结构体变量定义****************
//定义联系人的个数
intcontactCount=0;
//定义结构体
typedefstruct{

//定义联系人姓名
charname[NAMELEN];
//定义联系人电话
chartel[TELLEN];

}Person;

//初始化联系人数组
Personcontact[LEN];
//定义文件名
charchar*path="a.data";

//接收用户输入的编号
intno;
//**************函数声明********************

//初始化声明
voidinit();
//校验声明
intisValid(intn,intmin,intmax);
//添加联系人
voidaddContact();
//删除联系人
voiddeleteContact();
//修改联系人
voidupdateContact();
//查看所有联系人
voiddoList();
//搜索联系人
voidsearchContact();
//退出系统
voidquit();
//联系人写入文件
voidwriteFile();
//***************************************


intmain(intargc,constcharchar*argv[]){


//通讯录初始化
init();
printf("通讯录初始化成功!\n");



while(1){

//定义界面
printf("**********************************\n");
printf("***********欢迎使用通讯录***********\n");
printf("***********1.添加联系人*************\n");
printf("***********2.删除联系人*************\n");
printf("***********3.修改联系人*************\n");
printf("***********4.查看所有联系人**********\n");
printf("***********5.搜索联系人*************\n");
printf("***********6.退出系统***************\n");
printf("**********************************\n");


//提示用户输入编号
printf("请输入要进行操作的编号:\n");
scanf("%d",&no);
//判断输入是否合法
isValid(no,1,6);
//判断用户的操作
switch(no){
case1:
//添加联系人
addContact();
break;
case2:
//删除联系人
deleteContact();
break;
case3:
//更新联系人
updateContact();
break;
case4:
//查看联系人
doList();
break;
case5:
//搜索联系人
searchContact();
break;
case6:
//退出
quit();
return0;

default:
break;
}

}
return0;
}

//通讯录初始化
voidinit(){

//定义文件指针
FILEFILE*fp=fopen(path,"r");
//判断通讯录是否存在
if(fp!=NULL){
//如果存在
//1.读取联系人个数
fread(&contactCount,sizeof(contactCount),1,fp);
//2.读取每一个联系人nts
for(inti=0;i<contactCount;i++){
fread(&contact[i],sizeof(Person),1,fp);
}

}else{

//如果不存在
//创建通讯录
fp=fopen(path,"wb");
//写入当前联系人的个数
fwrite(&contactCount,sizeof(contactCount),1,fp);

}
fclose(fp);

}

//校验输入是否合法
intisValid(intn,intmin,intmax){

//如果输入的编号大于min小于max,则返回0
if(n>=min&&n<=max){
return0;
}

//否则返回1
printf("输入非法!\n");
return1;

}

//添加联系人
voidaddContact(){

//提示用户输入要添加联系人的姓名
printf("请输入要添加的联系人姓名:*注意姓名之间不能有空格\n");
//接收联系人姓名
scanf("%s",contact[contactCount].name);
//提示用户输入要添加联系任的电话
printf("请输入要添加联系人的电话:*注意电话号码之间不能有空格\n");
//接收联系人电话
scanf("%s",contact[contactCount].tel);
//询问是否确定添加
printf("确定要添加么?1.确定0.取消\n");
scanf("%d",&no);
if(no){
contactCount++;
//写入文件
writeFile();
printf("添加成功!\n");
}


}

//删除联系人
voiddeleteContact(){

//显示联系人
doList();
intflag;
//提示用户输入要删除联系人的编号
printf("请输入要删除联系人的编号:\n");
//接收用户输入的编号
scanf("%d",&no);
//判断编号是否合法
if(!isValid(no,1,contactCount)){
//编号合法
printf("确定要删除么?删除后将无法恢复!1.确定0.取消\n");
scanf("%d",&flag);
if(flag){
//如果要删除的联系人在末尾
if(no==contactCount){
//则contactCount-1
contactCount--;
}else{

//如果要删除的联系人不在末尾
//移动数组元素
for(inti=no-1;i<contactCount-1;i++){
contact[i]=contact[i+1];
}

}
//contactCount--
contactCount--;
//写文件
writeFile();
}

}else
//编号不合法,则退出
printf("编号不合法!\n");
return;

}

//修改联系人
voidupdateContact(){

//显示联系人
doList();
//提示用户输入要修改联系人的编号
printf("请输入要修改的联系人的编号:\n");
//接收用户输入的编号
scanf("%d",&no);
//判断编号是否合法
intflag;
if(!isValid(no,1,contactCount)){
//提示用户输入新的的联系人的姓名
printf("请输入新的姓名:*注意:姓名之间不能有空格\n");
//接收用户输入的姓名
scanf("%s",contact[no-1].name);
//提示用户输入新的电话号码
printf("请输入新的电话号码:*注意:电话号码之间不能有空格\n");
//接收用户输入的电话号码
scanf("%s",contact[no-1].tel);

//询问用户确定修改么?
printf("确定要修改么?1.确定0.取消\n");
scanf("%d",&flag);
if(flag){

//写文件
writeFile();
printf("联系人修改成功!\n");
}else{

printf("编号不合法!!\n");
return;

}

}


}

//查看所有联系人
voiddoList(){

printf("显示所有联系人:\n");
printf("编号\t姓名\t电话\n");
for(inti=0;i<contactCount;i++){
printf("%d\t%s\t%s\n",i+1,contact[i].name,contact[i].tel);
}

}

//搜索联系人
voidsearchContact(){

intflag=1;
//接收用户输入的姓名
charsearchName[NAMELEN];
//接收用户输入的电话
charsearchTel[TELLEN];
//询问用户搜索方式
printf("请输入查找的方式:1.按姓名查找2.按电话号码查找\n");
//接收用户的搜索方式
scanf("%d",&no);
if(no==1){
//请用户输入要查找的姓名
printf("请输入要查找到姓名:\n");
scanf("%s",searchName);
for(inti=0;i<contactCount;i++){
if(!strcmp(searchName,contact[i].name)){
printf("您查找的联系人为:\n");
printf("%d\t%s\t%s\n",i+1,contact[i].name,contact[i].tel);
return;
}else{

flag=0;
}
}

}elseif(no==2){

//请用户输入要查找的电话号码
printf("请输入要查找的电话号码:\n");
scanf("%s",searchTel);
for(inti=0;i<contactCount;i++){
if(!strcmp(searchTel,contact[i].tel)){
printf("您查找的联系人为:\n");
printf("%d\t%s\t%s\n",i+1,contact[i].name,contact[i].tel);
return;
}else{

flag=0;
}
}


}else{
printf("非法输入!\n");
return;
}
if(!flag){
printf("很抱歉!小伙伴不在通讯录中!\n");
}



}

//退出系统
voidquit(){

printf("系统正在退出...\n");
printf("系统已经退出!\n");


}

//联系人写入文件
voidwriteFile(){

//定义文件指针
FILEFILE*fp=fopen(path,"wb");
if(fp!=NULL){
//写入联系人个数
fwrite(&contactCount,sizeof(contactCount),1,fp);
//写入每个联系人
for(inti=0;i<contactCount;i++){

fwrite(&contact[i],sizeof(Person),1,fp);
}

}
fclose(fp);

}

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

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

    0 条评论

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

    忘记密码?

    图形验证码