课程管理系统数据库设计与实现.docx

上传人:b****4 文档编号:24537335 上传时间:2023-05-28 格式:DOCX 页数:33 大小:187.70KB
下载 相关 举报
课程管理系统数据库设计与实现.docx_第1页
第1页 / 共33页
课程管理系统数据库设计与实现.docx_第2页
第2页 / 共33页
课程管理系统数据库设计与实现.docx_第3页
第3页 / 共33页
课程管理系统数据库设计与实现.docx_第4页
第4页 / 共33页
课程管理系统数据库设计与实现.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

课程管理系统数据库设计与实现.docx

《课程管理系统数据库设计与实现.docx》由会员分享,可在线阅读,更多相关《课程管理系统数据库设计与实现.docx(33页珍藏版)》请在冰豆网上搜索。

课程管理系统数据库设计与实现.docx

课程管理系统数据库设计与实现

大学课程设计报告

 

课程设计题目:

“课程管理系统”数据库设计与实现

 

学院:

专业班级:

年级:

姓名:

学号:

完成时间:

年月日

成绩:

指导教师:

2.2E-R模型向关系模型的转换

3.2创建索引

3.3授予权限

 

正文

一、需求分析

1.近年来,随着各大高校的规模不断扩大,生源的急剧增加,有关学生的各种信息量也成倍增长。

面对庞大的信息量,需要建立一个课程管理系统来提高管理质量,让老师减轻工作量,提高工作效率。

建立课程管理系统就是为了实现信息的规管理、科学统计和快速查询,从而减少管理面的工作量。

课程管理系统主要提供教师、学生的学籍管理、成绩管理和课程管理功能。

2.需求功能分析:

教师和学生的登录

学生学籍的添加、修改、删除、查询

课程管理的添加、修改、删除、查询

教师授课的安排

3.用户需求分析

用户的需求具体体现在各种信息的提供、保存、更新、查询面,这就要求数据库机构能充分满足各种信息的输入和输出。

收集基本数据、数据结构以及数据处理流程,组成一份详尽的数据字典,为后面的具体设计打下基础。

针对课程管理系统的需求,通过对课程管理系统的设计和数据流程的分析,设计如下所示的数据项和数据存储表:

登录信息:

包括用户号、密码、权限

学籍信息:

包括用户号、姓名、性别、出生日期、班级、入学日期、家庭住址、

课程信息:

包括课程号、课程名、类型、教师名

4.统的总体结构设计

该系统共有三个模块:

登陆模块、学籍管理模块、课程信息模块。

这几个模块同时还包括数据添加、数据修改、数据删除、数据查询等几个基本操作。

(1)登录模块在登录界面中教师和学生可登录。

在登录界面中分别填入用户名、密码和身份,然后按确认键登录。

如果填入信息有误则弹出错误信息的提示窗口,重新返回登陆窗口。

如果填入信息正确则要根据登录信息表中登录者的权限(“0”或“1”)分别进入教师(“1”)或学生(“0”)管理系统主界面。

(2)学籍管理模块该模块主要完成学生基本信息的添加、修改、删除、查询等功能。

根据登录时权限的判断,权限为“0”时,是学生进入该模块,只可对自己的学籍进行查询,添加、修改、删除功能不可用;权限为“1”时,教师进入该模块,此时可进行所有学生学籍的查询、添加、修改、删除,在此模块中定义了8个数据来进行学生的信息存储,如果修改某个记录,可单击修改按钮进行数据的编辑,此时界面数据容和数据库容将同时更新。

(4)课程管理模块该模块主要完成存储课程的所有信息的添加、修改、删除、查询等功能。

根据登录时权限的判断,权限为“0”时,学生进入该模块,只可进行课程查询,添加、修改、删除功能不可用;权限为“1”时,教师进入该模块,可进行查询、添加、修改、删除,在此模块中定义了6个数据来进行课程的信息存储,如果修改某一纪录,可单击修改单按钮进行课程记数据的编辑,此时界面数据容和数据库容将同时更新。

2、概念设计

数据字典

1

数据项名

数据类型

长度

注明

学生学号

字符型

10

6位十进制数

学生姓名

字符型

8

年龄

字符型

16

籍贯

字符型

8

学生出生地

入学时间

日期型

教室编号

字符型

10

以A,B,C,D开头,后接4位十进制数

教室所属校区

字符型

10

A,B,C,D

教学楼

字符型

8

管理员代码

字符型

20

6位十进制数

管理员姓名

字符型

8

管理员

字符型

20

课程代码

字符型

8

4位十进制数

学院代码

字符型

10

2位十进制数

课程名

字符型

8

课程人数

数值型

课程所属校区

字符型

10

A,B,C,D

班级代码

字符型

10

4位十进制数

专业代码

字符型

10

2位十进制数

班级名

字符型

8

班级学生数

数值型

学院代码

字符型

10

2位十进制数

专业名

字符型

8

