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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

设计一个电子通讯录程序课程设计.docx

1、设计一个电子通讯录程序课程设计长 沙 学 院课程设计说明书题目设计一个电子通讯录程序系(部)计算机科学与技术系专业(班级)姓名学号指导教师起止日期2010年1月4日到2010年1月8日程序设计基础课程设计任务书一、题目:设计一个电子通讯录程序二、目的与要求1目的:(1)使学生更加系统地理解和掌握C语言的基本概念、语言特点和编程技巧。(2)使学生应用C语言在程序设计方面得到系统锻炼,为将来VC进行软件开发打下良好基础。(3)提高学生建立程序文档、归纳总结的能力。2基本要求:(1)要求用C+模块化设计的思想来完成程序的设计;(2)培养上机动手能力,巩固分支结构和循环结构,应用函数和数据结构的知识。

2、(3)在VC+6.0环境中,学会调试程序的方法,及时查究错误,独立调试完成。(4)程序调试通过后,完成程序文档的整理,加必要的注释。3创新要求在基本达到题目要求外,进行创新设计,如界面优美、功能更加完善(如增加按生日先后排序的功能),用不同的cpp文件来实现等。4书写设计报告的要求设计报告中包含以下几个方面:1、设计题目2、总体设计1)用自顶而下或自底而上的方法,划分功能模块。2)确定各模块的算法3、根据算法画出流程图4、列出程序清单,并加以必要的注释5、写出调试程序的方法6、指出所设计问题的不足和改进方案5课程设计材料的装订顺序为:1)设计说明书封面 2)课程设计任务书3)课程设计鉴定表4)

3、目录5)设计报告书正文三、设计内容及其基本原理和设计方法1问题描述:电子通讯录功能如下:1.Read 2.Append 3.Delete 4.Search 5.Isert。说明:上图是电子通讯录的主菜单,利用它,将能够轻松地录入一个朋友的性别、出生日期、通讯地址、电话号码,而且它还提供了浏览、删除、检索和插入功能。 1)添加:在原有数据资料的基础上按顺序增加记录;2)删除:给出删除位置,执行删除后,查询是否被删除,显示通讯录的内容; 3)查询:给出姓名,列出该记录的信息。4)插入:给出插入位置,执行插入后,查询是否被插入,显示通讯录的内容;2解决方案:用线性表顺序表设计电子通讯录的结构,为了表

4、示较为复杂的数据内容,一般用结构这种数据类型,第一步就是在结构中定义所需要的各项信息。一般的通讯录都包括姓名,性别,出生年月,通讯地址和联系电话这几项,而在这几项中,出生年月又包括年份,月份和日期三项,通讯地址包括邮编和家庭地址二项,我们把这些联系较为紧密的内容又用单独的结构表示,这样就产生了电子通讯录的基本结构。四、主要技术问题的描述对于电子通讯录这样一张线性表来说,内容的录入和显示是必不可少的操作。可构造函数Data_Input() 完成了信息的录入工作:可以构造Data_Show()完成信息的显示工作。五、课程设计时间:18周六、课程设计的考核方式及评分方法1考核方式课程设计结束时,在机

5、房当场验收。1)教师提供测试数据,检查运行结果是否正确。2)回答教师提出的问题。3)学生提交课程设计文档(A4纸打印)2评分方法上机检查 :书面报告=7 :3,没有通过上机检查的其成绩直接记录不及格指导教师签名:日期:教研室主任签名: 日期:系主任签名: 日期:长沙学院课程设计鉴定表姓名学号专业班级设计题目设计一个电子通讯录程序指导教师指导教师意见:评定等级: 教师签名: 日期: 答辩小组意见:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名: 日期: 系(部)意见:系主任签名:日期:说明课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;摘要本程序是一个电子通讯录。用于实现

