文档库

最新最全的文档下载
当前位置:文档库 > 某高校选课系统数据库课程设计

某高校选课系统数据库课程设计

信息工程学院

《数据库应用系统开发》课程设计报告题目:某高校选课系统数据库课程设计

学号:

专业班级:

姓名:

完成日期:2015-12-24

摘要

在计算机日益普及的今天,对个人而言若采用一套行之有效的高校选课系统来管理学生选课信息,会方便许多。为了便于选课信息的管理需要有效的信息管理软件,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,达到提高选课管理效率的目的。采用数据库技术生成的高校选课管理系统将会极大地方便全体师生。基于这个问题,开发了某高校选课系统。本文通过作者设计和开发一个中小型高校选课管理系统的实践,阐述了高校选课信息管理软件中所应具有的基本功能、设计、实现。

关键字:选课;人员管理;信息维护;

目录

1.引言 (1)

2. 需求分析阶段 (1)

2.1 引言 (1)

2.2 需求分析阶段的目标与任务 (2)

2.2.1处理对象 (2)

2.2.2处理功能及要求 (2)

2.2.3.安全性和完整性要求 (2)

2.3 需求分析阶段成果 (2)

3 概念设计阶段 (7)

3.1 引言 (7)

3.2 任务与目标 (7)

3.3 阶段结果 (7)

4.逻辑设计阶段 (9)

4.1逻辑设计的任务和目标 (9)

4.2数据组织 (9)

4.2.1将E-R图转换为关系模型 (9)

4.2.2模型优化 (10)

4.2.3数据库模式定义 (10)

4.2.4用户子模式定义 (11)

5.物理设计阶段 (13)

5.1物理设计阶段的目标与任务 (13)

5.2数据存储方面 (13)

6.数据库实施阶段 (13)

6.1建立数据库、数据表、视图、索引 (13)

6.1.1 建立数据库 (13)

6.1.2 建立数据表 (13)

6.1.3 建立视图 (13)

6.1.4 建立索引 (15)

6.1.5 建立触发器 (15)

6.2数据入库 (18)

6.3创建各个功能的存储过程 (18)

7.系统调试和测试 (18)

8.实习心得 (20)

9.存在的问题及建议 (21)

参考文献 (21)

1.引言

随着无纸化办公的普遍实现,信息的自动处理以及网络是的信息交互方式已经被人们广泛应用。让计算机来管理学生信息是现在各个高校的基本工作,也慢慢演变成高校教学管理工作必不可少的一部分。网上选课方式相比传统更加的节约资源,增加了学生选课的自主权,也减少了教师不必要的工作量。

学生选课系统作为一种现代化的教学技术,越来越受到人们的重视,是学校很重要的一部分。学生选课系统就是为了管理好选课信息而设计的。学生选课系统使选课变得更加规范化、系统化、程序化,避免了重复,提高信息的正确性、办事效率的高速化,能够准确、及时、有效的查询和修改学生选课情况。

为了缩短借阅者的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到提高图书借阅信息管理效率的目的,采用数据库技术生成的图书馆借阅管理系统将会极大地方便借阅者并简化图书馆管理人员和工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中。

本文以高校学生选课管理系统开发过程为背景,全文分为目录、需求分析、概要设计、逻辑设计、物理设计,以及系统的实现等全过程。在程序设计与调试上采用了自上而下,逐步细化,逐步完善的原则。采用结构化的功能模块设计系统功能,可读性好,易于扩充。基本功能全面,系统可读性好,易于维护、更新,安全性好。

2. 需求分析阶段

2.1 引言

进行系统设计,首先要对系统的现状进行分析。根据系统的目标、需求和功能,制定和选择一个较好的系统方案,从而达到一个合理的优化系统。每个学校都需要一个学生选课管理系统,以前因网络使用的不普遍,人们都是人工管理选课信息,工作量庞大而且信息统一出错,且极具不方便,随着网络的发展,师生们迫切希望建立一个高校学生选课管理系统,是为了这一问题,从而达到系统化、规范化、标准化的水平。该系统的建立不但给学生带来了方便,也节省了教师工作时间从而提高了工作效率。

需求分析是在于要弄清用户对开发的数据库应用系统的确切要求。数据库设计的第一步是明确数据库的目的和如何使用,也就是说需要从数据库中得到哪些信息。明确目的之后,就可以确定您需要保存哪些主题的信息(表),以及每个主题需要保存哪些信息(表中字段)。

在构造系统时,首先从需求出发构造数据库表,然后再由数据库表结合需求划分系统功能模块。这样,就把一个大的系统分解成了几个小系统。这里把系统的层次划分为了四个部分:学生信息,教师信息,课程信息,专业信息。能够实现以下功能:○1实现学生、选课信息管理;

