大型数据库课程设计报告机房管理系统.doc
-大型数据库课程设计设计报告题 目: 机房管理系统 学 号:学生姓名: 指导教师:提交时间:. z.-目录第1章需求分析11.1需求调查11.2 系统功能分析21.3 面对用户需求分析3第2章面向对象分析和设计4第3章逻辑构造设计63.1类和对象向关系模式转换83.2关系模式优化9第4章数据库物理构造设计94.1 存取方法设计94.2存储构造设计94.3物理设计10第5章数据库完整性设计125.1 主键及唯一性索引125.2 参照完整性设计125.3Check约束125.4Default约束125.5 触发器设计13第6章 数据库视图设计15第7章 数据库存储过程设计16第8章 权限设计17总结18参考文献:18. z.-. z.-机房管理系统后台数据库第1章需求分析1.1需求调查针对一般高校机房管理系统的需求分析,通过对各个用户的调查,该机房管理系统有如下需求:1) 机房管理:实现机房管理员对机房信息、计算机信息以及教学班上机相关信息的管理。机房管理员可以对包括机房名称、该机房拥有的计算机数目、计算机编号、计算机上机费率在内的相关机房信息、计算机信息进展管理,也可以为教学班的课程分配上机时间和地点。2) 根本信息管理:实现对课程信息和教学班的根本信息的管理,包括课程的教师、上机时间和上机地点等根本信息,以及教学班学生、课程和成绩等根本信息的管理。学生可以对自己的个人根本信息进展管理,机房管理员可以对上机时间和地点等进展管理,任课教师可以对教学班学生课程成绩进展修改。3) 查询:实现对机房信息、学生信息、课程信息和教学班信息的相关查询。机房管理员可以对机房各项相关信息进展查询,学生可以对包括*、民族、性别、出生日期、班级、系别、专业和卡号在内的学生个人根本信息,课程的教师、上机时间、上机地点和成绩在内的课程信息,以及包括上机收费和余额在内的充值卡信息进展查询,任课教师可以对教学班学生信息、课程信息、上机时间、上机地点以及成绩等根本信息进展相关查询。4) 充值管理:实现充值人员对学生充值信息的管理,包括卡号、充值时间、充值金额以及余额等根本信息。学生通过充值人员为自己的卡充值,也可以了解自己的充值卡余额。5) 上机管理:实现对学生上机信息和机房收费信息的管理。下机后,系统将自动修改该学生的充值卡账户余额;通过机房收费信息可以统计各机房上机的费用。机房管理系统机房信息管理计算机根本信息管理学生根本信息管理教学班信息管理教学班上机信息管理充值信息管理上机登记过程信息管理机房费用统计信息管理1.2 系统功能分析1) 机房信息管理:用于实现机房管理员对机房信息的管理,机房管理员可以通过对包括机房名以及该机房拥有的计算机数目在内的全部机房根本信息进展查询、修改和删除。2) 计算机根本信息管理:用于实现机房管理员对计算机各项根本信息的管理,包括对计算机编号、计算机所属机房名和上机费率的查询、修改和删除。3) 学生根本信息管理:用于实现教师对学生的根本信息的管理,有查询、修改和删除学生的*、民族、性别、出生日期、系别、专业、班级以及卡号等根本信息的功能。4) 教学班信息管理:用于实现任课教师对教学班信息的管理,包括对教学班学生信息、课程信息和成绩信息等根本信息的查询,以及对教学班学生成绩的查询、修改和删除。5) 教学班上机信息管理:用于机房管理员对教学班学生上机信息的管理,包括对课程上机周次、上机时间和上机地点等根本信息的查询、修改和删除。6) 充值信息管理:用于充值人员对学生充值信息的管理,包括卡号、充值时间、充值金额以及余额等根本信息。学生缴纳费用,充值人员为其充值,并提供充值查询。7) 上机登记过程信息管理:用于对学生上机信息的登记管理,包括计算机编号、机房名、日期、上机时间、下机时间、*以及消费金额等根本信息。每次学生下机后,系统将自动修改该学生的账户余额,并保存该学生此次上机的详细信息。8) 机房费用统计信息管理:用于实现充值人员对各个机房的收费信息的管理,包括机房名、日期和上机费用等根本信息。系统管理员可以通过对学生的收费信息来统计各机房上机的总体费用。1.3 面对用户需求分析在机房管理系统中,最主要的功能就是进展一系列的查询和各类数据的管理。因此,可以将机房管理系统分为管理系统和查询系统两个子系统。而在所设计的机房管理系统中,主要有四类用户,即学生用户、教师用户、机房管理员和系统管理员。各类用户在该系统中的需求不同,权限也不同。因此,为了更明确更系统地了解用户需求,我们还可以将管理系统再细分为学生管理系统、教师管理系统、机房管理员管理系统和系统管理员管理系统。同样,将查询系统也按用户职能进展细分,即学生查询系统、教师查询系统、机房管理员查询系统和系统管理员查询系统。这样细分后,看似把系统需求繁杂化了。其实不然,细分后使各用户需求更加明确了,并且能更好的把握系统需求。下面从细分后的各个子系统分析子系统的需求:机房管理系统学生管理子系统学生查询子系统教师管理子系统教师查询子系统充值人员管理子系统充值人员查询子系统机房管理员管理子系统机房管理员查询子系统1) 学生管理子系统。学生用户在使用该系统时,首先必须通过账号和密码登录系统。因此,对密码的设置和修改是最根本的需求。由于所有用户在使用该系统时都需要账号和密码,所以在后面的用户需求分析时不再重复对此需求进展描述。在登录系统后,学生用户的最主要的需求就是通过该系统进展个人根本信息管理和选课。其次,学生用户还要求可以通过系统进展个人根本信息的维护包括添加、删除和修改信息以及学生选课。 2) 学生查询子系统。学生用户在该系统中是最低级的用户,所以可以查询的数据也是有限的,主要有个人根本信息查询,个人选课信息查询,个人上机信息查询。在进展选课的时候还要对课程信息进展查询。3) 教师管理子系统。该系统中,教师用户可以对学生的课程成绩进展录入。4) 教师查询子系统。教师用户不仅要有查询教学班学生信息的功能,还要有查询所选课程信息的功能。当学生用户进展选课完毕后,教师用户有对选课学生花名册、任课课程信息的查看的需求。当课程完毕后,教师在录入学生成绩的时候,也要对课程信息、学生信息进展查询。教师用户的另一个需求是对学生成绩的查询,这个成绩查询不仅可以查询学生用户的个人成绩,还可以查询所带课程的成绩和所有学生的成绩。5) 充值人员管理子系统。作为充值人员,具备给学生充值卡充值的需求即修改学生账户的账户余额,也可以通过机房收费信息统计各机房上机的费用。6) 充值人员查询子系统。充值人员在给充值卡充值的时候,有查询充值卡信息的需求;统计各机房上机总费用的时候,还有查询各机房具体上机收费信息的相关需求。7) 机房管理员管理子系统。首先是个人信息的修改。对于机房管理员来说,该系统应该可以帮助他进展个人信息即姓名的修改;机房管理员还有对机房信息和计算机信息进展管理的需求;在教学班课程需要安排上机时,机房管理员还有利用系统进展上机安排的需求,即对上机周次、上机日期和上机地点的安排。8) 机房管理员查询子系统。机房管理员首先要有机房信息和计算机信息查询的需求,除了这些需求外,机房管理员还应该可以查询需要安排上机的教学班的学生人数,以及已经安排好的教学班上机的相关信息。第2章面向对象分析和设计类和对象设计如下:computer计算机编号:int机房名:char(10)费率(元/小时):int添加()修改()删除()查询()room机房名:char(10)计算机数目:int管理员:varchar(20) 添加()修改()删除()查询()course专业:nvarchar(50)课程名:nvarchar(50)教师:varchar(30)上课周次:char(35)上机时间:char(30)上机地点:char(15)添加()修改()删除()查询()student*:int:varchar(20)性别:bit民族:char(10)出生日期:char(10)系别:varchar(20)专业:varchar(30)班级编号:int卡号:int添加()修改()删除()查询()sc*:int课程名:nvarchar(50)成绩:char(10)添加()修改()删除()查询()reinformation计算机编号:int机房名:char(10)卡号:int上机日期:nvarchar(50)上机类型:nvarchar(50)起始时间:char(20)下机时间:char(20)消费金额:float删除()查询()card卡号:int充值日期:nvarchar(50)充值金额:float经办人:varchar(20)余额:float添加()修改()删除()查询()第3章逻辑构造设计局部E-R图room计算机数目管理员机房名 机房实体E-R图computer计算机编号机房名费率元/小时 计算机实体E-R图student卡号*姓名系别出生日期班级编号专业民族性别 学生实体E-R图course上课地点上课时间上课周次教师课程名专业课程实体E-R图 card卡号充值时间充值金额余额经办人充值卡实体E-R图全局E-R图: 1 n 1 1 1 1 n n 1 1 n 1 日期 费率元/小时计算机数目管理员计算机编号属于roomcomputer机房名机房名民族班级编号出生日期上机系别上课student性别姓名卡号*专业卡号上课日期上课周次余额card属于选课course上课时间经办人课程名充值时间专业教师充值金额3.1类和对象向关系模式转换room机房名、计算机数目、费率元/小时、管理员computer计算机编号、机房名student班级编号、*、民族、性别、出生日期、系别、专业、卡号、课程名、教师、上课周次、上机时间、上机地点、成绩course课程名、专业、教师、上课周次、上机时间、上机地点、成绩sc*、性别、系别、专业、班级、课程名card卡号、*、性别、系别、专业、班级、充值日期、充值金额、经办人、余额reinformation计算机编号、机房名、*、卡号、性别、系别、专业、班级、上机日期、上机类型、起始时间、下机时间、消费金额3.2关系模式优化room机房名、计算机数目、管理员computer计算机编号、机房名、费率元/小时student班级编号、*、民族、性别、出生日期、系别、专业、卡号course课程名、专业、教师、上课周次、上机时间、上机地点sc*、课程名、成绩card卡号、充值日期、充值金额、经办人、余额reinformation计算机编号、机房名、*、卡号、上机日期、上机类型、起始时间、下机时间、消费金额第4章数据库物理构造设计4.1 存取方法设计数据库系统是多用户共享的系统,对同一个关系要建立多条存储路径才能满足多用户的多种应用要求。对于机房管理系统来说,为了提高*些属性(如:机房名,计算机编号,学生*,课程名,学生成绩,选课信息等)的查询速度,可以选择聚簇存取的方法,即把这些属性上具有一样值的元组集中放在连续的物理块上。这样在查询*个系别或是查询*个专业或*班级的学生情况或选课等时就会大大提高查询速度。因此,该系统中选择聚簇存取方法。4.2存储构造设计机房管理系统是一个大型复杂的计算机网络信息系统,采用基于浏览器/效劳器B/S,客户端/效劳器C/S混合的应用体系构造来建立机房管理系统。机房管理系统采用Microsoft 公司推出的SQL Server 2008,并用SQL进展数据库的建立和数据库中数据的维护和查询。4.3物理设计实现该设计的环境为Windows *P Professional + MS SQL Server 2008 或以上版本。1、 建立机房管理系统数据库create database 机房管理系统 on primary (name=机房管理系统数据文件,filename='f:机房管理系统机房管理系统数据文件.mdf',size=10MB, ma*size=unlimited, filegrowth=10% ) log on (name=机房管理系统日志文件,filename='f:机房管理系统机房管理系统日志文件.ldf',size=3MB, ma*size=unlimited, filegrowth=1MB )2、 建立机房信息表create table room(机房名char(10) not null primary key,计算机数目 int,管理员 varchar(20) not null)3、 建立计算机信息表create table computer(计算机编号int not null,机房名char(10) not null,费率(元/小时) int,primary key(计算机编号,机房名)4、 建立学生信息表create table student(班级编号 int not null,* int not null primary key,varchar(20) not null,性别 bit not null,民族 char(10),出生日期 char(10),系别 varchar(20) not null,专业 varchar(30) not null,卡号int)5、 建立课程信息表create table course(专业 nvarchar(50) not null,课程名 nvarchar(50) not null,教师 nvarchar(30) not null,上课周次 char(35) not null,上课时间 char(30) not null,上机地点char(15) not null,primary key(专业,课程)6、 建立学生选课信息表create table sc(* intnot null,课程名 nvarchar(50) not null, 班级编号 intn(50) not null, ot null,成绩 char(10) , primary key(*,课程)7、 建立充值卡信息表create table card(卡号 int not null primary key,充值日期 nvarchar(50) not null,充值金额 float not null,经办人 varchar(20)not null,余额 float)8、 建立上机信息登记表create table reinformation(计算机编号 int not null,机房名 char(10) not null,卡号 int not null,上机日期 nvarchar(50)not null,上机类型 nvarchar(50)not null,起始时间 char(20)not null,下机时间 char(20)not null,消费金额 float not null,primary key(卡号,起始时间)第5章数据库完整性设计5.1 主键及唯一性索引表名主键建立唯一性索引room(机房名)create unique inde* room_inde*on room(机房名)computer(计算机编号,归属机房)create unique inde* computer_inde*on computer(计算机编号,归属机房)student(*)create unique inde* student_inde*on student(*)course(专业,课程)create unique inde* course_inde*on course(专业,课程)sc(*,课程)create unique inde* sc_inde*on sc(*,课程)card(卡号,充值日期)create unique inde* card_inde*on card(卡号,充值日期)reinformation(卡号,起始时间)create unique inde* reinformation_inde*on reinformation(卡号,起始时间)5.2 参照完整性设计1、sc表中将属性*设计为外键alter table sc add foreign key (*) references student(*)2、reinformation表中将属性卡号设计为外键alter table reinformation add foreign key (卡号) references card(卡号)3、computer表中将属性机房名设计为外键alter table computer add foreign key (机房名) references room(机房名)4、student表中将属性卡号设计为外键alter table student add foreign key (卡号) references card(卡号)5.3Check约束1、 student表中将性别进展check约束:check(性别 in (0,1)2、 sc表中将成绩进展check约束:check(成绩>=0 and 成绩<=100)5.4Default约束1、student表中性别默认值设为:1。default(1)2、student表中民族默认值设为:汉族。default('汉族')5.5 触发器设计1、在room表中建立删改机房名触发器create trigger room_trigon room afterupdate,delete as beginif (update(机房名)begin update computer set 机房名=(select 机房名 from inserted) where 机房名=(select 机房名 from deleted)update reinformation set 机房名=(select 机房名 from inserted) where 机房名=(select 机房名 from deleted)endelse begindelete from computerwhere 机房名 in (select 机房名 from deleted)delete from reinformationwhere 机房名 in (select 机房名 from deleted)endend2、在student表中建立删改*触发器create trigger student_trigon student afterupdate,delete as beginif (update(*)update sc set *=(select * from inserted) where *=(select * from deleted)elsedelete from scwhere * in (select * from deleted)end3、在sc表中建立删改课程名触发器create trigger sc_trig on sc after update,delete as beginif (update(课程名)update course set 课程名=(select 课程名 from inserted) where 课程名=(select 课程名 from deleted)elsedelete from coursewhere 课程名 in (select 课程名 from deleted)end4、在course表中建立删改课程名触发器create trigger course_trig on course after update,delete as beginif (update(课程名)update sc set 课程名=(select 课程名 from inserted) where 课程名=(select 课程名 from deleted)elsedelete from scwhere 课程名 in (select 课程名 from deleted)end5、 在computer表中建立删改计算机编号触发器create trigger computer_trig on computer after update,delete as beginif (update(计算机编号)update reinformation set 计算机编号=(select 计算机编号 from inserted) where 计算机编号=(select 计算机编号 from deleted)elsedelete from reinformationwhere 计算机编号 in (select 计算机编号 from deleted)end6、在card表中建立删改卡号触发器create trigger card_trig on card after update,delete as beginif (update(卡号)update reinformation set 卡号=(select 卡号 from inserted) where 卡号=(select 卡号 from deleted)elsedelete from reinformationwhere 卡号 in (select 卡号 from deleted)end第6章 数据库视图设计1、建立机房信息视图create view room_view as select * from room;2、建立计算机信息视图create view computer_view asselect * from computer;3、建立学生信息视图create view student_view asselect *,性别,民族,出生日期,系别,专业,班级编号,卡号 from student;4、建立课程信息视图create view course_view as select * from course;5、建立学生选课信息视图create view sc_view asselect * from sc;6、建立学生充值卡信息视图create view card_view asselect * from card;7、建立上机信息登记视图create view reinformation_view asselect * from reinformation;8、建立学生上机信息视图create view stu_view asselect ,student.,course.课程,教师,上课周次,上机时间,上机地点from student,sc,coursewhere student.*= sc.*and sc.课程= course.课程 and student.专业= course.专业;9、建立班级上机信息视图create view cla_view asselect distinct,course.课程,教师,上课周次,上机时间,上机地点from student,sc,coursewhere sc.*=student.* and student.专业= course.;10、建立班级学生选课信息视图create view cla_sc_view as select student.班级编号,student.*,course.课程,成绩 from student,sc,coursewhere sc.*=student.* and student.专业= course.;11、 建立机房费用统计信息视图create view rom_moy_view asselect 机房名,上机日期,sum(消费金额) as 总消费 from reinformationgroup by 机房名,上机日期;第7章 数据库存储过程设计1、建立添加机房存储过程create procedure roomadd(机房名 char(10),计算机数目 int,管理员 varchar(20)as begininsert into roomvalues(机房名,计算机数目,管理员)endreturn2、 建立添加计算机存储过程create procedure computeradd(计算机编号 int,机房名 char(10),(费率(元/小时) int)as begininsert into computervalues(计算机编号,机房名,(费率(元/小时)endreturn3、 建立添加学生存储过程create procedure studentadd(班级编号 int,* int, varchar(20),性别 bit,出生日期 char(10),系别 varchar(20),专业 varchar(30),卡号 int,民族 char(10)as begininsert into studentvalues(班级编号,*,性别,出生日期,系别,专业,卡号,民族)endreturn4、 建立添加课程存储过程create procedure courseadd(专业 nvarchar(50),课程名 nvarchar(50),教师 varchar(30),上课周次 char(35),上机时间 char(10),上机地点 char(15)as begininsert into coursevalues(专业,课程名,教师,上课周次,上机时间,上机地点)endreturn5、 建立选课存储过程create procedure scadd(* int,课程名 nvarchar(50),成绩 char(10)as begininsert into scvalues(*,课程名,成绩)endreturn第8章 权限设计1、 给机房管理员授权:grant select,update,delete on room_view to 机房管理员grant select,update,delete on computer_view to 机房管理员grant select on course_view to 机房管理员grant select on sc_view to 机房管理员grant select on reinformation_view to 机房管理员grant select on stu_view to 机房管理员grant select,update,delete on cla_view to 机房管理员2、 给充值人员授权:grant select on student_view to 充值人员grant select,update,delete on card_view to 充值人员. z.-grant select,update,delete on rom_moy_view to 充值人员grant select on reinformation_view to 充值人员3、 给学生授权grant select on course to 学生grant select,update on student to 学生grant insert,delete,update on sc to 学生grant select on card_view to 学生grant select on cla_view to 学生4、 给教师授权grant select on student_view to 教师grant select on sc_view to 教师 grant select on course_view to 教师grant select on reinformation_view to 教师grant select on stu_view to 教师grant select on cla_view to 教师grant select on cla_sc_view to 教师总结通过这段时间对机房管理系统后台数据库的设计,我受益匪浅。做这个课程设计,让我可以把课堂上所学的理论知识和实践相联系起来,使我渐渐学会了融会贯穿。同样,通过对SQL Server的使用,我也熟练和稳固了对SQL的理解。在机房管理系统的开发中我采用了完整的数据库设计的全过程,从需求分析到概念构造设计,到逻辑构造设计,最后到数据库的实施和维护,每一步都认真地分析和实施。当然,在本次课程设计的成果中也还存在许多的缺乏之处。在这次设计中,我完全投入到了开发系统的世界里,使我明白了理论和实践要想充分地结合,需要非常扎实的根本功。这就说明学好根底知识是理论付诸实践的前提。在开发机房管理系统中我学到了很多,希望在以后能充分利用实习的时机充实自己,用所学的理论知识充分去实践,在实践中又要努力去稳固理论知识。只有这样,才能把一门课程甚至一门学科学精、学透。通过这次的课程设计,我对大型数据库设计这一门课程有了更深一步的理解。参考文献:1. 郑阿奇等. SQLserver实用教程第3版M . 电子工业出版社,20092. 王珊,萨师煊 .数据库系统概论M. 高等教育出版社,2005. z.- "大型数据库课程设计"报告评分标准选题及功能设计选题合理,功能简单 (D)有一定的工作量和实用价值 (C)功能设计丰富,有一定的难度系数 (B)功能设计合理全面,能表达数据库的存储和整理数据的功能 (A)数据表和数据量具备根本的数据表,数据量较少,但能够实现系统根本需要 (D)具备根本的数据表,数据量适中,