系统设计与数据库设计说明Word文件下载.docx
《系统设计与数据库设计说明Word文件下载.docx》由会员分享,可在线阅读,更多相关《系统设计与数据库设计说明Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。
4.系统应该具有一定伸缩性,能有效地集成其他系统;
而且系统后台可采用
不同操作系统和多种数据库系统。
5.系统数据安全,具有良好的权限管理机制。
6.应该具有一定的通用性、灵活性、实用性和可靠性,以满足高校对设备信息管理的要求。
3.2.2系统总体设计
系统的总体设计包括运行网络结构、功能模块设计等。
运行网络结构,确定软件运行的软硬件环境;
功能模块设计,确定系统的功能模块,将整个系统划分为多个相对独立的模块,确定每个模块的功能。
3.2.2.1系统运行网络结构
由于网站采用的是B/S结构服务体系即客户端——应用服务器——数据库服务器三层体系结构。
在这种结构中,Web浏览器作为客户层,提供图形用户界面,负责与用户进行交互。
它通过HTTP协议从应用层的HTTP月及务器下载超文本页面,同时下载并执行内嵌在页面中的客户端程序或中间代码(如JAVA字节码)。
这些客户端程序能通过内部通信机制向应用服务器中有关服务对象发出请求。
服务对象封装了相关的业务逻辑,它们之间可通过内部协议彼此通信,并能访问数据层的数据库对象或其它的应用程序,以协同完成客户请求。
设备管理系统采用的网络运行结构如图2.l所示:
图3.1网络运行结构
3.2.2.2系统的功能设计
在充分分析设备管理需求的基础上,结合信息系统所要达到的目标,以设备
日常管理、数据采集与上报需求为重点,确定了系统的总体功能结构。
系统主
要由设备信息管理、数据采集与上报、信息发布、系统管理等四个子系统组成。
每个子系统又由多个模块构成,各模块之间相对独立实现不同的处理功能,但相
互之间又能很好地联系起来。
下面简单介绍各子系统功能设计。
1.设备信息管理子系统
信息管理子系统主要包括信息录入、信息修改、信息查询、信息统计、打印
报表等模块。
数据录入模块:
主要包括设备数据的录入,采取灵活、简捷、快速的输入方
式来减轻用户繁重的输入数据的工作。
如对具有相同属性的多条记录可通过成批
录入方式一次录入完成;
对一些数据项可进行实时校验。
数据修改模块:
对所有录入的数据均可进行修改,其主要特色如下:
只有拥
有相应权限的用户才能修改数据,从而保证了重要数据的安全性;
为了保持数据
的一致性,对于一些关键参数不能直接修改,系统应自动保持其正确性。
数据查询模块:
根据用户权限查询所需数据,主要包括固定查询和自定义查
询两部分。
固定查询:
用户通过选择设备信息的某一个字段,并输入相关关键字内容即可查询出结果。
大概有:
1.名称.2分类号.3型号4.规格5.编号等。
自定义查询:
用户可以把以上几个查询的条件结合起来,提供一定灵活性的
组合查询。
此外,可以对查询结果进行范围限制,也可以对查询结果按照某个字段值行
排序。
在查询的过程中,系统还可根据用户的要求,在验证用户的身份后,为其
提供部分修改功能。
数据统计模块:
信息统计是按各字段值进行统计并自动生成报表;
以数据库
中存储的数据为基础,进行设备信息的查询、统计;
进行数据的职能分析,生成
直观的柱图、饼图、折线图,为各级设备管理与经营决策提供数据依据。
打印报表模块:
主要是打印设备信息以及各种统计报表。
该模块具有生成和
打印报表的功能,可打印多种报表,包括:
系统基础数据、设备、人员、上报报
表等报表,操作简单、使用方便。
2.数据采集与上报子系统
上报数据按教育部统一规定的上报格式提供的基础数据,并可实现集中式管理。
按上级部门的要求形成标准的上报数据,在形成上报数据时,应具有数据查
错功能,并能提供方便、快捷的数据传送功能。
3.信息发布子系统
主要包括信息浏览和信息查询;
主要是对共享信息进行网络提交,对外发布,
实现共享。
以数据库中存储的数据为基础,进行人员信息、设备信息等方面的信
息发布,以Web页面的形式进行。
被授权访问的有关人员可从办公室或任何地方
通过Internet访问,浏览或查询各种相关信息。
4.系统管理子系统
系统管理子系统主要负责系统的管理和维护工作,包括单位管理、用户管理、
日志管理、数据备份与恢复等。
用户管理:
管理系统的用户,提供对系统角色和用户的管理。
具体完成用户
的管理、用户的权限设置;
通过该模块,可以有效屏蔽非授权用户的各种操作;
日志管理:
主要完成记录用户对系统的重要操作(如删除、修改等)及其结
果的记录、查询和统计,以确保系统操作的可追述性;
数据备份与恢复:
提供数据备份恢复功能,根据设置,备份系统中的数据库。
严格定期备份,保证己有数据的安全性,在数据库崩溃和硬件系统瘫痪时不会造成大的损失。
为了保证系统的安全性,只有系统管理员才能使用该模块。
系统的功能图如下所示:
图3.2系统功能图
系统的用例图如下所示:
图3.3普通用户用例图
图3.4管理员用例图
系统流程图如下所示:
图3.5系统流程图
第四章数据库设计
数据库是信息系统的核心组成部分。
数据库系统将数据信息以某种数据模型
组织起来进行存储,通过数据库管理系统能够方便有效地完成数据信息的插入、
删除、修改、查询等操作,并保持数据信息的完整性、一致性和安全性。
一个数
据库由若干张表组成,一张表是若干相关数据信息的集合。
表的一行就是一条数
据信息记录,而一列就是一个字段(也就是一条数据信息内容的一项),每一个字
段都有相应的数据类型和数据宽度。
在本系统中使用的是SQLServer2000数据库系统,在数据库中各表的创建如下所述。
4.1总体表的设计
系统共创建了4个数据表,依次为:
(1)yh表:
用户信息,含数据项有用户名、真姓名、密码、部门、角色等。
(2)lb表:
类别信息,含数据项有编号、名称。
(3)sb表:
设备信息,含数据项有编号、名称、购置日期、型号、购置价格、备注等。
(4)dt表:
动态信息,含数据项有编号、名称、日期、备注。
4.2数据库概念结构设计
得到上面的数据项和数据结构后,就可以设计出满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。
根据上面的描述,本系统的实体有:
类别信息实体、用户信息实体、设备信息实体、动态信息实体。
用户信息实体的E-R图如图4.1所示
图4.1用户信息实体E-R图
类别信息实体的E-R图如图4.2所示
图4.2类别信息实体E-R图
设备信息实体的E-R图如图4.3所示
图4.3设备信息实体E-R图
动态信息实体的E-R图如图4.4所示
图4.4动态信息实体的E-R图
4.3数据库的链接
在系统中,用户通过WEB方式来使用系统,完成相关的操作,而系统涉及到的大量数据都是存储在数据库中,系统在使用过程中需要频繁地访问数据库。
数据库连接池是数据访问中的重要技术,在某些情况下对访问数据库的性能
有巨大的提高。
它的核心思想是连接复用,通过建立一个数据库连接池以及一套
连接使用、分配、管理策略,使得一个数据库连接可以得到高效、安全的复用,
避免了数据库连接频繁建立、关闭的系统开销。
连接池对JDBC中的原始连接进行了封装,从而方便了数据库应用对于连接的使用,提高了开发效率。
数据库的连接与关闭,并不是真正意义上的数据库连接与建立,当数据库连接的时候,它是从连接池中取得的一个连接,而关闭的时候,实际上是将连接返回到连接池中,
连接池是与数据库保持常连接的。
也正是因为这个封装层的存在,隔离了应用本
身的处理逻辑和具体数据库访问逻辑,使应用本身的复用成为可能。
本系统使用Tomcat应用服务器中自带的DBCP(DataBaseConnectionpool)来建立数据库连接池。
利用DBCP,我们无须再进行复杂的相关代码开发,而且安全性和效率等性能更有保证。
其中主要是进行了一些配置工作和编写连接池类(ConnPoolclass)。
分别是,在$CATALINA_HOME/conf/server.xml里设置数据库连接池,在系统应用程序目录下的WEB-INF文件夹中的web.xml里设置被引用的资源,其中要合理地设置相关参数,以便保证连接池的性能,比如最小和最大数据库连接数,removeAbandoned参数(用于回收被遗弃的数据库连接到连接池中)等;
在ConnPool类中,我们使用了Singleton单例模式来保证返回唯一的连接池管理器实例,避免了每次实例化时重复创建。
链接数据库的代码为:
packagesbgl.util;
importjava.sql.*;
publicclassDataBase{
publicConnectionconn;
publicStatementstmt;
publicResultSetrs=null;
publicStringsqlStr="
"
;
publicDataBase(){
this.connect();
}
publicbooleanconnect(){
try{
//sql2000数据库
//Class.forName("
com.microsoft.jdbc.sqlserver.SQLServerDriver"
).newInstance();
DriverManager.registerDriver(newcom.microsoft.jdbc.sqlserver.SQLServerDriver());
Stringurl="
jdbc:
microsoft:
sqlserver:
//localhost:
1433;
DatabaseName=sbgl"
conn=DriverManager.getConnection(url,"
sa"
"
);
stmt=conn.createStatement();
}catch(Exceptionee){
System.out.println("
connectdberror:
+ee.getMessage());
returnfalse;
returntrue;
publicConnectiongetConn(){
try{
DriverManager.registerDriver(newcom.microsoft.jdbc.sqlserver.SQLServerDriver());
Stringurl="
Connectionconn=DriverManager.getConnection(url,"
//stmt=conn.createStatement();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnconn;
//用于执行查询数据库的操作
//返回查询结果集
publicResultSetexecQuery(Stringsql){
//sql2000数据库
Stringurl="
ResultSetrs=null;
//sqlserver数据库
Statementstmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}catch(SQLExceptionex){
System.err.println("
DataBase.execQuery():
"
+ex.getMessage());
}
returnrs;
//sql执行
publicvoidexecute(Stringsql){
Statementstmt=conn.createStatement();
stmt.execute(sql);
}catch(SQLExceptione){
e.printStackTrace();
}
publicvoidcloseStmt(){
stmt.close();
publicvoidcloseConn(){
conn.close();
publicstaticvoidmain(String[]args){
DataBasedb=newDataBase();
System.out.println(db.getConn());
第五章系统的实现
5.1共用模块设计的实现
为了提高代码的重用性,把共用部分做成独立的文件保存,保存在inc目录里。
这些文件都是纯HTML代码。
调用方式:
<
%@includefile="
../inc/gs.inc"
%>
页面格式
%@includefile="
../inc/session.inc"
变量文件
5.2主登陆界面
系统设置了两个不同的权限,登陆时首先对权限进行判断,然后对所属权限范围内的用户进行用户名和密码验证,验证成功才进入相应的功能界面。
主登陆界面图如下:
图5.1主登陆界面
当输入用户名和密码时,系统对用户角色及密码进行判断和验证,无误时方能进图相应的界面。
登陆的代码为:
publicbooleangetOneyh(intnewid)throwsException{
DataBasedb=newDataBase();
db.connect();
stmt=db.conn.createStatement();
try{
sqlStr="
select*fromyhwhereId="
+newid;
rs=stmt.executeQuery(sqlStr);
if(rs.next())
{yhlist=newVector
(1);
yhyh=newyh();
yh.setId(rs.getLong("
id"
));
yh.setdlm(rs.getString("
dlm"
yh.setyhbh(rs.getString("
yhbh"
yh.setname(rs.getString("
name"
yh.setdh(rs.getString("
dh"
yh.setyj(rs.getString("
yj"
yh.setmima(rs.getString("
mima"
yh.setacl(rs.getString("
acl"
yhlist.addElement(yh);
}else{
rs.close();
db.closeConn();
db.closeStmt();
catch(SQLExceptione)
{
5.2普通用户界面
普通用户经过验证后进入此页面:
图5.2普通用户界面
普通用户进入页面,系统在右上角显示角色的相关信息。
普通用户界面有些功能是受限查询的,如台账管理功能,当普通用户点击台账管理时系统会显示:
图5.3权限显示
5.3普通用户功能的实现
进入设备查询页面:
图5.4设备查询页面
点击“详细”就看到所选设备的额相关信息,如点击“电脑-详细”,系统显示为:
图5.5设备详情
在查询页面,用户可按编号、名称等查询设备,如按编号查询,显示为:
图5.6查询设备信息
查询功能的代码为:
publicbooleangetOnesb(intnewid)throwsException{
select*fromsbwhereId="
{sblist=newVector
(1);
sbsb=newsb();
sb.setId(rs.getLong("
sb.setsbbh(rs.getString("
sbbh"
sb.setsbmc(rs.getString("
sbmc"
sb.setsblb(rs.getString("
sblb"
sb.setsbxh(rs.getString("
sbxh"
sb.setsbgg(rs.getString("
sbgg"
sb.setscdw(rs.getString("
scdw"
sb.setccrq_n(rs.getString("
ccrq_n"
sb.setccrq_y(rs.getString("
ccrq_y"
sb.setccrq_r(rs.getString("
ccrq_r"
sb.setsbjg(rs.getString("
sbjg"
sb.setsbsl(rs.getString("
sbsl"
sb.setsyzh(rs.getString("
syzh"
sb.setsybm(rs.getString("
sybm"
sb.setgzrq_n(rs.getString("
gzrq_n"
sb.setgzrq_y(rs.getString("
gzrq_y"
sb.setgzrq_r(rs.getString("
gzrq_r"
sb.setzxrq_n(rs.getString("
zxrq_n"
sb.setzxrq_y(rs.getString("
zxrq_y"
sb.setzxrq_r(rs.getString("
zxrq_r"
sb.setfjmc(rs.getString("
fjmc"
sb.setfjjs(rs.getString("
fjjs"
sb.setfjje(rs.getString("
fjje"
sb.setyzjl(rs.getString("
yzjl"
sb.setsynx(rs.getString("
synx"
sb.setbz(rs.getString("
bz"
sblist.addElement(sb);
db.closeConn();
db.closeStmt();
进入帮助页面:
图5.7系统帮助界面
用户进入此界面查看相关的系统描述。
5.4管理员界面功能的实现
管理员通过身份验证后进入此界面:
图5.8管理员模块界面
进入用户管理界面:
图5.9用户管理页面
管理员可以对用户信息进行添加、修改和删除操作,删除功能的代码为:
publicbooleandelete(intaid)