②实现教师及任课信息管理;

③实现选课登记,要保证学生不能选修重复的课程;

④统计各学生指定学期选修课程的总学分数;

2.2需求分析阶段的目标与任务

2.2.1处理对象

学生:学号,专业号,姓名,性别,出生年月日,密码

教师:教师工号,系号,姓名,出生年月日,密码,权限

专业:专业号,系号,专业名

院系:系号,院系名,系主任,联系方式

课程:课程号,课程名,老师编号,学时,学分,开课周,结课周

选课信息:学号,课程号,成绩

管理员:编号,姓名,性别,出生年月日,密码

2.2.2处理功能及要求

1.能够存储一定数量的选课信息,并方便有效的进行相应的选课信息数据操作和管理,这主要包括:

1)学生:选课、退选、查询选课信息;

2)教师:学生成绩录入,查询选课信息;

3)管理员:新建教师、学生账户,添加老师、学生信息;

2.能够提供一定的安全机制,提供数据信息授权访问,防止随意删改、查询。

3.对查询、统计的结果能够列表显示。

2.2.

3.安全性和完整性要求

1)安全性要求

系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。

2)完整性要求

系统完整性要求系统中数据的正确性以及相容性。可通过建立主、外键,使用check 约束,或者通过使用触发器和级联更新。

2.3 需求分析阶段成果

2.3.1 体会与收获

系统需求分析主要是通过对本校教务处选课系统老师的咨询,了解我校选课系统的管理规则和运行机制,并通过上网搜索有关高校选课管理系统的知识,以及在管理中的一些问题。由于是第一次做这样的需求调查,开始总是觉得无从下手,不知道自己该了解、该清楚那些方面的知识,在绘制系统业务流程图时,也遇到了很多的问题,但通过老师的帮助与指导,和自己一遍一遍的分析和完善,才逐步把业务弄清楚,最终顺利完成了需求分析阶段的任务。

2.3.2 选课系统功能图

某高校选课系统数据库课程设计

基本信息的查询和更新模块具体的功能模块图如下:

某高校选课系统数据库课程设计

具体系统功能实现模块图:

某高校选课系统数据库课程设计

2.3.4 选课管理系统数据字典

(a)数据项:系统涉及的数据项有30项

表1.1 数据项列表

存储结构别名

数据项编号数据项名数据项含义与其它数据项的关

DI-1 Sid 学号同Jid char(9) 学生学号DI-2 Sname 姓名char(10) 学生姓名DI-3 Ssex 性别char(20) 学生性别DI-4 Sbirth 出生年char(8) 学生出生

数据项编号数据项名数据项含义与其它数据项的关

存储结构别名

DI-5 Spassword 密码char(20) 学生密码DI-6 S_control 控制int 控制

DI-7 Cid 课程号同Tid Date 课程号DI-8 Jid 专业号同Did char(20) 专业

DI-9 Cname 课程名char (200) 课程名DI-10 Ctime 课时char (30) 课时

DI-11 Cstar 开始周char (5) 开始周DI-12 Cend 结束周char(10) 结束周DI-13 grade 成绩char(5) 成绩

DI-14 Tid 教师编号同Did char(9) 教师编号DI-15 Tname 姓名char(10) 教师姓名DI-16 Tsex 性别char(2) 教师性别

DI-17 Tbirth 出生年char (9) 教师出生年

DI-18 Tpassword 密码char(5) 教师密码DI-19 limits 权限char(20) 教师权限DI-20 Jname 专业名char(20) 专业名DI-21 Did 系号char(5) 系号

DI-22 Dname 系名char(20) 系名

DI-23 Dboss 系主任Date 系主任DI-24 Dbname 姓名Date 姓名

DI-25 Dbcall 联系电话Date 联系电话

DI-26 Mid 管理员编号Date 管理员编

DI-27 Mname 姓名char(3) 管理员姓

DI-28 Msex 性别char(8) 管理员性

DI-29 Mcall 联系电话char(5) 管理员联

系电话

DI-30 Mpassword 密码char(20) 管理员密

(b)数据结构:

表1.2 数据结构列表

数据结构编号数据结构名

数据结构

含义

组成

SC-1 Student 学生信息Sid,Sname,Ssex,Sbirth,Spassword,Jno

SC-2 Course 课程信息Cid,Cname,Ctime,Cgrade,Cstar,Cend,Tid SC-3 SC 选课信息Sid,Cid,grade

SC-4 Teacher 教师信息Tid,Tname,Tsex,Tbirth,Tpassword,Dno,limits SC-5 J 专业信息Jid,Jname,Did

