- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
合肥学院
计算机科学与技术系
课程设计报告
2009~2010学年第二学期
课程 程序设计语言Ⅱ课程设计 课程设计名称 通讯录管理程序 学生姓名 李元元 学号 0904032042 专业班级 网络工程(2) 指导教师 ? ?何立新
1)添加:即增加一个人员的记录到通信录中
2)删除:即将一个人员的信息从通讯录中删除
3)显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示
4)修改:可修改一个人员的除姓名外其它信息
5)查询:可根据姓名查找某人员的相关信息,若找到显示其姓名、地址、电话号码和邮政编码
6)存储:即将通讯录的所有信息保存在一个文件中
7)装入:即将文件中的信息读入程序
二、主要算法的设计
由问题的分析可知,要想实现整个程序的功能,必须要首先创建一个类名为Cpersons,类中私有成员应包括人员的姓名name、地址address、电话号码number和邮政编码post;根据程序的要求可以将实现程序功能的所有函数作为类的成员函数,因此在类的公有成员中包括联系人信息的构造函数Cpersons()、添加联系人的函数void add_person()、删除联系人的函数void del_person()、显示所有联系人的函数void show_all()、修改联系人的信息的函数void alter()、查询联系人的信息的函数void select()和存储联系人的信息的函数void save_new。为了使整个程序运行得有条理、更清晰,整个系统我采用了菜单的方式运行。程序类的声明结束了之后,系统开始执行每个子函数,一开始是首页,即整个程序运行的基础菜单;接下来是联系人的构造函数Cpersons(),它也是类的一个成员函数,构造函数名与类名相同,而且没有返回值,它的作用就是在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态;然后是添加联系人函数void add_person(),根据系统的提示依次输入新增联系人的姓名、电话、邮政编码和地址,即完成新增联系人信息的添加;接下来是删除已有联系人信息的函数void del_person(),这里定义了ofstream输出流,ofstream类支持磁盘文件输出,这里我需要一个只输出的磁盘文件,因此构造了一个ofstream类的对象。在打开文件之前或之后可以指定ofstream对象接受文本模式数据。很多的格式化选项和成员函数可以用于ofstream对象,包括我在程序中用到的基类ios的所有功能。我也使用了ifstream输入流,ifstream只不过是从文件里读取数据,并输入到内存的某些变量中而已。然后根据提示输入要删除的联系人的姓名或者是电话号码,程序还考虑了通讯录中没有所要删除的联系人的情况,完成删除后关闭文件即完成删除函数的功能;接下来还有显示所有联系人的函数void show_all(),还要考虑如果通讯录中没有联系人的情况;还有修改联系人的函数void alter(),根据所要修改联系人的姓名和电话号码即可对联系人的信息进行修改,其中还使用了链表,如果通讯录中没有所要修改的联系人,则系统会出现相应的提示;还有查询联系人信息的函数void select(),仍然是根据联系人的姓名或电话号码来查询,如果通讯录中没有所要查询的联系人,则系统也会出现相应的提示;最后一个是存储联系人的函数void save_new,主要是将所有联系人的信息保存起来。最后为了使整个程序运行起来更加清晰,我又使用了swtich语句,这样整个程序看起来就更加地有条理。整个程序的算法设计大概就是这样。
三、调试过程
程序编写完成以后,调试中出现了不少的错误如下:
整个程序开头没有使用操作符的头文件,因此在程序运行中出现了系统性的错误,在程序开头加上”#include “iomanip””的头文件,这一错误便没有了。
一开始我不想用到链表,但是通讯录中并不知道将要存储多少联系人的信息,元素个数不确定,所以必须要使用到链表动态申请内存并建立元素之间的线性关系。后面用到了链表,但是前面没有声明,导致程序运行过程中出现了错误,我觉得双向链表可能更加方便一些,对双向链表的具体使用我上网查了一下,因此在程序中用到了双向链表,但是用得不太恰当,导致还有错误,我又找了很多双向链表的知识,改了很多次。最后在类声明之后使用了双向链表,双向链表中的数据域是一个记录类,创建了“struct record”即可。
在删除联系人的子函数void del_person()中,我没有考虑到如果通讯录中没有所要删除的联系人的情况。于是我又写了几条语句,将通讯录中没有所要删除的联系人的情况添加了进去。
在修改联系人的函数void alter()中,也是没有考虑到通讯录中没有所要修改的联系人的情况,添加了几条
您可能关注的文档
最近下载
- 高中语文《雷雨》-PPT市公开课一等奖省赛课获奖PPT课件.pptx VIP
- 2025年社工300题目题库(301道) .pdf VIP
- 部编人教版语文小学五年级下册第四单元主讲教材分析解读课件.pptx
- 【行业标准】QBT 1338-2012 家具制图.pdf
- 2025年广东社工招聘笔试题目及答案.docx VIP
- 重大版小学英语六年级下册英语第二单元测试题.pdf VIP
- 部编版小学五年级下册语文二单元教材分析解读主讲课件.pptx
- 物流管理专业毕业实习报告.docx VIP
- 2024年度组织生活会党支部查摆问题及整改措施.docx VIP
- 《工程水文地质》项目5.3河流地质作用及冲积土.pptx
文档评论(0)