6、对好友通讯信息的记录以及基本的管理。本程序在完美实现改程序应有的功能的同时还增加了很多的人性化设计,比如温馨的提示。本程序在界面上改变了程序执行时的单一色彩的缺陷,做到了丰富多彩,美观大方!关键词:电子通讯录;人性化设计;美观1 设计内容与要求 52.设计说明 7 2.1 问题描述与功能设计7 2.2 算法与数据结构7 2.3 函数定义10 2.4 界面设计10 2.5 编码10 2.6 测试103 总结12参考文献 13附录A 源代码14附录B流程图271设计内容与要求我设计的是一个电子通讯录程序,用于管理通讯信息。本程序的要求分为“基本要求”和“创新要求”部分,具体如下:基本要求:(1)要

7、求用C+模块化设计的思想来完成程序的设计;(2)培养上机动手能力,巩固分支结构和循环结构,应用函数和数据结构的知识。(3)在VC+6.0环境中,学会调试程序的方法,及时查究错误,独立调试完成。(4)程序调试通过后,完成程序文档的整理,加必要的注释。创新要求在基本达到题目要求外,进行创新设计,如界面优美、功能更加完善(如增加按生日先后排序的功能),用不同的cpp文件来实现等。2.设计说明2.1 问题描述与功能设计本程序是一个电子通讯录,主要实现对朋友的通讯信息的记录和管理。能够轻松地录入一个朋友的性别、出生日期、通讯地址、电话号码,而且它还提供了浏览、删除、检索和插入功能。 1)添加:在原有数据

8、资料的基础上按顺序增加记录;2)删除:给出删除位置,执行删除后,查询是否被删除,显示通讯录的内容; 3)查询:给出姓名,列出该记录的信息。4)插入:给出插入位置,执行插入后,查询是否被插入,显示通讯录的内容。对于该问题我用线性表顺序表设计电子通讯录的结构,为了表示较为复杂的数据内容,一般用结构这种数据类型,第一步就是在结构中定义所需要的各项信息。一般的通讯录都包括姓名,性别,出生年月,通讯地址和联系电话这几项,而在这几项中,出生年月又包括年份,月份和日期三项,通讯地址包括邮编和家庭地址二项,我们把这些联系较为紧密的内容又用单独的结构表示,这样就产生了电子通讯录的基本结构。该通讯录功能如下清单1

9、.建立通讯录对通讯录进行录入,实现通讯录最基本的功能建立一个通讯录,进行信息的记忆。2.查看通讯录对已有的通讯信息进行查看,读取信息。3.查找联系人当通讯录中信息太多时,用户可以使用该功能进行对联系人的查找。方便快捷!4.修改联系人当联系人的信息有所更改、变动。用户可以使用该功能进行更改联系人信息。5.删除联系人如果联系人的信息因某种原因,用户不再需要,可以使用该功能删除!6.增加联系人该功能用于解决在建立通讯录后,要增加新的联系人信息。2.2 算法与数据结构本程序的算法可以根据程序要实现功能进行算法说明。1.建立通讯录建立通讯录是在函数person *create(int)中实现的。本质上是

10、一个链表的建立。首先我们需要三个指针person *head,*tail=NULL,*temp=NULL进行链表数据的保存。建立表头对指针head分配内存,head=new person。对分配内存是否成功进行判断if成功,进行数据的输入。else内存分配不成功,结束程序!然后进行表体的建立,因为要输入多次,而且次数是清楚地,所以我用for循环为主体结构,进行表体的建立及朋友信息的录入。2.查看通讯录查看通讯录实质是对链表的遍历。并且是在函数void outPut(person *curPer)中实现。循环次数不确定,我选择while循环对数据进行输出。while(curPer)及当curPe

11、r不为空(NULL)时,一直循环。当当前指针为空(curPer=NULL)时,跳出循环体。这样就实现了通讯录的查看功能。3.查找联系人本功能的实质就是传入一个关键词(及朋友姓名),然后在链表中进行查找。找到后对该节点进行输出。具体算法是:同时传入两个参数进入person *search(person *curPer,char x20)函数。如果curPer不为空,就进入while循环,if(strcmp(x,curPer-name)=0)就对curPer保存的数据进行输出。如果直到curPer=NULL还没有得到(strcmp(x,curPer-name)=0),那么就输出“无此朋友信息!”该