SC-6 Department 院系信息

Did,Dname,Dboss,Dbname,Dbcall

SC-7 Manager 管理员信息

Mid,Mname,Msex,Mbirth,Mpassword

SC_8 select_T 控制

S_control

2.3.5 处理逻辑描述

表1.3 处理逻辑列表

某高校选课系统数据库课程设计

3 概念设计阶段

3.1 引言

系统开发的总体目标是实现图书馆管理的系统化和自动化,缩短借阅者的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到提高图书管理效率的目的。

主要任务是对读者信息、管理员信息、图书资料信息、借阅信息、归还图书信息、罚款信息的基本信息的操作及外理。

概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键。

3.2 任务与目标

●实现学生信息、课程学生管理;

●实现教师及任课信息管理;

●实现选课登记,要保证所对应的课程选课人数不能超过50个人(实用触

发器实现);

●创建存储过程统计各学生指定学期选修课程的总学分数;

●创建视图查询没有被选修的课程;

●创建存储过程统计各教师任课的学生人数;

●创建表间关系。

3.3 阶段结果

(1)根据不同的对象,分别画出分E-R图:

(a)

某高校选课系统数据库课程设计

(b)

某高校选课系统数据库课程设计

(2)合并各分E-R图,消除属性冲突、命名冲突、结构冲突等三类冲突,得到初步E-R 图,再消除不必要冗余,得到的基本E-R图如下所示:

某高校选课系统数据库课程设计

(3)各E-R图各实体的属性如下所示:

学生:Student(Sid,Sname,Ssex,Sbirth,Spassword,Jid)

教师:Teacher(Tid,Tname,Tsex,Tbirth,Tpassword,Dno,limits)

专业:J(Jid,Jname,Did)

院系:Department(Did,Dname,Dboss,Dbname,Dbcall)

课程:Course(Cid,Cname,Ctime,Cgrade,Cstar,Cend,Tid)

管理员:Manager(Mid,Mname,Msex,Mbirth,Mpassword)

控制:select_T(S_control)

各E-R图中联系的属性如下所示:

选课信息:SC(Sid,Cid,grade)

4.逻辑设计阶段

4.1逻辑设计的任务和目标

以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的DBMS产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑结构。具体内容包括数据组织(将E-R 图转换成关系模型、模型优化、数据库模式定义、用户子模式设计)、数据处理(画出系统功能模块图)两大任务。

4.2数据组织

4.2.1将E-R图转换为关系模型

实体型转换为关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况:

一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。

一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。

一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。三个或三个以上实体间的一个多元联系可以转换为一个关系模式。

具有相同码的关系模式可合并,现将具体的基本E-R图向关系模型的转化如下:

学生:Student(Sid,Sname,Ssex,Sbirth,Spassword,Jid)

主码:Sid 外码:Jid

教师:Teacher(Tid,Tname,Tsex,Tbirth,Tpassword,Dno,limits)

主码:Tid 外码:Did

专业:J(Jid,Jname,Did)

主码:Jid 外码:Did

院系:Department(Did,Dname,Dboss,Dbname,Dbcall)

主码:Did

课程:Course(Cid,Cname,Ctime,Cgrade,Cstar,Cend,Tid)

主码:Cid 外码:Tid

管理员:Manager(Mid,Mname,Msex,Mbirth,Mpassword)

主码:Mid

控制:select_T(S_control)

选课信息:SC(Sid,Cid,grade)

主码:(Sid,Cid) 外码:Sid,Cid

4.2.2模型优化

关系模式Student,Teacher,J,Department,Course,Manager,select_T,SC不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF,不需要进行优化。

4.2.3数据库模式定义

表2.1 院系信息表

某高校选课系统数据库课程设计

表2.2 课程信息表

某高校选课系统数据库课程设计

表2.3 专业信息表

某高校选课系统数据库课程设计

表2.4 管理员信息表

某高校选课系统数据库课程设计

表2.5 选课信息表

某高校选课系统数据库课程设计

表2.6 控制信息表

某高校选课系统数据库课程设计

表2.7 学生信息表

某高校选课系统数据库课程设计

表2.8 老师信息表

某高校选课系统数据库课程设计

4.2.4用户子模式定义

表2.7 用户子模式定义

编号用户子模式(View) 作用(共性:提供数据保密和安全保护机制) V-1 T_selected3 便于查询和修改图书的基本信息

编号用户子模式(View) 作用(共性:提供数据保密和安全保护机制) V-2 C_selected 方便读者基本信息的查询、更新

V-3 S_selected1 便于借阅历史信息的查询

V-4 NOT_SELECT 用于当前借阅信息的查询

表2.8 老师所授课程被选修信息视图

