📄 driver.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 + -