论文数据结构课程设计毕业设计《学生信息管理系统设计》

上传人:r****d 文档编号:139173876 上传时间:2022-08-22 格式:DOCX 页数:27 大小:185.35KB
返回 下载 相关 举报
论文数据结构课程设计毕业设计《学生信息管理系统设计》_第1页
第1页 / 共27页
论文数据结构课程设计毕业设计《学生信息管理系统设计》_第2页
第2页 / 共27页
论文数据结构课程设计毕业设计《学生信息管理系统设计》_第3页
第3页 / 共27页
点击查看更多>>
资源描述
1 需求分析 设计任务要求通讯录系统主要包含以下要求:(1)设计一个学生通讯录管理系统,每个学生数据信息包括:姓名、 号码、qq、 和地址;(2)创建学生数据类型为结构体并以磁盘文件保存;(3)能读取磁盘文件并显示输出学生的相关信息;(4)能按姓名或 等多种方式进行学生信息查询;(5)能查询、添加、修改和删除学生通讯录。1.2 系统功能需求分析系统主要包含以下主要功能:(1)查询通讯录记录;(2)添加通讯录记录;(3)修改通讯录记录;(4)删除通讯录记录;(5)关闭通讯录。2 概要设计 数据类型本系统中所有变量都定义为字符串型,学生通讯录数据类型定义为结构体类型。然而为了更加方便,添加了抽象数据类型类book,再私有继承了以结构体存储的学生数据。2.2 主程序及各程序层次关系以下是系统功能模块关系图,主要包含查询、添加、修改、删除联系人和关闭系统等功能。另外还提供了键盘式选择菜单实现功能选择。图2.1 系统功能模块关系图查询联系人:可以选择用姓名和 两种方式查询添加联系人:可以添加通讯录记录,依次输入姓名、 、qq、 和地址修改联系人:输入欲修改联系人姓名后,再依次输入修改姓名、 、qq、 和地址即可完成修改删除联系人:输入欲删除联系人的姓名后,会自动删除该联系人的记录内容关闭系统:选择相关操作进行系统正常关闭,保存有效数据记录3 详细设计 实现数据类型(1)以字符串类型定义通讯录中学生数据信息变量:string name;/姓名 string number;/ 号码 string qq;/QQ号 string post;/ string address;/地址(2)学生通讯录数据类型定义为结构体存储:struct inf string name;/姓名 string address;/地址 string number;/ 号码 string post;/ string qq;/QQ号datatype;(3)实现类book私有继承结构体inf:class book:private infpublic: book();/默认构造函数 int face();/首页 void add_person();/添加联系人 void del_person();/删除联系人 void fix();/修改信息 void find();/查询联系人 void save_new();/保存新增加的联系人; 实现各操作模块的功能(1)主函数的实现:int main() int choose; book b; while (choose = b.face() switch (choose) case 1: b.find();/查询联系人 break; case 2: b.add_person();/添加联系人 break; case 3: b.fix();/修改信息 break; case 4: b.del_person();/删除联系人 break; case 5: cout endl 谢谢使用! endl endl; exit(0);/退出系统 break; default: break; return 0;(2)各操作模块函数的实现:void book:add_person()/添加联系人 cout endl 请根据提示输入信息 endl endl coutname; cout number; cout qq; cout post; cout address; save_new(); cout endl endl 新联系人信息已经保存好! endl endl; system(pause);/出现中文的显示:按任意键继续。void book:del_person()/删除联系人 ofstream outData(temp.txt, ios:out); ifstream inData(pbook.txt, ios:in); if (!outData | !inData) cout endl 对不起!找不到文件! endl; system(pause); return; string s; cout endl s; string str; bool flag = true; while (inData name number) getline(inData, str); if (s=name) | (s=number) cout endl 你想删除的联系人: endl endl;cout setiosflags(ios:left) setw(17) 姓名 setw(16) 号码 setw(18) QQ setw(14) setw(20) 地址 endl; cout setiosflags(ios:left) setw(17) name numberstr endlendl; flag = false; break; outData setiosflags(ios:left) setw(17) name/将不删除的信息放到 number qqstr endl; if (flag) cout endl 对不起!联系人中没你找的人! endl endl; else/将的数据复制到,直接覆盖要删除的信息,达到删除效果 while (getline(inData, str) outData str endl; outData.close(); inData.close(); ofstream out(pbook.txt, ios:out); ifstream in(temp.txt, ios:in); if (!out | !in) cout endl 对不起!不能打开文件! endl endl; system(pause);return; while (getline(in, str) out str endl; out.close(); in.close(); cout endl 该联系人信息已从通迅录中删除! endl endl; system(pause); void book:fix()/修改信息 ofstream outData(temp.txt, ios:out); ifstream inData(pbook.txt, ios:in); /if (!outData | !inData) cout endl 对不起!找不到文件! endl; system(pause); return; string s; cout endl s; bool flag = true; string str; while (inData name number) getline(inData, str); if (s=name) | (s=number) cout endl 你想修改的联系人: endl endl;cout setiosflags(ios:left) setw(17) 姓名 setw(16) 号码 setw(18) QQ setw(14) setw(20) 地址 endl; cout setiosflags(ios:left) setw(17) name number str endl; cout endl 请根据下面提示修改信息 : endl; cout name; cout number; cout qq; cout post; cout address; save_new(); flag = false; break; outData setiosflags(ios:left) setw(17) name number str endl; if (flag) cout endl 对不起!联系人中没你找的人! endl endl; else while (getline(inData, str) outData str endl; outData.close();inData.close(); ofstream out(pbook.txt, ios:out); ifstream in(temp.txt, ios:in); if (!out | !in) cout endl 对不起!不能打开文件! endl endl; system(pause);return; while (getline(in, str) out str endl; out.close();/ in.close(); cout endl 该联系人已在通迅录中修改! endl endl; system(pause); void book:find()/查询联系人 ifstream inData(pbook.txt,ios:in); if (!inData) cout endl 对不起!文件找不到! endl; system(pause); return; string s; cout endl s; bool flag = true; string str; while (inData name number) getline(inData, str); if (name=s) | (number=s) cout endl 你要查找的联系人是: endl endl;cout setiosflags(ios:left) setw(17) 姓名 setw(16) 号码 setw(18) QQ setw(14) setw(20) 地址 endl; cout setiosflags(ios:left) setw(17) name numberstr endlendl; flag = false; break; if(flag)coutendl该联系人不存在!endlendl; system(pause);void book:save_new()ofstream f(pbook.txt, ios:app); if (!f) cout endl 对不起!打开文件失败! endl endl; system(pause);return; f setiosflags(ios:left) setw(17) name setw(16) number setw(18) qq setw(14) post setw(20) address endl; f.close();4 调试分析1.在程序的调试过程中遇上了文件存储数据的正确读取错误,但经过不断查问和查阅相关书籍后,根据调试提示错误,解决了所有错误。通过文件存储学生数据信息,使得读取信息操作更加方便、省事;2.在执行操作时,是根据文件搜索算法,去获取学生数据信息。使得在时间和空间上读取数据都要更加快捷、省事。其时间复杂度为O();3.经过这一次的系统设计,使我认识到了实践的重要性,只有实践多了才能把知识学得好,学得牢。同时让我对数据结构得到了进一步的学习,以及对C+语言的学习得以提高,最后也大部分掌握了文件存储数据的相关操作。5 用户使用手册1.本程序的运行环境为WINDOWS操作系统,运行软件为Microsoft Visual C+;2.运行程序后即输出提示信息,由于在定义变量时已将需要输入的定义为string型变量,所以输入时需根据提示信息按要求输入;3运行程序后屏幕上会出现通讯录主菜单,然后根据需要选择1-5序号的操作,输入选定序号后,按Enter键,程序就会执行相关操作。比如输入序号1,再按Enter键,程序就会运行查询联系人的代码操作,然后再根据提示进行查询工作即可;4.当以上操作完成后,程序将输出“按任意键继续.”此时,查询联系人工作的程序运行完毕。6 测试数据和数据结果(1)输入操作序号:2依次输入:湖南长沙输出结果如下所示:(2)输入操作序号:1输入姓名:wen;(或 号码:)输出结果如下所示:(3)输入操作序号:3输入姓名:wen重新依次输入要修改信息:海南万宁输出结果如下所示:(4)输入操作序号:4输入姓名:wen输出结果如下所示:(5)输入操作序号:5输出结果如下所示:参考文献1 严蔚敏,吴伟民. 数据结构(C语言版). 北京:清华大学出版社,1997.042 张晓莉,罗文劼,刘振鹏等。数据结构与算法。北京:机械工业出版社,3 王宏生,宋继红。数据结构。北京:国防工业出版社,4 孙淑霞,肖阳春,魏琴等.C/C+程序设计教程(第2版)。北京:电子工业出版社,5 谭浩强。C+程序设计。北京:清华大学出版社,2004,06附录 源程序清单#include #include #include #include #include using namespace std;struct inf string name;/姓名 string address;/地址 string number;/ 号码 string post;/ string qq;/QQ号datatype;class book:private infpublic: book();/默认构造函数 int face();/首页 void add_person();/添加联系人 void del_person();/删除联系人 void fix();/修改信息 void find();/查询联系人 void save_new();/保存新增加的联系人;/首页int book:face()system(cls);/清楚屏幕 cout endlendl; cout * endl # # endl # 通 迅 录 # endl # # endl # 1. 查询联系人. # endl # # endl # 2. 添加新联系人. # endl # # endl # 3. 修改联系人. # endl # # endl # 4. 删除联系人. # endl # # endl # 5. 关闭系统. # endl # # endl * endl endl choose; return choose;/添加联系人void book:add_person() cout endl 请根据提示输入信息 endl endl name; cout number; cout qq; cout post; cout address; save_new(); cout endl endl 新联系人信息已经保存好! endl endl; system(pause);/出现中文的显示:按任意键继续。/删除联系人void book:del_person() ofstream outData(temp.txt, ios:out); ifstream inData(pbook.txt, ios:in); if (!outData | !inData) cout endl 对不起!找不到文件! endl; system(pause); return; string s; cout endl s; string str; bool flag = true; while (inData name number) getline(inData, str); if (s=name) | (s=number) cout endl 你想删除的联系人: endl endl;cout setiosflags(ios:left) setw(17) 姓名 setw(16) 号码 setw(18) QQ setw(14) setw(20) 地址 endl; cout setiosflags(ios:left) setw(17) name numberstr endlendl; flag = false; break; outData setiosflags(ios:left) setw(17) name/将不删除的信息放到 number qqstr endl; if (flag) cout endl 对不起!联系人中没你找的人! endl endl; else/将的数据复制到,直接覆盖要删除的信息,达到删除效果 while (getline(inData, str) outData str endl; outData.close(); inData.close(); ofstream out(pbook.txt, ios:out); ifstream in(temp.txt, ios:in); if (!out | !in) cout endl 对不起!不能打开文件! endl endl; system(pause); return; while (getline(in, str) out str endl; out.close();/ in.close(); cout endl 该联系人信息已从通迅录中删除! endl endl; system(pause); /修改信息void book:fix() ofstream outData(temp.txt, ios:out); ifstream inData(pbook.txt, ios:in); /if (!outData | !inData) cout endl 对不起!找不到文件! endl; system(pause); return; string s; cout endl s; bool flag = true; string str; while (inData name number) getline(inData, str); if (s=name) | (s=number) cout endl 你想修改的联系人: endl endl;cout setiosflags(ios:left) setw(17) 姓名 setw(16) 号码 setw(18) QQ setw(14) setw(20) 地址 endl; cout setiosflags(ios:left) setw(17) name number str endl; cout endl 请根据下面提示修改信息 : endl; cout name; cout number; cout qq; cout post; cout address; save_new(); flag = false; break; outData setiosflags(ios:left) setw(17) name number str endl; if (flag) cout endl 对不起!联系人中没你找的人! endl endl; else while (getline(inData, str) outData str endl; outData.close(); inData.close(); ofstream out(pbook.txt, ios:out); ifstream in(temp.txt, ios:in); if (!out | !in) cout endl 对不起!不能打开文件! endl endl; system(pause); return; while (getline(in, str) out str endl; out.close();/ in.close(); cout endl 该联系人已在通迅录中修改! endl endl; system(pause); /查询联系人void book:find() ifstream inData(pbook.txt,ios:in); if (!inData) cout endl 对不起!文件找不到! endl; system(pause); return; string s; cout endl s; bool flag = true; string str; while (inData name number) getline(inData, str); if (name=s) | (number=s) cout endl 你要查找的联系人是: endl endl;cout setiosflags(ios:left) setw(17) 姓名 setw(16) 号码 setw(18) QQ setw(14) setw(20) 地址 endl; cout setiosflags(ios:left) setw(17) name numberstr endlendl; flag = false; break; if(flag)coutendl该联系人不存在!endlendl; system(pause);void book:save_new() ofstream f(pbook.txt, ios:app); if (!f) cout endl 对不起!打开文件失败! endl endl; system(pause); return; f setiosflags(ios:left) setw(17) name setw(16) number setw(18) qq setw(14) post setw(20) address endl; f.close();int main() int choose; book b; while (choose = b.face() switch (choose) case 1: b.find();/查询联系人 break; case 2: b.add_person();/添加联系人 break; case 3: b.fix();/修改信息 break; case 4: b.del_person();/删除联系人 break; case 5: cout endl 谢谢使用! endl endl; exit(0);/退出系统 break; default: break; return 0;能人士的50个习惯 在行动前设定目标 有目标未必能够成功,但没有目标的肯定不能成功。著名的效率提升大师博思.崔西説:“成功就是目标的达成,其他都是这句话的注释。”现实中那些顶尖的成功人士不是成功了才设定目标,而是设定了目标才成功。 一次做好一件事 著名的效率提升大师博思.崔西有一个著名的论断:“一次做好一件事的人比同时涉猎多个领域的人要好得多。”富兰克林将自己一生的成就归功于对“在一定时期内不遗余力地做一件事”这一信条的实践。 培养重点思维 从重点问题突破,是高效能人士思考的一项重要习惯。如果一个人没有重点地思考,就等于无主要目标,做事的效率必然会十分低下。相反,如果他抓住了主要矛盾,解决问题就变得容易多了。 发现问题关键 在许多领导者看来,高效能人士应当具备的最重要的能力就是发现问题关键能力,因为这是通向问题解决的必经之路。正如微软总裁兼首席软件设计师比尔。盖茨所説:“通向最高管理层的最迅捷的途径,是主动承担别人都不愿意接手的工作,并在其中展示你出众的创造力和解决问题的能力。” 把问题想透彻 把问题想透彻,是一种很好的思维品质。只要把问题想透彻了,才能找到问题到底是什么,才能找到解决问题最有效的手段。 不找借口 美国成功学家格兰特纳说过这样的话:“如果你有为自己系鞋带的能力,你就有上天摘星星的机会!”一个人对待生活和工作是否负责是决定他能否成功的关键。一名高效能人士不会到处为自己找借口,开脱责任;相反,无伦出现什么情况,他都会自觉主动地将自己的任务执行到底。 要事第一 创设遍及全美的事务公司的亨瑞。杜哈提说,不论他出多小两种能力是:第一,能思想;第二,能按事情的重要程度来做事。因此,在工作中,如果我们不能选择正确的事情去做,那么唯一正确的事情就是停止手头上的事情,直到发现正确的事情为止。 运假公济私,那么你要尝试学习如何与不同的人相处,提高自己化 能人士的50个习惯 在行动前设定目标 有目标未必能够成功,但没有目标的肯定不能成功。著名的效率提升大师博思.崔西説:“成功就是目标的达成,其他都是这句话的注释。”现实中那些顶尖的成功人士不是成功了才设定目标,而是设定了目标才成功。 一次做好一件事 著名的效率提升大师博思.崔西有一个著名的论断:“一次做好一件事的人比同时涉猎多个领域的人要好得多。”富兰克林将自己一生的成就归功于对“在一定时期内不遗余力地做一件事”这一信条的实践。 培养重点思维 从重点问题突破,是高效能人士思考的一项重要习惯。如果一个人没有重点地思考,就等于无主要目标,做事的效率必然会十分低下。相反,如果他抓住了主要矛盾,解决问题就变得容易多了。 发现问题关键 在许多领导者看来,高效能人士应当具备的最重要的能力就是发现问题关键能力,因为这是通向问题解决的必经之路。正如微软总裁兼首席软件设计师比尔。盖茨所説:“通向最高管理层的最迅捷的途径,是主动承担别人都不愿意接手的工作,并在其中展示你出众的创造力和解决问题的能力。” 把问题想透彻 把问题想透彻,是一种很好的思维品质。只要把问题想透彻了,才能找到问题到底是什么,才能找到解决问题最有效的手段。 不找借口 美国成功学家格兰特纳说过这样的话:“如果你有为自己系鞋带的能力,你就有上天摘星星的机会!”一个人对待生活和工作是否负责是决定他能否成功的关键。一名高效能人士不会到处为自己找借口,开脱责任;相反,无伦出现什么情况,他都会自觉主动地将自己的任务执行到底。 要事第一 创设遍及全美的事务公司的亨瑞。杜哈提说,不论他出多小两种能力是:第一,能思想;第二,能按事情的重要程度来做事。因此,在工作中,如果我们不能选择正确的事情去做,那么唯一正确的事情就是停止手头上的事情,直到发现正确的事情为止。 运假公济私,那么你要尝试学习如何与不同的人相处,提高自己化 能人士的50个习惯 在行动前设定目标 有目标未必能够成功,但没有目标的肯定不能成功。著名的效率提升大师博思.崔西説:“成功就是目标的达成,其他都是这句话的注释。”现实中那些顶尖的成功人士不是成功了才设定目标,而是设定了目标才成功。 一次做好一件事 著名的效率提升大师博思.崔西有一个著名的论断:“一次做好一件事的人比同时涉猎多个领域的人要好得多。”富兰克林将自己一生的成就归功于对“在一定时期内不遗余力地做一件事”这一信条的实践。 培养重点思维 从重点问题突破,是高效能人士思考的一项重要习惯。如果一个人没有重点地思考,就等于无主要目标,做事的效率必然会十分低下。相反,如果他抓住了主要矛盾,解决问题就变得容易多了。 发现问题关键 在许多领导者看来,高效能人士应当具备的最重要的能力就是发现问题关键能力,因为这是通向问题解决的必经之路。正如微软总裁兼首席软件设计师比尔。盖茨所説:“通向最高管理层的最迅捷的途径,是主动承担别人都不愿意接手的工作,并在其中展示你出众的创造力和解决问题的能力。” 把问题想透彻 把问题想透彻,是一种很好的思维品质。只要把问题想透彻了,才能找到问题到底是什么,才能找到解决问题最有效的手段。 不找借口 美国成功学家格兰特纳说过这样的话:“如果你有为自己系鞋带的能力,你就有上天摘星星的机会!”一个人对待生活和工作是否负责是决定他能否成功的关键。一名高效能人士不会到处为自己找借口,开脱责任;相反,无伦出现什么情况,他都会自觉主动地将自己的任务执行到底。 要事第一 创设遍及全美的事务公司的亨瑞。杜哈提说,不论他出多小两种能力是:第一,能思想;第二,能按事情的重要程度来做事。因此,在工作中,如果我们不能选择正确的事情去做,那么唯一正确的事情就是停止手头上的事情,直到发现正确的事情为止。 运假公济私,那么你要尝试学习如何与不同的人相处,提高自己化
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


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

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


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