已阅读5页,还剩75页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,模块九单机版考试系统的整合与测试,目标 该考试系统对各专业课程的问卷进行整理入库,以便在需要的时候能够及时、方便、快速的对学生进行各级测试,从而使考试过程趋于简单化,减少教师在这方面的工作负担。,学习本模块涉及哪些重要内容?,本模块导读 本模块是单机版考试系统的整合。主要介绍的是学生单机考试程序的设计过程,提供了试题选取,查看分数,计时器,试题显示读取试题,计算分数等功能。该考试系统对各专业课程的问卷进行整理入库,以便在需要的时候能够及时、方便、快速的对学生进行各级测试,从而使考试过程趋于简单化,减少教师在这方面的工作负担。 在以往的教学中,教师通过考试来检验学生的学习成果,而这就需要教师进行大量的工作,编写试题,排版,印刷,还要对学生的考卷进行解析,不仅耗费了大量的时间也花费了大量的精力。这种繁重的工作严重的影响了教师的工作效率,这些都成为教学现代化发展的严重阻碍。在此情况下,急需一个应用计算机来进行标准化考试的系统来实现教务工作的自动化或半自动化管理。,学习本模块涉及哪些重要内容?,本模块要点 单机版考试系统的设计 单机版考试系统的开发 单机版考试系统的发布 单机版考试系统的测试,任务一 单机版考试系统的设计,子任务1 设计内容 本系统适用各级院校的考试项目,其主要功能分为: 身份验证可以检测用户的身份。 试题选择在此可以对考试题进行选择,找到你所要的试题类型。 查分系统用于教师或学生对所答题进行核对。 计时系统对考试的时间进行规定,可以根据所需来自己制定 试题显示对考生多进行的考试内容惊醒显示的区域。 本系统适合各级院校的标准考试,可以有效的提高教师的工作效率。 整个系统的开发过程严格遵循软件工程的要求,做到模块化设计。,任务一 单机版考试系统的设计,子任务2 设计要求 根据本系统的需要本系统可以进行任何标准化考试,提供了试题选取,查看分数,计时器,试题显示读取试题,计算分数等功能。此考试系统,对各专业课程的问卷进行整理入库,以便在需要的时候能够及时、方便、快速的对学生进行各级测试,从而使考试过程趋于简单化,减少教师在这方面的工作负担。 用户可以选择一套标准化考试试题 每套试题的考试用时由试题文件或试题数据库给出。 开始读取试题后,计时器开始计划时,用户提交答案后,可以读取下一道题目。 一个提示栏显示所剩余的考试时间,当规定时间用尽后,用户将不能再读取任何题目。,任务一 单机版考试系统的设计,子任务2 总体设计 试题文件 文件内容必须遵守如下的书写规范: 试题文件的第一行是全部试题的答案,答案之间不可以有空格。 第二行是试题文件的考试用时,如0:36:45 第道题目之间用“*” 开头的字符串分割。 最后一行是endend 试题文件信息表设置需如下字段: TXTID试题文件编号,文本类型。 TXT试题文件名字,文本类型。 TIME试题文件考试用时,数字类型。,任务二 单机版考试系统的开发,子任务1 身份验证Login类 成员变量 成员变量的定义见表9-1。,表9-1 主要成员变量,任务二 单机版考试系统的开发,子任务1 身份验证Login类 成员方法 成员方法的定义见表9-2。,表9-2 主要成员方法,任务二 单机版考试系统的开发,子任务1 身份验证Login类 部分代码段 try stmt = con.createStatement(); ps = con.prepareStatement(“select PWD from LoginRecord where ID=?“); ps.setString(1, ID); rs = ps.executeQuery(); if(rs.next() if(rs.getString(“PWD“).equals(PWD) new JavaTest(); System.out.println(“OK“);,任务二 单机版考试系统的开发,子任务1 身份验证Login类 else JOptionPane.showMessageDialog( null , “你输入的密码错误!“, “登录失败“ , JOptionPane.ERROR_MESSAGE) ; else JOptionPane.showMessageDialog( null , “你输入的用户名错误!“, “登录失败“ , JOptionPane.ERROR_MESSAGE) ; catch(final SQLException e) System.err.println(“SQLException:“ + e.getMessage(); finally if(stmt != null) try,任务二 单机版考试系统的开发,子任务1 身份验证Login类 stmt.close(); catch(final SQLException e) if(con != null) try con.close(); catch(final SQLException e) ,任务二 单机版考试系统的开发,子任务2 考试系统JavaTest类 成员变量 成员变量的定义见表9-3。,表9-3 主要成员变量,任务二 单机版考试系统的开发,子任务2 考试系统JavaTest类 成员方法 成员方法的定义见表9-4。,表9-4 主要成员方法,任务二 单机版考试系统的开发,子任务2 考试系统JavaTest类 部分代码 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JavaTest extends JFrame implements ActionListener TestArea testPanel=null; Container con=null; private JMenu File = new JMenu(“文件“); private JMenu Edit = new JMenu(“编辑“); private JMenu Help = new JMenu(“帮助“);,任务二 单机版考试系统的开发,子任务2 考试系统JavaTest类 部分代码 JMenuItem Open = new JMenuItem(“打开“); JMenuItem Exit = new JMenuItem(“退出“); public JavaTest() super(“标准化模拟考试“); testPanel=new TestArea(); con=getContentPane(); con.add(testPanel,BorderLayout.CENTER); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0);,任务二 单机版考试系统的开发,子任务2 考试系统JavaTest类 部分代码 setVisible(true); setBounds(60,40,660,460); con.validate(); validate(); / 添加菜单栏 JMenuBar JMB = new JMenuBar(); File.add(Open); File.add(Exit); JMB.add(File); JMB.add(Edit);,任务二 单机版考试系统的开发,子任务2 考试系统JavaTest类 部分代码 JMB.add(Help); setJMenuBar(JMB); Open.addActionListener(this); Exit.addActionListener(this); / 添加结束 ,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 成员变量,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 成员方法 成员方法的定义见表9-6。,表9-6 主要成员方法,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 public TestArea() list= new Choice(); String currentdir=System.getProperty(“user.dir“); System.out.println(currentdir); File dir=new File(currentdir); FileName fileTxt=new FileName(“txt“); String fileName=dir.list(fileTxt); for(int i=0;ifileName.length;i+) list.add(fileNamei); ,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 testplay=new JTextArea(15,12); testplay.setLineWrap(true); testplay.setWrapStyleWord(true); testplay.setFont(new Font(“TimesRoman“,Font.PLAIN,14); testplay.setForeground(Color.blue); messagearea=new JTextArea(8,8); messagearea.setForeground(Color.blue); messagearea.setLineWrap(true); messagearea.setWrapStyleWord(true); countTime=new Thread(this); String s=“A“,“B“,“C“,“D“;,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 box=new JCheckBox4; for(int i=0;i4;i+) boxi=new JCheckBox(si); pauseorcontinuetime=new JButton(“暂停计时“); pauseorcontinuetime.addActionListener(this); commitresult=new JButton(“提交该题答案“); readnext=new JButton(“读取第一题“); readnext.setForeground(Color.blue); commitresult.setForeground(Color.blue);,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 viewscore=new JButton(“查看分数“); viewscore.setForeground(Color.blue); commitresult.setEnabled(false); commitresult.addActionListener(this); readnext.addActionListener(this); viewscore.addActionListener(this); list.addItemListener(this); readtests=new ReadTestquestion(); JPanel pAddbox=new JPanel(); for(int i=0;i4;i+) pAddbox.add(boxi); ,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 Box boxH1=Box.createVerticalBox(), boxH2=Box.createVerticalBox(), baseBox=Box.createHorizontalBox(); boxH1.add(new JLabel(“选择试题文件“); boxH1.add(list); boxH1.add(new JScrollPane(messagearea); boxH1.add(viewscore); timeShow=new JTextField(20); timeShow.setHorizontalAlignment(SwingConstants.RIGHT); timeShow.setEditable(false); JPanel p1=new JPanel();,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 p1.add(new JLabel(“剩余时间:“); p1.add(timeShow); p1.add(pauseorcontinuetime); boxH1.add(p1); boxH2.add(new JLabel(“试题内容:“); boxH2.add(new JScrollPane(testplay); JPanel p2=new JPanel(); p2.add(pAddbox); p2.add(commitresult); p2.add(readnext); boxH2.add(p2); baseBox.add(boxH1);,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 baseBox.add(boxH2); setLayout(new BorderLayout(); add(baseBox,BorderLayout.CENTER); welcomeLabel=new JLabel(“欢迎考试,提高英语水平“,JLabel.CENTER); welcomeLabel.setFont(new Font(“隶书“,Font.PLAIN,24); welcomeLabel.setForeground(Color.blue); add(welcomeLabel,BorderLayout.NORTH); public void itemStateChanged(ItemEvent e),任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 timeShow.setText(null); iclosetime=false; ipausetime=false; pauseorcontinuetime.setText(“暂停计时“); String name=(String)list.getSelectedItem(); readtests.setFilename(name); readtests.settestover(false); time=readtests.getTime(); if(countTime.isAlive() iclosetime=true; countTerrupt(); ,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 countTime=new Thread(this); messagearea.setText(null); testplay.setText(null); readnext.setText(“读取第一题“); commitresult.setEnabled(false); readnext.setEnabled(true); welcomeLabel.setText(“欢迎考试,你选择的试题:“+readtests.getFilename(); public void actionPerformed(ActionEvent e) if(e.getSource()=readnext),任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 readnext.setText(“读取下一题“); commitresult.setEnabled(true); String contentTest=readtests.getTestContent(); testplay.setText(contentTest); messagearea.setText(null); readnext.setEnabled(false); try countTime.start(); catch(Exception event) ,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 if(e.getSource()=commitresult) readnext.setEnabled(true); commitresult.setEnabled(false); String answer=“?“; for(int i=0;i4;i+) if(boxi.isSelected() answer=boxi.getText(); boxi.setSelected(false); break; ,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 readtests.setSelection(answer); if(e.getSource()=viewscore) int score=readtests.getScore(); String messages=readtests.getMessages(); messagearea.setText(“分数:“+score+“n“+messages); if(e.getSource()=pauseorcontinuetime) if(ipausetime=false) pauseorcontinuetime.setText(“继续计时“); ipausetime=true; else if(ipausetime=true) ,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 pauseorcontinuetime.setText(“暂停计时“); ipausetime=false; countTerrupt(); public synchronized void run() while(true) if(time=0) iclosetime=true; countTerrupt();,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 commitresult.setEnabled(false); readnext.setEnabled(false); timeShow.setText(“用时尽,考试结束“); else if(readtests.gettestover() iclosetime=true; timeShow.setText(“考试效果:分数*剩余时间(秒)= “+1.0*readtests.getScore()*(time/1000); countTerrupt(); commitresult.setEnabled(false); readnext.setEnabled(false);,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 else if(time=1) time=time-1000; long leftTime=time/1000; long leftHour=leftTime/3600; long leftMinute=(leftTime-leftHour*3600)/60; long leftSecond=leftTime%60; timeShow.setText(“+leftHour+“小时“+leftMinute+“分“+leftSecond+“秒“); ,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 try Thread.sleep(1000); catch(InterruptedException ee) if(iclosetime=true) return ; while(ipausetime=true) try wait(); catch(InterruptedException ee) if(ipausetime=false),任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 文本文件方式部分代码 notifyAll(); ,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 数据库方式部分代码 import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.*; import java.sql.*; public class TestArea extends JPanel implements ActionListener,ItemListener,Runnable Choice list=null; JTextArea testplay=null,messagearea=null; JCheckBox box;,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 数据库方式部分代码 JButton commitresult,readnext,viewscore; ReadTestquestion readtests=null; JLabel welcomeLabel=null; Thread countTime=null; long time=0; JTextField timeShow=null; boolean iclosetime=false, ipausetime=false; JButton pauseorcontinuetime=null;,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 数据库方式部分代码 private static final String DBDRIVER=“sun.jdbc.odbc.JdbcOdbcDriver“; private static final String DBURL=“jdbc:odbc:DBQTEST“; public TestArea() list= new Choice(); Connection con = null; Statement stmt = null; ResultSet rs = null; try Class.forName(DBDRIVER); con = DriverManager.getConnection(DBURL);,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 数据库方式部分代码 System.out.println(“与数据库建立连接成功!sas“); catch (final ClassNotFoundException e) System.err.println(“ClassNotFoundException:“ + e.getMessage(); System.exit(1); catch (final SQLException e) System.err.println(“SQLException:“ + e.getMessage(); System.exit(1); try,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 数据库方式部分代码 stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = stmt.executeQuery(“select * from TXT“); rs.last(); int n=rs.getRow(); String txtname=new Stringn; int j=0; rs.beforeFirst(); while(rs.next() txtnamej=rs.getString(3);,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 数据库方式部分代码 j+; for(int i=0;itxtname.length;i+) System.out.println(txtnamei); list.add(txtnamei); catch(final SQLException e1) System.err.println(“SQLException:“ + e1.getMessage(); finally if(stmt != null) try,任务二 单机版考试系统的开发,子任务3 考试区域TestArea类 数据库方式部分代码 stmt.close(); catch(final SQLException e) if(con != null) try con.close(); catch(final SQLException e) ,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 成员变量 成员变量的定义见表9-7。,表9-7 主要成员变量,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 成员方法,表9-8 主要成员方法,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 文本文件方式部分代码 import java.io.*; import java.util.*; public class ReadTestquestion String filename=“, correctAnswer=“, testContent=“ , selection=“ ; int score=0; long time=0; boolean testover=false; File f=null; FileReader in=null;,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 文本文件方式部分代码 BufferedReader read=null; public void setFilename(String name) filename=name; score=0; selection=“; try if(in!=null,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 文本文件方式部分代码 read=new BufferedReader(in); correctAnswer=(read.readLine().trim(); String temp=(read.readLine().trim() ; StringTokenizer token=new StringTokenizer(temp,“:“); int hour=Integer.parseInt(token.nextToken() ; int minute=Integer.parseInt(token.nextToken(); int second=Integer.parseInt(token.nextToken(); time=1000*(second+minute*60+hour*60*60); catch(Exception e) testContent=“没有选择试题“;,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 文本文件方式部分代码 public String getFilename() return filename; public long getTime() return time; public void settestover(boolean b) testover=b; public boolean gettestover() return testover;,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 文本文件方式部分代码 public String getTestContent() try String s=null; StringBuffer temp=new StringBuffer(); if(read!=null) while(s=read.readLine()!=null) if(s.startsWith(“*“) break; temp.append(“n“+s);,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 文本文件方式部分代码 if(s.startsWith(“endend“) in.close(); read.close(); testover=true; testContent=new String(temp); else testContent=new String(“没有选择试题“); catch(Exception e) testContent=“试题内容为空,考试结束!“;,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 文本文件方式部分代码 return testContent; public void setSelection(String s) selection=selection+s; public int getScore() score=0; int length1=selection.length(); int length2=correctAnswer.length(); int min=Math.min(length1,length2); for(int i=0;imin;i+) try,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 文本文件方式部分代码 if(selection.charAt(i)=correctAnswer.charAt(i) score+; catch(StringIndexOutOfBoundsException e) i=0; return score; public String getMessages() int length1=selection.length(); int length2=correctAnswer.length(); int length=Math.min(length1,length2);,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 文本文件方式部分代码 String message=“正确答案:“+correctAnswer.substring(0,length)+“n“+ “你的回答:“+selection+“n“; return message; 数据库方式部分代码 import java.io.*; import java.util.*; import java.sql.*; public class ReadTestquestion,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 数据库方式部分代码 String filename=“, correctAnswer=“, testContent=“ , first=“,second=“,third=“,fourth=“, selection=“ ; int score=0; long time=0; int record=0; boolean testover=false; private static final String DBDRIVER=“sun.jdbc.odbc.JdbcOdbcDriver“; private static final String DBURL=“jdbc:odbc:DBQTEST“;,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 数据库方式部分代码 Connection con = null; ResultSet rs = null; public void setFilename(String name) filename=name; score=0; selection=“; try Class.forName(DBDRIVER); con = DriverManager.getConnection(DBURL); catch (final ClassNotFoundException e) ,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 数据库方式部分代码 System.err.println(“ClassNotFoundException:“ + e.getMessage(); System.exit(1); catch (final SQLException e) System.err.println(“SQLException:“ + e.getMessage(); System.exit(1); try stmt = con.prepareStatement(“select * from txt where txt.TXT=?“); stmt.setString(1,filename); rs=stmt.executeQuery(); if(rs.next(),任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 数据库方式部分代码 time=1000*rs.getInt(“TIME“); catch(final SQLException e1) System.err.println(“SQLException:“ + e1.getMessage(); catch(Exception e) testContent=“试题内容为空,考试结束!“; try stmt = con.prepareStatement(“select * from tests INNER JOIN txt on txt.TXTID=tests.TXTID where txt.TXT=? “);,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 数据库方式部分代码 stmt.setString(1,filename); rs=stmt.executeQuery(); catch(final SQLException e1) System.err.println(“SQLException:“ + e1.getMessage(); public String getFilename() return filename; public long getTime() return time; public void settestover(boolean b) ,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 数据库方式部分代码 testover=b; public boolean gettestover() return testover; public String getTestContent() try String s=null; StringBuffer temp=new StringBuffer(); if(rs.next() temp.append(rs.getRow()+“.“); s=rs.getString(“title“);,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 数据库方式部分代码 temp.append(s); s=rs.getString(“first“); temp.append(“n“+s); s=rs.getString(“second“); temp.append(“n“+s); s=rs.getString(“third“); temp.append(“n“+s); s=rs.getString(“fourth“); temp.append(“n“+s); testContent=new String(temp);,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 数据库方式部分代码 correctAnswer+=rs.getString(“result“); else testContent=new String(“试题内容为空,考试结束!“); catch(Exception e) testContent=“请选择试题文件!“; return(testContent); public void setSelection(String s) selection=selection+s;,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 数据库方式部分代码 public int getScore() score=0; int length1=selection.length(); int length2=correctAnswer.length(); int min=Math.min(length1,length2); for(int i=0;imin;i+) try if(selection.charAt(i)=correctAnswer.charAt(i) score+; catch(StringIndexOutOfBoundsException e) ,任务二 单机版考试系统的开发,子任务4 读取试题ReadTestquestion类 数据库方式部分代码 i=0; return score; public String getMessages() int length1=selection.length(); int length2=correctAnswer.length(); int length=Math.min(length1,length2); String message=“正确答案:“+correctAnswer.sub
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社会工作者社会工作实务初级考试题练习题答案
- 2025年网络工程师考试及答案
- 咨询合同的重要性与要素
- 系统集成工程师面试题及答案
- 视频创推员考试题及答案
- 农村商业银行秋招题库及答案
- 2025年黄山市公安辅警招聘知识考试题库及答案
- 建设银行秋招笔试题及答案
- 国家电网国网招聘考试笔试试题及答案
- 小狗的奇妙冒险童话故事13篇范文
- 安全生产相关工作主要业绩及研究成果
- 机房运维题考试题及答案
- 会诊制度存在问题及整改措施
- 黄河防汛业务知识培训课件
- 大学生职业规划大赛《生物科学专业》生涯发展展示
- 2025年公务员公开遴选笔试试题及答案(综合类)
- 电流互感器知识培训
- 湖南省邵阳市2023-2024学年九年级上学期化学期中考试试卷(含答案)
- 谷歌2023年度环境、社会与公司治理报告:为NGO与学术机构提供可持续发展数据
- 小学生保险知识讲座
- 2025年正版三力测试题库及答案
评论
0/150
提交评论