计算机科学与技术 选修课管理系统设计报告.docx

上传人:b****5 文档编号:6653077 上传时间:2023-01-08 格式:DOCX 页数:27 大小:1.04MB
下载 相关 举报
计算机科学与技术 选修课管理系统设计报告.docx_第1页
第1页 / 共27页
计算机科学与技术 选修课管理系统设计报告.docx_第2页
第2页 / 共27页
计算机科学与技术 选修课管理系统设计报告.docx_第3页
第3页 / 共27页
计算机科学与技术 选修课管理系统设计报告.docx_第4页
第4页 / 共27页
计算机科学与技术 选修课管理系统设计报告.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

计算机科学与技术 选修课管理系统设计报告.docx

《计算机科学与技术 选修课管理系统设计报告.docx》由会员分享,可在线阅读,更多相关《计算机科学与技术 选修课管理系统设计报告.docx(27页珍藏版)》请在冰豆网上搜索。

计算机科学与技术 选修课管理系统设计报告.docx

计算机科学与技术选修课管理系统设计报告

福建工程学院计算机与信息科学系

 

数据库应用课程设计报告书

 

选修课管理系统

 

专业:

计算机科学与技术

班级:

学号:

0309606619

姓名:

联系电话:

QQ:

527501492

 

第一章摘要

为了更好的巩固和加强所学的知识,把所学的东西转化为实际应用。

应用SQL语言实现对数据库的创建、修改、删除。

通过插入表和删除表、更改表学会了对于表的一些操作。

建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程。

需求分析后,收集了大量的数据,应该把它们保存起来进入近一步的处理,进一步的抽取有用的信息。

当年人们把数据存放在文件柜中,可现在随着社会的发展,数据量急剧增长,现在人们就借助计算机和数据库技术科学的保存大量的数据,以便能更好的利用这些数据资源。

通过学生选修课管理系统的构造以及相关信息制成表格,输入到数据库中,使之能够进行查询、修改、删除操作。

需求分析阶段就是要研究学生选修课管理系统的具体分类和实施过程流图。

概念设计阶段要完成数据抽象与局部视图设计还有视图的集成。

逻辑结构设计阶段要把E-R图转化为关系模式并且完成总关系表。

最后就是要运行和实施数据库。

要把查询结果与过程保存截图。

 

关键词:

SQL语言;数据库设计;学生选修课管理

第二章需求分析

2.1需求分析的任务

1、系统目标:

完成学生选修课管理系统及其附属程序。

2、系统功能需求:

本系统的用户分为教师用户和普通学生两类,教师用户负责系统维护,包括对班级信息,学生个人信息,课程信息的录入,修改,查询,删除等。

普通用户即选课学生则只具有为自己选课的权限。

2.2需求分析的过程

1、功能划分:

用户通过身份验证后进入主界面。

主界面为超级用户提供6项选择:

学生信息管理,课程信息管理,班级信息管理,选课,口令修改和退出系统。

普通用户有4项功能选择:

选课,课程查询,口令修改和退出系统。

2、功能描述:

●班级信息管理:

给出所有班级的列表,超级用户可以实现增加,修改,查找,删除班级信息,维护指定班级所有学生信息,为指定班级设定必修课和选课学分限制等功能。

在维护指定班级学生信息功能中,超级用户可以实现增加,修改,删除学生信息,察看某一学生选课情况,为学生更改口令等功能。

在指定班级必修课功能中,以课表形式列出班级所有必修课的课程信息,实现为一个班级增加或删除必修课的功能。

●学生信息管理:

给出所有学生的列表,超级用户可以增加,修改,删除,查找学生信息,察看某个学生选课情况,为学生修改口令等功能。

本项功能与班级信息维护功能中的维护指定班级学生信息功能相似,不同的是本项功能中将列出所有班级的所有学生信息。

●课程信息管理:

加入,修改,删除课程纪录,察看某门课的选课情况,查询指定的课程信息。

●选课:

以课表的形式列出学生选课情况,学生可以为自己选修或者退选课程,而超级用户可以为任何学生选修或者退选课程。

