摘要 随着科技的迅速发展,各种管理系统已应用到社会的各个领域。高等院校作为科技发展的前沿阵地,实现对学生宿舍的信息化管理是一个必然的趋势和潮流,学生宿舍采用传统的手工管理模式已经逐渐不能适应时代的发展。 通过学生宿舍管理系统这个平台,可以实现宿舍管理的信息化、网络化、系统化、规范化,使工作人员从繁杂的数据查询和统计中解脱出来,减少工作量。系统的主要功能包括:楼宇信息管理、宿舍信息管理、学生信息管理、访客信息管理、卫生评分模块。电费信息管理,学生报修等功能。 本系统前台主要使用JSP作为开发语言,后台使用MySQL作为数据库管理系统,开发环境是MyEclipse,服务器采用tomcat,开发出的一个基于Web技术的B/S结构的宿舍管理系统。 第一章绪论 1.1开发背景及目的 计算机网络技术的发展,给信息时代的人们带来了很大的方便。如今在Internet 上,随处都可以看到种类繁多的信息管理系统,比如,企业办公化自动管理系统,电子商务系统,学校教务管理系统等等。随着信息技术的日益发展已深入到社会的各个角落,学生宿舍管理也不例外,尤其作为高等院校的宿舍管理工作,是高校各项工作的重要组成部分,其管理能力和服务水平的高低直接关系到学生的利益、正常的教学和整体办学水平,直接影响到人才的培养质量.目前,我校宿舍管理工作还是存在着很多问题。我校学生宿舍现为手工管理,效率低、易出错、手续繁琐,而且耗费大量的人力,物力,财力。比如说,如果是一个学生家长来探望学生,该家长只是知道学生姓名,并不知道学生具体住在哪栋宿舍楼的哪个宿舍,宿舍管理员人员手工查询学生信息,必然效率很低,基于以上等一些实际存在的情况,以及与我校相关人员的沟通反馈结果来看,他们希望有一个学生宿舍管理系统。通过此系统,可以对学生宿舍的各项情况实行电脑化管理,这样可以提高工作效率,也使得宿舍管理所需的各项信息能方便快速进行录入,查询,删除和更新,对相应关键数据也能够方便的统计结果并且以报表或者图形的方式展现出来。 为了提供给学生一个安全、方便的宿舍环境,学校行政人员能动态了解学生宿舍的各方面信息,同时减轻学生宿舍管理人员的工作量,提高工作效率和管理质量,针对我校的实际情况,开发一个适合我校的学生宿舍管理系统具有很高的使用价值和意义。 1.2国内外研究现状 长久以来,国内的学生宿舍管理工作大多数都采用的是传统的手工方式来记录相关信息,这种管理方式存在很多缺点,比如说,宿舍楼,宿舍等信息的录入,查询,更新,分析都要完全依赖管理人员的手工记录和人工分析。近几年来,随着高校的全面扩招,在校人数的不断增加,学生宿舍管理工作采用手工操作的方式,对于小规模学校来说还勉强可以接受,但对于规模大,学生记录存档数据大的高校来说,人工记录是相当麻烦的。为满足学校发展需求,采用各种编程语言入delphi、VB、C#等开发了许多基于B/S 和C/S的学生宿舍管理系统已经存在并且使用,学生宿舍管理系统是涉及宿舍管理、信息科学和计算机技术的复杂的人机交互系统。通过这些系统,可以对学生进行智能化管理,有效地记录并查询学生入学以后在学校的住宿情况,为学生宿舍的管理者提供了诸多方便。 由此可以看出国内各高校已逐步认识到学生宿舍管理系统的价值和重要性,系统实现了从无到有,功能从弱到强,从不完善到完善的发展过程。国内高校学生宿舍管理正由传统模式向高效、快捷的现代化管理过渡。 在高效学生宿舍信息化领域,国外的大学领先国内,一方面得益于国外大学宿舍的硬件基础设施较好,相关配套设施能满足要求,另一方面是国外信息技术应用的整体氛围较为浓厚,信息化意识强。典型的例子是:目前国外大学学生宿舍基本实现无线上网,而国内只有少数几所高校部分宿舍实现,多所国外高校学生宿舍门禁刷卡监控屏可以同时显示学生照片,目前国内高校能实现这一简单功能的还是少数。国外的斯巴克高科已使用日趋成熟的计算技术和防尾随门禁通道来代替传统的人工模式,来实现学生信息的现代化管理,这一技术具有手工管理所无法比拟的优点,如:可有效识别进出人员,查找方便,可靠性高,存储量大。保密性好,寿命长、成本低等特点。国外大学信息化基础环境的保障推动了信息化的上层建筑—宿舍管理信息系统的发展。 1.3开发工具及技术 1.3.1开发工具 此次设计主要采用MyEclipse加Tomcat后台服务器进行,设计过程中页面主要使用JSP技术完成,下面对MyEclipse、Tomcat和MySQL数据库进行简要介绍。 1.3.1.1 MyEclipse MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse 的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEclipse 企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。 1.3.1.2 Tomcat Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。可以这样认为,当在一台机器上配置好Apahce服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 1.3.1.3 MySQL MySQL使用C和C 编写,并使用了多种编译器进行测试,保证源代码的可移植性;支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统;为多种编程语言提供了API;支持多线程,充分利用CPU资源;提供TCP/IP、ODBC和JDBC等多种数据库连接途径;可以处理拥有上千万条记录的大型数据库。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。 1.3.2 JSP技术 J SP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端就是一个HTML文本,因此客户端只要有浏览器能浏览。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Servlet 是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。JSP技术的优点: (1)一次编写,到处运行。除了系统之外,代码不用做任何更改。 (2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的。 (3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。 (4)多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下 (5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。 内部对象说明:request 客户端请求,此请求会包含来自GET/POST请求的参数;response 网页传回客户端的响应;pageContext 网页的属性是在这里管理; session 与请求有关的会话; application servlet正在执行的内容;out 用来传送响应的输出流; config 代码片段配置对象.page JSP网页本身; exception 针对错误网页,未捕捉的例外 1.3.3 JavaScript J avaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。在HTML基础上,使用Javascript可以开发交互式Web网页。Javascript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。在本系统中很多地方使用了javascript技术,比如说,检验用户输入数据的有效性,是否重复,是否为空等等。 1.4软硬件需求 硬件需求: CPU:Pentium以上计算机 内存: 512M以上 软件需求: 操作系统版本:Windows XP /vista/Win7 开发工具:MyEclipse 6.0.1 后台服务器:Apache Tomcat 6.0 开发语言:Java 浏览器:IE6.0 第二章需求分析 2.1需求调研 在项目的开始是需求调研,现行的宿舍管理工作还是存在着很多不足之处,手工记录的方式不易保存,容易丢失,同样也不利于数据的查询和统计分析。根据我校的实际情况及调查结果,发现实现宿舍的网络化、信息化管理是十分有必要的,因此设计了本套基于JSP的宿舍管理系统。 2.2可行性分析 开发任何一个系统,都会受到时间和资源上的限制。因此,在每一个项目开发之前,都要进行可行性分析,可以减少项目的开发风险,避免人力、物力和财力的浪费。下面就技术、经济、操作和法律四个方面来介绍。 2.2.1技术的可行性 本系统开发工具是MyEclipse和MySQL数据库,开发语言是Java,主要使用了J2EE 的技术,java是一种面向对象编程语言,简单易学而且灵活方便。大三时就学习了java 课程,大四期间也系统的了解了J2EE的知识,学生宿舍管理系统总体上开发难度不高,数据库的设计和操作是本系统设计的核心。在大学期间学习过软件工程,软件测试,UML 统一建模语言等课程,每个学期也会完成对应的课程设计,具备一定的系统分析、设计和测试能力。因此,完成系统实现在技术上完全具有可行性。 2.2.2经济的可行性 如今是信息化时代,信息化管理可以使学生宿舍管理工作更加系统化、快速化、全面化。这样可以为学校带来较高的工作效益和经济效益,在提高工作效率的基础上,可以考虑减少宿舍管理人员的数量,本系统对计算机配置的要求不高,学校机房更换下来的低配置电脑都可以完全满足需要,再者,学校在管理工作上的高效率和便捷性远远超过了开发本系统的成本,所以在经济上具有完全的可行性。 2.2.3操作可行性 本系统操作简单,输入信息页面大多数都是下拉框的选择形式,在某些页面,信息可以自动生成,无需输入,时间的输入也是用的日历控件,操作简便,对操作人员的要求很低,只需对WINDOWS操作熟练即可,而且本系统可视性非常好,所以在技术上不会有很大难度。 2.2.4法律的可行性 本宿舍管理系统是自行开发的管理系统,是很有实际意义的系统,开发环境软件和使用的数据库都是开源代码,开发这个系统不同于开发普通的系统软件,不存在侵权等问题,即法律上是可行的。 综上所述,开发一个学生宿舍管理系统与人工记录的方式相比具有速度更快,操作更准确,节省开支等有利之处,因此,建立一个学生宿舍管理系统是必要可行的。 2.3系统用例图 2.4功能模块图 2.5设计的基本思想 设计思想遵循以下几点: 1. 采用C/S模式进行开发,其优点是后台与前台处理层次分明,而且符合众多已经习惯网页搜索方式的用户。 2. 采用面向对象的开发与设计理念。运用面向对象技术的前提是对整体系统的高度和准确抽象,通过它可以保证系统良好的框架,进而带来产品较强的稳定性和运行效率。 3. 采用模块化设计。模块化设计要求将整个系统划分成基于小的模块,有利于代码的重载,简化设计和实现过程。 4. 简单方便的系统界面。设计简单友好的系统界面,方便用户较快的适应系统的操作。 5.速度优先原则。由于此工具最重要的评测标准就是速度,因此在设计过程中,具体过程尽量做到资源占用少,速度快。 6.设计既要突出重点,又要细致周到。要符合设计需求,在有可能改进的地方进行扩充,使系统更适应用户的需要。 2.6性能需求 2.6.1系统的安全性 学生宿舍管理系统在管理权限上要严格进行控制,具体要求如下: 1.想登陆学生宿舍管理系统进行操作,必须有某些操作权限,没有权限的用户不能通过任何方式登录系统查看系统的任何信息和数据,以确保系统的严密性和安全性。 2.6.2数据的完整性 1.各种记录信息的完整性,信息记录内容不能为空 2.各种数据间相互联系的正确性 3.相同数据在不同记录中的一致性 2.7界面需求 界面设计目前已经成为评价软件质量的一条重要指标,一个好的用户界面可以增加用户使用系统的信心和兴趣,提高工作效率,JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。创建动态页面非常方便。用户界面是指软件系统与用户交互的接口,通常包括输出、输入、人-机对话的界面格式等。 1.输出设计 输出是由计算机对输入的原始信息进行加工处理,形成高质量的有效信息,并使之具有一定的格式,提供管理者使用,这是输出设计的主要职责和目标。 系统设计的过程正好和实施过程相反,并不是从输入设计到输出设计,而是从输出设计到输入设计,这是因为输出表格直接与使用者相联系,设计的出发点应当是保证输出表格方便地为使用者服务,正确及时反映和组成用于各部门的有用信息。输出设计的原则是考虑既要全面反映不同管理层的各项需要,又要言简意赅,不要将用户需要和不需要的都提供给用户。 2.输入设计 输入数据的收集和录入是比较费事的,需要大量的人力和一定设备,并且容易出错。如果输入系统的数据有错误,则处理后的输出将扩大这些错误,因此输入数据的正确性对于整个系统质量的好坏是具有决定性意义的。 输入设计的原则有如下几点: 1)输入量应保持在能满足处理要求的最低限度。设计中可采用设置字段初值,下拉式数据窗口等方式尽量减少用户键盘输入量。输入量越少,错误率就越少,数据准备时间也减少。 2)输入的准备及输入过程应尽量容易进行,从而减少错误的发生。 3)应尽量早对输入数据进行检查(尽量接近原数据发生点),以便使错误及时得到更正。 4)输入数据尽早地用其处理所需的形式被记录,以避免数据由一种介质转移到另一种介质时需要转录而可能发生的错误 第三章 系统分析与设计 3.1数据库的分析与设计 计算机信息系统以数据库为核心,在数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新、加工、统计和传播等操作。数据库已经成为现在信息系统等计算机系统的基础与核心部分。数据库设计的好坏直接影响到整个系统的质量和效率。 数据库的设计一般经过规划。需求分析、概念设计、逻辑设计、物理设计5个步骤。 3.1.1数据库的概念结构设计 概念设计是指在数据分析的基础上自底向上的建立整个系统的数据库概念结构,从用户的角度进行视图设计,然后将视图集成,最后对集成的结构分析优化得到最后结果。 数据库的概念结构设计采用实体—联系(E-R )模型设计方法。E-R 模型法的组成元素有:实体、属性、联系,E-R 模型用E-R 图表示,是提示用户工作环境中所涉及的事物,属性则是对实体特性的描述。 概念设计的目标是产生反映企业组织信息要求的数据库概念结构,即概念模式。概念模式是独立于数据库逻辑结构,独立于支持数据库的DBMS ,不依赖于计算机系统的,根据以上对数据库的需求分析,并结合系统概念模型的特点及建立方法,建立E-R 模型图。 (2)宿舍楼宇信息实体E-R 图如图3.5所示: 宿舍楼E-R图(3)宿舍信息实体E-R图 房间E-R图(4)学生信息实体E-R图 学生E-R图 (5)访客信息实体E-R图 访客信息E-R (6)卫生检查信息实体E-R图 卫生检查信息E-R (7)电费信息实体E-R图 电费信息E-R (8)报修信息实体E-R图 报修信息E-R 3.1.2数据库的逻辑结构设计 我们知道,数据库概念模型独立于任何特定的数据库管理系统,因此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型,E-R模型向关系数据库模型转换应遵循下列原则: *每一个实体要转换成一个关系 *所有的主键必须定义非空(NOT NULL) *对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定义外键。 根据E-R模型,学生宿舍管理系统建立了以下逻辑数据结构,下面是各数据表的详细说明。 (1)学生表主要是记录了学生基本信息。表结构如表3.1所示。 表3.1学生表(t_xuesheng) (2)宿舍信息表主要是记录了学生宿舍的基本,表结构如表3.2所示。 表3.2宿舍信息表(t_sushe) (3)宿舍楼宇信息表主要是记录了宿舍楼的基本信息,其中ID是主键,表结构如图3.3所示。 表3.3宿舍楼信息表(t_lou) (4)访客信息表记录了来访者来访的基本信息,表如图3.4所示。 表3.4访客信息表(t_fangke) (5)管理员信息表主要记录的管理员的账号信息,包括用户名和密码,表结构如表3.7所示。 表3.5管理员信息表(t_admin) (6)卫生检查信息表主要记录了宿舍的卫生检查信息,包括得分、检查时间等,表结构如表3.7所示。 表3.6卫生检查信息表(t_weisheng) (7)电费表主要记录的每个宿舍的电费收费情况,包括季度、金额、状态等,表结构如表3.7所示。 表3.7电费信息表(t_dianfei) (8)管理员信息表主要记录的管理员的账号信息,包括用户名和密码,表结构如表3.7所示。 表3.8报修信息表(t_baoxiu) 3.1.3数据库的连接原理 本系统采用Hibernate对数据库进行管理。Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了轻量级的对象封装,使 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。它不仅提供了从 Java 类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用 JDBC 和 SQL 来手工操作数据库,Hibernate 可以大大减少操作数据库的工作量。另外 Hibernate 可以利用代理模式来简化载入类的过程,这将大大减少利用 Hibernate QL 从数据库提取数据的代码的编写量,从而节约开发时间和开发成本 Hibernate 可以和多种Web 服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器。 Hibernate 技术本质上是一个提供数据库服务的中间件。它的架构如图3.5所示: 图3.5显示了 Hibernate 的工作原理,它是利用数据库以及其他一些配置文件如Hibernate .properties ,XML Mapping 等来为应用程序提供数据持久化服务的。Hibernate 具有很大的灵活性,但同时它的体系结构比较复杂,提供了好几种不同的运行方式。在轻型体系中,应用程序提供 JDBC 连接,并且自行管理事务,这种方式使用了 Hibernate 的一个最小子集;在全面解决体系中,对于应用程序来说,所有底层的JDBC/JTA API 都被抽象了,Hibernate 会替你照管所有的细节。 第四章系统功能实现 在管理信息系统的生命周期中,仅过了需求分析、系统设计等阶段之后,便开始了系统实施阶段。在系统分析和设计阶段,系统开发工作主要是集中在逻辑、功能和技术设计上,系统实施阶段要继承此前面各个阶段的工作成果,将技术设计转化为物理实现,因此系统实施的成果是系统分析和设计阶段的结晶。 4.1登陆页面实现 1.描述:为了保证系统的安全性,要先使用本系统必须先登陆到系统中,并且不同角色的用户进入不同的管理界面,功能也随之不同。 2.程序运行效果图如图4.1所示: 3.在登陆页面输入用户名和密码以,选择登陆身份后,点击提交按钮,跳转到登陆的service中,在该service中会对用户名,密码,验证码进行判断,并根据相应的用 4.2系统主界面 1.描述:管理员主页面:左方页面展示了管理员可操作的九大功能,进入相关的管理页面可以链接到子菜单,并且高亮显示,每个管理模块下面都有相应的子菜单。 2.程序运行效果图如图4.2所示: 在每个jsp页面将会对相关用户进行拦截操作,这样可以提高安全性,防止用户不经过登陆页面而进入任何子菜单页面: 4.2.1学生信息管理 4.2.1.1学生信息录入 1.描述:管理员输入学生相关正确信息后点击录入按钮,如果是没有输入完整的学生 信息,或者输入学号已存在,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法onsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。 2.程序效果图如下图4.3所示: 图4.3 学生信息录入 3.流程图如下图 4.4所示: 4.2.1.2学生信息管理 1.描述:管理员点击左侧的菜单“学生管理”,页面跳转到学生管理界面,调用后台的action类查询所有学生。 2.程序效果图如下图4.5所示 图4.5 学生信息管理 学生管理关键代码: public String xueshengAdd() TXuesheng xuesheng=new TXuesheng(); xuesheng.setLouId(louId); xuesheng.setSusheId(susheId); xuesheng.setChuangwei(chuangwei); xuesheng.setXuehao(xuehao); xuesheng.setXingming(xingming); xuesheng.setXingbie(xingbie); xuesheng.setNianling(nianling); xuesheng.setLoginpw(loginpw); xuesheng.setDel("no"); xueshengDAO.save(xuesheng); Map request=(Map)ServletActionContext.getContext().get("request"); request.put("msg", "信息添加成功"); return "msg"; public String xueshengMana() String sql="from TXuesheng where del='no' order by louId,susheId"; List xueshengList=xueshengDAO.getHibernateTemplate().find(sql); for(int i=0;i TXuesheng xuesheng=(TXuesheng)xueshengList.get(i); xuesheng.setLou(louDAO.findById(xuesheng.getLouId())); xuesheng.setSushe(susheDAO.findById(xuesheng.getSusheId())); Map request=(Map)ServletActionContext.getContext().get("request"); request.put("xueshengList", xueshengList); return ActionSupport.SUCCESS; public String xueshengDel() TXuesheng xuesheng=xueshengDAO.findById(id); xuesheng.setDel("yes"); xueshengDAO.attachDirty(xuesheng); Map request=(Map)ServletActionContext.getContext().get("request"); request.put("msg", "信息删除成功"); return "msg"; 4.2.2宿舍信息管理 4.2.2.1房间信息录入 1.描述:在此页面主要是输入房间信息,楼号、房号等信息,是否为空也是通过form 表单中的onsubmit="return checkForm()来检查。 2.程序效果图如图4.7所示: 图4.7 房间信息录入 4.2.2.2房间信息管理 1.描述:管理员点击左侧的菜单“宿舍管理”,页面跳转到宿舍管理界面,调用后台的susheAction类查询出所有的房间信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出房间信息。 2.程序效果图如下图4.8所示 房间管理关键代码: public String susheAdd() TSushe sushe=new TSushe(); sushe.setLouId(louId); sushe.setFanghao(fanghao); sushe.setDel("no"); susheDAO.save(sushe); Map request=(Map)ServletActionContext.getContext().get("request"); request.put("msg", "信息添加完毕"); return "msg"; public String susheMana() String sql="from TSushe where del='no' order by louId"; List susheList=susheDAO.getHibernateTemplate().find(sql); for(int i=0;i TSushe sushe=(TSushe)susheList.get(i); sushe.setLou(louDAO.findById(sushe.getLouId())); Map request=(Map)ServletActionContext.getContext().get("request"); request.put("susheList", susheList); return ActionSupport.SUCCESS; public String susheDel() TSushe sushe=susheDAO.findById(id); sushe.setDel("yes"); susheDAO.attachDirty(sushe); Map request=(Map)ServletActionContext.getContext().get("request"); request.put("msg", "信息删除完毕"); return "msg"; 4.2.3访客信息管理 4.2.3.1访客信息添加 1.描述:输入来访人员信息、来访时间等,点击登记按钮,可以在意见框添加意见信息。如果不输入来访时间,系统会给出警示,提示必须输入来访时间 2.程序效果图如图4.10所示: 图4.10 来访登记 4.2.3.2访客信息管理 1.描述:管理员点击左侧的菜单“访客信息管理”,页面跳转到访客信息管理界面,调用后台的访客Action类查询出所有的访客信息信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出房间信息。 2.程序效果图如下图4.11所示 图4.11 访客信息管理 来访管理核心代码: public String fangkeAdd() TFangke fangke=new TFangke(); fangke.setLouId(louId); fangke.setSusheId(susheId); fangke.setXingming(xingming); fangke.setXingbie(xingbie); fangke.setLaishi(laishi); fangke.setQushi(qushi); fangke.setYijian(yijian); fangkeDAO.save(fangke); Map request=(Map)ServletActionContext.getContext().get("request"); request.put("msg", "信息添加成功"); return "msg"; public String fangkeMana() String sql="from TFangke order by laishi"; List fangkeList=fangkeDAO.getHibernateTemplate().find(sql); for(int i=0;i TFangke fangke=(TFangke)fangkeList.get(i); fangke.setLou(louDAO.findById(fangke.getLouId())); fangke.setSushe(susheDAO.findById(fangke.getSusheId())); Map request=(Map)ServletActionContext.getContext().get("request"); request.put("fangkeList", fangkeList); return ActionSupport.SUCCESS; public String fangkeDel() TFangke fangke=fangkeDAO.findById(id); fangkeDAO.delete(fangke); Map request=(Map)ServletActionContext.getContext().get("request"); request.put("msg", "信息删除成功"); return "msg"; 4.2.4电费信息管理 4.2.4.1电费信息添加 1.描述:输入电费金额、状态(是否缴纳),然后选择楼号和宿舍,点击提交按钮,即可完成电费信息的添加 2.程序效果图如图4.10所示: 4.2.4.2电费信息管理 1.描述:管理员点击左侧的菜单“电费信息管理”,页面跳转到电费信息管理界面,调用后台的电费Action类查询出所有的电费信息信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出所有的电费信息。 2.程序效果图如下图4.11所示 图4.11 电费信息管理 电费管理核心代码: public String dianfeiAdd() TDianfei dianfei=new TDianfei(); dianfei.setLouId(louId); dianfei.setSusheId(susheId); dianfei.setJidu(jidu); dianfei.setJine(jine); dianfei.setZt(zt); dianfeiDAO.save(dianfei); Map request=(Map)ServletActionContext.getContext().get("request"); request.put("msg", "信息添加成功"); return "msg"; public String dianfeiMana() String sql="from TDianfei order by louId,susheId"; List dianfeiList=dianfeiDAO.getHibernateTemplate().find(sql); for(int i=0;i TDianfei dianfei=(TDianfei)dianfeiList.get(i); dianfei.setLou(louDAO.findById(dianfei.getLouId())); dianfei.setSushe(susheDAO.findById(dianfei.getSusheId())); Map request=(Map)ServletActionContext.getContext().get("request"); request.put("dianfeiList", dianfeiList); return ActionSupport.SUCCESS; public String dianfeiDel() TDianfei dianfei=dianfeiDAO.findById(id); dianfeiDAO.delete(dianfei); Map request=(Map)ServletActionContext.getContext().get("request"); request.put("msg", "信息删除成功"); return "msg"; 4.2.5报修信息模块 1.描述:管理员可以查看并受理学生的报修信息,点击左侧的菜单“报修信息管理”,页面跳转到报修信息管理界面,调用后台的报修Action类查询出所有的报修信息信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出所有的报修信息。对于未受理报修,可以点击“受理”按钮 2.程序效果图如下图4.11所示 图4.11 报修信息管理 来访管理核心代码: public String baoxiuAdd() Map session=ActionContext.getContext().getSession(); TXuesheng xuesheng=(TXuesheng)session.get("xuesheng"); TBaoxiu baoxiu=new TBaoxiu(); baoxiu.setLouId(xuesheng.getLouId()); baoxiu.setSusheId(xuesheng.getSusheId()); baoxiu.setNeirong(neirong); baoxiu.setShijian(shijian); baoxiu.setZt("待受理"); baoxiu.setXueshengId(xuesheng.getId()); baoxiuDAO.save(baoxiu); Map request=(Map)ServletActionContext.getContext().get("request"); request.put("msg", "信息添加成功"); return "msg"; public String baoxiuMine() Map session=ActionContext.getContext().getSession(); TXuesheng xuesheng=(TXuesheng)session.get("xuesheng"); String sql="from TBaoxiu where xueshengId=" xuesheng.getId(); List baoxiuList=baoxiuDAO.getHibernateTemplate().find(sql); for(int i=0;i TBaoxiu baoxiu=(TBaoxiu)baoxiuList.get(i); baoxiu.setLou(louDAO.findById(baoxiu.getLouId())); baoxiu.setSushe(susheDAO.findById(baoxiu.getSusheId())); Map request=(Map)ServletActionContext.getContext().get("request"); request.put("baoxiuList", baoxiuList); return ActionSupport.SUCCESS; public String baoxiuDel() TBaoxiu baoxiu=baoxiuDAO.findById(id); baoxiuDAO.delete(baoxiu); Map request=(Map)ServletActionContext.getContext().get("request"); request.put("msg", "信息删除成功"); return "msg"; 4.2.6修改登陆密码 1.描述:输入用户名和用户的原有密码,输入新密码以后点击修改按钮即可修改密码成功。 2.程序效果图如图4.18所示: 图4.18 修改密码 4.2.7安全退出系统 1.描述:点此按钮回到系统的主页面。 2.关键代码:主要是通过javascript语句来实现, item_word[8][4]="退出系统"; item_link[8][4]="javascript:window.open('../index.jsp','_self')"; 第五章系统测试 5.1系统测试目的与意义 系统测试是管理信息系统开发周期中一个十分重要而漫长的的阶段。其重要性体现在他是保证系统质量与可靠性的最后关口,是对整个系统开发过程包括系统分析、系统设计和系统实现的最终审查。 系统测试的任务是尽可能彻底的检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统“做得怎样”。这这阶段又可以分为三个步骤:模块测试,测试每个模块的程序是否正确;组装测试,测试模块之间的接口是否正确;确认测试,测试整个软件系统是否满足用户功能和性能的要求。测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒测试,应覆盖系统随偶联合的部件,系统测试是正对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出需求规格不符合或与之矛盾的地方。 5.2测试过程 在测试之初,由于将数据库中的数据是随便输入,没有实用性,为了使系统更加完善,在系统测试的过程中,本系统将一开始编程随便输入的数据全部清理后,输入了一些有效的测试数据,这样可以更真实的反映系统的功能实现情况。 这样不断发现问题,经过反复的测试、调试,把问题一个个的解决,最终系统可以正常运行。 5.2.1主页面的登录模块测试 测试流程: 1.打开系统首页,输入错误的登录信息 2.登录 3.输入正确的登录信息 4.登录 5.测试结果 5.3其他错误 在程序设计实现的过程中不可避免的会产生各种难以预料的错误,如书写错误、传值类型不一致、参数传递问题等等。这些都需要通过细心的检测与不断的调试才能够排除。比如在servlet 路径配置时因粗心错误导致运行导致所报错误,如图5.4: 图 5.4 由于servlet 路径配置错误,运行时的提示 结论 本次毕业设计将我大学四年所学的软件工程理论知识用到了具体的实践中去,深化了理论知识,同时也锻炼了动手实践能力。在这段日子里,我查阅了许多有关学生宿舍管理信息系统的资料,翻阅了许多JSP的书籍,结合自己的经验,详细调查了学生宿舍管理的工作内容与细节,开发设计了这个学生宿舍管理系统,虽然学校每个学期都会有相应课程的课程设计和实训来作为动手练习训练,不过在本次毕业设计具体的实践的时候还是遇到了很多小问题,比如说在jsp页面将输入框设为不可用是添加属性readonly=“true”,而我在实际编程中却错写成disable=“true”,这样直接导致了request对象取不到数据,调试了程序很久才发现request对象获得的返回值一直是空,之前一直以为是代码哪里出了问题,总是在查源程序的逻辑。这些虽然都是小问题,但是由于不细心在具体实践中却浪费了不少时间,看来平时还是要多多实践才是。 在系统的开发过程中,我运用到了B/S三层结构技术和自己在平时学习中掌握的一些技术,通过这些技术的实现,整个系统的性能得到了大大的提高。这些技术都在论文中做了比较详细的介绍。本系统还存在许多的缺陷和不足之处,比如很多细节上做的还不行,有些功能模块还应再加强。希望在以后的时间里,我可以把这些缺陷都弥补过来,进一步完善系统。 通过本次毕业设计我锻炼了自己的自学、研究能力,也从中学到不少在学校在课堂上学不到的东西.通过实践我也深刻的体会到软件开发的艰辛及问题解决后的喜悦心情,培养我的独立思考问题的能力,同时也增强了我的理论联系实际的能力,这为自己以后的工作奠定了良好的基础。 本系统可以在很大程度上减轻我校学生宿舍管理人员的工作负担,但由于时间按和技术条件的限制,还存在一些不足之处,有些功能还需要改进,还应该做进一步的系统调查需求分析工作,更深入的完善系统。总之,一个紧跟时代步伐的真正使用的软件必需有一个不断完善改进的过程
信息发布:广州名易软件有限公司 http://www.myidp.net
|