郑州轻工业学院本科
数据库课程设计总结报告
设计题目 设备管理系统 学生姓名 关兴林 傅伟伟 学 号1007010208 1007010207 系 别 计算机与通信工程学院 专 业 计算机科学与技术 班 级 10-02 指导教师 钱慎一 张 旭
2012 年 12月 30 日
郑州轻工业学院
课 程 设 计 任 务 书
题 目 设 备 管 理 专业、班级 计算机科学与技术10-2 学号 0007010208 姓名 关兴林 学号 1007010207 姓名 傅伟伟 主要内容:
系统数据初始化;员工信息的查询、修改和添加;设备信息的增删改查;设备的采购信息;设备的分配信息;设备的报修;设备的报废;设备的返厂维修。
其中会涉及到一些实体的属性值。
基本要求:
立足于公司中设备的管理情况,实现对于设备的管理信息化,实现对于数据库的合理设计以及对于数据的合理的操作。
主要参考资料等:
《数据库系统概论》 作者:王珊 萨师煊 高等教育出版社
《SQL Server2005中文版关系数据库基础与实践教程》作者:周峰 电子工业出版社 《SQL Server数据库开发实例精粹》 作者:徐国智 汪孝宜 等 电子工业出版社
完 成 期 限: 两周 指导教师签名: 课程负责人签名:
2012年 12月 30 日
3
目 录
课 程 设 计 任 务 书 ..................................................... 3 一、需求分析 ................................... 错误!未定义书签。 1、系统功能分析 ......................................................... 4
2、系统功能模块设计.................................................6
二、数据库设计 ................................................................. 7 1、E-R图 ................................. 错误!未定义书签。 2、数据字典 ............................... 错误!未定义书签。 3、关系模式 .............................错误!未定义书签。3 4、关系表....................................................................14 三、详细设计 ................................. 错误!未定义书签。5 1.项目功能模块 .......................................................... 15 2.数据库建立过程的一些代码..................................25 3.web开发的一些代码...............................................27 四、项目需求环境..............................................................41 五、体会和感想..................................................................42 六、说明...............................................................................42
4
一、需求分析
设备管理是针对于各种公司或者学校等进行的一个数据库设计,针对的是对于其功用的设备的管理进行的数据整理操作等。
本设计中主要是设计到设备的状态比较多。从设备的进入公司到设备的分配、报修、维修、报废、返厂维修、设备存放等做一系列信息的整理。有设备的买卖、分配、维修等操作的出现,自然的就设计到一些主体比如供应商、厂家、部门、员工、仓库。
其中厂家主要是负责的设备的返厂维修,设计到一些返厂相关的信息,诸如返厂维修时间、维修原因、维修费用、维修结果、是否在保质期等等;
供应商是对于设备的购入而牵连来的,其中包括的一些属性采购时间、采购员、采购价格、采购数量等等;
部门是公司内部的分设的子集体,其中会牵涉到设备的分配、报修、报废的操作。在分配中分为两种状态借出和归还,属性有借出时间、归还时间、负责人以及是否可借等,在报修的联系中包含的属性有报修人、报修时间、报修原因、维修时间、费用和维修结果,在报废的联系中主要有一些报废的负责人、报废的原因、报废时间等的属性;
员工和部门是有联系的,设备又是属于员工管理,属于员工使用的。作为辅助性的必须具备有员工实体的存在。员工的固有属性比较明显、还有因为在部门的上岗而牵连出来一些联系属性。
此数据库的数据量不是很大,关系可以借助于后面的数据图观测。
5
1.系统功能分析
01.管理员的登录 02.浏览所有的设备
——查询所有的设备信息 ——修改设备的信息 ——删除设备信息 03.采购
——查询采购的设备信息 ——增加采购设备信息 ——修改采购设备信息
04.设备的返厂维修
——查询返厂的设备信息 ——修改返厂设备的状态
05.设备的分配
——查询借出的设备信息及其使用的部门 ——查询借出时间
——查询归还的设备信息及其对应部门
——查询归还时间 ——修改设备状态
06.设备的报修
——查询要报修的设备信息 ——修改设备的信息 07.员工信息的查询及其修改 ——查询员工信息 ——修改员工信息 08.设备的报废
——查询要报废的设备信息 ——修改报废的设备信息
6
2.系统功能模块设计
普通用户
登录模块 管理员登查询 员工信息 修改 添加 查询
设备信息 修改 删除 设备管理系统 采购管理
添加 维修管理 查询 修改 查询 修改 设备分配 分配管理 查询 内部报修 修改 查询 报废管理 修改 7
二、数据库设计 1. E—R图
01、员工信息
性别姓名年龄工资工龄员工编号员工联系方式员工 02、设备
名称设备编号价格使用年限类别生产日期设备
03、供应商
供应商负责人供应商名称供应商编号供应商联系方式地址
8
04、部门
部门05、厂家
06、仓库
部门编号部门名称主管人员
厂家厂家地址厂家编号厂家名称厂家联系方式
面积仓库仓库编号
9
07、整个设备管理的ER图
归还时间借出时间类型负责人是否可借采购员采购时间价格采购数量分配m报修人报修时间n供应商m采购n维修时间设备m报修n报修原因维修结果nm费用11部门维修原因维修结果返厂时间从属m返厂维修报废报废负责人m上岗时间是否在保修期维修费用m报废时间报废原因员工厂家入库时间存放仓库负责人库存量1仓库
2. 数据字典 01、员工表
(员工编号、姓名、性别、年龄、工资、工龄、员工联系方式、从属部门编号,上岗时间)
数据项名 员工编号 姓名 性别 年龄 工资
字段 EmpID EmpName EmpSex EmpAge EmpSal 类型 char string string int float 长度 10 10 4 4 8 10
取值范围 由十位数字组成 无 (男,女) >=18 2000---10000 备注 标识员工的属性
工龄 员工联系方式 从属部门编号 上岗时间 EmpYear EmpTel EmpDep EmpHir char Char Char datetime 2 11 3 8 >0 由11位数字组成 年月日 部门表中的编号数值
02、设备表
(设备编号、名称、类别、生产日期、价格、使用年限、供应商、数量、存放仓库号、仓库负责人编号、入库时间、库存量、出库时间、报废部门编号、报废负责人、报废原因、报废时间、是否连带附件)
数据项名 设备编号 名称 类型 生产日期 价格 使用年限 存放仓库编号 仓库负责人编号 入库时间 库存量 字段 DevID DevName DevType DevBir DevPri DevDeath DevStoreID StoreEmpId StoreDate Count 数据类型 char String String Datetime Float Int Char Char Datetime Int 数据长度 10 20 20 8 8 2 3 10 8 4 取值范围 由十位数字组成 年月日 单位年 年月日
03、供应商表
(供应商编号、供应商名称、地址、负责人、供应商联系方式)
数据项名 供应商编号 供应商名称 地址 负责人 供应商联系方式 字段 SupID SupName SupAddr SupEmpId SupTel 数据类型 Char String String String Char 数据长度 10 30 50 10 11 取值范围 有十位数字组成 11
04、部门表
(部门编号、部门名称、主管人员)
数据项名 部门编号 部门名称 主管人员编号 字段 DepId DepName DepEmpID 数据类型 Char String String 数据长度 3 10 10 取值范围
05、厂家表
(厂家编号、厂家名称、厂家地址、厂家联系方式)
数据项名 厂家编号 厂家名称 厂家地址 厂家联系方式 字段 FacID FacAddr FacAddr FacTel 数据类型 Char String String Char 数据长度 15 50 50 11 取值范围
06、仓库
(仓库编号、面积)
数据项名 仓库编号 面积 字段 StoreId StoreArea 数据类型 Char Float 数据长度 3 8 取值范围
07、采购表
(设备编号、供应商编号、采购时间、采购员、购买价格、采购数量)
12
数据项名 设备编号 供应商编号 采购时间 采购员编号 购买价格 采购数量 字段 DevID SupID PurDate PurEmpID PurPrice PurCount 数据类型 Char Char Datetime Char Float Int 数据长度 10 10 8 10 8 6 取值范围 08、返厂维修表
(设备编号、厂家编号、返厂时间、维修原因、维修结果、是否在保修期、维修费用)
数据项名 设备编号 厂家编号 返厂时间 维修原因 维修结果 是否在保修期 维修费用 字段 DevID FacID RetDate RetCause RetResult IsFree RetPrice 数据类型 Char Char Datetime String String Char Float 数据长度 10 10 8 30 20 2 8 取值范围 09、设备分配表
(设备编号、部门编号、借出时间、归还时间、类型、负责人、是否可借)
数据项名 设备编号 部门编号 借出时间 归还时间 类型 负责人编号 是否可借 字段 DevID DepID BorrowDate ReturnDate Type FenEmpID IsBorrow 数据类型 Char Char datetime datetime String Char String 数据长度 10 3 8 8 4 10 2 取值范围 年月日 年月日 (借出、归还) 10、内部报修表
(设备编号、部门编号、报修人编号、报修时间、报修原因、维修时间、维修结果、维修费用) 数据项名 设备编号 字段 DevID 数据类型 Char 数据长度 10 取值范围 13
部门编号 报修人编号 报修时间 报修原因 维修时间 维修费用 维修结果 DepID RepEmpID RepDate RepCause RepTime RepPrice Represult Char Char Datetime String Datetime Float String 3 10 8 20 8 8 10 11、报废表
(设备编号、报废部门编号、报废时间、报废负责人编号、报废原因) 数据项名 设备编号 报废部门编号 报废负责人编号 报废时间 报废原因
字段 DevID BrokeDepID BrokeEmpID BrokeTime BrokeDate 数据类型 Char Char Char Datetime String 数据长度 10 3 10 8 50 取值范围 3、关系模式
员工表(员工编号,姓名,性别,年龄,工资,工龄,员工联系方式,从属部门编号,上岗时间)
设备表(设备编号,名称,类别,生产日期,价格,使用年限,存放仓库号,仓库负责人编号,入库时间,库存量)
供应商表(供应商编号,供应商名称,地址,负责人,供应商联系方式) 部门表(部门编号,部门名称,主管人员)
厂家表(厂家编号,厂家名称,厂家地址,厂家联系方式) 仓库表(仓库编号,面积)
采购表(设备编号,供应商编号,采购时间,采购员,购买价格,采购数量)
返厂维修表(设备编号,厂家编号,返厂时间,维修原因,维修结果,是否在保修期,维修费用)
报废表(设备编号、报废部门编号、报废时间、报废负责人编号、报废原因)
4、关系图
14
15
三、详细设计 1. 项目功能模块 1.1用户登录模块
用户登录模块中,每个用户只能以自己的账号和密码登录到系统中,登录的时候可以选择自己要进行的操作类型,只是简单的查询操作的话,在登录界面中选择的登录类型就是普通用户型,选择的是管理员登录的话,进入的就是对于系统所有信息的查询和操作。给出的实例:
普通用户: 账户(登录名) 001 密码 001 管理员: 账户(登录名) 001 密码 001 截图见下面的所示:
1.1.1普通用户的操作界面
普通用户的权限只是对于员工信息的查询和设备信息的查询,执行完操作之后,用户可以借助于链接实现退出操作,退出自己的登录。
16
1.1.2管理员的登录
1.2员工信息模块
员工信息的模块中涉及到的是对于员工的信息的查询修改和添加,考虑到本系统是针对的设备的系统管理,就忽略了对于员工信息的添加的操作功能。
17
1.2.1员工信息查询
1.2.2查询部门信息
1.2.3员工信息修改
18
1.2.4增加员工信息
1.3设备信息模块
设备信息模块中实现的是对于设备的信息增删改查,其中设备的添加功能是隶属于采购模块中的,这里一并说明。普通用户查询的时候,查询到的是信息的一部分信息,是通过在数据库中建立的虚表,也就是数据库中的视图,了普通用户的一些查询信息。二管理员的权限比较的大,所以可以直接通过基本表实现对于数据的增删改查操作。
19
1.3.1设备信息查询
1.3.2设备信息修改
20
1.3.3删除设备信息
1.4采购管理模块
采购模块主要是考虑到了是对于数据库中设备信息的添加,所以在前端开发的时候只是对于设备的添加操作进行的,当然这个模块的权限是隶属于管理员的,普通用户没有此权限。
1.4.1添加采购设备信息
21
1.5维修管理模块
维修管理模块实现的是对于需要进行返厂维修的设备的信息处理操作,这里只是给出了一些基本的查询和修改页面。后期的开发中可以添加对于设备维修的增加的操作。
1.5.1查询返厂维修设备信息
1.5.2修改返厂维修设备的信息
1.6分配管理模块
分配管理模块实现的是对于设备的分配处理操作。
22
1.6.1查询分配的设备信息
1.6.2修改分配的设备信息
23
1.6.3设备分配管理信息
1.7内部报修模块
内部报修是对于损坏了的设备信息进行的操作。
1.7.1设备内部报修查询
24
1.7.2修改报修设备的信息
1.8报废模块
报废模块实现的是对于报废的设备信息的查询以及修改信息,由于时间的原因,对于报废模块的添加的操作这里没有给出相应的页面,在后期的开发过程中可以实现这个操作页面。
1.8.1查询报废的设备信息
25
1.8.2修改报废的设备信息
2. 数据库建立过程的一些代码示例: 2.1设备表建立的sql语句:
CREATE TABLE [dbo].[shebeiTable1] ( GO
[设备编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [名称] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL , [类型] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL , [生产日期] [datetime] NOT NULL , [价格] [float] NOT NULL , [使用年限] [int] NOT NULL ,
[存放仓库编号] [char] (3) COLLATE Chinese_PRC_CI_AS NOT NULL , [仓库负责人编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [入库时间] [datetime] NOT NULL , [库存量] [int] NOT NULL
) ON [PRIMARY]
2.2员工表建立的sql语句:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EmpTable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[EmpTable] GO
CREATE TABLE [dbo].[EmpTable] (
[员工编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
26
GO
[姓名] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [性别] [varchar] (4) COLLATE Chinese_PRC_CI_AS NOT NULL , [年龄] [int] NOT NULL , [工资] [float] NOT NULL ,
[工龄] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[员工联系方式] [char] (11) COLLATE Chinese_PRC_CI_AS NOT NULL , [从属部门编号] [char] (3) COLLATE Chinese_PRC_CI_AS NOT NULL , [上岗时间] [datetime] NULL
) ON [PRIMARY]
2.3对于普通用户查询的表(视图)建立
视图是增加数据库安全性的一个表现,在本系统中主要是针对于用户的查询界面,其中管理员的权限是明显大于普通用户的,普通用户查询之后看到的是一些最基本的员工信息和设备的信息。
运用的是可视化界面的操作,选中员工表中的一些列:员工的编号,姓名,部门和联系方式构建虚表。对于普通用户中的设备查询的操作中时也是基于此操作来实现的,建立的试图是设备表中的一些列:设备编号、名称、类型、存放仓库、仓库负责人。
2.4数据库中的存储等
存储过程是数据库中为了对于一些频繁的类似的操作进行的优化集中式的处理操作,在本系统中给出的一个存储过程是建立在对于查询的操作上,基于此操作来实现数据库的高效率性。下面说明的就是对于普通用户查询查询员工表的操作。
在员工表上建立的一个当输入的是一个员工的编号的时候,可以直接运行输出对应的查询结果。
CREATE PROCEDURE sp_chaxun @pt_id char(10) AS SELECT * FROM EMPTable where 员工编号=@pt_id GO
27
触发器在数据库中有着特殊的意义,它的出现实现了数据库中的一些表进行变化的时候,与此项有关的一些表的属性值可以发生对应的变化,强化了数据的完整性的约束和一些业务规则等。本设备管理系统中暂时没有考虑存储过程中的触发器的运用。
至于数据库中表的主键、外键以及一些基本的约束的操作,在数据库建立数据表的时候可以进行可视化的操作,操作简便,只是在操作的时候对于数据的字段的书写要准确无误。
游标,由于本设备管理系统的前台开发使用的是jsp页面的处理,所以在jsp页面的时候运用前端的代码充分的体现了游标的好处。
3 web开发的一些代码
前端的开发使用的是纯jsp页面的操作,这里仅作一部分的代码示例
3.1 登录界面
Login.jsp
<%@ page contentType=\"text/html; charset=gb2312\" language=\"java\" import=\"java.sql.*\" errorPage=\"errorpage.jsp\" %>
<%
String getmessage = (String) session.getAttribute(\"error\"); if (getmessage==null) {getmessage=\"\";} %>
郑州轻工业学院数据库课程设计--
设备管理系统
3.2管理员操作的主界面代码:
<%@ page language=\"java\" pageEncoding=\"gb2312\"%>
import=\"java.util.*\" 欢迎你 ,管理员! 33 cellspacing=2 bordercolor=\"#ff0000\" 员工信息 设备信息 采购管理 维修管理 \" size=3 color=\"#000080\">href=\"selectReturnShebei.jsp\">查询返厂的设备信息 分配管理 内部报修 报废管理 35
请选择你要进行的操作
3.3管理员的设备查询界面
<%@ page language=\"java\" pageEncoding=\"gb2312\"%>
<%@ page import=\"java.sql.*\" %>
设备查询 <%
Class.forName(\"com.microsoft.sqlserver.jdbc.SQLServerDriver\"); Connection conn = DriverManager.getConnection(\"jdbc:sqlserver://localhost:1433; DatabaseName=shebei\",\"sa\",\"sa\");
String sql=\"select * from shebeiTable1\"; Statement stmt=conn.createStatement(); ResultSet rs=stmt.executeQuery(sql);
out.print(\"
设备编号 | \"); out.print(\"名称 | \"); out.print(\"类型 | \"); out.print(\"生产日期 | \"); out.print(\"价格 | \"); out.print(\"使用年限 | \"); out.print(\"存放仓库编号 | \"); out.print(\"仓库负责人编号 | \"); out.print(\"入库时间 | \"); out.print(\"库存量 | \"); out.print(\"
---|---|---|---|---|---|---|---|---|---|
\"+rs.getString(1)+\" | \"); out.print(\"\"+rs.getString(2)+\" | \"); out.print(\"\"+rs.getString(3)+\" | \"); out.print(\"\"+rs.getString(4)+\" | \");\"+rs.getString(5)+\" | \"); out.print(\"\"+rs.getString(6)+\" | \"); out.print(\"\"+rs.getString(7)+\" | \"); out.print(\"\"+rs.getString(8)+\" | \"); out.print(\"\"+rs.getString(9)+\" | \"); out.print(\"\"+rs.getString(10)+\" | \"); out.print(\"
3.4设备的添加操作页面 <%@ page language=\"java\" pageEncoding=\"gb2312\"%>
<%@ page import=\"java.sql.*\" %>
import=\"java.util.*\"
3.4设备的信息的修改页面
<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"gb2312\"%>
<%@ page import=\"java.sql.*\" %>
<%Class.forName(\"com.microsoft.sqlserver.jdbc.SQLServerDriver\");
39
Connection conn
DriverManager.getConnection(\"jdbc:sqlserver://localhost:1433; DatabaseName=shebei\",\"sa\",\"sa\"); %>
3.5设备信息的删除页面
<%@ page language=\"java\" pageEncoding=\"gb2312\"%>
<%@ page import=\"java.sql.*\" %>
import=\"java.util.*\"
所有设备信息 <%
Class.forName(\"com.microsoft.sqlserver.jdbc.SQLServerDriver\"); Connection conn = DriverManager.getConnection(\"jdbc:sqlserver://localhost:1433; DatabaseName=shebei\",\"sa\",\"sa\");
String sql=\"select * from shebeiTable1\"; Statement stmt=conn.createStatement(); ResultSet rs=stmt.executeQuery(sql);
out.print(\"
设备编号 | \"); out.print(\"名称 | \"); out.print(\"类型 | \"); out.print(\"生产日期 | \"); out.print(\"价格 | \"); out.print(\"使用年限 | \"); out.print(\"存放仓库编号 | \"); out.print(\"仓库负责人编号 | \"); out.print(\"入库时间 | \"); out.print(\"库存量 | \"); out.print(\"
---|---|---|---|---|---|---|---|---|---|
\"+rs.getString(1)+\" | \"); out.print(\"\"+rs.getString(2)+\" | \"); out.print(\"\"+rs.getString(3)+\" | \"); out.print(\"\"+rs.getString(4)+\" | \"); out.print(\"\"+rs.getString(5)+\" | \"); out.print(\"\"+rs.getString(6)+\" | \"); out.print(\"\"+rs.getString(7)+\" | \"); out.print(\"\"+rs.getString(8)+\" | \"); out.print(\"\"+rs.getString(9)+\" | \"); out.print(\"\"+rs.getString(10)+\" | \"); out.print(\"
四、项目需求环境
设备支持:推荐配置:WindowsXP,512内存;
数 据 库:Microsoft SQL Server 2000; 软件支持:浏览器即可。
42
五、 体会和感想
这次的课程设计是第一次实现一个整个系统的开发过程,涵盖了本学期中的软件工程的一些知识,重点是在于数据库的设计。可以说是为毕业设计做了一次预演,在课程设计开始的时候,我们的压力很大,毕竟没有接触过软件的开发。
从开始的网上查阅资料,到着手对于软件需求的分析,对于数据建模的操作,对于数据库的设计,对于前台的系统功能的模块实现,我们两个人适时地分工、合作终于马马虎虎的设计出来了一个系统,但是还是缺少的一个过程是对于软件的测试阶段,当然这个系统对于不是可以运行到实际的运用中的,但是着实的给与了我们一个骄傲的资本。
本次的课程设计使我们再一次的深化了对于软件开发整个过程的理解,数据库的知识使得我们由原先的课本的理论知识逐步的深化。
其中我们对于数据库的数据定义、数据操作、数据约束以及在建立出基本数据库的时候建立的一些自定义类型的约束,视图、存储过程、触发器、游标等进一步的理解大有裨益。
六、说明
在设备管理系统中,我们是合作完成的设备管理系统的需求分析,这样可以加深我们对于系统设计的一个比较完整性的考虑,当然也是对于我们合作的一个考验。在数据库建立的时候,基于所找出的ER图,我们开始分工对于数据表的建立,其中由傅伟伟负责对于实体的一些表的建立,关兴林负责的是对于涉及到的关系表的建立,包括对于其他的一些视图建立和存储过程等。而对于前台的开发我们还
43
是选择分工操作,其中主要是基于的模块的开发。员工模块、登录模块的由关兴林完成,剩余的模块由傅伟伟负责。由于时间没有安排好的原因,本系统的前端只是简单的实现了一些基本的操作,对于实用性是比较差的,当然在实际的开发中也是不会选用本软件中的开发的开发方法的,本次的前端只是为了展现出数据库中的数据。
44
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- jqkq.cn 版权所有 赣ICP备2024042794号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务