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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(东南大学短学期C++电话簿.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

东南大学短学期C++电话簿.docx

1、东南大学短学期C+电话簿课程设计报告学院、系交通学院课程设计科目C+程序课程设计课程设计题目通讯录管理系统组长季予小组成员吕文广、李文贤、郭瑞琦指导教师刘敏完成时间2012-8-23摘要:随着科学技术的发展,计算机领域不断取得新的研究成果。计算机知识越来越普及,计算机的应用也越来越广泛:它不再局限于科学研究方面,变得与我们的生活息息相关。此例的通讯录便是日常生活中极实用的应用之一。通讯录系统能方便用户迅速、准确的查找修改删除联系人信息,并实现把各个联系人的信息以文档保存。本文介绍了简易通讯录管理系统在Microsoft Visual C+ 6.0环境下的实现过程:系统的分析,功能模块的设计,系

2、统的调试和测试。 该通讯录包含的主要功能有:联系人的添加、修改、删除、拨号、分类显示以及整表导出为txt文本,并自动实现按字母升序排列通讯录。关键词:Microsoft Visual C+、通讯录、功能函数、面向对象、控制台目录1 课题小组成员组成及分工情况2 功能需求分析 2.1 通讯录界面设计 2.2 添加模块 2.3 查找模块 2.4 删除模块 2.5 修改模块 2.6 显示模块 2.7 拨号功能模块 2.8 来电显示模块3 程序框图4 主要代码描述 4.1 添加记录 4.2 查找记录 4.3 删除记录 4.4 修改记录 4.5 整表输出 4.6 拨号功能 4.7 来电显示 4.8 控制

3、台5 调试6 总结与心得7 致谢(附:程序详细代码)1 课题小组成员组成及分工情况季予:程序MFC实现方法、Search、Edit、Delete、Dial函数的编写。吕文广:程序MFC实现方法、输入输出流控制、运算符重载部分的编写。李文贤:Address类、Terms类、Addrbook类基础框架构造。组织各函数。郭瑞琦:链表部分的排序实现、程序调试与bug修复、pptword报告编写。2 功能需求分析 通讯录主要应有以下功能模块:通讯录界面、新建联系人、修改原有联系人信息、删除联系人、查找联系人、显示联系人信息及由联系人姓名进行拨号的功能。其中联系人的姓名、通讯号码等信息可由数字和字母混编而

4、成。2.1 通讯录界面设计主要功能是设计通讯录的界面,能够提示用户的实际操作等。我组采用按照序号来实现相应的操作,其中:1添加通讯录2删除通讯录3编辑通讯录4查看通讯录5拨号6 来电显示 7整表输出 8保存退出2.2 通讯录添加模块 主要功能是添加联系人,包括姓名、电话等信息,且添加后自动按字母顺序排列。2.3 通讯录查找模块 主要功能是在已编通讯录内查找所需删除或修改的联系人信息,并实现“查无此人”的报错功能。2.4 通讯录修改模块 主要功能是对原有联系人的个人信息进行修改更新。2.5 通讯录删除模块 主要功能是删除不再需要的联系人。2.6 通讯录显示模块 主要功能是显示已有的通讯录信息并可

5、输出在文本文档中。2.7 通讯录拨号模块 主要功能是通过已知姓名的输入实现系统对号码的自动查找拨出。2.8 通讯录来电显示模块 主要功能是通过已知电话号码的输入实现系统对已有通讯录姓名的查找。3 程序框图4 主要代码描述4.1添加记录通过输入联系人的姓名、电话等向程序中写入信息,具体由重载实现:istream& operator(istream &in,Address &a) couta.name; couta.tel_num; while(1) if(strlen(a.tel_num)!=11) cout请重新输入手机号码(11位数)a.tel_num; else break; cout归类

6、n:; ina.arch; couta.e_addr; return in;4.2查找记录根据姓名输入,查询原有联系人信息的地址,具体代码如下:Terms* AddrBook:Search(char *nam) Terms *p,*q; for(int i=0;ilink;p!=abi;p=p-link) if(!strcmp(p-term.name,nam)/比较名字 return &q-link;/相同时返回地址 q=p;/用q保存前一个指针 return &abi;/搜索失败时返回表头节点4.3删除记录根据姓名输入,通过遍历全表找到原有联系人信息并删除,拥有报错功能,具体代码如下:boo

7、l AddrBook:Delete() char *nam=new char25; coutnam;/指定名字 return Delete(nam);bool AddrBook:Delete(char *nam) Terms *q,*p=Search(nam); if(Search(nam)=&ab1|Search(nam)=&ab2|Search(nam)=&ab3) coutlink; delete q; cout删除成功!n; return true;4.4编辑记录根据姓名输入,通过遍历全表找到原有联系人信息并根据需要进行修改,拥有报错功能,具体代码如下:void Address:Mod

8、ify() char *str=new char25,a; cout请逐项输入新数据:n; coutstr; if(strcmp(str,#)!=0) strcpy(name,str); coutstr; if(strcmp(str,#)!=0) strcpy(tel_num,str); couta; if(a!=#) arch=a; coutstr; if(strcmp(str,#)!=0) strcpy(e_addr,str);4.5整表输出的实现把文件中的各种信息通过txt文本文档的形式保存出来,代码如下:void AddrBook:save() ofstream outfile(dat

9、a.txt); for(int i=0;ilink;p!=abi;p=p-link) outfile姓名:term.namen手机号:term.tel_numnE_mail:nterm.e_addrendln;/调用重载的运算符输出 cout已保存!endl;4.6拨号功能的实现查找功能的简单延伸,代码如下:bool AddrBook:Dial(char *nam) Terms *p=Search(nam); if(Search(nam)=&ab1|Search(nam)=&ab2|Search(nam)=&ab3) coutterm.tel_numi; do for(unsigned lon

10、g int j=0;j19999999;j+); coutterm.tel_num+i; while(c!=0&i15); coutendl; return true; 4.7 来电显示功能bool AddrBook:comeshow() char *come=new char25; coutcome; Terms *p=show(come); if(show(come)=&ab1|show(come)=&ab2|show(come)=&ab3) coutterm.namei; do for(unsigned long int j=0;j19999999;j+); coutterm.name+

11、i; while(c!=0&i15); coutendl; return true; Terms* AddrBook:show(char *come) Terms *p,*q; for(int i=0;ilink;p!=abi;p=p-link) if(!strcmp(p-term.tel_num,come)/比较名字 return &q-link;/相同时返回地址 q=p;/用q保存前一个指针 return &abi;/搜索失败时返回表头节点4.8控制台命令实现。void main() AddrBook adrbk; int i; cout-通讯录管理系统-n; cout功能菜单:n; co

12、ut添加通讯录1n; cout删除通讯录2n; cout编辑通讯录3n; cout查看通讯录4n; cout拨号5n; cout来电显示6n; cout整表输出在data.txt7n; cout退出8n; coutendl; for(;) couti; switch(i) case 1:cinadrbk;break; case 2:adrbk.Delete();break; case 3:adrbk.Edit();break; case 4:coutadrbk;break; case 5:adrbk.Dial();break; case 6:eshow();break; case 7:adrb

13、k.save();break; case 8: cout是否保存数据,是请按1,否请按2i; switch(i) case 1:adrbk.save();break; case 2:cout没有保存数据n;break; cout-谢谢使用-n; default:return; coutendl; 5 调试控制台与添加功能删除及报错功能编辑功能整表输出功能整表输出功能(附图一)6 总结与心得这是我上大学学习程序设计以来设计语言结果的大检查.自己动手自己发现问题,解决问题,发现自己的很多不足.平时没有掌握好的知识在这次设计中彻底暴露出来,经过不断的思考,不断查阅资料,不断上机运行,解决其中大部分问

14、题,当然还有一些问题没有解决,我相信在以后的学习中能够解决它们.但是收获还是不小的.我不仅对C的操作有了进一步的掌握,还掌握了程序设计的风格及其注释的格式.这次课程设计锻炼了我编写程序的能力,对以前学过的知识有了进一不的了解,特别是链表这一重要知识点。经过这次课程设计,我体验到了自学的乐趣和成就感,我想我以后会更加热爱自己的专业,更加注重自学能力的培养,一定会把自己的专业学好.课程设计是每一个大学生在大学生涯中都不可或缺的,它使我们在实践中了 巩固了所学的知识、在实践中锻炼自己的动手能力;实习又是对每一位大学生所 学专业知识的一种拓展手段, 它让我们学到了很多在课堂上根本就学不到的知识, 不仅

15、开阔了自己的视野,增战了自己的见识,也为我们以后进一步走向社会打下 了坚实的基础,是我们走向以后走向工作岗位的奠基石。两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义我今天认真的进行课程设计,学会脚踏实地迈

16、开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础7 致谢在这次课程设计中老师给了我们很大的帮助,帮我们解答疑难问题,给我们提供资料,给我们提供查阅资料的信息,引导我们该如何去思考问题,教会我们解决问题的方法.同时又鼓励我们自主学习,老师给我的不仅是知识,是帮助,更是学习的信心与智慧,在这里衷心感谢老师的耐心细心的帮助.同时也感谢和我们一起走过的同学,这是我们共同努力地结果,衷心的感谢大家对我的帮助和支持.附录:程序详细代码4.3程序详细代码#include#include/用于字符串的比较#includeclass Address/定义记录类public: Address() nam

17、e=new char25; tel_num=new char15; e_addr=new char25; Address(char *n,char *tel,char ar,char *eadr); Address() delete name; delete tel_num; delete e_addr; void Modify();/编辑数据private: char *name,*tel_num,arch,*e_addr; friend istream& operator(istream &in,Address &a);/重载输入运算符 friend ostream& operator(A

18、ddress &a,Address &b);/重载号 friend bool operator=(Address &a,Address &b);/重载等于号 friend class AddrBook;Address:Address(char *n,char *tel,char ar,char *eadr) name=new char25; tel_num=new char15; e_addr=new char25; strcpy(name,n); strcpy(tel_num,tel); arch=ar; strcpy(e_addr,eadr);void Address:Modify() c

19、har *str=new char25,a; cout请逐项输入新数据:n; coutstr; if(strcmp(str,#)!=0) strcpy(name,str); coutstr; if(strcmp(str,#)!=0) strcpy(tel_num,str); couta; if(a!=#) arch=a; coutstr; if(strcmp(str,#)!=0) strcpy(e_addr,str);istream& operator(istream &in,Address &a) couta.name; couta.tel_num; while(1) if(strlen(a

20、.tel_num)!=11) cout请重新输入手机号码(11位数)a.tel_num; else break; cout归类n:; ina.arch; couta.e_addr; return in;ostream& operator(ostream &out,Address &a) cout姓名: a.nameendl; cout手机号: a.tel_numendl; cout归类: ; if(a.arch=A)cout老师类; else if(a.arch=B)cout同学类; else cout其他类; coutendl; coutE_mail: a.e_addr(Address &a

21、,Address &b) return strcmp(a.name,b.name)0;bool operator=(Address &a,Address &b) return strcmp(a.name,b.name)=0;/定义通讯录链表的节点/由于数据需要反复的插入,删除以及调整顺序,所以用链表存放class Termspublic: Terms()link=0; Terms(char *n,char *tel,char ar,char *eadr); Terms(char *n,char *tel,char ar,char *eadr,Terms* nxt); Terms* Insert

22、After(char *n,char *tel,char ar,char *eadr);/完成在后边插入private: Address term;/记录数据 Terms *link;/指向下一节点 friend class AddrBook;Terms:Terms(char *n,char *tel,char ar,char *eadr):term(n,tel,ar,eadr) link=NULL;Terms:Terms(char *n,char *tel,char ar,char *eadr,Terms* nxt):term(n,tel,ar,eadr) link=nxt;Terms* T

23、erms:InsertAfter(char *n,char *tel,char ar,char *eadr) link=new Terms(n,tel,ar,eadr,link);/循环链表 return link;/定义通讯录类用三个代表头节点的循环链表分别存放三类数据class AddrBookpublic: AddrBook(); bool Delete();/删除指定名字的通讯录 bool Edit();/编辑指定名字的通讯录 bool Dial();/拨指定名字的人的电话 bool comeshow(); void save();private: Terms *ab3; Terms*

24、 Search(char *nam);/在通讯录里查找指定名字的记录,返回指向该记录的指针的地址 Terms* show(char *come); bool Insert();/插入记录 void Output()const;/输出指定的一类记录 bool Delete(char *nam); bool Edit(char *nam); bool Dial(char *nam); bool comeshow(char *come); friend ostream& operator(istream& in,AddrBook& r);/重载输入;AddrBook:AddrBook() for(int i=0;ilink=abi;/循环链表 bool AddrBook:comesh

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

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