某高校选课系统数据库课程设计

表2.9 老师所授课程被选修总人数信息视图

某高校选课系统数据库课程设计

表2.10 未被选修的课程信息视图

某高校选课系统数据库课程设计

表2.11 学生选修的课程信息视图

某高校选课系统数据库课程设计

5.物理设计阶段

5.1物理设计阶段的目标与任务

数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:

(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;

(2)对物理结构进行评价,评价的重点是时间和空间效率。

5.2数据存储方面

为数据库中基本表建立的索引如下:

某高校选课系统数据库课程设计

6.数据库实施阶段

6.1建立数据库、数据表、视图、索引

6.1.1 建立数据库

create database C_selecting System;

6.1.2 建立数据表

建管理员表:

create table Manager(Mid char(20)primary key,

Mname varchar(30)not null,

Msex char(2)check (Msex in('男','女'))not null,

Mbirth datetime not null,

Mpassword char(20)not null);

建院系表:

create table Department(Did char(20)primary key,

Dname varchar(30)not null,Head varchar(20)not null,

Dcall varchar(20)not null);

建专业表:

create table J(Jid char(20)primary key,

Jname varchar(30)not null,

Did char(20)not null,

foreign key(Did)references Department(Did));

建教师表:

create table Teacher(Tid char(20)primary key,

Tname varchar(30)not null,

Tsex char(2)check (Tsex in('男','女'))not null, Tbirth datetime not null,

Tpassword char(20)not null,

Did char(20)not null,limits char(20)not null,

foreign key(Did)references Department(Did));

建学生表:

create table Student(Sid char(20)primary key,

Sname varchar(30)not null,

Ssex char(2)check (Ssex in('男','女'))not null,

Sbirth date not null,

Spassword char(20)not null,

Jid char(20)not null,

foreign key(Jid)references J(Jid));

建课程表:

create table Course(Cid char(20)primary key,

Cname varchar(30)not null,Tid char(20)not null, Period varchar(50)not null,Credits varchar(20)not null, Cstar varchar(10)not null,Cend varchar(10)not null, foreign key(Tid)references Teacher(Tid));

建学生选课信息表:

create table SC(Sid char(20)NOT NULL,

Cid char(20)NOT NULL,

Grade smallint null,

foreign key(Cid)references Course(Cid),

foreign key(Sid)references Student(Sid),

PRIMARY KEY(Cid,Sid));

建学生选课时间控制表:

create table select_T(S_control char(2)NOT NULL check (S_control in('0','1')))

6.1.3 建立视图

建某学生已选课程视图:

create view S_selected1

as select Sid,Cname,Period,Credits,

Cstar,Cend,Tname

from SC,Course,Teacher

where SC.Cid=Course.Cid and Course.Tid=Teacher.Tid

建某老师的某一课程被选视图:

create view T_selected3

as select Tid,Cname,SC.Sid,Sname,Ssex,Jname,Grade

from SC,Student,J,Course

where SC.Sid=Student.Sid and Student.Jid=J.Jid AND Course.Cid=SC.Cid

建选课情况视图:

create view C_selected(Cname,Tname,S_sum)

as select Cname,Tname,COUNT(Sid)

from SC,Course,Teacher

where SC.Cid=Course.Cid AND Course.Tid=Teacher.Tid

group by Cname,Tname

建未被选修课程视图:

create view NOT_SELECT

as select Cname

from Course

where Cname not in(select Cname from Course,SC where Course.Cid=SC.Cid) 6.1.4 建立索引

create index i_sid on Student(Sid)

create index i_cid on Course(Cid)

create index i_tid on Teacher(Tid)

6.1.5 建立触发器

选课信息:

USE[C_selecting System]

create trigger[dbo].[tri_selectCourse]on[dbo].[SC]for insert,update

as if(select count(*)from Course,inserted

where Course.Cid=inserted.Cid)>50

begin

print'所对应的课程选课人数不能超过个人!' rollback

end

else if(select COUNT(*)from Student,inserted

where Student.Sid=inserted.Sid)>3

begin

print'对应学生的选课不能超过3门!'

rollback

end

else if(select S_control from select_T)='0'

begin print'当前不是选课时间段'

rollback

end

GO

添加学生信息时专业信息填写错误:

create trigger tri_addStudent on Student

for insert,update

as if(select COUNT(*)from J,inserted

where J.Jid=inserted.Jid)=0

begin

print'未找到该学生的专业信息,请重新填写!' rollback

End

添加教师信息时专业信息填写错误:

create trigger tri_addTeacher on Teacher

for insert,update

as if(select COUNT(*)from Department,inserted where Department.Did=inserted.Did)=0

begin