资源描述
面向对象课程设计题 目 标准化考试系统 学 院 数学与信息工程学院 专 业 计算机科学与技术 目 录一、需求分析二、系统运行环境三、功能需求描述四、总体设计五、程序模块设计六、使用效果图七、总结一、需求分析要设计一个性能良好的管理系统,明确用户的应用环境对系统的要求是首要的和基本的。本系统从以下三个方面对用户需求进行了分析:1) 用户的信息需求:考生能查询有关考试成绩;系统管理员能查询题库信息;系主要领导都能查询所有信息。2) 用户的处理要求:管理员能对题库和考试科目执行增加、删除和修改操作;由管理员设置考试信息,经过考试主管领导的审核后就可考试;在考试时,由考生选择试题;系统控制考试时间、考试成绩自动生成等。3) 对系统的适应性、通用性要求:要求系统不仅能够进行计算机系考试,而且其他系或专业稍作设置或改动也能使用本系统进行标准化网络考试。二、系统运行环境 Windows XP SP3以及 Eclipse 2007三、功能需求描述本系统可以进行任何标准化考试,具有选择试题、查看得分、考试计时等功能。四、 总体设计本标准化考试系统共由3个java源文件和若干个试题组成,试题文件为文本文件,文件名字可任意指定,但扩展名必须是txt,文件内容必须遵守如下的书写规则:1) 试题文件的第一行是全部试题的答案,答案之间不可以有空格。2) 第二行是试题文件的考试时间,如1:23:45表示的考试时间是1小时23分45秒。3) 每道题目之间用“*”开头的字符串分割。4) 最后一行是endTest.java该java文件生成的类负责创建标准化考试的主窗口。该类含有main方法,程序从该类开始执行,程序从该类开始执行。在主窗口,用户可以通过下拉列表选择一套试题,然后开始读取试题进行考试。TestArea.java该文件生成的类负责创建考试区域对象。是Test窗口中的主要成员变量,考试区域提供了试题选取、查看分数、计时器、试题显示等功能。ReadTestquestion.javaTest(主类)ReadTestquestion对象是TestArea试题区中的重要对象,负责读取该试题、计算分数等。 TestArea ReadTestquestion 图 类之间的依赖关系五、程序模块设计一、主类Test 1成员变量成员变量描述变量类型名称考试区域TestAreatestPanel 2方法名称功能备注Test创建程序窗口构造方法main程序开始运行 3. 代码 import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Test extends JFrame TestArea testPanel=null; Container con=null; public Test() super(标准化考试系统); testPanel=new TestArea(); con=getContentPane(); con.add(testPanel,BorderLayout.CENTER); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); setVisible(true); setBounds(60,40,660,460); con.validate(); validate(); public static void main(String args) new Test(); 一、读取试题ReadTestquestion1 成员变量描述变量类型名称文件名Stringfilename正确答案StringcorrectAnswer试题内容StringtestContent用户提交的答案Stringselection用户得分intscore试题用时longtime读取试题的流FileReaderin2方法名称功能备注setFilename设置试题文件的名称getFilename获取试题文件的名称gettime获取考试用时set 完成考试设置是否完成考试get 完成考试判断是否完成考试getTestContent获取试题内容getSelection排列用户提交的答案getScore计算用户得分getMessage查阅分数和正确答案3. 代码 import java.io.*;import java.util.*;public class ReadTestquestion String filename=, /存放考题文件名字的字符串 correctAnswer=, /存放正确答案的字符串 testContent= , /试题内容 selection= ; /存放用户提交的答案 int score=0; / 用户的得分 long time=0; /该试题的考试用时 boolean 完成考试=false; /判断是否已完成全部试题 File f=null; FileReader in=null; BufferedReader 读取=null; public void setFilename(String name) filename=name; score=0; selection=; try if(in!=null&读取!=null) in.close(); /关闭与前一文件的连接 读取.close(); f=new File(filename); in=new FileReader(f); 读取=new BufferedReader(in); /读取试题文件的第1行,即标准答案 correctAnswer=(读取.readLine().trim(); /去掉前后空格 String temp=(读取.readLine().trim() ; /读取试题文件的第2行,即考试用时 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=没有选择试题; public String getFilename() return filename; public long getTime() return time; public void set完成考试(boolean b) 完成考试=b; public boolean get完成考试() return 完成考试; public String getTestContent() /获取试题的内容 try String s=null; StringBuffer temp=new StringBuffer(); if(读取!=null) /如果用户选择了试题文件,读取就不是空对象 while(s=读取.readLine()!=null) /继续读取某个试题 if(s.startsWith(*) /试题的结束标志 break; temp.append(n+s); if(s.startsWith(end) /整个试题文件的结束标志 in.close(); /关闭和当前文件的连接 读取.close(); 完成考试=true; /已完成全部试题 testContent=new String(temp); else testContent=new String(没有选择试题); catch(Exception e) testContent=试题内容为空,考试结束!; return testContent; public void setSelection(String s) selection=selection+s; /用户提交的答案依次尾加到 selection public int getScore() score=0; int length1=selection.length(); /用户提交的第i题答案在selection中的位置 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) i=0; return score; public String getMessages() int length1=selection.length(); /用户已提交的答案个数 int length2=correctAnswer.length(); int length=Math.min(length1,length2); String message=正确答案:+correctAnswer.substring(0,length)+n+ 你的回答:+selection+n; return message; 六、 使用效果图 七、总结 Java课程设计是和室友一起完成的,在答辩前一天的时候,代码运行并没有想象中的结果,两人一起去分析,但还是无劳。后来根据自己应有的能力,更换了题目,虽然还是遇见了很多的问题,读取不到考题文件,在认真分析检查代码,找出错误来,最后在答辩前顺利完成,但程序并不是自己所写,而是在网上查找过来,但在此课程设计中,学到了很多,也同时巩固了JAVA的知识,在今年还有这门课程,会花时间在此上面,努力做好!
展开阅读全文