每个班级都有选课的学分限制,不允许学生选择课程的总学分超过所在班级的选课最大学分限制,而当退出选课功能时,如果选取课程总学分未达到所在班级选课最小学分限制则给出警告信息(因为学生可以多次进入选课界面选课)。

●修改口令:

用户需要输入原口令,并且两次输入新口令一致后,系统即用新口令代替旧口令。

●退出系统:

当用户退出系统时,如果选取的课程总学分未达到所在班级选课最小学分限制,则给出警告信息。

2.3数据字典与流程图

班级实体集:

具有属性班级名称和选课学分限制。

学生实体集:

具有属性学号、姓名、性别和生日。

课程实体集:

具有属性课程号、课程名、学分、授课教师、接纳人数。

上课时间实体集:

具有属性时间。

用户头像实体集:

具有属性用户编号、头像

一个班级可以有多个学生,一个学生只能属于一个班级,所以班级和学生之间的联系为1:

M的联系。

一个班级可以有多门必修课程,一门课程是多个班级的必修课,所以班级和课程之间的必修联系是M:

N的联系。

一个学生可以选修多门课程,一门课程可以被多个学生选修,所以学生和课程之间的联系是M:

N的联系。

一门课程可以有多个上课时间,同一时间内可以有多门课程在上课,所以课程和上课时间的联系是M:

N的联系。

1.选修课系统的处理流程图:

 

 

2.总体结构和外部模块设计:

 

 

 

3.数据字典

数据结构名

含义说明

组成

班级实体集

定义班级及相关属性

班级名称和选课学分限制

学生实体集

定义学生的分别

学号、姓名、性别和生日

课程实体集

定义个备选课程的具体数据

课程号、课程名、学分、授课教师、接纳人数

上课时间实体集

定义备选课的授课时间,可错开相同时间课程选择

时间

用户头像

定义每位用户的头像

用户id、头像

第三章概念结构设计

3.1概念结构设计的方法与步骤

3.1.1概念结构设计的方法

概念设计阶段我采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上的进行概念结构设计。

对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式。

3.1.2概念结构设计的步骤

第一步是进行局部视图的设计:

由于高层的数据流图只能反映系统的概貌,而中层流图能较好的反映系统中各局部应用的子系统组成。

因此我先逐一的设计分E-R图。

第二步是进行视图的集成:

各子系统的E-R图设计好之后,下一步就是要将所有的分E-R图合成一个系统的总E-R图,一般有两个方式,多个分E-R图一次集成,另一种是一次集成两个分E-R图。

我想采用一次集成两个分E-R图的方式。

3.2数据抽象与局部视图设计

设计实体属性图以及局部E-R图。

图3.1班级信息实体属性图

图3.2学生实体属性图

图3.3课程局部E-R图

图3.4上课时局部E-R图

3.3视图的集成

经过逐步细化再进行每两个一集成初步形成一个E-R图,最后得到图3.5总体概念结构E-R图。

图3.5系统总体结构E-R图

第四章逻辑结构设计

4.1E-R图向关系模型的转换

(1)班级实体集可以转换为关系:

CLASS(CLASSNAME,MAXCREDIT,MINCREDIT)

CLASSNAME表示班级名称,MAXCREDIT表示最大学分限制,MINCREDIT表示最小学分限制。

(2)学生实体集可以转换为关系

STUDENT(STUDENTID,NAME,SEX,BIRTHDAY)

STUDENTID表示学号,NAME表示姓名,SEX表示性别,BIRTHDAY表示生日

(3)课程实体可以转换为关系

COURSE(COURSEID,COURSENAME,CREDIT,TEACHER,ACCEPTION)

COURSEID表示课程号,COURSENAM表示课程名,CREDIT表示学分,TEACHER表示授课教师,ACCEPTION表示接纳人数。

(4)班级和学生之间的联系是1:

M的联系,所以没有必要为其建立一个关系,可以通过扩展学生关系来表示:

STUDENT(STUDENTID,NAME,SEX,BIRTHDAY,CLASSNAME)

CLASSNAME表示学生所在班级名。

(5)班级和课程之间的必修联系可以转换为关系:

CLASSCOURSE(CLASSNAME,COURSEID)

