1、1综合性、设计性实验报告实验课程名称 数据库系统原理课程设计 专业 计算机科学技术 班级 07 级 3 班 学号 200708001319 姓名 王 健 指导教师及职称 段华斌 讲师 开课学期 2009 至 2010 学年 第 二 学期设计时间 09 年 12 月 20 日 09 年 12 月 24 日湖南科技学院教务处编印2设计题目 班务信息管理系统1实验目的:(1)巩固数据库理论知识,熟悉一种具体的数据库管理系统(例如:SQL Server)的使用方法。(2)掌握针对特定应用环境数据库的设计。(3)综合使用 SQL Server 中数据库、表、视图、索引、触发器、存储过程的创建使用方法。(
2、4)体会运用软件工程的设计思想进行软件系统开发的过程与方法。(5)通过对班级有关用户的系统调研,通过需求分析,数据库概念设计、逻辑设计到上机编程、调试和应用等全过程完成班级信息管理系统的后台数据库设计。2软硬件环境:硬件环境:AMD althlon 2.20GCPU+1G 内存计算机一台。软件环境: windows xp 操作系统,sql server 2000 数据库系统。3实验设计简述:本系统主要提供班干部及辅导员对班级的管理。其中包括学生个人基本信息,教师个人基本信息,学生成绩信息,课程信息,学生留言信息,班费信息,班干部及辅导员个人信息,贫困生基本信息。 学生,任课教师,辅导员可以修改
3、个人基本信息数据。任课教师可以修改所教课程的学生成绩信息。学生可以添加留言信息。辅导员可以修改学生基本信息。班干部,辅导员可以修改课程信息。班干部可以修改班费信息。辅导员,班干部可以修改贫困生基本信息。学生可以查询有关个人需要的信息,而辅导员,班干部可以完成对班级有关信息与事务的管理。辅导员为系统管理员。34系统需求分析与功能设计(根据课题的要求进行简单的需求分析,设计相应的数据流图,得出相应的系统功能需要, 系统数据流图)一 背景材料与用户需求本系统用户分为五类,分别为普通学生,班干部,任课教师,辅导员,系统管理员。几种用户对系统功能要求如下。() 学生对系统功能需求 查询个人基本学籍信息,
4、查看个人课表,查询个人成绩,查看到班级公告,交作业,考试安排等信息。查询班费支出详细账单。查询个人获奖信息。 修改个人基本信息,给班级提意见和留言。() 班干部对系统功能需求 具有学生的全部权限,还需要修改班级课表,可以发表班级公告。修改班费支出与交纳信息。() 任课教师对系统功能需求 需要查看和修改个基本信息,需要查看其所授课程的所有学生的成绩及其平均成绩,最高分。 能为所有学生录入成绩,修改学生的成绩。() 辅导员对系统功能需求 需要查看所有学生的基本信息,查看学生成绩,选课情况。查看,修改班费信息。() 系统管理员需要管理系统所有用户。二 系统总体功能设计与功能模块划分班务管理系统基本信
5、息模块学生成绩管理模块课表管理模块留言板模块系统管理模块班费管理模块贫困生信息管理模块4系统总共分五个模块。系统总体功能有。() 学生基本信息查询,学生基本信息的插入,修改,删除,而这些都必须只有系统管理员才能操作。() 学生成绩的查询。学生成绩的录入,修改,删除,这些只有相应的任课老师才可以操作。() 学生可以查询个人的课表。课程表的录入,修改,删除可以是班干部,辅导员,系统管理员完成。() 学生可以发表留言。而班干部,辅导员,任课教师,系统管理员可以查看留言。() 系统管理员拥有超级管理权限。可以修改所有的数据。() 班费管理模块用于确定交班费金额以及学生上交班费。() 贫困生管理模块用于
6、管理贫困生库信息。三 数据字典() 数据项字段名 字段类型 字段长度 说明与备注学号(sno) varchar 15 主键(学生学号)姓名(sname) varchar 20 学生姓名 not null性别(ssex) char 2 (男,女)检查约束,默认为男出生日期(sborn) datetime Not null 格式:YYYY-MM-DD身份证号(ID) varchar 20 Not null专业名(deptname) varchar 20 Not null专业方向(fangxiang) varchar 10 软件方向或网络方向 Not null专业编号(deptno) int 4 N
7、ot null联系电话(telephoneNumber)varchar 20入学日期(getCarDay) datetime Not null 格式:YYYY-MM-DD照片(photo) image民族(nation) varchar 10 Not null家庭出身(jiatin) varchar 6政治面貌(zhenzhi) varchar 6 Not null籍贯(jiguan) varchar 30 Not null家庭详细地址(address) varchar 45 Not null邮政编码(post) varchar 8 Not null 家中邮政编码学生信息备注 varchar
8、50 有关学生备注信息课程号(cno) int 4 主键课程名(cname) varchar 36 Not null先行课(preno) int 4 课程的先行课学分(xuefen) int 4 Not null教师号(teano) int 4 主键教师名(teaname) varchar 20 not null教师年龄(teaage) int 45工龄(teayear) int 42)数据流班务管理系统用户 用户登陆验证用户类型,用户名,密码验证错误验证通过学生班干部任课教师辅导员(管理员)学生操作数据流图6查询查询查询发表查询学生学生基本信息查询,修改成绩基本信息留言班费开支公告课程表综合
9、测评信息查询7班干部操作数据流图发布查询修改查询查看查询班干部学生基本信息查询,修改成绩基本信息留言班费开支公告课程表综合测评信息查询与修改班干部个人信息查询修改贫困生信息查询任课教师操作数据流图查看任课教师教师个人信息查询,修改学生基本信息查询学生成绩查询,修改公告留言课程表查看查询,修改班费交纳与支出数据流图8存档辅导员财务计划学生干部班会讨论学生班费规审批 讨论辅导员 班干部学生批准班主任下达学生批准通过班干部申请班费讨论 审批辅导员领取班费 存档5概念模型设计 (按数据库设计方法和规范化理论,从实践概括抽象出 ER 模型) 9m11mmn学生 课程辅导员班干部教师教授必修留言发表班费管
10、理学号性别分数姓名 年龄联系电话 留言 ID 发表者日期留言对象留言内容课程号课程名学分任课教师姓名性别年龄教师编号姓名年龄 联系电话reason经手人 金额原因日期交纳或支出贫困生 IDaddresssnoshouru106逻辑模型设计(按数据库设计方法和规范化理论得出符合 3NF 的逻辑模型,ER 图转化为相应的关系模式,设计数据库的逻辑模型)由 ER 图转化为关系模型实体转化为关系表学生实体转化为 student 表 student(sno,sname,ssex,sage,Sborn,ID,deptname,fangxiang,telephoneNumber,getcarday,phot
11、o,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,fage,fphonenum)留言实体 liuyin 表 liuyin(ID,sno,duixiang,content
12、,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也是外键。以上有下划线的为主键,有波线的为外键。117物理模型设计(存储记录结构设计,物理文件的安排和建立索引)1存储记录结构设计Student 表列名 类型 长度 约束 备注Sno Varchar 20 Primary key 学号Sname
13、varchar 20 Not null 姓名Ssex varchar 2 Check(男,女) 性别sborn Datetime not null 出生日期ID varchar 18 Not null 身份证号deptname Varchar 30 专业名Fangxiang Varchar 6 Check(软件,网络)专业方向telephone Varchar 15 手机号Getcarday Datetime Not null 入学日期Nation Varchar 8 Not null 民族 Jiatin Varchar 10 家庭出身zhenzhi Varchar 8 政治面貌Jiguan
14、Varchar 30 Not null 籍贯 address Varchar 50 Not null 地址Post Varchar 10 邮政编码Beizhu Varchar 30 备注课程表 course列名 类型 长度 约束 备注Cno Varchar 10 Primary key 课程号cname varchar 20 Not null 课程名Cpno varchar 10 先修课号Xuefen Int not null 学分Teano varchar 6 Not null 教师编号增加课程表 class列名 类型 长度 约束 备注ID Int 主键Cno Varchar 10 外键 课
15、程号fanxiang Varchar 15 课程性质address Varchar 30 Not null 上课地点Time1 Varchar 20 Not null 上课时间12教师表 teacher列名 类型 长度 约束 备注Teano Varchar 6 主键 教师编号Tname Varchar 15 姓名Teaage Int 年龄Teayear Int 教书年数zhichen Varchar 6 职称班干部表 bangan列名 类型 长度 约束 备注Bno Int 主键 班干部标识Bname Varchar 20sno Varchar 20 外键 学号Zhiwu Varchar 10
16、Not null 职务telphone Varchar 20 Not null 联系电话辅导员实体 fudao 表列名 类型 长度 约束 备注Fno Int 主键Fsex varchar 2 Check(男,女) 性别Fname Varchar 20 Not null 姓名Fage Int Not null 年龄fphonenum Varchar 20 联系电话Liuyin 表列名 类型 长度 约束 备注ID Int 主键 留言标识sno Varchar 20 外键 学号Duixiang Varchar 10 Not null 对象Content text Not null 内容riqi Da
17、tetime Not null 日期13班费表 banfei 表列名 类型 长度 约束 备注ID Int 主键Leixin Varchar 6 Not null 类型(交纳或支出)Sno Varchar 20 外键 学号Number Int Not null 金额Date1 datetime Not null 日期Reason varchar 10 (支出)原因Jinshou varchar 10 Not null 经手人姓名贫困生表 penkun 表列名 类型 长度 约束 备注Sno Varchar 20 主键(外键) 学号Reason text Not null 贫困原因Address V
18、archar 30 Not null 家庭住址shouru float Not null 家月人均收入Sc 表列名 类型 长度 约束 备注Sno Varchar 20 主键(外键) 学号Cno varchar 10 主键 外键 课程号Grade float Not null 分数Time1 Varchar 20 Not null 开课学期2 为了增加查询的效率建立如下索引(1) student(sname)(2) course(cno)(3) class(cno)(4) teacher(teano)(5) bangan(bname)(6) liuyin(duixiang)(7) banfei(
19、leixin)(8) sc(cno,sno)148实现(数据库结构设计的程序代码,基本操作的程序代码)实现该设计的环境为 Windows xp Perfessinal+MSSQLServer 20008.1 创建数据库和表建立数据库 classadminCreate database classadmin -创建数据库。On primary( Name=class_data, -数据文件逻辑名Filename=D:class_data.mdf, -数据文件物理文件名.Size=10, -数据文件的大小Maxsize=unlimited, -最大无限制Filegrowth=10% -文件大小增长
20、)Log on(Name=class_log, -日志文件逻辑文件名Filename=C:class_log.ldf, -日志文件物理文件名Size=5MB, -初使大小。Maxsize=100MB, -最大大小Filegrowth=3MB -文件增长)1. 建立 student 表Use classadmin -使用 classadmin 数据库GoCreate table student -创造表.(Sno varchar(20), -学号( 主键)Sname varchar(20) not null, -姓名不为空Ssex varchar(2) not null, -性别,不为空Sbor
21、n datetime not null, -出生日期 不为空ID varchar(18) not null, -身份证号 不为空Deptname varchar(30), -专业名Fangxiang varchar(6), -专业方向Telephone varchar(15), -手机号Getcarday datetime not null, -入学日期Nation varchar(8) not null, -民族Jiatin varchar(10), -家庭背景Zhenzhi varchar(8), -政治面貌Jiguan varchar(30) not null, -籍贯Address v
22、archar(50) not null, -地址Post varchar(30), -备注Constraint PK_sno primary key(sno), -主键约束Constraint CK_FX check(fangxiang in(软件, 网络), -方向检查约束Constraint ck_sex check(ssex in(男,女) -性别检查约束15)2 创建 course 表Create table course -创建表( Cno varchar(10), -课程号Cname varchar(20) not null, -课程名Cpno varchar(10), -先修课号
23、Xuefen int not null, -学分Teano varchar(6) not null, -教师编号Constraint PK_cno primary key(cno), -课程主键约束Constraint Fk_CP foreign key(cpno) references course(cno) -外键约束)3 创建 class 表Create table class -创建 class 表(ID int, -课表 IDCno varchar(10), -课程号Fanxiang varchar(15), -课程性质Address varchar(30) not null, -上
24、课地点Timel varchar(20) not null, -上课时间Constraint PK_ID primary key(ID), -主键约束Constraint FK_cno foreign key(cno) references course(cno) -外键约束)Teacher 表Create table teacher -创建教师表(Teano varchar(6), -教师编号Tname varchar(15),-姓名Teaage int, -年龄Teayear int, -教书年数Zhichen varchar(6), -职称Constraint PK_tno primar
25、y key(Teano), -主键约束)班干部表 banganCreate table bangan -创建班干表( Bno int, -班干部标识号Bname varchar(20), -姓名Sno varchar(20), -学号Zhiwu varchar(10) not null, -职务16Telephone varchar(20) not null, -联系电话Constraint PK_bno primary key(Bno), -主键约束Constraint FK_sno foreign key(sno) references student(sno) -外键)辅导员 fudao
26、 表Create table fudao(Fno int, -标识号Fsex varchar(2), -性别Fname varchar(20) not null, -姓名Fage int not null, -年龄Fphonenum varchar(20), -联系电话Constraint PK_fno primary key(fno), -主键约束Constraint CK_sex1 check(fsex in(男,女) -性别)留言表 liuyin 表Create table liuyin -留言表(ID int, -标识Sno varchar(20), -学号Douxiang varch
27、ar(10) not null, -对象Content text not null, -内容Riqi datetime not null -日期Constraint pK_id1 primary key(ID), -主键标识Constraint FK_sno1 foreign key(sno) references student(sno) -外键)班费表 banfei 表Create table banfei -创建班费表(ID int, -主键标识Leixin varchar(6), -类型(交纳或支出)Sno varchar(20), -事务办理学生学号Number int not nu
28、ll, -金额Date1 datetime not null, -日期Reason varchar(10), -支出原因Jinshou varchar(10) not null, -经手人姓名Constraint PK_id2 primary key(ID), -主键Constraint FK_sno2 foreign key(sno) references student(sno) -外键约束)17贫困生表 penkunCreate table penkun(Sno varchar(20) primary key, -贫困生学号Reason text not null, -贫困原因Addre
29、ss varchar(30) not null, -家庭住址Shouru float not null, -家中月人均收入Constraint FK_sno3 foreign key(sno) references student(sno) -外键约束)Sc 表Create table sc -创建 sc 表( Sno varchar(20), -学号Cno varchar(10), -课程号Grade float not null, -分数Time1 varchar(20) not null, -开课学期Constraint PK_SC primary key(sno,cno), -主键Co
30、nstraint FK_sno4 foreign key(sno) references student(sno),-外键Constraint FK_cno4 foreign key(cno) references course(cno) -外键)8.2 创建索引Create index stusname on student(sname) -建立 student 表上 sname 索引Create unique index coucno on course(cno) -建立 course 表上 cno 索引Create index clacno on class(cno) -建立 class
31、 表上 cno 索引Create index teateano on teacher(teano) -teacher 表上建立 teano 索引Create index banname on bangan(bname) -bangan 表上建立 bname 索引Create index liudui on liuyin(douxiang) -liuyin 表上建立 duixiang 索引Create index banxin on banfei(leixin) -banfei 上建立 leixin 索引Create index scno on sc (cno asc,sno desc) -sc
32、 上建立 cno,sno 索引.8.3 创建视图-创建视图-(1)方向为软件的同学的视图create view stusoftasselect * from student where fangxiang=软件18-(2)方向为网络的同学的视图create view stunetasselect * from student where fangxiang=网络-触发器设计-1Student 表上的出发器触发器:对于学生基本信息表,当学生信息修改时,其它表中若有对应的该信息时,应该对其进行修改;当学生信息删除时,对应的如 SC 表中的对应学生成绩信息也应该自动修改:-1)supdatecrea
33、te trigger supdate on studentfor updateasupdate scset sno=(select sno from inserted)where sc.sno=(select sno from deleted)update liuyinset sno=(select sno from inserted)where liuyin.sno=(select sno from deleted) update banfeiset sno=(select sno from inserted)where banfei.sno=(select sno from deleted
34、)update penkunset sno=(select sno from inserted)where penkun.sno=(select sno from deleted)-2)sdeletecreate trigger sdelete on studentfor deleteasdeletefrom sc where sc.sno=(select sno from deleted)deletefrom liuyin where liuyin.sno=(select sno from deleted)19deletefrom banfei where banfei.sno=(selec
35、t sno from deleted)deletefrom penkun where penkun.sno=(select sno from deleted)-3)scorecheckcreate trigger scoreCheckon scfor insert,updateas if update(grade)print AFTER 触发器开始执行begindeclare ScoreValue realselect ScoreValue=(select grade from inserted)if ScoreValue100 or ScoreValue=(select max(grade)
36、 from sc where cno=(select cno from course where cname=cname) 21drop procedure selectstumaxgrade结果: 命令已成功完成。-根据学号查询学生的信息create procedure selectofsno sno varchar(20)asselect * from student where sno=sno-查询某门课的平均分create procedure selectavgcno varchar(10)asselect avg(grade) from scgroup by cno having c
37、no=cno-统计班费支出情况create procedure selectoutasselect * from banfeiwhere leixin=支出-统计班费交纳情况create procedure selectoutasselect * from banfeiwhere leixin=交纳-统计网络方向的课表create procedure selenetasselect * from classwhere fanxiang=网络 or fanxiang=公共22-统计软件方向的课表create procedure selesoftasselect * from classwhere
38、 fanxiang=软件 or fanxiang=公共 测试1 实验方案设计(1)输入数据设计1) 插入学生信息;insert into student values(200708001301,王明,男,1988-1-12,430512198801121234,计算机科学技术,软件,18956352412,2007-9-1,汉族,干部,团员,湖南永州,湖南永州冷滩永和路 19 号,425101)结果: (所影响的行数为 1 行)其它的类似增加,增加数据后效果如下图。2)增加课程表信息insert into course(cno,cname,xuefen,teano) values(1,计算机网
39、络工程,3,1)结果: (所影响的行数为 1 行)233)增加课表 class 中信息insert into class(id,cno,fanxiang,address,timel) values(1,1,网络,C 座 201,星期二 5,6,7 节)结果: (所影响的行数为 1 行)4) 教师表 teacher 表insert into teacher(teano,tname,teaage,teayear,zhichen) values(1,段国云,28,9,讲师)结果: (所影响的行数为 1 行)5)班干部表 bangan insert into bangan(bno,bname,sno,
40、zhiwu,telephone) values(1,汪兰,200708001301,班长,13789563654)结果: (所影响的行数为 1 行)246) 辅导员表 fudao 表insert into fudao(fno,fsex,fname,fage,fphonenum) values(1,男,张新吾,23,13756428962)结果: (所影响的行数为 1 行)7) 留言表 liuyininsert into liuyin(ID,sno,douxiang,content,riqi)values(1,200708001301,宋老师,我觉得你讲课很有趣!,2009-11-9)结果: (
41、所影响的行数为 1 行)8) 班费管理表insert into banfei(ID,leixin,sno,number,date1,reason,jinshou)values(1,交纳,200708001302,50,2009-12-2,无,李小石)结果: (所影响的行数为 1 行)9) 贫困生表 penkun 表insert into penkun(sno,reason,address,shouru) values(200708001303,家中有事,湖南张家界,500)结果:(所影响的行数为 1 行)10)sc 表insert into sc(sno,cno,grade,time1)val
42、ues(200708001301,1,94,2009-2010 下学期)insert into sc(sno,cno,grade,time1)values(200708001301,2,89,2009-2010 下学期)insert into sc(sno,cno,grade,time1)values(200708001301,3,86,2009-2010 下学期)insert into sc(sno,cno,grade,time1)values(200708001302,1,93,2009-2010 下学期)结果: (所影响的行数为 1 行)(所影响的行数为 1 行)(所影响的行数为 1 行
43、)(所影响的行数为 1 行)-测试触发器insert into sc(sno,cno,grade,time1)values(200708001311,1,103,2009 第二学期)结果:AFTER 触发器开始执行25输入的分数有误,请确认输入的考试分数!(所影响的行数为 1 行)Update studentSet sno=200708001312Where sno=200708001301Delete from studentWhere sno=200708001312-测试存储过程1) Updatesc 200708001301,1,822)insert into sc(sno,cno,g
44、rade,time1) values(200708001302,4,52,2009 下学期)Selectstuendt_1结果:200708001302 王篮 XML2 45.03)selectstumaxgrade XML结果:200708001301 王明 2 XML89.04)selectofsno 200708001302结果:200708001302 王篮 女 1988-01-14 00:00:00.000 430524198801149867计科 网络 15116511234 2007-09-01 00:00:00.000 汉族 家民党员 湘潭 湘潭市羡水路 2 号 1652135
45、)selectavg 1结果:93.06)selenet26结果:1 1 网络 C 座 201 星期二 5,6,7 节2 3 公共 E 座 404 星期一 1,2 节实验3 4 公共 逸夫楼 511 星期一 3,4 节6 2 公共 逸夫楼 404 星期二 3,4 节,7 6 网络 E 座 107 星期三 1,2 节9 5 公共 逸夫楼 404 星期三 5,6 节,10 3 公共 逸夫楼 404 星期四 1,2,3 节7)selesoft结果:2 3 公共 E 座 404 星期一 1,2 节实验3 4 公共 逸夫楼 511 星期一 3,4 节4 7 软件 E 座 404 星期一 5,6,76 2
46、 公共 逸夫楼 404 星期二 3,4 节,8 7 软件 E 座 701 星期三 1,2 节9 5 公共 逸夫楼 404 星期三 5,6 节,10 3 公共 逸夫楼 404 星期四 1,2,3 节279实验总结(主要对本实验开发过程进行归纳和总结,还应包括在设计过程中所遇到的技术难点及解决方法,尚存在的问题以及进一步开发的见解与建议。) 本实验旨在开发一个实用,高效的能为班级班务管理服务的项目,但由于一些个人原因,开发并不是很顺利,项目不是很成功但基本还是实用。由于是初次综合使用数据库与软件工程的知识,而我是学的网络方向,所以对于软件工程的方法不是很清楚。所以对于流程图与 E-R 图画不怎么好
47、。我认为这个工程主要是一些插入,删除的日常事务,没有很多的事务处理过程。首先可以说虽然项目开发的不是很好,但我可以负责的说这些都是我们自己做的。我感受到得到了锻炼。在开发中,我碰到了一些问题,对于数据流图不够清楚。E-R 图中无法确定很多事务是否该做为实体。10参考文献1 数据库系统概论(第四版) 王珊,萨师煊 高等教育出版社2 SQL server 2000 数据库应用教程 邱李华,张玉花等编著 人民邮电出版社3 ASP.net +Sql server 数据库开发与实例 吴晨,张亮,张静编著 清华大学出版社4 SQL server 2000 管理与应用系统开发 北京邮电出版社5 小型商店管理系统的数据库技术应用 金继红, 王力;6 浅析数据库的查询优化和合理索引 罗海波; 王加阳;指导老师评语及得分: 签名: 年 月 日