第7讲 CS模式考试软件的设计(一)_第1页
第7讲 CS模式考试软件的设计(一)_第2页
第7讲 CS模式考试软件的设计(一)_第3页
第7讲 CS模式考试软件的设计(一)_第4页
第7讲 CS模式考试软件的设计(一)_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

第7讲C/S模式

考试软件的设计(一)HuFuxiangSoftwareschoolChangshaSocialWorkCollegeChapter7TestSystemProgrammingBasingonC/SModel预习与提问1、B/S模式和C/S软件的发布有什么异同?2、简要说明C/S软件开发过程所要用到的类。

3、如何定义线程类Thread?在开发哪些软件时要用到线程类?本讲任务单1、考试软件功能介绍。2、考试题及评分标准设计。3、考试软件界面设计及组件分析4、服务器端界面设计原则及主要类。7.1C/S模式网络考试系统功能介绍一、软件功能设计标准化试题,全部采用单选题,能够考试、评分、计时,采用C/S模式;采用试卷库形式,文件名确定,客户端自动读取试题;试题、标准答案、考试用时全部放在同一个文本文件中,置于服务器上;可以多人同时在线考试。7.1C/S模式网络考试系统功能介绍二、设计要求考生读取试卷后点击“开始考试”按钮系统自动计时,提交本题答案前不能读取下一道题;动态显示考试的剩余时间,如果时间到,考生不可以再做题;每做完一小题,系统会自动将结果保存在服务器,不要用户另外保存;全部试题做完可以查看分数并显示是否通过(60分及格)。7.2命题一、设计原则题型:网络考试系统一般采用标准化题型,即单选、多选、填空、判断;抽题:采用随机抽题,即根据题型和题量抽取题目或抽取试卷;评分:根据命题员给出的标准答案与考生提交的答案对比,确定得分;试题文件以文本文件或者数据库表的形式保存在服务器上,供考生调用。本软件只用单选题一种题型,用文本文件形式存放在服务器上,标准答案是单独的一行,保存在试题文件中。考试结束后,成绩保存在服务器的文件testscore.txt中,格式是:/06 成绩 757.2命题二、命题原则文件名:test.txt第一行:确定考试时间,格式:考试用时@xxx分钟;第二行:各题标准答案,用大写字母表示,紧接着写,各题答案中间不能有空格。格式是:标准答案@XXXXXXXXXXXX;从第三行开始:表示试题内容,要求每一题有个结束标志,即用**开始的一个特殊行;最后一行:试题结束标志,内容是:试题结束。@符号不能缺少,这是系统判断的依据和标志。7.2命题三、样卷考试用时@5分钟标准答案@BDBA1.JAVA是一种()的语言。A、面向过程B、面向对象C、面向过程同时面向对象D、无法确定******第1题结束**2.以下软件中,()是数据库软件。A、WindowsB、OfficeC、IED、SQLSERVER*******3.JAVA通过()访问数据库。A、DBMSB、JDBCC、ODBCD、XML***********4.JAVA中,通过()命令引入包。A、importB、downloadC、javacD、include

