
实 验 报 告
课程名称 数据库原理与应用D
实验学期 2012 至 2013 学年 第 2 学期
学生所在院部 计算机学院
年级 2011级 专业班级 信管B111班
学生姓名 林枕祥 学号 201107034116
任课教师 刘明艳
实验成绩
计算机学院制
《数据库原理与应用D》课程综合性实验报告
开课实验室:基础五 2013 年 6月 24日
| 实验题目 | 数据库设计与应用—学生系统的设计与实现 | ||||||||||
| 一、实验目的 (1) 培养学生数据库分析和设计能力; (2) 培养学生软件结构和功能模块分析能力; (3) 培养提高学生自学能力和进行软件开发能力; (4) 培养学生的创新意识和协作精神; (5) 培养学生文字论述规范、清晰、严谨的能力。 二、设备与环境 硬件:多媒体计算机 软件:Windows 2003操作系统,SQL Server 2008 数据库管理系统,应用程序开发环境Tomcat6.0,EditPlus, JSP 三、实验内容 (一)、设计学生选课系统数据库 1、学生选课系统的整体框架,该系统主要分成了六个模块,对应了界面的六个小功能,每个模块由单独的页面构成,同时通过导航栏上的导航条来实现页面间的连接以及页面间的跳转。 2、E-R图 ER图指的是实体-联系图用来建立数据模型,在数据库系统概论中属于概念设计阶段,形成一个于机器,于DBMS的ER图模型。ER图提供了表示实体(即数据对象)、属性和联系的方法,用来描述现实世界的概念模型,该学生选课系统的各个实体与属性间的联系如图所示。 系统E-R图 3、各个数据表 本数据库共创建了7张表,其建表语句和表的信息如下。 (1)建立教师信息表(jiaoshi) 列名 | 数据类型 | 主外键 | 是否空值 | ||||||||
| tno | char(8) | 主键 | not null | ||||||||
| tname | Varchar(10) | null | |||||||||
| tsex | char(2) | null | |||||||||
| zhicheng | char(20) | null | |||||||||
| dept | char(20) | null | |||||||||
| tel | char(11) | null | |||||||||
(
tno char(8) primary key not null,
tname varchar(10),
tsex char(2) default'女',
zhicheng char(20),
dept char(20),
tel char(11)
)
(2)建立选修课程信息表(xuanke)
| 列名 | 数据类型 | 主外键 | 是否空值 |
| cno | char(8) | 主键 | not null |
| cname | char(60) | Not null | |
| cscore | int | null | |
| ctime | int | null |
(
cno char(8) primary key not null,
cname char(60) not null,
cscore int,
ctime int
)
(3)建立教师授课表(shouke)
| 列名 | 数据类型 | 主外键 | 是否空值 |
| tno | char(8) | 主键 | not null |
| cno | char(8) | null |
(
tno char(8) primary key not null,
cno char(8)
)
(4)建立院系表(department)
| 列名 | 数据类型 | 主外键 | 是否空值 |
| dno | char(8) | null | |
| professional | Varchar(10) | 主键 | not null |
(
dno char(30) not null,
professional char(40) not null primary key ,
)
(5)建立学生信息表(xuesheng)
| 列名 | 数据类型 | 主外键 | 是否空值 |
| sno | char(12) | 主键 | not null |
| sname | Varchar(10) | null | |
| sex | char(2) | null | |
| age | char(2) | null | |
| professional | char(40) | 外键 | not null |
(
sno char(12) primary key not null,
sname varchar(10),
sex char(2) default'男',
age char(2),
professional char(40) not null foreign key references department(professional)
)
(6)建立查询分数表(score)
| 列名 | 数据类型 | 主外键 | 是否空值 |
| sno | char(12) | 主键 | not null |
| cno | Varchar(10) | null | |
| score | char(2) | 主键 | not null |
(
sno char(12) not null foreign key references xuesheng(sno),
cno char(8) not null foreign key references xuanke(cno),
score int,
primary key(sno,cno)
)
(7)学生与选课关系表(xkhexuan)
| 列名 | 数据类型 | 主外键 | 是否空值 |
| sno | char(12) | 主键 | not null |
| Cno | char(4) | null |
(
sno char(12) primary key not null,
Cno char(4)
)
4、数据流图建立
查询查询查询查询
5、建立Student视图(学号,姓名,课程,分数)
create view Student
as select score.sno,xuesheng.sname,score.cno,xuanke.cname,score.score
from xuesheng,score,xuanke
where xuesheng.sno=score.sno and xuanke.cno=score.cno
group by score.sno,score.cno,xuesheng.sname,score.score,xuanke.cname
6、存储过程
(1)、 建立查询教师的存储过程
create procedure Search1
(
@TNAME char(40)
)
as
select tno,tname,tsex,zhicheng,dept,tel
from jiaoshi
where tname=@TNAME
exec Search1 '刘明燕'
(2)、建立查询学生信息的存储过程
create procedure Search2
(
@SNO char(12),
@SNAME char(40)
)
as
select * from xuesheng
where @SNO=sno and @SNAME=sname
exec Search2 ‘201107014101’ , ‘郭星星’
7、触发器的建立
create trigger Insert3
on xuesheng
for insert
as
select * from xuesheng
create procedure Insert4
(
@sno char(12),
@sname char(40),
@sex char(2),
@age char(2),
@professional char(40)
)
as
insert into xuesheng values(@sno,@sname,@sex,@age,@professional)
Exec Insert4@sno=201107034131,@sname='齐文艳',
@sex='女',@age=22,@professional='信息管理与信息系统'
(二)、开发应用程序
(1)、选课查询
select xuesheng.sno,sname,professional,xuanke.cno,cname
from xuesheng,xhexuan,xuanke
where xuesheng.sno=xhexuan.sno and xuanke.cno=xhexuan.cno and
xuesheng.sno=201107034109
Groupby xuesheng.sno,sname,xuanke.cno,cname,professional
(2)、分数查询
select score.sno,xuesheng.sname,score.cno,xuanke.cname,score.score
from xuesheng,score,xuanke
where xuesheng.sno=score.sno and xuanke.cno=score.cno
group by score.sno,score.cno,xuesheng.sname,score.score,xuanke.cname
(3)、教师信息查询
select jiaoshi.tno,tname,tsex,zhicheng,dept,tel,shouke.cno,cname
from jiaoshi,shouke,xuanke
where jiaoshi.tno = shouke.tno and xuanke.cno=shouke.cno
(4)、删除
delete form xhexuan
where sno=201107034101
(5)、查询
select xuesheng.sno,xuanke
from xuesheng,xhexuan
where xuesheng.sno=xhexuan.sno
group by xuesheng.sno ,xuanke
四、实验结果及分析
经过一学期的学习我们对数据库系统原理及其应用有了大致和基础的理解,但也只是停留在理论层面,在这次的综合性实验,我选的题目是学生选课管理系统,在设计该系统时我觉得应该注意以下几个方面:
首先要知道自己设计的系统要实现的功能有那些,在选课系统里,我设计了六个功能,分别是学生登入,学生选课,学生退选课程,学生查看选课结果,学生查看选修课成绩和教师信息的查询,只有在知道自己设计的系统要实现的功能后才会有思路进一步的设计系统,否则就只会一头雾水。在做这个综合性实验的时候前台我采用的JSP,在写JSP代码时,我觉得要想考虑好你网页要显示的效果,然后再进一步的编写,当然前台界面的编程语言你可以根据自己的水平或你熟悉的语言如C#,JAVA,JSP,PHP,ASP,C++等等都行,主要看自己精通哪一门语言。
同时,在设计数据库时要认真的考虑,因为数据库的设计是衡量一个系统好坏的一个重要的标准,即在设计数据库时必须搞好各个表之间的关系,对数据进行认真分析,包括建立相关的约束,主键,外键,默认和规则等,方便在写SQL语句时调用,同时要学会用E-R图来帮助分析,因为E-R图可直观的表现各个实体之间的联系,通过E-R图我们可以清晰地看见实体的相关属性,同时根据图我们也可以更好的设计相关的表。
| 这次的数据库综合性实验,巩固了我在课堂上所学的理论知识,让我在实践上得到了应用,进一步锻炼了我分析和解决问题的能力。同时也让我从应用和实践领域方面深入了解了SQL。它是一门交互式、简洁、易学、易用的语言,在以后的学习过程中,要多去学习,同时我们在设计的时候需要对事物多加考虑,对问题全面考虑,要把问题更加的完善,不能想到什么就做什么,一定要在动手之前做好充分的准备,这样才可以做到事半功倍。 | |||||||||||
| 教 师 评 价 | 评定项目 | A | B | C | D | 评定项目 | A | B | C | D | |
| 算法正确 | 界面美观,布局合理 | ||||||||||
| 程序结构合理 | 操作熟练 | ||||||||||
| 语法、语义正确 | 解析完整 | ||||||||||
| 实验结果正确 | 文字流畅 | ||||||||||
| 报告规范 | 题解正确 | ||||||||||
| 其他: 评价教师签名: 年 月 日 | |||||||||||
