C语言通讯录.docx

上传人:b****1 文档编号:13386282 上传时间:2023-06-13 格式:DOCX 页数:18 大小:17.74KB
下载 相关 举报
C语言通讯录.docx_第1页
第1页 / 共18页
C语言通讯录.docx_第2页
第2页 / 共18页
C语言通讯录.docx_第3页
第3页 / 共18页
C语言通讯录.docx_第4页
第4页 / 共18页
C语言通讯录.docx_第5页
第5页 / 共18页
C语言通讯录.docx_第6页
第6页 / 共18页
C语言通讯录.docx_第7页
第7页 / 共18页
C语言通讯录.docx_第8页
第8页 / 共18页
C语言通讯录.docx_第9页
第9页 / 共18页
C语言通讯录.docx_第10页
第10页 / 共18页
C语言通讯录.docx_第11页
第11页 / 共18页
C语言通讯录.docx_第12页
第12页 / 共18页
C语言通讯录.docx_第13页
第13页 / 共18页
C语言通讯录.docx_第14页
第14页 / 共18页
C语言通讯录.docx_第15页
第15页 / 共18页
C语言通讯录.docx_第16页
第16页 / 共18页
C语言通讯录.docx_第17页
第17页 / 共18页
C语言通讯录.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言通讯录.docx

《C语言通讯录.docx》由会员分享,可在线阅读,更多相关《C语言通讯录.docx(18页珍藏版)》请在冰点文库上搜索。

C语言通讯录.docx

C语言通讯录

//

//main.c

//C15-C语言通讯录

//

//Createdbyuisteon16/5/21.

//Copyright(c)2016年uiste.Allrightsreserved.

//

#include

#include

//进行宏定义

#defineN100//定义通讯录的容量

#defineNAMELEN22

#defineNUMLEN12

//************定义部分*********

//定义联系人的结构体

typedefstruct{

//联系人

charname[NAMELEN];

//电话号码

chartelNum[NUMLEN];

}Person;

//存储所有的联系人,联系人的数组

Personcontacts[N];//能够存储100个联系人

//定义联系人的个数

inttotalContactCount=0;

//接收用户输入的编号

intfno;

//定义数据文件保存的位置

char*filePath="telbook.data";

//*************函数的声明部分*********

intvalidateInput(intnum,intmin,intmax);

voidinit();

voiddoAdd();

voiddoDelete();

voiddoUpdate();

voiddoList();

voiddoSearchByName();

voidwriteFile();

 