***********试题结束7.3总体设计一、运行界面1、服务器端7.3总体设计一、运行界面2、客户端开始界面考试界面7.3总体设计一、运行界面2、客户端读取下一题界面7.3总体设计二、服务器端程序的设计ReadTestFile.java:读取试题文件的类,从服务器上读取试题文件test.txt,并显示试题内容。ServerThread.java:多线程通信类,调用ReadTestFile类,通过套接字实现与客户的通信,同时为每个客户创建一个ServerThread子类,完成一对多的通信联系。MutliServer.java:服务器主类,服务器应用程序,创建ServerThread对象,实现服务器/客户机之间数据的传递通信。7.3总体设计三、客户端程序的设计TestPanel.java:客户端考试界面,构造图形用户界面,为单选和按钮注册监听器,并实现ActionListener和Runnable两个接口,它们在各自的方法与服务器通信。ClientFrame.java:客户端主类应用程序,通过调用TestPanel的构造方法创建TestPanel实例,与服务器建立连接。7.4服务器端读取试题文件类的设计一、类ReadTestFile的成员属性名称类型功能bufReaderBufferReader读取试题文件的缓冲区流testTimeint考试时间correctAnswerString试题文件中的正确答案testQuestionString题目内容7.4服务器端读取试题文件类的设计二、类ReadTestFile的主要方法名称类型功能ReadTestFileReadTestFile构造方法,创建ReadTestFile实例getTestTimeint返回考试时间getTestQuestionString返回每一道试题的内容7.4服务器端读取试题文件类的设计三、类方法介绍1、String类的方法intindexOf():字符串中指定字符的位置;StringsubString():取子字符串;booleanstartsWith("XXX"):是否以XXX开头;Stringtrim():压缩字符串前后的空格2、BufferReader类的方法StringreadLine():读取一行信息;voidclose();关闭缓冲区流7.4服务器端读取试题文件类的设计四、代码实现(1/4)importjava.io.*;publicclassReadTestFile{

privateBufferedReader

bufReader;

//读取试题文件的缓冲流 publicint

testTime;

//试题规定考试用时 privateStringcorrectAnswer;

//正确答案ReadTestFile代码实现(2/4)publicReadTestFile()throwsIOException{

bufReader=newBufferedReader(new

FileReader("test.txt"));

//打开文件, //下面从文件第1行提取规定用时 Strings=bufReader.readLine();//读取文件第1行

inti1=s.indexOf('@');//得到字符@的索引值

inti2=s.indexOf("分钟");//得到字符串"分钟"的索引值s=s.substring(i1+1,i2);//得到用分钟表示的考试规定用时

testTime=Integer.parseInt(s)*60*1000;

//考试规定用时转化为毫秒,下面从文件第2行提取标准答案 s=bufReader.readLine().trim();

//读取文件第2行的标准答案,并去掉字符串前后的空格

correctAnswer=s.substring(s.indexOf("@")+1);

//得到字符@后的标准答案 }ReadTestFile代码实现(3/4)publicint

getTestTime(){return

testTime;}publicStringgetCorrectAnswer(){ returncorrectAnswer;} //读取试题中的每一题并返回,读到文件最后

publicStringgetTestQuestion(){ StringtestQuestion="";try{

StringBuffertemp=newStringBuffer();//缓冲字符串

Strings="";//存放试题的每一行

if(bufReader!=null){

while((s=bufReader.readLine())!=null){

//读第3行的试题内容ReadTestFile代码实现(4/4)if(s.startsWith(“**”))

//以**开始,表明该题结束

break;

temp.append("\n"+s);

if(s.startsWith("试题结束"))

bufReader.close();

}//对应第27行,循环结束

testQuestion=temp.toString();//每个试题内容 }//对应第26行,表示缓冲区为空}catch(Exceptione){testQuestion="试题结束";}returntestQuestion; }//对应第18行,方法getCorrectAnswer结束}//对应第2行,主类结束7.5服务器端线程类的设计一、类ServerThread的成员属性名称类型功能connectToClientSocket套接字,发送/接收客户端的数据inFromClientDataInputStream输入流,使用readUTF方法读取客户机发送过来的UTF字符串outToClientDataOutputStream输出流,使用writeUTF方法向客户机发送UTF字符串readTestFileReadTestFile调用ReadTestFile类,实例化,读取考试文件内容,并发送给客户端selectedAnswerString保存考生答题结果,用于评分7.5服务器端线程类的设计二、类ServerThread的主要方法名称类型功能ServerThreadServerThread构造方法,参数socket传给Socket类对象connectToClient,初始化输入/输出流,启动线程。runvoid线程方法,由Thread.start()启动,接收客户数据,向客户发送数据socketClosingint评分并计算成绩saveTestScorevoid将用户名和成绩保存到文件testscore7.5服务器端线程类代码的设计//ServerThread.java(1/13)importjava.io.*;import.*;importjava.util.*;publicclassServerThreadextendsThread{ pr

温馨提示

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

评论

0/150

提交评论