
MySchool在线答题模块
MySchool 在线答题模块

问题描述 MySchool考试管理系统在线答题模块: 1、学员登录 2、选题 3、答题 4、查看答题卡 5、自动阅卷评分 要求完成在线答题模块相关界面设计及功能实现 2
2 问题描述 MySchool 考试管理系统在线答题模块: 1、学员登录 2、选题 3、答题 4、查看答题卡 5、自动阅卷评分 要求完成在线答题模块相关界面设计及功能实现

..个人L米左日士十+片人1 Admin Student Grade Subject AdminID StudentID GradeID SubjectID LoginId LoginId GradeName SubjectName LoginPwd LoginPwd Hours UserStateId GradeID ClassID Class UserState StudentNO ClassID UserStateld StudentName ClassName UserState Sex GradeID Question StudentIDNO QuestionID Major Question SchoolBefore Teacher Answer Phone Difficulty TeacherID Address LoginId SubjectID PostalCode UsedTimes LoginPwd CityWanted UserStateld JobWanted TeacherName Comment Sex Email Birthday 在线答题模块使用到的数据表 数据库由教员提供 3
3 MySchool 数据库结构介绍 数据库由教员提供 在线答题模块使用到的数据表

问题分析-1 ◆需要使用到的数据表: Student:学员信息表 ■ Subject:科目信息表 ■ Question:题目信息表 4
4 问题分析-1 需要使用到的数据表: ◼ Student:学员信息表 ◼ Subject:科目信息表 ◼ Question:题目信息表

问题分析-2 ◆主要功能分析 1、登录 学员身份登录,用户验证 记录登录的用户名和登录类型 2、在线答题 ■选题:选择试题的科目 抽题:随机抽取20道题 ■ 答题:答题时间为20分钟,在程序中保存答案 修改答案:通过答题卡返回修改 判题:计算得分 结果显示:分数、分数条、表情、评语 5
5 问题分析-2 主要功能分析 1、登录 ◼ 学员身份登录,用户验证 ◼ 记录登录的用户名和登录类型 2、在线答题 ◼ 选题:选择试题的科目 ◼ 抽题:随机抽取20道题 ◼ 答题:答题时间为20分钟,在程序中保存答案 ◼ 修改答案:通过答题卡返回修改 ◼ 判题:计算得分 ◼ 结果显示:分数、分数条、表情、评语

问题分析-3 ◆主要界面分析 登录界面:与上机课的相同 学员主界面 选题界面 答题界面 答题卡界面 答题结果界面 6
6 问题分析-3 主要界面分析 ◼ 登录界面:与上机课的相同 ◼ 学员主界面 ◼ 选题界面 ◼ 答题界面 ◼ 答题卡界面 ◼ 答题结果界面

问题分析-4 ◆辅助类分析 DBHelper类:数据库连接字符串、数据库连接对象 UserHelper类:当前登录用户名、登录类型 QuizHelper类: 1、totalSeconds:整型,答题限制时间 2、remainSeconds:整型,剩余时间 3、allQuestionIds:整型数组, 所有题目Id 4、selectedStates: 布尔型数组,表示题目是否已被抽中 5、questionNum:整型,题目数量 6、selectedQuestionIds:整型数组,选出的题目Id 7、correctAnswers:字符串型数组,标准答案 8、studentAnswers:字符串型数组,学员用户的答案 7
7 问题分析-4 辅助类分析 ◼ DBHelper 类:数据库连接字符串、数据库连接对象 ◼ UserHelper 类:当前登录用户名、登录类型 ◼ QuizHelper 类: 1、totalSeconds:整型,答题限制时间 2、remainSeconds:整型,剩余时间 3、allQuestionIds:整型数组,所有题目 Id 4、selectedStates:布尔型数组,表示题目是否已被抽中 5、questionNum:整型,题目数量 6、selectedQuestionIds:整型数组,选出的题目 Id 7、correctAnswers:字符串型数组,标准答案 8、studentAnswers:字符串型数组,学员用户的答案

问题分析-4 QuizHelper类中几个数组的关系: selectedStates 题目是否被抽中 false truee truee false false true false 0 1 2 3 4 5 6 allQuestionlds 所有题目Id 3 4 5 9 10 11 2 345 6 selectedQuestionlds 选出的题目Id 2 随机抽3道题, correctAnswers 索引1、2、5被抽中 标准答案 B 2 studentAnswers 用户答案都置为“未回答” 学员用户的答案 未回答未回答未回答 2 8
8 问题分析-4 QuizHelper 类中几个数组的关系: selectedStates 题目是否被抽中 0 1 2 3 4 5 6 allQuestionIds 所有题目 Id 1 3 4 5 9 10 11 0 1 2 3 4 5 6 selectedQuestionIds 选出的题目Id 0 1 2 correctAnswers 标准答案 0 1 2 studentAnswers 学员用户的答案 0 1 2 false false false false false false false 3 true true 4 10 true 未回答未回答 未回答 D B C 将该科目所有题目的 题目状态都是未选中Id 取出 随机抽 3 道题, 索引1、2、5被抽中 用户答案都置为“未回答” 取出抽中试题的标准答案

难点分析-1 中◆随机抽取试题: Random random new Random(); 随机数对象 int questionlndex=O;∥随机产生的问题的索引值 inti=0; while (i<QuizHelper.questionNum) { 生成小于指定最大值的非负随机数 questionlndex=random.Next(QuizHelper.allQuestionslds.Length); ∥如果没有被选中过,可以选择 if(QuizHelper.selectedStates[questionlndex]=false) {∥.…} 9
9 难点分析-1 随机抽取试题: Random random = new Random(); int questionIndex = 0; // 随机产生的问题的索引值 int i = 0; while (i < QuizHelper.questionNum) { questionIndex = random.Next(QuizHelper.allQuestionsIds.Length); // 如果没有被选中过,可以选择 if (QuizHelper.selectedStates[questionIndex] == false) { // …… } } 随机数对象 生成小于指定最大值的非负随机数

难点分析-2 ◆每次显示一道题目: 答题窗体增加questionIndex字段,记 录当前显示的题目的索引值 根据selectedQuestionIds[],利用 DataReader读取题目信息 10
10 难点分析-2 每次显示一道题目: ◼ 答题窗体增加 questionIndex 字段,记 录当前显示的题目的索引值 ◼ 根据selectedQuestionIds[ ],利用 DataReader 读取题目信息