手机客观题测试软件开发的叙述.docx
- 文档编号:23077237
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:45
- 大小:136.38KB
手机客观题测试软件开发的叙述.docx
《手机客观题测试软件开发的叙述.docx》由会员分享,可在线阅读,更多相关《手机客观题测试软件开发的叙述.docx(45页珍藏版)》请在冰豆网上搜索。
手机客观题测试软件开发的叙述
手机客观题测试软件开发的叙述
这一学年承担对口高职升学考试的教育教学工作,想到其中客观题(四川省的,包括填空题)分值占到了近75%,因此充分结合学生同期学习的Access2010数据库,将这些题随机抽取、答案随机变幻顺序后制作成一定题量的试卷,可以让学生在Access窗体上、在浏览器上考试,还可以在手机上自我随时随地考试。
这里暂时仅上手机上的处理方式挂出,希望得到高人指点。
一、手机程序界面
各自名称如下图所示:
二、菜单设计,其内容如下代码所示:
android="> android: id="@+id/action_settings1" android: orderInCategory="100" android: showAsAction="never" android: title="@string/action_settings1"/> android: id="@+id/action_settings2" android: orderInCategory="100" android: showAsAction="never" android: title="@string/action_settings2"/> android: id="@+id/action_settings3" android: orderInCategory="100" android: showAsAction="never" android: title="@string/action_settings3"/> android: id="@+id/action_settings4" android: orderInCategory="100" android: showAsAction="never" android: title="@string/action_settings4"/> android: id="@+id/action_settings5" android: orderInCategory="100" android: showAsAction="never" android: title="@string/action_settings5"/> 菜单文字等内容如下XML文件: xmlversion="1.0"encoding="utf-8"? > 三、试题源,我将其放在arrays.xml文件中,简图见下: 共内容太多,占一万多行(当然这是根据题的多少而定的),下面仅将部分内容贴出。 1.单选题 2.多选题 3.判断题 4.填空题 四、源代码如下: packagecom.ltj.zjdkgktest; importjava.util.ArrayList; importjava.util.Random; importandroid.os.Bundle; importandroid.app.Activity; importandroid.app.AlertDialog; importandroid.content.Context; importandroid.database.Cursor; importandroid.database.sqlite.SQLiteDatabase; importandroid.database.sqlite.SQLiteOpenHelper; importandroid.graphics.Color; importandroid.view.GestureDetector; importandroid.view.GestureDetector.OnGestureListener; importandroid.view.Gravity; importandroid.view.Menu; importandroid.view.MenuItem; importandroid.view.MotionEvent; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.widget.Button; importandroid.widget.CheckBox; importandroid.widget.EditText; importandroid.widget.SeekBar; importandroid.widget.TextView; importandroid.widget.Toast; publicclassMainActivityextendsActivityimplementsOnGestureListener{ privateTextViewtvQuestion,tvStandard;//问题及标准答案文本框 privateCheckBoxchkOptionA,chkOptionB,chkOptionC,chkOptionD;//四个复选框分别记录客观题的四个或两个备选答案 privateButtonbtnAnswerOk;//确认填空题答案 privateButtonbtnFirst,btnPrev,btnNext,btnLast;//四个导航按钮,依次为第一、上一、下一和最后 privateButtonbtnShowOrHide;//显示或隐藏标准答案显示,仅在交卷后才能够起作用 privateEditTextetWriteBlank;//填写答案的文本编辑框 privateSeekBarsbNavigationBar;//导航条 privateString[]singleQuestions;//读取全部单选题 privateString[][]singleOptions;//读取全部单选题的四个备选答案 privateString[]singleStandards;//读取全部单选题的标准答案 privateString[]multiQuestions;//读取全部多选题 privateString[][]multiOptions;//读取全部多选题的四个备选答案 privateString[]multiStandards;//读取全部多选题的标准答案 privateString[]judgeQuestions;//读取全部判断题 privateString[]judgeStandards;//读取全部判断题的标准答案 privateString[]blankQuestions;//读取全部填空题 privateString[]blankStandards;//读取全部填空题的标准答案 privateintsingleTotal,multiTotal,judgeTotal,blankTotal;//各类题型分别的题量 privateintsingleRandom,multiRandom,judgeRandom,blankRandom;//各种题型应抽取的题量值 privateintrandomFirst,randomSecond,randomThird,randomFourth;//各类题型的界定范围值 privateString[]randomQuestions;//随机产生的题目放置的数组 privateString[][]randomOptions;//随机产生对应题目的四个备选项的数组 privateString[]randomStandards;//随机产生对应题目的标准答案 privateString[]yourAnswers;//考试者回答的答案 privateint[]yourScores;//评判后对应题目的成绩 privateintcurrentRecord;//当前题目所在的序号: 从0开始的,直到randomFourth-1 privatebooleansubmitYesOrNo;//是否提交,如果提交了,“? ”号按钮才可用,以显示或隐藏各题答案。 privatebooleananswerShowOrHide;//标准答案是显示还是隐藏状态,以上两个同时为真时,才显示标准答案 privateTestDbHelpermyOpenHelper;//定义一个内部类的对象——TestDbHelper的对象 privateGestureDetectorgd;// @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.initAllWidgets();//初始化各个控件 this.initReadArrayData();//读取各类题型的题目、备选项、标准答案 intrandomTotal=this.initRandomVarables();//初始化各类题型随机抽取的题量,各类题型的界定范围 this.initRandomArrays(randomTotal);//初始化将要用到的随机数组 this.randomExtractSingle(0,this.singleRandom,this.singleTotal);//随机抽取单选题 this.randomExtractMulti(this.randomFirst,this.multiRandom, this.multiTotal);//随机抽多选题 this.randomExtractJudge(this.randomSecond,this.judgeRandom, this.judgeTotal);//随机抽判断题 this.randomExtractBlank(this.randomThird,this.blankRandom, this.blankTotal);//随机抽判断题 this.sbNavigationBar .setOnSeekBarChangeListener(newSeekBar.OnSeekBarChangeListener(){ @Override publicvoidonProgressChanged(SeekBararg0,intarg1, booleanarg2){ //拖动导航条时调用 currentRecord=arg1;//当前记录号与导航条进度数一致 showEachQuestion(currentRecord);//调用显示每一个问题的事件 } @Override publicvoidonStartTrackingTouch(SeekBararg0){ //拖动导航条开始时调用 } @Override publicvoidonStopTrackingTouch(SeekBararg0){ //拖动导航条停止时调用 } }); this.btnShowOrHide.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewarg0){ //按钮显示隐藏标准答案的按钮的单击事件 answerShowOrHide=! answerShowOrHide;//原来隐藏,则后显示,如果原为显示,则这时会显示 if(! answerShowOrHide){ btnShowOrHide.setText("显示");//设置按钮上的文本 tvStandard.setVisibility(View.INVISIBLE);//标准答案文本框不显示 }else{ btnShowOrHide.setText("隐藏"); tvStandard.setVisibility(View.VISIBLE);//标准答案文本框显示 } } }); this.btnFirst.setOnClickListener(newButton.OnClickListener(){ @Override publicvoidonClick(Viewarg0){ //到首记录的按钮事件 sbNavigationBar.setProgress(currentRecord=0);//导航条移到0 } }); this.btnPrev.setOnClickListener(newButton.OnClickListener(){ @Override publicvoidonClick(Viewarg0){ //到上一记录的按钮事件 if(currentRecord>0){ sbNavigationBar.setProgress(--currentRecord);//导航条上移一条,记录号减1 } } }); this.btnLast.setOnClickListener(newButton.OnClickListener(){ @Override publicvoidonClick(Viewarg0){ //到末记录的按钮事件 sbNavigationBar.setProgress(currentRecord=randomFourth-1);//导航条移到最后 } }); this.btnNext.setOnClickListener(newButton.OnClickListener(){ @Override publicvoidonClick(Viewarg0){ //到下一记录的按钮事件 if(currentRecord sbNavigationBar.setProgress(++currentRecord);//导航条下移一条,记录号加1 } } }); this.chkOptionA.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewarg0){ //复选框A的单击事件,分单选、多选和判断而不同 allCheckBoxHandle (1);//点击第一个复选框时,调用时用参数1 } }); this.chkOptionB.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewarg0){ //复选框B的单击事件,分单选、多选和判断而不同 allCheckBoxHandle (2);//点击第一个复选框时,调用时用参数2 } }); this.chkOptionC.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewarg0){ //复选框C的单击事件,分单选、多选和判断而不同 allCheckBoxHandle(3);//点击第一个复选框时,调用时用参数3 } }); this.chkOptionD.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewarg0){ //复选框D的单击事件,分单选、多选和判断而不同 allCheckBoxHandle(4);//点击第一个复选框时,调用时用参数4 } }); this.btnAnswerOk.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewarg0){ //填空题的答案填写好后,单击此按钮则记录其中答案于对于数组yourAnswers中 StringtmpYours=etWriteBlank.getText().toString().trim();//取出你填写的答案的内容,并去前后空格 StringtmpStandard=randomStandards[currentRecord];//取出对应的标准答案 yourAnswers[currentRecord]=tmpYours;//将填写的答案记入你的答案中,以备下次到此处时,原来的内容在 if(tmpYours.equalsIgnoreCase(tmpStandard)){//忽略大小写,相等则给你成绩为3分,否则对应的记为0分 yourScores[currentRecord]=3;//记上3分 }else{ yourScores[currentRecord]=0;//记0分 } } }); this.sbNavigationBar.setMax(this.randomFourth-1);//设置导航条的最大值为全部题量值减去1 this.sbNavigationBar.setProgress(0);//设置导航条初始值为0 } protectedvoidallCheckBoxHandle(intwho){ //处理复选框单击后要做的事情,who为按钮序号 intp=currentRecord;//当前记录位置 if(p this.chkOptionA.setChecked(false);//在单击一个复选框时,设置所有复选框均为不选中状态,再根据参数who决定哪一个被选中 this.chkOptionB.setChecked(false); this.chkOptionC.setChecked(false); this.chkOptionD.setChecked(false); switch(who){//根据单击复选框时传递的序号,判断哪个复选框应该处于选中状态 case1: this.chkOptionA.setChecked(true); break; case2: this.chkOptionB.setChecked(true); break; case3: this.chkOptionC.setChecked(true); break; case4: this.chkOptionD.setChecked(true); break; } intrightAnswer=Integer.parseInt(this.randomStandards[p]);//取出标准答案的序号 this.yourAnswers[p]=""+who;//记录你当前题目的答案值于数组yourAnswers中 if(rightAnswer==who){//如果你的点击的复选框序号与标准答案的序号值一样 this.yourScores[p]=3;//记3分 }else{ this.yourScores[p]=0;//否则不得分,记为0 } }elseif(p StringmultiAnswer="";//用于暂时记录内容 multiAnswer=(this.chkOptionA.isChecked()? "1": "0") +(this.chkOptionB.isChecked()? "1": "0") +(this.chkOptionC.isChecked()? "1": "0") +(this.chkOptionD.isChecked()? "1": "
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手机 客观 测试 软件 开发 叙述