通讯录C语言实训报告Word文档下载推荐.docx

上传人:b****6 文档编号:18761174 上传时间:2023-01-01 格式:DOCX 页数:47 大小:237.04KB
下载 相关 举报
通讯录C语言实训报告Word文档下载推荐.docx_第1页
第1页 / 共47页
通讯录C语言实训报告Word文档下载推荐.docx_第2页
第2页 / 共47页
通讯录C语言实训报告Word文档下载推荐.docx_第3页
第3页 / 共47页
通讯录C语言实训报告Word文档下载推荐.docx_第4页
第4页 / 共47页
通讯录C语言实训报告Word文档下载推荐.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

通讯录C语言实训报告Word文档下载推荐.docx

《通讯录C语言实训报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《通讯录C语言实训报告Word文档下载推荐.docx(47页珍藏版)》请在冰豆网上搜索。

通讯录C语言实训报告Word文档下载推荐.docx

charname[20];

/*姓名*/

charmobile[15];

/*手机号码*/

charphone[15];

/*家庭电话*/

charaddress[50];

/*家庭住址*/

structphone*next;

};

自定义函数

voidshowmenu();

/*显示功能菜单*/

voidcreatnew()/*添加纪录函数*/

voidsave()/*将数据写入文件函数*/

voidadd()/*控制添加记录函数*/

voidopenfile()/*输出文件到链表函数*/

voidshow()/*显示全部记录函数*/

voidsearchshow()/*显示查找选项函数*/

tel*searchname()/*按姓名查找记录函数*/

tel*searchmobile()/*按手机号码查找记录函数*/

tel*searchphone()/*按家庭电话查找记录函数*/

tel*searchaddress()/*按地址查找记录函数*/

tel*search()/*查找记录函数*/

tel*dimsearch()/*模糊查找记录函数*/

voidmodify()/*修改记录函数*/

voiddel()/*删除记录函数*/

voidfre()/*释放链表空间函数*/

voidopenfile();

/*读取文件到链表*/

2.2.2主控main()函数执行流程

以只读的方式打开一个数据文件

将此文件的内容读出,

并存入一个结构体中,关闭文件

进入while

(1)主循环

调用函数showmenu()输出菜单

输入[0~6]中的一个数值,

选择相应操作

判断键值,调用相应函数,

完成相应功能

本通讯录执行主流程如图2.2所示。

它先以只读的方式打开数据文件,此文件默认为“txl.txt”,若该文件不存在,则给出提示。

当打开文件操作成功后,从文件中读出全部记录,添加到结构体中,然后执行进入主循环和显示主菜单操作,输入(0~6)进行按键判断。

当输入0时,系统会退出通讯录系统的操作。

若选择1,则调用voidadd()函数,执行增加记录操作;

若选择2,则调用voidmodify()函数,执行修改记录操作;

若选择3,则调用tel*search()函数,执行查询记录操作;

若选择4,则调用voiddel()函数,执行删除记录操作;

若选择5,则调用voidshow()函数,执行显示全部记录操作;

若选择6,则调用tel*dimsearch()函数,执行模糊查找操作;

若选择0,则调用voidsave()、voidfre(),函数,执行保存记录,并释放链表空间操作;

若输入为0~6之外的值,给出选择错误的提示。

2.2.3添加记录模块

程序一开始就从默认文件调用fsanf()函数读入记录(若文件存在且有记录)到结构体中。

在添加每条信息时均在提示框显示有相关提示,当用户选择0退出添加记录时,系统会清屏并返回到主菜单供用户再次选择其他操作。

2.2.4查询记录模块

此模块包括精确查询和模糊查询两大功能。

通过调用tel*search()和tel*dimsearch()实现,查询记录模块主要实现了显示结构体中所有成员信息。

