通讯录C语言实训报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

通讯录管理系统1通讯录1、问题的定义根据需求,该系统所应包含的信息有以下一些:通讯录的基本信息:姓名、手机号码、电话、及家庭住址。根据需求,该系统所应实现的功能有以下一些:各种基本数据的录入。如:通讯录基本信息录入。各种基本数据的修改。即:允许对已经录入的数据重新进行编辑、修改。例如修改通讯录中张三的电话信息各种基本数据的删除。例如将“张三”的信息从通讯录中删除基于各种数据的查询。例如输入“张三”姓名,查询张三的手机号码、电话和地址。显示全部记录功能。可以查看通讯录中的全部记录。模糊查找功能。例如输入“张”,则分条显示全部姓“张”的信息,直到用户确认显示信息为用户所要找的信息,或者提示:通讯录中没有该信息。模糊删除功能:与模糊查找类似,可以只知道信息的某部分,进而查找所要删除的信息,并由用户确认是否删除。模糊修改功能:与其他模糊功能类似,可以只知道信息的某部分,进而查找所要修改的信息,并由用户确认是否修改图1.1通讯录功能需求2、系统设计2.1总体设计采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上通讯录管理系统2面一层是主模块,下面各层是其上一层模块的逐步细化描述。图2.1通讯录系统功能模块图2.2详细设计2.2.1数据结构设计变量定义为了使各变量之间的关系更明了,采用了结构体来定义变量structphone{charname[20];/*姓名*/charmobile[15];/*手机号码*/charphone[15];/*家庭电话*/charaddress[50];/*家庭住址*/structphone*next;};自定义函数voidshowmenu();/*显示功能菜单*/voidcreatnew()/*添加纪录函数*/voidsave()/*将数据写入文件函数*/voidadd()/*控制添加记录函数*/voidopenfile()/*输出文件到链表函数*/voidshow()/*显示全部记录函数*/通讯录管理系统3voidsearchshow()/*显示查找选项函数*/tel*searchname()/*按姓名查找记录函数*/tel*searchmobile()/*按手机号码查找记录函数*/tel*searchphone()/*按家庭电话查找记录函数*/tel*searchaddress()/*按地址查找记录函数*/tel*search()/*查找记录函数*/tel*dimsearch()/*模糊查找记录函数*/voidmodify()/*修改记录函数*/voiddel()/*删除记录函数*/voidfre()/*释放链表空间函数*/voidopenfile();/*读取文件到链表*/2.2.2主控main()函数执行流程判断键值,调用相应函数,完成相应功能开始以只读的方式打开一个数据文件将此文件的内容读出,并存入一个结构体中,关闭文件调用函数showmenu()输出菜单进入while(1)主循环输入[0~6]中的一个数值,选择相应操作结束输入是否为0?调用fre()函数是否通讯录管理系统4本通讯录执行主流程如图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()实现,查询记录模块主要实现了显示结构体中所有成员信息。通过调用tel*search()函数实现,系统默认为精确查找,当精确查找没有匹配是,会提示用户是否进行模糊查找,模糊查找系统会根据用户输入的相关信息,通过调用tel*dimsearch()函数分条显示与该信息相关的记录,直到用户确认后进行删除或程序到最后一条记录。2.2.7显示全部记录模块此模块主要通过调用show()函数将记录(如果有记录)全部输入到屏幕上面,否则则给出相应提示。2.2.8模糊查询模块通过调用tel*dimsearch()函数实现,模糊查找系统会根据用户输入的相关信息,通讯录管理系统5通过调用tel*dimsearch()函数分条显示与该信息相关的记录,直到用户确认该信息或到最后一条记录。3、系统实现3.1编码3.1.1程序预处理#includestdio.h/*标准输入输出库*/#includeconio.h/*界面处理库*/#includestdlib.h#includestring.h/*处理字符串函数库*/structphone/*定义结构体变量*/{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();/*读取文件到链表*/通讯录管理系统63.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();break;/*修改记录函数*/case3:search();break;/*查找记录函数*/case4:del();break;/*删除记录函数*/case5:show();break;/*显示全部记录*/case6:dimsearch();break;/*模糊查找*/case0:fre();printf(\n\t\t欢迎再次使用通讯录管理系统,再见!....\n\n);exit(0);}}elseprintf(\n\n选择错误,请再次选择!\n);}getch();}3.1.3输出菜单voidshowmenu(){inti;for(i=0;i80;i++)printf(%c,16);printf(\n);printf(\t\t\t\t1:添加记录\n);printf(\n);printf(\t\t\t\t2:修改记录\n);printf(\n);printf(\t\t\t\t3:查找记录\n);printf(\n);通讯录管理系统7printf(\t\t\t\t4:删除记录\n);printf(\n);printf(\t\t\t\t5:显示全部录\n);printf(\n);printf(\t\t\t\t6:模糊查找\n);printf(\n);printf(\t\t\t\t0:退出程序\n);printf(请在0--6选择:\n);for(i=0;i80;i++)printf(%c,17);}3.1.4添加功能能添加入新记录(结构体成员包括:姓名、手机号码、家庭电话、家庭住址)voidcreatnew()/*添加记录并按姓名排序*/{intn;tel*new,*p1,*p2;new=(tel*)malloc(sizeof(tel));/*为变量申请空间*/aa:printf(\t\t\t请输入姓名:);scanf(%s,new-name);printf(\t\t\t请输入手机号码:);scanf(%s,new-mobile);printf(\t\t\t请输入家庭电话:);scanf(%s,new-phone);printf(\t\t\t请输入家庭住址:);scanf(%s,new-address);p1=head;/*将头指针再次赋给变量p1*/if(head!=NULL)/*先判断是否有记录*/do{if((strcmp(p1-mobile,new-mobile))==0||(strcmp(p1-phone,new-phone))==0)/*判断记录是否已经存在*/{printf(记录已经存在\n);printf(\n%-20s%-15s%-15s%-50s\n,p1-name,p1-mobile,p1-phone,p1-address);/*输出已存在记录*/printf(是否继续添加?1继续添加\t其他数字键重新输入\n);scanf(%d,&n);/*确认是否添加记录*/if(n==1)/*确认添加*/break;else/*确认重新输入*/gotoaa;}p1=p1-next;通讯录管理系统8}while(p1!=NULL);/*判断记录是否存在*/p1=head;/*将头指针再次赋给变

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功