ImageVerifierCode 换一换
格式:DOCX , 页数:47 ,大小:237.04KB ,
资源ID:5774113      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5774113.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(通讯录C语言实训报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

通讯录C语言实训报告.docx

1、通讯录C语言实训报告通讯录1、问题的定义根据需求,该系统所应包含的信息有以下一些:通讯录的基本信息:姓名、手机号码、电话、及家庭住址。根据需求,该系统所应实现的功能有以下一些:各种基本数据的录入。如:通讯录基本信息录入。各种基本数据的修改。即:允许对已经录入的数据重新进行编辑、修改。例如修改通讯录中张三的电话信息各种基本数据的删除。例如将“张三”的信息从通讯录中删除基于各种数据的查询。例如输入“张三”姓名,查询张三的手机号码、电话和地址。显示全部记录功能。可以查看通讯录中的全部记录。模糊查找功能。例如输入“张”,则分条显示全部姓“张”的信息,直到用户确认显示信息为用户所要找的信息,或者提示:通

2、讯录中没有该信息。模糊删除功能:与模糊查找类似,可以只知道信息的某部分,进而查找所要删除的信息,并由用户确认是否删除。模糊修改功能:与其他模糊功能类似,可以只知道信息的某部分,进而查找所要修改的信息,并由用户确认是否修改 图1.1 通讯录功能需求2、系统设计21 总体设计采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。 图2.1 通讯录系统功能模块图22

3、详细设计2.2.1数据结构设计 变量定义为了使各变量之间的关系更明了,采用了结构体来定义变量struct phone char name20; /*姓名*/ char mobile15; /*手机号码*/ char phone15; /*家庭电话*/ char address50; /*家庭住址*/ struct phone *next; ;自定义函数void showmenu(); /*显示功能菜单*/void creatnew() /*添加纪录函数*/void save() /*将数据写入文件函数*/void add( ) /*控制添加记录函数*/ void openfile() /*输出

4、文件到链表函数*/void show() /*显示全部记录函数*/void searchshow() /*显示查找选项函数*/tel* searchname() /*按姓名查找记录函数*/tel* searchmobile() /*按手机号码查找记录函数*/tel* searchphone() /*按家庭电话查找记录函数*/tel* searchaddress() /*按地址查找记录函数*/tel * search() /*查找记录函数*/tel* dimsearch() /*模糊查找记录函数*/void modify() /*修改记录函数*/void del() /*删除记录函数*/void

5、 fre() /* 释放链表空间函数*/void openfile(); /*读取文件到链表*/2.2.2 主控main()函数执行流程以只读的方式打开一个数据文件将此文件的内容读出,并存入一个结构体中,关闭文件 进入while(1)主循环调用函数showmenu()输出菜单输入06中的一个数值,选择相应操作是否判断键值,调用相应函数,完成相应功能本通讯录执行主流程如图2.2所示。它先以只读的方式打开数据文件,此文件默认为“txl.txt”,若该文件不存在,则给出提示。当打开文件操作成功后,从文件中读出全部记录,添加到结构体中,然后执行进入主循环和显示主菜单操作,输入(06)进行按键判断。当输

6、入0时,系统会退出通讯录系统的操作。若选择1,则调用void add()函数,执行增加记录操作;若选择2,则调用void modify()函数,执行修改记录操作;若选择3,则调用tel * search()函数,执行查询记录操作;若选择4,则调用void del()函数,执行删除记录操作;若选择5,则调用void show()函数,执行显示全部记录操作;若选择6,则调用tel* dimsearch()函数,执行模糊查找操作;若选择0,则调用void save()、void fre(),函数,执行保存记录,并释放链表空间操作;若输入为06之外的值,给出选择错误的提示。2.2.3 添加记录模块程序

7、一开始就从默认文件调用fsanf()函数读入记录(若文件存在且有记录)到结构体中。在添加每条信息时均在提示框显示有相关提示,当用户选择 0 退出添加记录时,系统会清屏并返回到主菜单供用户再次选择其他操作。 2.2.4 查询记录模块此模块包括精确查询和模糊查询两大功能。通过调用tel * search()和tel* dimsearch()实现,查询记录模块主要实现了显示结构体中所有成员信息。通过调用tel * search()函数实现,系统默认为精确查找,当精确查找没有匹配是,会提示用户是否进行模糊查找,模糊查找系统会根据用户输入的相关信息,通过调用tel * dimsearch()函数分条显示

8、与该信息相关的记录,直到用户确认或程序到最后一条记录。2.2.5 修改记录模块此模块主要通过调用tel * search()和tel* dimsearch()实现,查询记录模块主要实现了显示结构体中所有成员信息。通过调用tel * search()函数实现,系统默认为精确查找,当精确查找没有匹配是,会提示用户是否进行模糊查找,模糊查找系统会根据用户输入的相关信息,通过调用tel * dimsearch()函数分条显示与该信息相关的记录,直到用户确认后进行修改或程序到最后一条记录。2.2.6 删除模块此模块主要通过调用tel * search()和tel* dimsearch()实现,查询记录模

9、块主要实现了显示结构体中所有成员信息。通过调用tel * search()函数实现,系统默认为精确查找,当精确查找没有匹配是,会提示用户是否进行模糊查找,模糊查找系统会根据用户输入的相关信息,通过调用tel * dimsearch()函数分条显示与该信息相关的记录,直到用户确认后进行删除或程序到最后一条记录。2.2.7 显示全部记录模块此模块主要通过调用show()函数将记录(如果有记录)全部输入到屏幕上面,否则则给出相应提示。2.2.8 模糊查询模块通过调用tel * dimsearch()函数实现,模糊查找系统会根据用户输入的相关信息,通过调用tel * dimsearch()函数分条显示

10、与该信息相关的记录,直到用户确认该信息或到最后一条记录。3、系统实现 3.1编码3.1.1 程序预处理#include /*标准输入输出库*/#include /*界面处理库*/#include #include /*处理字符串函数库*/struct phone /*定义结构体变量*/ char name20; /*存放姓名*/ char mobile15; /*存放手机号码*/ char phone15; /*存放家庭电话*/ char address50; /*存放家庭住址*/ struct phone *next; /*存放下一个节点的地址*/ ;void showmenu(); /*显

11、示功能菜单*/void creatnew() /*添加纪录函数*/void save() /*将数据写入文件函数*/void add( ) /*控制添加记录函数*/ void openfile() /*输出文件到链表函数*/void show() /*显示全部记录函数*/void searchshow() /*显示查找选项函数*/tel* searchname() /*按姓名查找记录函数*/tel* searchmobile() /*按手机号码查找记录函数*/tel* searchphone() /*按家庭电话查找记录函数*/tel* searchaddress() /*按地址查找记录函数*/

12、tel * search() /*查找记录函数*/tel* dimsearch() /*模糊查找记录函数*/void modify() /*修改记录函数*/void del() /*删除记录函数*/void fre() /* 释放链表空间函数*/void openfile(); /*读取文件到链表*/3.1.2主函数main()main() int x,m; openfile(); /*读取文件到链表*/ system(color 9a); /*设置背景颜色和字体颜色*/ while(1) /*设置循环条件为真*/ showmenu(); /*显示各个功能*/ fflush(stdin); /

13、*刷新缓存区*/ printf(请作出您的选择:); scanf(%d,&x); if(x=0&x=6) switch(x) system(cls); case 1:add();break; /*添加记录函数*/ case 2:modify();break; /*修改记录函数*/ case 3:search();break; /*查找记录函数*/ case 4:del();break; /*删除记录函数*/ case 5:show();break; /*显示全部记录*/ case 6:dimsearch();break; /*模糊查找*/ case 0:fre();printf(ntt欢迎再次

14、使用通讯录管理系统,再见!.nn);exit(0); else printf(nn选择错误,请再次选择!n); getch();3.1.3 输出菜单void showmenu() int i; for(i=0;i80;i+) printf(%c,16); printf(n); printf(tttt1:添加记录n); printf(n); printf(tttt2:修改记录n); printf(n); printf(tttt3:查找记录n); printf(n); printf(tttt4:删除记录n); printf(n); printf(tttt5:显示全部录n); printf(n);

15、printf(tttt6:模糊查找n); printf(n); printf(tttt0:退出程序n); printf(请在0-6选择:n); for(i=0;iname); printf(ttt请输入手机号码:); scanf(%s,new-mobile); printf(ttt请输入家庭电话:); scanf(%s,new-phone); printf(ttt请输入家庭住址:); scanf(%s,new-address); p1=head; /*将头指针再次赋给变量p1*/ if(head!=NULL) /*先判断是否有记录*/ do if(strcmp(p1-mobile,new-mo

16、bile)=0| (strcmp(p1-phone,new-phone)=0) /*判断记录是否已经存在*/ printf(记录已经存在n); printf(n%-20s%-15s%-15s%-50sn, p1-name,p1-mobile,p1-phone,p1-address); /*输出已存在记录*/ printf(是否继续添加?1 继续添加t其他数字键重新输入n); scanf(%d,&n);/*确认是否添加记录*/ if(n=1) /*确认添加*/ break; else /*确认重新输入*/ goto aa; p1=p1-next; while(p1!=NULL); /*判断记录是

17、否存在*/ p1=head; /*将头指针再次赋给变量p1*/ if(head=NULL) /*检测是否为空链表*/ head=new; /*链表为空,插入的结点作为第一个结点*/ new-next=NULL; else while(p1-next!=NULL)& (strcmp(p1-name,new-name)next; if(strcmp(p1-name,new-name)0) if(head=p1) new-next=head; head=new; else p2-next=new; new-next=p1; else p1-next=new; new-next=NULL; 3.1.5

18、修改功能void modify() /*修改记录函数*/ tel *new=search(); /*调用查找函数*/ if(z=0) ; else if(x=0); else if(z=0&x=0); /*根据表计量判断指针*/ else if(new=NULL) /*修改头结点数据*/ printf(请输入新纪录:n); printf(ttt请输入姓名:); scanf(%s,head-name); printf(ttt请输入手机号码:); scanf(%s,head-mobile); printf(ttt请输入家庭电话:); scanf(%s,head-phone); printf(ttt

19、请输入家庭住址:); scanf(%s,head-address); save(); else /*修改其他结点数据*/ printf(请输入新纪录:n); printf(ttt请输入姓名:); scanf(%s,new-next-name); printf(ttt请输入手机号码:); scanf(%s,new-next-mobile); printf(ttt请输入家庭电话:); scanf(%s,new-next-phone); printf(ttt请输入家庭住址:); scanf(%s,new-next-address); save(); printf(nn); printf(ttt按任意

20、键继续); getch(); system(cls);3.1.6查找功能tel * search() int i,j=0; tel *p1=NULL,*p2=NULL,*p=NULL; loop: searchshow(); scanf(%d,&i); if(i=1&iname,p2-name)=0|(strcmp(p1-mobile,p2-mobile)=0| (strcmp(p1-phone,p2-phone)=0|(strcmp(p1-address,p2-address)=0) printf(找到记录:n); printf(%-20s%-15s%-15s%-50sn,姓名,手机号码,电

21、话号码,家庭住址); printf(n%-20s%-15s%-15s%-50s,p1-name,p1-mobile,p1-phone,p1-address); break; p=p1; p1=p1-next; if(p1=NULL) printf(ttt电话本中无此记录!nn); printf(tt是否重新进行?按1 继续t按其他数字键模糊查找!nn); scanf(%d,&i); if(i=1) free(p2); /*释放p2的存储空间*/ goto loop; else system(cls); /* 精确查找没有记录,进行模糊找找*/ p=dimsearch(); return p;3

22、.1.7删除功能void del() /*删除记录函数*/ tel * p2=search(); /*查找要删除的结点*/ int i; if(z=0) ; else if(x=0); else if(z=0&x=0); /*根据标记量判断删除的是否是头点*/ else if(p2=NULL) printf(nnn确实要删除吗?t按1 删除!t按其他数字保留!n); scanf(%d,&i); if(i=1) head=head-next;/*修改删除头结点的指针*/ save(); printf(ttt按任意键返回); getch(); system(cls); else printf(nn

23、n确实要删除吗?t按1 删除!t按其他数字保留!n); scanf(%d,&i); if(i=1) p2-next=p2-next-next;/*修改不是删除头结点的指针*/ save(); printf(ttt按任意键返回); getch(); system(cls); 3.1.8显示全部记录void show() /*显示全部记录*/ tel *p1=head; if(head=NULL) /*判断是否是空链表*/ printf(nttt电话簿中没有记录,请输入纪录后,在使用本能!n); printf(ttt按任意键返回); getch(); system(cls); return; pr

24、intf(%-20s%-15s%-15s%-50sn,姓名,手机号码,电话号码,家庭住址); do printf(n%-20s%-15s%-15s%-50s,p1-name,p1-mobile,p1-phone,p1-address); p1=p1-next; while(p1!=NULL); printf(ttt按任意键返回); getch(); system(“cls”);3.1.9模糊查找功能tel* dimsearch() /*模糊查找*/ int i,j=0,m; tel *p1=NULL,*p2=NULL,*p=NULL; searchshow();lp: scanf(%d,&i); if(i=1&iname,p2-name)|(strstr(p1-

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

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