软件工程学生选课系统概要设计.docx
《软件工程学生选课系统概要设计.docx》由会员分享,可在线阅读,更多相关《软件工程学生选课系统概要设计.docx(16页珍藏版)》请在冰豆网上搜索。
软件工程学生选课系统概要设计
学生选课系统概要设计报告
姓名:
学号:
班级:
1.总体设计
1.1系统架构
该系统的架构图如下:
图1系统架构图一
图2系统架构图二
1.2数据流图
该系统的数据流图,如下所示:
图3数据流图
1.3总体结构
学生选课系统是为了方便学生在选课阶段方便选课而开发的系统,它的基本功能就是对于学校的可选课程进行选择、查看和修改等操作。
学生选课系统主要有四大模块:
1.课程展示模块
课程展示模块是系统的核心部分,学生只有浏览所选课程才能选择所上的课程。
课程展示模块包括课程的详细信息(课程ID、课程名、上课时间、授课教师等)、搜索课程信息等功能。
2.用户管理模块
用户包括学生用户和教师用户。
学生用户必须登录进系统。
然后他们可以进行选课操作并可以查看选课信息,个人信息以及成绩信息。
教师用户可以对学生进行成绩录入,查看学生信息等操作。
没有登陆的用户不能进入系统。
3.选课模块
学生用户在选课期间对课程进行查看,开始进行选课操作(查看、修改、删除)等。
图4总体结构图
2.概念结构
2.1总E-R图
2.2实体图
管理员
系部
班级
学生
教师:
课程
3.逻辑结构设计
1)管理员(用户名,密码)
主键为用户名
2)系部(系部代码,系部名称,系主任)
主键为系部代码
3)班级(班级代码,班级名称,备注,系部代码)
主键为班级代码
4)课程(课程号,课程名称,学分,开始周,结束周,备注,系部代码)
主键为课程号,外键为系部代码
5)学生(学号,姓名,性别,出生日期,入学时间,密码,班级代码)
主键为学号,外键为班级代码
6)教师(教师编号,姓名,性别,出生日期,学历,职务,密码,备注,系部代码)
主键为教师编号,外键为系部代码
7)教师任课(教师编号,课程号,教师姓名,课程名称,系部名称,学生数,开始周,结束周)
主键为教师编号,课程号,外键为教师编号,课程号
8)学生选课(学号,课程号,教师编号,学生姓名,课程名称,教师姓名,开课系部,
开始周,结束周,成绩)
主键为学号,课程号,教师编号,外键为学号,教师编号,课程号
4.物理设计
4.1表设计
--
(1)“管理员”表
Usestudent
GO
createtable管理员
(
用户名varchar(12)constraintpk_glyPRIMARYKEYNOTNULL,
密码varchar(12)NULL,
)
GO
--
(2)"系部“表
Usestudent
GO
createtable系部
(
系部代码char
(2)CONSTRAINTpk_xbdmPRIMARYKEYNOTNULL,
系部名称varchar(30)notnullconstraintuk_xbmcuniquenonclustered,
系主任varchar(8)notnull
)
GO
--(4)"班级"表
Usestudent
GO
createtable班级
(
班级代码char(9)constraintpk_bjdmPRIMARYKEYNOTNULL,
班级名称varchar(20),
系部代码char
(2)constraintfk_bjxbdmreferences系部(系部代码),
备注varchar(50)
)
GO
--(5)“学生表”
Usestudent
GO
createtable学生
(
学号char(12)CONSTRAINTpk_xhPRIMARYKEYNOTNULL,
姓名varchar(8),
性别char
(2),
出生日期datetime,
入学时间datetime,
班级代码char(9)constraintfk_xsbjdmreferences班级(班级代码)
)
GO
--(6)"教师"表
Usestudent
GO
createtable教师
(
教师编号char(12)constraintpk_jsbhprimarykey,
姓名varchar(8)notnull,
性别char
(2),
出生日期datetime,
学历varchar(10),
职务char(10),
职称char(10),
系部代码char
(2)constraintfk_jsxbdmreferences系部(系部代码),
专业char(20),
备注varchar(50)
)
GO
--(7)"课程"表
Usestudent
GO
createtable课程
(
课程号char(4)constraintpk_kchprimarykey,
课程名称varchar(20)notnull,
备注varchar(50)
)
Go
--(8)"教师任课"表
Usestudent
GO
createtable教师任课
(
教师编号char(12)constraintfk_jsrkbhreferences教师(教师编号),
课程号char(4)constraintfk_jsrkkchreferences课程(课程号),
教师姓名varchar(8),
课程名称varchar(20),
系部名称varchar(30),
学生数smallint,
开始周tinyint,
结束周tinyint,
primarykey(教师编号,课程号)
)
GO
--(9)"课程注册"表
Usestudent
GO
createtable学生选课
(
学号char(12)references学生(学号),
课程号char(4)references课程(课程号),
教师编号char(12)references教师(教师编号),
学生姓名varchar(8),
教师姓名varchar(8),
课程名称varchar(20),
开课系部varchar(30),
开始周tinyint,
结束周tinyint,
成绩tinyint,
primarykey(学号,教师编号,课程号)
)
GO
4.2存储过程设计
/*
*功能--查看一门课程也没有选修的学生的学号和姓名。
*参数--无
存储过程名:
st_noxk
*/
Createprocedurest_noxk
As
Select学号,姓名from学生
Where学号notin(select学号from学生选课)
-----------------------------------------------------
2:
/*功能-----输入任意一个成绩,查询大于等于该成绩的学号、姓名、课程名、成绩
参数---成绩
存储过程名:
st_chengjichaxun
*/
Createprocedurest_chengjichaxun@chengjitinyint
As
Select学号,姓名,课程名,成绩from学生选课
Where成绩>=@chengji
Orderby学号
3:
/*功能-----输入任意一个存在的课程名称,统计改门课程的平均成绩、最高成绩和最低成绩
参数---课程名称(输入参数)平均成绩、最高成绩和最低成绩(输出参数)
存储过程名:
st_dkcjfx
*/
Createprocedurest_dkcjfx@kechengmingvarchar(20),
@avgchengjitinyintOUTPUT,@maxchengjitinyintOUTPUT,@minchengjitinyintOUTPUT
As
Select@avgchengji=AVG(成绩),@maxchengji=MAX(成绩),@minchengji=MIN(成绩)
From学生选课where课程名称=@kechengming
过程名
功能
入口参数
st_noxk
查询没有选课的学生
无
st_chengjichaxun
查询大于某一成绩的学生
成绩
st_dkcjfx
查询某一课程的平均、最高、最低分
课程名称
4.3触发器设计
1:
/*功能-----当插入一个学生信息时,自动给该学生赋一个与学号相同的密码
名称:
passwd_trigger_student
*/
createtriggerpasswd_trigger_studenton学生forinsert
as
declare@passwordchar(13);
set@password=NULL;
set@password=(select密码frominserted);
if@passwordisNULL
update学生set密码=学号;
2./*
功能-----当插入一个教师信息时,自动给该教师赋一个与教师编号相同的密码
名称:
passwd_trigger_jiaoshi
*/
createtriggerpasswd_trigger_jiaoshion教师forinsert
as
declare@passwordchar(13);
set@password=NULL;
set@password=(select密码frominserted);
if@passwordisNULL
update教师set密码=教师编号;
3./*
功能-----当学生选择课程时,自动给该课程的人数加1
名称:
numadd_trigger_xuanke
*/
createtriggernumadd_trigger_xuankeon学生选课forinsert
as
declare@numint;
declare@teachernochar(12);
declare@coursenochar(4);
set@teacherno=(select教师编号frominserted);
set@courseno=(select课程号frominserted);
set@num=0;
set@num=(select学生数from教师任课where教师编号=@teachernoand课程号=@courseno)+1;
update教师任课set学生数=@numwhere教师编号=@teachernoand课程号=@courseno;
4./*
功能-----当学生退选课程时,自动给该课程的人数减1
名称:
numjianshao_trigger_xuanke
*/
createtriggernumjianshao_trigger_xuankeon学生选课fordelete
as
declare@numint;
declare@teachernochar(12);
declare@coursenochar(4);
set@teacherno=(select教师编号frominserted);
set@courseno=(select课程号frominserted);
set@num=0;
set@num=(select学生数from教师任课where教师编号=@teachernoand课程号=@courseno)-1;
update教师任课set学生数=@numwhere教师编号=@teachernoand课程号=@courseno;
触发器名
功能
类型
作用表
passwd_trigger_student
当插入一个学生信息时,自动给该学生赋一个与学号相同的密码
Insert
学生表
passwd_trigger_jiaoshi
当插入一个教师信息时,自动给该教师赋一个与教师编号相同的密码
insert
教师表
numadd_trigger_xuanke
当学生选择课程时,自动给该课程的人数加1
insert
学生选课表
numjianshao_trigger_xuanke
当学生退选课程时,自动给该课程的人数减1
delete
学生选课表