CLASSNAME表示班级名称,COURSEID表示课程号。

(6)学生和课程之间的选修联系可以转化为关系:

STUDENTCOUSE(STUDENTID,COURSEID)

STUDENTID表示学号,COURSEID表示课程号。

(7)课程和上课之间的联系可以转化为关系:

COURSETIME(COURSEID,TIME)

COURSEID表示课程号,TIME表示上课时间。

4.2数据模型的优化

通过各种约束,缺省,规则和触发器实现数据的完整性。

由于教务系统的重要性,和各个数据之间的复杂相关性,保证数据的完整性显得更为重要。

不能让用户随意的删除,修改数据。

(1)CHECK约束保证最大限选学分要大于最小限选学分。

(2)各种外键约束保证数据的完整性,不能随意删除。

外键的设置在上面数据库建表时已经提到。

(3)主键约束保证实体的完整性,主键的设置在上面数据库建表时也已经提到了。

(4)创建规则保证学生的年龄在18岁到35岁之间(出生日期在1965-1-1到1982-12-31日之间),不会输入错误数据。

(5)创建触发器,保证在添加学生信息的时候,自动将该班级的必修课添加到选课表中。

4.3数据库的结构

把关系模型转化为表结构:

班级信息表(tb_class):

包含所有的班级信息,定义如下:

域名

含义

数据类型

例子

备注

CLASSNAME

班级名称

字符类型

计71

主键

MAXCREDIT

最大学分限制

数值类型

30

MINCREDIT

最小学分限制

数值类型

20

学生信息表(tb_student):

包含所有学生的个人信息,定义如下:

域名

含义

数据类型

例子

备注

STUDENTID

学号

字符类型

971329

主键

NAME

姓名

字符类型

王强

SEX

性别

字符类型

BIRTHDAY

生日

日期类型

79/07/15

CLASSNAME

班级名称

字符类型

计71

外键

课程信息表(tb_course):

包含所有课程信息,定义如下:

域名

含义

数据类型

例子

备注

COURSEID

课程号

字符类型

000001

主键

COURSENAME

课程名称

字符类型

数值分析

CREDIT

学分

数值类型

4

TEACHER

任课教师

字符类型

王老师

ACCEPTION

接纳人数

数值类型

28

班级必修课表(tb_classcourse):

包含所有班级的必修课信息,定义如下:

域名

含义

数据类型

例子

备注

CLASSNAME

班级名称

字符类型

计71

外键

COURSEID

课程号

字符类型

000001

外键

学生选课表(tb_studentcourse):

包含所有学生的选课信息,定义如下:

域名

含义

数据类型

例子

备注

STUDENTID

学号

字符类型

971329

外键

COURSEID

课程号

字符类型

000001

外键

上课时间表(tb_coursetime):

包含所有课程的上课时间,定义如下:

域名

含义

数据类型

例子

备注

COURSEID

课程号

字符类型

000001

外键

COURSETIME

上课时间

字符类型

星期一上午三、四节

可以多个!

COURSETIME是一个整数,整除10的商表示星期几上课,余数表示当天的第几节课。

用户账号表(tb_user):

包含所有用户的账号和口令信息,定义如下:

域名

含义

数据类型

例子

备注

USERID

用户账号

字符类型

ADMIN

USERPASSWD

用户密码

字符类型

ADMIN

USERAUTH

用户权限

数值类型

0

STUDENTID

用户学号

字符类型

971329

USERAUTH用0,1表示用户权限,0表示管理员,1表示普通用户。

其中普通用户的STUDENTID为学生的学号。

第五章数据库物理设计

5.1索引的建立

主要是对表建立唯一索引、聚集索引。

5.2表的建立

--班级信息表(class):

包含所有的班级信息

createtabletb_class

