编写一个通讯录管理程序。有一已存在的通讯录文件,数据内容为各联系人信息。每个联系人信息的组成部分为:姓名、电话号码和住址等个人基本信息,并假设已有两个联系人。要求完成以下功能:
(1)输出联系人:打开通讯录文件并显示其中的数据; (2)添加联系人;
(3)查找联系人:利用字符串函数,按“姓名”查找; (4)修改联系人:可以修改该联系人的任一个信息; (5)保存到文件:将操作结果保存到已存在的通讯录文件; (6)用子函数实现各个子功能。
1、需求分析
1.1项目背景:
随着科学技术的发展,计算机领域不断取得新的研究成果。计算机的应用越来越广泛.计算机知识也越来越普及.计算机的应用也不仅仅局限于科学研究方面.计算机的应用与我们的生活息息相关.在学校里学生的成绩管理系统,在日常生活中给我们带来很大方便的通讯录,都与计算机的管理系统有关,都是通过程序设计,开发,调试形成的管理系统.
1.2项目目的:
通讯录系统能方便用户迅速、准确的查找修改或者删除联系人信息,把各个联系人的信息以文档保存。本文介绍了简易通讯录管理系统在Microsoft Visual C++ 6.0环境下的实现过程:系统的分析,功能模块的设计,系统的调试和测试。此系统的主要管理的信息有:联系人的姓名,联系人的号码.本系统的主要功能有联系人的添加、删除、插入、显示.可以随时查找修改通讯录. 1.3 功能分析 1.1功能需求分析:
通讯录主要有一下模块:通讯录界面设计、添加联系人、删除联系人、预览信息、修改信息、查询联系人,其中姓名可以由字符和数字混合编码,电话号码可由字符和数字组成。
模块图
学生通讯录管理系统 新增联系人 删除联系人 查询联系人 修改联系人 保存数据 退出通讯录
系统流程图
开始 登陆主界面 否 选择1~6中任何数字 是 新增联系人 删除联系人 查询联系人 修改联系人 预览信息 退出通讯录 返回主页面 结束 1.4性能需求 1.41界面需求
系统的界面要求如下:
1) 界面内容:主题突出,站点定义、术语和行文格式统一、规范、明确,栏目、菜单
设置和布局合理,传递的信息准确、及时,内容丰富,文字准确,语句通顺,专用术语规范,行文格式统一、规范。
2) 导航结构:页面具有明确的导航指示,且便于理解,方便用户使用。
3) 技术环境:页面大小适当,能用各种常用浏览器以不同分辨率浏览;无错误链接和
空连接;采用CSS处理,控制字体大小和版面布局。
4) 艺术风格:界面、版面形象清新悦目,布局合理,字号大小适宜,字体选择合理,
前后一致,美观大方;动静搭配恰当,效果好;色彩和谐自然,与主题内容相协调。
1.42响应时间需求
系统应该及时地进行反应,反应的时间在2秒内。系统应能测出各种非正常情况,如与设备的通信中断,无法连接数据库服务器等,避免出现长时间的等待甚至无响应。
1.43可靠性需求
系统保证不死机,能正常运行,正确提示相关的内容。
1.44开放性需求
系统应十分具有灵活性,以适应将来功能扩展的需求。
1.45可扩展性需求
系统设计要求能够体现扩展性要求,以适应将来功能扩展的需求。
1.46系统的安全性需求
系统有严格的权限管理功能,各功能模块需要有相应的权限才可以进入。系统需要能够防止各类错误操作可能造成的数据丢失、破坏,同时防止用户非法获取相关的内容。
2、系统设计
2.1功能模块分析
2.11通讯录界面设计
主要功能是设计通讯录的界面,能够提示用户的实际操作等。我采用的是按照序号来实现相应的操作的,其中:1添加联系人2删除联系人3预览信息 4修改信息5查询联系人6 关闭通讯录
2.12通讯录添加联系人模块
主要功能是添加联系人模块,添加操作是根据用户的要求实现的。包括添加联系人的姓名、电话、QQ、邮编、地址,最后输入完成后,将提示新联系人信息已经保存好!!
2.13通讯录删除联系人模块
主要功能是删除不再需要的联系人。其中包括输入你要删除输入电话或电话号码如果没有的话,将提示:对不起!!!联系人中没你要找的人!!!如果找到, 则提示删除联系人的所有信息和这个人的信息已经从你的通讯录中删除的信息!
2.14通讯录预览信息模块
显示所有的联系人的信息,包括姓名、电话、QQ、邮编、地址,并提示所有联系人已经全部显示出来!!
2.15通讯录修改联系人模块
主要是修改联系人的信息,界面提示要输入需要修改的姓名或者电话号码,如果不正确,显示对不起,联系人中没有你找的人,如果正确,则显示出改联系人的所有信息,并提示根据下面提示修改信息,姓名、电话号码、QQ、邮编、地址。
2.16查询联系人模块
主要是查询联系人的信息,根据界面提示需要输入联系人的姓名或者电话号码,如果不存在联系人,则直接回到主页面,如果存在,则显示出所要查询人的姓名、电话号码、QQ、邮编、地址。
2.17关闭通讯录模块 提示谢谢使用!
3.1 程序总体结构
通讯录管理系统以菜单选择,通过调用各个函数,通过使用各种循环语句如while和do„while,实现不同的功能.不同函数处理后返回的只是一个头结点,但是通过头结点可以找到所有链表中的信息,只要有函数,找到头指针就能进行相应的操作,所以模块化的程序方便以后添加或者删除某些功能,程序中通过system(“cls”)清屏函数实现界面的转换,主函数中的循环保证程序不会退出,一个循环和一个清屏函数实现了主菜单和各子画面的切换(子函数)。这样的话各个子函数都可以调用一开始输入的数据,这样就实现了各个不同函数调用时都能使用整个系统连续起来了。作为一个通讯录管理系统,增加了文件的读入和写出功能,增加了程序的实用性。
3.2 主功能模块设计 3.21添加联系人的实现
通过输入联系人的如下信息:姓名、电话、QQ、邮编、地址,并把输入的信息保存对象的属性,创建或者打开文件,并向文件中写入新添加的联系人信息
添加联系人的具体代码:
//添加联系人
void book::add_person() { cout < void book::del_person() { ofstream outData(\"temp.txt\ ifstream inData(\"pbook.txt\ if (!outData || !inData) { cout < cout < bool flag = true; string str; while (inData >>name >>number) { getline(inData, str); if ((sign==name) || (sign==number)) { cout < cout < outData < ofstream out(\"pbook.txt\ } ifstream in(\"temp.txt\ if (!out || !in) { cout < out < cout < 3.24 修改联系人模块 只要输入来联系人的名字或者电话,进行文件的遍历查找到联系人的信息,而后进行修改。 void book::alter() { ofstream outData(\"temp.txt\ ifstream inData(\"pbook.txt\ if (!outData || !inData) { cout < cout <<\"姓名 :\" ; cin >>name; fflush(stdin); cout <<\"电话号:\"; cin >>number; fflush(stdin); cout <<\"QQ :\"; cin >>qq; fflush(stdin); cout <<\"邮编 :\"; cin >>post; fflush(stdin); cout <<\"地址 :\"; cin >>address; fflush(stdin); save_new(); flag = false; break; } outData < ofstream out(\"pbook.txt\ifstream in(\"temp.txt\ if (!out || !in) { cout < cout < 对文件进行遍历,将联系人的所有信息都显示出来。 void book::select() { ifstream inData(\"pbook.txt\ if (!inData) { cout < cout < string str1; bool flag = true; string str; while (inData >>name >>number) { getline(inData, str); if ((name==sign) || (number==sign)) { cout < 提示谢谢使用! 3.3 程序设计思想 通讯录系统是用面向对象的方法设计,在类中定义了一下方法:add_person(),del_person(),show_all(),alter(),select(),save_new()等方法和name, address, , number, post,qq属性来实现通讯录的各种操作。 3.4 类与函数的设计与实现:包括功能、名称、参数说明。 序号 1 2 3 4 5 功能 name Number address QQ Post 参数 string string string string string 长度 17 16 20 18 14 名称 名字 电话 地址 QQ 邮编 4、 运行与测试结果 4.1通讯录界面 包括添加联系人、删除联系人、预览信息、修改信息、查询联系人等功能,如下图: 4.2添加联系人 4.3删除联系人 若存在联系人,则 若不存在联系人,则 4.4预览信息 4.5修改信息 若不存在联系人,则会自动退出修改的子函数 若存在联系人,则 4.6查询联系人 4.7关闭通讯录 5、小结 这是我上大学学习程序设计以来设计语言结果的大检查.自己动手自己发现问题,解决问题,发现自己的很多不足.平时没有掌握好的知识在这次设计中彻底暴露出来,经过不断的思考,不断查阅资料,不断上机运行,解决其中大部分问题,当然还有一些问题没有解决,我相信在以后的学习中能够解决它们.但是收获还是不小的.我不仅对C++的操作有了进一步的掌握,还掌握了程序设计的风格及其注释的格式. 当我选择通讯录这个题目时,一开始想用链表及大量指针来完成.但是在慢慢琢磨之后,觉得不一定要用链表,于是改变了编程思路.当然还有不少文件的读写问题,不过通过不断测试之后解决了.另外一点要说的就是这个程序拥有了很多的循环,因此对循环的控制要十分小心. 另外通讯录系统如果只是将结果在屏幕显示后就不存在了,就没有意义了,于是我添加了文件的读出和写入的功能,写入时如果没有目标文件,则系统会自动在目标文件夹里生成一个文件用来储存用户数据,该文件类型可以按用户要求生成,如txt文本文档或doc文档等。编写这次代码,在如何进行成绩排序上费了些力气,虽然老师讲过冒泡排序和选择排序,可是运用到单链表上就着实感到困难了,参考了老师PPT上的插入排序方法实现了,我调试程序的时候用无效数据测试时,没有用特殊的符号去测试,我用一些符号测试了我的程序,结果如我所料,程序出现了错误,我没有找到解决的方法。如果我能解决上述缺点,我想这个程序应该算是合格了。 不管怎么说,这次课程设计还是锻炼了我编写程序的能力,对以前学过的知识有了进一不的了解,特别是链表这一知识点。 经过这次课程设计,我体验到了自学的乐趣和成就感,我想我以后会更加热爱自己的专业,更加注重自学能力的培养,一定会把自己的专业学好. 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务