c通信录管理系统最终版

上传人:z**** 文档编号:79274946 上传时间:2022-04-23 格式:DOC 页数:17 大小:78.50KB
收藏 版权申诉 举报 下载
c通信录管理系统最终版_第1页
第1页 / 共17页
c通信录管理系统最终版_第2页
第2页 / 共17页
c通信录管理系统最终版_第3页
第3页 / 共17页
资源描述:

《c通信录管理系统最终版》由会员分享,可在线阅读,更多相关《c通信录管理系统最终版(17页珍藏版)》请在装配图网上搜索。

1、学校C+程序设计课程设计报告选题名称:通信录管理系统系(院):计算机与信息技术学院专业:计算机科学与技术专业班级:08级计科(2)班姓 名:钱冰冰 学 号:20085101125指导教师:李艳丽学年学期:20102011 学年 第 1 学期2011 年_L月3 日摘要:此系统主要管理信息有:联系人的姓名、地址、手机、Email。本系统的主要功能有联系人信息的添加、查找、删除,修改,保存记录到外存,从外存中读 取记录,能对联系人信息按姓名或电话号码进行查找,并能保存信息到文件以 及从文件中读取信息等功能。关键词:查找;删除;添加;文件保存及读取1需求分析错误!未定义书签1.1功能需求分析:1.2

2、环境需求分析:1.3方法需求分析错误!未定义书签。112概要设计2.1系统功能模块图 12.2设计思想 23详细设计 3.1设计原理 23.2主要代码描述 24操作说明 11121需求分析1.1功能需求分析简易通信录管理系统主要有4大模块:联系人信息从文件中读入和写出,联 系人信息的添加和删除,联系人信息的查询和联系人信息的显示。1.11通信录的读入和写出模块主要功能是读出要管理的通信录文档,保存修改后的通信录文档。实际生活 中通信录的文件主要以 word或excel保存,为了方便操作我在调式本系统中成 绩文件采用了 txt的文档格式保存,当然以 word文档形式保存也是可以的。1.12通信录

3、的添加和删除模块主要功能是输入、添加、删除人员信息的操作。添加操作是根据用户的要求 实现的。例如用户可以输入要删除人员的姓名删除人员的信息。 此程序输入人员 信息时就保存到数据结构中相应的变量中。1.13通信录的查询模块主要功能是按照用户的要求查询人员的信息。其中用户可以选择查询单独或 特定一组联系人的信息,还可以修改联系人的信息。1.14通信录的显示模块此项功能运用使得用户可以浏览所有联系人的信息。1.2环境需求分析操作系统:Win dows 2007开发软件:Visual C+ 6.01.3方法需求分析由于数组存放数据的时候要先确定数组的规模,不能动态的分配内存空间, 而单链表是非连续存放

4、的,可以对内存空间进行动态分配,此系统是用单链表完 成的。然后定义链表的结点类型为结构就可以实现对联系人姓名和电话的保存。每次只要返回头指针,就可以对整个链表进行操作,因此选链表来存放学生 信息。2概要设计2.1系统功能模块图诵信录管理系统费记录显一乔记录查询记录保畫录修改记录2.2设计思想通信录管理系统是用面向对象的方法设计, 由于数组的存放是连续的,而单 链表是非连续存放的,是动态分配内存空间,因此此系统采用单链表来完成。 各 个功能模块的实现主要转变到对单链表的遍历,添加和删除结点。3详细设计3.1设计原理通信录管理系统以菜单选择,通过调用各个函数,对单链表的遍历,实现不 同的功能,不同

5、函数处理后返回的只是一个头结点, 但是通过头结点可以找到所 有链表中的信息,只要有函数,找到头指针就能进行相应的操作, 所以模块化的 程序方便以后添加或者删除某些功能,程序中通过system( “cis ”)清屏函数实现界面的转换,主函数中的循环保证程序不会退出, 一个循环和一个清屏函数实 现了主菜单和各子画面的切换(子函数)。这样的话各个子函数都可以调用一开 始输入的数据,这样就实现了各个不同函数调用时都能使用整个系统连续起来 了。作为一个通信录管理系统,增加了文件的读入和写出功能,增加了程序的实 用性。3.2主要代码描述3.21通信录信息保存到文件中并读入和C的文件操作方式不同的是,C+I

