《在线答题模块》PPT课件.ppt_第1页
《在线答题模块》PPT课件.ppt_第2页
《在线答题模块》PPT课件.ppt_第3页
《在线答题模块》PPT课件.ppt_第4页
《在线答题模块》PPT课件.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MySchool 在线答题模块,2,问题描述,MySchool 考试管理系统在线答题模块: 1、学员登录 2、选题 3、答题 4、查看答题卡 5、自动阅卷评分 要求完成在线答题模块相关界面设计及功能实现,3,MySchool 数据库结构介绍,数据库由教员提供,在线答题模块使用到的数据表,4,问题分析-1,需要使用到的数据表: Student:学员信息表 Subject:科目信息表 Question:题目信息表,5,问题分析-2,主要功能分析 1、登录 学员身份登录,用户验证 记录登录的用户名和登录类型 2、在线答题 选题:选择试题的科目 抽题:随机抽取20道题 答题:答题时间为20分钟,在程序中保存答案 修改答案:通过答题卡返回修改 判题:计算得分 结果显示:分数、分数条、表情、评语,6,问题分析-3,主要界面分析 登录界面:与上机课的相同 学员主界面 选题界面 答题界面 答题卡界面 答题结果界面,7,问题分析-4,辅助类分析 DBHelper 类:数据库连接字符串、数据库连接对象 UserHelper 类:当前登录用户名、登录类型 QuizHelper 类: 1、totalSeconds:整型,答题限制时间 2、remainSeconds:整型,剩余时间 3、allQuestionIds:整型数组,所有题目 Id 4、selectedStates:布尔型数组,表示题目是否已被抽中 5、questionNum:整型,题目数量 6、selectedQuestionIds:整型数组,选出的题目 Id 7、correctAnswers:字符串型数组,标准答案 8、studentAnswers:字符串型数组,学员用户的答案,8,问题分析-4,QuizHelper 类中几个数组的关系:,selectedStates 题目是否被抽中,allQuestionIds 所有题目 Id,selectedQuestionIds 选出的题目 Id,correctAnswers 标准答案,studentAnswers 学员用户的答案,false,false,false,false,false,false,false,3,true,true,4,10,true,未回答,未回答,未回答,D,B,C,将该科目所有题目的 Id 取出,题目状态都是未选中,随机抽 3 道题, 索引1、2、5被抽中,取出抽中试题的标准答案,用户答案都置为“未回答”,9,难点分析-1,随机抽取试题:,Random random = new Random(); int questionIndex = 0; / 随机产生的问题的索引值 int i = 0; while (i QuizHelper.questionNum) questionIndex = random.Next(QuizHelper.allQuestionsIds.Length); / 如果没有被选中过,可以选择 if (QuizHelper.selectedStatesquestionIndex = false) / ,随机数对象,生成小于指定最大值的非负随机数,10,难点分析-2,每次显示一道题目: 答题窗体增加 questionIndex 字段,记录当前显示的题目的索引值 根据selectedQuestionIds ,利用 DataReader 读取题目信息,11,难点分析-3,倒计时的时钟显示:,QuizHelper.remainSecond- -; minute = QuizHelper.remainSecond / 60; second = QuizHelper.remainSecond % 60; / 控制显示格式 lblTimer.Text = string.Format(“0:00:1:00“, minute, second);,控制显示两位数字,12,难点分析-4,答题卡显示答案: 用20个标签显示答案 将题目的索引写在标签的 Tag 中,private void AnswerCardForm_Load(object sender, EventArgs e) int index = 0; foreach (Control item in this.Controls) if (item is Label) / 如果是标签 index = Convert.ToInt32(item.Tag); item.Text = QuizHelper.studentAnswersindex; / ,循环每一个控件,判断控件是不是标签,13,难点分析-5,从答题卡返回修改答案: 用20个按钮显示题号 将题目的索引写在 Tag 中 20个按钮共用一个 Click 事件处理方法,private void btnQuestion_Click(object sender, EventArgs e) / 获得当前点击的按钮对应的题目索引 int questionIndex = Convert.ToInt32( ( (Button)sender ).Tag); / 自定义方法,打开答题窗体 ShowAnswerQuestionForm(questionIndex); ,14,难点分析-6,颜色条表示分数:,/ 计算得分 int score = correctNum * 100 / QuizHelper.questionNum; lblMark.Text = score.ToString()+“分“; / 确定显示分数的label的宽度 lblStudentScoreStrip.Width = lblFullMarkStrip.Width * score / 100; / 根据不同的得分,显示不同的颜色 if (score 60) lblStudentScoreStrip.BackColor = Color.Red; lblComment.Text = “该好好复习啦!“; / ,15,阶段划分,第一阶段(20分钟) 设计学员主窗体,实现学员登录功能 第二阶段(30分钟) 设计选题窗体,实现部分辅助功能 第三阶段(80分钟) 实现随机抽题功能 第四阶段(80分钟) 设计答题窗体,实现答题功能 第五阶段(60分钟) 设计答题卡窗体,实现答案显示和返回修改答案功能 第六阶段(30分钟) 设计答题结果显示窗体,实现判题功能,16,第一阶段,第一阶段(20分钟) 设计学员主窗体,实现学员登录功能 要求学员自己动手操作,教员巡视,解答学员提出的问题,17,阶段检查,针对第一阶段抽查学员的操作结果 教员给出点评或集中演示难点部分,18,第一阶段结果演示,第一阶段设计的学员主窗体:,19,第二阶段,第二阶段(30分钟) 设计选题窗体,实现部分辅助功能 要求学员自己动手设计选题窗体,实现科目组合框、退出答题的功能 教员巡视,解答学员提出的问题,20,阶段检查,针对第二阶段抽查学员的编码结果 教员给出点评或集中演示难点部分,21,第二阶段结果演示,选题窗体:,22,第二阶段标准代码演示,添加科目名称到科目组合框中:,string sql = “SELECT SubjectName FROM Subject“; try SqlCommand command = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); / 执行查询 SqlDataReader dataReader = command.ExecuteReader(); / 循环添加到组合框中 while (dataReader.Read() cboSubjects.Items.Add(dataReader“SubjectName“.ToString(); dataReader.Close(); / ,23,第三阶段,第三阶段(80分钟) 实现随机抽题功能 要求学员自己动手操作,教员巡视,解答学员提出的问题,24,阶段检查,针对第三阶段抽查学员的编码结果 抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果 教员给出点评,25,第三阶段标准代码演示,随机抽题: 自定义 SetSelectedQuestionIds() 方法,Random random = new Random(); int questionIndex = 0; / 随机产生的问题的索引值 / 抽取每一道题并保存抽出的题目的Id int i = 0; / 记录抽取了几道题 while (i QuizHelper.questionNum) / 在所有问题的数量范围内抽题产生随机数 questionIndex = random.Next(QuizHelper.allQuestionIds.Length); / 如果没有被选中过,可以选择 if (QuizHelper.selectedStatesquestionIndex = false) QuizHelper.selectedQuestionIdsi = QuizHelper.allQuestionIdsquestionIndex; QuizHelper.selectedStatesquestionIndex = true; i+; ,26,第四阶段,第四阶段(80分钟) 设计答题窗体,实现答题功能 要求学员自己动手操作,教员巡视,解答学员提出的问题,27,阶段检查,针对第四阶段抽查学员的编码结果 抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果 教员给出点评,28,第四阶段窗体效果演示,答题窗体:,29,第四阶段标准代码演示-1,窗体的 Load 事件处理:,/ 窗体加载时,显示相应题目的信息 private void AnswerQuestionForm_Load(object sender, EventArgs e) / 启动定时器 tmrCostTime.Start(); / 自定义方法,显示题目信息 GetQuestionDetails(); / 自定义方法,检查如果题目已经答过,让相应的选项选中 CheckOption(); ,30,第四阶段标准代码演示-2,CheckOption() 方法:,switch (QuizHelper.studentAnswersquestionIndex) case “A“: rdoOptionA.Checked = true; break; case “B“: rdoOptionB.Checked = true; break; case “C“: rdoOptionC.Checked = true; break; case “D“: rdoOptionD.Checked = true; break; default: / 四个选项的 Checked 都设为 false break; ,31,第四阶段标准代码演示-3,记录学员的答案: 四个单选按钮共用一个 Click 事件处理方法,/ 选择答案时,记录答案 private void rdoOption_Click(object sender, EventArgs e) QuizHelper.studentAnswersquestionIndex = Convert.ToString( ( (RadioButton)sender ).Tag); ,32,第四阶段标准代码演示-4,倒计时的处理:,/ 计时器 Tick 事件 private void tmrCostTime_Tick(object sender, EventArgs e) int minute; / 当前的分钟 int second; / 秒 if (QuizHelper.remainSeconds 0) QuizHelper.remainSeconds- -; minute = QuizHelper.remainSeconds / 60; second = QuizHelper.remainSeconds % 60; / 以 “分:秒” 的形式显示时间 lblTimer.Text = string.Format(“0:00:1:00“, minute, second); else / 提示时间到,转到结果显示界面 ,33,第五阶段,第五阶段(60分钟) 1、设计答题卡窗体 2、实现答案显示和返回修改答案功能 要求学员自己动手操作,教员巡视,解答学员提出的问题,34,阶段检查,针对第五阶段抽查学员的编码结果 抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果 教员给出点评,35,第五阶段窗体效果演示,答题卡窗体:,36,第五阶段标准代码演示-1,窗体加载时,显示答案:,/ 窗体的 Load 事件 private void AnswerCardForm_Load(object sender, EventArgs e) int index = 0; foreach (Control item in this.Controls) if (item is Label ) / 如果是标签 index = Convert.ToInt32(item.Tag); if (index != -1) item.Text = QuizHelper.studentAnswersindex; tmrCostTime.Start(); / 启动倒计时的计时器 ,37,第五阶段标准代码演示-2,点击题号,返回修改答案 20个题号按钮共用一个 Click 事件处理方法,private void btnQuestion_Click(object sender, EventArgs e) / 获得当前点击的按钮对应的题目索引 int questionIndex = Convert.ToInt32(Button)sender).Tag); / 打开答题窗体 AnswerQuestionForm answerQuestionForm = new AnswerQuestionForm(); / 设置答题窗体显示的题目索引 answerQuestionForm.questionIndex = questionId; answerQuestionForm.MdiParent = this.MdiParent; answerQuestionForm.Show(); this.Close(); ,38,第六阶段,第六阶段(30分钟) 设计答题结果显示窗体,实现判题功能 要求学员自己动手操作,教员巡视,解答学员提出的问题,39,阶段检查,针对第六阶段抽查学员的编码结果 抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果 教员给出点评,40,第六阶段窗体效果演示,结果显示窗体:,41,第六阶段标准代码演示-1,显示分数:,private void QuizResultForm_Load(object sender, EventArgs e) int correctNum = 0; / 答对的题目数量 for (int i = 0; i QuizHelper.questionNum; i+)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论