数据库原理与应用
课程设计报告
题目: 学生成绩管理系统
学 校:
专业班级: 学生姓名: 学
号:
指导教师:
2012 年12
月
一 概述
1.1 目的与要求
随着科技的发展, 基本上所有的具有一定数量数据的机构都开始使用计算机数据库来做
管理。几乎所有学校也都已经在使用计算机管理数据的机制,
大大减少了学校学生成绩管理
数据库中要求包含学生的
通过 学以
的工作量。 该课程设计要求设计一个学生成绩的数据库管理系统,
基本信息, 学科基本信息,以及学生所学课程的考试成绩。要方便学生进行成绩查询, 该课程设计, 应该达到把数据库理论知识更加的巩固加深,
加强动手能力与实践能力,
致用,与现实生活中的应用充分的结合起来。
1.2 设计环境
Microsoft SQL Server 2005
二 需求分析
1.1 信息需求
高校学生的成绩管理工作量大、繁杂
, 人工处理非常困难。学生成绩管理系统借助于计
, 并提高了处理的准确性。 学生成绩管理
算机强大的处理能力 , 大大减轻了管理人员的工作量 系统的开发运用 , 实现了学生成绩管理的自动化
, 不仅把广大教师从繁重的成绩管理工作中
, 而且对学生成绩的判断和整理更合理、
解脱出来、把学校从传统的成绩管理模式中出来
更公正 , 同时也给教师提供了一个准确、清晰、轻松的成绩管理环境。
1.2 数据需求
能够进行数据库的数据定义、数据操纵、数据控制等处理功能
间要短。
, 进行联机处理的相应时
1.3 功能需求
具体功能应包括: 系统应该提供课程安排数据的插入、 删除、更新、查询;成绩的添加、修改、删除、查询,学生基本信息查询的功能。
1.4 安全性与完整性要求
需求分析内容: ① ②
一个学生可以选修多门课程, 一门课程可供多名学生选修; 程会有一个成绩。
一个教师教授多门课程,一门课程由一名教师教授。
一个学生选修一门课
2. 数据流图
3. 数据字典
数据项是数据库的关系中不可再分的数据单位,
以下分别列出了数据的名称、
数据类
型、长度、取值能否为空。利用 SQL Server 2005 建立“学生选课”数据库,其基本表清单及表结构描述如下:
1)课程信息 (course):
|课程号 (cno) char(10) primary key 定义为主键
|课程名 cname) char(10) 非空
|课时 (hour)
char(10) 非空
char(4)
非空
| 学分( credit)
2 学生信息 (student):
|学号 (sno) char(10) primary key 定义主键
|姓名 (sname) char(10) 非空
|性别 (ssex)char(2) 非空
|年龄 (sage) char(2) 非空
|专业 (smajor) char(10) 非空
|系别 (sdepart) char(10) 非空
3)成绩信息 (score ):
|学号 (sno) char(10) primary key 定义主键
|课程号 (cno)char(10) 非空
|成绩 (degree)char(10) 非空
|课程名 ( cname)char(10) 非空
三 概念结构设计阶段
概念结构设计阶段是整个数据库设计的关键, 它通过对用户需求进行综合、 归纳与抽象,形成一个于具体 DBMS的概念模型。
1. 数据库的局部 E-R 图
学生信息表
姓别
年龄
姓名
专业
学号系别
学生信息表
课程信息图
成绩图
课程信息表
课程号
课程名 课时 学分
成绩
成绩 课程号 学号 课程名
2. 数据库完整 E-R 图
性别
年龄
姓名
专业
系别
学号
学生信息 表
选课
成绩
课程信息表
课程号
课程名 课时 学分 成绩 课 程
学号 课
程
四 逻辑结构设计阶段
E-R 图向关系模型转化要解决的问题是如何将实体型和实体间的联系转化
为关系模式,如何确定这些关系模式的属性和码。
设计学生成绩管理数据库, 包括课程、 学生、成绩三个关系 , 其关系模式中对每个实体定义的属性如下:
课程信息表:(课程号,课程名,教师号,学分)
此为联系“课程信息表”所对应的关系模式。课程名为该关系的候选码。
学生信息表 :(学号,姓名,性别,年龄,专业,系别
)
此为联系“学生信息表”所对应的关系模式。学号为该关系的候选码。
成绩表:(学号,课程号,课程名,成绩)
此为联系“输入”所对应的关系模式。题目编号、管理号为该关系的候选码
数据库中包含 3 个表,即课程信息 (course),学生信息 (student ),成绩信息 (score )。
数据库中用到的表:
数据库表名 Student Course
关系模式名称 学生 课程 成绩
备注
学生学籍信息表 课程基本信息表 选课成绩信息表
Score
Student 基本情况数据表,结构如下: 字段名
Student _sno Student _sn Student _sex Student _depart Student_age
数据类型 Char char char char char char
约束控制 Primary key Not Null
‘男’或‘女’
说明 学号 姓名 性别 系别 年龄 专业
Student_major
course 数据表,结构如下: 字段名 course_cno course_cname course_hour
数据类型 char char int
numeric(2,1)
约束控制
主键( primary key ) not null not null not null
说明 课程号 课程名 课时 学分
course_score
score 情况数据表,结构如下: 字段名 score_cno course_sname student_sno score
数据类型 int char char int
约束控制 not null not null 外部键
说明 课程号 课程名 学号 成绩
五 数据库的物理设计
数据库物理设计的任务是为上一阶段得到的数据库逻辑模式,即数据库的逻辑结构选
择合适的应用环境的物理结构,
既确定有效地实现逻辑结构模式的数据库存储模式,
然后对该存储模式进行性能评价、
确定在
物理设备上所采用的存储结构和存取方法,
修改设计, 经
过多次反复, 最后得到一个性能较好的存储模式。
数据库物理设计内容包括记录存储结构的
设计,存储路径的设计。
1. 系统结构设计 1.1 系统功能模块
学生成绩管理系统
学生管理
课程管理
成绩管理 退出系统
学 生 管 理
学 生 查 询 课 程 管 理 课 程 查 询 成 绩 管 理 成 绩 查 询 退 出 系 统
六 数据库实施
创建数据库
create database STUDENT
创建表
在此学生成绩管理系统中需要创建三个表,即课程信息表、学生信息表和成绩表。
创建数据库后,为
STUDENT 数据库添加数据表,步骤如下。
( 1) 新建查询窗口
( 2) 在查询窗口中键入下列 SQL 语句
create table course(
cno char(10) primary key, cname char(10) not null, teano char(10) Not null credit char(4), Not null
)
执行上述 SQL 语句即可创建课程信息表相关表格
create table student(
sno char(10) primary key, sname char(10) not null, ssex char(2) not null, Sage char(2) not null, Major char(10) not null, Depart char(10) not null, )
执行上述 SQL 语句即可创建学生信息表相关表格
create table score( sno char(10), cno char(10),
cdegree char( 10), cname char(10),
执行上述 SQL 语句即可创建成绩表相关表格
学生信息相关表格
Sno 0901 0902 0903 0904 0905
sname 薛克强 陈波 宋丹丹 王恒文 沈网中
ssex 男 男 女 男 男
sage 22 23 20 22 20
major 软件 通信 会计 园林 软件
depart 计算机系 计算机系 金融系 土木系 计算机系
课程信息相关表格 Cno 0301 0302 0303 0304
cname C 语言 信号与系统 微积分 高等数学
tname 王月敏 杜鹃 王可 刘甸宝
credit 2 2.5 2.5 4
成绩信息表 Sno 0901 0902 0902 0903 0903
Cno 0303 0304 0301 0302 0304 0304
cdegree 90 84 81 79 85 94
cname 微积分 高等数学 C 语言 信号与系统 高等数学 高等数学
0904
七 数据库的运行和维护
1 、当试运行数据库合格后, 数据库开发设计的工作就基本完成了, 接下来就是正式运行
中的调试, 因为该系统比较简单,数据量小, 是需要做好数据的备份,在
数据库中几乎不会发生什么大的变化,但是还
SQL SERVER 中我们可以利用备份数据库的功能对已经设计好
我们便可轻松的利用备份文件恢复数据库
的数据做备份, 如果数据库受到破坏或系统故障,
的数据。当然也可以利用其他各种方法进行数据维护。
2 、数据操作数据库查询操作
A.单表查询:
( 1)查询 sno 为 09901 学生的 sname
select sname
from student where sno=' 0901'
结果:
( 2)查询 ssex 为’女 ’并且 sdepart 为 ’金融系 ’的
sname select sname
from student where ssex ='
sdepart ='
结果 :
女 ' and
金融系 '
( 3)查询所有学生的姓名和系别。
select sname,Depart
from student
结果 :
( 4)查询 Depart 为计算机系的 sname。
select sname
from student where Depart =' 结果 :
计算机系 '
( 5)查询所有学生所在院系名称
select distinct Depart
from student 结果:
( 6)查询学生信息表中年龄小于21 和年龄大于 21 的学生的姓名和系别 select
sname,Depart
from student
where sage>21 or sage<21 结果:
B.嵌套查询
查询选修了 0304 这门课的所有学生的学号、姓名、年龄、院系 Select sno,sname,sage,Depart From student Where sno in
(select sno From score
Where cno= ’0304 ’)
查询结果
3、数据库更新操作 A .插入数据
向 Student 表中添加一项记录: 姓名:杨昇昇,学号:
Insert Into
Student1
0907,性别:男,年龄: 22 专业:信息管理,系别:金融系
( Sno , Sname , Ssex ( '0907'
, ' 杨昇昇 ' ,
, sage , major
, depart
)
Values ' 男' , '22' , '
信息管理 ','金融系')
B.修改数据
修改的学号为
0908:
Update Student Set Sno=’0908’
Where Sname=’陈波 ’;
C .删除数据
删除所有金融学生的记录 Delete
from student
Where(depart= ’金融系 ’);
4、视图的操作:数据库视图的定义(创建和删除) 、查询和更新
A. 查询所有学生选课的信息,包括学号、姓名、课程号、课程名、成绩
view score1 create
as
select ' ,class.
student . sno ' 学号 ' ,student. , class
, score
sname ' 学生名 ' , class . cno ' 课程号
cname ' 课程名 ' , score . degree ' 成绩 '
and class
. cno = score . cno
from student where student Go 查询结果
. sno = score . sno
B.更新视图:
(1) 修改信息 :将宋丹丹的名字改为宋丹
Update score1
set 学生名 =' 宋丹丹 ' where 学生名 =' 宋丹 '
(2) 删除信息:删除视图 score1 中王恒文的记录
delete from score where
学生名 =' 王恒文 '
八 总结
设计心得
经过数据库的课程设计, 我对数据库的理解又加深了一步,
从简单的理论到实际上机操
作中的种种困难, 都必须自己去摸索和克服。 而当解决了困难以后, 我发现自己基本能将书 本上的章节都融会贯通了,从而也达到了复习的效果。
纵观整个设计, 要想完成一个数据库系统,
最重要的的是要彻底理解数据库设计的六个
基本步骤,及每个基本步骤要完成的任务,要实现的内容。此外,在设计整体和局部 图时, 实体和属性的选择,以及实体于实体间的联系时,
E-R
不断的研
都是在经过了几次修改,
究系统性能的情况下才完成的。
而这每一次的修改, 又牵动了后续的进行, 经过这样反复的
所以说一个好的系统是需要不断修改不断完善才
修改和思考, 才使得系统的模型基于成熟, 能成功的。
最后,此次的课程设计确实让我受益匪浅。
起码在已有的水平上, 我的理论与实践都有
了长足的进步。这对以后的设计也是一笔宝贵的财富。