欢迎来到天天文库
浏览记录
ID:39456175
大小:581.10 KB
页数:44页
时间:2019-07-03
《《在线答题模块》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MySchool在线答题模块问题描述MySchool考试管理系统在线答题模块:1、学员登录2、选题3、答题4、查看答题卡5、自动阅卷评分要求完成在线答题模块相关界面设计及功能实现2MySchool数据库结构介绍数据库由教员提供在线答题模块使用到的数据表3问题分析-1需要使用到的数据表:Student:学员信息表Subject:科目信息表Question:题目信息表4问题分析-2主要功能分析1、登录学员身份登录,用户验证记录登录的用户名和登录类型2、在线答题选题:选择试题的科目抽题:随机抽取20道题答题:答题时间为20分钟,在程序中保存答案修改答
2、案:通过答题卡返回修改判题:计算得分结果显示:分数、分数条、表情、评语5问题分析-3主要界面分析登录界面:与上机课的相同学员主界面选题界面答题界面答题卡界面答题结果界面6问题分析-4辅助类分析DBHelper类:数据库连接字符串、数据库连接对象UserHelper类:当前登录用户名、登录类型QuizHelper类:1、totalSeconds:整型,答题限制时间2、remainSeconds:整型,剩余时间3、allQuestionIds:整型数组,所有题目Id4、selectedStates:布尔型数组,表示题目是否已被抽中5、questio
3、nNum:整型,题目数量6、selectedQuestionIds:整型数组,选出的题目Id7、correctAnswers:字符串型数组,标准答案8、studentAnswers:字符串型数组,学员用户的答案7问题分析-4QuizHelper类中几个数组的关系:selectedStates题目是否被抽中0123456allQuestionIds所有题目Id1345911100123456selectedQuestionIds选出的题目Id012correctAnswers标准答案012studentAnswers学员用户的答案012false
4、falsefalsefalsefalsefalsefalse3truetrue410true未回答未回答未回答DBC将该科目所有题目的Id取出题目状态都是未选中随机抽3道题,索引1、2、5被抽中取出抽中试题的标准答案用户答案都置为“未回答”8难点分析-1随机抽取试题:Randomrandom=newRandom();intquestionIndex=0;//随机产生的问题的索引值inti=0;while(i5、ionsIds.Length);//如果没有被选中过,可以选择if(QuizHelper.selectedStates[questionIndex]==false){//……}}随机数对象生成小于指定最大值的非负随机数9难点分析-2每次显示一道题目:答题窗体增加questionIndex字段,记录当前显示的题目的索引值根据selectedQuestionIds[],利用DataReader读取题目信息10难点分析-3倒计时的时钟显示:QuizHelper.remainSecond--;minute=QuizHelper.remainSecond6、/60;second=QuizHelper.remainSecond%60;//控制显示格式lblTimer.Text=string.Format("{0:00}:{1:00}",minute,second);控制显示两位数字11难点分析-4答题卡显示答案:用20个标签显示答案将题目的索引写在标签的Tag中privatevoidAnswerCardForm_Load(objectsender,EventArgse){intindex=0;foreach(Controliteminthis.Controls){if(itemisLabel)//如7、果是标签{index=Convert.ToInt32(item.Tag);item.Text=QuizHelper.studentAnswers[index];}}//……}循环每一个控件判断控件是不是标签12难点分析-5从答题卡返回修改答案:用20个按钮显示题号将题目的索引写在Tag中20个按钮共用一个Click事件处理方法privatevoidbtnQuestion_Click(objectsender,EventArgse){//获得当前点击的按钮对应的题目索引intquestionIndex=Convert.ToInt32(((Butt8、on)sender).Tag);//自定义方法,打开答题窗体ShowAnswerQuestionForm(questionIndex);}13难点分析
5、ionsIds.Length);//如果没有被选中过,可以选择if(QuizHelper.selectedStates[questionIndex]==false){//……}}随机数对象生成小于指定最大值的非负随机数9难点分析-2每次显示一道题目:答题窗体增加questionIndex字段,记录当前显示的题目的索引值根据selectedQuestionIds[],利用DataReader读取题目信息10难点分析-3倒计时的时钟显示:QuizHelper.remainSecond--;minute=QuizHelper.remainSecond
6、/60;second=QuizHelper.remainSecond%60;//控制显示格式lblTimer.Text=string.Format("{0:00}:{1:00}",minute,second);控制显示两位数字11难点分析-4答题卡显示答案:用20个标签显示答案将题目的索引写在标签的Tag中privatevoidAnswerCardForm_Load(objectsender,EventArgse){intindex=0;foreach(Controliteminthis.Controls){if(itemisLabel)//如
7、果是标签{index=Convert.ToInt32(item.Tag);item.Text=QuizHelper.studentAnswers[index];}}//……}循环每一个控件判断控件是不是标签12难点分析-5从答题卡返回修改答案:用20个按钮显示题号将题目的索引写在Tag中20个按钮共用一个Click事件处理方法privatevoidbtnQuestion_Click(objectsender,EventArgse){//获得当前点击的按钮对应的题目索引intquestionIndex=Convert.ToInt32(((Butt
8、on)sender).Tag);//自定义方法,打开答题窗体ShowAnswerQuestionForm(questionIndex);}13难点分析
此文档下载收益归作者所有