Java课程设计----标准化考试系统.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象课程设计
标准化考试系统
数学与信息工程学院
计算机科学与技术
、需求分析
二、系统运行环境
三、功能需求描述
四、总体设计
五、程序模块设计
六、使用效果图
七、总结
一、需求分析
要设计一个性能良好的管理系统,明确用户的应用环境对系统的要求是首要的和基本的。
本系统从以下三个方面对用户需求进行了分析:
1)用户的信息需求:考生能查询有关考试成绩;系统管理员能查询题库信息;系主要领导都能查询所有信息。
2)用户的处理要求:管理员能对题库和考试科目执行增加、删除和修改操作;由管理员设置考试信息,经过考试主管领导的审核后就可考试;在考试时,由考生选择试题;系统控制考试时间、考试成绩IH动生成等。
3)对系统的适应性、通用性要求:要求系统不仅能够进行计算机系考试,而旦其他系或专业稍作设置或改动也能使用本系统进行标准化网络考试。
二、系统运行环境
Windows XP SP3 以及Eclipse 2007
三、功能需求描述
本系统可以进行任何标准化考试,具有选择试题、查看得分、考试计时等功能。
四、总体设计
本标准化考试系统共由3个java源文件和若干个试题组成,试题文件为文本文件,文件名字可任意指定,但扩展名必须是txt,文件内容必须遵守如下的书写规则:
1)试题文件的第一行是全部试题的答案,答案之间不可以有空格。
2)第二行是试题文件的考试时间,如1:23:45表示的考试时间是1小时23 分45秒。
3)每道题目之间用“**”开头的字符申分割。
4)最后一,行是end
Test, java
该java文件生成的类负责创建标准化考试的主窗口。
该类含有main方法,程
序从该类开始执行,程序从该类开始执行。
在主窗口,用户可以通过下拉列表选
择一套试题,然后开始读取试题进行考试。
TestArea. java
该文件生成的类负责创建考试区域对象。
是Test窗口中的主要成员变量,考试区域提供了试题选取、查看分数、计时器、试题显示等功能。
ReadTestquestion. java
ReadTestquestion对象是TestArea试题区中的重要对象,负责读取该试题、计算分数等。
图类之间的依赖关系
五、程序模块设计
—*、主类Test
import java.awt.*;
import java.avvt.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);
addWindo\vListener(new Wi ndow Adapter()
( public void windowClosing(WindowEvent e)
{ System.exit(O);
}
});
setVisible(true);
setBounds(60,40,660,460);
con.validate();
validateQ;
)
public static void main(String args[])
(
new Test();
一、读取试题ReadTestquestion I.成员变量
3.代码
import java.io.*;
import java.uti I.*;
public class ReadTestquestion
( String filename="", correct Answer="", testContent="M, selection="";
int score=0;
long tinie=0;
boolean 完成考试=false; File f=null;
FileReader in=null; BufferedReader 读取mull;
〃存放考题文件名字的字符串
〃存放正确答案的字符串
〃试题内容
〃存放用户提交的答案
//用户的得分
〃该试题的考试用时
〃判断是否已完成全部试题
〃获取用时的“时”值
〃获取用时的“分”值
〃获取用时的“秒”值
〃将用时转换成
public void setFilename(String name) ( filename=name;
score=();
selection=H";
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.parse!nt(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)
完成考试=匕
1
public boolean get 完成考试()
(
return完成考试;
}
public String getTestContent() 〃获取试题的内容
( try(
String s=null;
StringBuffer temp=new StringBuffer();
if(读取!=null)〃如果用户选择了试题文件,读取就不是空对象
while((s=读取.readLine())!=null) 〃继续读取某个试题
(
if(s.startsWith(M**n)) 〃试题的结束标志break;
temp.append(,r\n f,+s);
if(s.startsWith(M end")) 〃整个试题文件的结束标志
in.close(); 〃关闭和当前文件的连接
读取.close。
;
完成考试=true; 〃已完成全部试题
testContent=new String(temp);
else
testContent=nevv String(n没有选择试题”);
catch(Exception e)
testContent=n试题内容为空,考试结束!!
return testContent;
public void setSelection(String s)
( se
lect
ion
=se
lect
ion
+s; 〃用户提交的答案依次尾加到selection
}
public int getScore()
( score=0;
int lengthl=selection.length(); //用户提交的第i题答案在selection中的位置
int length2=correctAnswer.length();
int min=Math.min(length 1 ,length2);
for(int i=0;ivmin;i++)
( try(
if(selection.charAt(i)==correctAnswer.charAt(i))
score++; }
catch(StringIndexOutOfBoundsException e)
( i=0;
}
}
return score;
}
public String getMessages()
(
int length 1 =selection.length(); 〃用户已提交的答案个数
int length2=correctAnswer.length();
int length=Math.min(length 1 ,length2);
String message、'正确答案:n+correctAnswer.substring(0,length)+"\n"+
“你的回答:,,+selection+,,\n,r;
return message; J 7
六、使用效果图
七、总结
Java课程设计是和室友一起完成的,在答辩前一天的时候,代码运行并没有想象中的结果,两人一起去分析,但还是无劳。
后来根据自己应有的能力,更换了题目,虽然还是遇见了很多的问题,读取不到考题文件,在认真分析检在代码,找出错误来,最后在答辩前顺利完成,但程序并不是自己所而是在网上查找过来,但在此课程设计中,学到了很多,也同时巩固了JAVA的知识,在今年还有这门课程,会花时间在此上面,努力做好!!。