C++通讯录设计.doc

上传人:钟*** 文档编号:5428009 上传时间:2020-01-29 格式:DOC 页数:19 大小:104.58KB
返回 下载 相关 举报
C++通讯录设计.doc_第1页
第1页 / 共19页
C++通讯录设计.doc_第2页
第2页 / 共19页
C++通讯录设计.doc_第3页
第3页 / 共19页
点击查看更多>>
资源描述
.宜宾职业技术学院信息系统开发课题:简单通讯录系统设计小组成员:肖家磊、吴娟、张倩一、引言1、设计系统的目的随着当今世界经济的迅猛发展,通讯技术日益成熟,个人间的联系增加,个人对自己联系人信息的管理成为了一个重要的环节。与此同时,通讯录系统就产生了。设计这个系统的目的是为了设计一个能够便捷使用的电子通讯录,能够方便的存储信息,可以将这个系统应用到手机或其他电子设备中,方便存储联系人,为方便查找联系人的各种信息提供方便。用C+语言设计一个通讯录的程序,具有输入、输出、查找、删除、退出等功能,其中通讯录至少应该有以下数据项:姓名、地址和电话。2、实现功能:1) 输入功能:输入人员信息,并保存到文件中2)查询功能:能够根据电话精确查询人员信息3)列出通讯录中所有记录4)根据电话删除记录5)删除某一记录6)退出通讯录系统3、设计系统的意义电子通讯录系统没有使用纸张等,做到了环保,符合当今汉堡理念,这个系统使用户能够方便快捷的使用存储和查找等优势功能,且具有较高的安全性,能够有效保护用户联系人资料。二、系统需求及功能分析1、问题描述根据需求,该系统所应包含的信息有以下一些:通讯录的基本信息:姓名、地址、电话根据需求,该系统缩影实现的功能有以下一些:各种基本数据的录入。如通信录基本信息的录入。各种基本数据的修改。即允许对已录入的数据重新进行编译、修改。列如修改通讯录中张三的电话信息各种基本数据的删除。列如将张三的信息从通讯录中删除。基于各种数据的查询。列如输入张三电话,查询张三的姓名和地址。2、系统环境采用C+语言实现,开发环境为VC+6.03、运行要求能输入1000左右的通讯录信息界面友好,操作方便。三、该方案可行性分析及说明1、经济可行性:现在计算机的价格已经十分低廉,新能却有了长足的进步。而本系统的开发,为学校的工作效率带来了一个质的飞越,为此主要表现有以下几个方面:1) 本系统的运行可以代替人工进行许多繁杂的劳动;2) 本系统的运行可以节省许多资源;3) 本系统的运行可以大大的提高学校的工作效率;所以,本系统在经济上是可行的2、技术可行性本系统为一综合集成系统。通过上面的新系统技术方案的分析,本系统的综合集成开发在技术上是完全可行的。为方便的设计这个班级通讯录,我们选用的工具是VC+6.0软件,近年来随着因特网技术的飞速发展即用户需求的不断提升,VC+技术也不断推陈出新,使得VC+的功能越来越强大,能够提供的服务种类越来越繁多。本系统的开发我们小组特地对本校进行了深入的调查研究。学校拥有自己的网络及机房,并且各部门也有自己的电脑。并且我们对用户提出的要求也都能满足。综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,在技术上是可行的。3、使用维护可行性本系统用户目前最广泛的数据库开发工具记事本和PC 计算机及WINDOWS操作系统,一般工作人员均可熟练的使用和维护,不需要更多地技术操作人员维护。4、管理上的可行性主要是管理人员是否支持,现有的管理制度和方法是否科学,规章制度是否齐全,。原始数据是否正确等。规章制度和管理方法为系统的建设提供了制度保障。5、运行上的可行性本系统为一个小型的新生管理系统,所耗费的资源非常的小,学校的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。6、社会可行性为方便同学之间的联系,不需要付费就可以免费获取班级同学的联系方式。没有访问时间的限制可以随时随地查询班级同学的联系方式。本系统设计花费较少,容易设计。7、结论综上所述,此系统开发目标已明确,在技术、社会和经济等方面都可行,并且投入少、见效快。因此班级通讯录管理系统的开发是完全可行的。四、系统设计1、系统流程设计根据系统要求,设计如下的系统流程菜单显示用户输入操作按任意键退出判断用户选择的操作实行相应的操作退出2、系统模块设计根据系统的功能设计,主菜单包括这6个子菜单,1)创建,2)插入,3)删除,4)查找5)列出,6)退出。详细内容如下模块所示:学生通讯录通讯录信息退出通讯录信息查询通讯录信息删除通讯录信息录入功能选择主界面显示根据电话删除根据电话查询1)主界面显示:完成系统菜单的显示。2)功能选择:根据用户的选择,完成相应的功能。3)通讯录信息的录入:完成用户从界面输入通讯录,保存入系统的功能。4)通讯录信息删除:完成用户从界面输入需要的通讯录信息的姓名,并将其从系统中删除。5)通讯录信息的搜索:完成用户从界面输入通讯录的查询条件,在系统查询符合条件的通讯录信息,并在界面上显示的功能。6)通讯录信息的退出:完成用户从界面输入通讯录的信息,从系统界面中退出。3、数据测试表姓名电话地址肖家磊642243四川省自贡市牛佛镇吴娟658806四川省广安市武胜县张倩658581贵州省贵阳市张珊652679四川省宜宾市以上就是一个主要的设计思路,对于管理系统的设计,我们采用结构体类型函数的嵌套结构来完成一步一步的来实现整个系统的完善性和可行性。五、软件设计(源代码)#include #include #include #define MAX 1000 / 通讯录长度上限 using namespace std; class Information / 记录信息 public: long lPhone; / 电话 string strName; / 姓名 string strAddress; / 住址 public: Information(); Information(long,string,string); void insert(Information*); / 在通讯录中插入记录 void create(Information*); / 创建通讯录 void search(Information*); / 查询记录 void list(Information*); / 列出当前通讯录中所有信息 void del(Information*); / 删除记录 void menu(Information*); / 菜单 void quit(); / 退出通讯录系统 void print(Information); / 打印出一条记录 ; / / Information 构造函数 / Information:Information() / 初始化各信息 lPhone = 0; strName = ; strAddress = ; / / Information 构造函数 / Information:Information(long lPhone,string strName,string strAddress) / 初始化各信息 this-lPhone = lPhone; this-strName = strName; this-strAddress = strAddress; / / Insert函数 / / 在table中插入记录 void Information:insert(Information table) / 所需插入记录的信息 long lPhone; string strName; string strAddress; cout 请输入信息:nn; cout lPhone; cout strName; cout strAddress; int index = lPhone % MAX; / 以记录的电话为对象,进行哈希,方法为h(key) = key mod MAX if (tableindex.lPhone = 0) / table中index所指的地方是空位 / 插入 tableindex.lPhone = lPhone; tableindex.strName = strName; tableindex.strAddress = strAddress; else/ index所指的地方已其他记录被占用,发生冲突 for (int i = 1; i MAX;i+) / 解决冲突,采用开放定址法 int index1 = (index + i*i) % MAX;/ 二次探测再散列 int index2 = (index - i*i + MAX) % MAX; / 二次探测再散列 if (tableindex1.lPhone = 0) / table中index1所指的地方是空位 / 插入 tableindex1.lPhone = lPhone; tableindex1.strName = strName; tableindex1.strAddress = strAddress; break; if (tableindex2.lPhone = 0) / table中index2所指的地方是空位 / 插入 tableindex2.lPhone = lPhone; tableindex2.strName = strName; tableindex2.strAddress = strAddress; break; / for / else / / create函数 / / 创建通讯录,通过往table中插入记录实现 void Information:create(Information table) cout 开始创建通讯录.nn; while (true) insert(table); / 插入记录到table char YOrN; cout YOrN; if (YOrN = N) cout 添加信息完毕!nn; break; else if (YOrN != Y) cout 输入不合法!nn; return; / search函数 / / 在table中查找记录,查找关键项为lPhone(电话) void Information:search(Information table) long lNum; cout lNum; / 试探从table中获取查找信息 int index1 = lNum % MAX; if (tableindex1.lPhone != 0) if (tableindex1.lPhone = lNum) / 找到所查记录 cout 您要的通讯录资料为:nn; print(tableindex1); else int index2,index3; for (int i = 1;i MAX;i+) index2 = (index1 + i*i) % MAX; if (tableindex2.lPhone = lNum) / 找到所查记录 cout 您要的通讯录资料为:nn; print(tableindex2); break; index3 = (index1 - i*i + MAX) % MAX; if (tableindex3.lPhone = lNum) / 找到所查记录 cout MAX) / 没有找到 cout 对不起,没有您要的通讯录资料!nn; else / 没有找到 cout 对不起,没有您要的通讯录资料!nn; / / list函数 / / 列出table中当前所有记录 void Information:list(Information table) cout -以下为表中所有信息-nn; int flag = 0; for (int i = 0; i MAX; i+) if (tablei.lPhone != 0) flag+; print(tablei); if (flag = 0) / 空表 cout 当前通讯录中没有记录!nn; / / del函数 / / 在table中删除记录,以lPhone(电话)为关键项 void Information:del(Information table) cout lPhone; int flag = 0; for (int i = 0;i MAX;i+) / 试探查找所需删除记录 if (tablei.lPhone = lPhone) / 找到了 flag+; / 表示所需删除记录在通讯录中 / 删除 tablei.lPhone = 0; tablei.strName = ; tablei.strAddress = ; if (flag = 0) / 没有找到 cout 通讯录中不存在此记录!nn; / / menu函数 / / 菜单 void Information:menu(Information table) cout -欢迎进入通讯录系统-nn; cout create - 创建通讯录nn; cout insert - 插入记录nn; cout delete - 删除某一记录nn; cout list - 列出通讯录中所有记录nn; cout search - 根据电话查询记录nn; cout quit - 退出nn; cout strMenu; int flag = 0; / 判断是否进了合法输入 if (strMenu = create) flag+; create(table); if (strMenu = insert) flag+; insert(table); if (strMenu = delete) flag+; del(table); if (strMenu = list) flag+; list(table); if (strMenu = search) flag+; search(table); if (strMenu = quit) flag+; quit(); if (flag = 0) cout 输入不合法!nn; / / quit函数 / / 退出通讯录 void Information:quit() return; / / print函数 / / 打印出记录record的信息 void Information:print(Information record) cout 电话: record.lPhone t 姓名: record.strName t 住址: record.strAddress endl endl; / / main函数 / int main() Information tableMAX; Information obj; char YOrN; while (true) obj.menu(table); / 进入通讯录系统 cout YOrN; if (YOrN = Y) break; else if (YOrN != N) cout 输入不合法!nnn; return 0; 六、测试情况运行程序,首页显示如下1)创建通讯录人员:输入create创建通讯录,弹出电话号码、姓名、住址,并填入相关信息,一个简单的学生信息录入完毕。运行后结果如下:当一个同学的信息录入完毕后,窗口会弹出“你想要继续添加信息吗?”输入Y后,窗口会弹出“请输入信息 电话、姓名、地址,”输入完毕后,窗口会再一次弹出“你想要继续添加信息吗?”运行结果如下图所示:2)插入通讯录人员记录:创建完成通讯录后,想要再录入信息,可以输入insert就可以插入信息记录,程序也和创建通讯录一样,运行结果如下图所示:3)删除通讯录人员记录:想要删除某个同学的信息,可以手动输入delete,窗口弹出“请输入你要删除记录的电话”手动录入后,窗口会弹出“你想要退出吗?”输入Y后,任意一个键按下,窗口就会消失。如果输入N,则重新进入通讯录系统。运行图如下图所示:4)列出通讯录中所有人员记录:在通讯录系统界面,请选择list列出通讯录中所有记录,系统根据所创建的通讯录,调出所有同学的电话号码、姓名、地址等信息。具体信息如下图所示:5)根据电话查询记录:在请选择区域输入search,系统会弹出“请输入您要查找的电话号码”,输入电话号码后,系统会调取以前建好的通讯录记录,显示“您要的通讯录资料为”。结果如下图所示:6)显示搜索查询的记录:显示完毕后,系统会弹出“你想退出吗?”如果输入N,则返回主菜单,否则按任意键,退出该系统。运行结果如下图所示:7)退出通讯录系统:输入quit系统弹出“您想要退出吗?”输入Y系统显示“Press any key to continue”按任意键退出改程序,运行如下图所示:七、总结通过设计通讯录系统,我体会到很多,完成一个程序的设计必须要有同伴的支持和合作,必须要跟同伴讨论商量,共同努力才有可能设计出一个好的程序,遇到困难不能轻易放弃,在编这个程序的时候遇到了很多难题,后来在和同学的商量和帮助之下终于将遇到的难题一一解决,我们深深体会到遇到难题不要轻易放弃,还有要多借鉴别人的经验,多阅读一些书籍,编写程序的时候要细心,一点点的错误程序就可能导致程序编译失败,所以要做到一丝不苟。我们在这次实训中这个程序让我巩固了C+所学的基本课程,提高了C+语言编程的综合应用能力以及C+语言程序的编译、调试方式。不仅如此,它让我掌握到了C+语言中的基本数据输入、输出;熟练使用C+语言中的三种基本结构的使用,使用数组和函数调用;还有学习与熟练使用C+语言的指针和结构体。该实训的过程既漫长又艰苦,因为我们花了很多的时间去完成,在这个过程中是一个艰苦的过程,我们克服了困难。而经过小组讨论和分析之后,我们大概清楚了作此项目的基本过程,首先先编写程序并调试程序,创建联系人,插入联系人,显示所有联系人的信息,查找联系人信息,删除联系人的信息,退出系统的头文件和源文件。经过小组的努力,我们终于完成了这个项目。课程设计是培养我们的综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日异月新,而我们作为学生需要跟上时代的发展,而这就要我们通过这些实训来锻炼自己了。 通过学习,使我们小组人员对C+编程语言有了更进一步的认识和了解,要想学好C+重在实践才能更好的编写程序,通过实践,发现我们存在很多的不足,首先就是对C+程序语言的一些标准函数还不够了解,还有就是对函数的调用的正确使用不够熟悉,还有对变成过程中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。用C+语言做项目,我们收获的心得颇多,的确,从理论到实践需要花费很多时间。可以说是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上没有学到过的知识。通过哦这次课程设计使我懂得了理论和实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,同时在设计中发现自己的不足之处,对以前所学过的知识理解不够深刻,掌握不够牢固,通过这次课程设计之后,一定把以前所学到过的知识重新温故。精选word范本!
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!