6、/O系统管理两个与一个文件相联系的 指针。一个是读指针,它说明输入操作在文件中的位置;另一个是写指针,它下次写操作的位置。每次执行输入或输出时,相应的指针自动变化。所以,C+的 文件定位分为读位置和写位置的定位,对应的成员函数是seekg()和seekp(),seekg()是设置读位置,seekp是设置写位置。而这次的程序用的是指针来定位, 其代码如下:vode file_write(c onst node *pc) /保存结点char file name20;ofstream ofile;countvv请输入文件名(包括路径)n;cin file name;ofile.ope n(file

7、name,ios:app|ios:bi nary);if(!ofile)coutvv你输入的文件名有误!n;exit(0);ofile.write(pc-Name,15); ofile.write(pc-Addr,20);ofile.write(pc-Tele,14); ofile.write(pc-E-mail,20);node *file_read(c onst char *file name)node * head,*p n,*pt;char name15,addr20,tele14,e-mail20;head=0;ifstream ifile;ifile.ope n(file name

8、,ios:i n|ios:bi nary);if(!ifile)coutvv文件不存在! n;exit(0);if(ifile.eof()coutvv文件为空! n;exit(1);while(!ifile.eof()ifile.read( name,15);ifile.read(addr,20);ifile.read(tele,14);ifile.read(e-mail,20);pn=new no de;strcpy(p n-Name, name);strcpy(p n-Addr,addr);strcpy(p n-Tele,tele);strcpy(p n-E-mail,e-mail);if

9、(head=0)head=p n;pt=p n;pn-n ext=0;elsept- n ext=p n;pt=p n;pn-n ext=0;return head;node *file_delete( node *pc)char *n ame1,* name2 ,n ame15,file name30; int pos;n ame=pc-Name;fstream iofile;iofile.ope n(file name,ios:i n| ios:out|ios:bi nary); if(!iofile)coutvv文件不存在! n;exit(0);if(iofile.eof()cout文件

10、为空! n;exit(1);iofile.read( name1,15);pos=iofile.tellg();取当前指针位置while(!iofile.eof( )&(n ame!=n ame1) iofile.seekg(54);/20+14+20 iofile.read( name1,15);/pos=iofile.tellg();if(iofile.eof()cout数据不存在! n;exit(0);elseiofile.seekg(54,ios:cur);while(!iofile.eof()iofile.read( name2,8192)int n=iofile.gco un t(

11、);iofile.seekg(pos-15);iofile.write( name2, n);3.22通信录删除删除通信录信息是这样实现的:通过两个辅助指针找到链表中要删除的学生 信息所在的结点,让辅助指针的前驱辅助指针指向辅助指针的后一结点,这样辅助指针所指项就自动从链表中删除了,然后输出该学生的信息以确认是否是该学 生,是的话按任一键就可删除,最后返回头指针。具体代码如下:void DelData(TelBook *head)TelBook *start,*prese nt=head;char in_n ame20;coutvv输入要删除的名字:;cinin_n ame;if(head=N

12、ULL) /链表为空的情况cout列表是空的。n ame,in _n ame)=0) /比较名字是否相等。cout 要删除的内容存在。e ndl;cout 要删除的内容是:n amee ndl;coutaddresse ndl;couttele ndl;coutmobe ndl;coutemail next!=NULL)head=head-n ext;elsecout 没有你要找的名字! ; break;/在此插入确认语句? 1coute ndl;start=present; /present 与 head 结点的对调prese nt=head;head=start;/在此插入确认语句? 2i

13、f(prese nt=head) /被删除的节点是头节点start=head;head=head-n ext;delete start; /头结点不能被直接被删除start=NULL;cout已删除。;return;被删除节点不是for(start=head;start!=prese nt;start=start- n ext) /头节点。找到被删除节点的前一节点。if(start- n ext=prese nt)start- n ext=prese nt-n ext;delete prese nt;prese nt=NULL;cout已删除。;return;return;coutvv请输入相

14、应的序号选择要执行的任务endl;3.23通信录添加void CreateList(TelBook *&head)/这里如果参数换成TelBook *head,意义就完全不同了,head变成了复制而不 是在原有链上操作了TelBook *s,*p; / 初始化*s *p 两个指针,使s指向TelBook,p指向s指 向的结点的上一个结点(p假设存在)cout(添加记录一直到输入人名为0时结束。) s-n ame; /输入姓名coutAddress :;cin s-address; /输入地址couts-tel; /输入电话coutMobile :;cin s-mob; /输入手机coutEma

15、il :;cins-email; / 输入 Emailwhile(Right(s-email)cout输入有误,请重新输入endl;cout s-email; / 最后修饰要加上email输入有误时的判断,提示重新输入 while(strcmp(s- name,OO) /插入一个新的记录if(head=NULL) /判断列表是否已经存在。若不存在,则首先自动新建一个链表。coutvv 列表不存在,新建一个链表。next=s; /else中的两条语句不能颠倒,但上一行的p=s;与下一行的 p=s;等价?为发现调换之后有什么区别/ p=s;s=new TelBook;cout s-n ame; /

16、输入姓名coutAddress :;cin s-address; /输入地址cout s-tel; /输入电话coutMobile :;cin s-mob; /输入手机coutEmail :;cin s-email; /输入Emailwhile(Right(s-email)cout 输入有误,请重新输入 s-email; /最后修饰要加上email输入有误时的判断,提示重新输入p- next=NULL;delete s; /释放名字为0的结点。return;coutvv请输入相应的序号选择要执行的任务 name,00)if(head=NULL) /判断列表是否存在,若是空表,则自动生成一个链表

17、,使TelBook作为第一个结点coutvv列表不存在,新建一个列表next=NULL; /下一个结点为 NULLelse /若链表不为空时,p-n ext=s;p=s;s=new TelBook;cout s-n ame;cout s-tel;do coutemail : s-email;while(Right(s-email);p- next=NULL;delete s; /释放名字为0的结点。return;4操作说明一个通信录管理系统如果不能进行文档的读出和写入的操作,功能再多,程序关闭后,所做的操作都将没有,这就失去了实际的意义。此系统当用户退出系 统时,用户可以选择是否保存已做的修改

18、。当用户任意选择一个操作时,系统将会提示。此外在输入号码时,输入错误的数字系统可以提示错误,但是如果输入 标点和字母时,系统将会出错,因此输入成绩时不可以输入字母和标点。此外, 注意适当的使用链表初始化,防止出现意外错误,例如,一开始不初始化就显示 学生信息,由于链表还未创建,会出现内存不能为read的错误。提示是否返回主菜单,如果不返回则自动提示退出系统,选择是的话返回主菜单。总 结通过这次课程设计,我对很多的函数有了新的认识,也学会运用多种函数, 我也明白写软件的基本过程和基本方法。 写软件的过程中我又学到曾经自己不知 道的函数或是自己不会的函数的用法。 特别是文件的开启和关闭,读与写。这

19、次 课程设计课总的来说让我受益匪浅。在软件的设计过程中遇到拉很多的困难。在软件一次一次的调试失败下曾经 想过要放弃。我最后还是让自己坚持下来,毫不畏惧困难,在同学的帮助与讲解 下我总算是顺利的完成软件的设计。虽然在调试程序遇到拉很多的困难,当软件调试成功时那种喜悦的感觉没有 什么东西可以代替。在程序的编写过程中我发现我自己有很多的知识漏洞和缺 陷,需要进一步努力学习来完善自己。在这几天的编写过程中我对C+语言有啦更进一步的认识和了解。 此次编程 过程的经验和知识肯定能促进我以后的学习。参考文献1 郑莉,董渊,何江舟著.C+语言程序设计(第四版).清华大学出版社2 李友兰著.Visual C# Net程序设计.清华大学出版社3 钱能.C+程序设计教程.清华大学出版社4 刁成嘉主编.面向对象C+程序设计.机械工业出版社,2004.机械工业出版 刘瑞新,曹建春,沈淑娟,张连堂等编著.Visual C+面向对象程序设计程设,2004

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!