MySchool在线答题模块V

上传人:s9****2 文档编号:578809318 上传时间:2024-08-25 格式:PPT 页数:44 大小:619.50KB
返回 下载 相关 举报
MySchool在线答题模块V_第1页
第1页 / 共44页
MySchool在线答题模块V_第2页
第2页 / 共44页
MySchool在线答题模块V_第3页
第3页 / 共44页
MySchool在线答题模块V_第4页
第4页 / 共44页
MySchool在线答题模块V_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《MySchool在线答题模块V》由会员分享,可在线阅读,更多相关《MySchool在线答题模块V(44页珍藏版)》请在金锄头文库上搜索。

1、MySchool MySchool 在在在在线线线线答答答答题题题题模模模模块块块块 问题描述问题描述MySchool 考试管理系统在线答题模块:考试管理系统在线答题模块: 1、学员登录学员登录 2、选题选题 3、答题答题 4、查看答题卡查看答题卡 5、自动阅卷评分自动阅卷评分要求完成在线答题模块相关界面设计及功能实现要求完成在线答题模块相关界面设计及功能实现MySchool 数据库结构介绍数据库结构介绍数据库由教员提供数据库由教员提供 在线答题模块使用到的数据表在线答题模块使用到的数据表问题分析问题分析-1需要使用到的数据表:需要使用到的数据表:Student:学员信息表:学员信息表Subj

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

3、析登录界面:与上机课的相同登录界面:与上机课的相同学员主界面学员主界面选题界面选题界面答题界面答题界面答题卡界面答题卡界面答题结果界面答题结果界面问题分析问题分析-4辅助类分析辅助类分析DBHelper 类:数据库连接字符串、数据库连接对象类:数据库连接字符串、数据库连接对象UserHelper 类:当前登录用户名、登录类型类:当前登录用户名、登录类型QuizHelper 类:类: 1、totalSeconds:整型,答题限制时间:整型,答题限制时间 2、remainSeconds:整型,剩余时间:整型,剩余时间 3、allQuestionIds:整型数组,所有题目:整型数组,所有题目 Id

4、4、selectedStates:布尔型数组,表示题目是否已被抽中:布尔型数组,表示题目是否已被抽中 5、questionNum:整型,题目数量:整型,题目数量 6、selectedQuestionIds:整型数组,选出的题目:整型数组,选出的题目 Id 7、correctAnswers:字符串型数组,标准答案:字符串型数组,标准答案 8、studentAnswers:字符串型数组,学员用户的答案:字符串型数组,学员用户的答案问题分析问题分析-4QuizHelper 类中几个数组的关系:类中几个数组的关系:selectedStates题目是否被抽中题目是否被抽中0123456allQuesti

5、onIds所有题目所有题目 Id1345911100123456selectedQuestionIds选出的题目选出的题目 Id 012correctAnswers标准答案标准答案012studentAnswers学员用户的答案学员用户的答案012falsefalsefalse falsefalsefalsefalse3truetrue410true未回答未回答未回答未回答未回答未回答DBC将该科目所有题目的将该科目所有题目的 Id 取出取出 题目状态都是未选中题目状态都是未选中随机抽随机抽 3 道题,道题,索引索引1、2、5被抽中被抽中取出抽中试题的标准答案取出抽中试题的标准答案用户答案都置

6、为用户答案都置为“未回答未回答”难点分析难点分析-1随机抽取试题:随机抽取试题:Random random = new Random();int questionIndex = 0; / 随机产生的问题的索引值随机产生的问题的索引值int i = 0; while (i QuizHelper.questionNum) questionIndex = random.Next(QuizHelper.allQuestionsIds.Length); / 如果没有被选中过,可以选择如果没有被选中过,可以选择 if (QuizHelper.selectedStatesquestionIndex = fa

7、lse) / 随机数对象随机数对象生成小于指定最大值的非负随机数生成小于指定最大值的非负随机数难点分析难点分析-2每次显示一道题目:每次显示一道题目:答题窗体增加答题窗体增加 questionIndex 字段,记录当前显示的题目的字段,记录当前显示的题目的索引值索引值根据根据selectedQuestionIds ,利用,利用 DataReader 读取题目读取题目信息信息难点分析难点分析-3倒计时的时钟显示:倒计时的时钟显示:QuizHelper.remainSecond- -; minute = QuizHelper.remainSecond / 60;second = QuizHelpe

8、r.remainSecond % 60;/ 控制显示格式控制显示格式lblTimer.Text = string.Format(0:00:1:00, minute, second); 控制显示两位数字控制显示两位数字难点分析难点分析-4答题卡显示答案:答题卡显示答案:用用20个标签显示答案个标签显示答案将题目的索引写在标签的将题目的索引写在标签的 Tag 中中private void AnswerCardForm_Load(object sender, EventArgs e) int index = 0; foreach (Control item in this.Controls) if