12、功能算法解说完毕!4.修改联系人本功能的实质和“查找联系人”的功能相同。就是传入一个关键词(及朋友姓名),然后在链表中进行查找。找到后对相应数据进行修改!首先传入两个参数到函数void revise(person *curPer,char x20)中。当curPer不为空时进入while循环体。if(strcmp(x,curPer-name)=0)就对curPer储存的信息进行编码如图2-2-1。当输入相应的代码,在if语句的控制下,就可以进行相应的数据的修改。5.删除联系人删除联系人,查找到该联系人,链表调整,删除指定节点!把删除联系人的姓名和表头同时传入函数person *del(pers

13、on *head,char x20),用while循环对链表进行条件遍历。当当前节点的姓名等于传入姓名,跳出循环体。然后对当前节点和前节点进行判断。如果当前节点为空。无此朋友信息。如果前节点为空,删除的是表头。其他情况删除为表体。最后返回head到主函数即可。6.增加联系人在增加联系人这一模块中,因为通讯录是无序的没必要排序,我利用的是加在链表的表尾的方法。把表头传入函数person *insert(person *head),然后定义三个指针person *newPer,*prePer=NULL,*curPer=head,用while循环找到表尾,再为newPer分配内存空间,if分配成功进

14、行数据的输入。else不成功,返回主函数。7.桌面输出本模块就是一个简单的cout语句,但经过输出控制做出了漂亮的桌面。8.退出系统本功能的算法很简单。适用于用户确认退出此程序的界面。If-else语句控制。当用户输入相应的代码。程序执行退出系统还是返回!数据结构表struct birthday int year; int month; int day;struct message char address30; int postCode;struct person char name20; char sex5; birthday birth; message mes; person *nex

15、t;序号成员名数据类型字段含义 1naneChar20名字2sexChar5性别3birthbirthday生日4mesmessage通讯信息5yearint年6monthint月7dayint日8addresschar30通讯地址9postCodeint通讯邮编2.3 函数定义我总共定义了八个函数分别用于1.建立通讯录2.查看通讯录3.查找联系人4.修改联系人5.删除联系6.增加联系人7.桌面输出8.退出系统函数名分别为person *create(int m)、void outPut(person *curPer)、person *search(person *curPer,char x2

16、0)、void revise(person *curPer,char x20)、person *del(person *head,char x20)、person *insert(person *head)、int close()、void tabletop()。2.4 界面设计本程序有一个用户桌面它包括所有的功能。当完成一个功能后按任意键可以返回用户桌面。本程序的界面加了颜色的。不再是单一的黑白二色。给用户视觉上的冲击。我还运用了windows.h中的清屏函数。让界面更加清爽。不是乱七八糟的输入输出数据。总的来说,我对本程序的界面设计很满意!2.5 编码system(pause);syste

17、m(cls);system(color 0D);在我的程序中大量用到system(pause)、system(cls)、system(color 0D)。这三个语句主要功能是实现对屏幕的处理,达到一种界面漂亮的效果不会再界面上积累大量的输入输出数据。system(pause)实现的是暂停,只有你按任意键时程序才会继续。system(cls)实现的是清屏功能,当一个功能执行完后,在该语句的控制下,屏幕上的老旧信息会被清理掉。system(color 0D)实现的是改变屏幕前景和背景色。2.6 测试测试的内容有以下信息:1.建立通讯录建立两个人的通讯录。姓名性别生日通讯地址通讯邮编张三男1990

18、1 1湖南省长沙市长沙大学100100李四男1991 7 1湖南省湘潭市湘潭大学1001012.查看通讯录3.查找联系人分别查找张三、刘小妹。(正常输出为张三可查到,刘小妹不可查到)4修改联系人修改张三生日为1990 11 15.删除联系人删除李四。6增加联系人姓名性别生日通讯地址通讯邮编刘小妹女1990 1 1湖南省长沙市长沙大学100100我对该程序进行以上测试。所有测试均正常。1.可以建立通讯录。2.可以查看联系人如图2-6-1。3.可以找到张三信息如图2-6-2,不可以找到刘小妹信息如图2-6-3。4.可以修改张三生日为1990 11 1。5可以删除李四信息。6.可以增加刘小妹信息。3

