考试程序。要求如下:
(1)使用图形用户界面实现。
(2)该考试程序可以处理单选、多选、判断、填空四种题型;每种题型抽取5道小题。
(3)考生可以运行该程序进行自主答题,考生答完提交后,程序会自动计算考生所得分数,并且列出考生答错的题目,写出标准答案。
(4)开始新一轮答题,原有题目会被刷新,重新生成一份新的试题。
(5)系统使用的GUI组件不得少于5种,越全面越好,但要合适(和谐界面)。
一点思路也没有...
(1)使用图形用户界面实现。
(2)该考试程序可以处理单选、多选、判断、填空四种题型;每种题型抽取5道小题。
(3)考生可以运行该程序进行自主答题,考生答完提交后,程序会自动计算考生所得分数,并且列出考生答错的题目,写出标准答案。
(4)开始新一轮答题,原有题目会被刷新,重新生成一份新的试题。
(5)系统使用的GUI组件不得少于5种,越全面越好,但要合适(和谐界面)。
一点思路也没有...
其实用txt不如用xml了
直接用关键字区分啊
比如一个题type="单选"
des="以下选项中哪个是正确的"
wait="A.... B.... C.... D...."
answer="A"type="多选"
des="以下选项中哪些是正确的"
wait="A.... B.... C.... D...."
answer="ACD"type="填空"
des="在____空白处填上答案"
wait=""
answer="答案"当然我这是简单举例,属性还可以再细化一些
private String key = null;//正确答案
private String options = null;//选项
private String questionNum = "";//题号
private int score = 0;//问题对应的分数
public Question(){
}
public Question(String questionNum , String question , String options , String key , int score){
this.questionNum = questionNum ;
this.question = question;
this.key = key;
this.options = options;
this.score = score;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getOptions() {
return options;
}
public void setOptions(String options) {
this.options = options;
}
public String getQuestionNum() {
return questionNum;
}
public void setQuestionNum(String questionNum) {
this.questionNum = questionNum;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
public interface QuestionScore { public int getSocore(Question question );
}
public class Answer implements QuestionScore{ public Answer(){}
public Answer(String questionNum , String answers ){
this.questionNum = questionNum;
this.answers = answers;
}
private String questionNum = null;//题号 和 Question中的 questionNum对应
private String answers = null;//回答
private boolean isTrue = false;//回答是否正确
private int score = 0;
String answerInfo = null;
public String getQuestionNum() {
return questionNum;
}
public void setQuestionNum(String questionNum) {
this.questionNum = questionNum;
}
public String getAnswers() {
return answers;
}
public void setAnswers(String answers) {
this.answers = answers;
}
public boolean isTrue() {
return isTrue;
}
public void setTrue(boolean isTrue) {
this.isTrue = isTrue;
}
public int getScore() {
return score;
} public void setScore(int score) {
this.score = score;
}
public int getSocore(Question question ) {
if(question != null
&& this != null
&& question.getKey() != null){
if(question.getQuestionNum()!= null
&& this.getQuestionNum() != null
&& question.getQuestionNum().equals(this.getQuestionNum())){
if(question.getKey() != null
&& question.getKey().equals(this.getAnswers())){
this.setTrue(true);
score = question.getScore();
return question.getScore();
}
}
answerInfo = question.getKey();
}
return 0;
}
public String toString(){
return "正确答案: " + answerInfo + "\n"
+ "你的回答: " + this.getAnswers() + "\n"
+ "本题得分: " + score;
}
}import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class QuizDemo {
public static Map<String , Question > questionMap = new HashMap<String , Question >();
public static List<Answer > answerList = new ArrayList< Answer >();
public static void main(String[] args){
//单选
Question a1 = new Question("1.1" ,"Java标志是什么?" ,"A.一瓶啤酒 B.一个被咬一口的苹果 C.窗户 D.一杯咖啡" ,"D" ,5);
Question a2 = new Question("1.2" ,"Java标志是什么?" ,"A.一瓶啤酒 B.一个被咬一口的苹果 C.窗户 D.一杯咖啡" ,"D" ,5);
Question a3 = new Question("1.3" ,"Java标志是什么?" ,"A.一瓶啤酒 B.一个被咬一口的苹果 C.窗户 D.一杯咖啡" ,"D" ,5);
Question a4 = new Question("1.4" ,"Java标志是什么?" ,"A.一瓶啤酒 B.一个被咬一口的苹果 C.窗户 D.一杯咖啡" ,"D" ,5);
//多选
Question abc1 = new Question("2.1" , "下面那些是数据库?" ,"A.MySql B.Linux C.Windows D.Oracle" ,"A,D" ,15);
Question abc2 = new Question("2.2" , "下面那些是数据库?" ,"A.MySql B.Linux C.Windows D.Oracle" ,"A,D" ,15);
Question abc3 = new Question("2.3" , "下面那些是数据库?" ,"A.MySql B.Linux C.Windows D.Oracle" ,"A,D" ,15);
Question abc4 = new Question("2.4" , "下面那些是数据库?" ,"A.MySql B.Linux C.Windows D.Oracle" ,"A,D" ,15);
//判断
Question tf1 = new Question("3.1" , "中国软件很牛逼" ,"T.true F.false" ,"F" ,5);
Question tf2 = new Question("3.2" , "中国盗版很牛逼" ,"T.true F.false" ,"T" ,5);
Question tf3 = new Question("3.3" , "中国软件很牛逼" ,"T.true F.false" ,"F" ,5);
Question tf4 = new Question("3.4" , "中国盗版很牛逼" ,"T.true F.false" ,"T" ,5);
questionMap.put(a1.getQuestionNum(), a1);
questionMap.put(a2.getQuestionNum(), a2);
questionMap.put(a3.getQuestionNum(), a3);
questionMap.put(a4.getQuestionNum(), a4);
questionMap.put(abc1.getQuestionNum(), abc1);
questionMap.put(abc2.getQuestionNum(), abc2);
questionMap.put(abc3.getQuestionNum(), abc3);
questionMap.put(abc4.getQuestionNum(), abc4);
questionMap.put(tf1.getQuestionNum(), tf1);
questionMap.put(tf2.getQuestionNum(), tf2);
questionMap.put(tf3.getQuestionNum(), tf3);
questionMap.put(tf4.getQuestionNum(), tf4);
Answer as1 = new Answer("1.1" , "D");
Answer as2 = new Answer("1.2" , "D");
Answer as3 = new Answer("1.3" , "B");
Answer as4 = new Answer("1.4" , "D");
Answer as5 = new Answer("2.1" , "A,D");
Answer as6 = new Answer("2.2" , "A,D");
Answer as7 = new Answer("2.3" , "A,D");
Answer as8 = new Answer("2.4" , "A,D");
Answer as9 = new Answer("3.1" , "F");
Answer as10 = new Answer("3.2" , "T");
Answer as11 = new Answer("3.3" , "T");
Answer as12 = new Answer("3.4" , "T");
answerList.add( as1);
answerList.add( as2);
answerList.add( as3);
answerList.add( as4);
answerList.add( as5);
answerList.add( as6);
answerList.add( as7);
answerList.add( as8);
answerList.add( as9);
answerList.add( as10);
answerList.add( as11);
answerList.add( as12);
System.out.println("========================");
System.out.println("你的答案:");
int sumScore = 0;
for(Answer answer : answerList){
System.out.println("@#@#!@#@!# " + answer.getQuestionNum() + " :");
sumScore += answer.getSocore(questionMap.get(answer.getQuestionNum()));
System.out.println(answer.toString());
}
System.out.println("========================");
System.out.println("总分 :" + sumScore);
System.out.println("========================");
}
}
if(question != null
&& this != null
&& question.getKey() != null){
if(question.getQuestionNum()!= null
&& this.getQuestionNum() != null
&& question.getQuestionNum().equals(this.getQuestionNum())){
if(question.getKey() != null
&& question.getKey().equals(this.getAnswers())){
this.setTrue(true); answerInfo = question.getKey();
score = question.getScore();
return question.getScore();
}
}
answerInfo = question.getKey();
}
return 0;
}红色部分为增加的