⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 driver.java

📁 远程电子考试系统
💻 JAVA
字号:
package fangsoft.testcenter.driver;

import java.text.SimpleDateFormat;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import fangsoft.testcenter.model.Choice;
import fangsoft.testcenter.model.Constants;
import fangsoft.testcenter.model.Customer;
import fangsoft.testcenter.model.Question;
import fangsoft.testcenter.model.Test;
import fangsoft.testcenter.model.Testable;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

public class Driver {

	/**
	 * @param args
	 */
	static String customerName;

	public static void main(String[] args) throws IOException {
		Testable myTest = null;
		System.out.println(Constants.APPNAME + " " + Constants.APPVERSION);
		myTest = Test.load(Constants.PERSIST_FILE_NAME);
		String gd;
		gd = getDate();
		int MAX_RETRIES = 3, count = 0;
		String userId = null, password = null;
		System.out.println("欢迎你,参加fangsoft考试中心的考试!");
		System.out.println("今天是" + gd);
		String strings = System.getProperty("os.name");
		System.out.println("你的操作系统是" + strings);
		System.out.println("参加考试前请先登录,输入完成后按Enter确认:");
		for (count = 0; count < MAX_RETRIES; count++) {
			BufferedReader br = new BufferedReader(new InputStreamReader(
					System.in));
			System.out.println("输入用户名称:");
			userId = br.readLine();
			System.out.println("输入用户密码:");
			password = br.readLine();
			customerName = userId;
			if (Customer.login(userId, password)) {
				break;
			}
			System.out.println("用户名或密码错误不能登录,重新登录." + "登录" + MAX_RETRIES
					+ "次不成功,系统将退出." + "这是" + (count + 1) + "次");
		}
		if (count == MAX_RETRIES) {
			System.out.println("登录" + MAX_RETRIES + "次不成功,系统退出");
			System.exit(0);
		}

		System.out.println("确认参加考试吗?");
		System.out.println("1. 是: y");
		System.out.println("2. 否,退出: n");
		BufferedReader br1 = new BufferedReader(
				new InputStreamReader(System.in));
		String theRead = br1.readLine();

		if (theRead.equals("n")) {
			System.out.println("系统退出!");
			System.exit(0);
		} else {
			System.out.println("==========开始考试==========");
			System.out.println("考试名称: fangsoft Java知识测试");
			System.out.println("考试简述: www.fangsoft.org的java知识测试");
			System.out.println("考试问题: 3");
			System.out.println("考试时间: 10分钟");
			System.out.println("现在参加考试吗?");
			System.out.println("1. 是:      y");
			System.out.println("2. 否,退出: n");
		}
		BufferedReader br2 = new BufferedReader(
				new InputStreamReader(System.in));
		String theRead2 = br2.readLine();
		if (theRead2.equals("y")) {
			;
		} else {
			System.out.println("系统退出!");
			System.exit(0);
		}

		displayTestProperties(myTest);
		presentTest(myTest);

	}

	public static void displayTestProperties(Testable test) {
		System.out.println("Number of questions: " + test.getQuestionCount());
		System.out.println("\nBegin\n");
	}

	public static String getDate() {

		SimpleDateFormat ft = null;

		java.util.Date date = null;

		Calendar cl = Calendar.getInstance();

		cl.setTime(new java.util.Date());

		date = cl.getTime();

		// 格式可以自己根据需要修改

		ft = new SimpleDateFormat("yyyy-MM-dd HH:mm");

		String dateTime = ft.format(date);

		return dateTime;

	}

	public static void presentTest(Testable test) throws IOException {
		int counter = 1;
		List answer1 = new ArrayList();
		char[] label = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' };
		for (int qnum = 0; qnum < test.getQuestionCount(); qnum++) {
			Question question = test.getQuestion(qnum);
			System.out.println("\n" + counter + "." + question.getText() + "\n");
			counter++;
			for (int cnum = 0; cnum < question.getCount(); cnum++) {
				Choice choice = question.getChoice(cnum);
				System.out.println("\t(" + label[cnum] + ") "
						+ choice.getText());
			}
			System.out.print("输入答案:");
			BufferedReader reader = new BufferedReader(new InputStreamReader(
					System.in));
			String reads = "";
			try {
				reads = reader.readLine();
			} catch (IOException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
			answer1.add(reads);

		}
		summary(test, answer1);

	}

	public static void summary(Testable test, List answer1) throws IOException {
		int counter = 1, qnum = 0, right = 0, wrong = 0,score=0;
		String judge = "错";
		String date;
		float tmp = (float) 0.00;
		date = getDate();
		List answer = new ArrayList();
		Date datetime=new Date(System.currentTimeMillis());
		SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd-hh-mm a");
		FileWriter file = new FileWriter(Constants.RESULT_FILE_NAME
				+ customerName + sf.format(datetime) + ".txt");
		BufferedWriter writer = new BufferedWriter(file);
		String[] label = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" };
		System.out.println("*********考试结束**********");
		System.out.println("---------考试报告----------");
		System.out.println("题号\t你的答案\t正确答案\t判断");
		writer.write("题号\t你的答案\t正确答案\t判断\t\t作答时间\n");
		for (qnum = 0; qnum < test.getQuestionCount(); qnum++) {
			System.out.print(counter);
			counter++;
			judge = "错";
			Question question = test.getQuestion(qnum);
			for (int cnum = 0; cnum < question.getCount(); cnum++) {
				Choice choice = question.getChoice(cnum);
				if (choice.isCorrect()) {
					answer.add(label[cnum]);
				}
			}
			if (((String) answer.get(qnum)).equals(answer1.get(qnum))) {
				right++;
				judge = "对";
			} else
				wrong++;
			System.out.println("\t" + answer1.get(qnum) + "\t"
					+ answer.get(qnum) + "\t" + judge);
			writer.write((counter - 1) + "\t\t" + answer1.get(qnum) + "\t\t"
					+ answer.get(qnum) + "\t" + judge + "\t\t" + date + "\n");
		}
		System.out.println("你答对了 " + right + " 个,答错了" + wrong + "个!");
		writer.write("你答对了 " + right + " 个,答错了" + wrong + "个!你考试的得分是" +"!\n");
		writer.close();
		tmp = (float) (100 / (right + wrong));
		score = (int) (tmp * right);
		if (score<60)
			System.out.println("很遗憾,你没有通过考试!");
		else
			System.out.println("恭喜你,你通过了考试!");

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -