(完整word版)数据结构课程设计——宿舍管理查询软件要点
宿舍管理系统软件数据结构课程设计
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊一、题目名称:宿舍管理查询软件二、设计目的:进一步掌握和利用C语言进行课程设计的能力,理解和运用结构化程设计的思想和方法,熟练掌握条件语句、循环、数组、函数操作,初步掌握开发一个小型实用系统的基本方法,学会高度一个较长程序的基本方法和利用流程图或N-S图表示算法,将本课程所学的知识合理地运用于实践当中。
了解一些书上没有的函数及使用方法。
三、设计分析:1、需求分析为了实现提高高校宿舍管理部门的工作效率,充分利用资源,减少不必要的人力、物力和财力的支出,方便宿舍管理部门的工作人员全面地掌握学生住宿情况等目的,为宿舍管理部门开发设计专用系统——学生宿舍信息管理系统来进行管理学生宿舍信息,使学生宿舍信息实现标准化的管理和规范化的制度是十分必要的。
2、经济可行性分析如今是信息化时代,信息化管理可以使学生宿舍管理更加系统化,全面化,快速化,这样可以为学校带来高效的工作效益和经济效益,开发出本系统可以减少宿舍管理人员人数,而且管理方便,各功能实现迅速,数据有效的管理。
这些效益和管理上的便捷远远超过了开发本系统的成本,所以在经济上具有完全的可行性。
四、总体设计:根据系统要求,即本系统具有信息的录入,显示,查找,删除,从文件中读入数据、循环写入数据、结束程序等功能,先设计出详细的系统流程图,然后将源代码输入程序,进行编译调试即可。
程序总体分九个项目:输入记录、显示记录、按房间号排序并显示、按学号排序并显示、插入一条记录并按学号排序并显示、按姓名查找、删除一条记录、查找并显示一个记录、从文件中读入数据、循环写入数据以及结束程序。
五、详细设计:1、系统流程图如图5-1所示┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊图5-1 系统流程图2、根据流程图,将程序源代码输入到编译环境中,按照提示选择进行记录的输入,输入一个数据后提示是否继续输入,直到结束程序为止。
数据结构课程设计之宿舍管理系统
##大学数据结构课程设计报告题目:宿舍管理查询软件院(系):学生姓名:班级:学号:起迄日期: 2011.6.20--2011.7.1指导教师:2010—2011年度第 2 学期一、需求分析1.问题描述:程序设计要求:为宿舍管理人员编写一个宿舍管理查询软件(1)采用交互工作方式(2)建立数据文件,数据文件按关键字(姓名、学号、放号)进行排序(冒泡、选择、插入排序等任选一种)(3) 查询菜单:(用二分查找实现以下操作)①按姓名查询②按学号查询③按放号查询(4)打印任一查询结果(可以连续操作)程序分析:(1)程序采用交互工作方式,也就是说要有一个人性化的操作界面。
将每一种操作赋给一个数字,通过输入不同的数字来实现不同的操作。
这样使人一看就能明白如何实现不同的操作。
全部使用提示选择方式,只需要输入你要使用方式的代号即可。
(2)本系统无数据信息,在使用的时候首先创建一个数据文件,开发一个录入数据的功能,使得所需要的数据存储到软件中,并暂时存在内存中,以便使用。
(3)录入和修改函数:建立相应的函数,在主函数中得到调用,以便于对学生信息的增加和修改。
(4)查询:以不同的关键字分别使用二分查找实现。
(5)为了使用方便和安全,增加了密码登录、密码锁定、退出、删除、全部删除、修改、存储为文本文档信息等功能。
2.基本功能(1)录入学生信息(2)显示学生信息(分别按学号、宿舍号、姓名进行排序后显示并在磁盘上以“.txt”格式保存显示的信息)(3)查询学生信息(分别按学号、宿舍号、姓名进行查询并显示)(4)修改学生信息(可进行单个删除、全部删除和修改学生信息)(5)存储学生信息(存储到磁盘上,保存为“.txt”格式)(6)锁定管理系统(进入密码登录界面,以确保安全)(7)退出管理系统3.输入输出各种功能之间的选择采用了数字提示方式,只需要根据提示进行选择相应的数字,在录入学生信息功能中姓名为长度30以内的任意字符,学生学号和宿舍号控制住15个数字以内。
数据结构课程设计报告-学生宿舍管理系统
数据结构课程设计报告-学生宿舍管理系统徐州工程学院课程设计报告课程名称数据结构课程设计专业计算机科学与技术班级 09计单学生姓名黄晨学号 ***********设计题目宿舍查询管理系统指导教师 ****** 设计起止时间:2011 年 6 月20日至2011年6月21日一.课程设计的背景:为学生提供了一个既动手又动脑,独立实践的机会,通过课程设计的综合训练,旨在帮助学生进一步系统的掌握数据结构这门课的主要内容,并进一步培养学生分析问题和解决问题的能力,主要体现在能够让学生针对实际问题有效地组织数据,选择合适的数据结构,并进行正确和高效的算法设计,并用程序实现算法。
该课的课程设计是一个良好的程序设计技能训练的过程。
二. 课程设计的内容和要求:1、基本内容任务:为宿舍管理人员编写一个宿舍管理查询软体。
2、基本要求1、建立数据文件,数据文件按关键字(房号、学号、姓名)查询。
2、主菜单(1)新建班级宿舍信息(2)查找已有班级宿舍信息(3)输出已有班级宿舍信息(4)插入已有班级学生信息(0)退出3、查询菜单(1)按宿舍号查找(2)按学号查找(3)按姓名查找(0)退出4、可以连续操作。
5、新建班级宿舍信息在磁盘上新文件并写入数据。
查找已有班级宿舍信息读入磁盘文件数据使用插入排序建立双向链表存储数据,分别使用索引表查找,折半查找,哈稀表查找对链表进行查询同时选择是否删除。
输出已有班级宿舍信息读入磁盘文件数据,排序后输出。
插入已有班级学生信息对磁盘文件进行追加写入。
三.主要参考文献:1.《数据结构课程设计》,苏仕华等编著,机械工业出版社, 2005.5.第一版;2.《算法与数据结构》,范策等编著,机械工业出版社 2004,第一版。
3.《数据结构(C语言版)》,严蔚敏等编著,清华大学出版社 2004 4.《数据结构实用教程(第二版)》,徐孝凯编著,清华大学出版社20065.《数据结构》,谢楚屏等编著,人民邮电出版社6.《数据结构与算法导论》,徐绪松等著,电子工业出版社四. 课程设计进度计划(以天为单位):double minnum,maxnum;}index_hc;typedef struct{char key[7];int count;stu_hc *stu;}hashtable_hc[MAXSIZE];六、源程序在运行文件目录下新建学生宿舍信息文件夹。
(完整word版)数据库课程设计-学生宿舍管理系统(word文档良心出品)
课程设计课题名称:数据库课程设计设计课题:学生公寓管理系统专业:班级:姓名:学号:同组人:指导教师:1、管理系统设计的背景、意义及目标设计背景设计意义设计目标2、系统开发环境3、系统需求剖析基本功能需求功能模块数据词典4、观点构造设计观点设计E_R 模型设计5、逻辑构造设计将 E_R 图变换为关系模型各表关系模型图6、数据实行和保护功能实现代码系统实现成效7、个人实现的功能8、总结1、管理系统设计的背景、意义及目标设计背景跟着 IT 事业的发展,此刻,我们已经全面跨入信息时代。
计算机被宽泛的使用于各个行业,人工战略已经转变为信息战略,怎样在短时间内获取大批信息并整合信息,成为立足于时代的重点。
为了适应试生人数的急剧增添,此刻社会各大高校都在进行扩招政策,学生数目的急剧增添带来信息量的成倍增添,因为信息管理的不善和大意,各大高校大小事故时有发生。
进行正确的信息管理,关于信息及时办理和反响,能够最大程度的减少学校以及在校学生的损失,减小潜伏危机。
学生宿舍是学生生活的基本单位,是同学歇息和学习的地方,为了保障同学入住学生宿舍的安全性,信息的办理和管理极为重要。
据认识,本校的宿舍信息管理仍旧使用传统的手工方式,主要方式是鉴于文本、表格等纸介质的手工办理,用人工手抄对男女生信宿信息进行办理登记。
数据信息办理工作量大,简单犯错且不易改正;因为数据众多,简单丢掉,逐条查找记录的方式不易操作,浪费了大批的时间,效率极低。
学校的宿舍管理缺少系统,规范的信息管理手段。
成立学生宿舍管理系统,使宿舍管理工作系统化,规范化,便利化,程序化,防止宿舍管理的任意性,提升信息办理的速度和正确性,能够及时、正确、有效的查问和改正宿舍状况。
设计的意义高校规模的扩大, 在校学生的基本状况随之层次化、多样化、复杂化,相应的,学生管理工作面对严重的挑战。
高校学生信息日渐宏大,相应的宿舍管理工作变得复杂而困难。
传统的账本化工作模式,手工记录学生信息并存档,这样的人工管理方式费时、费事、费劲,信息获取慢 , 更新滞后,查阅困难 , 简单犯错。
数据结构课程设计宿舍管理查询软件.
学号:学院:计算机与信息技术学院专业:软件工程年级: 2014软件工程班姓名:论文(设计)题目:数据结构课程设计报告成绩:2015 年12 月 15目录一,需求分析 (5)二,算法设计思想及流程图 (5)1.,算法设计思想 (5)2.,流程图 (5)三,详细设计(源代码) (6)四,运行结果 (13)五,收获及体会 (14)六,参考文献 (14)数据结构课程设计报告计算机与信息技术学院软件工程专业姓名赵静静学号20145104055一、课程设计(论文)题目宿舍管理查询二、课程设计(论文)工作自2015 年12月12 日起至 2015 年12月15 日止三、课程设计(论文) 地点: 计算机学院四、课程设计(论文)内容要求:1.本课程设计的目的(1)巩固和加深对数据结构基本知识的理解,提高综合运用课程知识的能力。
(2)使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。
(3)使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。
2.课程设计的任务及要求1)基本要求:(1)对系统进行功能模块分析、控制模块分析;(2)系统设计要能完成题目所要求的功能;(3)编程简练,可用,尽可能的使系统的功能更加完善和全面;(4)说明书、流程图要清楚;(5)提高学生的论文写作能力;(6)特别要求自己独立完成;2)创新要求:在基本要求达到后,可进行创新设计,如改善算法性能、友好的人机界面。
3)课程设计论文编写要求(1)要按照书稿的规格打印与写课程设计论文(2)论文包括目录、正文、小结、参考文献、附录等(3)课程设计论文装订按学校的统一要求完成4)课程设计进度安排内容天数地点构思及收集资料 1 图书馆编码与调试 3 实验室撰写论文 1 图书馆、实验室学生签名:赵静静2015 年12 月12日课程设计(论文)评审意见(1)基本算法(20分):优()、良()、中()、一般()、差();(2)设计分析(20分):优()、良()、中()、一般()、差();(3)调试分析(20分):优()、良()、中()、一般()、差();(4)创新设计(20分):优()、良()、中()、一般()、差();(5)总结分析(20分):优()、良()、中()、一般()、差();(6)格式规范性及考勤是否降等级:是()、否()评阅人:职称:讲师2015 年12月15日一,需求分析题目:宿舍管理查询软件(限1 人完成)任务:1)为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:A.采用交互工作方B.建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)2)查询菜单: (用二分查找实现以下操作)A.按姓名查询B.按学号查询C.按房号查询二.算法设计思想及流程图1. 算法设计思想:主要有主菜单函数,插入功能子菜单函数,查找功能子菜单函数,学生信息录入函数,显示函数,排序函数,插入函数以及查找函数。
宿舍管理查询软件课程设计报告
滁州学院课程设计题目宿舍管理查询软件课程设计报告课程名称:数据结构课程设计设计题目:宿舍管理查询软件院部:计算机与信息工程学院专业:网络工程组别:第四组起止日期: 2012年6月11日~2012年6月24日指导教师:计算机与信息工程学院二○一二年课程设计任务书目 录1绪论........................................................................................................................................ 1 组长学号 班级 系别计算机与信息工程学院 专业 组员指导教师胡成祥 课程设计目的1.为宿舍管理人员编写一个宿舍管理查询软件2.通过此次实验锻炼我们的编程能力与合作能力 课程设计所需环境 Windows XP 系统;VC++6.0 软件课程设计任务要求1.采用交互工作方式2. 建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)3. 查询菜单:(用二分查找实现以下操作)A.按姓名查询B.按学号查询C.按房号查询4. 打印任意查询结果(可以连续操作)课程设计工作进度计划 序号起止日期 工 作 内 容 分工情况 16.11~6.12 课程内容介绍和查找资料 26.12~6.13 构思程序整体框架,构思程序所需子函数 36.12~6.13 按照整体程序框架,编写子函数 46.13~6.15 编写主函数 56.16~6.20 修改完善程序,整理资料,着手课程设计报告。
6 6.20~6.24 做课程设计报告,整理经验教训,并作总结。
教研室审核意见:教研室主任签字: 年 月 日2需求分析 (1)2.1 课程设计题目 (1)2.2 课程设计任务及要求 (1)2.3课程设计思想 (1)2.4软硬件运行环境及开发工具 (2)3 概要设计 (2)4详细设计 (2)5调试与操作说明 (8)5.1 宿舍管理主菜单与信息录入 (8)5.2 学员信息显示 (9)5.3 插入学员信息 (9)5.4 查询学员信息 (10)6课程设计总结与体会 (11)致谢 (12)参考文献 (12)附录 (12)课程设计的主要内容1绪论作为当代大学生,精通一门学问是能在这个社会独立生存的必要条件。
数据结构程序设计宿舍管理软件课程设计报告参考模板
目录一、设计题目 (1)二、设计目的 (1)三、问题求解 (1)四、需求分析 (2)五、总体设计 (3)(一) 结构图 (3)(二)流程图 (4)六、详细设计 (4)七、调试与测试 (5)八、关键源程序清单和执行结果 (5)(一)源程序 (5)(二)执行结果 (12)一、设计题目宿舍管理软件二、设计目的进一步掌握和利用各种编程变成语言进行课程设计的能力,理解和运用结构化程序设计的思想和方法,熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。
三、问题求解初始数据:学生的入住信息;中间数据:学生的入住信息;安排新生住宿:进入系统,选择要执行的功能。
首先选择1添加学生的入住信息,输入要入住的学生个数,然后输入每个学生的信息,存储在二维数组StudentInfo[][]中,在有人入住的情况下进行其他的操作。
选择2进行学生退房处理,先查询该同学的入住信息,输入学号显示这条信息,如果存在该学生,查找成功,然后选择是否删除该同学的信息。
如果删除,则后面的信息往前移一个。
选择3进行显示所有学生的入住信息。
选择4进行学生调换宿舍或床位处理,先查找要调换的学生的信息,然后输入要调换去的房间号和床位号,再显示该同学的新信息。
选择5是按照学号查询学生信息,输入要查找的学生的学号,如果存在,输出该同学的信息,如果不存在,显示“对不起,您输入的学号不存在!!”。
选择6是按照姓名进行查询,输入要查找的学生的姓名,如果存在,输出该同学的信息,如果不存在,显示“对不起,您输入的姓名不存在!!”。
选择7查询房间使用情况,定义了一个count变量作为计数器,统计住在同一个宿舍的学生个数,输入要查询的房间号,显示该宿舍所有学生的信息。
输出结果:四、需求分析为了实现提高高校宿舍管理部门的工作效率,充分利用资源,减少不必要的人力、物力和财力的支出,方便宿舍管理部门的工作人员全面地掌握学生住宿情况等目的,为宿舍管理部门开发设计专用系统软件——宿舍管理软件来进行管理学生宿舍信息,使学生宿舍信息实现标准化的管理和规范化的制度是十分必要的。
数据结构宿舍管理方案计划查询系统的实现课程教学设计
2014-2015学年第一学期《数据结构》课程设计报告题目:宿舍管理查询系统的实现专业:班级:姓名:学号:指导教师:成绩:计算机与信息工程系2014年10 月25 日目录1设计任务.......................................................... 错误!未定义书签。
2总体设计. (4)3系统流程图 (5)4详细设计及测试 (5)5心得体会 (16)致谢 (13)参考文献 (14)附录:源代码 (15)1设计任务题目:宿舍管理查询软件任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:(1)建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)(2)实现如下查询功能:按姓名查询按学号查询按房号查询(3)打印任意查询结果(可以连续操作)针对题目所要求的功能不太多,我特意添加了插入数据、读入文件数据以及将数据写入文件三个额外功能。
2总体设计根据系统要求,即本系统具有信息的录入,显示,排序显示、查找,插入、从文件中读入数据、循环写入数据、结束程序等功能,先设计出详细的系统流程图,然后将源代码输入程序,进行编译调试即可。
程序总体分12个项目:输入记录、显示记录、按姓名排序并显示、按房间号排序并显示、按学号排序并显示、按姓名查找并显示、按房间号查找并显示、按学号查找并显示、插入一条记录按学号排序并显示、从文件中读入数据、循环写入数据以及结束程序。
3系统流程图系统流程图下页图1所示否结束图1图1系统流程图4详细设计及测试根据流程图,将程序源代码输入到编译环境中,按照提示选择进行记录的输入,输入一个数据后提示是否继续输入,直到结束程序为止。
将程序编译生成“学生宿舍管理系统.exe”。
运行该文件如图2所示。
图2 输出界面图输入记录采用循环输入while(sign!='n' && sign!='N') /*判断*/{printf("\t\t姓名:");scanf("\t\t%s", &room[n+i].name);printf("\t\t学号:");scanf("\t\t%s", &room[n+i].num);printf("\t\t房间号:");scanf("\t\t%s",&room[n+i].roomnum);printf("\t\t是否继续输入?(Y/N)");scanf("\t\t%c",&sign); /*输入判断*/i++;}返回(n+i);按照提示选择“1”进行记录的输入如图3所示:图3 输入记录显示图连续输入多组数据后,按“n”结束输入,提示按任意键继续,按任意键后选择“2”进行记录的显示如图4所示。
数据结构课程设计报告宿舍管理系统完整版
数据结构课程设计报告宿舍管理系统HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】数据结构课程设计报告设计题目:学生宿舍管理系统学院:年级专业:姓名:学号:指导老师:1.设计目的宿舍对于大学生在校生活来说相当于家的存在,而宿舍管理又是学校后勤管理的重要环节,如何直观的了解宿舍的入住情况和每位同学的住宿位置是提高工作效率的重要课题,根据我们所学的C语言和数据结构课程中有关链表及外部文件的内容,为后勤管理人员编写宿舍管理查询软件, 就可以轻松满足实现上述需求。
通过实际课题设计,可以对我们加深书本知识理解,了解并掌握数据结构与算法的设计方法,培养独立分析和设计能力,掌握软件开发过程的基本方法和技能,对我们的个人素质提高大有脾益。
2.需求分析性能分析宿舍一般由若干学生入驻,每个宿舍都有独立唯一的编号,入住学生也有唯一的学号,另外添加学生的姓名和班级,使用这些关键字就可以方便的查询和管理宿舍入住情况。
程序设计应采用交互工作方式,并建立数据文件。
程序应通过建立子函数实现创建、保存与载入数据文件,查找、添加、删除、更改、显示等功能,可以自动保存修改。
应具有友好的界面和较强的容错能力。
能够迅速准确地完成各种学生信息的统计和查询,以方便管理员对学生信息的统一管理。
功能分析为方便管理员对系统进行操作,程序应具有以下功能:(1)创建宿舍数据文件,并提示管理员输入学生姓名、学号、宿舍号、班级等信息,并在本地保存数据文件(2)打开宿舍数据文件:输入文件名打开保存过的数据文件(3)查询住宿信息:提供学号、姓名、宿舍号三种查询方式(4)添加住宿信息:在数据文件中添加新的住宿信息(5)删除住宿信息:提示管理员输入要删除的学生姓名,验证后删除(6)修改住宿信息:提示管理员输入要修改的学生姓名,验证后修改(7)输出数据文件:将住宿信息按学号的大小排序全部输出(8)退出系统3.程序结构及流程设计系统流程图4.系统详细设计数据结构设计修改界面删除界面添加界面输出界面本地数据文件系统分析经过测试,该宿舍管理系统结构清晰,运行时测试也相对简单。
数据结构宿舍管理查询系统的实现课程设计
2014-2015学年第一学期《数据结构》课程设计报告题目:宿舍管理查询系统的实现专业:班级:姓名:学号:指导教师:成绩:计算机与信息工程系2014年10 月25 日目录1设计任务............................... 错误!未定义书签。
2总体设计.. (3)3系统流程图 (3)4详细设计及测试 (5)5心得体会 (13)致谢 (13)参考文献 (14)附录:源代码 (15)1设计任务题目:宿舍管理查询软件任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:(1)建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)(2)实现如下查询功能:按姓名查询按学号查询按房号查询(3)打印任意查询结果(可以连续操作)针对题目所要求的功能不太多,我特意添加了插入数据、读入文件数据以及将数据写入文件三个额外功能。
2总体设计根据系统要求,即本系统具有信息的录入,显示,排序显示、查找,插入、从文件中读入数据、循环写入数据、结束程序等功能,先设计出详细的系统流程图,然后将源代码输入程序,进行编译调试即可。
程序总体分12个项目:输入记录、显示记录、按姓名排序并显示、按房间号排序并显示、按学号排序并显示、按姓名查找并显示、按房间号查找并显示、按学号查找并显示、插入一条记录按学号排序并显示、从文件中读入数据、循环写入数据以及结束程序。
3系统流程图系统流程图下页图1所示4详细设计及测试根据流程图,将程序源代码输入到编译环境中,按照提示选择进行记录的输入,输入一个数据后提示是否继续输入,直到结束程序为止。
将程序编译生成“学生宿舍管理系统.exe”。
运行该文件如图2所示。
图2 输出界面图输入记录采用循环输入while(sign!='n' && sign!='N') /*判断*/{printf("\t\t姓名:");scanf("\t\t%s", &room[n+i].name);printf("\t\t学号:");scanf("\t\t%s", &room[n+i].num);printf("\t\t房间号:");scanf("\t\t%s",&room[n+i].roomnum);printf("\t\t是否继续输入?(Y/N)");scanf("\t\t%c",&sign); /*输入判断*/i++;}返回(n+i);按照提示选择“1”进行记录的输入如图3所示:图3 输入记录显示图连续输入多组数据后,按“n”结束输入,提示按任意键继续,按任意键后选择“2”进行记录的显示如图4所示。
数据结构课程设计 宿舍管理查询软件.doc
数据结构课程设计报告设计题目:宿舍管理查询软件学号:姓名:指导教师:专业:班级:学年学期:起止时间:哈尔滨师范大学计算机科学与信息工程学院目录一.具体任务 (1)二.软件环境 (1)三.算法设计思想及流程图 (1)1. 算法设计思想 (1)2. 流程图 (1)四.源代码 (2)五.运行结果 (9)六.收获及体会 (10)七.参考文献 (10)八.教师评价表 (11)数据结构课程设计报告一.程序设计题目和具体任务:题目:宿舍管理查询软件(限1 人完成)任务:1)为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:A.采用交互工作方B.建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)2)查询菜单: (用二分查找实现以下操作)A.按姓名查询B.按学号查询C.按房号查询3)打印任一查询结果(可以连续操作)二.软件环境:C语言三.算法设计思想及流程图1.算法设计思想:主要有主菜单函数,插入功能子菜单函数,查找功能子菜单函数,学生信息录入函数,显示函数,排序函数,插入函数以及查找函数。
在每个区域中会调用不同的函数来实现主要的功能。
在插入功能里调用子菜单函数;在显示信息时调用排序函数先对需要输出的信心进行排序,然后再输出;在查找功能里会调用查找函数来进行查找,包括按照性别,学号,姓名,房间号等查询。
四.源代码:#include <stdio.h>#include<iomanip>#include<fstream># include <stdlib.h>#include<iostream.h># define N 20void showheader();int menu();int menu3();int menu5();//int quanxian();//void SavePass();struct student shuru();void display(struct student);void sort(struct student stu[N],int);void charu(struct student stu[N],int);void chazhao1(struct student stu[N],int i); void chazhao2(struct student stu[N],int i); void chazhao3(struct student stu[N],int i);struct student{int ID;char name[15];char sex;int roomnum;float score[3];char *getSex(){if(sex=='g')return "女";elsereturn "男";}};void main(){struct student stu[N];int count=0,m=0,j;char ch,ch1;int choice,choice3,choice4;int user;do{do{ ch1='n';choice=menu();switch(choice){case 1: {do{cout<<"*********** 学员信息录入 ********\n";cout<<"请输入第"<<count+1<<"个学员的信息\n\n";stu[count]=shuru();//cout<<"是否继续(y/n)";fflush(stdin);ch=getchar();count++;}while(ch=='y');break;}case 2:{cout<<"******************* 学员信息显示 ************\n";cout<<"\n排序后的信息如下:\n";sort(stu,count);showheader();for(j=0;j<count;j++){display(stu[j]);}break;}case 3://插入功能{while(choice3!=3){choice3=menu3();if(choice3==1){do{ cout<<"****************** 学员信息插入 ***************\n";charu(stu,count);count++;cout<<"是否继续插入?(y/n)";fflush(stdin);ch=getchar();}while(ch=='y');}if (choice3==2){cout<<"\n\n插入学生信息后如下:\n"; sort(stu,count);showheader();for(j=0;j<count;j++){display(stu[j]);}}}break;}case 4://查找功能{while(choice4!=4){choice4=menu5();if(choice4==1){chazhao1(stu,count);}if(choice4==2){chazhao2(stu,count);}if(choice4==3){chazhao3(stu,count);}}break;}case 5://退出{cout<<"确认退出?(y/n)";fflush(stdin);ch=getchar();break;}default:{cout<<"\a\a警告:您输入错误,是否重输!(y/n)";fflush(stdin);ch1=getchar();break;}}}while(ch=='n'|| ch1=='y');{cout<<"\a\a警告:您的用户名或密码输入有误!是否重输?(y/n)"; }fflush(stdin);ch=getchar();}while(ch=='y');}struct student shuru(){struct student stu;cout<<"学号:";cin>>stu.ID;cout<<"姓名:";cin>>;cout<<"性别(g/b):";fflush(stdin);cin>>stu.sex;cout<<"房间号:";cin>>stu.roomnum;cout<<"是否继续?(Y/N)"<<endl;return stu;}void display(struct student stu){cout<<"\t"<<stu.ID<<"\t";cout<<<<"\t";cout<<stu.getSex()<<"\t";cout<<stu.roomnum<<"\t"<<endl;;}void sort(struct student stu[N],int i){int j,k;struct student temp;for(j=0;j<i;j++){for(k=0;k<i-j-1;k++){if((stu[k].ID)>(stu[k+1].ID)){temp=stu[k];stu[k]=stu[k+1];stu[k+1]=temp;}}}}void charu(struct student stu[N],int k){int i,l;struct student in ;in=shuru();for(i=0;i<k;i++){}for(l=k;l>i;l--){stu[l]=stu[l-1];}stu[i]=in;}int menu(){ int choice;cout<<"\t\t*************\n\n\t\t\t 欢迎进入学生宿舍管理查询系统\n\n\t\t*****************************\n\n";cout<<"\t\t\t***************主菜单***************\n\n";cout<<"\t\t\t\t1> 学生信息录入\n\n";cout<<"\t\t\t\t2> 学生信息显示\n\n";cout<<"\t\t\t\t3> 插入学生信息\n\n";cout<<"\t\t\t\t4> 查找学生信息\n\n";cout<<"\t\t\t\t5> 退出\n";cout<<"\n\n请选择功能选项:";cin>>choice;return choice;}int menu3(){ cout<<"\t***************这里显示的是插入功能子菜单***************\n\n"; cout<<"\t\t\t\t1、插入学生信息\n\n";cout<<"\t\t\t\t2、显示插入后的学生信息\n\n";cout<<"\t\t\t\t3、退出子菜单,返回上一级菜单\n\n";cout<<"\n\n请选择功能选项:";int choice3;cin>>choice3;return choice3;}void chazhao1(struct student stu[N],int i){int select,j;char ch;cout<<"\t***********您选择的是按照学号查找:*********\n\n"; do{cout<<"\n\n请输入学号:";cin>>select;for(j=0;j<i;j++){if(select==stu[j].ID){break;}}if(j<i){showheader();display(stu[j]);}else{cout<<"你查找的信息不存在\n";}fflush(stdin);ch=getchar();}while(ch=='y');}void chazhao2(struct student stu[N],int i){int j;char name[15];char ch;cout<<"\t*********您选择的是按照姓名查找:********\n\n";do{cout<<"\n\n请输入姓名:";cin>>name;for(j=0;j<i;j++){if(strcmp(name,stu[j].name)==0){break;}}if(j<i){showheader();display(stu[j]);}else{cout<<"你查找的信息不存在\n";}fflush(stdin);ch=getchar();}while(ch=='y');}void chazhao3(struct student stu[N],int i){int j,room;char ch;cout<<"\t*******************您选择的是按照房间号查找:*******************\n\n"; do{cout<<"\n\n请输入房间号:";cin>>room;for(j=0;j<i;j++){if(room==stu[j].roomnum){break;}}if(j<i){showheader();display(stu[j]);}else{cout<<"你查找的信息不存在\n";}cout<<"是否继续查找?(y/n)";fflush(stdin);ch=getchar();}while(ch=='y');}int menu5(){cout<<"\t**********这里显示的是查找功能子菜单***********\n\n"; cout<<"\t\t\t\t1、按照学号查找\n\n";cout<<"\t\t\t\t2、按照姓名查找\n\n";cout<<"\t\t\t\t3、按照房间号查找\n\n";cout<<"\t\t\t\t4、退出子菜单,返回上一级菜单\n\n";cout<<"\n\n请选择功能选项:";int choice4;cin>>choice4;return choice4;}void showheader(){ cout<<"\n\n\t************************************\n";cout<<"\t学号\t姓名\t性别\t房间号\t\n";cout<<"\t******************************************\n";}五.程序运行的结过图2.主菜单显示图3.信息录入界面图4.信息显示界面图5.查找学生信息界面六.收获及体会通过四个星期的时间,我把课程设计给完成了,这是一个坚苦而又漫长的过程。
宿舍管理查询软件报告
. . . 《数据结构》课程设计报告设计题目宿舍管理查询软件专业软件工程班级姓名学号完成日期目录1. 问题描述 (2)2. 系统设计 (2)3. 数据结构与算法描述 (5)4. 测试结果与分析………………………………………页码5. 总结…………………………………………………页码6. 参考文献………………………………………………页码附录程序源代码…………………………………………页码(要求:给出一级目录,宋体加粗,四号字,1.5倍行距。
)(报告正文部分):宿舍管理查询软件(要求:正文部分一律用小四号字,宋体,1.5倍行距。
一级标题靠左,四号加粗。
二级、三级标题靠左,小四加粗。
)1. 问题描述由于大学宿舍宿舍楼群过多,且每栋宿舍居住学生较多,因此宿舍管理与查询的任务非常繁重和复杂,然而多大学宿舍还未普及电子信息管理式,还在采用传统的笔录备案管理查询式,因此,为提高宿舍管理人员的工作效率便其对学生宿舍的管理提出此开发项目。
2. 系统设计2.1 设计目标学生宿舍管理系统采用的是计算机化管理,系统界面做的尽量人性化,系统具有运行速度快、安全性高、稳定性好的优点,并且具备完善的报表生成、修改功能,能够快速的查询学校所需的住宿信息。
基本功能:(1)采用交互工作式(2)建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)(3)实现如下查询功能: 按姓名查询按学号查询按房号查询(4)可打印任意查询结果(可以连续操作)2.2 设计思想①要实现交互工作式,各项操作结束后均应返回主菜单;要确保系统的密性和安全性,就应当具有某些操作权限,没有系统管理员或者普通用户的用户名和密码任人都不能登录该系统;在具体实现时还应为系统管理员和普通用户设定不同的权限,系统管理员应当可以使用系统的所有模块,普通用户对于用户管理模块、学生学期注册(涉及到交费问题)及学生毕业离校等(此模块需判断该生有无欠费)牵扯到经济之类的模块是无权使用的。
数据结构-宿舍管理查询系统
攀枝花学院之迟辟智美创作学生课程设计(论文)题目:宿舍管理查询软件的设计与实现学生姓名:学号:所在院(系):计算机学院专业:班级:指导教师:职称:2011年6月4日教务处制攀枝花学院本科学生课程设计任务书注:任务书由指导教师填写.课程设计(论文)指导教师成果评定表摘要本宿舍管理查询软件是为方便宿舍管理人员实现宿舍管理查询而开发的,具有信息录入、显示、查询、排序、拔出和删除功能,能实现信息修改和通过另外途径导入年夜量数据,可连续打印任一查询结果,但不能实现信息存盘,使用简双方便,点击法式即可运行.关键词:管理,查询,结构体,函数目录攀枝花学院本科学生课程设计任务书课程设计(论文)指导教师成果评定表I摘要II1 方案设计- 0 -1.1任务:- 0 -1.1.1法式设计要求:- 0 -1.1.2查询菜单: (用二分查找实现以下把持)- 0 -1.1.3打印任一查询结果(可以连续把持)- 0 -1.2功能:- 0 -2 算法设计- 1 -- 1 -- 1 -2.1.2法式结构图为:- 1 -3 详细设计- 2 -4 调试分析- 7 -- 7 -4.2测试数据:- 8 -4.2.1开始录入的数据:- 8 -4.2.2拔出的数据:- 8 -4.2.3查找的数据:- 8 -4.2.4删除的数据:- 8 -4.3测试输出结果(以运行结果图暗示):- 9 -4.3.1欢迎界面:- 9 -4.3.2按任意键进入线性表的创立界面:- 9 -4.3.3输入数据,开始创立:- 9 -4.3.4请按键选择把持:- 10 -4.3.5按姓名排序:- 10 -4.3.6按学号排序:- 10 -4.3.7按房号排序:- 11 -4.3.8拔出后显示:- 11 -4.3.9按姓名查找:- 11 -4.3.10按学号查找:- 11 -4.3.11按房号查找:- 12 -4.3.12进入删除功能,删除数据后显示剩余的学生信息:- 12 -4.3.13退出(数字为零时退出):- 12 -- 13 -5 总结- 14 -参考文献- 15 -1方案设计任务:为宿舍管理人员编写一个宿舍管理查询软件法式设计要求:①采纳交互工作方式②建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、拔出排序等任选一种)查询菜单: (用二分查找实现以下把持)①按姓名查询②按学号查询③按房号查询打印任一查询结果(可以连续把持)功能:根据上述要求,我们开始考虑系统应具备的功能:①要实现交互工作方式,各项把持结束后均应返回主菜单;②系统本无任何信息数据,要建立数据文件,需开发一个信息录入功能,即首先创立一个学员线性表,同时我们可以将数据暂时保管在内存中,所以我们未开发信息存盘功能;③信息录入后都保管在内存中,用户看不到,需要设计一个信息显示功能,信息的显示应该便于查阅,所以需具备按各种关键字显示的功能;④本系统按关键字(姓名、学号、房号)进行冒泡排序,采纳二分查找方式分别实现按关键字(姓名、学号、房号)查询功能;⑤由于有些同学因为分歧原因而离校,所以设计了删除功能;⑥由于有新同学入校,所以设计了拔出功能;⑦当用户把持完毕需要退出时,我们提供了退出选项,便于使用者退出交互式工作系统.2算法设计线性表的顺序存储存储结构本系统界说的存储结构采纳结构体数组,结构体为:typedef struct //界说结构体成员{char name[20];int num; //学号和房号都为整型int room;}stu;stu stud;typedef struct{int length; //以后长度stu *elem; //存储空间基址int listsize; //以后分配的存储容量}linklist; 在此说明每个部份的算法设计说明(可以是描述算法的流程图)法式结构图为:3详细设计//采纳顺序线性表解决宿舍管理问题 (C语言)#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 40 //线性表存储空间的初始分配量#define increase 10 //线性表存储空间的分配量增量int f,t=0; //界说全局变量typedef struct{char name[20];int num; //学号和房号都为整型int room;}stu;stu stud;typedef struct{int length; //以后长度stu *elem; //存储空间基址int listsize; //以后分配的存储容量}linklist;void init(linklist &l)//线性表初始化{l.length=0;l.elem=(stu *)malloc(N*sizeof(stu ));l.listsize=N;}void menu()//把持菜单{printf("\n");printf(" ***************请按键选择把持****************\n");printf("\n");printf("\n");printf(" 1 按姓名排序 2 按学号排序\n");printf("\n");printf(" 3 按房号排序 4 按姓名查找\n");printf("\n");printf(" 5 按学号查找 6 按房号查找\n");printf("\n");printf(" 7 按学号拔出 8 按学号删除\n");printf("\n");printf("\n");printf("\n");printf("\n" );printf("提示:当输入的数字键为0时,退出把持\n"); if(t==1){printf("请输入数字键(1~8为把持键):");//1~8为有效数字把持键scanf("%d",&f);if(f<0||f>9){system("cls");printf("\n");printf("输入数字分歧毛病,请在原处重输!\n"); printf("\n");menu();}}}void disp() //返回主界面{char c;fflush(stdin);printf("\n");printf("请按任意键进入主界面:");scanf("%c",&c);system("cls");}void panduan3() //如果已无学生记录则返回主界面{printf("\n");printf("已无学生记录\n");printf("\n");disp();menu();}void shuru(linklist l) //输入学生的信息{printf("请输入姓名:");fflush(stdin); // 清空输入缓冲区,获得正确的输入数据gets(); //输入一行字符串(姓名)printf("请输入学号:");scanf("%d",&stud.num);printf("请输入房号:");scanf("%d",&stud.room);}void create(linklist &l)//创立学生信息表{if(l.length>=l.listsize) //判断学生的人数是否超越初值,如果超越,则重新分配{stu *newbase;newbase=(stu*)realloc(l.elem,(N+increase)*si zeof(stu ));l.elem=newbase;l.listsize+=increase;}int i=2;char ch;printf("\n");printf(" **************************开始创立线性表***************************\n");printf("\ n");printf("请输入第1个学生的信息\n"); shuru(l); //调用输入函数ch=getchar();strcpy(l.elem[l.length].name,);l.elem[l.length].num=stud.num;l.elem[l.length].room=stud.room;l.length++;printf("\n");printf("是否继续输入?<y/n>:");scanf("%c",&ch);printf("\n");printf("\n");while(ch=='y'){printf("请输入第%d个学生的信息\n",i); shuru(l);strcpy(l.elem[l.length].name,);l.elem[l.length].num=stud.num;l.elem[l.length].room=stud.room;l.length++;i++;ch=getchar(); printf("\n");printf("是否继续输入?<y/n>:");scanf("%c",&ch);printf("\n");printf("\n");}if(ch=='n') system("cls");}void sort3(linklist &l)//按房号排序(采纳冒泡排序){int i,j;stu temp;for(i=0;i<l.length-1;i++)for(j=i+1;j<l.length;j++)if(l.elem[i].room>l.elem[j].room){temp=l.elem[i];l.elem[i]=l.elem[j];l.elem[j]=temp;} }void sort2(linklist &l)//按学号排序(采纳冒泡排序){int i,j;stu temp;for(i=0;i<l.length-1;i++)for(j=i+1;j<l.length;j++)if(l.elem[i].num>l.elem[j].num){temp=l.elem[i];l.elem[i]=l.elem[j];l.elem[j]=temp;}}void sort1(linklist &l)//按姓名排序(采纳冒泡排序){int i,j;stu temp;for(i=0;i<l.length-1;i++)for(j=i+1;j<l.length;j++)if(strcmp(l.elem[i].name,l.elem[j].name)>0) {temp=l.elem[i];l.elem[i]=l.elem[j];l.elem[j]=temp;}}void print1(linklist &l)//打印学生信息{int i;printf("\n");printf("姓名学号房号\n");printf("\n");for(i=0;i<l.length;i++)printf("%-15s %-3d %5d\n",l.elem[i].name,l.elem[i].num,l.ele m[i].room);}void print2(linklist &l,int mid) //打印查找到的学生信息{printf("查找胜利----->该学生信息为:\n"); printf("姓名学号房号\n");printf("\n");printf("%-15s %-5d %-5d\n",l.elem[mid].name,l.elem[mid].num,l.ele m[mid].room);}int panduan1(char ch) //判断是否继续查找{scanf("%c",&ch);printf("是否继续查找?<y/n>:");fflush(stdin);scanf("%c",&ch);if(ch=='y'){system("cls");return(1);}elsereturn 0;}int panduan2(char ch) //如果学生不存在,判断是否继续查找{scanf("%c",&ch);printf("该学生不存在,是否继续查找?<y/n>:");fflush(stdin);scanf("%c",&ch);if(ch=='y'){system("cls");return(1);}elsereturn 0;}void chazhao3(linklist &l)//按房号从小到年夜查找(采纳二分查找){if(l.length==0) panduan3(); //此函数功能为:返回主界面else{int low=0,high=l.length,mid,flag=0;//flag作为标识表记标帜符,为1则暗示查找胜利,否则没有所要查找的学生int m;char ch;printf("\n");printf("\n");printf("按房号查找----->请输入要查找的房号:");scanf("%d",&m);printf("\n");while(low<=high){mid=(low+high)/2;if(m==l.elem[mid].room){flag=1; break;}else if(m>l.elem[mid].room)low=mid+1;elsehigh=mid-1;}if(flag==1){print2(l,mid);if(panduan1(ch)) //调用判断函数1 chazhao3(l);else{system("cls");menu();}}else{if(panduan2(ch)) //调用判断函数2 chazhao3(l);else{system("cls");menu();}}}}void chazhao2(linklist &l)//按学号从小到年夜查找(采纳二分查找){if(l.length==0) panduan3();else{int low=0,high=l.length,mid,flag=0;int n;char ch;printf("\n");printf("\n");printf("按学号查找----->请输入要查找的学号:");scanf("%d",&n);printf("\n");while(low<=high){mid=(low+high)/2;if(n==l.elem[mid].num){flag=1;break;}else if(n>l.elem[mid].num)low=mid+1;elsehigh=mid-1;}if(flag==1){print2(l,mid);if(panduan1(ch))chazhao2(l);else{system("cls");menu();}}else{if(panduan2(ch)) chazhao2(l);else{system("cls");menu();}}}}void chazhao1(linklist &l)//按姓名从小到年夜查找(采纳二分查找){if(l.length==0) panduan3();else{int low=0,high=l.length,mid,flag=0;printf("\n");printf("\n");printf("按姓名查找----->请输入要查找的姓名:");char a[15],ch;scanf("%s",a);printf("\n");while(low<=high){mid=(low+high)/2;if(strcmp(a,l.elem[mid].name)==0){flag=1;break;}else if(strcmp(a,l.elem[mid].name)>0)low=mid+1;elsehigh=mid-1;}if(flag==1){print2(l,mid); //打印查找到的学生的信息if(panduan1(ch)) chazhao1(l);else{ system("cls");menu();}}else{if(panduan2(ch))chazhao1(l);else{system("cls");menu();}}}}void insert(linklist &l)//按学号从小到年夜拔出该学生{int i,j,k;char ch;printf("\n");printf("拔出的学生信息为:\n");printf("姓名:");fflush(stdin);// 清空输入缓冲区,获得正确的输入数据gets();printf("学号:");scanf("%d",&stud.num); printf("房号:");scanf("%d",&stud.room);if(l.length==0){strcpy(l.elem[l.length].name,);l.elem[l.length].num=stud.num;l.elem[l.length].room=stud.room;}for(i=0;i<l.length;i++){if(stud.num<l.elem[i].num){k=i;for(j=l.length;j>k;j--)l.elem[j]=l.elem[j-1];strcpy(l.elem[k].name,);l.elem[k].num=stud.num;l.elem[k].room=stud.room;break;}else{strcpy(l.elem[l.length].name,);l.elem[l.length].num=stud.num;l.elem[l.length].room=stud.room;}}l.length++;fflush(stdin);printf("\n");printf("是否继续拔出?<y/n>:");scanf("%c",&ch);if(ch=='y') insert(l);else system("cls");}void Delete(linklist &l)//按学号删除该学生{int i,j,k=-1;char ch;printf("\n");printf("\n");printf("请输入要删除学生的学号:"); scanf("%d",&stud.num);for(i=0;i<l.length;i++){if(stud.num==l.elem[i].num){printf("该学生的信息为:\n");printf("\n"); printf("%-15s %-3d %7d\n",l.elem[i].name,l.elem[i].num,l.ele m[i].room);k=i;for(j=k;j<l.length-1;j++)l.elem[j]=l.elem[j+1];printf("\n");break;}}if(i>=l.length) printf("该学生不存在\n");if(k>=0)l.length--;fflush(stdin);printf("\n");printf("是否继续删除?<y/n>:");scanf("%c",&ch);system("cls");if(ch=='y') Delete(l);else system("cls");}void main() //主函数{linklist l; //界说线性表 linit(l); //调用初始化函数char ch;system("color a");printf("\n");printf(" *************************欢迎进入宿舍管理查询系统*************************\n");printf("\n");printf("请按任意键开始把持:");scanf("%c",&ch);system("cls");//将屏幕先前显示的内容清理失落create(l); //调用线性表创立函数system("cls");t=1;menu(); //调用主菜单函数while(f!=0){system("cls");switch(f){case 1: sort1(l); //调用按姓名排序函数printf("\n");if(l.length==0){printf("已无学生记录\n");printf("\n");disp();menu();}else{printf("按姓名排序:\n");print1(l);disp(); //调用返回主界面menu();}break;case 2: sort2(l); //调用按学号排序函数printf("\n");if(l.length==0){printf("已无学生记录\n");printf("\n");disp();menu();}else{printf("按学号排序:\n");print1(l);disp();menu();}break;case 3: sort3(l); //调用按房号排序函数printf("\n");if(l.length==0){printf("已无学生记录\n");printf("\n");disp();menu();}else{printf("按房号排序:\n");print1(l);disp();menu();}break;case 4:sort1(l); //先调用按姓名排序函数进行排序chazhao1(l); //再调用按姓名查找函数进行(二分)查找break;case 5: sort2(l); //先调用按学号排序函数进行排序chazhao2(l); //再调用按学号查找函数进行(二分)查找break;case 6: sort3(l); //先调用按房号排序函数进行排序chazhao3(l); //再调用按房号查找函数进行(二分)查找break;case 7: sort2(l); //调用拔出函数insert(l);system("cls");printf("显示拔出后的学生信息:\n");print1(l); disp();menu(); break;case 8: Delete(l); //调用删除函数if(l.length==0){printf("\n");printf("学生记录已被删除完\n"); printf("\n");disp();menu();}else{printf("显示删除后的学生信息:\n"); print1(l);disp();menu();}break;}}}4调试分析首先,运行法式进入“欢迎进入宿舍管理查询系统”界面,然后进入线性表创立界面中,输入学生的信息,创立好学生信息以后单击“n”键则进入把持界面(主界面),然后可按键进行把持.单击数字键“1”,则为按姓名排序单击数字键“2”,则为按学号排序单击数字键“3”,则为按房号排序单击数字键“4”,则为按姓名查找单击数字键“5”,则为按学号查找单击数字键“6”,则为按学号查找单击数字键“7”,则为按学号拔出单击数字键“8”,则为按学号删除系统中有如下关键词:①提示:当输入的数字键为0时,退出把持;②请输入数字键(1~8为把持键);③请按任意键进入主界面.测试数据:开始录入的数据:姓名学号房间号田浩然朱栖才丁强拔出的数据:姓名学号房间号殷林查找的数据:丁强(按姓名) 200910803050(按学号) 114(按房间号)删除的数据:200910803079(按学号)测试输出结果(以运行结果图暗示):欢迎界面:按任意键进入线性表的创立界面:输入数据,开始创立:请按键选择把持:4.3.5按姓名排序:按学号排序:按房号排序:拔出后显示:按姓名查找:4.3.10按学号查找:4.3.11按房号查找:进入删除功能,删除数据后显示剩余的学生信息:退出(数字为零时退出):①为了防止繁琐、改进算法,在一些函数中调用了其它的函数.如:在按(姓名、学号、房号)查找中都调用了 panduan1(ch) 和panduan2(ch)函数.②在拔出和删除模块中,显示学生的信息的下面总是有主界面,经过调试,运用system("cls")函数清屏后,显示的只有学生的信息了,再按键即可返回主界面.③本法式屡次运用了 disp()、menu()、system("cls")、fflush(stdin)等函数,经过屡次调试,已经很好的控制了显示的学生信息与主界面的转换.5 总结通过本次数据结构课程设计,我学到了很多,我充沛利用了这四天的时间,认真、自力的完成了作业.我觉得很满足,也很有成绩感,许多曾自己不知道的知识,现在知道了并能熟练的掌握了一些,比如:(1)一个函数既能调用它自己也能调用其它函数;(2)如fflush(stdin) 函数,它的功能是清空输入缓冲区,获得正确的输入数据;如system("cls")函数,它的功能是将屏幕先前显示的内容清理失落(3)我以前不知道scanf()和gets()输入函数的分歧之处,通过编程,调试,我明白了当scanf()输入字符串时不能带空格,否则不能输出后面的字符,而gets()能输入带空格的字符串.在编程与调试过程中我遇到了许多问题,具体问题如下:(1)以前不知道怎么把各个函数编排在一起,不能形成一个总体模块,现在经过实践与调试,已经能组装好各个函数模块,使它们实现各自的功能.(2)在按关键字(姓名、学号、房号)查找中,由于题目限制了只能用二分查找方式进行查找,所以有时呈现了关键字相同时(列如房号相同),就只能查出并显示出一个学生的信息,因此,本法式还不够完善.当使用顺序查找时,就能查找出所用关键字相同的学生的信息.固然,当既按姓名又按学号还按房号查找时那就查找唯一.但现在我只能依照题目给的要求去做.(3)按(姓名、学号、房号)排序和查找功能每个函数都写了一遍,很繁琐.C++中的函数模板能解决这个问题,但对C++我还是个初学者,现在还不理解如何去运用它,所以还不能对此法式作进一步修改,但我相信,不用多久,这个问题我一定能够解决.众所周知,要学好编程方面这一块,数据结构是必可少的,它里面有许多经典的算法和思想,是解决问题的必需品.很忸捏,虽然经过一学期的学习,但我掌握的知识很少,特别是树和图,只知道皮毛,目前还不能用这两方面的知识编程.在本系统中,我运用了数据结构中的线性表知识,运用顺序线性表完成了宿舍管理查询软件.在这次课程设计中,经过自己的编成和调试、老师和同学的帮手,我胜利的完成了这次作业,虽然它的功能还不是很多,也不是很完善,但我还是非常的兴奋,因为,它给我增添了编程方面的信心,使我更有信心去努力成为一个强力的法式员.参考文献[1]《C法式设计(第三版)》,谭浩强,清华年夜学出书社,2005.[2]《数据结构》(C语言版),严蔚敏,清华年夜学出书社,2003.[3]《数据结构题集》,严蔚敏,清华年夜学出书社,2005.[4]《数据结构》(C语言版),刘年夜有,高等教育出书社,2004.[5]《Data Structure with C++》,William Ford.William Topp,清华年夜学出书社,2003. [6]还有部份资料来源于互联网.。
数据结构课程设计——宿舍管理查询软件要点
秦皇岛分校NorthEastern University At QinHuangDao 数据结构课程设计宿舍管理查询软件班级学号班学生姓名提交日期2015年7月24日成绩计算机与通信工程学院一、需求分析1程序设计任务为宿舍管理人员编写一个宿舍管理查询软件。
①程序设计要求:A. 采用交互工作方式B. 建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)②查询菜单:(用二分查找实现以下操作)A. 按姓名查询B. 按学号查询C. 按房号查询③打印任一查询结果(可以连续操作)2、功能①要实现交互工作方式,各项操作结束后均应返回主菜单;②系统本无任何信息数据,要建立数据文件,需开发一个信息录入功能,即首先创建一个学员线性表,同时我们可以将数据暂时保存在内存中,所以我们未开发信息存盘功能;③信息录入后都保存在内存中,用户看不到,需要设计一个信息显示功能,信息的显示应该便于查阅,所以需具备按各种关键字显示的功能;④本系统按关键字(姓名、学号、房号)进行冒泡排序,采用二分查找方式分别实现按关键字(姓名、学号、房号)查询功能;⑤由于有些同学因为不同原因而离校,所以设计了删除功能;⑥由于有新同学入校,所以设计了插入功能;⑦当用户操作完毕需要退出时,我们提供了退出选项,便于使用者退出交互式工作系统。
3、功能模块图开皓5、输入和输出①输入的形式1) 开始创建线性表:按先后顺序输入姓名 (20个字以内),学号(整型),房号(整型)。
2) 根据用户所选择的操作键,然后再根据程序的相应提示进行输入。
选择操作键1 (按姓名排序):无输入; 选择操作键2 (按学号排序):无输入; 选择操作键3 (按房号排序):无输入;选择操作键4 (按姓名查找):输入要查找的姓名;4、流程图退出UA擒入学牛信鼠CLl<=f^=8选择操作键 选择操作键 选择操作键 选择操作键按学号查找) 按房号查找) 按学号插入) 按学号删除)输入要查找的学号; 输入要查找的房号; 按照提示顺序输入要插入的学生姓名,学号,房号; 输入要删除学生的学号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计宿舍管理查询软件计算机与通信工程学院一、需求分析1、程序设计任务为宿舍管理人员编写一个宿舍管理查询软件。
①程序设计要求:A. 采用交互工作方式B. 建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)②查询菜单: (用二分查找实现以下操作)A. 按姓名查询B. 按学号查询C. 按房号查询③打印任一查询结果(可以连续操作)2、功能①要实现交互工作方式,各项操作结束后均应返回主菜单;②系统本无任何信息数据,要建立数据文件,需开发一个信息录入功能,即首先创建一个学员线性表,同时我们可以将数据暂时保存在内存中,所以我们未开发信息存盘功能;③信息录入后都保存在内存中,用户看不到,需要设计一个信息显示功能,信息的显示应该便于查阅,所以需具备按各种关键字显示的功能;④本系统按关键字(姓名、学号、房号)进行冒泡排序,采用二分查找方式分别实现按关键字(姓名、学号、房号)查询功能;⑤由于有些同学因为不同原因而离校,所以设计了删除功能;⑥由于有新同学入校,所以设计了插入功能;⑦当用户操作完毕需要退出时,我们提供了退出选项,便于使用者退出交互式工作系统。
3、功能模块图4、流程图5、输入和输出①输入的形式1)开始创建线性表:按先后顺序输入姓名(20个字以内),学号(整型),房号(整型)。
2)根据用户所选择的操作键,然后再根据程序的相应提示进行输入。
选择操作键1(按姓名排序):无输入;选择操作键2(按学号排序):无输入;选择操作键3(按房号排序):无输入;选择操作键4(按姓名查找):输入要查找的姓名;选择操作键5(按学号查找):输入要查找的学号;选择操作键6(按房号查找):输入要查找的房号;选择操作键7(按学号插入):按照提示顺序输入要插入的学生姓名,学号,房号;选择操作键8(按学号删除):输入要删除学生的学号。
②输出的形式及范围根据用户选择的不同,会有不同的输出。
选择操作键1(按姓名排序):输出以姓名首字母排序的所有学生信息;选择操作键2(按学号排序):输出按学号从小到大排列的所有学生信息;选择操作键3(按房号排序):输出按房号从小到大排列的所有学生信息;选择操作键4(按姓名查找):若查找成功,则输出相应学生信息,若不成功,则输出该学生不存在;选择操作键5(按学号查找):若查找成功,则输出相应学生信息,若不成功,则输出该学生不存在;选择操作键6(按房号查找):若查找成功,则输出相应学生信息,若不成功,则输出该学生不存在。
选择操作键7(按学号插入):输出插入后的所有学生信息;选择操作键8(按学号删除):输出所需删除的学生信息,确认删除后,输出删除后的所有学生信息。
6、测试数据开始录入的数据:姓名学号房号刘备 1 102孙权 6 231周瑜 3 124正确输入:查找的数据:6(按学号)正确输出:孙权 6 231二、详细设计1、数据结构typedef struct //定义结构体成员{char name[20];int num; //学号和房号都为整型int room;}stu;stu stud;typedef struct{int length; //当前长度stu *elem; //存储空间基址int listsize; //当前分配的存储容量}linklist;2、数据int f;f为全局变量,指选择的操作键数char name[20];name 为姓名int num;num 为学号int room;room 为房号int length;length 为线性表的当前长度stu *elem;elem 指示线性表的基地址int listsize;listsize为当前分配的存储容量char c;c 为进入主界面的任意键char ch;ch 为判断字符y或nint i,j;在冒泡排序中,i 为外层循环次数,j 为内层循环次数int i;在打印学生信息时,i作为循环变量int m;int n;int a;m,n,a在二分查找中分别代表房号,学号,姓名int i,j,k;i,j,k在按学号插入中作为循环变量int i,j,k=-1;i,j,k在按学号删除中作为循环变量3、函数调用具体函数如下:void init(linklist &l):用于线性表初始化,通过调用C语言文件操作函数来实现。
void create(linklist &l):用于创建学生信息表,通过线性表来实现。
void sort3(linklist &l):用于按房号排序,通过采用冒泡排序的算法来实现。
void sort2(linklist &l):用于按学号排序,通过采用冒泡排序的算法来实现。
void sort1(linklist &l):用于按姓名排序,通过采用冒泡排序的算法来实现。
void chazhao3(linklist &l):用于按房号从小到大查找,通过采用二分查找的算法来实现。
void chazhao2(linklist &l):用于按学号从小到大查找,通过采用二分查找的算法来实现。
void chazhao1(linklist &l):用于按姓名从小到大查找,通过采用二分查找的算法来实现。
void print1(linklist &l):用于打印学生信息,通过调用文件操作函数实现。
void print2(linklist &l,int mid) :用于打印查找到的学生信息,通过调用文件查找函数实现。
int panduan2(char ch):用于如果学生不存在,判断是否继续查找,通过if语句,文件操作函数实现void panduan3() :用于如果已无学生记录则返回主界面,通过调用其他函数和文件操作函数实现。
void disp() :用于返回主界面,通过调用menu()函数实现。
void menu():用于列出操作菜单,通过输入输出语句实现。
void main() :程序操作的入口,是程序的主函数,可以按照已定义的函数调用子函数。
4、主程序:int main() //主函数{linklist l; //定义线性表 linit(l); //调用初始化函数char ch;system("color a");printf("\n");printf(" *************************欢迎进入宿舍管理查询系统*************************\n");printf("\n");printf("请按任意键开始操作:");scanf("%c",&ch);system("cls");//将屏幕先前显示的内容清理掉create(l); //调用线性表创建函数system("cls");t=1;menu(); //调用主菜单函数while(f!=0){system("cls");switch(f){case 1: sort1(l); //调用按姓名排序函数printf("\n");if(l.length==0){printf("已无学生记录\n");printf("\n");disp();menu();}else{printf("按姓名排序:\n");print1(l);disp(); //调用返回主界面menu();}break;case 2: sort2(l); //调用按学号排序函数printf("\n");if(l.length==0){printf("已无学生记录\n");printf("\n");disp();menu();}else{printf("按学号排序:\n");print1(l);disp();menu();}break;case 3: sort3(l); //调用按房号排序函数printf("\n");if(l.length==0){printf("已无学生记录\n");printf("\n");disp();menu();}else{printf("按房号排序:\n");print1(l);disp();menu();}break;case 4:sort1(l); //先调用按姓名排序函数进行排序chazhao1(l); //再调用按姓名查找函数进行(二分)查找break;case 5: sort2(l); //先调用按学号排序函数进行排序 chazhao2(l); //再调用按学号查找函数进行(二分)查找 break;case 6: sort3(l); //先调用按房号排序函数进行排序 chazhao3(l); //再调用按房号查找函数进行(二分)查找break;case 7: sort2(l); //调用插入函数insert(l);system("cls");printf("显示插入后的学生信息:\n");print1(l);disp();menu();break;case 8: Delete(l); //调用删除函数if(l.length==0){printf("\n");printf("学生记录已被删除完\n");printf("\n");disp();menu();}else{printf("显示删除后的学生信息:\n");print1(l);disp();menu();}break;}}}三、调试分析①为了避免繁琐、改进算法,在一些函数中调用了其它的函数。
如:在按(姓名、学号、房号)查找中都调用了 panduan1(ch) 和panduan2(ch)函数。
②在插入和删除模块中,显示学生的信息的下面总是有主界面,经过调试,运用system("cls")函数清屏后,显示的只有学生的信息了,再按键即可返回主界面。
③本程序多次运用了 disp()、menu()、system("cls")、fflush(stdin)等函数,经过多次调试,已经很好的控制了显示的学生信息与主界面的转换。
④通过本次课程设计,对线性表、冒泡排序、二分查找的应用有了更深入的了解。