宿舍管理查询软件程序设计报告书专业:计算机科学与技术(软件外包)题目:宿舍管理查询软件班级:201303参与人员:张钊顺指导老师:解庆元完成时间:2014年02月26日前言在校学生的信息管理是校园管理中的一个重要内容,随着国家扩招政策的继续实施,学生数量也不断增加、信息的不断细化、各个行业间联系的不断密切,对人事管理的要求也不断提高。如何记录和管理好学生的信息,对学生实施高效的宏观管理,对学生出入宿舍以及学生注入和迁出的信息的灵活的记录及更新,是一项繁重而艰巨的任务。关键词:C++;数据库表;宿舍信息查询;宿舍信息管理目录目录……………………………………………………………………1第一章开发环境和开发工具……………………………………..11.1C#语言简介………………………………………………..11.2开发背景………………………………………………….11.3开发环境…………………………………………………..1第二章算法思想2.1系统需求分析……………………………………………………42.2系统总体设计…………………………………………42.2.1系统设计目标…………………………………..42.2.2开发设计思想…………………………………..42.2.3系统功能模块设计……………………………..52.3算法思想描述…………………………………………5第三章算法实现3.1数据结构……………………………………………………..63.2程序模块……………………………………………………..63.3各模块之间调用关系………………………………………..73.4源程序代码…………………………………………………..7第四章测试与分析4.1测试数据选择………………………………………………164.2测试结果分析………………………………………………16用户手册………………………………………………………………19总结……………………………………………………………………19心得体会……………………………………………………………….20第一章开发环境和开发工具1.1C/C++语言简介C++标准可分为两部分,C++语言本身和C++标准库。C++标准库对于VisualC++是相当新的,实际上微软只是在发布VisualC++5.0时去除了一些“bug”。标准库提供了标准的输入/输出、字符串、容器(如矢量、列表和映射等)、非数值运算(如排序、搜索和合并等)和对数值计算的支持。应该说,C/C++包含了相对少的关键字,而且很多最有用的函数都来源于库,C++标准库实现容器和算法的部分就是STL。STL是数据结构和算法的一个框架,数据结构包括矢量、列表和映射等,算法包括这些数据结构的查找、拷贝和排序等。1994年7月,ANSI/ISOC++标准委员会投票决定接受STL为C++标准库的一部分,这个建议是根据AlexStepanov、MengLee和DavidMusser这三人的编程和软件库研究提出的。STL的产生是为了满足通用性的设计目标,而不是为了提高性能。1.2开发背景随着科学技术的不断发展,计算机科学日渐成熟,其强大的功能已为人们所深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。采用计算机进行信息化管理已成为衡量企业管理科学化和现代化的重要标志,而人事管理的全面自动化、信息化则是其中重要的组成部分。人事管理的好坏对于企业的决策者和管理者来说都至关重要,在很大程度上影响着企业的经济效益和社会效益。因此,本文所研究的人事管理信息系统具有一定的使用价值和现实意义。1.3开发环境本文所采用的开发环境主要是在一般的PC硬件环境和WindouwsVista/2003/XP系统由Visual++6.0编写而成,在用到MicrosoftVisualC++6.0中c语言的情况下,对于查询采用了逐个查询法,程序通过调试运行实现了设计目标,并且经过适当完善后,将可以应用在实际中解决问题。第二章算法思想2.1系统需求分析从总体分析可知,该宿舍管理系统必须满足用户以下基本需求:1可对入住学生可进行信息录入;2可对新入学生的信息进行插入3可按学号,姓名,房间号等任意一种方式查询学生的信息4可按学号,房间号来进行排序2.2系统总体设计2.2.1系统设计目标1本文研究:为宿舍管理人员编写一个宿舍管理查询软件,程序设计要求:1.1.1采用交互工作方式1.1.2建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(分别用冒泡、选择、插入排序实现)2查询菜单:(用二分查找实现以下操作)2.1.1按姓名查询2.1.2按学号查询2.1.3按房号查询3打印任一查询结果并可以连续操作。2.2.2开发设计思想基于以上系统设计目标,本文在开发人事管理信息系统时遵循了以下开发设计思想:●采用现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。●尽量达到操作过程中的直观、方便、实用、安全等要求。●系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。●系统应具备数据库维护功能,及时根据用户需求进行数据的添加、查找、显示、排序等操作。2.2.3系统功能模块设计本系统分为四个模块:查找子菜单、信息录入、信息显示、查找功能子菜单。得到如图3-1所示的系统功能模块图图3-1系统功能模块学生信息录入学生信息插入学生信息查询按姓名查询按学号查询按房间号查询学生宿舍管理学生信息显示插入后显示查询时显示录入后显示2.3算法思想描述该程序的由多种函数实现,每个函数具有不同的功能,主要有主菜单函数,插入功能子菜单函数,查找功能子菜单函数,学生信息录入函数,显示函数,排序函数,插入函数以及查找函数。在每个区域中会调用不同的函数来实现主要的功能。比如,在学生显示这个功能里调用显示函数;在插入功能里调用子菜单函数;在显示信息时调用排序函数先对需要输出的信心进行排序,然后再输出;在查找功能里会调用查找函数来进行查找,包括按照性别,学号,姓名,房间号等查询。而最主要的函数有1插入函数,它用尾插法来实现;2排序函数,用快速排序函数来实现;3查找函数,用逐个查找法;第三章算法实现3.1数据结构宿舍管理查询系统是一个数据库应用系统,学生的学号姓名房间号和性别等信息都保存在数据库中。然后可以通过程序来查找学生的各种信息。该程序所用的数学模型为线型结构。3.2程序模块根据用户需求不同,将系统划分了不同的功能模块,而依据不同的功能模块编写不同的程序模块,具体如下:1信息录入模块(即为程序中的shuru()函数)2信息插入模块(即为charu()函数)3信息查询模块(即为程序中的chazhao()函数,包括chazaho1(),chazaho2(),chazaho3()三个子函数)4信息显示模块(即为程序中的sort()函数)而各个函数之间由一个switch结构联系起来,而学生信息的连续输入或者连续查找则由相应的do-while结构来实现,从而实现各个模块之间的紧密衔接。3.3各模块之间的调用关系YN3.4源程序代码显示“宿舍管理查询系统主菜单”“信息录入”输入“学号,姓名,性别,房间号”是否继续“信息显示”输出已录入的学生信息查找功能子菜单插入功能子菜单插入学生信息分别进行查询输入“4”返回上一级菜单输入“3”返回上一级菜单输入“5”退出结束#includestdio.h#includeiomanip#includefstream#includestdlib.h#includeiostream.h#defineN20/*********************自定义函数声明部分**************************/voidshowheader();//声明显示表头部分intmenu();//声明主菜单函数intmenu3();//声明插入功能子菜单函数intmenu5();//声明查找功能子菜单函数//intquanxian();//声明用户权限管理函数//voidSavePass();//密码显示为*的函数structstudentshuru();//声明学生信息录入函数voiddisplay(structstudent);//声明显示函数voidsort(structstudentstu[N],int,int);//声明排序函数voidcharu(structstudentstu[N],int);//声明插入函数voidchazhao1(structstudentstu[N],inti);//声明按照学号查找函数voidchazhao2(structstudentstu[N],inti);//声明按照姓名查找函数voidchazhao3(structstudentstu[N],inti);//声明按照房间号查找/*********定义结构体************/structstudent{/*构造结构成员*/intID;charname[15];charsex;introomnum;floatscore[3];char*getSex(){if(sex=='g')return女;elsereturn男;}};/****************************主函数开始**************************/voidmain(){structstudentstu[N];intcount=0,m=0,j;charch,ch1;intchoice,choice3,choice4;//菜单选项及子菜单选项do//此循环体控制返回主菜单{ch1='n';//如果用户将主菜单选择错误,可用此变量控制是否重输choice=menu();switch(choice)//此条件结构控制选择菜单功能后的操作{case1://输入学生信息{do//此循环体控制是否继续输入{cout******************************学员信息录入**********************************\n;cout请输入第count+1个学员的信息\n\n;stu[count]=shuru();//调用输入函数//cout是否继续(y/n);fflush(stdin);//刷新标准输入缓冲区,把输入缓冲区里的东西丢弃ch=getchar();count++;}while(ch=='y');break;}case2://显示排序好的学生信息{cout******************************学员信息显示**********************************\n;cout\n排序后的信息如下:\n;sort(stu,0,count-1);//调用排序函数showheader();for(j=0;jcount;j++){display(stu[j]);//调用显示函数}break;}case3://插入功能{if(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,0,count-1);//调用排序函数showheader();for(j=0;jcount;j++){disp