学院名

字符型

10

学院人数

字符型

10

教工号

字符型

10

6位十进制数

教师姓名

字符型

8

教师

字符型

20

教师

字符型

30

课程管理系统数据库中的E-R图

3、逻辑设计

将上面的E-R图转化为如下关系模型,下划横线代表关系的主键:

学生(学号,姓名,年龄,籍贯,入学时间,专业代码,班级代码,学院代码)

班级(班级代码,专业代码,班级名,学生数)

专业(专业代码,学院代码。

专业名称)

学院(学院代码,学院名,学员人数)

教师(教工号,教师姓名,教师,教师)

从属(加工号,学院代码)

课程(课程代码,学院代码,课程名,人数,学分)

管理员(管理员代码,管理员姓名,管理员,管理员)

教室(教室编号,所属校区,教学楼)

安排(课程代码,教工号,教室编号,管理员代码,上课时间)

分配(学号,教室编号)

选择(学号,课程代码)

二、转化后的关系模型如图:

三、数据库实现

1、数据库视图的创建

1)创建一个学号为20105263的学生的查询视图;

Createview学生信息(学生学号,所选课程名称,所在班级代号,老师姓名,上课教室)

as

select学生学号,课程名,班级代码,教师姓名,教室编号

from学生,课程,班级,教师,教室

where学生.班级代码=班级.班级代码and学生.学院代码=学院.学院代码

2)创建一个教工号为5132的教师的查询视图;

Createview教师信息(所教课程名称,所教班级代号,所属学院,上课教室)

as

select课程名,班级代码,学院,教室编号

from课程,班级,学院,教室,教师

where教师.教工号=‘5132’;

3)创建一个管理员的查询视图

Createview管理员视图(课程名称,老师姓名,学生姓名,教室编号)

as

select课程名,教师姓名,学生姓名,教室编号

from课程,教师,学生,教室;

 

2、索引的创建

我们可以在视图学生信息中的”学号列”上创建一个索引

Createdindexstu_indexon学生信息(学号)。

3、权限管理,安全性设计

授予权限

1.给学生一个可以查看课程安排的权限

Grantselecton安排to学生

2.给教师一个可以查看学生选择课程情况的权限

Grantselecton选择to教师

3.给教师一个可以查看课程安排的权限

Grantupdateon安排to教师

4.给学生一个可以查看自己的选课的权限

Grantselecton选择to学生

4.给管理员一个可以查看课程安排的权限

Grantselecton安排to管理员

6.给管理员一个删除教师和学生所选课程的权限

Grantupdateon课程to管理员

 

代码附录

ifexists(select1fromsys.sysforeignkeywhererole='FK_分配_分配_学生')then

altertable分配

deleteforeignkeyFK_分配_分配_学生

endif;

ifexists(select1fromsys.sysforeignkeywhererole='FK_学生_属于_班级')then

altertable学生

deleteforeignkeyFK_学生_属于_班级

endif;

ifexists(select1fromsys.sysforeignkeywhererole='FK_学生_所在_专业')then

altertable学生

deleteforeignkeyFK_学生_所在_专业

endif;

ifexists(select1fromsys.sysforeignkeywhererole='FK_学生_所属_学院')then

altertable学生

deleteforeignkeyFK_学生_所属_学院

endif;

ifexists(select1fromsys.sysforeignkeywhererole='FK_选择_选择_学生')then

altertable选择

deleteforeignkeyFK_选择_选择_学生

endif;

dropindexifexists学生.所属_FK;

dropindexifexists学生.所在_FK;

dropindexifexists学生.属于_FK;

dropindexifexists学生.学生_PK;

droptableifexists学生;

/*==============================================================*/

/*Table:

学生*/

/*==============================================================*/

createtable学生

学号varchar(10)notnull,

专业代码varchar(10)notnull,

班级代码varchar(10)notnull,

学院代码varchar(10)notnull,

学生姓名varchar(8)null,

年龄varchar(16)null,

籍贯varchar(8)null,

入学时间timestampnull,

constraintPK_学生primarykey(学号)

);

/*==============================================================*/

/*Index:

学生_PK*/

/*==============================================================*/

createuniqueindex学生_PKon学生(

学号ASC

);

/*==============================================================*/

/*Index:

属于_FK*/

/*==============================================================*/

createindex属于_FKon学生(

班级代码ASC

);

/*==============================================================*/

/*Index:

所在_FK*/

/*==============================================================*/

createindex所在_FKon学生(

专业代码ASC

);

/*==============================================================*/

/*Index:

所属_FK*/

/*==============================================================*/

createindex所属_FKon学生(

学院代码ASC

);

altertable学生

addconstraintFK_学生_属于_班级foreignkey(班级代码)

references班级(班级代码)

onupdaterestrict

ondeleterestrict;

altertable学生

addconstraintFK_学生_所在_专业foreignkey(专业代码)

references专业(专业代码)

onupdaterestrict

