欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据结构课程设计——通讯录.doc

    • 资源ID:1051590       资源大小:143KB        全文页数:20页
    • 资源格式: DOC        下载积分:10积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要10积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计——通讯录.doc

    1、淮阴工学院数据结构课程设计报告选题名称: 通讯录 系(院): 计算机工程学院 专 业: 计算机科学与技术 班 级: 计算机1091 姓 名: 宋可 学 号: 1091301117 指导教师: 张亚红 周海岩 学年学期: 2010 2011 学年 第 1 学期2010年 12 月 30 日设计任务书课题名称通讯录设计目的利用链表以及其他数据结构存储、编辑、删除、添加、显示联系人等等操,从而实现通讯录功能的模拟!主要可以加深对数据结构尤其是链表,数组结构的认识!实验环境Windows2000以上操作系统Visual C+6.0以上编译环境任务要求1 查阅资料,完成通讯录数据结构的设计!2 撰写PP

    2、T文件与课程设计报告;3 参加答辩。工作进度计划序号起止日期工 作 内 容12010.12.27理论辅导,搜集资料22010.12.282010.12.29编写代码,上机调试32010.12.30撰写课程设计报告及ppt42010.12.31答辩指导教师:张亚红 周海岩 2010 年 01月 3 日 目录1 需求分析31.1 课题要求及思想31.2 运行环境及开发工具32 概要设计32.1 功能结构32.2 数据结构的设计42.3 设计的原理53 详细设计和实现53.1 总体框架53.2 各个模块及功能53.3 算法实现及流程图64 调试与操作说明15总 结17致 谢18参 考 文 献191

    3、需求分析1.1 课题要求及思想 本次课题是建通讯录,它主要包含九个模块,希望建立一个主函数main(), 利用它来调用各个函数,比如创建一个通讯录,删除一个人的信息,添加一个人的信息。1.2 运行环境及开发工具 这次课程设计的运行环境为Windows2000以上操作系统和开发Microsoft Visual C+ 6.0,下面主要介绍一下Microsoft Visual C+ 6.0。 Visual C+(简称VC)是Microsoft公司推出的目前使用极为广泛的Windows平台的C+可视化开发环境。Visual C+ 6.0提供的控制台应用程序对学习和掌握标准C+内容非常有利。“可视”的资

    4、源编辑器与MFC类以及应用程序向导,为快速高效地开发出功能强大的Windows应用程序提供了极大的方便。利用Visual C+ 6.0进行Internet和数据库及多媒体等多方面的程序开发也很容易。 本课程设计采用了C+。C+语言是在C语言的基础上发展起来的,不仅继承了C语言的所有特点,而且引入了面向对象的程序设计方法 ,改进了程序涉及思路,将编程方式进化到面向对象进行程序设计这一新的思维过程。 C+语言代表着对以往语言之精华的发展和提炼,并能很好的与C语言兼容既支持面向对象的程序设计,也支持结构化的程序设计。它修补了C语言中的一些漏洞,提供更好的类型检查和编译时的分析,提供了异常处理机制,简

    5、化了程序的出错处理,利用throw、try和catch关键字,出错处理程序不必与正常的代码紧密结合,提高了程序的可靠性和可读性。 函数重载允许相同的函数名具有不同参数表,系统根据参数的个数和类型匹配相应的函数。提供了模板机制。摸板包括类摸板和函数模板两种,它们将数据类型作为参数。对于具体数据类型,编译器自动生成模板类或模板函数,它提供了源代码复用的一种手段。2 概要设计2.1 功能结构本次课题是建通讯录,它主要包含九个模块如下:第一个模块主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。 第二个模块Menu()的功能是:显示英文提示选单。 第三个模块Quit()的功能是:

    6、退出选单。 第四个模块Create()的功能是:创建新的通讯录。 第五个模块Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。 第六个模块Find()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。 第七个模块Alter()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。 第八个模块Delete()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。 第九个模块List()的功能是:显示通讯录中的所有记录。2.2 数据结构的设计 1、数组存储

    7、姓名的首字母和联系人链表的头指针!数组结点:struct addlist_arrynodchar letter;MyContactsNode*head;2、 联系人链表结点:struct MyContactsNodechar*name;enum sexM,W personsex;char*phonenum_m;char*phonenum_gd;char*address;2.3 设计的原理 这次课程设计运用了单链表和顺序数组以及它的操作,如单链表的删除,插入,搜索,修改等等,因此设计了一个AddList_arry数组类,自定义了数组结点addlist_arrynod结构,包括两个数据域:一个用来

    8、存储姓名的首字母,另一个用来存储联系人单链表的头指针!自定义联系人链表的结点MyContactsNode结构!3 详细设计和实现3.1 总体框架 显示英文选单 查询某人信息创建通讯录添加新的信息修改某人信息删除某人信息显示所有信息退出选单 图3.1 总体框架3.2 各个模块及功能3.21 主要模块(1)主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。(2)Menu()的功能是:显示英文提示选单。 (3)Quit()的功能是:退出选单。(4)Create()的功能是:创建新的通讯录。(5)Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。 (6)SearchA

    9、ndList的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。(7)AlterByName()的功能是:根据用户输入的姓名修改该人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。否则显示输入新的联系人信息!(8)DeleteByName ()的功能是:根据用户输入的姓名,删除该人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。(9)ListAll()的功能是:显示通讯录中的所有记录。 其中(2)Menu(),(3)Quit(),(4)Create(),(5)Add()(6)Find()(

    10、7)Alter(),(8)Delete(),(9)List()(1)main()3.22 辅助模块(1)bool Examine_name(char*name_in);/检测输入的姓名是否正确!(2)bool Examine_sex(int sexnum);/检测输入的性别是否正确!(3)bool Examine_phm(char*phm);/检测输入的移动电话号码是否正确!(4)bool Examine_phgd(char*phgd);/检测输入的固定的电话号码是否正确!(5)bool Examine_add(char*add);/检测输入的地址是否正确!3.3 算法实现及流程图 (1)Ex

    11、amine_name ()函数bool AddList_arry:Examine_name(char*name_in)char temp=*name_in;int count=0;while(temp!=0)count+;name_in+;temp=*name_in;if(count10)return false;elsereturn true;(2) Examine_phgd ()函数bool AddList_arry:Examine_phgd(char*phgd)char temp_phgd=*phgd;int count=0;while(temp_phgd!=0)count+;if(te

    12、mp_phgd9)return false;phgd+;temp_phgd=*phgd;if(count12)return false;elsereturn true;(3) Search ()函数算法实现:MyContactsNode* AddList_arry:Search(char*nm_q)MyContactsNode*resultnod_search=FindByName(nm_q)-next;while(resultnod_search!=NULL)/if(strcmp(resultnod_search-name,nm_q)=0)return resultnod_search;re

    13、sultnod_search=resultnod_search-next;/向后移动一个指针的位置!return NULL;/没有找到,返回NULL! (4)AlterByName ()函数 算法实现:bool AddList_arry:AlterByName(char*nm_al)MyContactsNode*resultnod_alter=Search(nm_al);/查找相应的结点,没找到则返回NULL!if(resultnod_alter=NULL)return false;/输入的要更改的结点未找到!cout请输入新的信息!name)resultnod_alter-ReplaceNo

    14、de(resultnod_new);/替换结点!return true;/更改成功了!elseif(DeleteByName(nm_al)MyContactsNode*resultnodofhead_new=FindByName(resultnod_new-name);if(resultnodofhead_new-InsertHeadRear(resultnod_new)return true;return false;(5)DeleteByName ()函数 算法实现: bool AddList_arry:DeleteByName(char*nm_del)MyContactsNode*res

    15、ultnod_del=Search(nm_del);MyContactsNode*resultnodhead_del=FindByName(nm_del);int end=0;/指示没有被删除的!while(resultnodhead_del!=NULL&resultnod_del!=NULL)if(resultnodhead_del-next=resultnod_del)MyContactsNode*del=resultnod_del;/保存需要删除的结点! resultnodhead_del-next=resultnod_del-next;/把需要删除的结点的后继结点重新连接上!delet

    16、e del;/释放需要删除的结点!end=1;/指示有被删除的了!resultnodhead_del=resultnodhead_del-next;/指针后移!if(end=1)return true;elsereturn false;(6)ListAll ()函数算法实现:void AddList_arry:ListAll()MyContactsNode*temp;/链表结点指针!for(int i=0;inext;/获得数组中存放的头指针!while(temp!=NULL)temp-ListNode();/打印结点的信息!temp=temp-next;/temp向后移动!/就是因为这一句,

    17、才使得输出为空格的!/coutendl; (7)main()主函数算法实现: ShowMenue_Main();/显示主窗体!/实例化一个通讯录数组!AddList_arry mycontactslist;/下面用户进行选择,并执行对应的操作!/用户输入的姓名(全称)!char *nm_case2in=new char10;memset(nm_case2in,0,sizeof(char)*10);/用户输入得需要删除的姓名!char *nm_case6del=new char10;memset(nm_case6del,0,sizeof(char)*10);/供用户选择是否要显示通讯录中的所有的

    18、信息的!int choice_case3alter=1;/默认情况下是显示所有的结点信息的!/根据用户输入的姓名确定更改谁的信息!char*nm_case3alter=new char10;memset(nm_case3alter,0,sizeof(char)*10);/程序始终在执行着,直到用户输入7为止!while(1)/获取用户的编号的函数!int menuechoice=GetMenuSelct();/根据用户的选择执行不同的操作!switch(menuechoice)case 1:/调用list方法显示所有的联系人的信息!mycontactslist.ListAll();/显示所有的

    19、联系人的信息!cout信息显示完毕!endl;ClearP();break;/于2010年12月18号早上1:30测试完成!case 2:/调用FindByName方法查找联系人的信息,并打印出来!/nm_case2in=new char10;/申请十个字符空间的数组!cout请输入要查找人的姓名(全名)!nm_case2in;/输入要查找的人姓名!mycontactslist.SearchAndList(nm_case2in);ClearP();break;case 3:/调用Alter函数更改联系人的信息!并保存到通讯录结构中去!cout若您已经知道确切的姓名请选择0,否则选择1,以便显示

    20、所有联系人功能选择!choice_case3alter;if(choice_case3alter=1)mycontactslist.ListAll();/显示所有的联系人信息!coutnm_case3alter;if(mycontactslist.AlterByName(nm_case3alter)cout恭喜您更改成功!endl;elsecout对不起,您输入的联系人未找到,更改未成功!请确认姓名是否正确!endl;ClearP();break;case 4:cout-请输入您想添加的联系人的信息!endl;/调用Add函数添加联系人的信息到通讯录结构中!mycontactslist.Add

    21、();ClearP();break;case 5:ShowMenue_Main();break;case 6:/调用delete方法删除指定的结点!cout请输入要删除的姓名!(全称)nm_case6del;/总是忘记了对字符串进行输入!if(mycontactslist.DeleteByName(nm_case6del)cout删除成功!endl;elsecout很抱歉,未删除成功!endl;ClearP();break;case 7:exit(0);break;default:cout您输入的编号有误,请确保在17的范围内!endl;ClearP();break;/while循环循环一次!

    22、/主函数结束! 4 调试与操作说明运行程序,显示如下主菜单: 图4.1 主菜单选择3,查询信息,显示如下:图4.2 查询信息的界面 选择4,修改信息,显示如下:图4.3 修改信息界面 选择5,删除信息,显示如下:图4.4 删除信息界面总结 这次的课程设计来的正是时候,给自己敲了个警钟,课本上的知识固然重要但是没有实际的动手编程基础,想要编出好的程序来是不可能的!同时还让我认识到软件开发并不可怕,编写代码也不是高不可攀的,认认真真地把之前的逻辑设计、数据结构设计以及总体的框架搞清楚,并写成文档的形式才是最难得的,这也是程序设计的关键所在!虽然简单,但还是发现了几个可以完善的地方:(1)存储结构里

    23、本身设计就有问题,对于是二级汉字的姓名无法正确的存储!(2)删除某个联系人的信息时,当有很多相同名字的我时候无法一起删除,而是只能删除其中最近添加进去的那一个人,这也是不足的地方;(3)在查询的时候,如果要查询的人的名字在通讯录中同时有几个,由于该程序在查询的时候只是利用姓名是否相同来判断的,所以输出的信息就不会很准确,因此我们可以在姓名相同的情况下,再去判断电话号码是否相同,在电话号码又相同的情况下去判断地址是否相同,这样就可以输出正确的信息了。这些地方都可以进一步完善。优点之处在于不用把所有的联系人信息结点都放在一个单链表中,而且查询的效率也是比较的高的,还可以通过姓名的首字母进行检索,这

    24、是很有突破和符合实际的! 课程设计是一次锻炼我的实际操作的过程。我想对于每一次课程设计都要认真对待,这对于我的实际操作能力有很大的帮助。我相信通过以后认真的学习和坚持不懈的实践,我必将获得很大的收获。致谢 这次课程设计之所以能成功的完成,我要感谢淮阴工学院,计算机工程系提供的实践机会,是你们让你们给我一次表现自己,测试自己编程能力,发现自己不足之处的机会。还要感谢实验室人员提供了良好的实验环境,不仅是提供了课程设计所需要的机器,而且还有空调,让我们在炎热夏季中感到丝丝凉爽。 在实习中我遇到了许多困难,还好有几位老师及时指点我,告诉我哪里出了错误,该怎么去解决错误,不会因为几个问题浪费很多时间,

    25、是你们让我不再迷茫,在此我要感谢我的几位指导老师:张亚红老师,周海岩老师,周礼清老师,真的很感谢你们。当然还要感谢我的队友,我们遇到困难总是相互讨论,当我快放弃的时候,谢谢你给我支持。还要感谢我的同学,不管是认不认识的同学,只要在我需要他们的帮助的时候,他们都会伸出他们的双手,帮助我解决难题。我要感谢你们,我的同学,你们再一次让我认识到朋友的重要性,和团结就是力量的这句话的重要性。 最后我要感谢参考文献的原作者,是你们的帮助,让我能够顺利的完成这一次的实践,要不是你们的辛勤的劳动的成果及时指引了我,让我找到编写程序的方向,我可能再怎么努力,也不可能顺利完成这次实验。 以上所有的人,正是因为有了你们的帮助,我才能够从这次课程设计中学到新的知识,真正的提高了自身的水平,让我的知识得以充实,最后,再次感谢所有在这次课程设计中给予过我帮助和支持的人,谢谢!参 考 文 献1 殷人昆 .数据结构.清华大学出版社,2007.62 郑阿奇,丁有和,郑进.周怡君.Visual C+实用教程(第3版).电子工业出版社,2008053徐孝凯.数据结构实验.中央广播电视大学出版社,20014 郑莉,傅仕星.C+面向对象程序设计.清华大学出版社,2003.95 蔡子经,施伯乐. 数据结构教程. 复旦大学出版社,19846揣锦华.面向对象程序设计与VC+实践.西安电子科技大学出版社,200619


    注意事项

    本文(数据结构课程设计——通讯录.doc)为本站会员(星星)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922