19、 总结在本次课程设计中我制作了一个电子通讯录。我在拿到该题目时我非常高兴。因为它的本质是一个链表的题目。而且解决的方法很简单,就是链表的建立、遍历、插入、删除、查找。只要把每个模块的代码写完用一些变量名把它们串联在一起就行了。很快我完成了所有模块的编写。调试只有小细节的问题。但是我的界面不好看。所以我查阅了我收藏的C+资料。我发现了windows.h这个头文件。我可以用里面的清平函数、改变颜色的函数和暂停函数。我对我的程序进行了改进。很明显我的程序美观多了。我还告诉了班上的同学。他们也用了,都说很好!在课程设计中我学会的是知识的融合,一学期所学的知识本是零零散散的一些碎片,在本次课程设计中得到

20、了融合,知识的交融,变零为整。还有大家在一起讨论题目的快乐,高度集中精力认真的干一件事。人只有在不断地思考才会有进步。这也是人生的意义!参考文献 1王挺.c+程序设计M。北京:清华大学出版社,2005.2钱能. C+程序设计教程M. 北京:清华大学出版社,2005:315-324,415-418,423.附录A 源代码Main.cpp#include#include#includestruct birthday int year; int month; int day;struct message char address30; int postCode;struct person char

21、name20; char sex5; birthday birth; message mes; person *next;#includembox.cppint main() int n,m; char x20; person *perOne=NULL; do system(color 0D);/改变背景颜色或者前景色 tabletop(); cinn; system(cls); if(n=1)/建立联系人 cout请要输入朋友的人数:m; if(m0) perOne=create(m); outPut(perOne); else if(n=2)/输出联系人 outPut(perOne); e

22、lse if(n=3)/查找联系人 cout请输入要查找人的姓名:x; search(perOne,x); else if(n=4)/修改联系人 cout请输入要修改人的姓名:x; revise(perOne,x); else if(n=5)/删除联系人 cout请输入要删除人的姓名:x; perOne=del(perOne,x); else if(n=6)/增加联系人 insert(perOne); else if(n=0)/进入关闭系统 n=close(); else/提示输入有误 cout对不起,您输入有误!请重新输入!endl; system(pause); while(n!=0);

23、cout谢谢使用本系统!祝您愉快!endl; return 0;mbox.cpp/+tabletop+/实现桌面的输出void tabletop() coutendlendl *endl *欢迎进入电子通讯录系统*endl *endl endlendl setw(38)请选择你要的服务endlendl setw(36)1.建立通讯录endlendl setw(36)2.查看通讯录endlendl setw(36)3.查找联系人endlendl setw(36)4.修改联系人endlendl setw(36)5.删除联系人endlendl setw(36)6.增加联系人endlendl setw

24、(36)0.退出系统 endlendl 请输入相应的代码:endl;/+create+/建立一个通讯录person *create(int m) person *head,*tail=NULL,*temp=NULL; /建立表头 head=new person; if(head=NULL) cout内存分配不成功!endl; return 0; else cout请输入第一位朋友信息:endl 姓名:head-name; cout性别:head-sex; cout生日:年(空格)月(空格)日head-birth.yearhead-birth.monthhead-birth.day; cout请

25、输入通讯地址:head-mes.address; cout请输入通讯邮编:head-mes.postCode; head-next=NULL; tail=head; system(cls);/清理屏幕 /建立表体 for(int i=0;im-1;i+) cout请输入第i+2位同学信息:endl; temp=new person; if(temp=NULL) cout内存分配不成功!endl; return 0; else cout姓名:temp-name; cout性别:temp-sex; cout生日:年(空格)月(空格)日temp-birth.yeartemp-birth.monthtemp-birth.day; cout请输

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

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