https://download.csdn.net/download/Starry_Sky_Dream/82072766
学生宿舍管理系统的设计与实现
DESIGN AND IMPLEMENTATION OF STUDENT DORMITORY MANAGEMENT SYSTEM
姓 名: 张三
学 号: 08220516
班 级: 05软件3
专 业: 计算机
所在系: 软件工程
指导老师: 李四
完成日期:2050年10月01日
摘 要
随着高校扩招,学生和学生宿舍数量增多,造成学生宿舍难管理等问题,寻求更好的学生宿舍管理方法已被提上议程。学生宿舍管理是高校学生管理工作中一项极为重要的内容,学生宿舍管理水平的高低反映了一个学校的学生工作的水平,它会直接影响到学校各个方面。对于目前各大高校来讲学生宿舍工作涉及信息量较多,如果采用手工登记,会耗费管理员大量的时间和精力,而且容易造成信息错误、信息丢失等问题。采用信息管理系统不仅能够保证数据准确无误,而且还可以统计各种信息,这些优点能够极大地提高学生宿舍管理的效率。
本文基于Jsp+Servlet+MySql技术的在学生宿舍管理系统在分析设计时遵循软件工程的思想,文中详细阐述了系统需求分析、系统设计、数据库设计、系统实现以及系统测试五方面。系统以Java编程语言为基础,采用了B/S体系结构,采用免费、小巧、易用的MySql作为数据库服务器,Tomcat作为Web服务器,并成功调试运行。系统面向系统管理员、宿舍管理员和学生三大用户群体,实现了宿舍管理员管理功能、学生管理功能、宿舍楼管理功能、寝室管理功能和考勤管理功能。
系统运行可靠、性能稳定、界面友好、使用方便,提高了学生宿舍管理工作的效率及信息的准确性。
关键词:学生宿舍管理系统;JSP;Servlet;MySql
ABSTRACT
With the expansion of enrollment in colleges and universities, the number of students and student residences has increased, which has made it difficult to manage student residences, and the search for better management methods for student residences has been put on the agenda. Student dormitory management is an extremely important content in the management of college students. The level of student dormitory management reflects the level of student work in a school, which directly affects all aspects of the school. For the current major universities, the student dormitory work involves a lot of information. If manual registration is used, it will cost a lot of time and energy for the administrator, and it will easily cause problems such as information errors and information loss. The use of an information management system not only ensures that the data is accurate, but also counts various information, which can greatly improve the efficiency of student dormitory management.
Based on Jsp+Servlet+MySql technology, the student dormitory management system follows the idea of software engineering in analysis and design. The paper elaborates five aspects of system requirements analysis, system design, database design, system implementation and system testing. The system is based on the Java programming language, adopts the B/S architecture, uses free, small and easy-to-use MySql as the database server, and Tomcat as the web server, and successfully debugs and runs. The system is designed for system administrators, dormitory administrators and students. It implements dormitory management functions, student management functions, dormitory management functions, bedroom management functions and attendance management functions.
The system is reliable in operation, stable in performance, friendly in interface and convenient to use, and improves the efficiency of student dormitory management and the accuracy of information.
Keywords: student dormitory management system; JSP; Servlet; MySql
目 录
摘 要 II
ABSTRACT III
目 录 IV
第一章 绪论 1
1.1 课题背景、目的及意义 1
1.1.1 课题背景 1
1.1.2 课题目的和意义 1
1.2 国内外研究现状 2
1.2.1 国内的研究现状 2
1.2.2 国外的研究现状 3
第二章 相关技术介绍 4
2.1 JAVASCRIPT 4
2.2 CSS 4
2.3 JDBC 4
2.4 MYSQL 5
2.5 SERVLET 5
2.6 JSP 6
2.7 B/S模式 6
2.8 系统开发平台及运行环境 7
2.8.1 系统开发平台 7
2.8.2 运行环境 8
第三章 系统分析 10
3.1 系统需求分析 10
3.1.1 需求概述 10
3.1.2 功能需求分析 10
3.1.3 非功能需求分析 13
3.2 可行性分析 13
3.2.1 经济可行性 13
3.2.2 技术可行性 13
第四章 系统设计 15
4.1 系统架构 15
4.2 系统功能模块设计 15
4.3 系统工作流程设计 17
4.4 数据库设计 18
4.4.1 数据库概念设计 18
4.4.2 数据库逻辑设计 21
第五章 学生宿舍管理系统实现 24
5.1 关键代码分析 24
5.2 首页 35
5.3 系统管理员 36
5.4 宿舍管理员 40
5.5 学生 41
第六章 系统测试 43
6.1 测试的目的与目标 43
6.2 测试方法 43
6.3 测试用例 44
6.4 测试结论 44
结论与展望 46
致谢 47
参考文献 48
第一章 绪论
1.1 课题背景、目的及意义
1.1.1 课题背景
随着我国教育的发展和普及,人类对知识的需求也不断地増长。在这种形势下,我国各大高校纷纷扩大招生,大学在校生数了急剧上升,宿舍、宿舍作为学生生活居住和交流的集散地就自然而然地在学生们的生活中占据了一定的位置,宿舍和宿舍以及学生数量繁多,其中就包含很多信息数据的管理,如何科学地管理宿舍不但关系到学生生活的方便程度,也关系到后勤管理和教育的发展。现今,有很多的大型宿舍都是初步开始使用,甚至尚未使用计算机进行信息管理。
根据调查得知,学校以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于学生入住情况(如入住栋数、宿舍号数等)的录入和查询等往往采用对纸质的记录的人工录入和检索进行,对宿舍的空余宿舍和空余床位等用人工计算、手抄进行。对学生的分配没有准确的统计并且分配后往往出现分配不合理等情况,学生换宿舍时,对纸质记录的改动很大,増加无畏的工作量。访客来访记录以纸质形式记录对将来的查询费时费事。当学院或班级要查询本学院或本班级的学生宿舍分布时,往往要翻阅多本记录,期间操作量和记录量之大,容易导致信息的丢失和统计不全。失物招领和报修申请时,学生要到宿舍管理员出查询或登记,经常出现报修被忽略的情况。
通过对当前宿舍管理系统的分析和了解,得知当前宿舍管理系统有些采用C/S,使得客户端必须要特定的软件支持,并且针对不同的操作系统必须开发不同版本的软件。即使有些系统采用了B/S模式,但是系统的视图和控制不分离,对数据库的操作代码和页面显示代码在一个页面,容易导致系统运行时不稳定,并且使得系统后期维护和升级困难,提高了产品的总成本。
本课题就是在这样背景下提出的,学生宿舍管理系统的成功开发将满足我校学生管理发展的需要,改变原有宿舍管理工作的常规模式,为提高我校学生管理水平有着重要的作用。
1.1.2 课题目的和意义
本课题的目的是通过对已知的学生宿舍管理系统的研究,以Jsp+Servlet+MySql技术设计并实现一个学生宿舍管理系统,以期改变学校现有的宿舍管理工作方式,充分利用计算机技术和校园网的优势,为学校实现优质高效的宿舍管理工作提供信息化技术支持。通过将开发实现的学生宿舍管理系统,投入到学校宿舍管理工作中,提高工作效率的同时,可以节省人力物力财力,不仅获得学生的拥护和肯定,而且可以为学校的稳定发展发挥应有的作用,具有较好的社会和经济效益。
学生宿舍管理系统的研究意义:随着招生规模的扩大和学生人数的增多,传统管理操作方式的弊端日益明显,与当今信息化时代背景下的校园信息化的矛盾日益突出。比如面对大量的信息,如果只依靠人工记载,最后形成纸质版本的文件,不仅工作量大,还容易出错,统计信息的可靠性不是很高,缺乏规范性,使得工作质量难以提高; 纸质版本的信息查询、更新比较繁琐,文件保存起来也有诸多不便,相关文件信息一旦丢失,将无法找回。宿舍管理工作往往涉及多个部门之间的协作,传统的人工操作方式在各个部门的沟通、衔接方面也需要诸多环节,占据了大量的时间,导致管理效率低下,信息传达、反馈不及时。鉴于此,这种传统的管理操作方式急需被取代,现代化的管理信息系统呼之欲出,本文设计的系统模式是针对宿舍管理工作的实际需要专门开发设计的,具有较强的现实意义。
1.2 国内外研究现状
1.2.1 国内的研究现状
在我国,高校管理的信息化建设大约开始于90年代末,和国外的发展形势相同,也是开始于经济较发达的地区。近些年,信息化的建设浪潮几乎席卷了国内的所有高校,都纷纷根据自身实际情况开发设计适合自身需求的宿舍管理系统软件,一方面推进了国内信息化进程,使得宿舍管理系统开发技术越来越先进、完善,同时,实践证明也起到了良好的使用效果,有效提升了学校管理水平。根据调查了解,现阶段已有的宿舍管理系统软件主要有以下几种:
(1)基于C/S平台的宿舍管理系统
基于C/S平台的管理系统是国内早期同类软件系统开发应用较多的一种系统,它的开发成功使企业或部口的管理王作步入了管理信息化道路,深深的影响了管理信息化领域,人们逐渐意识到,传统的人工管理方式必将会被智能化的计算机软件系统所取代。但是,C/S平台的管理系统也存在一些较为突出的弊端:比如对于计算机的配置有要求,还需要在所使用的计算机上安装客户端等相关软件,不能随时随地使用,且操作较为繁琐,为使用者也带来了不少麻烦,实践证明其最终的使用效果并不尽如人意[5]。
(2)基于B/S平台的宿舍管理系统
基于B/S平台的宿舍管理系统主要有两种,一种是基于JSP技术,一种是基于ASP.NET平台[7]。由于ASP和JSP都属于直接面向Web服务器的技术,因此就不再需要相关配套软件来支持,直接通过客户端浏览器便可以进行相关技术操作。两者的最大区别在于ASP.NET的编程语言是C#,JSP使用的是Java,两者都是目前应用比较广泛的宿舍管理系统平台,前者开发容易,可以跨平台使用,它对于服务器没有要求,可以任意进行。后者开发设计更为简单,便于维护更新,兼容性强,安全系数高。如华东师范大学的王慧开发的学生宿舍管理系统、张在职开发的山东工业职业学院的宿舍管理系统和李向阳开发的塔里木大学宿舍管理系统,在实践应用中也取得了良好的应用效果,提高了学校公寓管理工作的效率和水平[8]。
(3)其他平台的宿舍管理系统
如彭杰开发的金华职业技术学院学生宿舍管理系统是基于VB语言的、王佐兵和于晓玲开发的学生宿舍管理系统基于Delphi语言的,都实现了系统的功能,满足了广大师生的需求而浙江交通职业技术学院开发应用的学生宿舍管理系统则是基于GIS平台的,将学校地图与宿舍管理结合以来,显示更直观,使用更方便,是一次创新和尝试[10]。
1.2.2 国外的研究现状
全球信息化的飞速发展加速了现代化进程,使得各个领域都千分重视信息化程度的提高,并积极投身到该领域的探索与研究中。高校是培养人才的基地,应走在时代的前列,提高信息化程度,提升管理水平,促进高校发展。在国外的发达国家,经济基础雄厚,各项基础配套设施比较完善,在学生宿舍方面,学校的硬件设施配备齐全,有的高校宿舍配套设施已经非常高级先进。同时,国外发达国家在各个领域都十分重视信息化建设,美国克莱蒙特大学的凯尼斯•格林(KennethGreen)教授早在1990年的时候,就针对该课题组织了一次大规模的研究,即“信息化校园计划(CCP)”[3]。
第二章 相关技术介绍
本章主要对学生宿舍管理系统所涉及的相关技术进行了介绍。
2.1 Javascript
JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。它最初由网景公司(Netscape)的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类。
Javascript语言与Java语言在语法上比较相似,但随着对Javascript的深入了解后你会发现,它们说到底是两种语言。
2.2 CSS
层叠样式表(Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。
CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。
CSS是一种定义样式结构如字体、颜色、位置等的语言,被用于描述网页上的信息格式化和现实的方式。CSS样式可以直接存储于HTML网页或者单独的样式单文件。无论哪一种方式,样式单包含将样式应用到指定类型的元素的规则。外部使用时,样式单规则被放置在一个带有文件扩展名_css的外部样式单文档中。
样式规则是可应用于网页中元素,如文本段落或链接的格式化指令。样式规则由一个或多个样式属性及其值组成。内部样式单直接放在网页中,外部样式单保存在独立的文档中,网页通过一个特殊标签链接外部样式单。
名称CSS中的“层叠(cascading)”表示样式单规则应用于HTML文档元素的方式。具体地说,CSS样式单中的样式形成一个层次结构,更具体的样式覆盖通用样式。样式规则的优先级由CSS根据这个层次结构决定,从而实现级联效果。
2.3 JDBC
JDBC 的全称是Java Database Connectivity,即Java 数据库连接,它是一种可以执行SQL 语句的Java API。程序可通过JDBC API 连接到关系数据库,并使用结构化查询语言( SQL,数据库标准的查询语言)来完成对数据库的查询、更新。与其他数据库编程环境相比,JDBC 为数据库开发提供了标准的API,所以使用JDBC 开发的数据库应用可以跨平台运行,而且可以跨数据库(如果全部使用标准的SQL)。也就是说,如果使用JDBC 开发一个数据库应用,则应该应用既可以在Windows 平台上运行,也可以在Unix 等其他平台上运行,既可以使用MySQL数据库,也可以使用Oracle 等数据库,而程序无需进行任何修改。
通过使用JDBC,就可以使用同一种API 访问不同的数据库。换言之,有了JDBC API,就不必为访问Sybase 数据库学习一组API,为访问Oracle 数据库又学习一组API,软件开发人员可以使用标准的API 编写需要的应用程序,随后根据数据库的不同,加入相应的不同的数据库驱动程序就可以正常工作。
对于Java 语言的各种跨平台性,其实它们都采用相似的结构,因为它们都需要让相同的程序在不同的平台上运行,所以需要中间的转换程序(为了实现Java 程序的跨平台性,Java 为不同操作系统提供了不同虚拟机)。
2.4 MySQL
MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
自从Oracle公司收购了MySQL后不久,就发行了MySQL的企业版(不再免费)。
2.5 Servlet
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
最早支持Servlet标准的是JavaSoft的Java Web Server,此后,一些其它的基于Java的Web服务器开始支持标准的Servlet。
最早支持 Servlet 技术的是 JavaSoft 的 Java Web Server。此后,一些其它的基于 Java 的 Web Server 开始支持标准的 Servlet API。Servlet 的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。这个过程为:
图2-1 B/S模式应用系统网络结构图
2.8 系统开发平台及运行环境
2.8.1 系统开发平台
(1)Eclipse
虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用Java语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如C/C++、COBOL、PHP、Android等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
基于 Eclipse 的应用程序的一个突出例子是 IBM Rational Software Architect,它构成了 IBM Java 开发工具系列的基础。
(2)Tomcat服务器
Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行Tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat的环境主要有以下几方面技术优势:
1)Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。
2)在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。
3)Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理html页面。
4)Tomcat也可以与其它一些软件集成起来实现更多的功能。
2.8.2 运行环境
操作系统:Windows XP以上版本。
服务器软件:Tomcat7.0以上版本。
浏览器:IE、Fire Fox、Google Chrome。
数据库管理系统软件:MySQL8.0
Java开发包:JDK1.8
第三章 系统分析
需求分析就是详细分析要解决的问题,弄明白问题的要求,包括需要输入哪些数据,将要得到何种结果,最后期望输出什么等。总之,“需求分析”在软件工程当中就是确定要计算机“做什么”[7]。通过本章将了解到学生宿舍管理系统的功能需求分析、非功能需求分析和可行性分析。
3.1 系统需求分析
3.1.1 需求概述
学生宿舍管理系统是学校管理工作的一个重要组成部分,学生宿舍管理系统专门为宿舍管理人员研发的,在结合现代先进的宿舍管理模式和方法进行研发。通过网络技术把宿舍信息和学生信息等进行统一管理,同时该系统还必须满足实际工作需要。在实际运行中应具有可操作性强、为使用者提供方便、提高工作效率等特点,这样可以把管理人员的繁重劳动简化,从而提高效率和准确率。此外,系统设计还应该考虑在现行条件下,充分保证其安全性及稳定性。
学生宿舍管理系统主要是对计算机数据库进行有效的管理。为了行之有效的进行宿舍管理,经过与宿舍管理科人员的反复交流沟通,确定本课题研究的学生宿舍管理系统首先应具备5项基本操作:
(1)密码验证功能用户必须输入正确地用户名和密码才能进入系统进行操作;
(2)系统可完整学生考勤记录信息;
(3)系统可提完整的宿舍楼信息情况;
(4)系统可提供查询功能,迅速准确的获取各种信息;
(5)系统可提供増加删除修改用户的功能;
3.1.2 功能需求分析
学生宿舍管理系统开发的总目标是实现学生宿舍管理的系统化、规范化和自动化。该系统的主要用户为系统管理员、宿舍管理员和学生,其中,系统管理员的权限最大,拥有的功能最多,宿舍管理员次之,学生最后。
因此可以将该系统划分为三个功能模块:一个是系统管理员模块,可以管理宿舍管理员、管理学生、管理宿舍楼、管理寝室和管理考勤;一个是宿舍管理员模块,可以管理学生考勤记录和查看学生信息;最后是学生模块,可以查看自己的考勤记录。系统设计统一登录方式,以用户名和密码来区分登录系统的角色。
综上,学生宿舍管理系统既要实现对于宿舍的管理,又要实现对于用户的管理,还要兼顾到各个功能模块之间的协调合作,共同完成在学生宿舍管理系统的业务需求。下面采用UML用例模型对系统功能需求进行分析。
构建UML用例模型的第一步是确定模型中的使用者有哪些,确定使用者的原则有:谁是系统的维护者、谁是系统的参与者等。一般维护者处于系统内部,对系统有绝对的控制权;而参与者一般都位于系统的外部,处于系统的控制之外。
经过对学生宿舍管理系统的分析,可以确定本系统用例模型有三种,系统管理员、宿舍管理员和学生。下面分别对这三个角色的功能进行描述:
1)系统管理员
系统管理员可以登录系统,进入系统后,可以添加、查看、修改和删除宿舍管理员信息;可以添加、查看、修改和删除学生信息;可以添加、查看、修改和删除宿舍楼信息;可以查看和删除学生考勤记录。宿舍管理员主要功能如下(图3-1为系统管理员用例图):
a. 登录
b. 管理宿舍管理员
c. 管理学生
d. 管理宿舍楼
e. 管理考勤
f. 修改密码
图3-1 系统管理员用例图
2)宿舍管理员
宿舍管理员可以登录系统,进入系统后,可以查看学生信息;可以添加、查看、修改和删除学生的考勤记录。宿舍管理员主要功能如下(图3-2为宿舍管理员用例图):
a. 登录
b. 查看学生
c. 管理考勤
e. 修改密码
图3-2 宿舍管理员用例图
3)学生
学生可以登录系统,进入系统后,可以查看自己的考勤记录。学生主要功能如下(图3-3为学生用例图):
a. 登录
b. 查看考勤记录
e. 修改密码;
图3-3 学生用例图
3.1.3 非功能需求分析
(1)系统的实用性
系统的设计应该充分了解宿舍管理的实际情况,更好的满足实际宿舍管理工作中遇到的各种状况和要求。
(2)系统的安全性
学生宿舍管理系统中存储了大量的学生信息,一旦信息遭到泄露会给学生的学习和生活带了较大的影响,因此开发中的管理系统需具备防火墙,并对其中的学生信息进行加密处理,从而保证系统数据的安全;此外应强调管理系统的规范操作,对系统数据库进行定期备份和检查。
(3)系统的稳定性
学生宿舍与学生的生活和学习息息相关,学生宿舍管理系统的稳定运行能够在最大程度上降低对学生的不良影响,最大限度地发挥其宿舍管理的功能。
(4)系统的易用性
系统设计过程中应对系统的不同界面进行统一设计和美化,尽量使系统中的帮助和提示功能趋于丰富和智能化,简化和降低系统对操作者的操作要求。
(5)系统的可扩展性
系统要求采用纯 B/S 架构,接口开放,可在平台基础上进行二次开发或是定制,能适应不断发展的需求和实际情况。
3.2 可行性分析
3.2.1 经济可行性
现在计算机的价格已经十分低廉,性能却有了很大的进步。而开发本系统对系统开发者来说,并不需要太高的成本支出,开发周期不需太长,节省了人力、物力、财力、资源,所以本系统在经济上是可行的。本系统合理有效地利用计算机资源使复杂繁琐的数据计算和信息处理简单易懂,操作方便,充分实现数据信息管理的智能化。并且可以大大提高公司的工作效率,节省成本开支,增长经济效益。
3.2.2 技术可行性
本系统基于JSP+Servlet+MySQL+Tomcat,由于JSP+Servlet功能强大,而Tomcat和MySQL灵活易维护在开发方面具有方便快捷、使用灵活的特点,以及目前的广泛实际应用,因此使用JSP、Servlet、MySQL和Tomcat是开发轻平台的最佳组合从而说明本系统在技术方面可行。
由于系统是B/S 架构,避免以前的那种C/S需要在每台电脑安装客户端,由于系统的差异性,部署也是有一定困难的,对于B/S的软件就很方便,因为很多电脑都自带浏览器,但是由于客户端需要用户安装专用的客户端软件,这样给开发、安装、升级、维护都带来了一系列问题。同时客户端还可能会受到平台的限制,相比之下只需要有浏览器的系统就简单了很多。
硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。
第四章 系统设计
系统设计阶段的任务是设计软件系统的模块层次结构,设计数据库的结构以及设计模块的控制流程,其目的是明确软件系统“如何做”。在本章节中,主要是在系统分析的基础上对系统架构、系统功能模块和系统数据库进行了设计。。
4.1 系统架构
学生宿舍管理系统采用MVC架构模式:表示层(JSP页面),业务逻辑层(DAO模式),控制层(SERVLET)。MVC架构模式是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
4.2 系统功能模块设计
从上一章系统分析可以知道,本系统主要有管理宿舍管理员功能、管理学生功能、管理宿舍楼功能、管理考勤功能和修改密码功能。该系统的功能结构图如图4-1所示:
图4-1 系统功能模块结构图
根据系统分析和系统功能模块图,设计具体功能如下:
管理宿舍管理员:只有系统管理员才拥有此功能,系统管理员对宿舍管理员信息进行管理,可以添加宿舍管理员信息、修改宿舍管理员信息、查看宿舍管理员信息和删除宿舍管理员信息,其中添加宿舍管理员信息需要填写用户名、密码、姓名、性别和联系电话等信息。
管理学生:系统管理员拥有管理学生的全部功能,系统管理员对学生信息进行管理,可以添加学生信息、修改学生信息、查看学生信息和删除学生信息,其中添加学生信息需要填写学号、密码、姓名、性别、宿舍楼、寝室和联系电话等信息。宿舍管理员仅拥有查看学生信息功能,能够查看学生学号、姓名、性别、宿舍楼、寝室和电话等相关信息。
管理宿舍楼:只有系统管理员才拥有此功能,系统管理员对宿舍楼信息进行管理,可以添加宿舍楼信息、修改宿舍楼信息、查看宿舍楼信息和删除宿舍楼信息,其中添加宿舍楼信息需要填写宿舍楼名称和宿舍楼简介等信息。
管理考勤:系统管理员拥有管理考勤部分功能,只能查看和删除考勤记录。宿舍管理员拥有考勤管理的全部功能,可以添加考勤记录、修改考勤记录、查看考勤记录和删除考勤记录,其中,添加考勤记录需要填写学生的学号、日期和备注等信息。
修改密码:系统管理员、宿舍管理员和学生都拥有此功能,可以修改登录密码。
4.3 系统工作流程设计
根据系统分析,系统工作流程主要涉及学生工作流程、宿舍管理员工作流程和系统管理员工作流程。
学生工作流程:学生进入系统,输入学号和密码,经过系统验证成功后进入学生主页,学生只能查看自己的考勤记录,显示考勤日期、学号、姓名、宿舍楼和寝室等相关信息。
宿舍管理员工作流程:宿舍管理员进入系统后,输入用户名和密码,经过系统验证成功后方可进入宿舍管理员主页,然后宿舍管理员可以查看学生信息和管理考勤。
系统管理员工作流程:系统管理员进入系统后,输入用户名和密码,经过系统验证成功后方可进入系统管理员主页,然后系统管理员可以管理宿舍管理员信息、管理学生信息、管理宿舍楼信息和管理考勤记录。
系统工作总体流程如图4-2所示:
图4-2 系统工作总体流程图
4.4 数据库设计
数据库的设计关系到整个应用系统的运行效率,数据库设计得好,不仅有利于日常数据的维护更新,而且可以提高系统的运行效率,缩短数据查询响应周期 [9]。合理的数据库设计可以使围绕它支持的Web页面的Java代码简单化,易于实现,并且可以提高数据存储的效率,保证数据的完整一致。学生宿舍管理系统采用MySQL作为后台数据库开发工具。
4.4.1 数据库概念设计
概念模型用于信息世界的建模,与具体的DBMS无关。为了把现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型。人们常常首先将现实世界抽象为信息世界,然后再将信息世界转换为机器世界。也就是说,首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统和具体的DBMS,而是概念级的模型,然后再把模型转换为计算机上某一个DBMS支持的数据模型。实际上,概念模型是现实世界到机器世界的一个中间层次。
信息世界中包含的基本概念有实体和联系。
(1) 实体 (entity)
客观存在并可相互区别的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如,一个学生、一门课、一个供应商、一个部门、一本 书、一位读者等都是实体。
(2) 联系 (relationship)
在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系。实体内部的联系通常是组成实体的各属性之间的联系。两个实体型之间的联系可以分为3类,一对一联系,(1:1);一对多联系(1:n);多对多联系(m:n)。
概念模型是对信息世界建模,所以概念模型应该能够方便、准确地表示信息世界中的常用概念。概念模型的表示方法很多,其中最为常用的是P.P.S.Chen于1976年提出的实体,联系方法(Entity-Relationship Approach)简记为E-R表示法)。该方法用E-R图来描述现实世界的概念模型,称为实体-联系模型,简称E-R模型。根据数据流程分析,绘制学生宿舍管理系统的全局E-R模型如图4-3所示。
图4-3 系统全局E-R图
根据系统分析的主要实体有:系统管理员、宿舍管理员、学生、宿舍楼和考勤记录。各个实体具体的描述属性图如下(实体属性在下图中并没有全部给出,因为属性过多的原因):
4-4 系统管理员实体图
2. 宿舍管理员实体
4-5 宿舍管理员实体图
3. 学生实体
4-6 学生实体图
4. 宿舍楼实体
4-7 宿舍楼实体图
6. 考勤记录实体
4-8 考勤记录实体图
4.4.2 数据库逻辑设计
数据库逻辑设计主要是把数据库概念设计时设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。它包括数据项、记录及记录间的联系、安全性和一致性约束等等。导出的逻辑结构是否与概念模式一致,从功能和性能上是否满足用户的要求,要进行模式评价。
本系统数据库名称为db_dorm,数据库中包括:①系统管理员表(t_admin)②宿舍管理表(tb_manage)③学生表(t_student)④宿舍楼表(t_dormbuild)⑤考勤记录表(t_record)。各表数据结构如下:
(1)系统管理员表(t_admin),存储系统管理员详细信息
字段名称 数据类型 主键 是否空 说明
Id int(11) Y N 系统管理员ID
name varchar(20) N Y 用户名
passWord varchar(20) N Y 密码
stu_code varchar(20) N Y 学号也叫登录名
role_id int(11) N Y 角色id
disabled int(11) N Y 是否删除
(2)宿舍管理表(tb_manage),存储宿舍管理员详细信息
字段名称 数据类型 主键 是否空 说明
id int(11) Y N 宿舍管理员ID
name varchar(20) N Y 用户名
passWord varchar(20) N Y 密码
stu_code varchar(20) N Y 学号也叫登录名
role_id int(11) N Y 角色id
disabled int(11) N Y 是否删除
dormBuildId int(11) N Y 宿舍楼ID
sex varchar(20) N Y 性别
tel varchar(20) N Y 电话
(3)学生表(t_student),存储学生详细信息
字段名称 数据类型 主键 是否空 说明
id int(11) Y N 学生ID
name varchar(20) N Y 用户名
passWord varchar(20) N Y 密码
stu_code varchar(20) N Y 学号也叫登录名
dormBuildId int(11) N Y 宿舍楼ID
sex varchar(10) N Y 性别
tel varchar(15) N Y 电话
dorm_Code varchar(20) N Y 宿舍楼编号
create_user_id int(11) NULL N Y 创建人id
role_id int(11) N Y 角色id
disabled int(11) N Y 是否删除
(4)宿舍楼表(t_dormbuild),存储宿舍楼详细信息
字段名称 数据类型 主键 是否空 说明
id int(11) Y N 宿舍楼ID
name varchar(20) N Y 用户名
remark varchar(50) N Y 简介
disabled int(11) N Y 是否删除
(5)考勤记录表(t_record),存储考勤记录详细信息
字段名称 数据类型 主键 是否空 说明
Id int(11) Y N 考勤记录ID
student_id int(11) N Y 学生ID
date date N Y 缺勤日期
remark varchar(50) N Y 备注
disabled int(11) N Y 是否删除
第五章 学生宿舍管理系统实现
本章介绍了学生宿舍管理系统的实现过程,包括关键代码分析和系统实现效果展示。
5.1 关键代码分析
login.jsp是系统管理员、宿舍管理员和学生前台登录页面,login.jsp代码如下:
宿舍管理员
学生
版权所有 2021
LoginServlet.java 是处理登录逻辑的Servlet类,LoginServlet.java代码如下:
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(“登录=====”);
//Tomcat8.0 处理post请求乱码问题
request.setCharacterEncoding(“utf-8”);
//根据输入框标签的name属性值去获登录名和密码
String stuCode = request.getParameter(“stuCode”);
String password = request.getParameter(“password”);
String remember = request.getParameter(“remember”);
String roleId = request.getParameter(“roleId”);
System.out.println(“stuCode:”+stuCode+" password:"+password+" remember:"+remember+" roleId:"+roleId);
UserService userService = new UserServiceImpl();
User user = null;
if(roleId != null && roleId.equals("0")) {
//管理员
user = userService.findAdmin(stuCode,password);
}else if(roleId != null && roleId.equals("1")) {
//宿舍管理员
user = userService.findDormManage(stuCode,password);
}if(roleId != null && roleId.equals("2")) {
//学生
//去查询用户输入的登录名和密码是否正确
user = userService.findByStuCodeAndPass(stuCode,password,"2");
}
System.out.println("user:"+user);
if(user == null) {
//用户输入的学号或密码错误,跳转到登录页面,并给予提示信息
request.setAttribute("error", "您输入的用户名或密码错误!");
//请求链未断开的跳转,可以在下一个servlet或jsp中,获取保存在request中的数据
request.getRequestDispatcher("index.jsp").forward(request, response);
}else {
//用户输入学号和密码正确,登录成功,跳转到主页面
//保存在session中的数据,默认是30分钟内有效。保存在session中的数据,在整个项目中都可以获取得到
request.getSession().setAttribute("session_user", user);
if(remember != null && remember.equals("remember-me")) {
//记住密码一周 时间单位是秒
CookieUtil.addCookie("cookie_name_pass",7*24*60*60,request,response,URLEncoder.encode(user.getStuCode(), "utf-8"),URLEncoder.encode(password, "utf-8"),roleId);
}
System.out.println("========跳转到主页面=====");
//WEB-INF下面的内容是受保护的,不能在通过地址栏直接访问,也不能通过response.sendRedirect重定向的形势访问
request.getRequestDispatcher("/WEB-INF/jsp/main.jsp").forward(request, response);
System.out.println("getServletContext().getContextPath():"+getServletContext().getContextPath());
//response.sendRedirect(getServletContext().getContextPath()+"/WEB-INF/jsp/main.jsp");
}
}
5.2 首页
系统登录页面如下,可以供系统管理、宿舍管理员和学生登录系统,需要输入用户名和密码。
图5-1 系统登录页面
5.3 系统管理员
系统管理员主页如下,显示宿舍管理员管理、学生管理、宿舍楼管理、缺勤记录、修改密码和退出系统等功能栏。
图5-2 系统管理员主页
系统管理员管理宿舍管理员,可以修改、添加、查看和删除宿舍管理员,以下为查看宿舍管理员信息,包括宿舍管理员的编号、姓名、性别、电话、所属宿舍楼、用户名等信息。
图5-3 管理宿舍管理员
系统管理员添加宿舍管理员,需要填写用户名、密码、姓名、性别和联系电话等信息。
图5-4 添加宿舍管理员
系统管理员管理学生,可以修改、添加、查看和删除学生,以下为查看学生信息,包括学生的学号、姓名、性别、电话、所属宿舍楼、寝室等信息。
图5-5 管理学生
系统管理员添加学生,需要填写学号、密码、姓名、性别、宿舍楼、寝室和联系电话等信息。
图5-6 添加学生
系统管理员管理宿舍楼,可以修改、添加、查看和删除宿舍楼,以下为查看宿舍楼信息,包括宿舍楼的编号、名称和简介等信息。
图5-7 管理宿舍楼
系统管理员添加宿舍楼,需要填写宿舍楼名称和简介等信息。
图5-8 添加宿舍楼
系统管理员管理考勤记录,可以查看和删除考勤记录,以下为查看考勤记录信息,包括日期、学生学号、姓名、宿舍楼、寝室和备注等信息。
图5-9 管理考勤记录
5.4 宿舍管理员
宿舍管理员主页如下,显示学生查看、缺勤记录、修改密码和退出系统等功能栏。
图5-10 宿舍管理员主页
宿舍管理员管理学生,可以查看学生信息和给学生添加考勤记录,以下为查看学生信息,包括学生的学号、姓名、性别、电话、所属宿舍楼、寝室等信息。
图5-11 管理学生
宿舍管理员考勤记录,可以添加、修改、查看和删除考勤记录,以下为查看考勤记录,包括日期、学生的学号、姓名、所属宿舍楼、寝室和备注等信息。
图5-12 管理考勤记录
宿舍管理员添加考勤记录,需要填写学号、日期和备注等信息。
图5-13 添加考勤记录
5.5 学生
学生主页如下,显示缺勤记录、修改密码和退出系统等功能栏。
图5-14 学生主页
学生只能查看考勤记录,以下为查看考勤记录,包括日期、学生的学号、姓名、所属宿舍楼、寝室和备注等信息。
图5-15 查看考勤记录
第六章 系统测试
6.1 测试的目的与目标
在此系统进行初步实现之后,开始进行对系统进行测试,找出系统中存在的Bug,通过测试,用提交的Bug报告来为以后软件的改进提供标准和参考,能够在以后的系统改进中找到依据。
测试后的软件各模块基本功能可以顺利进行,尽可能的提高软件的健壮性。
6.2 测试方法
从是否关心软件内部结构和具体实现的角度划分:黑盒测试和白盒测试;从是否执行程序的角度:静态测试和动态测试;从软件开发的过程按阶段划分有:单元测试、集成测试、确认测试、系统测试、验收测试、回归测试、Alpha测试、Beta测试;
(1)单元测试又称模块测试,是针对软件设计的最小单位 ─ 程序模块(这里所说的程序模块在Java中一个模块就是一个方法),进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。
(2)集成测试 (组装测试、联合测试),通常在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:
a. 在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;
b. 一个模块的功能是否会对另一个模块的功能产生不利的影响;
c. 各个子功能组合起来,能否达到预期要求的父功能;
d. 全局数据结构是否有问题;
e. 单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。
(3)确认测试(Validation Testing),确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。
(4)系统测试(System Testing),是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试的目的在于通过与系统的需求定义作比较, 发现软件与系统的定义不符合或与之矛盾的地方。
(5)验收测试(Acceptance Testing),在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。验收测试是以用户为主的测试。软件开发人员和QA(质量保证)人员也应参加。由用户参加设计测试用例,使用生产中的实际数据进行测试。在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。
6.3 测试用例
由于功能模块较多,测试内容篇幅较长,所以在本论文中只介绍系统,表6.1是本系统会员登入的测试表,从测试的结果来看与期望结果完全相同。
登录系统测试用例
功能特性 用户登录验证
测试目的 验证是否输入合法的信息
测试数据 用户名称:1111 密码:1111 验证码:正确的验证码
测试内容 操作描述 数据 期望结果 实际结果 测试状态
1 输入用户姓名,按“登陆”按钮。 用户姓名:1111,
密码为空 显示警告信息“用户名或密码误!” 显示警告信息“用户名或密码误!” 与期望结果相同
2 输入密码,按“登陆”按钮。 用户姓名为空,密码:1111 显示警告信息“用户名或密码误!” 显示警告信息“用户名或密码误!” 与期望结果相同
3 输入用户姓名和密码,按“登陆”按钮。 用户姓名:1,
密 码:1 显示警告信息“用户名或密码误!” 显示警告信息“用户名或密码误” 与期望结果相同
4 输入用户姓名和密码,按“登陆”按钮。 用户名:1111,密 码:1111 正确登入到会员操作界面 正确登入到会员操作界面 与期望结果相同
6.4 测试结论
把开始的代码写得越好,它出现的错误也就越少,你也就越能相信所做过的测试是彻底的。系统化测试以一种有序方式设法探测潜在的麻烦位置。同样,毛病最可能出现在边界,这可以通过手工的或者程序的方式检查。自动进行测试是最理想的,用得越多越好,因为机器不会犯错误、不会疲劳、不会用臆想某此实际无法工作的东西能行来欺骗自己。回归测试检查一个程序是否能产生与它们过去相同的输出。在做了小改变之后就测试是一种好技术, 能帮助我们将出现问题的范围局部化,因为新问题一般就出现在新代码里面。
测试和排错常常被说成是一个阶段,实际上它们根本不是同一件事。简单地说,排错是在你已经知道程序有问题时要做的事情。而测试则是在你在认为程序能工作的情况下,排错是在你已经知道程序有问题时要做的事情。而测试则是在你在认为程序能工作的情况下,为设法打败它而进行的一整套确定的系统化的试验。
Edsger Dijkstra有一个非常有名的说法:测试能够说明程序中有错误,但却不能说明其中没有错误。他的希望是,程序可以通过某种构造过程正确地做出来,这样就不再会有错误了,因此测试也就不必要了。这确实是个美好生活的目标,但是,对今天的实际程序而言,这仍然还只是一个理想。所以应该集中精力讨论如何测试,如何才能够更快地发现程序错误,如何才可以使得工作更有成效、效率更高。
https://download.csdn.net/download/Starry_Sky_Dream/82072766
结论与展望
设计开发基于 Jsp+Servlet+MySql的学生宿舍管理系统是集业务管理与软件技术为一身的工作,只有在理解业务的基础上,才能对业务操作流程进行提炼优化,并通过软件设计与开发技术实现。本文设计的学生宿舍管理系统界面友好、功能丰富、操作简单,能适应大部分环境下的学生宿舍管理系统所需要的工作。本系统在设计采用了 J2EE 框架,设计上实现了高内聚、低耦合的要求,在设计上做到了可扩张和维护。本文在论文撰写、系统开发时对现有学生宿舍管理系统做了深入的调研,并行性了需求分析和系统设计,最终实现了一个实用的学生宿舍管理系统。
通过开发《学生宿舍管理系统》,我较为全面的掌握了JAVA的基本知识和编程技巧,并在开发过程中我的JAVA开发能力得到了进一步的提高。比如:更进一步的深入了解MVC设计模式,软件三层框架;SQL语言的使用。
在开发过程中我总结了一些经验:系统分析的好坏将决定着的系统开发成功与否,一份好分析设计将是成功开发主要因素。我们在着手开发之前不要急于编程,先应有较长的时间去把分析做好,做好数据库设计工作,写出相关的开发文档等。然后再开始编写程序代码,这样做到每段代码心底都有数,有条不紊。当然也有些还需待继续深入地方如:控件的应用等。此外,我还觉得,我个人在这次设计中走了很多弯路。主要是因为平时很少接触软件开发工作,在应用方面缺乏经验,以后还需要更多的努力。
对我来说,这次设计的本身所产生的影响,还远远没有结束,我从本次毕业设计中学到了许多课本上没有的知识。通过自己的学习和努力;通过老师的指导和教育,使我不仅仅在知识水平和解决实际问题的能力上有了很大的提高。还从思想的深处体会到,要把自己的所学变成现实时所将面对的种种难题。
系统不免有错误和待改进之处,真诚欢迎各位师长、同行提出宝贵意见。
致谢
本文是我在**老师的悉心指导下完成的,从论文的选题、课题的研究到论文的撰写上老师给了我莫大的帮助。当我遇到问题时,老师会认真仔细地给我解释说明;当我碰到困难时,他会帮助我一起解决。在此向老师表示深深的敬意和衷心的感谢。
感谢我的父母,因为他们的在精神和物质上的支持才能使我顺利完成大学四年的学习,我将在我未来的工作岗位上努力工作来回报他们的养育之恩。
同时,非常感谢学校、学院各位老师和领导对我各方面的关心与支持。
感谢在百忙之中参加论文评审和答辩的各位专家。
参考文献
[1] 张孝祥,Java 就业培训教程(附盘),清华大学,(2007-07)
[2] 石志国,薛为民,董洁.JSP应用教程.北京:清华大学出版社.北京交通大学出版社,2004
[3] 李曙光.JSP开发实例完全剖析.北京:中国电力出版社,2006
[4] 杨易.JSP高级程序设计.人民邮电出版社,2006
[5] Vivek Chopra.JSP高级程序设计,机械工业出版社,2001
[6] 申吉红,廖学峰,余健.JSP课程设计案例精编.北京:清华大学出版社,2007
[7] 卢潇.软件工程.北京:清华大学出版社;北京交通大学出版社,2005
[8] 萨师煊,王姗.数据库系统概论.北京:高等教育出版社,2000
[9] 马运涛.Eclipse精要与高级开发技术.北京:电子工业出版社,2003
[10] PaulJPerrone etal,张志伟,谭郁松,张明杰.J2EE构建企业系统[M] .北京:清华大学出版社,2001
[11] Chuck Cavaness.Programming Jakarta Struts,2002
[12] Bruce Shive.Research Direction in Object-Oriented Programming,2002
[13] Miao H.K.McDermid J.A.andTony Ian,Proving the existence of the initial state in Z specification,Chinese Journal of Advanced Software Research,2003
[14] Apache Software.The Struts User’s Guide.http://Jakarta.Apache.org/struts.