(classIDchar(10)primarykey,

classnamechar(10)notnull,

maxcreditintnotnull,

mincreditintnotnull,

go

--学生信息表(student):

包含所有学生的个人信息

createtabletb_student

sIDchar(10)primarykey,

sNamechar(10)notnull,

sexvarchar

(2),

sBirdatetime,

classIDchar(10)notnull,

foreignkey(classID)referencestb_class(classID),

go

 

--课程信息表(course):

包含所有课程信息

createtabletb_course

courseIDchar(10)primarykey,

courseNamechar(20)notnull,

creditintnotnull,

teacherchar(10)notnull,

acceptionint,

go

 

--班级必修课表(classcourse):

包含所有班级的必修课信息

createtabletb_classcourse

classIDchar(10),

courseIDchar(10),

flagint,

primarykey(classID,courseID),

foreignkey(classID)referencestb_class(classID),

foreignkey(courseID)referencestb_course(courseID)

go

 

--学生选课表(studentcourse):

包含所有学生的选课信息

createtabletb_studentcourse

sIDchar(10),

courseIDchar(10),

flagint,

primarykey(sID,courseID),

foreignkey(sID)referencestb_student(sID),

foreignkey(courseID)referencestb_course(courseID),

go

--上课时间表(coursetime):

包含所有课程的上课时间

createtabletb_coursetime

courseIDchar(10)primarykey,

courseTimechar(50),

foreignkey(courseID)referencestb_course(courseID),

GO

--用户账号表(user):

包含所有用户的账号和口令信息

createtabletb_user

userIDchar(10),

userPassWDchar(10)notnull,

rightschar(50)notnull,

studentIDchar(10),

foreignkey(studentID)referencestb_student(sID)

go

--用户表情表(face)

createtabletb_faces

userIDchar(10)primarykey,

facesimage

go

第六章数据库的实施

6.1系统实验要求

测试用户账户的建立:

学生:

0903密码:

123

教师:

王老师密码:

1122

6.2表的建立与数据的载入

表的恢复脚本在试验文件夹中。

数据的载入可以用备份数据库恢复数据。

6.3触发器的设计

--创建触发器(最大学分限制不能小于最小学分限制)

CREATETRIGGERclass_in_up

ontb_class

forinsert,update

as

declare

@temp1int,

@temp2int

select@temp1=maxcredit,@temp2=mincreditfrominserted

if@temp1<@temp2

begin

rollback/*回滚*/

raiserror('最大学分限制不能小于最小学分限制!

',16,1)

end

--检查学分是否符合限制触发器

createTRIGGERcheck_studentcourse

ontb_studentcourse

forinsert,update

as

declare@sidchar(10)--学号

declare@aint--总学分

declare@mincreditint--最小学分限制

declare@maxcreditint--最大学分限制

--求sid号

select@sid=sidfrominserted

--求总学分

select@a=sum(credit)fromtb_coursewherecourseidin(

selectcourseidfromtb_studentcoursewheresid=@sid

unionselectcourseidfromtb_classcoursea,tb_studentb

wherea.classid=b.classidandb.sid=@sid)

--求学分显示

select@mincredit=mincredit,@maxcredit=maxcreditfromtb_class,tb_student

wheresid=@sidandtb_class.classid=tb_student.classid

if@a>@maxcredit

begin

rollback;

raiserror('学分已经符合本班要求!

',16,1)

end;

go

6.4表的创建

6.4.1.班级信息表

6.4.2.必修课表

6.4.3.课程信息表

6.4.4.上课时间表

6.4.5.用户头像表

6.4.6.学生信息表

6.4.7.学生选修课表

6.4.8.用户信息表

第七章功能界面详细解说

7.1.登陆界面

这是系统的登录界面,用户直接输入自己的账户和密码,系统自动判别选择以学生或管理员身份登录,并要输入正确的用户名称,密码。

7.2.教师登陆界面

这是教师(系统管理员)登录成功的界面,左侧有管理员管理的各项职权。

(1)按下班级信息管理,进入班级信息管理界面,进行班级信息维护管理。

(2)按下学生信息管理,进入学生信息管理界面,进行学生信息维护管理。

(3)按下课程信息管理,进入课程信息管理界面,进行课程信息维护管理。

(4)按下选课管理,进入选课信息管理界面,进行选课或更改某学生选课信息。

(5)按下口令修改,进入口令修改界面,更改用户口令。

(6)按下退出,退出本系统到登陆界面。

上述界面是在用管理员登录时才能看到,其中班级信息维护管理和相应的增加新班级功能为登陆后的默认选项。

7.3.班级管理界面

在右上方的班级信息管理界面中,可以增加新的班级,修改原有班级信息,删除原有班级。

(1)增加新班级:

在右下角的相应文本框中输入增加的班级名称,最大、最小学分限制,点击确定后,如果没有重复的班级名称,而且最大学分限制大于最小学分限制,则成功加入新的班级。

(2)修改原有班级:

在右下角的相应文本框中输入修改的班级名称,点击确定后,下方文本框中会出现原有的最大最小学分限制。

输入新的学分限制后,如果该班级的所有学生已经选课的总学分符合新的学分限制标准,则修改成功。

(3)删除原有班级:

在右下角相应文本框中输入欲删除的班级名称,点击确定后,如果该班级所有学生都已经被删除,并且该班级所有必修课都已经被删除,则可以将该班级删除。

7.4.学生信息管理界面

在右上方的学生信息管理界面中,可以增加,修改,删除学生的个人信息。

(1)增加新学生,在右下角的文本框中输入相应的学生学号,姓名,生日,班级,性别信息,点击确定按钮,如果存在相应的学生班级,并且学生学号不重复,则可以成功的添加新学生到该班级。

(2)修改学生信息:

在右下角的文本框中输入相应的学生学号,点击确定按钮,则可以在相应文本框中看到该学生原有的个人信息。

可以进行修改。

注意修改的班级必须为已经存在的班级,学号不能与已经存在的学号重复。

(3)删除学生信息:

在右下角的文本框中输入相应的学生学号,点击删除按钮,则可以删除相应的学生个人信息,注意在选课表中,该学生的所有选课信息必须全部删除。

7.5.课程信息管理

在右上方的课程信息管理界面中,可以完成增加,删除,修改选修课程的功能。

(1)增加新课程:

在右下角的相应文本框中输入课程号,课程名称等信息,然后点击确定按钮,如果在数据库中没有重复的课程编号,则可以完成添加一门新课程到数据库中。

注意在输入增加的上课时间时,用分号分隔开不同的上课时间。

(2)修改原来课程信息:

在右下角的课程号文本框中输入欲修改的课程编号,点击确定按钮后,在相应文本框中出现原有的相应课程信息。

修改后点击确定按钮,则完成对课程信息的修改。

注意:

在修改学分时,如果造成某些已经选了该课的学生的学分超过学分限制,则不能完成对该门课程信息的修改。

或者在修改上课时间时,造成某些已经选修了该课的学生上课时间的冲突,则不能完成相应的修改。

(3)删除原有课程:

在右下角的文本框中输入相应课程号,点击确定按钮,则完成对该课程的删除操作。

注意如果有学生选择课该门课程,则不能完成该门课程的删除操作。

7.6.选课信息管理界面

在选课管理界面中,可以增加、删除班级的必修课,还可以增加、删除学生的选课信息。

(1)增加班级必修课:

在右下角输入欲增加的课程号和增加课程的班级编号,点击确定按钮,就可以完成增加该班级的一门必修课。

如果在数据库中存在重复的信息,或者相应的课程号,班级编号不存在,则不能完成向该班级增加必修课。

(2)删除班级必修课,在右下角输入欲删除的课程号和删除课程的班级编号,点击确定按钮,就可以完成删除该班级的一门必修课。

如果在数据库中不存在相应的信息,或者输入的课程号,班级编号不存在,则不能完成从该班级删除必修课。

(3)增加学生选课信息:

在右下角输入欲增加课程的学生编号和课程编号,点击确定按钮,则完成为该学生增加一门课程。

如果在数据库中存在重复的信息,或者学生、课程号不存在,或者该学生的总学分限制了增加课程,或者与该学生已经选择的课程上课时间有冲突,都不能完成为该学生增加课程的信息。

(4)删除学生选课信息:

在右下角输入学生学号和欲删除的课程编号,点击确定按钮,则完成为该学生删除一门课程。

如果数据库中不存在相应信息,或者相应的学号,课程号不存在,

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

当前位置:首页 > 高中教育 > 其它课程

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

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