宿舍管理系统设计与实现
摘 要
计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。人们日益追求着高效、低成本、稳定可靠的运营模式。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。该文通过在宿舍网站的建设以实现对学校宿舍的统一管理。着重论述了学校宿舍管理系统的实现与设计过程。在网站的设计与开发过程中严格遵守软件工程的规范,运用软件设计模式,从而减少系统模块间的不协调性,力求做到系统的稳定性、可重用性和可扩充性。
本网站功能主要包括系统用户管理、学生管理、请假管理、违规管理、卫生管理基本功能。此外,本网站也将实现网站的后台管理,包括动态信息的添加的功能。
系统的开发是基于B/S结构,采用JSP程序设计语言及MYSQL数据库进行开发;主要完成了系统的总体设计与规划、数据库的设计、系统页面的制作与美化、系统安全级别的定制和系统程序的编写、调试与修改等工作。
关键词:宿舍 JSP MYSQL
Abstract
Information system based on computer and communications technology is in a period of vigorous development. People are increasingly in pursuit of high efficiency, low cost, stable and reliable operation mode. With the continuous improvement of science and technology, computer science increasingly mature, its powerful features for people to have a profound understanding, it has entered the human society in various fields and is playing an increasingly important role. In this paper, in order to realize the unified management of the school dormitory by the dormitory website construction. Emphasized to discuss the realization and the design process of the school dormitory management system. Strict compliance with the norms of software engineering in the design and development process of the website, using the software design pattern, so as to reduce the system module between coordination, and strive to achieve system stability, reusability and extensibility.
This web site function mainly includes the system user management, student management, leave management, basic function of illegal management, health management. In addition, this website also will realize the management of website, including adding functionality of the dynamic information.
System development is based on B/S structure, using JSP programming language and MYSQL database development; mainly completed the overall system design and programming, database design, system page manufacture and beautification, system security level of customization and system programming, debugging and modification etc..
Key words: The dormitory; JSP; MYSQL
1 引言
1.1 课题背景及意义
随着计算机产业的迅速发展,电子计算机已广泛的应用于信息管理、文字处理、辅助设计、辅助教学及人们的日常生活中。特别是在计算机的操作系统具有了图形化的界面后,使用计算机已经不再是某些专业人员的专利,各行各业的人们不需要经过专业化的训练就能自如的在计算机上进行各种复杂的操作。
时下,为了能创造更大的经济效益和社会效益,更有利于参与国际竞争,越来越多的企业、公司和学校迫切需要引入现代化的管理手段,而计算机的大容量操作,精确的计算,使它成为企业管理不可缺少的手段之一,但随着计算机应用的不断深入,用户对软件的需求也不断增加,越来越多的用户希望拥有适合自己需要的特殊软件来满足自己的特殊要求。
我的毕业设计题目的选定应该说是顺应这一趋势的。对于当今学校宿舍来说,其数据量大,各种信息管理内容复杂,查询和管理学生信息和学校内的宿舍信息等工作由人工完成将是很累的,也许还很不切实际,不仅浪费了许多人力物力资源,而且还很容易出现差错,有一个符合要求的软件对其进行智能化的学校宿舍管理是最好不过的,节省了人力物力资源,并且对各种信息的把握和操作也更加方便了,对所有信息有了一个全局的掌握。
可行性分析:
(1)经济的可行性:
主要从对项目的经济上进行分析评价,一方面是支出的费用,包括设备购置费、管理和维护费用、人员工资和培训费等,另一个是取得的收益。这是个超小型的管理系统,从投入的人力,财力与物力来讲是非常之小的,只要一台电脑,一台打印机,这个系统就可以搞起来,考虑到学校里有电脑,现只要购置一台打印机就可以了。从节省人力方面,可以让管理人员从繁与复杂的工作中解脱出来,做更多的工作,可以给宿舍里的管理提高一个层次。
(2)技术上的可行性:
技术上的可行性分析要考虑将来要采用的硬件和软件技术能否满足用户(这里是企业)提出的要求(如计算机的容量、速度等)。JSP语言的深入人心,数据库语言的普及,此外,还要考虑开发人员的水平,作为计算机信息管理专业毕业的优等生,数据库设计方面对于我们应该还过得去,在宿舍里生活了四年,对这个管理模式应该比较的熟。
(3)结论:
通过以上两点的分析,编写或开发这个宿舍管理系统是可行的,只要这个系统能实现对员工数据的输入、修改、删除、打印、浏览与查询就可以了。如果技术方面可行,浏览与查询方面的功能应该编写得强大一点,再好有条件组合的查询,可以实现按男女生分类查询,也可以按名字、寝室号、是否空缺等分类查询,以便企业方面管理人员可以很方便的查询想要的数据,以便进行统一管理,统一安排。
1.2 课题的研究与开发目的
对于一名专业的信息技术人员来说,如何最大限度地利用学校后勤部门多年来在数据库系统上的投资,把企业花了大力气搜集来的数据变成对企业未来发展有巨大价值的信息,这是每一个从事信息技术工作的专业人员都应该考虑的问题。
现在全国的很多学校都采用了计算机统一管理,这样就需要一种管理软件来为宿舍的管理者服务,协助他们来完成管理学生宿舍这么一个庞大的工作。
在这种情况下,用各种开发工具开发出来的学校宿舍智能管理系统应运而生,并且蓬勃的发展起来。这为学校宿舍管理带来了很大的方便,更重要的是节省了相当大的人力,物力,财力。
本系统的深刻意义可以通过一个例子来体现出来。假如想在学校范围内查找一名学生所在的公寓,则不要像以前那样去查宿舍楼名单,只需通过查询方法,输入该学生的姓名,即可很容易的找到他的所在宿舍,同时也可以了解他的一些基本信息,看所查找的对象是否是自己所要找的人,另外,还可以知道他的违规和卫生情况。
1.3 本文的主要工作
学生宿舍管理信息系统的工作主要是为着满足来自两方面的需求,分别是学校管理人员和宿舍管理人员。本文所研究的主要内容也是围绕着这两者的需求来进行的。论文的第1章主要对学生宿舍系统的开发背景,目的,及意义进行了分析;第2章主要是对学生宿舍系统进行需求分析,以及对其数据流程与功能进行分析;第3章主要把系统开发工具进行介绍,另外讲解开发系统所用到的一些特殊功能技术;第4章是系统的总体设计,主要讲解了系统各功能模块的设计,以及数据的开发与设计;第5章就是讲解每一个功能的具体实现,第6章是对系统的测试及还存在的不足之处。
2需求分析
2.1 系统需求分析
学生公寓是每一位在校同学生活、学习、相互交流的主要场所,如何提供一个良好的学生公寓的管理体系对学校和同学而言至关重要。以往的学生公寓管理基本上还处于人工操作的阶段,随着计算机技术和网络技术的日益广泛应用,采用计算机以及网络来管理学生公寓似乎也已经不是一件新鲜事了。本毕业设计的目的主要是为了检查学生综合运用以前所学知识的能力,开发一个多功能的学生公寓管理系统。
为了方便公寓管理人员在数据方面的管理,结合当今各学校的宿舍管理,为了能全面、准确、有效地管理学生公寓的各种信息而开发与研制的一个系统。其主要功能是快速适应现代化物管水平和解决工作人员繁重而冗长的工作量。使得他们在学生公寓的各方面都会达到事半功倍的效果,减轻了人力的负担,方便了数据的存储,增加了安全性。本次毕业设计不仅考查了我综合运用以前所学知识的能力,同时也锻炼了我的实际动手能力,对于我以后工作能力的培养具有重要的意义。
本次毕业设计应首先分析学生公寓管理系统的相关功能,结合本次毕业设计的相关要求写出需求分析;其次,综合运用以前所学的相关知识,选择ASP+ SQL Server 2000进行本毕业设计的开发;以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法;同时,在开发设计与实现中,要保存好相关设计文挡,为毕业论文的写作准备材料;最后,系统开发完毕后,进行调试和试运行,做好调试和试运行的相关记录,为毕业论文的写作准备材料本设计的预期成果是完成一个学生公寓管理系统,从而使学生公寓的管理更加方便有效;提供本毕业设计开发的软件和毕业设计论文。
2.2 系统流程分析
为了促进学生宿舍管理系统的信息化、网络化,采用JSP编写了WEB方式的数字学生宿舍管理系统,结合MYSQL数据库来实现。是支持单机、网络、以及多用户的学生宿舍管理系统。本系统可直接放于网络服务器上,在任何地方均能实现管理。
系统主要提供了对系统用户的管理,包括公寓管理人员和教师,教师可以对学生的请假进行管理,公寓管理人员可以对违规情况和卫生情况进行管理。
2.3 系统功能分析
本系统主要权限功能的详细说明如下:
管理员具有所有的权限功能
包括一般用户的管理,学生管理等。
教师可以对学生的请假信息进行管理。
公寓管理员可以对学生的违规情况和宿舍卫生情况进行管理。
3 开发工具及相关技术
3.1 JSP技术
3.1.1JAVA技术简介
Java语言自从1996年正式发布。目前已经成长为IT领域必不可少的主流编程语言。Java起源于Sun公司的“Green”项目。1999年,Sun公司吧Java2技术分成了J2SE,J2EE和J2ME。其中J2E为分布式的企业应用提供开发和运行环境。进入21世纪以后,J2EE由于固有的良好的线性和可扩展性,逐渐成为各大开发商青睐的对象。Java 语言中具有面向对象的优势、 安全、 跨平台、 直接支持分布式的网络中的应用、 鲁棒性、 效率等. Java语言是非常简单且高效的,它使编程时间缩短,却使功能增强,让编程人员接手起来也更加简单,方便。Java语言就像万花筒一样,随意只是几个普通碎片组成起来,但是只要你发挥想象轻轻摇一摇,就会变换出千万种不同的花色。[1]
3.1.2 JSP技术简介
互联网已经发展成为Web应用程序中,如电子商务,电子政务,应用系统的基础设施。基于 Web 的应用程序称为浏览器 / 服务器模式,即 B / S 模式。开发Web应用程序,传统的HTML不能满足要求,需要一些语言来处理用户请求。目前,生成动态网页的方法有CGI、ASP.NET、PHP和JSP。其中JSP是基于Java的。 JSP是Java Server Page的缩写。JSP用来创建动态Web应用程序的快捷方式,并继承了Java “一次编写,到处运行”的特点。[2]JSP具有以下特点:
1. 将内容的生成和显示进行分离
2. 强调可重用的组件
3. 采用标识简化页面开发
4. 健壮性与安全性
5. 良好的移植性
6. 企业级的扩展性和性能
2.1.3 SSH2简介
SSH2(Struts2+Spring+Hibernate)是J2EE的最新流行框架。
Spring是一个开源框架,它由Rod Johnson创建。企业性应用的开发是十分复杂。开发周期长而且开发难度十分大。为了解决这些问题,Rod Johnson创建了Spring框架。从前只能由EJB完成的事情,现在Spring需要使用JacaBean就可以了。从简单性、可测试性和松耦合的来说,所有Java应用都可以使用Spring框架中来开发。而不止是用来开发服务器端而已。[3]
Hibernate是一个开放源代码的对象关系映射框架,Java程序员可以使用它自己的编程思想来操纵数据库。在任何需要使用JDBC的场合下Hibernate都可以完美胜任。程序员不仅可以在Java的客户端程序中运用Hibernate,也可以在Servlet/JSP的Web应用中运用,最革命的是,Hibernate可以替换在CMP,完成数据持久化的重任。[4]
Struts2框架是以WebWork基础上发展起来的。从某种意义上来说,Struts2不是Struts1的继承。应该认为是WebWork衍生出了Struts2,因为Struts2是在WebWork的基础上进行了升级,并不是一个独立创造的全新框架。正因此Struts2在稳定性、性能等各方面都可以得到。很好的保证:Struts2是结合了 Struts 1和WebWork两者的优势创造出来的。[5]它是一个十分令人期待的框架。SSH2框架结构如图2-1所示。
图2-1 SSH2框架结构图
3.2 MyEclipse介绍
MyEclipse 达到了企业工作台水平 ,是 EclipseIDE 扩展,用户可以用它来大大提高效率的数据库和 JavaEE 开发、 释放、 和应用程序服务器的集成。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, Spring,SQL,Hibernate。MyEclipse 是适合用来开发Java, J2EE的 Eclipse 插件集合。MyEclipse的功能特别强大,支持面广泛,特别是对各种开放源产品的支持效果很是不错。MyEclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate, EJB3,JDBC数据库链接工具等多项功能。
在结构上,MyEclipse的特征可以被分为7类:
1. J2EE模型
2. WEB开发工具
3. EJB开发工具
4. 应用程序服务器的连接器
5. J2EE项目部署服务
6. 数据库服务
7. MyEclipse整合帮助
以上所有功能,在Eclipse中都可以找到对应功能部件。这些功能的实现是利用一系列的插件。MyEclipse的结构上是模块化的,这样可以在不影响其他模块在任何单个模块扩展和升级。简单来说, MyEclipse的是Eclipse插件, J2EE的集成,支持代码编写,配置,测试和调试功能强大的开发环境。[6]
3.3 MySQL数据库
MySQL是一个开发性的关系型数据库管理系统。 它将数据存储在不同的表,并不是简单的将所有数据都放在一个大型的仓库。它是可以提高数据读取的速度和灵活性的 RDBMS。[7] MySQL的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件拥有社区版和商业版两大版本。因为MySQL体积小、速度快、总成本低,尤其是开放源码这一特点,所以得到了大小型网站开发者的青睐,他们都十分愿意选择MySQL作为数据库。[8]一般对于个人使用者来说MySQL的功能已经十分全面了。在多次比较了Oracle、DB2、SQL server之后,本论文还是选择了MySQL作为新月出租车公司管理系统的数据库。
3.4 B/S结构介绍
B/S结构就是只安装和维护一个服务器,客户端是利用浏览器来运行软件。随着 Internet技术的兴起和发展。C/S结构已经无法满足人们的要求。于是人们开始变换的C / S,这产生了B / S结构。B/S比C/S的维护工作量大大减少了。[9]C/S结构的每个客户端都必须安装和配置软件。B/S能够降低总体拥有成本。随着计算机技术的发展,目前大多数科技公司都不约而同的对数据提出了实时性、一致性和安全性等这些要求。传统类型C/S结构根本达不到这些要求,迫切的需要做出改变。但是B/S结构则不同,它可以清楚正确的看到系统正在处理的业务,这样有利于管理人员快速的做出决策,有效地避免了企业经济上的亏损。B / S结构的软件,因为在数据集中在数据库服务器,客户端不持有任何业务数据和数据库连接信息,也无需进行数据同步,所以安全性可以大大提高。B/S结构中的数据采取了集中式管理模式。当客户端的业务产生数据时,这些数据都直接被存入中央数据库。这样的做法避免了数据一致性的问题。这些优点很好更好的迎合了人们的需要。[10]
以当下技术水平来说,利用B/S结构来开发网络应用,并通过Internet/Intranet模式下数据库应用,是容易把握的而且成本也是比较低的。这样的开发模式实现了不同的人,从不同的地点,不同的接入方式访问和操作共同的数据库;它可以有效地保护和管理数据访问平台,服务器数据库也是非常安全的。尤其是在这样一种跨平台语言 JAVA 之后出现,B/S 体系结构管理软件是更方便、 更快捷、 更高效。
4 总体设计
4.1 数据库设计
根据系统功能设计的要求以及功能模块的划分,对于学校宿舍管理信息系统一共涉及到五个数据表。它们分别是:宿舍表(ss),用户表(users),学生表(stu),电费表(df),卫生表(ws)。下面就介绍一下各表的设计结构及其功能。
(1)宿舍表(qj):主要用于存放请假的详细信息。其详细设计结构如表1所示。
表1 ss结构表
字段 | 类型 | 中文翻译 |
Id | Int | 主键标示 |
sid | Int | 学生id |
uid | Int | 教师id |
btimes | Date | 请假开始时间 |
days | Int | 天数 |
Yy | nvarchar(50) | 原因 |
Descs | nvarchar(50) | 描述 |
(2)用户表(users):主要用于存放用户的详细信息。其详细设计结构如表2所示。
表2 users结构表
字段 | 类型 | 中文翻译 |
Id | Int | 主键标示 |
username | nvarchar(50) | 用户名 |
password | nvarchar(50) | 密码 |
Roles | nvarchar(50) | 角色 |
(3)违规表(wg):主要用于存放违规的详细信息。其详细设计结构如表1所示。
表3 wg结构表
字段 | 类型 | 中文翻译 |
Id | Int | 主键标示 |
sid | Int | 学生id |
uid | Int | 公寓管理员id |
btimes | Date | 时间 |
cd | nvarchar(50) | 程度 |
cf | nvarchar(50) | 处罚 |
Yy | nvarchar(50) | 原因 |
Descs | nvarchar(50) | 描述 |
(4)卫生表(ws):主要用于存放卫生的详细信息。其详细设计结构如表1所示。
表4 ws结构表
字段 | 类型 | 中文翻译 |
Id | Int | 主键标示 |
uid | Int | 公寓管理员id |
btimes | Date | 时间 |
Gy | nvarchar(50) | 公寓 |
Room | nvarchar(50) | 宿舍 |
Df | nvarchar(50) | 得分 |
Dj | nvarchar(50) | 等级 |
Descs | nvarchar(50) | 描述 |
(5)学生表(stu):主要用于存放学生的详细信息。其详细设计结构如表1所示。
表5 stu结构表
字段 | 类型 | 中文翻译 |
Id | Int | 主键标示 |
Names | Int | 姓名 |
Sex | Date | 性别 |
Gy | nvarchar(50) | 公寓 |
Room | nvarchar(50) | 宿舍 |
No | nvarchar(50) | 学号 |
Bj | nvarchar(50) | 班级 |
Descs | nvarchar(50) | 描述 |
btimes | Date | 入学时间 |
nx | nvarchar(50) | 年限 |
tel | nvarchar(50) | 电话 |
4.2 E-R图
5 详细设计
5.1 登入界面
界面
代码:
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
int index = 0;
while (rs.next()) {
session.setAttribute("id", rs.getInt("id"));
session.setAttribute("name", rs.getString("userName"));
session.setAttribute("types", rs.getString("roles"));
index++;
break;
}
if (index > 0) {
response.sendRedirect("main.jsp");
} else {//查询会员
String sql2 = "select * from mem where username='" + userName
+ "' and password='" + password + "'";
PreparedStatement pstmt2 = conn.prepareStatement(sql2);
ResultSet rs2 = pstmt2.executeQuery();
int index2 = 0;
while (rs2.next()) {
session.setAttribute("id", rs2.getInt("id"));
session.setAttribute("name", rs2.getString("username"));
session.setAttribute("no", rs2.getString("no"));
session.setAttribute("types", "4");
index2++;
break;
}
if (index2 > 0) {
response.sendRedirect("main.jsp");
}else{
response.sendRedirect("login.jsp");
}
5.2 用户管理界面
界面:
代码:
String sql = " select * from users limit " + m + "," + n;
String sql2 = "select count(*) from users ";
PreparedStatement pstmt1 = conn.prepareStatement(sql);
PreparedStatement pstmt2 = conn.prepareStatement(sql2);
ResultSet rs = pstmt1.executeQuery();
ResultSet rs2 = pstmt2.executeQuery();
rs2.next();
totle = rs2.getInt(1);
int totlePage = totle / n;
int totlePageY = totle % n;
if (totlePageY != 0) {
totlePage = totlePage + 1;
}
List<Users> list = new ArrayList<Users>();
while (rs.next()) {
Users bean = new Users();
bean.setId(rs.getInt("id"));
bean.setPassword(rs.getString("password"));
bean.setUsername(rs.getString("username"));
bean.setRoles(rs.getInt("roles"));
list.add(bean);
}
Page page = new Page();
page.setPageNo(pageNo);
page.setTotlePage(totlePage);
page.setTotle(totle);
page.setList(list);
request.setAttribute("page", page);
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!");
request.getRequestDispatcher("userslist.jsp").forward(
request, response);
5.3 学生管理界面
界面:
代码:
String sql = " select * from stu limit " + m + "," + n;
String sql2 = "select count(*) from stu ";
PreparedStatement pstmt1 = conn.prepareStatement(sql);
PreparedStatement pstmt2 = conn.prepareStatement(sql2);
ResultSet rs = pstmt1.executeQuery();
ResultSet rs2 = pstmt2.executeQuery();
rs2.next();
totle = rs2.getInt(1);
int totlePage = totle / n;
int totlePageY = totle % n;
if (totlePageY != 0) {
totlePage = totlePage + 1;
}
List<Stu> list = new ArrayList<Stu>();
while (rs.next()) {
Stu bean = new Stu();
bean.setId(rs.getInt("id"));
bean.setNo(rs.getString("no"));
bean.setTel(rs.getString("tel"));
bean.setBj(rs.getString("bj"));
bean.setBtimes(rs.getDate("btimes"));
bean.setDescs(rs.getString("descs"));
bean.setGy(rs.getString("gy"));
bean.setNames(rs.getString("names"));
bean.setNo(rs.getString("no"));
bean.setNx(rs.getString("nx"));
bean.setRoom(rs.getString("room"));
bean.setSex(rs.getString("sex"));
bean.setTel(rs.getString("tel"));
list.add(bean);
}
Page page = new Page();
page.setPageNo(pageNo);
page.setTotlePage(totlePage);
page.setTotle(totle);
page.setList(list);
request.setAttribute("page", page);
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!");
request.getRequestDispatcher("stulist.jsp").forward(
request, response);
5.4 宿舍管理界面
界面:
代码:
HttpSession session = request.getSession();
String tid=session.getAttribute("id").toString();
String sql = " select * from qj where uid = "+tid+" limit " + m + "," + n;
String sql2 = "select count(*) from qj where uid = "+tid;
PreparedStatement pstmt1 = conn.prepareStatement(sql);
PreparedStatement pstmt2 = conn.prepareStatement(sql2);
ResultSet rs = pstmt1.executeQuery();
ResultSet rs2 = pstmt2.executeQuery();
rs2.next();
totle = rs2.getInt(1);
int totlePage = totle / n;
int totlePageY = totle % n;
if (totlePageY != 0) {
totlePage = totlePage + 1;
}
List<Qj> list = new ArrayList<Qj>();
while (rs.next()) {
Qj bean = new Qj();
bean.setId(rs.getInt("id"));
bean.setBtimes(rs.getDate("btimes"));
bean.setDays(rs.getDouble("days"));
bean.setDescs(rs.getString("descs"));
bean.setSid(rs.getInt("sid"));
bean.setUid(rs.getInt("uid"));
bean.setYy(rs.getString("yy"));
list.add(bean);
}
Page page = new Page();
page.setPageNo(pageNo);
page.setTotlePage(totlePage);
page.setTotle(totle);
page.setList(list);
request.setAttribute("page", page);
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!");
request.getRequestDispatcher("qjlist.jsp").forward(
request, response);
5.5 电费管理界面
界面:
代码:
HttpSession session = request.getSession();
String tid=session.getAttribute("id").toString();
String sql = " select * from wg where uid = "+tid+" limit " + m + "," + n;
String sql2 = "select count(*) from wg where uid = "+tid;
PreparedStatement pstmt1 = conn.prepareStatement(sql);
PreparedStatement pstmt2 = conn.prepareStatement(sql2);
ResultSet rs = pstmt1.executeQuery();
ResultSet rs2 = pstmt2.executeQuery();
rs2.next();
totle = rs2.getInt(1);
int totlePage = totle / n;
int totlePageY = totle % n;
if (totlePageY != 0) {
totlePage = totlePage + 1;
}
List<Wg> list = new ArrayList<Wg>();
while (rs.next()) {
Wg bean = new Wg();
bean.setId(rs.getInt("id"));
bean.setBtimes(rs.getDate("btimes"));
bean.setDescs(rs.getString("descs"));
bean.setSid(rs.getInt("sid"));
bean.setUid(rs.getInt("uid"));
bean.setYy(rs.getString("yy"));
bean.setCd(rs.getString("cd"));
bean.setCf(rs.getString("cf"));
list.add(bean);
}
Page page = new Page();
page.setPageNo(pageNo);
page.setTotlePage(totlePage);
page.setTotle(totle);
page.setList(list);
request.setAttribute("page", page);
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!");
request.getRequestDispatcher("wglist.jsp").forward(
request, response);
5.6 卫生管理界面
界面:
代码:
HttpSession session = request.getSession();
String tid=session.getAttribute("id").toString();
String sql = " select * from ws where uid = "+tid+" limit " + m + "," + n;
String sql2 = "select count(*) from ws where uid = "+tid;
PreparedStatement pstmt1 = conn.prepareStatement(sql);
PreparedStatement pstmt2 = conn.prepareStatement(sql2);
ResultSet rs = pstmt1.executeQuery();
ResultSet rs2 = pstmt2.executeQuery();
rs2.next();
totle = rs2.getInt(1);
int totlePage = totle / n;
int totlePageY = totle % n;
if (totlePageY != 0) {
totlePage = totlePage + 1;
}
List<Ws> list = new ArrayList<Ws>();
while (rs.next()) {
Ws bean = new Ws();
bean.setId(rs.getInt("id"));
bean.setBtimes(rs.getDate("btimes"));
bean.setDescs(rs.getString("descs"));
bean.setGy(rs.getString("gy"));
bean.setDf(rs.getString("df"));
bean.setDj(rs.getString("dj"));
bean.setRoom(rs.getString("room"));
bean.setUid(rs.getInt("uid"));
list.add(bean);
}
Page page = new Page();
page.setPageNo(pageNo);
page.setTotlePage(totlePage);
page.setTotle(totle);
page.setList(list);
request.setAttribute("page", page);
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!");
request.getRequestDispatcher("wslist.jsp").forward(
request, response);
6 系统的测试与分析
6.1 测试目的与目标
在此系统进行初步实现之后,开始进行对系统进行测试,找出系统中存在的Bug,通过测试,用提交的Bug报告来为以后软件的改进提供标准和参考,能够在以后的系统改进中找到依据。
测试后的软件各模块基本功能能顺利进行,尽可能的提高软件的健壮性。
6.2 测试方法
系统的测试有两种方法分别为黑盒测试和白盒测试。
黑盒测试又称为功能测试,在程序接口进行,只检查程序功能是否能够按照规格说明书的规定正确使用,程序是否能适当地接收输入数据并发生正确的输出信息,而且要能够保持外部信息的完整性。
白盒测试又叫结构测试,完全了解程序的结构和处理过程,这种方法按照程序内部的逻辑测试程序,检验程序中每条通路是否都能按照预定要求正确工作。
本系统开发过程进行的测试步骤如下:
模块测试:也叫单元测试,目的是保证每一个模块作为一个单元能正确运行,本测试所发现的往往是编码和详细设计的错误,主要评价模块的下述五个特点:模块接口,局部数据结构,重要的执行路径,出错处理通路,影响上述各方面特性的边界条件。
模块测试主要由代码审查和软件测试两部分组成。
集成测试:包括系统测试和子系统测试。集成测试是组装软件的系统技术,主要目标是发现与接口有关的问题。集成测试有两种方法:非渐增式和渐增式,但比较而言,渐增式方法比较好,因为:编写的测试软件较少,开销较小;较早地发现模块间的接口错误;错误位置容易判断;测试更彻底。
因此,本系统集成测试采用渐增式测试中的混合法,即对软件结构中较上层使用自顶而下的测试方法,而对软件结构中较下层,使用的是自底向上方法,两者结合,这是对模块较多时测试的一种折衷方法。
验收测试:这一步是验证软件的有效性。目的是向未来的用户表明系统能够象预定的那样工作,验收测试一般使用黑盒测试法,验收测试有两种可能的结果:功能和特性与用户的要求有差距;功能和性能与用户要求一致,软件是可以接受的。
这个阶段发现的问题往往和需求分析阶段的差距有关。
平行运行。所谓平行运行就是同时运行。新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果。目的有:可以在准生产环境中运行新系统而有不冒风险;用户能有一段熟悉新系统的时间;可以验证用户指南和使用手册之类的文档;能够以
准生产模式对新系统进行全负荷测试,可以用测试结果验证性能指标。
6.3 测试结论
把开始的代码写得越好,它出现的错误也就越少,你也就越能相信所做过的测试是彻底的。系统化测试以一种有序方式设法探测潜在的麻烦位置。同样,毛病最可能出现在边界,这可以通过手工的或者程序的方式检查。自动进行测试是最理想的,用得越多越好,因为机器不会犯错误、不会疲劳、不会用臆想某此实际无法工作的东西能行来欺骗自己。回归测试检查一个程序是否能产生与它们过去相同的输出。在做了小改变之后就测试是一种好技术,能帮助我们将出现问题的范围局部化,因为新问题一般就出现在新代码里面。
测试和排错常常被说成是一个阶段,实际上它们根本不是同一件事。简单地说,排错是在你已经知道程序有问题时要做的事情。而测试则是在你在认为程序能工作的情况下,排错是在你已经知道程序有问题时要做的事情。而测试则是在你在认为程序能工作的情况下,为设法打败它而进行的一整套确定的系统化的试验。
结 论
学生宿舍管理系统是在对相关管理范畴进行详细调研后,确定了系统涉及的领域,包括数据库设计、界面设计、Web应用层设计等,是一个具有实际应用意义的典型管理系统。
根据本毕业设计的要求,经过四个多月的设计与开发,学生宿舍管理系统基本开发完毕。其功能基本符合用户的需求,在数据的一致性问题上,也通过程序进行了有效的解决。
通过这次的毕业设计,我不仅拓宽了自己的知识面,还在实践过程中巩固和加深了自己所学的理论知识,使自己的技术素质和实践能力有了进一步的提高,同时我的专业水平也有了很大的进步。同时,在系统开发方面也累积了不少经验,特别是在对系统开发工具不是很熟悉的情况下,通过自己的学习和导师的指导完成了设计任务。并在设计过程中,自己分析问题和解决问题的能力都得到了锻炼和提高,完善了自己的知识结构,加深了对知识的理解。
这次毕业设计完成后,体会颇多,在学与做的过程中,取长补短,不断学习新的知识,吸取经验,达到进步的目的。更使我明白了自己的优缺点,知识只有在不断的使用过程中才会丰满,只有经过实践的东西才是真理,才能够被自己牢牢的掌握。培养一个好的编程习惯对于一名学计算机专业的学生来讲是非常重要的。特别是代码语句要错落有序、层次分明;函数、过程及一些复杂语句要有详细注释;复杂的问题要分而治之;要善于思考总结……
在这次毕业设计及论文编写过程当中,我学到了许多不能从书本上直接获得的知识。程序开发的过程是辛苦的,我经常会因为思考一个问题,而失眠或忘了吃饭时间,整天坐在电脑前,弄得疲惫不堪。但我又非常享受这种投入的状态,当一个Bug被排除,当一个技术难题被解决,当一个逻辑问题被想通时,这种喜悦是无法用言词来形容的,感觉非常的充实。而这种回报也是显而易见的,正是遇到难题迫使我变得更主动,积极的去学习,反复试验,不断的查证,最终也使我对JSP和数据库知识有了深刻的理解,形成了一套自己的开发思想,并提高了分析问题,解决问题的能力。这也是我觉得收获最大的地方,对我走向社会,走到工作岗位都起了极为重要的作用。
参考文献
[1] 孙卫琴.Java面向对象编程. [M]电子工业出版社. 2006.7.
[2] 杨学全.JSP编程技术. [M]北京:清华大学出版社. 2009.4.01.
[3] 孟琼. Spring框架事务处理技术研究.[J/OL]江西省计算机研究所. 2012.10.05.
[4] 董袁泉.基于Hibernat框架的J2EE应用开发.[J/OL]沙洲职业工学院学报. 2011-03-15.
[5] 余银山; 胡正华.基于Struts2框架的Web应用开发研究.[J/OL]电脑知识与技术. 2009-06-05
[6] 肖炜.基于MyEclipse开发环境的移动图书馆系统设计.[J/OL]网友世界. 2012-10-15.
[7] 陈刚.基于MySQL存储引擎的融合查询方法[P].杭州求是专利事务所有限公司. 2008.04.09.
[8] Jaroslaw Skaruz.Applications of Evolutionary ComputingSpringer.[B]海德堡出版社.2009.
[9] 李云云.浅析B/S和C/S体系结构[J/OL].科学之友. 2011.01.15.
[10] 张淑荣; 苏兵.C/S与B/S两种软件体系结构[J/OL].电脑学习. 2010.12.01.
[11] 崔楠.车辆违章信息管理系统的实现.[J/OL]山东:山东大学. 2012.
[12] 刘国艳. 家庭财务管理的设计与实现.[J/OL]].山东:山东大学. 2012 .
[13] 仲丽维.Web版交通车辆违章查询系统.[J/OL]现代技术制造与装备. 2010.07.15.
[14] 戴马. 基于J2EE架构的SSH2组合框架的Web应用. [D]苏州大学. 2010.10.01.
[15] 李庆敏. 基于MVC架构的RIA分层框架的接口模型.[P] 广州市深研专利事务 所. 2008.7.30
[16] 陶幸辉; 宋志刚.软件系统测试类型及测试用例设计.[J/OL]科技经济市场. 2011-06-15.
[17] 陈鑫.Spring框架的分析和研究. [J/OL]电脑知识与技术,2009.7.08
[18] 李亚伟.MySQL的存储安全的研究与实现.[J/OL]华中科技大学,2011.