通过调用tel*search()函数实现,系统默认为精确查找,当精确查找没有匹配是,会提示用户是否进行模糊查找,模糊查找系统会根据用户输入的相关信息,通过调用tel*dimsearch()函数分条显示与该信息相关的记录,直到用户确认或程序到最后一条记录。

2.2.5修改记录模块

此模块主要通过调用tel*search()和tel*dimsearch()实现,查询记录模块主要实现了显示结构体中所有成员信息。

通过调用tel*search()函数实现,系统默认为精确查找,当精确查找没有匹配是,会提示用户是否进行模糊查找,模糊查找系统会根据用户输入的相关信息,通过调用tel*dimsearch()函数分条显示与该信息相关的记录,直到用户确认后进行修改或程序到最后一条记录。

2.2.6删除模块

通过调用tel*search()函数实现,系统默认为精确查找,当精确查找没有匹配是,会提示用户是否进行模糊查找,模糊查找系统会根据用户输入的相关信息,通过调用tel*dimsearch()函数分条显示与该信息相关的记录,直到用户确认后进行删除或程序到最后一条记录。

2.2.7显示全部记录模块

此模块主要通过调用show()函数将记录(如果有记录)全部输入到屏幕上面,否则则给出相应提示。

2.2.8模糊查询模块

通过调用tel*dimsearch()函数实现,模糊查找系统会根据用户输入的相关信息,通过调用tel*dimsearch()函数分条显示与该信息相关的记录,直到用户确认该信息或到最后一条记录。

3、系统实现

3.1编码

3.1.1程序预处理

#include<

stdio.h>

/*标准输入输出库*/

conio.h>

/*界面处理库*/

stdlib.h>

string.h>

/*处理字符串函数库*/

structphone/*定义结构体变量*/

/*存放姓名*/

/*存放手机号码*/

/*存放家庭电话*/

/*存放家庭住址*/

/*存放下一个节点的地址*/

3.1.2主函数main()

main()

intx,m;

openfile();

system("

color9a"

);

/*设置背景颜色和字体颜色*/

while

(1)/*设置循环条件为真*/

showmenu();

/*显示各个功能*/

fflush(stdin);

/*刷新缓存区*/

printf("

请作出您的选择:

"

scanf("

%d"

&

x);

if(x>

=0&

&

x<

=6)

{

switch(x)

{

system("

cls"

case1:

add();

break;

/*添加记录函数*/

case2:

modify();

/*修改记录函数*/

case3:

search();

/*查找记录函数*/

case4:

del();

/*删除记录函数*/

case5:

show();

/*显示全部记录*/

case6:

dimsearch();

/*模糊查找*/

case0:

fre();

printf("

\n\t\t欢迎再次使用通讯录管理系统,再见!

....\n\n"

exit(0);

}

else

printf("

\n\n选择错误,请再次选择!

\n"

}

getch();

}

3.1.3输出菜单

voidshowmenu()

{inti;

for(i=0;

i<

80;

i++)

%c"

16);

\t\t\t\t1:

添加记录\n"

\t\t\t\t2:

修改记录\n"

\t\t\t\t3:

查找记录\n"

\t\t\t\t4:

删除记录\n"

\t\t\t\t5:

显示全部录\n"

\t\t\t\t6:

模糊查找\n"

\t\t\t\t0:

退出程序\n"

请在0--6选择:

17);

3.1.4添加功能

能添加入新记录(结构体成员包括:

姓名、手机号码、家庭电话、家庭住址)

voidcreatnew()/*添加记录并按姓名排序*/

{

intn;

tel*new,*p1,*p2;

new=(tel*)malloc(sizeof(tel));

/*为变量申请空间*/

aa:

\t\t\t请输入姓名:

scanf("

%s"

new->

name);

\t\t\t请输入手机号码:

mobile);

\t\t\t请输入家庭电话:

phone);

\t\t\t请输入家庭住址:

address);

p1=head;

/*将头指针再次赋给变量p1*/