9、(item is Label) / 如果是标签如果是标签 index = Convert.ToInt32(item.Tag); item.Text = QuizHelper.studentAnswersindex; / 循环每一个控件循环每一个控件判断控件是不是标签判断控件是不是标签难点分析难点分析-5从答题卡返回修改答案:从答题卡返回修改答案:用用20个按钮显示题号个按钮显示题号将题目的索引写在将题目的索引写在 Tag 中中20个按钮共用一个个按钮共用一个 Click 事件处理方法事件处理方法private void btnQuestion_Click(object sender, Even

10、tArgs e) / 获得当前点击的按钮对应的题目索引获得当前点击的按钮对应的题目索引 int questionIndex = Convert.ToInt32( ( (Button)sender ).Tag); / 自定义方法,打开答题窗体自定义方法,打开答题窗体 ShowAnswerQuestionForm(questionIndex); 难点分析难点分析-6颜色条表示分数:颜色条表示分数:/ 计算得分计算得分int score = correctNum * 100 / QuizHelper.questionNum;lblMark.Text = score.ToString()+分分;/ 确

11、定显示分数的确定显示分数的label的宽度的宽度lblStudentScoreStrip.Width = lblFullMarkStrip.Width * score / 100; / 根据不同的得分,显示不同的颜色根据不同的得分,显示不同的颜色if (score 60) lblStudentScoreStrip.BackColor = Color.Red; lblComment.Text = 该好好复习啦该好好复习啦!; / 阶段划分阶段划分第一阶段(第一阶段(20分钟)分钟)设计学员主窗体,实现学员登录功能设计学员主窗体,实现学员登录功能第二阶段(第二阶段(30分钟)分钟)设计选题窗体,实

12、现部分辅助功能设计选题窗体,实现部分辅助功能第三阶段(第三阶段(80分钟)分钟)实现随机抽题功能实现随机抽题功能第四阶段(第四阶段(80分钟)分钟)设计答题窗体,实现答题功能设计答题窗体,实现答题功能第五阶段(第五阶段(60分钟)分钟)设计答题卡窗体,实现答案显示和返回修改答案功能设计答题卡窗体,实现答案显示和返回修改答案功能第六阶段(第六阶段(30分钟)分钟)设计答题结果显示窗体,实现判题功能设计答题结果显示窗体,实现判题功能第一阶段第一阶段第一阶段(第一阶段(20分钟)分钟) 设计学员主窗体,实现学员登录功能设计学员主窗体,实现学员登录功能要求学员自己动手操作,教员巡视,解答学员提出的问题

13、要求学员自己动手操作,教员巡视,解答学员提出的问题阶段检查阶段检查针对第一阶段抽查学员的操作结果针对第一阶段抽查学员的操作结果教员给出点评或集中演示难点部分教员给出点评或集中演示难点部分第一阶段结果演示第一阶段结果演示第一阶段设计的学员主窗体:第一阶段设计的学员主窗体:第二阶段第二阶段第二阶段(第二阶段(30分钟)分钟) 设计选题窗体,实现部分辅助功能设计选题窗体,实现部分辅助功能要求学员自己动手设计选题窗体,实现科目组合框、退出要求学员自己动手设计选题窗体,实现科目组合框、退出答题的功能答题的功能教员巡视,解答学员提出的问题教员巡视,解答学员提出的问题阶段检查阶段检查针对第二阶段抽查学员的编

14、码结果针对第二阶段抽查学员的编码结果教员给出点评或集中演示难点部分教员给出点评或集中演示难点部分第二阶段结果演示第二阶段结果演示选题窗体:选题窗体:第二阶段标准代码演示第二阶段标准代码演示添加科目名称到科目组合框中:添加科目名称到科目组合框中:string sql = SELECT SubjectName FROM Subject;try SqlCommand command = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); / 执行查询执行查询 SqlDataReader dataReader =

