1、综合性数据库设计方案班务管理系统综合性、设计性实验报告实验课程名称数据库系统原理课程设计专业计算机科学技术班级07级3班 学号 08001319 姓名 王 健 指导教师及职称段华斌 讲师开课学期 至 第 二 学期设计时间 12月20日 12月24日湖南科技学院教务处编印设计题目班务信息管理系统1 实验目的:(1巩固数据库理论知识,熟悉一种具体的数据库管理系统掌握针对特定应用环境数据库的设计。(3综合使用SQL Server中数据库、表、视图、索引、触发器、存储过程的创立使用方法。(4体会运用软件工程的设计思想进行软件系统开发的过程与方法。 (5经过对班级有关用户的系统调研,经过需求分析,数据库
2、概念设计、逻辑设计到上机编程、调试和应用等全过程完成班级信息管理系统的后台数据库设计。2 软硬件环境:硬件环境:AMD althlon 2.20GCPU+1G内存计算机一台。软件环境: windows xp操作系统,sql server 数据库系统。3 实验设计简述:本系统主要提供班干部及辅导员对班级的管理。其中包括学生个人基本信息,教师个人基本信息,学生成绩信息,课程信息,学生留言信息,班费信息,班干部及辅导员个人信息,贫困生基本信息。 学生,任课教师,辅导员能够修改个人基本信息数据。任课教师能够修改所教课程的学生成绩信息。学生能够添加留言信息。辅导员能够修改学生基本信息。班干部,辅导员能够
3、修改课程信息。班干部能够修改班费信息。辅导员,班干部能够修改贫困生基本信息。学生能够查询有关个人需要的信息,而辅导员,班干部能够完成对班级有关信息与事务的管理。辅导员为系统管理员。4系统需求分析与功能设计(根据课题的要求进行简单的需求分析,设计相应的数据流图,得出相应的系统功能需要, 系统数据流图一 背景材料与用户需求本系统用户分为五类,分别为普通学生,班干部,任课教师,辅导员,系统管理员。几种用户对系统功能要求如下。() 学生对系统功能需求l 查询个人基本学籍信息,查看个人课表,查询个人成绩,查看到班级公告,交作业,考试安排等信息。查询班费支出详细账单。查询个人获奖信息。l 修改个人基本信息
4、,给班级提意见和留言。() 班干部对系统功能需求l 具有学生的全部权限,还需要修改班级课表,能够发表班级公告。修改班费支出与交纳信息。() 任课教师对系统功能需求l 需要查看和修改个基本信息,需要查看其所授课程的所有学生的成绩及其平均成绩,最高分。l 能为所有学生录入成绩,修改学生的成绩。() 辅导员对系统功能需求l 需要查看所有学生的基本信息,查看学生成绩,选课情况。查看,修改班费信息。() 系统管理员需要管理系统所有用户。二 系统总体功能设计与功能模块划分班务管理系统基本信息模块学生成绩管理模块课表管理模块留言板模块系统管理模块班费管理模块贫困生信息管理模块 系统总共分五个模块。 系统总体
5、功能有。() 学生基本信息查询,学生基本信息的插入,修改,删除,而这些都必须只有系统管理员才能操作。() 学生成绩的查询。学生成绩的录入,修改,删除,这些只有相应的任课老师才能够操作。() 学生能够查询个人的课表。课程表的录入,修改,删除能够是班干部,辅导员,系统管理员完成。() 学生能够发表留言。而班干部,辅导员,任课教师,系统管理员能够查看留言。() 系统管理员拥有超级管理权限。能够修改所有的数据。() 班费管理模块用于确定交班费金额以及学生上交班费。() 贫困生管理模块用于管理贫困生库信息。三数据字典() 数据项字段名字段类型字段长度说明与备注学号(snovarchar15主键varch
6、ar20学生姓名 not null性别(ssexchar2datetimeNot null格式:YYYY-MM-DD身份证号(IDvarchar20Not null专业名(deptnamevarchar20Not null专业方向(fangxiangvarchar10软件方向或网络方向Not null专业编号(deptnoint4Not null联系电话(telephoneNumbervarchar20入学日期(getCarDaydatetimeNot null格式:YYYY-MM-DD照片(photoimage民族(nationvarchar10Not null家庭出身(jiatinvarc
7、har6政治面貌(zhenzhivarchar6Not null籍贯(jiguanvarchar30Not null家庭详细地址(addressvarchar45Not null邮政编码(postvarchar8Not null 家中邮政编码学生信息备注varchar50有关学生备注信息课程号(cnoint4主键课程名(cnamevarchar36Not null先行课(prenoint4课程的先行课学分(xuefenint4Not null教师号(teanoint4主键教师名(teanamevarchar20not null教师年龄(teaageint4工龄(teayearint42数据流班
8、务管理系统用户用户登陆验证用户类型,用户名,密码验证错误验证经过学生班干部任课教师辅导员(管理员学生操作数据流图查询查询查询发表查询学生学生基本信息查询,修改成绩基本信息留言班费开支公告课程表综合测评信息查询班干部操作数据流图发布查询修改查询查看查询班干部学生基本信息查询,修改成绩基本信息留言班费开支公告课程表综合测评信息查询与修改班干部个人信息查询修改贫困生信息查询任课教师操作数据流图查看任课教师教师个人信息查询,修改学生基本信息查询学生成绩查询,修改公告留言课程表查看查询,修改班费交纳与支出数据流图存档辅导员财务计划学生干部班会讨论学生班费规审批讨论辅导员班干部学生批准班主任下达学生批准经
9、过班干部申请班费讨论审批辅导员领取班费存档5概念模型设计 (按数据库设计方法和规范化理论,从实践概括抽象出ER模型m11mmn学生课程辅导员班干部教师教授必修留言发表班费管理学号性别分数姓名年龄联系电话留言ID发表者日期留言对象留言内容课程号课程名学分任课教师姓名性别年龄教师编号姓名年龄联系电话reason经手人金额原因日期交纳或支出贫困生IDaddresssnoshouru6逻辑模型设计(按数据库设计方法和规范化理论得出符合3NF的逻辑模型,ER图转化为相应的关系模式,设计数据库的逻辑模型由ER图转化为关系模型实体转化为关系表学生实体转化为student表 student(sno,sname
10、,ssex,sage,Sborn,ID,deptname,fangxiang,telephoneNumber,getcarday,photo,nation,jiatin,zhenzhi,jiguan,address,post,beizhu课程实体转化为course表 course(cno,cname,cpno,xuefen,teano教师实体转化为teacher表 teacher(teano,tname,teaage,teayear班干部实体转化为bangan表 bangan(bno,bname,zhiwu,bsex,sno辅导员实体fudao表 fudao(fno,fname,fsex,fa
11、ge,fphonenum留言实体liuyin表 liuyin(ID,sno,duixiang,content,riqi班费收缴支出实体banfei表 banfei(ID,leixin,sno,number,date1,Reason,jinshou,guanli贫困生表penkun表 penkun(sno,reason,address,shouru。必修课程联系转化为表sc表 sc(sno,cno,grade,time1其中sno,cno也是外键。以上有下划线的为主键,有波线的为外键。7物理模型设计性别sbornDatetimenot null出生日期IDvarchar18Not null身份证
12、号deptnameVarchar30专业名FangxiangVarchar6Check(软件,网络专业方向telephoneVarchar15手机号GetcardayDatetimeNot null入学日期NationVarchar8Not null民族 JiatinVarchar10家庭出身zhenzhiVarchar8政治面貌JiguanVarchar30Not null籍贯addressVarchar50Not null地址PostVarchar10邮政编码BeizhuVarchar30备注课程表course列名类型长度约束备注CnoVarchar10Primary key课程号cnam
13、evarchar20Not null课程名Cpnovarchar10先修课号XuefenIntnot null学分Teanovarchar6Not null教师编号增加课程表class列名类型长度约束备注IDInt主键CnoVarchar10 外键课程号fanxiangVarchar15课程性质addressVarchar30Not null上课地点Time1Varchar20Not null上课时间教师表teacher列名类型长度约束备注TeanoVarchar6 主键教师编号TnameVarchar15姓名TeaageInt年龄TeayearInt教书年数zhichenVarchar6职称
14、班干部表bangan列名类型长度约束备注BnoInt主键班干部标识BnameVarchar20snoVarchar20 外键学号ZhiwuVarchar10Not null职务telphoneVarchar20Not null联系电话辅导员实体fudao表列名类型长度约束备注FnoInt主键Fsexvarchar2Check(男,女性别FnameVarchar20Not null姓名FageIntNot null年龄fphonenumVarchar20联系电话Liuyin表列名类型长度约束备注IDInt主键留言标识snoVarchar20 外键学号DuixiangVarchar10Not nu
15、ll对象ContenttextNot null内容riqiDatetimeNot null日期班费表banfei表列名类型长度约束备注IDInt主键LeixinVarchar6Not null类型(交纳或支出SnoVarchar20外键学号NumberIntNot null金额Date1datetimeNot null日期Reasonvarchar10学号ReasontextNot null贫困原因AddressVarchar30Not null家庭住址shourufloatNot null家月人均收入Sc表列名类型长度约束备注SnoVarchar20主键(外键学号Cnovarchar10主键
16、 外键课程号GradefloatNot null分数Time1Varchar20Not null开课学期2 为了增加查询的效率建立如下索引(1 student(sname(2 course(cno(3 class(cno(4 teacher(teano(5 bangan(bname(6 liuyin(duixiang(7 banfei(leixin(8 sc(cno,sno8实现Log on( Name=class_log, -日志文件逻辑文件名 Filename=C:class_log.ldf, -日志文件物理文件名 Size=5MB, -初使大小。 Maxsize=100MB, -最大大小
17、 Filegrowth=3MB -文件增长1.建立student表Use classadmin -使用classadmin数据库GoCreate table student -创造表.( Sno varchar(20, -学号(主键 Sname varchar(20 not null, -姓名不为空 Ssex varchar(2 not null, -性别,不为空 Sborn datetime not null, -出生日期 不为空 ID varchar(18 not null, -身份证号 不为空 Deptname varchar(30, -专业名 Fangxiang varchar(6,
18、-专业方向 Telephone varchar(15, -手机号 Getcarday datetime not null, -入学日期 Nation varchar(8 not null, -民族 Jiatin varchar(10, -家庭背景 Zhenzhi varchar(8, -政治面貌 Jiguan varchar(30 not null, -籍贯 Address varchar(50 not null, -地址 Post varchar(30, -备注Constraint PK_sno primary key(sno, -主键约束Constraint CK_FX check(fan
19、gxiang in(软件,网络, -方向检查约束Constraint ck_sex check(ssex in(男,女 -性别检查约束2 创立 course 表Create table course -创立表( Cno varchar(10, -课程号 Cname varchar(20 not null, -课程名 Cpno varchar(10, -先修课号 Xuefen int not null, -学分 Teano varchar(6 not null, -教师编号 Constraint PK_cno primary key(cno, -课程主键约束 Constraint Fk_CP f
20、oreign key(cpno references course(cno -外键约束3创立class表Create table class -创立class 表( ID int, -课表ID Cno varchar(10, -课程号 Fanxiang varchar(15, -课程性质 Address varchar(30 not null, -上课地点 Timel varchar(20 not null, -上课时间 Constraint PK_ID primary key(ID, -主键约束 Constraint FK_cno foreign key(cno references cou
21、rse(cno -外键约束Teacher表Create table teacher -创立教师表( Teano varchar(6, -教师编号 Tname varchar(15,-姓名 Teaage int, -年龄 Teayear int, -教书年数 Zhichen varchar(6, -职称 Constraint PK_tno primary key(Teano, -主键约束班干部表banganCreate table bangan -创立班干表( Bno int, -班干部标识号 Bname varchar(20, -姓名 Sno varchar(20, -学号 Zhiwu var
22、char(10 not null, -职务 Telephone varchar(20 not null, -联系电话 Constraint PK_bno primary key(Bno, -主键约束 Constraint FK_sno foreign key(sno references student(sno -外键 辅导员fudao表Create table fudao( Fno int, -标识号 Fsex varchar(2, -性别 Fname varchar(20 not null, -姓名 Fage int not null, -年龄 Fphonenum varchar(20,
23、-联系电话 Constraint PK_fno primary key(fno, -主键约束 Constraint CK_sex1 check(fsex in(男,女 -性别留言表liuyin表Create table liuyin -留言表( ID int, -标识 Sno varchar(20, -学号 Douxiang varchar(10 not null, -对象 Content text not null, -内容 Riqi datetime not null -日期 Constraint pK_id1 primary key(ID, -主键标识 Constraint FK_sno
24、1 foreign key(sno references student(sno -外键班费表banfei表Create table banfei -创立班费表( ID int, -主键标识 Leixin varchar(6, -类型, -事务办理学生学号 Number int not null, -金额 Date1 datetime not null, -日期 Reason varchar(10, -支出原因 Jinshou varchar(10 not null, -经手人姓名 Constraint PK_id2 primary key(ID, -主键 Constraint FK_sno2
25、 foreign key(sno references student(sno -外键约束贫困生表penkunCreate table penkun( Sno varchar(20 primary key, -贫困生学号 Reason text not null, -贫困原因 Address varchar(30 not null, -家庭住址Shouru float not null, -家中月人均收入Constraint FK_sno3 foreign key(sno references student(sno -外键约束Sc表Create table sc -创立sc 表( Sno v
26、archar(20, -学号 Cno varchar(10, -课程号 Grade float not null, -分数 Time1 varchar(20 not null, -开课学期 Constraint PK_SC primary key(sno,cno, -主键 Constraint FK_sno4 foreign key(sno references student(sno,-外键 Constraint FK_cno4 foreign key(cno references course(cno -外键8.2创立索引Create index stusname on student(s
27、name -建立student表上sname索引Create unique index coucno on course(cno -建立course表上cno索引Create index clacno on class(cno -建立class表上cno索引Create index teateano on teacher(teano -teacher 表上建立teano索引Create index banname on bangan(bname -bangan表上建立bname索引Create index liudui on liuyin(douxiang -liuyin表上建立duixian
28、g索引Create index banxin on banfei(leixin -banfei上建立leixin索引Create index scno on sc (cno asc,sno desc -sc上建立cno,sno索引.8.3创立视图-创立视图-(1方向为软件的同学的视图create view stusoftasselect * from student where fangxiang=软件-(2方向为网络的同学的视图create view stunetasselect * from student where fangxiang=网络-触发器设计-1Student 表上的出发器触
29、发器:对于学生基本信息表,当学生信息修改时,其它表中若有对应的该信息时,应该对其进行修改;当学生信息删除时,对应的如SC表中的对应学生成绩信息也应该自动修改: -1supdatecreate trigger supdate on studentfor updateas update sc set sno=(select sno from inserted where sc.sno=(select sno from deleted update liuyin set sno=(select sno from inserted where liuyin.sno=(select sno from d
30、eleted update banfei set sno=(select sno from inserted where banfei.sno=(select sno from deleted update penkun set sno=(select sno from inserted where penkun.sno=(select sno from deleted-2sdeletecreate trigger sdelete on studentfor deleteas delete from sc where sc.sno=(select sno from deleted delete
31、 from liuyin where liuyin.sno=(select sno from deleted delete from banfei where banfei.sno=(select sno from deleted delete from penkun where penkun.sno=(select sno from deleted-3scorecheckcreate trigger scoreCheckon scfor insert,updateas if update(gradeprint AFTER触发器开始执行begindeclare ScoreValue reals
32、elect ScoreValue=(select grade from insertedif ScoreValue100 or ScoreValueend结果:命令成功完成-创立存储过程-1.插入学生基本信息的存储过程:create procedure TnsertStudent sno varchar(20, sname varchar(20, ssex varchar(2, sborn datatime(8, ID varchar(18, deptname varchar(30, fangxiang varchar(6, telephone varchar(15,getcarday var
33、char(8, nation varchar(8, jiatin varchar(10,zhenzhi varchar(8, jiguan varchar(30, address varchar(50,post varchar(10,beizhu varchar(30asinsert into student values(sno,sname,ssex,sborn,ID,deptname,fangxiang,telephone,getcarday,nation,jiatin,zhenzhi,jiguan,address,post,beizhuGO结果:命令已成功完成。2Update 学生成绩信
34、息的存储过程:CREATE PROCEDURE UpdateSC sno varchar(20, cno varchar(10, grade floatASupdate SCset grade=gradewhere sno=sno and cno=cnoGO3. 对不及格科目的所有学生的信息查询的存储过程CREATE PROCEDURE selectstuendt_1ASSELECT Sc.sno,sname,cname,o,grade FROM Student, SC,Course Where grade asselect distinct student.sno,sname,o,cname
35、,grade from student,sc,coursewhere student.sno=sc.sno and o=o and o=(select cno from course where cname=cnameandgrade=(select max(grade from sc where cno=(select cno from course where cname=cname drop procedure selectstumaxgrade结果: 命令已成功完成。-根据学号查询学生的信息create procedure selectofsno sno varchar(20asselect * from student where sno=sno-查询某门课的平均分create procedure selectavgcno varchar