if(head!

=NULL)/*先判断是否有记录*/

do

{

if((strcmp(p1->

mobile,new->

mobile))==0||

(strcmp(p1->

phone,new->

phone))==0)/*判断记录是否已经存在*/

{

printf("

记录已经存在\n"

\n%-20s%-15s%-15s%-50s\n"

p1->

name,p1->

mobile,p1->

phone,p1->

/*输出已存在记录*/

printf("

是否继续添加?

1继续添加\t其他数字键重新输入\n"

scanf("

n);

/*确认是否添加记录*/

if(n==1)/*确认添加*/

break;

else/*确认重新输入*/

gotoaa;

}

p1=p1->

next;

}while(p1!

=NULL);

/*判断记录是否存在*/

/*将头指针再次赋给变量p1*/

if(head==NULL)/*检测是否为空链表*/

head=new;

/*链表为空,插入的结点作为第一个结点*/

new->

next=NULL;

else

while((p1->

next!

=NULL)&

(strcmp(p1->

name,new->

name)<

0))/*为新节点找插入位置*/

p2=p1;

p1=p1->

if((strcmp(p1->

name)>

0))

if(head==p1)

new->

next=head;

head=new;

p2->

next=new;

next=p1;

p1->

new->

3.1.5修改功能

voidmodify()/*修改记录函数*/

{

tel*new=search();

/*调用查找函数*/

if(z==0)

;

if(x==0);

elseif(z==0&

x==0);

/*根据表计量判断指针*/

{if(new==NULL)/*修改头结点数据*/

请输入新纪录:

head->

save();

else/*修改其他结点数据*/

next->

\n\n"

\t\t\t按任意键继续"

getch();

system("

3.1.6查找功能

tel*search()

{inti,j=0;

tel*p1=NULL,*p2=NULL,*p=NULL;

loop:

searchshow();

i);

if(i>

=1&

=4)

switch(i)

p2=searchname();

p2=searchmobile();

p2=searchphone();

p2=searchaddress();

选择错误,请重新选择\n\n"

gotoloop;

while(p1!

=NULL)

if((strcmp(p1->

name,p2->

name))==0||(strcmp(p1->

mobile,p2->

(strcmp(p1->

phone,p2->

phone))==0||(strcmp(p1->

address,p2->

address))==0)

找到记录:

%-20s%-15s%-15s%-50s\n"

"

姓名"

手机号码"

电话号码"

家庭住址"

\n%-20s%-15s%-15s%-50s"

p1->

break;

p=p1;

if(p1==NULL)

\t\t\t电话本中无此记录!

!

\t\t是否重新进行?

按1继续\t按其他数字键模糊查找!

scanf("

if(i==1)

free(p2);

/*释放p2的存储空间*/

gotoloop;

else

{

/*精确查找没有记录,进行模糊找找*/

p=dimsearch();

}

returnp;

3.1.7删除功能

voiddel()/*删除记录函数*/

tel*p2=search();

/*查找要删除的结点*/

inti;

if(z==0)

/*根据标记量判断删除的是否是头点*/

if(p2==NULL)

\n\n\n确实要删除吗?

\t按1删除!

\t按其他数字保留!

head=head->

/*修改删除头结点的指针*/

\t\t\t按任意键返回"

}

else

{

if(i==1)

next=p2->

/*修改不是删除头结点的指针*/

3.1.8显示全部记录

voidshow()/*显示全部记录*/

tel*p1=head;

if(head==NULL)/*判断是否是空链表*/

\n\t\t\t电话簿中没有记录,请输入纪录后,在使用本能!

getch();

system("

return;

{printf("

p1=p1->

system(“cls”);

3.1.9模糊查找功能

tel*dimsearch()/*模糊查找*/

{inti,j=0,m;

searchshow();

lp:

}

gotolp;

p1=head;

while(p1!

if((strstr(p1->

name))||(strstr(p1-

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

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1