拟制人 刘庞哲
审核人 _______ 于宝华 _________
批准人 _________________________
2013年 7月4 日星期 4】
、引言
1.1 编写目的 随着我国高等教育的快速发展及大学招生规模的不断扩大以至于 校园
数字 化的发展和 我国高校机房的数量与规模在不断扩大 ,。各个高校都建设了自己的 校园网络, 越来越多的学生到校机房上网。 这对校园机房进行联合计费管理 和机 房的配置管理等也提出了更高的要求。为了更好的发挥学校公共机房的职能
,解
决机房管理过程中的一些实际问题就要开发出一套满足高校需求的机房管理系 统是非常必要的。
机房作为一种信息资源的集散地, 有很多的信息数据需要管理, 由于数据信 息处理工作量大、 数据繁多, 因此原有的手工管理方式就存在容易出错、 数据易 丢失,且不易查找和低效率等弊病。总的来说,就是缺乏系统,规范的信息管理 手段。基于这此问题, 我认为有必要建立一个机房管理系统, 使机房管理工作规 范化,系统化,程序化,避免机房管理的随意性, 提高信息处理的速度和准确性, 能够及时、准确、有效的查询和统计相关情况。
1.2 背景 a. b. c.
待开发软件系统的名称: 学院机房管理系统 本项目的任务提出者: 石河子大学 本项目开发者:
刘庞哲
d. 本项目用户:
学校学生 机房管理人员
1.3 参考资料
软件开发这点儿事——软件开发工具手册》 程序员指南丛书 ASP.NET高级编程》 ASP.NET网络应用系统开发与实例》
邵志东著 但正刚著
吴明晖主编 吴丹红编著
、题目
(15)机房管理系统 实现机器信息、管理人员信息的管理; 实现上机管理; 实现收费管
理; 创建触发器,实现下机时自动计算此次上机的时间和费用; 创建存储过程统计各机房的上机时间和上机费用 创建存储过程统计指定时间段内各管理人员的收费合计; 建立数据库相关表之间的参照完整性约束。
三、需求分析 针对一般高校机房管理系统的需求分析、通过对学生上机过程、教学班上机过
程、注 册过程、充值过程、的内容的数据流程分析一现设计如下数据项和数据结构 (1)机房基本信息:包括机房号、机房名、计算机数目、管理人等 (2)计算机基本信息:包括计算机 IP 地址、编号、机房号、品牌、备注等 (3)学生基本信息:包括学号、姓名、性名、行政班等 (4)用户基本信息:包括用户名、学号、密码、余额等
(5)学生充值基本信息:包括用户名、充值时间、金额、办理人等 (6)机房收费标准基本信息:包括机房号、金额等
(7)学生上机过程登记基本信息: 包括计算机 IP地址、日期、上机时间、下机时间、上机类型等
(8)机房费用统计基本信息:包括计算机 IP 地址、日期、统计时间、费用等
四、数据库概念结构设计
1、系统功能结构图
学号、
机房管理系统 机房信 息管理 机器信 息管理 学生信 息管理 充值信 息管理 上机过 程管理 费用信 息管理
学生信 息 查询
学生信 息添加 学生信 机器信 息机器信 息机器信 息上机过 程上机过 程上机过 息修改 添加 查询 修改 添加 查询 程修改 3、全局 E-R 图
五、数据库逻辑结构设计
1、数据字典
room( 机房表 ) 字段名 rno rname number manager
数据类型 int char(10) smallint char(10) 能否为空 否 否 能 否 是否为主键 是 否 否 否 说明 机房号 机房名 计算机数目 管理人 computer( 计算机表 )
字段名 IP cno rno brand note
数据类型 char(20) smallint int Char(20) Varchar(100) 能否为空 否 否 否 能 能 是否为主键 是 否 否 否 否 说明 计算机 IP 地址 编号 机房号 品牌 备注 Student(学生表 ) 字段名 sno sname sex class 数据类型 Int Char(10) Char(2) Char(20) 能否为空 否 否 能 能 是否作为主键 是 否 否 否 说明 学号 姓名 性别 行政班
Usertable (用户表) 字段名 uname sno pword money 数据类型 Char(20) int Char(20) money 能否为空 否 否 否 能 是否作为主键 是 否 否 否 说明 用户名 学号 密码 余额
Prepaid(充值表 ) 字段名 uname ptime pmoney trans 数据类型 Char(20) datetime smallmoney Char(10) 能否为空 否 否 否 否 是否作为主键 是 是 否 否 说明 用户名 充值时间 金额 收费人员 Standard( 收费标准表 )
字段名 rno stime smoney 数据类型 int Char(20) smallmoney 能否为空 否 否 否 是否作为主键 是 是 否 说明 机房号 时间段 金额 /小时
Record (上机过程登记表) 字段名 IP begintime sno endtime type 数据类型 char(20) datetime Int datetime Char(15) 能否为空 否 否 否 能 否 是否作为主键 是 是 否 否 否 说明 计算机 IP 地址 上机时间 学号 下机时间 上机类型
statistik ( 机房费用统计表 ) 字段名 IP date Sno moneys s 数据类型 char(20) datetime int smallmoney 能否为空 否 否 否 否 是否作为主键 是 是 否 否 说明 计算机 IP 地址 日期 学号 费用
2、关系图
六、数据库实现
1、创建数据库
1、创建数据库 create database room on
( name='room_data', filename='E:\\room\\data\\room_data', size=1MB, maxsize=3MB, filegrowth=1MB log on
)
(
name='room_log', filename='E:\\room\\log\\room_log', size=1MB,
maxsize=3MB, filegrowth=1MB
)
2、创建表
2、 room( 机房表 )的创建 create table room ( rno int not null primary key, rname char(10) not null, number smallint null, manager char(10) not null
3、 computer( 计算机表 )的创建 create table computer
(
IP char(20) not null primary key, cno smallint not null , rno int not null, brand char(20) null, note varchar(50) null )
4、 student( 学生表 )的创建 create table student (
sno int not null primary key, sname char(10) not null, sex char(2) null, class char(20) not null )
6、User(用户表)的创建 create table usertable
(
uname char(20) not null primary key, sno int not null, pword char(20) not
null, moneys money null,
)
7、 prepaid( 充值表 )的创建 create table prepaid
(
uname char(20) not null, ptime datetime not null, pmoney smallmoney
not null, trans char(10) not null, constraint p_primary primary key(uname,ptime) )
8、 standard( 收费标准表 )的创建 create table standard
(
rno int not null, stime char(20) not null, smoney smallmoney not null, constraint c_primary primary key(rno,stime) )
11 、 record (上机过程登记表)的创建 create table record
(
IP char(20) not null, sno int not null, begintime datetime not null, endtime datetime null, type char(15) not null, constraint t1 primary key(IP,begintime) )
12 、statistik( 费用统计表 )的创建 create table statistik (
IP char(20) not null, dates datetime not null, sno int not null, moneys smallmoney not null, constraint t2 primary key(IP,dates) )
2、创建存储过程和触发器
1、创建存储过程实现各机房上机费用的统计 1)代码 create proc s_room(@rno int) as
select rname 机房名 ,sum(moneys) 费用 from statistik inner join computer
on computer.IP=statistik.IP inner join room on room.rno=computer.rno where room.rno=@rno group by rname
2、创建触发器实现费用登记时,自动修改该生的账户余额。 1)代码
create trigger u_money on statistik for insert as
update usertable
set moneys=moneys-(select moneys from inserted) where sno=(select sno from inserted) 2)数据测试
查询插入记录前学生的余额 select sno 学号 ,moneys 余额 from usertable where
sno=2011508092
执行插入操作
insert into statistik values('001',getdate(),101,3.5) 查询插入记录学生的余额 select sno 学
号 ,moneys 余额 from usertable
where sno=2011508092
3.创建触发器实现充值时自动修改该生余额 1)代码
create trigger un_money on prepaid for insert as
update usertable
set moneys=moneys+(select pmoney from inserted) where uname=(select uname from inserted)
2)数据测试
select sno 学号 ,moneys 余额 from usertable where sno=2011508092
go
insert into prepaid values('bbb',getdate(),4.8,'l 刘庞哲 ') go
select sno 学号 ,moneys 余额 from usertable where sno=2011508092 go select * from prepaid
七、结束语
通过这次课程设计, 我更加熟练的掌握了数据库设计的方法, 加深了对数据 库课程知识的理解,同时也更加深入的了解了利用 SQL语言操纵数据库的知识, 并且对数据库里面的存储过程有了比较深入的了解。 经过几天的艰苦奋斗, 我终 于完成了我的数据库课程设计基于 DB2的列车票务管理系统。 进一步提高分析解 决问题的综合能力。 由于时间仓促, 系统还有很多不足之处, 所以开发的系统不 是很完善, 有一些功能未实现, 但是列车票务管理的基本功能均已实现。 以前对 数据库的很多知识认识都不深刻, 做过这次课程设计之后, 我对数据库的知识有 了一个比较系统的了解; 比如:对表内一些字段的约束, 关系等的运用已经比较 熟练。由于是第一次使用,所以运用的不是很熟练。刚开始的时候,对于数据库 设计方法等一系列知识都不熟悉, 但当我基本完成此系统开发的时候, 我发现其 实也没有那么难, 在未做之前我还害怕做不出来。 经过对这个系统的开发, 在开 发过程中遇到但也解决了很多问题。 这个课程设计使我巩固了数据库的知识。 在 今后的学习中我会加强理论与实践的结合, 通过不断的摸索来弥补自己的不足之 处。
因篇幅问题不能全部显示,请点此查看更多更全内容