北方民族大学 学士学位论文
论文题目: 基于SSH框架学生信息综合管理系统的设计与实现 ——宿舍信息管理模块
院(部)名 称: 计算机科学与工程学院 学 生 姓 名: 专 业: 计算机科学与技术 学 号: 20091490 指导教师姓名: 论文提交时间: 2013年5月20日 论文答辩时间: 2013年5月25日 学位授予时间: 2013年 月 日
北方民族大学教务处制
基于SSH框架的学生信息综合管理系统设计与实现
——宿舍信息管理模块
摘 要
随着Internet信息技术的发展,校园信息数字化建设已成为各高校教学模式的发展目标。本文就是在这样的背景下,按照北方民族大学学生处所提出的需求开发设计了学生信息综合管理系统。
本系统在J2EE开发平台下以SSH框架、Tomcat服务器、SQLServer2005数据库技术为基础,设计开发了学生信息综合管理系统。该系统划分为学生信息、宿舍信息、公共专栏、问卷调查、意见箱、国防教育、思想教育等功能模块。本文主要设计了宿舍信息管理子模块。该模块实现了对工作人员信息添加、删除、修改、查询的功能;实现了对宿舍楼信息初始化、按照学院分配宿舍的功能;实现了内宿外宿学生住宿信息添加、删除、修改、查询的功能;实现了学生申请转宿舍和逐级审批并打印报表的功能。
经测试该系统运行良好、功能完善、操作简单,并有很好安全性、易维护性和可扩展性。该系统已经实现了北方民族大学学生处所提出的全部需要,并且经验收已经投入试运行。
【关键字】 学生信息,综合管理,MVC,SSH
I
The Design and Implementation of Student Information Comprehensive Management System Based on SSH Framework
——Dormitory information management module
Abstract
With the development of Internet information technology, the construction of digital campus information has become the development goal of teaching mode in Colleges and universities. In this background, the Student Information Management System is designed according to the demand of the students affairs division of Beifang Univesity of Nationality.
Student Information Management System is realized by the J2EE platform ,SSH framework, Tomcat server, SQLServer2005 database. The system is divided into module of the student information, dormitory information, public column, questionnaire investigation, suggestion boxes, national defense education, ideological education. This paper mainly include the module of dormitory information management . It has realized function of adding, deleting modifying, querying staff information function; It has realized function of dormitory information initialization; It has realized function of adding, deleting, modifying, querying student accommodation information function; It has realized function of applying for the dormitory and approval and print the report.
The system is running well on testing. It is perfect function, simple operation and safety, maintainability and scalability. The students affairs division of Beifang Univesity of Nationality is satisified what we had finished. It has been put into trial operation.
Key Words:Student information,Integrated management,MVC,SSH
II
目 录
前 言 ............................................................... 1 1 需求分析 ............................................................. 2 1.1 项目背景 ......................................................... 2 1.2 项目需求分析 ..................................................... 2 1.3 宿舍信息管理模块需求分析 ......................................... 3 1.4 系统目标 ......................................................... 3 1.4.1 系统总体目标 .................................................. 3 1.4.2 系统总体功能目标 .............................................. 3 1.4.3 系统总体性能目标 .............................................. 4 1.4.4 系统总体安全目标 .............................................. 5 2 系统技术方案设计 ..................................................... 6 2.1系统架构选择 ...................................................... 6 2.2系统使用技术 ...................................................... 6 2.2.1 J2EE介绍 .................................................... 6 2.2.2 SSH框架 ..................................................... 7 2.2.3 AJAX技术 .................................................... 8 2.2.4 FreeMarker模板引擎 .......................................... 8 2.3 服务器和数据库的使用 ............................................. 9 2.3.1 Web服务器Tomcat ............................................. 9 2.3.2 数据库SQL Server 2005 ...................................... 10 2.4项目开发环境 ..................................................... 10 3 学生信息综合系统总体设计 ............................................ 11 3.1 系统总体功能模块分析 ............................................ 11 3.2 系统用例图 ...................................................... 14 3.3系统权限设计和安全性设计 ......................................... 14 3.3.1 权限设计 ..................................................... 14 3.3.2 安全性设计 ................................................... 15
III
4 宿舍信息管理模块的设计 .............................................. 16 4.1模块用例分析 ..................................................... 16 4.1.1 模块用例图 ................................................... 16 4.1.2 模块用例说明 ................................................. 17 4.2 模块的功能分析 .................................................. 17 4.3模块数据库的设计 ................................................. 18 4.3.1 模块E-R图 ................................................... 18 4.3.2 模块的流程图 ................................................. 20 4.3.3 模块的数据逻辑设计 ........................................... 21 4.4模块的数据字典 ................................................... 24 5 宿舍信息管理模块的实现 .............................................. 31 5.1 模块文件结构 .................................................... 31 5.2 宿舍工作人员信息管理 ............................................ 34 5.2.1 宿管员信息功能的实现 ......................................... 34 5.2.2 保洁员信息功能的实现 ......................................... 42 5.3 宿舍楼管理 ...................................................... 42 5.3.1 宿舍初始化功能的实现 ......................................... 42 5.3.2 学院宿舍分配功能的实现 ....................................... 46 5.4 学生住宿信息管理 ................................................ 50 5.4.1 学生住校内信息功能的实现 ..................................... 50 5.4.2 学生住校外信息功能的实现 ..................................... 55 5.5 学生宿舍申请管理 ................................................ 56 5.5.1 学生住宿申请功能的实现 ....................................... 56 5.5.2 审批申请功能的实现 ........................................... 58 5.6 报表打印管理 .................................................... 62 5.6.1 学生宿舍申请报表的实现 ....................................... 62 结束语 ................................................................ 65 致 谢 .............................................................. 66 参考文献 .............................................................. 67
IV
基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 前 言
随着计算机的广泛运用,信息系统在当今社会中处于越来越重要的地位。由于信息系统具有信息性、综合性、集成性、多样性和发展性等特征,使其被广泛应用于企、事业单位。而随着我校规模的不断扩大,学生人数的不断增加,需要管理的信息量也在成倍的增加。就目前而言,我校的学生管理系统比较单一,管理上相对麻烦和费事。如:管理学生的就只能管理学生,管理宿舍的就只能管理宿舍。基于这种情况,所以开发了一个B/S结构的学生信息综合管理系统。不仅可以管理学生信息和宿舍信息,还能实现学校办公的信息化。学生信息管理工作的系统化、规范化、自动化,大大提高了学校教学管理质量和办事效率。
本系统根据其功能和使用角色分为学生信息、宿舍信息、公共专栏、问卷调查、意见箱、国防教育、思想教育等多个子模块。根据登录用户权限的不同,所进行的操作也不一样。本文采用严格的软件开发规则,按照系统需求分析、系统技术方案、系统的总体设计、各模块的设计、实现的顺序,设计开发实现客户需求。通过对该学生综合信息管理系统进行分析,确定了功能模块的设计与实现方案。
本文共分为5章。第一章主要介绍了系统的开发背景、需求分析以及系统的总体目标;第二章介绍开发该系统使用的技术方案;第三章描述了系统的总体功能模块和系统的权限和安全性设定;第四章从功能设计和数据库的设计这两方面对宿舍信息管理子模块进行了详细的介绍;第五章对宿舍信息管理子模块的实现做部分介绍。
1
基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 1 需求分析
本章主要从该系统的开发背景、用户需求分析、总体目标三方面对该系统的需求进行分析和确定。
1.1 项目背景
目前很多高校都在努力实现学校信息的自动化和信息化,但是相对而言大多数学校的管理系统都比较单一,不够全面,在很多方面还没有做到合理的规划和使用,就比如学生处和学生之间办公这样一方面,学生要申请某一方面的内容时,得先去找学院老师批准,才能传达到学生处,前期工程是非常繁琐,并且还浪费时间,学生处想核对该学生的其他信息时还比较麻烦,总是要花很长时间才能办下来。所以为了满足学生处和学生的需求,开发并实现了该系统。
该项系统是鉴于目前北方民族大学学生人数剧增,学生信息呈现几何增加,学生处办公不方便,繁琐,浪费时间,而且查找学生信息资料不方便的的前提下,学生处对学生管理的自动化与准确化、方便化的要求日益强烈的背景下开发出来的,目前在很多学校,各类各样的与学生有关的管理系统层出不穷,该系统包含了学生信息管理、学生宿舍管理、以及学生处的办公信息化等管理机制。而且就目前而言,北方民族大学虽然有了学生信息管理系统,但是还是很缺乏学生宿舍方面的管理系统和学生处和学生之间办公管理的一个系统,因此为了满足学生处办公需求,也为了方便全校学生,继而开发,研究了该系统。该系统操作简单、便捷,功能易于掌握,便于操作。
1.2 项目需求分析
满足用户需求是建立一个系统的主要原因,也是这个系统存在的必然因素,认真考察用户的需求是每个系统建立的第一步。而一个系统也只有在满足了用户的需求后才能算是一个真正的系统,才可以将其运用其实际生活中。通过对用户的调查访问,其总体需求是:
1)该系统要实现学生信息的基本管理;
2)实现宿舍楼的管理,宿舍工作人员的管理,宿舍的分配,学生入住以及学生住校后的生活信息管理;
3)能快速方便的及时查询学生的信息,并且及时了解学生在宿舍的生活状态; 4)实现数据能够通过网络传送,实现数据共享,避免出现重复数据,冗余数据; 5)操作要简单方便,而且管理合理,具有可维护性和可扩展性; 6)实现网上申请和网上办公,数据管理信息化;
7)对毕业的学生必要的信息进行过滤和存储,作为历史纪录进行保存; 8)要做到一定的数据安全性,根据不同的用户设定不同的权限,所做操作将不一样,使系统具有一定的安全性。
9)数据要时刻备份,以免在紧急时可恢复数据。
2
基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 1.3 宿舍信息管理模块需求分析
1)学生处:将对工作人员里的宿管,保洁员的信息进行添加,修改,删除。对宿舍初始化,即添加宿舍楼,,宿舍类型,宿舍楼名,宿舍楼层,宿舍号,并且可以修改添加的以上信息。宿舍分配则对每个学院进行宿舍楼,楼类型,楼层,宿舍号,几人间进行添加,删除,修改,还可以通过宿舍号查询宿舍所住人员信息以及每个学院分得宿舍楼情况等操作。对学生宿舍递交的申请进行审批,查询操作。
2)宿管:将对内宿外宿学生信息进行添加,修改,删除,查询等进行操作,同时审批学生处审批过的学生宿舍递交的申请及宿舍信息里的宿舍初始化查询,宿舍分配信息查询,宿舍清空等操作。
3)学生:将对住宿信息里的宿舍初始化查询,宿舍分配信息查询操作,同时对宿舍申请的申请添加,修改,删除,查询,打印报表等进行操作。 4)辅导员:负责学生宿舍申请的审批,查询等操作。
1.4 系统目标
根据调查用户对其该系统的需求目标,该系统设计人员将该系统的初级功能目标设计为如下。 1.4.1 系统总体目标
学生综合信息管理系统的建立是为了学生处能快速方便的管理学生在校的学习生活状态,并对其突发情况进行快速、有效的处理,并且方便学生处查询学生信息。以及学生在宿舍的生活状态。方便学生处能快速便捷的查询学生的学生生活状态,使其学生处不用出门也能了解学生在其宿舍的生活状态。而且也能方便学生能快捷的申请与其相关的信息。根据具体的要求,初步确定其总目标为:
1)实现其学生的基本信息和学生的学籍变动进行统筹合理的管理; 2)实现其每年的离校生进行数据库的转移处理,而不是直接删掉; 3)学生处对其宿舍进行合理的分配和管理;
4)对学生住宿信息和学生在宿舍的卫生奖罚情况进行统计和记录; 5)实现每楼宿舍管理人员进行分配和管理;
6)对与学生相关的问卷调查进行合理的分类和统计;
7)实现学生宿舍申请,国防科预备役进行网上申请办公,实现信息网络化; 8)对学生处发的公告或者相关通知合理统一的管理; 9)系统具有友好性、易操作性、可维护性和可扩展性; 10)系统具有安全性和保密性。 1.4.2 系统总体功能目标
通过以上用户需求和总目标的分析,对学生信息管理系统的功能目标:
3
基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 1)学生信息:学生信息下又分为学生档案、学籍变动、违纪处分和证件补办。学生档案主要是对在校学生信息进行添加、修改和删除,在特定条件下查询学生信息和对毕业生信息进行数据库的转移和查询;学籍变动时对在校学生转学,休学等变动情况进行记录和修改;违纪处分是对学生在校期间违反学校相关规定给予的处分进行登记录入和修改;证件补办,主要是学生证丢失或其他证丢失时可以向学生处申请证件补办,实现申请书的填写,修改删除,以及学院和学生处之间的审批操作。
2)宿舍信息:宿舍信息包括宿舍分配和初始化、学生住宿信息、宿舍人员信息管理、宿舍奖罚、宿舍卫生、人气评价和宿舍专栏投稿;分别实现其信息的录入、修改和删除,以及根据特定的条件查询出特定的信息。
3)公告专栏:主要是实现通知的录入、修改、删除和发布,而且对其已经发布的通知,将不能进行修改。还可以根据其需要上传相关的附件,下载附件。
4)问卷调查:主要是实现题目的添加、修改和删除以及试卷的生成发布,学生可以根据发布的试卷进行答题。查询答题的结果。
5)国防教育:主要是实现预备役、征兵等申请书的填写、修改、删除、提交给学生处审批,学院审批。根据一定的条件插叙其审批结果。
6)思想政治:实现对各学院辅导员信息的添加、修改、删除,在特定条件下的查询思想政治人员的信息,具体说明辅导员的工作情况。
7)意见箱,学生根据其想法添加、修改、删除 其意见,根据自己的意向可以向不同部门提交意见。
8)系统管理,主要是管理以上各功能的菜单、学生处各部门、学生处个部门人员、班级和专业的管理、以及对系统的用户进行角色分配和管理。主要操作者是系统管理人员,给用户分配菜单和权限。 1.4.3 系统总体性能目标
一个系统的性能是信息系统功能实现的方式和效率的保障,是信息系统需求的重要组成部分。性能分析是对用户提出的各种性能要求进行综合分析,确定出合理的、可行的信息系统性能的工作。该学生信息管理系统的设计是根据本系的需求,通过与系领导的沟通初步确定该系统的性能目标:
1)约束性能:该系统在一定程度上对一定的用户进行了访问权限的约束,不同的用户,约束也不一样。
2)界面设置:页面设置为活的菜单栏形式,登陆的用户不同,所显示的菜单栏也将不一样,只显示该用户能进行操作的菜单,这样方便用户查看自己需要的信息,不至于弄混淆。
3)业务属性:应能具有较高的安全性,对内对外都有严格的身份认证和数据保密的措施;运行应该速度快、稳定、可靠,具有很高的健壮性和容错、纠错能力,还具有可维护性和可扩展性。
4)安全机制:非法用户不能使用系统,不能偷看系统的信息,各级使用者只能看到允许看到的系统信息,并且用户密码采用复杂的MD5加密算法,这保障了用户的安全性。
4
基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 1.4.4 系统总体安全目标
系统具备访问权限的识别和控制功能,未被授权的人不能访问应用管理系统,保证了授权人员或系统才能进行某些操作,获取某种数据。为保证系统安全性,系统对操作人员进行严格的分级权限管理,每个操作人员都有自己的账号,登录密码和权限等级,特定的权限等级只能进入特定的功能模块进行授权操作,系统提供了操作日志功能,除对系统的查询操作外,任何对系统的写操作都会在系统中留下完整的记录,包括操作发生的日期、时间、操作人员账号,以及对系统进行了何种操作,可以实时掌握运行情况,以备日后追查。为保证密码的可靠性,操作人员的密码只能修改不能读取。系统数据可以进行联机备份和联机恢复,备份的数据能保持完整性和一致性。为系统配备完善的供电系统和应急报警系统,机房要防火、放尘、防磁、防雷,机房的温度、湿度、电压符合计算机环境要求,机房定期进行维护保养,建立严格的机房安全管理制度,及时审查日志文件,非工作人员不得随意进入机房,任何人不得将有关露,任意抄录。
本章小结:本章根据用户的需求、总体目标等方面对学生信息管理系统进行分析和总结,并初步确定系统的方向和功能。给用户反馈系统的信息,与用户进行进一步的交互,从而确定系统的初步设计方案。
5
基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 2 系统技术方案设计
本章对系统的架构、开发的平台、Web服务器、数据服务器、辅助工具等进行分析选择,得出一个良好的技术方案。
2.1系统架构选择
本系统选择了基于B/S模式下的MVC三层架构开发。MVC是模型(Model),视图(View)和控制(Controller)的缩写,其目的实现Web系统的职能分工。其中Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现; View层用于与用户的交互,通常用JSP来实现; Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。B/S模式下的MVC三层结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。如图2-1基于B/S的三层架构所示。
图2-1基于B/S的三层架构
所谓三层架构就是将客户端所看到的界面内容通过特定的服务器验证后从数据库中取得,在返回客户页面。其具体结构如上图所示:其中界面层对应图中的是客户端浏览器,逻辑层对应图中的是应用服务器,数据层对应图中的是数据库服务器。
2.2系统使用技术
学生处信息综合管理系统是在J2EE开发平台下结合java web的SSH框架和JSP/Servlet技术以及FreeMarker模板引擎等开发的。 2.2.1 J2EE介绍
J2EE是Java2平台企业版(Java 2 Platform,Enterprise Edition)。
J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。而J2EE本身也具有可伸缩性、灵活性、易维护性,这些性质为系统提供了良好的规范化管理机制。
J2EE规范是这样定义J2EE组件的:客户端应用程序和applet是运行在客户端的
6
基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 组件;Java Servlet和Java Server Pages (JSP) 是运行在服务器端的Web组件;Enterprise Java Bean (E JB )组件是运行在服务器端的业务组件。2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上,参见图2-2 J2EE组件层次关系图。以下是 J2EE 典型的四层结构:
1)运行在客户端机器上的客户层组件:是基于Web方式的,也可以说是基于传统方式的
2)运行在J2EE服务器上的Web层组件:是JSP 页面或Servlet。 3)运行在J2EE服务器上的业务逻辑层组件:是代码逻辑体现,主要是满足银行、金融等一些特殊商务领域的,由运行在业务层上的enterprise bean 进行处理。 4)运行在EIS服务器上的企业信息系统(Enterprise information system)层软件:主要是处理一些大型机事务处理,数据库系统,和其它的遗留信息系统等信息系统的软件。
·
图 2-2 J2EE组件层次关系图
2.2.2 SSH框架
SSH为struts+spring+hibernate 的一个集成框架,是目前较流行的一种Java web运用程序开发框架,SSH框架如图2-3 所示。
1)Struts
Strust是一种基于J2EE平台的MVC框架,主要采用Servlet和JSP技术来实现的。它把Servlet、JSP、自定义标签和信息资源整合到一个统一的框架中,开发人员在开发时就能很好的利用它,而不用在编写实现全套MVC模式,极大的节省了时间。Struts是一个很好的MVC设计模式,使我们逻辑清晰编写程序层次分明。
7
基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 Struts负责web层,主要是接收网页中的表单提交数据,然后通过Action进行处理,再ForWard到对应的网页,在Struts-config.xml文件中定义了 2)Spring Spring 是一个解决了许多在J2EE开发中常见问题的强大框架。Spring 提供了管理业务对象的一致方法并且激励了注入对接口编程而不是对类编程的良好习惯。Spring 的构成基础是基于使用JavaBean属性的Inversion Control容器,容器里集成了hibernate和其它O/R mapping(对象关系映射)解决方案。Spring 还提供了唯一的事物管理抽象,他能够为各种底层事务管理技术提供一个一致的变成模式,如JDBC。Spring 还提供了可以和IOC容器集成的强大而灵活的MVC Web框架。 Spring 负责业务层管理,即是Service。Service 为Action提供统一的接口调用接口,封装持久层的DAO,并集成Hibernate,Spring可对JavaBean和事物进行统一管理。 3)hibernate Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操作数据库。Hibernate是一种ORM映射工具,它不仅提供了从Java类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用JDBC和SQL来手工操作数据库,使用Hibernate,可以大大减少操作数据库的工作量。Hibernate 可以再任何场合JDBC的场合。可以再java客户端也可以在web应用中使用。 Hibernate负责持久层,完成数据库的CRUD操作,Hibernate有一组hbm.xml文件和PO(持久对象),是与数据库中的表相对应的,然后定义DAO,这些是与数据库打交道的类。 2.2.3 AJAX技术 AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术,Ajax的核心是JavaScript对象XmlHttpRequest,Ajax是使用客户端脚本与Web服务器交换数据的Web应用开发方法。这样,Web页面不用打断交互流程进行重新加裁,就可以动态地更新。使用Ajax,用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的Web用户界面,并且减少服务器的压力,让用户感觉在速度上更流畅。 2.2.4 FreeMarker模板引擎 FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。本系统在首页信息显示时需要此技术,因为struts2的所有标签都是用freemarker写的,在freemarker中就可以直接引用struts2的任何标签,相当的方便,当你打开页面的时候freemarker可也说是加载最快的。jsp则需要转换为servlet所以第一次要慢一些,因此在本系统的首页我们采用了这个模板引擎。 8 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 图2-3 SSH框架图 2.3 服务器和数据库的使用 根据基于B/S三层架构和开发技术的介绍,下面将对应用服务器、数据库服务器进行说明。 2.3.1 Web服务器Tomcat Web 服务器主要功能是提供网上信息浏览服务,是目前发展最快和最广泛的服务。我们使用的Web服务器采用Tomcat。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet和JSP规范总是能在Tomcat 中得到体现。Tomcat服务器初次执行JSP的过程如图2-4所示。 当Tomcat服务器接收到Web用户的JSP文件请求时,它首先对JSP文件进行语法分析,并将JSP文件生成JavaServlet源文件或直接调用所编写的JavaServlet源文件,然后对其进行编译,进行信息的传递,最后完成Web用户的请求。 Tomcat服务器是当今主流的开源服务器,而且tomcat服务器还是免费的能大大减少系统开发的成本。所以本系统决定用Tomcat作为服务器。 9 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 Tomcat Server请求JSP页面生成或调用Servlet源代码响应经编译的Servlet类 图2-4 Tomcat服务器初次0执行JSP的过程图 2.3.2 数据库SQL Server 2005 本模块采用SQL Server 2005作为数据库。SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL Server 是一个关系数据库管理系统,具有使用方便、可伸缩性好与相关软件集成程度高等优点,提供了企业级的数据管理。SQL Server 2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。 2.4项目开发环境 操作系统:Windows XP UML建模工具:Microsoft Visio Web服务器:Tomcat 数据库服务器:SQL Server 2005 数据库模型设计:PowerDesinger 软件开发工具:MyEclipse8.5 网页发布工具:Dreamweaer 图片处理工具:photoshop 本章小结:本章通过对系统的技术进行详细的分析,确定了系统的技术方案,为系统的设计奠定了基础。 10 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 3 学生信息综合系统总体设计 本章将从学生信息综合管理系统的功能模块分析、系统用例图、 系统权限设计和安全性设计四个方面介绍系统即将实现的功能,为后期系统菜单的设计及数据库的设计做好前期基础。 3.1 系统总体功能模块分析 根据用户需求和管理的需要,我们把系统的功能模块划分为宿舍信息、公告专栏、意见箱、问卷调查、学生信息、国防教育、思想政治和系统管理模块。其中学生信息综合管理中包括学生信息、思想政治、国防教育、系统管理四个模块。学生处综合管理包括宿舍信息、公告专栏、意见箱、问卷调查四个个模块。各模块的详细划分如下: 1)宿舍信息:住宿信息、宿舍申请、宿舍卫生、宿舍奖罚、人气评价、投稿专栏、工作人员。住宿信息分为宿舍初始化、宿舍分配、内宿学生信息、外宿学生信息。宿舍初始化又分为宿舍楼、楼层、宿舍号的添加、修改、删除、查询;宿舍分配又分为宿舍楼、楼层、宿舍号的分配,修改,删除,查询;内宿学生信息又分为录入、删改、查询以及宿舍清空;外宿学生信息录入、删改、查询;宿舍申请分为申请录入、删改、查询、审批;宿舍卫生分为录入、删改、查询。宿舍奖罚分为录入、删改、查询;人气评价评分、结果查询;投稿专栏分为录入、删改、查询;工作人员分为宿管信息录入、宿管信息删改、宿管信息查询,保洁员信息录入、保洁员信息删改、保洁员信息查询。 2)公告专栏:通知录入、通知删改、通知查看,首页图片录入、删改、查询。 3)意见箱:意见录入、意见删改、意见查看。 4)问卷调查:问卷录入、问卷作答和问卷结果查询,其中问卷的录入又包括问卷的录入、删改、查询。 5)学生信息:学生档案、学籍变动、证件补办、违纪处分。学生档案分为学生信息录入、删改、查询;学籍变动分为录入、删改、查询;证件补办分为申请、删改、查询、审批;违纪处分分为录入、删改、查询。学生档案中的学生信息录入又分为批量导入和手动录入;证件补办申请又分为学生证件补办申请和其他补办申请;证件补办的学院审批又分为已审批和未审批;证件补办学生处综合科审批又分为已审批和未审批。 6)国防教育:国防申请、国防删改、国防查询和审批。国防教育的申请分为军训奖励登记、预备役申请和征兵申请;国防教育的学院审批分为已审批和未审批;国防教育的国防教育科审批有分为已审批和未审批。 7)思想政治:个人信息录入、个人信息删改、个人信息查看。 8)系统管理:菜单管理、组织机构管理、角色管理、用户管理、部门人员管理和专业班级管理。学生信息综合管理功能模块如图3-1所示。 11 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 学生综合信息管理学生信息思想政治国防教育系统管理学生档案学籍变动违纪处分证件补办个人信息录入个人信息查询个人信息删改国防教育申请国防申请查询国防申请删改学院审批国防教育科审批系统菜单管理组织机构管理系统角色管理系统用户管理部门人员管理专业班级管理学生信息录入学生信息查询学生信息修改学籍变动录入学籍变动删改学籍变动查询违纪录入违纪删改违纪查询证件补办申请证件补办删改证件补办查询学院审批学生处综合科审批军训奖励登记预备役申请征兵申请未已未已审审审审批批批批批量导入手动录入学生证补办申请其他证补办申请未已未已审审审审批批批批 图 3-1 学生信息综合管理功能模块图 (a) 12 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 学生处综合信息管理宿舍信息公告专栏意见栏问卷调查住宿信息宿舍申请宿舍卫生宿舍奖罚人气评价投稿专栏工作人员通知录入通知删改通知查看提意见意见删改意见查询问卷录入问卷作答问卷结果查询宿管信息录入宿管信息删改宿管信息查询保洁员信息录入保洁员信息删改保洁员信息查询问卷录入问卷查询问卷删改问卷作答问卷结果查询宿舍初始化空宿舍分配内宿学生信息外宿学生信息申请宿管审批学院审批学生处审批卫生录入卫生删改卫生查询奖罚录入奖罚删改奖罚查询评分保洁员评价结果宿管评价结果投稿稿件删改稿件查询宿舍初始化录入宿舍初始化查询宿舍初始化修改宿舍分配录入宿舍信息删改宿舍信息查询学生信息录入學生信息删改學生信息查询外宿生信息录入外宿生信息删改外宿生信息查询转宿舍申请其他申请走读申请申请表删改申请表查询未审批已审批 图 3-1 学生信息综合管理功能模块图(b) 13 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 3.2 系统用例图 统用例图用来描述系统业务功能,反映了各功能模块与用户之间的交互关系。 系统用例是由参与者、用例、系统边界、线条组成。参与者既是与系统交互的人或事物,在该系统中既是系统用户;椭圆框表示用例,既是系统功能模块;系统边界他、用矩形框表示;线条是连接参与者和用例,表示参与者能够进行的操作。由需求分析确定了该系统的参与者有学生、学生处、辅导员、保洁员、宿舍管理员、系统管理员等六类;其用例有学生信息、宿舍信息、公告管理、问卷调查、国防教育、意见箱、思想政治和系统管理。如学生综合信息管理用力图3-2所示。 学生综合信息管理系统宿舍信息*系统管理人员公告专栏学生*问卷调查意见箱学生处保洁员学生信息国防教育宿舍管理员辅导员思想政治系统管理 图3-2 学生综合信息管理总体用例图 3.3系统权限设计和安全性设计 3.3.1 权限设计 学生综合信息系统是一个不仅能存储学生信息还能存储于学生相关的一些信息和系统的其它用户信息的一个系统,保存的数据多而且数据量大,所以对于一些特定的操作或特定的功能只能有特定的人去操作,如某些与学生相关的申请,就只能由学生提交申请表,学生所在的学院辅导员审批,然后再由学生处管理该申请的人员进行审批。系统就得具有严格的权限设定,根据系统需求,本系统的用户有,学生,管理 14 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 员,学生处,保洁员,辅导员,宿舍管理员。 1)学生:能够查看自己的信息,以及查看宿舍的相关信息,还有提意见、提交各种申请和查看学生处公告等权限。能进行部分增删改查。 2)管理员:是分配添加各种菜单,给用户分配各种操作权限,以及分配在特定时间里才能进行特定操作的菜单,如问卷调查模块下的问卷作答。还可以查看该系统的所有功能。能进行所有功能的操作。 3)学生处:主要是发布公告,分配宿舍楼,管理宿舍的工作人员,查看与学生相关的信息以及审批学生提交的申请和发布问卷等功能。能进行通知的增删改查,其它只能审批和查看。 4)保洁员:可以查看自己的信息和查看自己的评分结果。 5)辅导员:可以查看学生的相关信息,以及自己的相关信息,还有审批学生提交的审批表。 6)宿舍管理员:主要是学生住宿信息的录入、修改,以及后期与学生宿舍相关的信息录入和修改。还能查看自己的相关信息和查看学生处下发的通知。 3.3.2 安全性设计 安全性是现在的系统中最关键的部分,是一个系统维护中必不可少的,它关系到信息的保密性。 1)开发过程中数据安全性,在本设计中,一方面考虑到安全性问题,另一方面考虑到是以小组形式开发的;前期我们统一设计数据库,统一建立数据库文件,有改动的地方就进行记录,后期整合项目的时候统一进行数据库的修改。而且为了达到数据的安全性,我们小组人员经商议后绝不像外人透露,都做了一定的保密工作,而且在后期整合过程中,我们将数据库安装成服务器和客户端,这样实现了服务器端的统一管理,作为服务器端要达到一定的安全性又使其他组员可以方便的访问则必须将数据库进行设定。 2)界面的数据安全性,我们在系统登录界面建立了完善的用户名和密码识别体系,还加入了验证码的设别。对系统做了严格的权限设定和系统的操作日志记录,记录登录者所做的操作。 3)后期数据安全性维护,在后期运行管理中定期备份数据库文件,防止因突发情况下信息丢失。 系统的数据安全性与计算机系统的硬件可靠性,系统的软件及数据库系统的可靠性密切相关,如果一个经常发生磁盘驱动设备故障或者系统常瘫痪的系统能保证数据的完整性。所以要保证一个数据的安全和完整性,好的硬件设备也是必不可少的。 本章小结:从系统的功能模块图和系统用例图分析了各功能模块图和系统用户之间的操作关系,还对系统的权限和安全性设计,为后期数据库实体关系的分析和系统的实现奠定了基础,也是后期系统维护阶段必不可少的一部分。 15 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 4 宿舍信息管理模块的设计 本章将就宿舍管理模块实现宿舍工作人员的管理,住宿信息的管理,宿舍申请的管理三大功能,这些功能有按权限的不同而分配不同角色的人员进行操作。 4.1模块用例分析 4.1.1 模块用例图 通过需求分析确定了该模块角色为学生,宿管,学生处三个。用例是用来述业务功能的,是系统跟用户的交互,是系统提供的功能块,用例图展示了用例之间以及同用例参与者之间是怎样相互联系的[6]。用例图用于对系统、子系统或类的行为进行可视化,使用户能够理解如何使用这些元素,并使开发者能够实现这些元素。本模块中,宿舍信息模块的用例主要包括了:工作人员,住宿信息,宿舍申请,其中学生处将对工作人员里的宿管,保洁员进行添加,修改,删除,同时对宿舍初始化,宿舍分配进行添加,删除,修改,查询等操作,并且对学生宿舍申请进行审批操作。学生将对住宿信息里的宿舍初始化查询,宿舍分配信息查询操作,同时对宿舍申请的申请添加,修改,删除,查询等进行操作。宿管将对内宿外宿学生信息进行添加,修改,删除,查询等进行操作,同时审批宿舍申请及宿舍信息里的宿舍初始化查询,宿舍分配信息查询操作。辅导员则负责学生宿舍申请的审批。结合系统实际情况,如图 4-1宿舍信息模块用例图所示。 宿舍信息子模块用例图住宿舍信息宿管学生宿舍申请辅导员工作人员学生处 图4-1 宿舍信息模块用例图 16 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 4.1.2 模块用例说明 用例ID号 用例名称 创建者 最后更新者 创建日期 最后更新日期 参与者 UC-1 宿舍信息模块用例图 向小千 向小千 2013年5月6日 2013年5月6日 学生处,宿管,学生,辅导员 1.学生处将对工作人员里的宿管,保洁员进行添加,修改,删除,同时对宿舍初始化,宿舍分配进行添加,删除,修改,查询等操作,并且对学生宿舍申请进行审批操作。 2.宿管将对内宿外宿学生信息进行添加,修改,删除,查询等进行操作,同时审描述 批宿舍申请及宿舍信息里的宿舍初始化查询,宿舍分配信息查询操作。 3.学生将对住宿信息里的宿舍初始化查询,宿舍分配信息查询操作,同时对宿舍申请的申请添加,修改,删除,查询等进行操作。 4.辅导员则负责学生宿舍申请的审批。 前置条件 管理员给以上用户分配权限,学生信息批量导入数据库。 后置条件 先由学生处操作,再由宿管操作,其次学生操作,最后辅导员操作。 主干过程 无 分支过程 无 1.登录者权限不够,操作报异常。 2.学生数据没有导入到数据库,报异常。 异常 3.服务器里的文件丢失,无法匹配数据路径,报异常 4.用户数据不存在,报异常。 包含 无 优先级 高 数据流情况 无 特别需求 无 假设 无 4.2 模块的功能分析 1)学生处:将对工作人员里的宿管,保洁员的信息进行添加,修改,删除。对宿舍初始化,即添加宿舍楼,,宿舍类型,宿舍楼名,宿舍楼层,宿舍号,并且可以修改添加的以上信息。宿舍分配则对每个学院进行宿舍楼,楼类型,楼层,宿舍号,几人间进行添加,删除,修改,还可以通过宿舍号查询宿舍所住人员信息以及每个学院分得宿舍楼情况等操作。对学生宿舍递交的申请进行审批,查询操作。 2)宿管:将对内宿外宿学生信息进行添加,修改,删除,查询等进行操作,同时审批学生处审批过的学生宿舍递交的申请及宿舍信息里的宿舍初始化查询,宿舍分配信息查询,宿舍清空等操作。 3)学生:将对住宿信息里的宿舍初始化查询,宿舍分配信息查询操作,同时对宿舍申请的申请添加,修改,删除,查询,打印报表等进行操作。 4)辅导员:负责学生宿舍申请的审批,查询等操作。 17 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 宿舍信息住宿信息宿舍申请工作人员宿舍初始化空宿舍分配内宿学生信息外宿学生信息学生处审批宿管审批学院审批申请宿管信息录入宿管信息删改宿管信息查询保洁员信息录入保洁员信息删改保洁员信息查询宿舍初始化录入宿舍初始化查询宿舍初始化修改宿舍分配录入宿舍信息删改宿舍信息查询学生信息录入學生信息删改學生信息查询外宿生信息录入外宿生信息删改外宿生未已信审审息批批查询转宿舍申请其他申请走读申请申请表删改申请表查询 图4-2 宿舍信息模块功能图 4.3模块数据库的设计 4.3.1 模块E-R图 由于页面的局限性,有些属性没有列出来。根据对模块功能图的分析,将模块实体分为十五个:宿舍楼,分配楼层宿舍号,宿舍分配,宿舍状态,学生住宿登记,外住学生信息,宿管,保洁员,宿舍申请,组织机构,学生基本信息,学生相关信息, 18 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 班级,学生处人员,学工队伍。其中实体:组织机构,学生基本信息,学生相关信息,班级,学生处人员,学工队伍这六个是负责从其他模块读取数据,宿舍信息模块E-R图如图4-3所示。 编号姓名身份证号用户(宿管人员)n包含入职时间按编号姓名1楼号用户(保洁员)n包含1宿舍楼1楼类型身份证号入职时间按包含n负责人姓名组织机构宿舍1办公电话机构名称上级机构宿舍登记表宿舍号1关系表n学生id宿舍状态idn用户(学生)学号组织机构id预科学号性别 图4-3 宿舍信息模块E-R图(a) 19 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 学号组织机构id预科学号性别身份证号码姓名密码用户(学生)1出生年月民族编号姓名省份申请1编号姓名用户(宿管人员)1办理n宿舍申请nn审批1用户(辅导员)身份证号入职时间按审批职称民族1用户(学生处人员)编号姓名组织机构民族 图4-3 宿舍信息模块图(b) 4.3.2 模块的流程图 这个宿舍申请的流程先是宿管人员对学生住校内信息进行登记,然后学生才有权利申请相应的申请,否则不允许提交,接着该学生所在的学院辅导员进行查询之后对其进行审批,审批结果会显示在学生申请查询里,接着学生处会审批由各个学院审批通过之后上来的申请,同样结果也会自动显示,最后由宿管办理。每次的审批人及时间都会自动写入数据库。同时这个审批学生可以自己知道审批到哪个环节,最后可以打印生成doc报表,在每一道审批里都会显示上一次审批人的姓名,这样就可以随时了解谁批了该审批,在宿管审批里,分为转宿舍审批、走读审批、其它审批,转宿舍审批需要改动学生住宿信息后才可以审批通过,否则不会让其审批通过,其它两个直接通过或是拒绝。如图4-4宿舍申请流程图所示。 20 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 学生学生填写申请转宿舍,走读,其他通知辅导员审批通知学生处审批宿管审批通知 修改学生转住宿信息通知 图4-4 宿舍申请流程图 4.3.3 模块的数据逻辑设计 1) 关系模式 (a)实体模式 实体模式的设计主要是根据模块的E-R图写书相应的实体和实体对象中对应的描述该实体的属性值,是确切存在的对象。 宿舍信息实体模式有:宿舍楼、宿舍状态、部门、学生相关信息共4各,其如下: Tb_floor(floor_id,floor_num,floor_type,floor_name,del,col1,col2,col3) Tb_dormstate(dormstate_id,dormstate_name,del,col1,col2,col3) Tb_dept(dept_id,dept_name,dept_upid,dept_perName,dept_offpho,dept_offspace,dept_pernum,dept_email,del,col1,col2,col3) Tb_student_related(student_related_id,student_related_photo,student_related_regtime,student_related_mschool,student_related_address,student_related_Email,student_related_phone,student_related_health,student_related_addstate,student_related_postal,student_related_homephone,student_related_account,student_related_edulevel,student_related_qqnum,student_related_blood,del,col1,col2,col3) 21 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 (b)关联类模式 关系类模式是根据实体和实体之间的某些关系而产生的实体类就是关联类。 宿舍信息关联模式有:班级、学生信息、宿舍楼信息、宿舍分配、学生内宿信息、学生外宿信息、宿管员信息、保洁员信息、宿舍申请、学生处、辅导员,其如下: Tb_class(class_id,class_name,class_teacher,class_num,dept_id,del,col1,col2,col3) Tb_student(student_id,student_related_id,class_id,dept_id,student_num,student_preparatory_num,student_name,student_password,student_sex,student_idcard,student_birth,student_nation,student_province,student_political,del,col1,col2,col3) Tb_floor_dorm(floor_dorm_id,floor_id,floor_dorm_story,floor_dorm_name,del,col1,col2,col3) Tb_dormdistribute(distribute_id,floor_id,floor_dorm_id,dept_id,dormstate_id,del,col1,col2,col3) Tb_indorm(indorm_id,distribute_id,student_id,indorm_time,indorm_prove,indorm_job,indorm_remarks,indorm_sumstu,indorm_monery,del,col1,col2,col3) Tb_outdorm(outdorm_id,student_id,outdorm_time,outdorm_address,outdorm_remarks,outdorm_name,outdorm_phone,outdorm_prove,del,col1,col2,col3) Tb_dormadmin(doradmin_id,floor_id,doradmin_num,doradmin_name,doradmin_password,doradmin_sex,doramin_position,doradmin_jobtime,doradmin_nation,doradmin_address,doradmin_idcard,doradmin_Email,doramin_phone,del,col1,col2, col3) Tb_cleaner(clean_id,floor_id,clean_num,clean_name,clean_password,clean_sex,clean_position,clean_jobtime,clean_nation,clean_address,clean_idcard,clean_Email,clean_phone,del,col1,col2,col3) Tb_dormapply(dormapply_id,student_id,counsellor_id,off_id,doradmin_id,dormapply_num,dormapply_clause,dormapply_reason,dormapply_time,dormapply_colview,dormapply_coltime,dormapply_offview,dormapply_offtime,dormapply_dormview,dormapply_dormtime,dormapply_financeview,dormapply_financetime,dormapply_famview,dormapply_famtime,dormapply_famname,dormapply_type,del, col1,col2,col3) Tb_counsellor(counsellor_id,counsellor_num,counsellor_name,counsellor_password,counsellor_sex,counsellor_birth,counsellor_zhicheng,counsellor_zhiwu,dcounsellor_worktime,dcounsellor_jobtime,counsellor_degree,counsellor_edustatus,dcounsellor_gradschool,counsellor_profession,counsellor_phone,counsellor_nation,dept_id,del,col1,col2,col3) Tb_stuOffice(off_id,off_num,off_name,off_sex,off_Email,off_position,dept_id,off_phone,del,col1, col2,col3) 2)只有属性的分析类(实体类)模型 概念数据模型(Conceptual Data Model)[3],简称概念模型,是面向用户的现实世界的模型,设计人员在设计的初始阶段,与数据库管理系统中的相关技术知识无关,只分析现实需求中的数据之间的联系而建立的模型。 22 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 图4-5 宿舍信息模块物理模型图 概念模型最常用的就是E-R模型,本系统的概念模型是建立在Power Designer中的CDM模型,在Power Designer中,可以根据已经设计好的CDM生成PDM(Physical Data Model物理数据模型),而PDM就是数据库中各种数据表的模型展现,可以在 23 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 Power Designer软件中自动生成与各种数据库对应的建表语句和索引,约束。在Power Designer 中建立CDM,然后生成PDM,在PDM中检查是否已经基本符合毕业设计相关数据需求,如果是,则生成相对应的SQL Server 2005 数据库的建表语句以及相关索引,约束;如果否,则分析PDM模型需要改动之处,反向生成CDM后进行改动。在本模块中如果需求改动,需要调整数据库相关表的结构,可以在CDM中进行改动,继而生成PDM和相关数据库建表语句等,在本系统中,所有主键都为自动增长,在持久化类的配置文件中, 4.4模块的数据字典 1) 学生基本信息表(tb_student) 学生基本信息表只要记录了学生的一些信息,例如学号、姓名、民族、身份证、政治面貌等等,学生基本信息表是贯穿整个数据字典的重要表之一,其表字段如表4-1学生基本信息表 表 4-1学生基本信息表 序标 号 识 1 2 3 4 5 6 7 8 9 表ID 学号 预科学号 姓名 密码 性别 出生年月 属 性 student_id student_num 类 型 int varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar int int int varchar varchar varchar 是否是否备 主键 外键 注 是 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 是 否 否 否 否 否 否 否 否 否 是 是 否 否 否 否 唯一标识该表 不允许重复 不允许重复 不允许重复 组织机构id dept_id student_name student_password student_sex student_birth student_nation student_province student_political class_id del col1 col2 col3 student_preparatory_num varchar 身份证号码 student_idcard 10 民族 11 省份 12 政治面貌 13 班级ID 15 删除标记 16 预留字段1 17 预留字段1 18 预留字段1 14 相关信息ID student_related_id 2)学生相关信息表(tb_student_related) 学生相关信息表主要记录学生的一些信息,例如家庭地址,联系电话,银行账号等等,与学生基本信息表构成主外关系。其表字段如表4-2学生相关信息表。 24 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 表 4-2学生相关信息表 序1 2 3 4 5 6 7 8 9 标 表ID 照片 报到时间 所在高中 家庭住址 E-mail 联系电话 健康状况 户口状况 属 性 student_related_id student_related_photo student_related_regtime student_related_mschool student_related_address student_related_Email student_related_phone student_related_health student_related_addstate student_related_postal student_related_account student_related_edulevel student_related_qqnum student_related_blood del col1 col2 col3 类 型 int varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar 是否是 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 是否否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 备 唯一标识该表 号 识 主键 外键 注 10 邮政编码 11 家庭电话 12 银行账号 13 学历层次 14 扣扣号 15 血型 16 删除标记 17 预留字段1 18 预留字段2 19 预留字段3 student_related_homephone varchar 3)班级表(tb_class) 班级表主要记录其所属专业,班级名称等等,其表字段如表4-3班级表。 表 4-3班级表 序号 1 2 3 4 5 6 7 8 9 标 识 表ID 班级名称 班主任 人数 组织机构ID 删除标记 预留字段1 预留字段2 预留字段3 属 性 class_id class_name class_teacher class_num dept_id del col1 col2 col3 类 型 int varchar varchar varchar int int varchar varchar varchar 是否主键 是 否 否 否 否 否 否 否 否 是否外键 否 否 否 否 是 否 否 否 否 备 注 唯一标识该表 4)宿舍楼表(tb_floor) 宿舍楼表主要记录宿舍楼的名称,类型,楼号等等,其表字段如表4-4宿舍楼表。 25 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 表 4-4宿舍楼表 序号 1 2 3 4 5 6 7 8 标 识 表ID 楼号 楼类型 宿舍楼名 删除标记 预留字段1 预留字段2 预留字段3 属 性 floor_id floor_num floor_type floor_name del col1 col2 col3 类 型 int varchar varchar varchar varchar varchar varchar varchar 是否主键 是 否 否 否 否 否 否 否 是否外键 否 否 否 否 否 否 否 否 备 注 唯一标识该表 5)分配楼层宿舍号表(tb_floor_dorm) 分配楼层宿舍号表主要记录宿舍楼,楼层,宿舍号等等,其字段如表4-5分配楼层宿舍号表。 表4-5分配楼层宿舍号表 序号 1 2 5 4 5 6 7 8 标 识 表ID 宿舍楼ID 楼层 宿舍名 删除标记 预留字段1 预留字段2 预留字段3 属 性 floor_dorm_id floor_id floor_dorm_story floor_dorm_name del col1 col2 col3 类 型 int varchar varchar varchar varchar varchar varchar varchar 是否主键 是 否 否 否 否 否 否 否 是否外键 否 是 否 否 否 否 否 否 备 注 唯一标识该表 不允许重复 6)宿舍分配表(tb_dormdistribute) 宿舍分配表主要记录了宿舍楼,宿舍楼层,分配的学院,宿舍号,宿舍入住多少人等等,其表字段如表4-6宿舍分配表。 表 4-6宿舍分配表 序号 1 2 3 4 5 9 标 识 表ID 宿舍楼ID 分配楼层宿舍号ID 学院ID 宿舍状态ID 删除标记 属 性 distribute_id floor_id floor_dorm_id dept_id dormstate_id del 类 型 int varchar varchar varchar varchar varchar 是否主键 是 否 否 否 否 否 是否外键 否 是 是 是 是 否 备 注 唯一标识该表 26 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 10 11 12 预留字段1 预留字段2 预留字段3 col1 col2 col3 varchar varchar varchar 否 否 否 否 否 否 7)宿舍状态表(tb_dormstate) 宿舍状态表记录了宿舍号的实际入住人数,其表字段如表4-7宿舍状态表。 表4-7宿舍状态表 序1 2 4 5 6 7 标 表ID 状态名称 删除标记 预留字段1 预留字段2 预留字段3 属 性 dormstate_id dormstate_name del col1 col2 col3 类 型 int int varchar varchar varchar varchar 是否是 否 否 否 否 否 是否否 否 否 否 否 否 备 注 唯一标识该表 号 识 主键 外键 8)学生住宿登记表(tb_indorm) 学生住宿登记表主要记录学生的入住宿舍的宿舍号,楼,入住时间等等,其表字段如表4-8学生住宿登记表。 表 4-8学生住宿登记表 序1 2 3 4 5 6 7 8 9 9 标 表ID 宿舍分配ID 学生ID 入住时间 贫困证明 学生干部任职 备注 实住人数 收费标准 删除标记 indorm_job indorm_remarks indorm_sumstu indorm_monery del col1 col2 col3 varchar varchar varchar varchar varchar varchar varchar varchar 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 属 性 indorm_id distribute_id student_id indorm_time indorm_prove 类 型 int int int varchar varchar 是否主键 是 否 否 否 否 是否外键 否 是 是 否 否 备 注 唯一标识该表 号 识 10 预留字段1 11 预留字段2 12 预留字段3 9)外住学生信息表(tb_outdorm) 外住学生信息表主要记录了学生住校外的信息,例如房东的姓名、电话、地址等 27 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 等,其表字段如表4-9外住学生信息表。 表4-9外住学生信息表 序1 2 3 4 5 6 7 8 9 标 表ID 学生id 入住时间 外住地址 备注 外宿房东姓名 外宿房东电话 贫困证明 删除标记 属 性 outdorm_id student_id outdorm_time outdorm_address outdorm_remarks outdorm_name outdorm_phone outdorm_prove del col1 col2 col3 类 型 int int varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar 是否主键 是 否 否 否 否 否 否 否 否 否 否 否 是否外键 否 是 否 否 否 否 否 否 否 否 否 否 备 注 唯一标识该表 号 识 10 预留字段1 11 预留字段2 12 预留字段3 10)宿管表(tb_dormadmin) 宿管表记录宿管的标号,姓名,民族等等信息,其表字段如表4-10宿管表。 表 4-10宿管表 序1 2 3 4 5 6 7 8 9 标 表ID 职工编号 姓名 密码 性别 职称 工作时间 住宿楼号ID 民族 属 性 doradmin_id doradmin_num doradmin_name doradmin_password doradmin_sex doramin_position doradmin_jobtime floor_id doradmin_nation doradmin_address doradmin_idcard doradmin_Email doramin_phone del col1 col2 col3 类 型 int varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar varchar 是否主键 是 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 是否外键 否 否 否 否 否 否 否 是 否 否 否 否 否 否 否 否 否 备 注 唯一标识该表 不允许重复 号 识 10 详细地址 11 身份证号码 12 Email 13 联系电话 14 删除标记 15 预留字段1 16 预留字段1 17 预留字段1 28 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 11)保洁员表(tb_cleaner) 保洁员记录宿管的标号,姓名,民族等等信息,其表字段如表4-11保洁员。 表 4-11保洁员 序1 2 3 4 5 6 7 8 9 标 表ID 职工编号 姓名 密码 性别 职称 工作时间 民族 属 性 clean_id clean_num clean_name clean_password clean_sex clean_position clean_jobtime clean_nation clean_address clean_idcard clean_Email clean_phone del col1 col2 col3 类 型 int 是否主键 是 是否外键 否 否 否 否 否 否 否 是 否 否 否 否 否 否 否 否 否 备 注 唯一标识该表 不允许重复 号 识 varchar 否 varchar 否 varchar 否 varchar 否 varchar 否 varchar 否 varchar 否 varchar 否 varchar 否 varchar 否 varchar 否 varchar 否 varchar 否 varchar 否 varchar 否 varchar 否 宿舍楼号ID floor_id 10 详细地址 11 身份证号 12 Email 13 联系电话 14 删除标记 15 预留字段1 16 预留字段2 17 预留字段3 12)宿舍申请表(tb_dormapply) 宿舍申请表记录学生的申请编号,类型,审批部门,审批人等信息,其表字段如表4-12宿舍申请表。 表4-12宿舍申请表 序1 2 3 4 5 6 7 8 9 标 表ID 申请编号 同意条款 申请原因 申请时间 学生id 学院意见 学院审批时间 辅导员id 属 性 dormapply_id dormapply_num clause reason dormapply_time student_id colview coltime counsellor_id 类 型 int int varchar varchar varchar int varchar varchar int 是否主键 是 否 否 否 否 否 否 否 否 是否外键 否 否 否 否 否 是 否 否 是 备 注 唯一标识该表 不允许重复 号 识 29 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 10 学生处意见 11 学生处审批时间 12 学生处人员id 13 宿管意见 14 办理时间 15 宿管id 16 财务处意见 17 处理时间 18 家长意见 offview offtime off_id dormview dormtime doradmin_id financeview financetime famview varchar varchar int varchar varchar int varchar varchar varchar 否 否 否 否 否 否 否 否 否 否 否 是 否 否 是 否 否 否 19 20 21 22 23 24 25 家长时间 家长签名 类型 删除标记 预留字段1 预留字段2 预留字段3 famtime famname dormapply_type del col1 col2 col3 varchar varchar varchar varchar varchar varchar varchar 否 否 否 否 否 否 否 否 否 否 否 否 否 否 本章小结:根据对宿舍信息管理模块的功能分析、用例分析,并从实体关系模型的E-R图到详细数据字典的设计。为宿舍信息管理模块的实现奠定了基础,也是后期后台数据库实现的关键。 30 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 5 宿舍信息管理模块的实现 系统实现是系统通过一系列的迭代过程,把信息系统的设计模型转变为可以交付测试的系统。本章阐述用户对工作人员,住宿信息,宿舍申请的操作实现过程。 5.1 模块文件结构 文件结构式对该模块实现过程中相关的文件进行罗列和说明,由于篇幅的关系,只写了些主要的文件进行详细说明,具体的可以参考完整的项目,表5-1宿舍信息模块文件说明是为方便大家了解宿舍信息模块的一些页面及主要配置文件。而5-2则是在myeclipse平台下开发项目时搭建的本模块目录,这些文件的结构清晰明了,在开发过程中相互有彼此相互联系,利于程序员的开发,并且这样形成了一个有机的整体,从而构建了一个学生信息综合系统的实现。 表5-1 宿舍信息模块文件说明 A_counselorps.jsp A_counselorweishenpi.jsp A_counseloryishenpi.jsp A_dosps.jsp A_dosweishenpi.jsp A_dosyishenpi.jsp A_sotdbl.jsp A_sotdcx.jsp A_sotdps.jsp A_stu_zhuansusheshenqingadd.jsp A_stu_zhuansusheshenqingupdate.jsp A_stu_zhuansusheshenqingview.jsp 学生转宿舍申请具体显示信息页面 A_stucx_updelte.jsp A_stucx.jsp A_stuzz_qitashenqingadd.jsp A_stuzz_qitashenqingupdate.jsp A_stuzz_qitashenqingview.jsp A_stuzz_zoudushenqingadd.jsp A_stuzz_zoudushenqingupdate.jsp A_stuzz_zoudushenqingview.jsp sushetiaozhengWord.jsp I_cleaner_edit.jsp I_cleaner_insert.jsp 学生申请删改页面 学生申请查询页面 学生其他申请添加页面 学生其他申请修改页面 学生其他申请具体显示信息页面 学生走读申请添加页面 学生走读申请修改页面 学生走读申请具体显示信息页面 转宿舍打印doc报表页面 具体保洁员信息修改页面 保洁员添加页面 学院辅导员对本学院的学生进行审批页面 学院辅导员对本学院的学生进行未审批查询页面 学院辅导员对本学院的学生进行已审批查询页面 学生处对学院的学生进行审批页面 学生处对学院的学生进行未审批查询页面 学生处对学院的学生进行已审批查询页面 宿管处对本楼的学生进行未审批查询页面 宿管处对本楼的学生进行已审批查询页面 宿管处对本楼的学生进行审批页面 学生转宿舍申请添加页面 学生转宿舍申请修改页面 31 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 I_cleaner_select.jsp I_cleaner_updelete.jsp I_cleaner_view.jsp I_dorm_edit.jsp I_dorm_floor_edit.jsp I_dorm_floor_insert.jsp I_dorm_floor_select.jsp I_dorm_floor_updelete.jsp I_dorm_floor_view.jsp I_dorm_floor1_edit.jsp I_dorm_floor1_insert.jsp I_dorm_floor1_select.jsp I_dorm_floor1_updalete.jsp I_dorm_insert.jsp I_dorm_select.jsp I_dorm_updelete.jsp I_dorm_view.jsp I_in_stu_edit.jsp I_in_stu_select.jsp I_in_stu_updelete.jsp I_in_stu_view.jsp I_onedorm_select.jsp I_out_stu_edit.jsp I_out_stu_select.jsp I_out_stu_updelete.jsp I_out_stu_view.jsp I_stu_insert.jsp I_supervisor_edit.jsp I_supervisor_insert.jsp I_supervisor_select.jsp I_supervisor_updelete.jsp I_supervisor_view.jsp selecta1.jsp DormIformationAction.java DormIformationDao.java DormIformationDaoImp.java DormIformationService DormIformationServiceImp Pager.java 所有保洁员查询页面 所有保洁员删改页面 具体保洁员信息显示页面 具体宿舍号分配修改页面 具体宿舍楼修改页面 宿舍楼添加页面 所有宿舍楼查询页面 所有宿舍楼删改页面 具体宿舍楼里分配的楼层,宿舍号查询页面 具体宿舍楼里分配的楼层,宿舍号修改页面 具体宿舍楼里分配的楼层,宿舍号添加页面 所有宿舍楼里分配的楼层,宿舍号查询页面 所有宿舍楼里分配的楼层,宿舍号删改页面 给每个学院分配宿舍楼,宿舍号(群分)页面 所有学院所分的宿舍楼,宿舍号全查页面 所有学院所分的宿舍楼,宿舍号删改页面 具体学院所分的宿舍楼,宿舍号详细信息页面 具体住校学生信息修改页面 所有住校学生查询页面 所有住校学生删改页面 具体学生住校信息显示页面 此宿舍住的详细人员信息页面 具体住校外学生修改信息页面 所有住校外学生查询的页 所有住校外学生删改的页面 具体住校外学生的具体信息页面 添加学生住内宿或是住校外宿舍页面 修改宿管信息页面 添加宿管信息页面 所有宿管信息查询页面 所有宿管信息删改页面 一个宿管具体信息显示页面 查看学院所分配的宿舍楼页面 数据展现层,即实现模块功能,页面交互的类文件 数据访问层的接口类文件(对数据库进行操作) 数据访问层的实现接口类文件(对数据库进行操作) 业务逻辑层的接口类文件 业务逻辑层的实现接口类文件 Pager分页计算类主要用于分页时上页,下页,首页,尾页的计算 32 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 PagerHelper.java PagerHelper,公共基础类分页帮助类主要借借助于HttpServletRequest对象从页面上传递分页的各个参数 UploadFiles.java hibernate.cfg.xml applicationContext.xml struts_dormIformationAction.xml 文件上传工具类 连接数据库的配置及反射机制配置 Spring的配置主要管理hibernate,struts,类的初始化,日志,切面,依赖注入等操作 对Jsp页面的管理,实现与后台的对接(实现mvc的操作) 图5-2 项目文件结构 33 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 5.2 宿舍工作人员信息管理 5.2.1 宿管员信息功能的实现 1)宿管人员添加 宿管人员添加界面如图5-1所示。添加宿管员信息时候将会验证用户是否存在以及其他信息是否必须填写,图片的上传的路劲在项目同级别的新建文件夹里,而数据库则保存文件的名字,这样当服务器关闭清空项目时,不至于照片被清空,从而保证数据的安全性。查找时只需在jsp通过相对路径即可找到。 图5-1 宿管人员添加界面 2)宿管人员修改 宿管人员修改界面如图5-2所示,修改宿管员信息时候将会验证用户是存在以及其他信息是否必须填写,图片的上传的路劲在项目同级别的新建文件夹里,而数据库则保存文件的名字,这样当服务器关闭清空项目时,不至于照片被清空,从而保证数据的安全性。查找时只需在jsp通过相对路径即可找到。 图5-2 宿管人员修改界面 34 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 部分参考代码如下: public String saveBytbDormadmin() throws IOException{//修改、保存宿管员 String menthod=ServletActionContext.getRequest().getParameter(\"menthod\");//判断是否有条件查询 String doradminName=ServletActionContext.getRequest().getParameter(\"doradminName\");//获取前台传来的值 String doradmin_idcard=ServletActionContext.getRequest().getParameter(\"doradmin_idcard\"); String doradmin_nation=ServletActionContext.getRequest().getParameter(\"doradmin_nation\"); String floor_type=ServletActionContext.getRequest().getParameter(\"floor_type\"); String floor_num=ServletActionContext.getRequest().getParameter(\"floor_num\"); String doradmin_address=ServletActionContext.getRequest().getParameter(\"doradmin_address\"); String doramin_phone=ServletActionContext.getRequest().getParameter(\"doramin_phone\"); String doramin_position=ServletActionContext.getRequest().getParameter(\"doramin_position\"); String doradmin_jobtime=ServletActionContext.getRequest().getParameter(\"doradmin_jobtime\"); String doradmin_sex=ServletActionContext.getRequest().getParameter(\"doradmin_sex\"); String doradmin_Email=ServletActionContext.getRequest().getParameter(\"doradmin_Email\"); String doradminNum=ServletActionContext.getRequest().getParameter(\"doradminNum\"); String photename=ServletActionContext.getRequest().getParameter(\"photename\"); String doradmin_id=ServletActionContext.getRequest().getParameter(\"doradminId\"); tbFloor=dormIformationService.selectFloor(floor_num, floor_type); if(\"1\".equals(menthod)&&(!\"--请选择--\".equals(floor_num)&&!\"--请选择--\".equals(floor_type))//判断传来的值 &&!\"\".equals(doradminName)&&!\"\".equals(doradmin_idcard)){ //修改宿管员 int doradminId=Tool.strToInt(doradmin_id); TbDormadmin tbDormadmin1=dormIformationService.selectdormadminnum(doradminNum);//编号查询 tbDormadmin=dormIformationService.selectdormadminid(doradminId);//ID查询 tbUsers=dormIformationService.getByOneUser(doradminNum);//编号查询 TbUsers tbUsers1=dormIformationService.getByOneUser(tbDormadmin.getDoradminNum()); if(!doradminNum.equals(tbUsers1.getUserAcc())&&tbUsers!=null){//判断编号是否在user表里存在了 ServletActionContext.getResponse().setContentType(\"text/html;charset=utf-8\"); //编码 ServletActionContext.getResponse().setCharacterEncoding(\"utf-8\"); PrintWriter out = ServletActionContext.getResponse().getWriter(); out.write(\" \");//直接在jsp页面弹出对话框显示信息。 out.close(); return null; // ------------------> 注意要返回为null; } else if(!doradminNum.equals(tbDormadmin.getDoradminNum())&&tbDormadmin1!=null){//判断编号是否存在 ServletActionContext.getResponse().setContentType(\"text/html;charset=utf-8\"); ServletActionContext.getResponse().setCharacterEncoding(\"utf-8\"); PrintWriter out = ServletActionContext.getResponse().getWriter(); out.write(\" \"); 35 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 } else if(tbFloor!=null){ //保存宿管员 if(!\"--请选择--\".equals(floor_num)&&!\"--请选择--\".equals(floor_type)&& out.close(); return null; // ------------------> 注意要返回为null; }else{ } return this.viewOneAdmin(); tbDormadmin.setDoradminNum(doradminNum); tbDormadmin.setDoradminName(doradminName); tbDormadmin.setDoradminIdcard(doradmin_idcard); tbDormadmin.setDoradminNation(doradmin_nation); tbDormadmin.setDoradminAddress(doradmin_address); tbDormadmin.setDoradminEmail(doradmin_Email); tbDormadmin.setDoradminJobtime(doradmin_jobtime); tbDormadmin.setDoradminSex(doradmin_sex); tbDormadmin.setDoraminPhone(doramin_phone); tbDormadmin.setDoraminPosition(doramin_position); if(tbFloor!=null){ } tbDormadmin.setTbFloor(tbFloor); if(!\"&&\".equals(photename)){ } dormIformationService.updatedormadmin(tbDormadmin); tbDept=dormIformationService.selectDept(\"学生处\"); tbUsers1.setUserAcc(doradminNum); tbUsers1.setUserPassword(doradminNum); tbUsers1.setUserName(doradminName); tbUsers1.setUserEmail(doradmin_Email); tbUsers1.setUserPhone(doramin_phone); tbUsers1.setUserSex(doradmin_sex); tbUsers1.setTbDept(tbDept); dormIformationService.updateusers(tbUsers1); tbDormadmin.setCol1(photename); !\"\".equals(doradminName)&&!\"\".equals(doradmin_idcard)){ tbDormadmin=dormIformationService.selectdormadminnum(doradminNum); TbUsers tbUser=dormIformationService.getByOneUser(doradminNum); tbDept=dormIformationService.selectDept(\"学生处\"); if(tbDormadmin==null&&tbUser==null){ TbDormadmin tbDormadmin1=new TbDormadmin(); tbDormadmin1.setTbFloor(tbFloor); 36 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 tbDormadmin1.setDoradminNum(doradminNum); tbDormadmin1.setDoradminName(doradminName); tbDormadmin1.setDoradminIdcard(doradmin_idcard); tbDormadmin1.setDoradminNation(doradmin_nation); tbDormadmin1.setDoradminAddress(doradmin_address); tbDormadmin1.setDoradminEmail(doradmin_Email); tbDormadmin1.setDoradminJobtime(doradmin_jobtime); tbDormadmin1.setDoradminSex(doradmin_sex); tbDormadmin1.setDoraminPhone(doramin_phone); tbDormadmin1.setDoraminPosition(doramin_position); tbDormadmin1.setDel(\"1\"); tbDormadmin1.setCol1(photename); dormIformationService.savedormadmin(tbDormadmin1); TbUsers tbUsers2=new TbUsers(); tbUsers2.setUserAcc(doradminNum); tbUsers2.setUserPassword(doradminNum); tbUsers2.setUserName(doradminName); tbUsers2.setUserEmail(doradmin_Email); tbUsers2.setUserPhone(doramin_phone); tbUsers2.setUserSex(doradmin_sex); tbUsers2.setTbDept(tbDept); tbUsers2.setDel(\"1\"); dormIformationService.saveusers(tbUsers2); ServletActionContext.getResponse().setContentType(\"text/html;charset=utf-8\"); ServletActionContext.getResponse().setCharacterEncoding(\"utf-8\"); PrintWriter out = ServletActionContext.getResponse().getWriter(); out.write(\" \"); } else{ out.close(); return null; // ------------------> 注意要返回为null; ServletActionContext.getResponse().setContentType(\"text/html;charset=utf-8\"); ServletActionContext.getResponse().setCharacterEncoding(\"utf-8\"); PrintWriter out = ServletActionContext.getResponse().getWriter(); out.write(\" \"); } out.close(); return null; // ------------------> 注意要返回为null; }else{ 37 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 return this.setDoradmin(); } } return this.setDoradmin(); } // 照片上传处理 public String execute() throws Exception { //文件的随机名称 String realName=\"\"; String menthod=ServletActionContext.getRequest().getParameter(\"menthod\"); try { String targetDirectory=\"\"; //照片的路径 targetDirectory=ServletActionContext.getServletContext().getRealPath(\"/\"+ UploadConfigurationRead.getInstance().getConfigItem(\"uploadFilePath\").trim());// 获得路径 for (int i = 0; i < upload.length; i++) { } String fileName = uploadFileName[i];// 上传的文件名 String type = uploadContentType[i];// 文件类型 realName = fileName;// 保存的文件名称,用在这里便于管理用图片的真名行保存 File target = new File(targetDirectory, realName); FileUtils.copyFile(upload[i], target);// 上传至服务器的目录,一般都这样操作, // 再把路径写入数据库即可(但是我这里是保存了文件的名字及类型,路径在jsp配置) UploadFiles uf = new UploadFiles();// 创建文件 uf.setUploadContentType(type); uf.setUploadFileName(fileName); uf.setUploadRealName(realName); uploadFiles.add(uf);// 添加到需要下载文件的List集合中 //页面显示图片名称以便于保存到是数据库 ServletActionContext.getRequest().setAttribute(\"realName\", realName); } catch (Exception e) {//如果照片上传失败 } e.printStackTrace(); addActionError(e.getMessage()); return \"\";//图有报错,空白或是跳转到404 ServletActionContext.getRequest().setAttribute( \"uploadFiles\",uploadFiles.get(uploadFiles.size()-1));//保证照片显示的信息始终是最新上传上去 if(\"add\".equals(menthod)){//增加 } return dormIformationAction.setDoradmin(); 38 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 if(\"upp\".equals(menthod)){//修改 } if(\"addclean\".equals(menthod)){//增加 } if(\"uppclean\".equals(menthod)){//修改 } return return return dormIformationAction.viewOneAdminByphoto(); dormIformationAction.setCleaner(); dormIformationAction.viewOneCleanByphoto(); return null; } 3)宿管人员查询 宿管人员查询界面如图5-3所示。查询时可通过多条件联合查询,从而加快查找速度,例如输入编号就可以查到这个编号的员工信息,输入姓名,民族等可查到相应信息,具体员工的信息可点击职工编号上的连接。 图5-3 宿管人员查询界面 部分参考代码如下: public String getAdminShuJu(){ String menthod=ServletActionContext.getRequest().getParameter(\"menthod\");//判断是否有条件查询 String doradminNum=ServletActionContext.getRequest().getParameter(\"doradminNum\"); String doradminName=ServletActionContext.getRequest().getParameter(\"doradminName\"); String doradmin_idcard=ServletActionContext.getRequest().getParameter(\"doradmin_idcard\"); String doradmin_nation=ServletActionContext.getRequest().getParameter(\"doradmin_nation\"); String floor_type=ServletActionContext.getRequest().getParameter(\"floor_type\"); String floor_num=ServletActionContext.getRequest().getParameter(\"floor_num\"); String doramin_position=ServletActionContext.getRequest().getParameter(\"doramin_position\"); String satarttime=ServletActionContext.getRequest().getParameter(\"satarttime\"); 39 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 String examTimeEnd=ServletActionContext.getRequest().getParameter(\"examTimeEnd\"); if(\"1\".equals(menthod)||(\"\".equals(doradminNum)&\"\".equals(doradminName)& \"\".equals(doradmin_idcard)&\"\".equals(satarttime)&\"\".equals(examTimeEnd)& \"\".equals(doramin_position)&floor_type==null&floor_num==null&doradmin_nation==null)||( \"\".equals(doradminNum)&\"\".equals(doradminName)&\"\".equals(doradmin_idcard)& \"\".equals(satarttime)&\"\".equals(examTimeEnd)&\"\".equals(doramin_position)& \"\".equals(floor_type)&\"\".equals(floor_num)&\"\".equals(doradmin_nation))){//无条件查询 int totalRows =dormIformationService.selectRows(null, null, null, null, null, null, null, null,null); Pager pager=PagerHelper.getPager( ServletActionContext.getRequest(),totalRows); List>listDoradmins=dormIformationService.selectListdormadmin(pager.getStartRow(), pager.getPageSize(),null, null, null, null, null,null,null,null,null); ServletActionContext.getRequest().setAttribute(\"totalPage\", pager.getTotalPages()); ServletActionContext.getRequest().setAttribute(\"currentPage\", pager.getCurrentPage()); ServletActionContext.getRequest().setAttribute(\"listDoradmins\",listDoradmins); } else{//条件查询 try {//下面的setAttribute是把值再传给前台便于页面的选择 ServletActionContext.getRequest().setAttribute(\"doradminNum\",doradminNum ); ServletActionContext.getRequest().setAttribute(\"doradminName\",doradminName ); ServletActionContext.getRequest().setAttribute(\"doradmin_idcard\",doradmin_idcard ); ServletActionContext.getRequest().setAttribute(\"doradmin_nation\",doradmin_nation ); ServletActionContext.getRequest().setAttribute(\"floor_type\",floor_type ); ServletActionContext.getRequest().setAttribute(\"floor_num\",floor_num ); ServletActionContext.getRequest().setAttribute(\"doramin_position\",doramin_position ); ServletActionContext.getRequest().setAttribute(\"satarttime\",satarttime ); ServletActionContext.getRequest().setAttribute(\"examTimeEnd\",examTimeEnd ); List> listtbFloor=dormIformationService.selectFloodlist(floor_num,floor_type,null); StringBuffer floorids=new StringBuffer(); if(listtbFloor.isEmpty()){ } else { } for (int i = 0; i < listtbFloor.size(); i++) { } tbFloor=(TbFloor) listtbFloor.get(i); floorids.append(tbFloor.getFloorId()+\); floorids.append(\"\"); String kong=\"yes\"; int totalRows=0; List> listDoradmins; if(listtbFloor.size()==0){ 40 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 totalRows =dormIformationService.selectRows(doradminNum, doradminName,doradmin_nation ,floorids , doramin_position ,doradmin_idcard ,satarttime, examTimeEnd,kong); listDoradmins= dormIformationService.selectListdormadmin(pager.getStartRow(),pager.getPageSize(), doradminNum,doradminName,doradmin_nation,floorids,doramin_position,doradmin_idcard, satarttime,examTimeEnd,kong);} else{totalRows=dormIformationService.selectRows(doradminNum, doradminName,doradmin_nation , floorids ,doramin_position ,doradmin_idcard ,satarttime, examTimeEnd,null); listDoradmins= dormIformationService.selectListdormadmin(pager.getStartRow(),pager.getPageSize(), doradminNum, doradminName,doradmin_nation ,floorids ,doramin_position ,doradmin_idcard , satarttime, examTimeEnd,null);} Pager pager=PagerHelper.getPager( ServletActionContext.getRequest(),totalRows); ServletActionContext.getRequest().setAttribute(\"totalPage\", pager.getTotalPages()); ServletActionContext.getRequest().setAttribute(\"currentPage\", pager.getCurrentPage()); ServletActionContext.getRequest().setAttribute(\"listDoradmins\",listDoradmins); } catch (Exception e) { } } e.printStackTrace(); return null; } 4)删除宿管员 删除宿管员界面如图5-4所示。通过联合查新找到需要删除的信息,点击删除会有提示是否要删除,点击“确定”则删除,点击“取消”则不删。 图5-4 删除宿管员界面 部分参考代码如下: public String deleteOneAdmin(){ String doradminIdd=ServletActionContext.getRequest().getParameter(\"doradminId\"); int doradminId=Integer.parseInt(doradminIdd); 41 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 tbDormadmin=dormIformationService.selectdormadminid(doradminId); TbUsers tbUsers=dormIformationService.getByOneUser(tbDormadmin.getDoradminNum()); tbDormadmin.setDel(\"2\");//假删除两张表 dormIformationService.updatedormadmin(tbDormadmin); tbUsers.setDel(\"2\"); dormIformationService.updateusers(tbUsers); return viewListAdminUpDel();} 5.2.2 保洁员信息功能的实现 1)保洁员的添加 保洁员的添加界面如图5-5所示,保洁员信息修改、查询、删除与宿管人员操作基本类似,主要区别在于保洁员的编号是自增的,而宿管则是人为添加的。 图5-5 保洁员的添加界面 5.3 宿舍楼管理 5.3.1 宿舍初始化功能的实现 1)宿舍楼号、楼层、宿舍号添加 宿舍楼号、楼层、宿舍号添加界面如图5-6所示。先添加宿舍楼号,楼类型,从而在此楼上添加楼层及每层所对应的宿舍号,宿舍号只需开始宿舍号和结束号即可。当然楼号,楼类型,以及楼层等都用ajaxj技术做了验证,添加之前会有提示数据是否已添加从而保证数据的唯一性,其次其他的信息也做了验证,例如宿舍号得分配不能结尾小于开始值。 42 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 图 5-6 宿舍楼号、楼层、宿舍号添加界面 2)宿舍楼号、楼层、宿舍号修改 宿舍楼号、楼层、宿舍号修改如图5-7所示。操作基本和添加差不多。 图 5-7 宿舍楼号、楼层、宿舍号的修改界面 部分参考代码如下: 43 public String saveFloorDorm(){//保存 String tbFloorID=ServletActionContext.getRequest().getParameter(\"tbFloorID\"); String remarke=ServletActionContext.getRequest().getParameter(\"remarke\"); String floorDormStory=ServletActionContext.getRequest().getParameter(\"floorDormStory\"); String floorDormName1=ServletActionContext.getRequest().getParameter(\"floorDormName1\"); String floorDormName2=ServletActionContext.getRequest().getParameter(\"floorDormName2\"); int a=Tool.strToInt(floorDormName1); int b=Tool.strToInt(floorDormName2); tbFloor=dormIformationService.selectFloor(Integer.parseInt(tbFloorID)); tbFloorDorm=dormIformationService.getFloorDormName(tbFloorID, floorDormStory); if(a<=b&&a!=0&&b!=0){//判断宿舍号的初始值与最后的值若符合条件执行里面 if(tbFloorDorm==null){//判断此表里没有数据 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 } } ServletActionContext.getRequest().setAttribute(\"tbFloorID\",tbFloorID); return \"I_dorm_floor1_insert\";//跳转页面 } TbFloorDorm tbFloorDorm=new TbFloorDorm(); tbFloorDorm.setTbFloor(tbFloor); tbFloorDorm.setFloorDormName(floorDormName1); tbFloorDorm.setCol1(floorDormName2);//宿舍名字 tbFloorDorm.setFloorDormStory(floorDormStory); tbFloorDorm.setCol2(remarke);//备注 tbFloorDorm.setDel(\"1\"); dormIformationService.saveFloorDorm(tbFloorDorm); public String floorDormupdate(){//修改 String floorDormId=ServletActionContext.getRequest().getParameter(\"floorDormId\"); String remarke=ServletActionContext.getRequest().getParameter(\"remarke\"); String floorDormStory=ServletActionContext.getRequest().getParameter(\"floorDormStory\"); String floorDormName1=ServletActionContext.getRequest().getParameter(\"floorDormName1\"); String floorDormName2=ServletActionContext.getRequest().getParameter(\"floorDormName2\"); String tbFloorID=ServletActionContext.getRequest().getParameter(\"tbFloorID\"); ServletActionContext.getRequest().setAttribute(\"floorDormId\",floorDormId); int a=Tool.strToInt(floorDormName1); int b=Tool.strToInt(floorDormName2); bFloorDorm tbFloorDorm1=dormIformationService.getFloorDormName(tbFloorID, floorDormStory); if(a<=b&&a!=0&&b!=0){ if(tbFloorDorm1!=null){ tbFloorDorm=dormIformationService.selectOneById(Integer.parseInt(floorDormId)); tbFloorDorm.setFloorDormName(floorDormName1); tbFloorDorm.setCol1(floorDormName2);//宿舍名字 tbFloorDorm.setFloorDormStory(floorDormStory); tbFloorDorm.setCol2(remarke);//备注 dormIformationService.updateFloorDorm(tbFloorDorm);}} return this.viewFloorDormOne();} 3)所有宿舍楼查询 所有宿舍楼查询界面如图5-8所示。添加所有的楼的信息之后在这个页面会体现出来,联合查询所得的楼之后点击楼层及宿舍分配情况,可以具体查看这栋楼的每层宿舍分配情况,并且还可以修改楼号,楼类型,楼层,宿舍号等信息。 部分参考代码如下: public String getFloordormShuJu(){ String menthod=ServletActionContext.getRequest().getParameter(\"menthod\"); String floor_type=ServletActionContext.getRequest().getParameter(\"floor_type\"); 44 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 图5-8 所有宿舍楼查询界面 String floor_num=ServletActionContext.getRequest().getParameter(\"floor_num\"); String floorName=ServletActionContext.getRequest().getParameter(\"floorName\"); String floorId=ServletActionContext.getRequest().getParameter(\"floorId\"); if(\"1\".equals(menthod)||(floor_type==null&floor_num==null&\"\".equals(floorName))||(\"\".equals(floor_type)& \"\".equals(floor_num)&\"\".equals(floorName))){//无条件查询 int totalRows =dormIformationService.getFloorRows(null, null,null); Pager pager=PagerHelper.getPager( ServletActionContext.getRequest(),totalRows); List> listFloors= dormIformationService.getFloors(pager.getStartRow(),pager.getPageSize(),null, null,null); ServletActionContext.getRequest().setAttribute(\"totalPage\", pager.getTotalPages()); ServletActionContext.getRequest().setAttribute(\"currentPage\", pager.getCurrentPage()); ServletActionContext.getRequest().setAttribute(\"listFloors\",listFloors); } else{//条件查询 ServletActionContext.getRequest().setAttribute(\"floor_type\",floor_type ); ServletActionContext.getRequest().setAttribute(\"floor_num\",floor_num ); ServletActionContext.getRequest().setAttribute(\"floorName\",floorName ); ServletActionContext.getRequest().setAttribute(\"floorId\",floorId ); int totalRows =dormIformationService.getFloorRows(floor_num,floor_type,floorName); Pager pager=PagerHelper.getPager( ServletActionContext.getRequest(),totalRows); List> listFloors=dormIformationService.getFloors(pager.getStartRow(),pager.getPageSize(), floor_num,floor_type,floorName); ServletActionContext.getRequest().setAttribute(\"totalPage\", pager.getTotalPages()); } return null; ServletActionContext.getRequest().setAttribute(\"currentPage\", pager.getCurrentPage()); ServletActionContext.getRequest().setAttribute(\"listFloors\",listFloors); } 45 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 5.3.2 学院宿舍分配功能的实现 1)学院宿舍分配 学院宿舍分配界面如图5-9所示。根据学院情况,可对每个学院进行宿舍楼的分配,选择楼号、楼类型、楼层、宿舍号从多少到多少,宿舍状态,根据所选的宿舍号从多少到多少,自动批量生成分配宿舍号信息,若所选的宿舍号被分配了则会自动提示哪些已被分配给那个学院,并且没有分配的宿舍号会自动录入到数据库。同时对以上所选的信息都做了严格的验证,如果在错误的信息上记录提交,在后台是无法成功的。 图5-9 学院宿舍分配界面 部分参考代码如下: public String saveDormdistribute(){ String tbFloorID=ServletActionContext.getRequest().getParameter(\"tbFloorID\"); String tbFloorDormId=ServletActionContext.getRequest().getParameter(\"tbFloorDormId\"); String deptName=ServletActionContext.getRequest().getParameter(\"deptName\"); String floorDormName=ServletActionContext.getRequest().getParameter(\"floorDormName\"); String floorDormStory=ServletActionContext.getRequest().getParameter(\"floorDormStory\"); String floor_type=ServletActionContext.getRequest().getParameter(\"floor_type\"); String floor_num=ServletActionContext.getRequest().getParameter(\"floor_num\"); String dormstateName=ServletActionContext.getRequest().getParameter(\"dormstateName\"); String col1=ServletActionContext.getRequest().getParameter(\"col1\"); if(\"--请选择--\".equals(deptName)||\"--请选择--\".equals(floorDormStory)||\"--请选择--\".equals(floor_type)|| \"--请选择--\".equals(deptName)||\"--请选择--\".equals(floor_num)||\"--请选择--\".equals(dormstateName)){ ServletActionContext.getRequest().setAttribute(\"msg\",\"\"); } else{ String name1[]=floorDormName.split(\"层\");//获取数字 String name2[]=col1.split(\"层\"); int dormName1=Integer.parseInt(name1[0]); int dormName2=Integer.parseInt(name2[0]); 46 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 if(dormName1<=dormName2){//判断是否大于第一个宿舍号 tbDept=dormIformationService.selectDept(deptName); tbFloor=dormIformationService.selectFloor(Integer.parseInt(tbFloorID)); tbFloorDorm=dormIformationService.selectOneById(Integer.parseInt(tbFloorDormId)); tbDormstate=dormIformationService.selectDormstate(dormstateName); Map map.put(\"floorDormId\", tbFloorDorm.getFloorDormId()+\"\"); for (int i = dormName1; i <= dormName2; i++) { //循环宿舍号 map.put(\"i\",i+\"\"); List> tbDormdistributeList1=dormIformationService.isCunzaiDormdistribute1(map);//是否已分配这些宿舍 if(tbDormdistributeList1.size()==0){//如没有被分配到则添加 tbDormdistribute.setTbDept(tbDept); tbDormdistribute.setTbFloor(tbFloor); tbDormdistribute.setTbFloorDorm(tbFloorDorm); tbDormdistribute.setTbDormstate(tbDormstate); tbDormdistribute.setCol1(i+\"\"); tbDormdistribute.setCol2(null); tbDormdistribute.setCol3(\"空\"); tbDormdistribute.setDel(\"1\"); dormIformationService.saveDormdistribute(tbDormdistribute); } } else{ for (int j = 0; j < tbDormdistributeList1.size(); j++) { tbDormdistribute= (TbDormdistribute) tbDormdistributeList1.get(j); dept.append(i+\"之前已分给\"+tbDormdistribute.getTbDept().getDeptName()+\"\\\\\n\"); } str.append(i+\"\\"); ServletActionContext.getRequest().setAttribute(\"msg\",\" }}} } return this.getFloorDormName(); } 2)学院宿舍分配修改 学院宿舍分配修改界面如图5-10所示。修改与添加类似。 47 基于SSH框架下学生综合信息管理系统的设计与实现——宿舍信息管理模块 图5-10 学院宿舍分配修改界面 3)学院宿舍情况查询 学院宿舍情况查询界面如图5-11所示。根据联合查询,如输入学院单个条件查询或是宿舍状态和宿舍楼号条件等联合查询可得结果,如想要看具体宿舍号内的详细信息,则点击上面的宿舍号连接,会显示这个宿舍号所对的住宿人员信息情况。 图5-11 学院宿舍情况查询界面 部分参考代码如下: public String getDormdistributeShuJu(){ String menthod=ServletActionContext.getRequest().getParameter(\"menthod\"); String floor_type=ServletActionContext.getRequest().getParameter(\"floor_type\"); String floor_num=ServletActionContext.getRequest().getParameter(\"floor_num\"); String deptName=ServletActionContext.getRequest().getParameter(\"deptName\"); String col1=ServletActionContext.getRequest().getParameter(\"col1\"); String type=ServletActionContext.getRequest().getParameter(\"type\"); String dormstateName=ServletActionContext.getRequest().getParameter(\"dormstateName\"); Map