ondeleterestrict;

altertable学生

addconstraintFK_学生_所属_学院foreignkey(学院代码)

references学院(学院代码)

onupdaterestrict

ondeleterestrict;

ifexists(select1fromsys.sysforeignkeywhererole='FK_学生_属于_班级')then

altertable学生

deleteforeignkeyFK_学生_属于_班级

endif;

ifexists(select1fromsys.sysforeignkeywhererole='FK_班级_包含_专业')then

altertable班级

deleteforeignkeyFK_班级_包含_专业

endif;

dropindexifexists班级.包含_FK;

dropindexifexists班级.班级_PK;

droptableifexists班级;

/*==============================================================*/

/*Table:

班级*/

/*==============================================================*/

createtable班级

班级代码varchar(10)notnull,

专业代码varchar(10)notnull,

班级名varchar(8)null,

学生数integernull,

班主任char(10)null,

constraintPK_班级primarykey(班级代码)

);

/*==============================================================*/

/*Index:

班级_PK*/

/*==============================================================*/

createuniqueindex班级_PKon班级(

班级代码ASC

);

/*==============================================================*/

/*Index:

包含_FK*/

/*==============================================================*/

createindex包含_FKon班级(

专业代码ASC

);

altertable班级

addconstraintFK_班级_包含_专业foreignkey(专业代码)

references专业(专业代码)

onupdaterestrict

ondeleterestrict;ifexists(select1fromsys.sysforeignkeywhererole='FK_专业_含有_学院')then

altertable专业

deleteforeignkeyFK_专业_含有_学院

endif;

ifexists(select1fromsys.sysforeignkeywhererole='FK_学生_所在_专业')then

altertable学生

deleteforeignkeyFK_学生_所在_专业

endif;

ifexists(select1fromsys.sysforeignkeywhererole='FK_班级_包含_专业')then

altertable班级

deleteforeignkeyFK_班级_包含_专业

endif;

dropindexifexists专业.所属_FK;

dropindexifexists专业.专业_PK;

droptableifexists专业;

/*==============================================================*/

/*Table:

专业*/

/*==============================================================*/

createtable专业

专业代码varchar(10)notnull,

学院代码varchar(10)notnull,

专业名varchar(8)null,

constraintPK_专业primarykey(专业代码)

);

/*==============================================================*/

/*Index:

专业_PK*/

/*==============================================================*/

createuniqueindex专业_PKon专业(

专业代码ASC

);

/*==============================================================*/

/*Index:

所属_FK*/

/*==============================================================*/

createindex所属_FKon专业(

学院代码ASC

);

altertable专业

addconstraintFK_专业_含有_学院foreignkey(学院代码)

references学院(学院代码)

onupdaterestrict

ondeleterestrict;ifexists(select1fromsys.sysforeignkeywhererole='FK_安排_安排_课程')then

altertable安排

deleteforeignkeyFK_安排_安排_课程

endif;

ifexists(select1fromsys.sysforeignkeywhererole='FK_课程_开设_学院')then

altertable课程

deleteforeignkeyFK_课程_开设_学院

endif;

ifexists(select1fromsys.sysforeignkeywhererole='FK_选择_选择2_课程')then

altertable选择

deleteforeignkeyFK_选择_选择2_课程

endif;

dropindexifexists课程.开设_FK;

dropindexifexists课程.课程_PK;

droptableifexists课程;

/*==============================================================*/

/*Table:

课程*/

/*==============================================================*/

createtable课程

课程代码varchar(8)notnull,

学院代码varchar(10)notnull,

课程名varchar(8)null,

人数integernull,

所属校区varchar(10)null,

constraintPK_课程primarykey(课程代码)

);

/*==============================================================*/

/*Index:

课程_PK*/

/*==============================================================*/

createuniqueindex课程_PKon课程(

课程代码ASC

);

/*==============================================================*/

/*Index:

开设_FK*/

/*==============================================================*/

createindex开设_FKon课程(

学院代码ASC

);

altertable课程

addconstraintFK_课程_开设_学院foreignkey(学院代码)

references学院(学院代码)

onupdaterestrict

ondeleterestrict;ifexists(select1fromsys.sysforeignkeywhererole='FK_专业_含有_学院')then

altertable专业

deleteforeignkeyFK_专业_含有_学院

endif;

ifexists(select1fromsys.sysforeignkeywhererole='FK_从属_从属2_学院')then

altertable从属

deleteforeignkeyFK_从属_从属2_学院

endif;

ifexists(select1fromsys.sysforeignkeywhererole='FK_学生_所属_学院')then

altertable学生

deleteforeignkeyFK_学生_所属_学院

endif;

ifexists(select1fromsys.sysforeignkeywhererole='FK_课程_开设_学院')then

altertable课程

deleteforeignkeyFK_课程_开设_学院

endif;

dropindexifexists学院.学院_PK;

droptableifexists学院;

/*================================

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1