在线考试系统数据库分析设计与建模20161113237 16软工A3 李乐实验一:在线考试系统需求分析●前期的数据模型分析是在Execl中建立的,这样方便随时更改。
(仅在前期分析实体属性以及主码外码关系,不涉及详细的数据类型,之后的概念模型中会详细分析)●在线考试系统中的功能庞杂,前期分析,只是分析与设计了该系统的普遍功能与该阶段可实现功能,对于较深较难的功能只分析但并未进行设计。
●建模过程中设计的主要表如下:学生学号管理员ID 姓名学院班级登录密码char(11)char(5)varchar(8) varchar(20) varchar(20)char(6)<pk><fk>管理员管理员ID联系方式管理师生人数char(5)char(11)int<pk>试题表可理解为试题库,教师从中选取一定的试题组成一张试卷答题表可理解为学生的答题试卷,详细记录着学生的答题情况教师编号管理员ID 姓名教授科目登录密码char(5)char(5)varchar(8)varchar(40)char(6)<pk><fk>试卷试卷ID 编号试卷名称考试开始时间使用班级考试结束时间char(10)char(5)varchar(40)datetime varchar(20)datetime<pk><fk>试题试题ID 科目试题类型所属章节所属知识点难度上次使用时间增加试题时间增加试题教师编号试题文字标准答案分值varchar(10)varchar(40)char(6)varchar(8)varchar(40)float datetime datetime varchar(8)varchar(200)varchar(30)float<pk>在线考试系统功能模块图答题学号试题ID试卷ID答案应得分值char(11)varchar(10)char(10)varchar(30)float<pk,fk1><pk,fk2><pk,fk3>组卷试卷ID试题ID题号试题文字char(10)varchar(10)char(3)varchar(200)<pk,fk1><pk,fk2>在线考试数据流图分析与设计在线考试系统数据流图-1:顶层数据流图分析:学生考试成绩1在线考试老师学生管理员主要对象包括了 教师、管理员、学生● 教师:组卷功能、查询学生成绩、按照科目、班级统计学生的考试成绩、分析统计学生对知识点的掌握情况。
● 管理员:管理与维护学生与教师基本信息。
● 学生:在线考试功能、查询成绩功能。
在线考试系统数据流图-2:2教师组卷3自动阅卷5成绩管理6管理试题8学生管理管理员教师学生数据流图分析:将“在线考试系统”进行细化● 管理员通过学生基本信息和教师基本信息数据源管理学生与教师基本信息。
● 教师先通过试题库数据源进行组卷,之后管理试卷。
并且可以“通过学生考试成绩”数据源,教师可进行学生的成绩管理● 学生通过试题库进行线上考试。
● 最后在线考试系统通过“学生考试答题情况”和“试题库”实现自动阅卷功能。
在线考试系统数据流图-3:数据流图分析:细化“成绩管理”模块,其包括了成绩查询、汇总统计、卷面分析三个子功能1成绩查询2汇总统计教师学生3卷面分析● 学生和教师可以进行成绩查询。
● 而汇总统计和卷面分析由教师进行。
在线考试系统数据流图-4:教师1班级学生答题情况查询2班级学生答题情况显示3科目学生答题情况查询45汇总班级成绩6数据流图分析:进一步细化“汇总统计”模块汇总统计包括两部分,即汇总与统计。
●教师汇总班级学生成绩总表;●教师按照科目、班级统计学生的答题情况,以便于了解学生对具体知识的掌握情况。
实验二:在线考试系统CDM概念结构设计管理员管理员ID联系方式管理师生人数<pi>Characters (5)Characters (11)Integer<M>Identifier_1<pi>教师编号姓名教授科目登录密码<pi>Characters (5)Variable characters (8)Variable characters (40)Characters (6)<M> Identifier_1<pi>学生学号姓名学院班级登录密码<pi>Characters (11)Variable characters (8)Variable characters (20)Variable characters (20)Characters (6)<M>Identifier_1<pi>试卷试卷ID试卷名称考试开始时间使用班级考试结束时间<pi>Characters (10)Variable characters (40)Date & TimeVariable characters (20)Date & Time<M>Identifier_1<pi>试题试题ID科目试题类型所属章节所属知识点难度上次使用时间增加试题时间增加试题教师编号试题文字标准答案分值<pi>Variable characters (10)Variable characters (40)Characters (6)Variable characters (8)Variable characters (40)FloatDate & TimeDate & TimeVariable characters (8)Variable characters (200)Variable characters (30)Float<M>Identifier_1<pi>组卷题号试题文字Characters (3)Variable characters (200)答题答案Variable characters (30)实验三:在线考试系统生成PDM物理模型之后生成物理数据库,生成表成功:实验四:函数设计FK_学生_学生管理_管理员FK_教师_教师管理_管理员FK_答题_答题2_试题FK_答题_答题3_试卷管理员管理员ID联系方式管理师生人数char(5)char(11)int <pk>教师编号管理员ID姓名教授科目登录密码char(5)char(5)varchar(8)varchar(40)char(6)<pk><fk>学生学号管理员ID 姓名学院班级登录密码char(11)char(5)varchar(8)varchar(20)varchar(20)char(6)<pk><fk>试卷试卷ID 编号试卷名称考试开始时间使用班级考试结束时间char(10)char(5)varchar(40)datetime varchar(20)datetime<pk><fk>试题试题ID科目试题类型所属章节所属知识点难度上次使用时间增加试题时间增加试题教师编号试题文字标准答案分值varchar(10)varchar(40)char(6)varchar(8)varchar(40)float datetime datetime varchar(8)varchar(200)varchar(30)float<pk>组卷试卷ID 试题ID 题号试题文字char(10)varchar(10)char(3)varchar(200)<pk,fk1><pk,fk2>答题学号试题ID 试卷ID 答案应得分值char(11)varchar(10)char(10)varchar(30)float<pk,fk1><pk,fk2><pk,fk3>1.设计“应得分值转换函数”此函数实现的功能是,将试题库中的试题答案与学生答卷中的试题答案进行对比,如果答案一致,则返回本题的应得分值,否则返回0(即分数为0)●入口参数是:学生答案、标准答案、该题分值●返回值:应得分值●具体函数设计如下:--@应得分值转换函数create function gradeconvert(@学生答案varchar(30),@标准答案varchar(30),@该题分值float)returns float --@应得分值asbegindeclare @t floatif @学生答案= @标准答案set @t= @该题分值elseset @t=0return @tend●测试查询语句如下:select姓名,试卷名称,答题.试题ID,dbo.gradeconvert(答案,标准答案,分值)得分from学生,试卷,试题,答题where学生.学号=答题.学号and试卷.试卷ID=答题.试卷ID and试题.试题ID=答题.试题ID●因为此函数是对比学生答案的基础,之后会应用到触发器与各存储过程中,故此处将不再单独截图此函数的运行结果。
实验五:存储过程1.存储过程设计:存储过程分三类:查询存储、统计存储、卷面分析存储查询存储可以设计多个不同查询方式:●按照学号和试题ID查询●学号查询(已实现)●试卷ID查询(已实现)1.学号查询存储过程:●供学生查询成绩使用,即学生在输入自己学号之后,可看到自己所有试卷的成绩情况。
●具体存储过程设计如下:--学生个人成绩存储过程CREATE procedure p_stscore@学生ID char(11)--入口参数:学生IDasbegindeclare stu_cursor cursor for select姓名from学生declare@学生姓名varchar(8)open stu_cursorfetch next from stu_cursor into@学生姓名print@学生姓名+'同学的各科成绩如下:'select试卷ID,sum(应得分值)试卷分数from答题where学号=@学生ID group by 试卷ID--select 试卷名称, sum(应得分值) 试卷分数from 答题,试卷where 学号=@学生ID and 试卷.试卷ID=答题.试卷ID group by 答题.试卷IDclose stu_cursordeallocate stu_cursorend学生答题情况:学生查询成绩如下:换一组测试数据瞧瞧:显示正确:再来一组测试数据看看:显示正确:增加一位学生,测试数据是否正确:正确!2.试卷ID查询存储过程:●供教师使用,即教师输入试卷ID,即可查询所有答此试卷的学生的成绩。