高校宿舍管理系统1.docx
《高校宿舍管理系统1.docx》由会员分享,可在线阅读,更多相关《高校宿舍管理系统1.docx(19页珍藏版)》请在冰点文库上搜索。
高校宿舍管理系统1
目录
1.1系统开发背景1
1.2国内外发展现状1
1.3本文主要的研究工作2
2系统分析3
2.1业务流程图3
2.2需求分析4
2.3数据库开发技术分析4
2.3.1数据库5
2.3.2数据库管理系统6
2.3.3创建数据库6
3系统总体设计8
3.1设计目标8
3.2模块功能设计8
4系统数据库设计9
4.1数据库设计9
4.2连接数据库13
参考文献16
1引言
1.1系统开发背景
在信息化发展的今天,无论是一个公司、企业还是个人,都有庞大数据需要管理。
纯手工管理记录这些纷繁复杂数据的方式已经无法适应社会的发展,实现数据规范化、自动化的信息化管理,是当今企事业单位的必然要求。
学生宿舍管理系统对于一个学校来说是必不可少的组成部分。
目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。
而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。
当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,信息化管理正是适应时代的产物。
21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。
我们针对如此,设计了一套学生宿舍管理系统。
学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。
由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。
这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。
本系统具有运行速度快、安全性高、稳定性好的优点,并且具备完善的报表生成、修改功能,能够快速的查询学校所需的住宿信息。
1.2国内外发展现状
信息管理系统已经逐步成为一个独立的学科分支,它继承了其他众多学科的理论、方法与应用技术,它与信息科学、系统科学、控制理论、运筹学、会计学、统计学、经济学、管理科学、计算机科学有着十分密切的联系。
同时,管理信息系统作为一种应用工具,又广泛地应用于工业、农业、交通、运输、文化、教育、卫生、体育以及各种社会经济活动的信息管理之中,并起着日益重要的作用,显示出强大的生命力。
计算机技术在学校管理中也得到了快速的发展,可是就学校后勤管理来说,计算机的应用就相对的比较单一了。
而在国外,很多学校后勤都有自己独特的技术应用。
由于传统的基于客户机/服务器(C/S)模式的信息管理系统存在着诸多缺点,因此把传统的基于C/S模式管理系统和基于浏览器/服务器(B/S)的优点有机结合,构造一个基于B/S模式的高校宿舍管理系统。
而J2EE应用程序可以是基于WEB方式的,也可以是基于传统方式的[1]。
基于J2EE技术的信息管理系统广泛的应用于各大领域,为当今的信息化管理提供了有力的支持,于是开发一个基于J2EE的高校宿舍管理系统适应了当前的形势。
高校宿舍管理系统的设计是为了提高管理人员的办事效率,为学校的科学发展提供准确及时的数据资料。
1.3本文主要的研究工作
本系统主要采用J2EE技术和SQLServer2000数据库共同实现。
它采用B/S模式开发宿舍管理系统,主要实现对学生信息管理、宿舍设施管理、收费管理以及报表打印等功能。
该系统提供了友好的人机交互界面,用户只需输入一些简单信息,即可完成对整个学生宿舍的信息进行管理。
2系统分析
2.1业务流程图
对系统可划分为两层流程图:
第一层流程图:
流程图如图4-1所示:
核对用户名、密码
验证员工用户名、密码
验证管理员用户名、密码
图4-1登录流程图
第二层流程:
3种不同权限的用户进入特定的界面进行各自操作。
以学生用户权限登录,操作流程如图4-2所示:
查询
登录
修改
提交
图4-2学生操作流程图
以员工权限登录,操作流程如图4-3所示:
查询
登录
管理
图4-3员工操作流程图
以最高管理员权限登录,操作流程如图4-4所示:
查询
登录设置
打印
图4-4管理员操作流程图
2.2需求分析
通过调查,要求系统需要有以下功能;
1、对学生基本情况管理。
2、对学生住宿分配管理。
3、对学生入住管理。
4、对后勤财务管理,例如水电费,并实现打印功能。
5、对后勤员工进行管理。
6、提供学生、员工、管理员的登录管理功能。
2.3数据库开发技术分析
在数据库应用系统开发之前,对开发数据库的基本概念应当了解,对数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。
数据库应用系统开发的目标是建立一个满足用户长期需求的产品。
开发的主要过程为:
理解用户的需求,然后,把它们转变为有效的数据库设计。
把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。
数据库技术在计算机软件邻域研究中一直是非常重要的主题,产生于60年代,30多年来数据库技术得到了迅速发展,并已形成较为完整的理论体系和一大批实用系统。
并且,近年来,随着WorldWideWeb(WWW)的猛增及Internet技术的迅速发展,使得数据库技术成为最热门技术之一。
SQL是英文StructuredQueryLanguage的缩写,意思为结构化查询语言。
SQL语言的主要功能就是同各种数据库建立联系,进行沟通。
按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。
SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。
目前,绝大多数流行的关系型数据库管理系统,如Oracle,Sybase,MicrosoftSQLServer2000,等都采用了SQL语言标准[10]。
SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。
他不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口。
它以记录集合作为操纵对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语言可以嵌套,这使他具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的一个单独事件只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。
SQL同时也是数据库文件格式的扩展名。
SQL语言包含4个部分:
数据定义(DDL)语言(如CREATE,DROP,ALTER等语句),数据操纵(DML)语言(INSERT,UPDATE,DELETE语句),数据查询语言(SELECT语句),数据控制语言(如GRANT,REVOKE,COMMIT,ROLLBACK等语句)。
2.3.1数据库
数据库由DBMS(数据库管理系统)处理,DBMS则由开发人员和用户通过应用程序直接或间接地使用。
它主要包括四个要素:
用户数据、元数据、索引和应用元数据。
用户数据:
目前,大多数主流数据库管理系统把用户数据表示为关系。
现在把关系看作数据表。
表的列包含域或属性,表的行包含对应业务环境中的实体的记录。
并非所有的关系都同样符合要求,有些关系比其它关系更结构化一些。
元数据:
数据库是自描述的,这就意味着它自身包含了它的结构的描述,这种结构的描述称作元数据[11]。
因为DBMS产品是用来存储和操纵表的,所以大多数产品把元数据以表的形式存储,有时称作系统表。
这些系统表存储了数据库中表的情况,指出每一个表中有多少列,那一列是主关键字,每一列的数据类型的描述,它也存储索引、关键字、规则和数据库结构的其他部分。
在表中存储元数据不仅对DBMS是有效的,对用户也是方便的,因为他们可以使用与查询用户数据同样的查询工具来查询元数据。
本文介绍的SQL语言可以同时用于元数据和用户数据。
应用元数据:
存储在数据库中的第四种数据是应用元数据,它用来存储用户窗体、报表、查索引。
第三种类型的数据改进了数据库的性能和可访问性,这种数据经常称作开销数据,尽管有时也采用其他类型的数据结构,如链表,但它主要还是索引。
索引可以用来排序和快速访问数据。
查询和其他形式的查询组件。
并非所有的DBMS都支持应用组件,支持组件的DBMS也不一定把全部组件的结构作为应用源数据存储在数据库中。
然而,大多数现代的DBMS产品存储这种数据作为数据库的一部分。
一般来说,数据库开发人员和用户都不直接访问应用源数据,相反,他们通过DBMS中的工具来处理这些数据。
2.3.2数据库管理系统
数据库管理系统(DBMS)是指数据库系统中管理数据的软件系统。
DBMS是数据库系统的核心组成部分。
对数据库的一切操作,包括定义、更新及各种控制,都是通过DBMS进行的。
DBMS总是基于某种数据模型,可以把DBMS看成是某种数据模型在计算机系统上的具体实现。
根据数据模型的不同,DBMS可以分成层次型、网状型、关系型、面向对象型等。
DBMS的特点和功能可以分为三个子系统:
设计工具子系统、运行子系统和DBMS引擎[12]。
设计子系统有一个方便数据库及其应用创建的工具集。
它典型地包含产生表、窗体、查询和报表的工具。
DBMS产品还提供编程语言和对编程语言的接口,运行子系统处理用设计子系统开发的应用组件。
它所包含的运行处理器用来处理窗体和数据库的数据交互,以及回答查询和打印报表等,DBMS引擎从其他两个组件接受请求,并把它们翻译成对操作系统的命令,以便读写物理介质上的数据。
DBMS引擎还涉及事务管理、锁、备份和恢复。
2.3.3创建数据库
数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。
数据库设计时需要根据数据需求,分析各个数据之间的关系,按照DBMS提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。
数据库中的关系表是二维的,它有如下四个性质[13]:
l在表中的任意一列上,数据项应属于同一个属性,每一列都存放着不同记录的同一属性数据。
2表中所有行都是不相同的,不允许有重复组项出现,每一行都是一个不同的记录。
3在表中,行的顺序无关紧要,每行存的都是记录,先放哪一个都没关系。
4在表中,列的顺序无关紧要,但不能重复。
为防止数据库出现更新异常、插入异常、删除异常、数据冗余太大等现象,关系型数据库要尽量按关系规范化要求进行数据库设计。
3系统总体设计
3.1设计目标
本系统采用JAVA平台,运用JSP、Servlet、JavaBean等J2EE技术组件来开发该系统,为高校后勤工作人员提高更方便有效的管理模式。
具体地讲,就是通过对学生信息、入住情况、收费情况、设施管理等的查询,修改等操作来提高工作效率。
预期达到的目标:
1、后勤人员对学生个人信息的增删查改宿舍的分配等各种操作
2、管理员对后勤人员管理以及各权限的设置
3、对宿舍的财务统计和宿舍设施的管理
4、对系统的维护以及信息安全管理的设置
5、系统最大限度地实现了易安装性、易维护性和易操作性。
6、系统运行稳定、安全可靠。
3.2模块功能设计
高校宿舍管理系统是一个根据高校后勤管理模式来开发的。
主要功能模块包括以下:
学生住宿分配管理模块:
该模块主要功能是实现手工分配学生宿舍的功能。
学生基本情况管理模块:
该模块主要功能是入住的学生基本信息的增删查改等功能。
财务管理模块:
该模块主要功能是实现收费、物品管理和各项报表的编制、打印功能。
后勤管理模块:
该模块主要功能是实现后勤工作人员的管理,对后勤人员设置权限,添加管理员等。
4系统数据库设计
4.1数据库设计
本系统采用SQLServer2000数据库,系统数据库名为高校学生宿舍管理系统,数据库系统中包括8个数据表[15]。
有学生基本信息表、员工基本信息表、楼栋房间表、物品报修登记表、角色表、权限表、收费信息表、来访登记表。
关于数据库中的主要数据表如下:
1、学生基本信息表
学生基本信息表主要用于查看学生信息,其中包括学生学号,用于给学生赋予唯一的编号,便于查找,设为主键,不能重复[16]。
还有姓名、年龄、性别、专业等。
表6-1学生信息表
字段名
数据类型
长度
是否主键
描述
ID
int
15
是
ID号
学号
varchar
30
是
外键
姓名
varchar
30
Notnull
性别
int
30
Notnull
籍贯
varchar
30
Notnull
出生年月
datetime
8
Notnull
专业
varchar
30
Notnull
学院
varchar
30
Notnull
联系方式
varchar
30
Notnull
备注
varchar
30
Notnull
2、员工信息表
员工信息表主要用于方便管理员工,其中包括员工编号,,便于查找,设为主键,不能重复。
还有姓名、年龄、性别等。
表6-2员工信息表
字段名
数据类型
长度
是否主键
描述
ID
int
15
是
ID号
编号
varchar
30
是
外键
姓名
varchar
30
Notnull
性别
int
30
Notnull
出生年月
datetime
8
Notnull
联系方式
varchar
30
Notnull
3、楼栋房间表
楼栋房间表主要用于方便查询楼栋房间信息,其中包括楼栋号,便于查找,设为主键,不能重复。
还有楼栋号,入住人数等。
表6-3楼栋房间表
字段名
数据类型
长度
是否主键
描述
ID
int
15
是
ID号
楼栋号
varchar
30
是
外键
入住人数
varchar
30
Notnull
住宿标准
varchar
30
Notnull
水表底数
varchar
30
Notnull
电表底数
varchar
30
Notnull
电话号码
varchar
30
Notnull
备注
varchar
30
Notnull
4、物品报修登记表
物品报修登记表主要用于登记学生保修情况,对需要维修的宿舍进行及时处理,其中主要包括楼栋号、报修物品,日期,原因等。
表6-4物品保修登记表
字段名
数据类型
长度
是否主键
描述
ID
int
15
是
ID号
楼栋号
varchar
30
是
外键
报修物品
varchar
30
Notnull
报修时间
datetime
8
Notnull
保修原因
varchar
30
Notnull
备注
varchar
30
Notnull
5来访登记表
来访登记表主要是登记来访宾客,为管理宿舍的安全工作提供方便。
它主要包括楼栋号、访问人姓名、证件类别、证件号码、来访时间、值班人等。
表6-5来访登记表
字段名
数据类型
长度
是否主键
描述
ID
int
15
是
ID号
楼栋号
varchar
30
是
外键
访问人姓名
varchar
30
Notnull
被访人姓名
varchar
30
Notnull
证件类别
varchar
30
Notnull
证件号码
varchar
30
Notnull
来访时间
dadetime
30
Notnull
值班人
varchar
30
Notnull
6角色表
角色表主要是系统分配的3种权限的用户,包括学生用户、员工、管理员。
表6-6角色表
字段名
数据类型
长度
是否主键
描述
ID
int
15
是
ID
学生
varchar
30
Notnull
员工
varchar
30
Notnull
管理员
varchar
30
Notnull
权限
int
15
是
外键
7、权限表
权限表主要设置用户权限,用户类别,它主要包括用户名、密码、权限等
表6-7权限表
字段名
数据类型
长度
是否主键
描述
ID
int
15
是
ID
权限
int
15
是
Key
用户名
varchar
30
Notnull
密码
varchar
30
Notnull
8、收费信息表
收费信息表主要是对学生入住之后的水电维修等费用进行管理,它主要包括收费标准、收费类别、收费日期等。
表6-8收费信息表
字段名
数据类型
长度
是否主键
描述
ID
int
15
是
ID号
收费标准
varchar
30
Notnull
收费类别
varchar
30
外键
收费日期
datetime
8
Notnull
缴费状态
int
20
Notnull
4.2连接数据库
JDBC建立Java程序连接到数据库的结构,它看起来很像ODBC,但ODBC是以C语言撰写的,不能直接在Java程序中应用。
JDBC中包含一个JDBC/ODBC的桥接器(bridge),通过该桥接器就可以在Java程序中调用合乎ODBC规格的数据库。
连接过程如图6-5所示:
图6-5JDBC连接数据库流程图
连接代码如下:
try
{
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
}
catch(ClassNotFoundExceptionce)
{
System.out.println(“SQLCXCEption:
”+ce.getMessage());
}
try{
Connectioncon=DriverManager.getConnection(“jdbc:
odbc:
houqin”);
}
catch(SQLExceptione)
{
System.out.println(“SQLException:
”+e.getMessage();)
class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
}
载入JDBC/ODBC桥接驱动程序到程序中。
Connectioncon=DriverManagor.getConnection(“jdbc:
odbc:
houqin”);
连接到Microsoft的SQLServer数据库,数据来源名称为houqin的数据库houqin。
Class类别的ferName()方法负责将指定的JDBC/ODBC桥接驱动程序载入到Java程序中,DriverManager类别的getConnection()方法负责与指定的数据来源houqin连接。
取得数据表属性
当使用C送出SQL的select语句后,将会取得一个ResultSet对象rs,通过rs可建立一个ResultSetMetaData对象md,通过md对象可取得md对象中的数据成员或调用md对象中的方法成员:
md.getColumnCount()取得指定数据表的域数
md.getColumnLabel(i)取得第i域名称
md.getColumnDisplaySize(i)取得第i域显示的域数
md.getColumnTypeName(i)取得第i域的类型名称
程序MySqlUtil.java中的printMetaData()方法显示该连接表的一些静态数据,例如每一行共有几域(colCount)、每域名称(colLabel)、每域以几个域(column)表示(colDisplaySize)、每一域的数据类型(colTypeName)等等。
PrintResultSet()方法显示该连接表的一些动态数据,每一域的域名以及该域的内含值。
其代码如下:
packagezc.face;
importjava.io.*;
importjava.sql.*;
classMySqlUnit{
publicstaticStringprintMetaData(ResultSetrs)throwsSQLException
{
ResultSetMetaDatamd=rs.getMetaData();
intcolCount=md.getColumnCount();
StringcolLabel[]=newString[colCount+1];
intcolDisplaySize[]=newint[colCount+1];
StringcolTypeName[]=newString[colCount+1];
System.out.println("databasecolCount="+colCount);
StringBuffersb=newStringBuffer();
for(inti=1;i<=colCount;i++){
colLabel[i]=md.getColumnLabel(i);
colDisplaySize[i]=md.getColumnDisplaySize(i);
colTypeName[i]=md.getColumnTypeName(i);
sb.append("Label:
"+colLabel[i]+"DisplaySize:
"+colDisplaySize[i]+"TypeName:
"+colTypeName[i]+"");
}
returnsb.toString();
}
publicstaticStringprintResultSet(ResultSetrs)throwsIOException,SQLException
{
ResultSetMetaDatamd=rs.getMetaData();
intcolCount=md.getColumnCount();
StringcolLabel[]=newString[colCount+1];
for(inti=1;i<=colCount;i++)
colLabel[i]=md.getColumnLabel(i);
StringBuffersb=newStringBuffer();
while(rs.next()){
for(inti=1;i<=colCount;i++)
sb.append(colLabel[i]+":
"+rs.getObject(i)+"");
sb.append("\r\n