数据库学生宿舍管理系统.doc
《数据库学生宿舍管理系统.doc》由会员分享,可在线阅读,更多相关《数据库学生宿舍管理系统.doc(17页珍藏版)》请在冰豆网上搜索。
《数据库应用》综合性实验报告
宁夏大学物理电气信息学院综合性实验
实验报告
课程名称
实验学期至学年第学期
学生所在系
年级专业班级
学生姓名学号
任课教师
实验成绩
任课教师制
2012年6月10日
实验题目
学生宿舍管理系统
一、实验目的
随着人类社会进入信息时代,计算机越来越多的活跃在社会各个领域,尤其在管理方面,管理软件的出现使大量繁琐复杂的问题变得简单易行现今学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长,面对庞大的信息量,需要有学生信息管理系统来提高学生管理工作的效率,通过这样的系统,可以做到信息的规范管理,科学统计和快速的查询,从而减少管理方面的工作量。
针对现今学校管理学生的特点,我决定建立学生宿舍管理系统,。
本系统主要包括学生信息的管理,学生宿舍的管理及宿舍内部管理,其中每项信息管理功能模块都包扩对信息的录入,修改,删除和查询。
二、实验环境
软件:
SQLServer2008
硬件:
windows2007
三、实验内容
1、需求分析
通过调查,要求学生宿舍管理系统需要有以下功能:
⑴较好的权限管理;
⑵原始数据修改简单方便,支持多条件修改;
⑶方便的数据查询,支持多条件查询;
⑷相应的权限下,删除数据方便简单,数据稳定性好;
⑸数据计算自动完成,尽量减少人工干预;
2、数据库设计
①首先创建一个数据库系统:
创建学生宿舍管理系统
程序如下:
createdatabase学生宿舍管理系统
on
(name=学生宿舍管理系统,
filename='D:
\学生宿舍管理系统.mdf',
size=10,
maxsize=50,
filegrowth=5)
logon
(name=学生宿舍管理系统_log,
filename='D:
\学生宿舍管理系统.ldf',
size=5mb,
maxsize=25mb,
filegrowth=5mb)
下图为创建好的数据库管理系统界面:
②数据库系统创建好后,向数据库系统中添加自己需要的表。
本系统设置三个表,分别为学生信息表、住宿信息表及宿舍成员表,通过这三个表对学生的信息进行管理,可以对学生信息进行查询、修改等各种操作。
接下来分析各个表格的具体内容:
学生信息表:
字段名
类型
备注
学号
int
姓名
nvarchar(10)
性别
bit
院部
nvarchar(10)
出生日期
date
注册日期
date
住宿信息表:
字段名
类型
备注
楼栋编号
int
宿舍号
int
宿舍容量
int
楼管
nvarchar(10)
宿舍成员表:
字段名
类型
备注
学号
int
宿舍号
int
目前人数
int
寝室长
nvarchar(10)
了解了各个表的信息之后,就要在学生宿舍管理系统中依次添加这三个表,添加表的方法可以有两种方法,可以直接在管理系统中操作,也可以用SQL语句完成表的添加。
学生信息表的创建:
SQL语句如下:
use学生宿舍管理系统
createtable学生信息表
(
学号int,
姓名nvarchar(10),
性别bit,
院部nvarchar(10),
出生日期date,
注册日期date,
)
住宿信息表的创建:
SQL语句如下:
use学生宿舍管理系统
createtable住宿信息表
(
楼栋编号int,
宿舍号int,
宿舍容量int,
楼管nvarchar(10),)
宿舍成员表的创建:
SQL语句如下:
use学生宿舍管理系统
createtable宿舍成员表
(
学号int,
宿舍号int,
目前人数int,
寝室长nvarchar(10),
)
③表创建完后,向表中添加内容,添加内容也有两种方法,直接在表中打开前100或者前200行进行编辑,同时也可用SQL语句往表中添加内容。
学生信息表中添加内容:
SQL语句格式如下:
insertinto学生信息表
(学号,姓名,性别,院部,出生日期,注册日期)
values
('01','***','0','***','1991-3-01','2008-02-3')
按照此程序语句向学生信息表中添加所需的学生信息
住宿信息表中添加内容:
SQL语句格式如下:
insertinto住宿信息表
(楼栋编号,宿舍号,宿舍容量,楼管)
values
('3','420','6','**')
宿舍成员表中添加内容:
SQL语句格式如下:
insertinto宿舍成员表
(学号,宿舍号,目前人数,寝室长)
values
('01','325','4','李广')
3、创建视图
创建视图可以使用两种方式,一种是使用SQLServerManagementStudio向导进行创建,另一种是使用SQL语句。
在本系统中可以创建如下两个视图:
①‘宿舍人数一览表’,此视图的作用是查看宿舍内部成员数、所在的楼栋号、楼管等跟宿舍有关的内容,可以很快知道宿舍的位置及所缺的人数,帮助学校工作人员查看。
使用SQLServerManagementStudio创建视图:
直接在所创建的学生宿舍管理系统的界面下进行操作,这样就可以得到所需的视图,主要过程如下:
使用SQL语句创建:
SQL语句如下
CREATEView[dbo].[宿舍人数一览表]
AS
SELECTdbo.宿舍成员表.宿舍号,dbo.宿舍成员表.目前人数,dbo.宿舍成员表.寝室长,dbo.住宿信息表.楼栋编号,dbo.住宿信息表.宿舍容量,dbo.住宿信息表.楼管
FROMdbo.宿舍成员表INNERJOINdbo.住宿信息表ONdbo.宿舍成员表.宿舍号=dbo.住宿信息表.宿舍号
如上所示,分别用两种方法创建了视图,此视图的查询结果如下,两种方法创建的视图都可以看出每个宿舍现在所住的人数和容量,以及各个宿舍所在的楼栋号及楼管,这样很方便就可以查询到所需的宿舍具体信息。
②‘学生具体信息表’,此视图的功能更强大,除了能查到宿舍的信息外还能查到学生的具体信息。
此视图的创建过程如上其SQL语为:
CREATEView[dbo].[学生具体信息表]AS
SELECTdbo.学生信息表.学号,dbo.学生信息表.姓名,dbo.学生信息表.性别,dbo.学生信息表.院部,dbo.学生信息表.出生日期,dbo.住宿信息表.楼栋编号,dbo.宿舍成员表.宿舍号,dbo.宿舍成员表.寝室长
FROMdbo.宿舍成员表INNERJOINdbo.学生信息表ONdbo.宿舍成员表.学号=dbo.学生信息表.学号INNERJOINdbo.住宿信息表ONdbo.宿舍成员表.宿舍号=dbo.住宿信息表.宿舍号
此视图的运行结果如下:
4、建立索引
索引是一种数据表中的对象,它是为了实现快速查找数据而设计的。
在查找大量数据时,有了索引就会快很多,但设计不当的索引也会影响数据查找的效率。
所以本系统对学生信息表中的院部建立索引:
其SQ语句为
createclusteredindexIX_学生信息表_院部on学生信息表(院部asc)
资源管理器的界面为:
5、建立触发器
触发器是由操作触发执行的存储过程,它将在一些条件满足时自动执行操作。
触发器可以完成数据检测、同步数据等很多需要自动维护的操作,触发器是一种特殊的存储过程。
它在对表中的记录执行特定的操作(如插入、更新、删除)时被执行,也可以响应系统操作(如删除表、删除库)。
对于此系统建立以下两个触发器,分别为:
①‘姓名更新触发’:
对表学生信息表建立触发器,当姓名字段修改时要把注册日期字段的日期改为当前日期。
此触发器的功能是如果更新了学生信息表中学生的姓名,则会将表中注册日期这个字段更新为当前日期。
其SQL语句为:
createtrigger姓名更新触发on学生信息表afterupdateas
begin
ifupdate(姓名)
update学生信息表set注册日期=getdate()from学生信息表,insertedwhere学生信息表.学号=inserted.学号
end
过程验证:
如截图中所示,当把学号为02号的学生的姓名改为王丽丽时,触发器将注册日期改为当前日期2012-6-17,而其余的注册时间均为2008-02-03,所以可以验证此触发器可正常工作。
②‘宿舍号更新触发’:
对表宿舍成员表建立触发器,当宿舍号字段修改时要把学生信息表中的注册日期字段的日期改为当前日期,此触发器的功能是当对宿舍成员表中某一学号的学生的宿舍号这个字段进行修改时,则会触发触发器,将学生信息表中的注册日期字段修改为当前日期,这个触发器关系到两个表的联合触发,其SQL语句如下:
createtrigger宿舍号更新触发on宿舍成员表afterupdate
asbegin
ifupdate(宿舍号)
update学生信息表set注册日期=getdate()from学生信息表,insertedwhere学生信息表.学号=inserted.学号
end
触发器验证:
当对宿舍成员表中学号为05号的学生修改宿舍号为324时,触发器工作,将学生信息表中05学生的注册日期自动修改为当前日期,而其余的学生的注册日期没变
6、建立存储过程
存储过程是预先编写好的一段SQL程序,它完成了很多原本需要在客户端执行的逻辑操作,对于提高整个系统的运行效率起到了很大的作用,在本系统中创建了一个存储过程,完成查询某个学生的信息,查询成功后返回姓名、中文表示的性别以及所在的院部信息。
其SQL语句为:
createprocedurefind1@numvarchar(20)as
begin
declare@svarchar(200)
declare@ch1varchar
(2),@ch2varchar
(2)
set@ch1='男'
set@ch2='女'
set@s='select学生信息表.学号,姓名,
case性别
when0then'''+@ch2+'''
when1then'''+@ch1+'''
end
院部from学生信息表innerjoin宿舍成员表on学生信息表.学号='''+@num+'''and学生信息表.学号=宿舍成员表.学号'
exec(@s)
end
下图为存储过程创建成功后的截图:
存储过程创建成功后,用execfind1'02'SQL语句验