15、command.ExecuteReader(); / 循环添加到组合框中循环添加到组合框中 while (dataReader.Read() cboSubjects.Items.Add(dataReaderSubjectName.ToString(); dataReader.Close();/ 第三阶段第三阶段第三阶段(第三阶段(80分钟)分钟) 实现随机抽题功能实现随机抽题功能要求学员自己动手操作,教员巡视,解答学员提出的问题要求学员自己动手操作,教员巡视,解答学员提出的问题阶段检查阶段检查针对第三阶段抽查学员的编码结果针对第三阶段抽查学员的编码结果抽查学员编写的完整代码,要求学员上台讲解,

16、并演示运抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果行结果教员给出点评教员给出点评第三阶段标准代码演示第三阶段标准代码演示随机抽题:随机抽题: 自定义自定义 SetSelectedQuestionIds() 方法方法Random random = new Random();int questionIndex = 0; / 随机产生的问题的索引值随机产生的问题的索引值/ 抽取每一道题并保存抽出的题目的抽取每一道题并保存抽出的题目的Idint i = 0; / 记录抽取了几道题记录抽取了几道题while (i 0) QuizHelper.remainSeconds- -; minute

17、 = QuizHelper.remainSeconds / 60; second = QuizHelper.remainSeconds % 60; / 以以 “分分:秒秒” 的形式显示时间的形式显示时间 lblTimer.Text = string.Format(0:00:1:00, minute, second); else / 提示时间到,转到结果显示界面提示时间到,转到结果显示界面 第五阶段第五阶段第五阶段(第五阶段(60分钟)分钟) 1、设计答题卡窗体、设计答题卡窗体 2、实现答案显示和返回修改答案功能、实现答案显示和返回修改答案功能要求学员自己动手操作,教员巡视,解答学员提出的问题要

18、求学员自己动手操作,教员巡视,解答学员提出的问题阶段检查阶段检查针对第五阶段抽查学员的编码结果针对第五阶段抽查学员的编码结果抽查学员编写的完整代码,要求学员上台讲解,并演示运抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果行结果教员给出点评教员给出点评第五阶段窗体效果演示第五阶段窗体效果演示答题卡窗体:答题卡窗体:第五阶段标准代码演示第五阶段标准代码演示-1窗体加载时,显示答案:窗体加载时,显示答案:/ 窗体的窗体的 Load 事件事件private void AnswerCardForm_Load(object sender, EventArgs e) int index = 0;

19、foreach (Control item in this.Controls) if (item is Label ) / 如果是标签如果是标签 index = Convert.ToInt32(item.Tag); if (index != -1) item.Text = QuizHelper.studentAnswersindex; tmrCostTime.Start(); / 启动倒计时的计时器启动倒计时的计时器第五阶段标准代码演示第五阶段标准代码演示-2点击题号,返回修改答案点击题号,返回修改答案20个题号按钮共用一个个题号按钮共用一个 Click 事件处理方法事件处理方法private

20、 void btnQuestion_Click(object sender, EventArgs e) / 获得当前点击的按钮对应的题目索引获得当前点击的按钮对应的题目索引 int questionIndex = Convert.ToInt32(Button)sender).Tag); / 打开答题窗体打开答题窗体 AnswerQuestionForm answerQuestionForm = new AnswerQuestionForm(); / 设置答题窗体显示的题目索引设置答题窗体显示的题目索引 answerQuestionForm.questionIndex = questionId;

21、 answerQuestionForm.MdiParent = this.MdiParent; answerQuestionForm.Show(); this.Close(); 第六阶段第六阶段第六阶段(第六阶段(30分钟)分钟) 设计答题结果显示窗体,实现判题功能设计答题结果显示窗体,实现判题功能要求学员自己动手操作,教员巡视,解答学员提出的问题要求学员自己动手操作,教员巡视,解答学员提出的问题阶段检查阶段检查针对第六阶段抽查学员的编码结果针对第六阶段抽查学员的编码结果抽查学员编写的完整代码,要求学员上台讲解,并演示运抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果行结果教员给出点评

22、教员给出点评第六阶段窗体效果演示第六阶段窗体效果演示结果显示窗体:结果显示窗体:第六阶段标准代码演示第六阶段标准代码演示-1显示分数:显示分数:private void QuizResultForm_Load(object sender, EventArgs e) int correctNum = 0; / 答对的题目数量答对的题目数量 for (int i = 0; i QuizHelper.questionNum; i+) if (QuizHelper.studentAnswersi = QuizHelper.correctAnswersi) correctNum+; / 计算得分计算得分

23、 int score = correctNum * 100 / QuizHelper.questionNum; lblMark.Text = score.ToString()+分分; / 确定分数条和评语确定分数条和评语 / 第六阶段标准代码演示第六阶段标准代码演示-2显示分数:显示分数:private void QuizResultForm_Load(object sender, EventArgs e) / 计算分数计算分数 . / 确定显示分数的确定显示分数的label的宽度的宽度 lblStudentScoreStrip.Width = lblFullMarkStrip.Width *

24、 score / 100; / 根据不同的得分,显示不同的颜色根据不同的得分,显示不同的颜色 if (score = 60 & score 85) / / 总结总结巩固的知识点:巩固的知识点:条件判断语句:条件判断语句:if、嵌套、嵌套 if、switch循环结构:循环结构:while、for、foreach一维数组:整型、布尔型、字符串型一维数组:整型、布尔型、字符串型自定义方法:抽取试题、获取标准答案等自定义方法:抽取试题、获取标准答案等常用的常用的 WinForms 控件:控件:Label、TextBox、ComboBox、RadioButton、Button、PictureBox、ImageList、Timer静态字段实现窗体间的数据传递:静态字段实现窗体间的数据传递: QuizHelper、DBHelper、UserHelperADO.NET 操作数据库:操作数据库:Connection、Command、DataReaderThank you

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 试题/考题 > 初中试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号