计算机科学与技术 选修课管理系统设计报告Word下载.docx
《计算机科学与技术 选修课管理系统设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《计算机科学与技术 选修课管理系统设计报告Word下载.docx(27页珍藏版)》请在冰豆网上搜索。
1、功能划分:
用户通过身份验证后进入主界面。
主界面为超级用户提供6项选择:
学生信息管理,课程信息管理,班级信息管理,选课,口令修改和退出系统。
普通用户有4项功能选择:
选课,课程查询,口令修改和退出系统。
2、功能描述:
●班级信息管理:
给出所有班级的列表,超级用户可以实现增加,修改,查找,删除班级信息,维护指定班级所有学生信息,为指定班级设定必修课和选课学分限制等功能。
在维护指定班级学生信息功能中,超级用户可以实现增加,修改,删除学生信息,察看某一学生选课情况,为学生更改口令等功能。
在指定班级必修课功能中,以课表形式列出班级所有必修课的课程信息,实现为一个班级增加或删除必修课的功能。
●学生信息管理:
给出所有学生的列表,超级用户可以增加,修改,删除,查找学生信息,察看某个学生选课情况,为学生修改口令等功能。
本项功能与班级信息维护功能中的维护指定班级学生信息功能相似,不同的是本项功能中将列出所有班级的所有学生信息。
●课程信息管理:
加入,修改,删除课程纪录,察看某门课的选课情况,查询指定的课程信息。
●选课:
以课表的形式列出学生选课情况,学生可以为自己选修或者退选课程,而超级用户可以为任何学生选修或者退选课程。
每个班级都有选课的学分限制,不允许学生选择课程的总学分超过所在班级的选课最大学分限制,而当退出选课功能时,如果选取课程总学分未达到所在班级选课最小学分限制则给出警告信息(因为学生可以多次进入选课界面选课)。
●修改口令:
用户需要输入原口令,并且两次输入新口令一致后,系统即用新口令代替旧口令。
●退出系统:
当用户退出系统时,如果选取的课程总学分未达到所在班级选课最小学分限制,则给出警告信息。
2.3数据字典与流程图
班级实体集:
具有属性班级名称和选课学分限制。
学生实体集:
具有属性学号、姓名、性别和生日。
课程实体集:
具有属性课程号、课程名、学分、授课教师、接纳人数。
上课时间实体集:
具有属性时间。
用户头像实体集:
具有属性用户编号、头像
一个班级可以有多个学生,一个学生只能属于一个班级,所以班级和学生之间的联系为1:
M的联系。
一个班级可以有多门必修课程,一门课程是多个班级的必修课,所以班级和课程之间的必修联系是M:
N的联系。
一个学生可以选修多门课程,一门课程可以被多个学生选修,所以学生和课程之间的联系是M:
一门课程可以有多个上课时间,同一时间内可以有多门课程在上课,所以课程和上课时间的联系是M:
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
外键
课程信息表(tb_course):
包含所有课程信息,定义如下:
COURSEID
课程号
000001
COURSENAME
课程名称
数值分析
CREDIT
学分
4
TEACHER
任课教师
王老师
ACCEPTION
接纳人数
28
班级必修课表(tb_classcourse):
包含所有班级的必修课信息,定义如下:
学生选课表(tb_studentcourse):
包含所有学生的选课信息,定义如下:
上课时间表(tb_coursetime):
包含所有课程的上课时间,定义如下:
COURSETIME
上课时间
星期一上午三、四节
可以多个!
COURSETIME是一个整数,整除10的商表示星期几上课,余数表示当天的第几节课。
用户账号表(tb_user):
包含所有用户的账号和口令信息,定义如下:
USERID
用户账号
ADMIN
USERPASSWD
用户密码
USERAUTH
用户权限
用户学号
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),
--课程信息表(course):
包含所有课程信息
createtabletb_course
courseIDchar(10)primarykey,
courseNamechar(20)notnull,
creditintnotnull,
teacherchar(10)notnull,
acceptionint,
--班级必修课表(classcourse):
包含所有班级的必修课信息
createtabletb_classcourse
classIDchar(10),
courseIDchar(10),
flagint,
primarykey(classID,courseID),
foreignkey(courseID)referencestb_course(courseID)
--学生选课表(studentcourse):
包含所有学生的选课信息
createtabletb_studentcourse
sIDchar(10),
primarykey(sID,courseID),
foreignkey(sID)referencestb_student(sID),
foreignkey(courseID)referencestb_course(courseID),
--上课时间表(coursetime):
包含所有课程的上课时间
createtabletb_coursetime
courseIDchar(10)primarykey,
courseTimechar(50),
GO
--用户账号表(user):
包含所有用户的账号和口令信息
createtabletb_user
(
userIDchar(10),
userPassWDchar(10)notnull,
rightschar(50)notnull,
studentIDchar(10),
foreignkey(studentID)referencestb_student(sID)
--用户表情表(face)
createtabletb_faces
userIDchar(10)primarykey,
facesimage
第六章数据库的实施
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
rollback;
学分已经符合本班要求!
end;
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)删除学生选课信息:
在右下角输入学生学号和欲删除的课程编号,点击确定按钮,则完成为该学生删除一门课程。
如果数据库中不存在相应信息,或者相应的学号,课程号不存在,