java单机版考试软件设计

上传人:第*** 文档编号:34023272 上传时间:2018-02-20 格式:DOC 页数:8 大小:318KB
返回 下载 相关 举报
java单机版考试软件设计_第1页
第1页 / 共8页
java单机版考试软件设计_第2页
第2页 / 共8页
java单机版考试软件设计_第3页
第3页 / 共8页
java单机版考试软件设计_第4页
第4页 / 共8页
java单机版考试软件设计_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《java单机版考试软件设计》由会员分享,可在线阅读,更多相关《java单机版考试软件设计(8页珍藏版)》请在金锄头文库上搜索。

1、 JAVA 课程设计报告-单机版考试软件设计学号 : 姓名 : 通过本学期 Java 基本知识的学习和 Java 上机实训的实践实习,我对 JAVA 有了一定的了解,具备了一定的 Java 编程基础。Java 是一种基于网络及 Internet 的面向对象的程序设计语言,具有跨平台、高性能、安全等特征,是计算机网络及通信应用软件开发的首选工具,也是网络编程的标准开发工具语言,在 IT 业界得到了广泛的应用。Java 对语言对未来软件的开发产生了巨大的影响,表现在:软件的需求分析、软件的开发方法、Java 语言的动画效果、软件最终产品、移动通信方面。它作为新一代编程语言,有以下特点:面向对象、平

2、台无关性、分布式、可靠性和安全性、多线程、简单性、健壮性、高性能、灵活性。考试软件需要满足以下的要求:1)采用标准化题目类型。2)自动阅卷准评分。3)组卷形式灵活方便。4)考试过程中动态显示剩余时间。5)动态保存考生数据。单机版软件设计的原则是:1)为简单起见只采用单选题一种题型。2)采用试卷库的形式,以文本文件的形式存储在考试文件夹下,考生任意抽取。3)根据命题员给出的标准答案和考生提交的答案对比,给出得分。4)本程序为考生自测,考试结束后,考生单机“查看分数”得知考试成绩。设计过程如下:首先我们要进行命题。我们要确定题型,然后抽题,接着评分,最后显示成绩。接下来我们要确定文件的格式。文件名

3、我们一般确定为:test.txt 。在第一行要确定考试时间,格式:考试用时 XXX 分钟。第二行是各题的标准答案,用大写字母表示,紧接着写,各题答案中间不能有空格。格式为:标准答案XXXXX 。第三行开始表示试题内容,要求每一行有个结束标志,即用*开始的一个特殊行。最后一行是试题结束标志,内容是。符号不能缺少,这是系统判断的依据和标志。整体形式如下图所示:程序设计:单机版考试软件分为 3 个类:主类是 Tset.java,考试界面 TestArea.java,读取试题ReadTestquestion.java。一、Test.java 是程序运行的入口,是整个软件的框架。原来的代码定义包为:im

4、port java.awt.*;import java.awt.event.*;import javax.swing.*;但 BorderLayout 边界布局管理器被定义在 java.awt 包中,因其是窗口操作需定义WindowEvent 窗口事件,而它的接口适配器为 WindowAdapter。故改为:import java.awt.BorderLayout;import java.awt.Container;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.J

5、Frame;同样的,在 TestArea.java 定义包改为:import java.awt.BorderLayout;import java.awt.Choice;import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.io.File;import java.io.

6、FilenameFilter;import javax.swing.Box;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.SwingConstants;ReadTestquestion.java 改为: impo

7、rt java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.StringTokenizer;public Test() super(计算机考试系统);testPanel = new TestArea();con = getContentPane();con.add(testPanel, BorderLayout.CENTER); /向容器中添加考试界面 addWindowListener(new WindowAdapter() /激活窗口关闭按钮public void wind

8、owClosing(WindowEvent e) System.exit(0););setVisible(true); setBounds(60, 40, 660, 460); /移动组件并调整大小con.validate(); /使内容面板中的组件生效validate();二、ReadTestquestion.java 是读取试题内容,考试后评分。import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.StringTokenizer; /提供 StringToke

9、nizer 类,用于分隔时间中的时分秒public class ReadTestquestion String filename = ; /文件名String correctAnswer = ; /正确答案 String testContent = ; /考试题目内容String selection = ; /考生答案int score = 0; /成绩long time = 0; /考试时间String temp = (dqxx.readLine().trim();StringTokenizer token = new StringTokenizer(temp, :);/允许应用程序讲字符串

10、分解为标记int hour = Integer.parseInt(token.nextToken(); /取出小时int minute = Integer.parseInt(token.nextToken(); /取出分钟int second = Integer.parseInt(token.nextToken(); /取出秒数time = 100 * (second + minute * 60 + hour * 60 * 60); /考试时间化为秒三、TestArea.java 是建立考试界面,调用 ReadTestquestion.java,提供选择试题、查看分数、计时、试题显示等功能。p

11、ublic class TestArea extends JPanel implements ActionListener, ItemListener, Runnable Choice list = null; /文件下拉列表框JTextArea stxsq = null, xxq = null; /试题显示区和信息提示区JCheckBox box; /建立复选框JButton tjbtda, dqxyt, ckfs; /三个按钮ReadTestquestion dqst = null; /读取试题JLabel welcomeLabel = null; /欢迎标签Thread countTim

12、e = null; /计时器long time = 0; /定义考试用时JTextField timeShow = null; /剩余时间显示boolean sfgbjsq = false, /是否关闭计时器sfztjs = false; /是否暂停计时JButton zthjxjs = null; /暂停或继续计时public TestArea() /构造方法list = new Choice(); String dqml = System.getProperty(user.dir); /读取系统目录信息File dir = new File(dqml); System.out.printl

13、n(dqml);FileName fileTxt = new FileName(txt); /加上扩展名 txtString fileName = dir.list(fileTxt); /列出文件名for (int i = 0; i = 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 + 秒);try Thread.sleep(1000); /每秒刷新一次显示运行结果如下图所示:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号