intmain(intargc,constchar*argv[]){

/**

1、引入头文件

2、进行必要的宏定义

3、定义文件名称变量、联系人数组、联系人结构体

4、定义函数,并进行函数声明

5、编写循环控制程序

6、显示操作界面

7、根据编号执行不同的函数

 */

init();

printf("通讯录初始化完成!

\n");

while

(1){

printf("\n");

//软件的界面显示出来

printf("**************************\n");

printf("******欢迎使用通讯录******\n");

printf("******1、添加联系人 ******\n");

printf("******2、删除联系人 ******\n");

printf("******3、修改联系人 ******\n");

printf("******4、查看所有联系人****\n");

printf("******5、搜索联系人 ******\n");

printf("******6、退出系统  ******\n");

printf("**************************\n\n");

//提示用户选择一个序号

printf("请选择1-6之间的功能编号:

\n");

scanf("%d",&fno);

//判断编号是否合法

validateInput(fno,1,6);

switch(fno){

case1:

//执行添加

doAdd();

break;

case2:

//执行删除

doDelete();

break;

case3:

//执行修改

doUpdate();

break;

case4:

//执行显示所有联系人

doList();

break;

case5:

//执行查找

doSearchByName();

break;

case6:

//执行退出系统

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

printf("系统已经退出!

\n");

return0;

break;

default:

break;

}

}

return0;

}

 

/**

*验证输入是否合法

*

*@paramnum待验证的数

*@parammin最小值

*@parammax最大值

*

*@return1非法,0正常

*/

intvalidateInput(intnum,intmin,intmax){

if(nummax){

printf("非法的输入!

");

return1;

}

return0;

}

 

/**

*添加联系人

思路:

1、提示用户输入联系人姓名

2、接收联系人

3、提示用户输入电话号码

4、接收电话号码

5、确认添加

6、联系人的个数+1

7、把联系人信息写入到文件中

*/

voiddoAdd(){

printf("您选择的是添加联系人,请按提示操作:

\n");

//1、提示用户输入联系人姓名

printf("请输入联系人姓名:

(*注意联系人姓名中间不能有空格)\n");

//totalContactCount=0

//40-3

//2、接收联系人

scanf("%s",contacts[totalContactCount].name);

//3、提示用户输入电话号码

printf("请输入联系人电话:

(*注意联系人电话号码中间不能有空格)\n");

//4、接收电话号码

scanf("%s",contacts[totalContactCount].telNum);

//5、确认添加

intflag;

printf("您确认要添加数据吗?

1.确认0.取消\n");

scanf("%d",&flag);

if(flag){

//6、联系人的个数+1

totalContactCount++;

//7、把联系人信息写入到文件中

writeFile();

}

}

 

/**

*删除联系人

思路:

1、提示用户输入一个联系人编号

2、判断编号是否合法编号不能大于联系人个数

3、提示用户再次确认删除

4、开始删除数组元素

1)删除的元素正好是数组的最后一个元素

只需要让联系人个数-1

2)如果删除的元素不是数组的最后一个元素

需要移动元素

联系人数量-1

5、同步更新到文件中

*/

voiddoDelete(){

printf("您选择的是删除联系人,请按提示操作:

\n");

doList();

//1、提示用户输入一个联系人编号

intno;

printf("请输入要删除的联系人的编号:

\n");

scanf("%d",&no);

//2、判断编号是否合法编号不能大于联系人个数

if(validateInput(no,1,totalContactCount)){

return;

}

//3、提示用户再次确认删除

intflag;

printf("删除联系人后,数据将无法恢复,您缺人要删除吗?

1.确认0.取消\n");

scanf("%d",&flag);

if(flag){

//4、开始删除数组元素

//1)删除的元素正好是数组的最后一个元素

if(no==totalContactCount){

totalContactCount--;

}else{

//只需要让联系人个数-1

//2)如果删除的元素不是数组的最后一个元素

//需要移动元素

for(inti=no;i

//元素的移动和覆盖

contacts[no-1]=contacts[no];

}

//联系人数量-1

totalContactCount--;

}

//5、同步更新到文件中

writeFile();

}

}

 

/**

*修改联系人

思路:

1、提示用户输入修改的信息编号

2、验证编号是否合法

3、输入新的用户名和新的电话号码

4、让用户再次确认修改

5、更新数组信息

6、写入到文件中

*/

voiddoUpdate(){

printf("您选择的是修改联系人,请按提示操作:

\n");

doList();//列表所有的联系人

//1、提示用户输入修改的信息编号

intno;

printf("请输入要修改的联系人的编号:

\n");

scanf("%d",&no);

//2、判断编号是否合法编号不能大于联系人个数

if(validateInput(no,1,totalContactCount)){

return;

}

//3、输入新的用户名和新的电话号码

charname1[NAMELEN];

chartel[NUMLEN];

printf("请输入联系人新的姓名:

(*注意联系人姓名中间不能有空格)\n");

scanf("%s",name1);

printf("请输入联系人新的电话:

(*注意联系人电话中间不能有空格)\n");

scanf("%s",tel);

//4、让用户再次确认修改

intflag;

printf("确认后,信息将永久修改,您确认修改吗?

1.确认0.取消\n");

scanf("%d",&flag);

if(flag){

//5、更新数组信息

strcpy(contacts[no-1].name,name1);

strcpy(contacts[no-1].telNum,tel);

//contacts[n-1].name="xxxx";

//6、写入到文件中

writeFile();

}

}

/**

*显示所有联系人

思路:

前提:

系统已经完成了初始化工作(如果文件存在则读取文件中的所有的数据)

1、首先做一个判断

totalContactCount==0//表示没有联系人

2、如果不等于0

开始遍历,并且输出联系人的信息

*/

voiddoList(){

printf("显示所有联系人,联系人数据如下:

\n");

//判断通讯录是否为空

if(totalContactCount==0){

printf("您的通讯录还没有小伙伴~请添加小伙伴!

\n");

}else{

//输出格式

printf("编号\t姓名\t电话\t\n");

//遍历联系人数组

for(inti=0;i

printf("%d\t%s\t%s\t\n",i+1,contacts[i].name,contacts[i].telNum);

}

}

}

/**

*搜索联系人

思路;

1、提示用户输入要搜索的联系人姓名

2、按照姓名进行查找(遍历)

1)输入的姓名和contacts[i].name比较

2)搜索不到

遍历一遍都没有这个名称提示查找不到

*/

voiddoSearchByName(){

printf("您选择的是搜索联系人,请按提示操作:

\n");

//1、提示用户输入要搜索的联系人姓名

charname[NAMELEN];

printf("请输入要查找的联系人:

\n");

scanf("%s",name);

//2、按照姓名进行查找(遍历)

inti;

for(i=0;i

//1)输入的姓名和contacts[i].name比较

//比较两个字符串是否相等strcmp()==0

if(strcmp(name,contacts[i].name)==0){

//打印出来姓名对应的电话号码

printf("您搜索的联系人%s的电话号码是:

%s\n",name,contacts[i].telNum);

break;//循环要停止

}

}

//

//

//2)搜索不到

//遍历一遍都没有这个名称提示查找不到

if(i==totalContactCount){

printf("对不起,查无此人!

\n");

}

}

/**

通讯录的初始化工作

1、尝试读取数据文件

2、如果读取成功,说明文件存在

如果存在,要读取联系人数据,保存到联系人数组contacts

3、如果读取失败,说明我们是第一次使用通讯录

如果是第一次使用

1)创建联系人数据文件

2)把当前联系人的个数写入到文件中totalContactCount=0

*/

voidinit(){

//定义文件指针,并且打开文件

FILE*fp=fopen(filePath,"r");

if(fp!

=NULL){

//第一步:

读取联系人的个数4

fread(&totalContactCount,sizeof(totalContactCount),1,fp);

//第二步:

读取每一个联系人34

for(inti=0;i

//读取联系人数据到联系人数组中

fread(&contacts[i],sizeof(Person),1,fp);

}

}else{

//创建文件

fp=fopen(filePath,"wb");

//写入联系人的个数

fwrite(&totalContactCount,sizeof(totalContactCount),1,fp);

printf("通讯录文件创建成功~!

\n");

}

//关闭文件指针

fclose(fp);

}

/**

*写数据到文件中

思路:

1、以wb方式打开文件

2、先写联系人个数

3、写每个联系人数据

*/

voidwriteFile(){

 

//1、以wb方式打开文件

FILE*fp=fopen(filePath,"wb");

if(fp!

=NULL){

//2、先写联系人个数

fwrite(&totalContactCount,sizeof(totalContactCount),1,fp);

//3、写每个联系人数据

for(inti=0;i

//每次都写入一个数组的元素

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

}

printf("写文件数据更新成功!

\n");

}

//4、关闭文件指针

fclose(fp);

 

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2