考试程序。要求如下:
(1)使用图形用户界面实现。
(2)该考试程序可以处理单选、多选、判断、填空四种题型;每种题型抽取5道小题。
(3)考生可以运行该程序进行自主答题,考生答完提交后,程序会自动计算考生所得分数,并且列出考生答错的题目,写出标准答案。
(4)开始新一轮答题,原有题目会被刷新,重新生成一份新的试题。
(5)系统使用的GUI组件不得少于5种,越全面越好,但要合适(和谐界面)。
一点思路也没有...

解决方案 »

  1.   

    题库准备用txt文档读取  答案也可以写在里面  最令我困惑的是  怎么处理多选  和填空 的问题..
      

  2.   

    如果准备用文档管理的话
    其实用txt不如用xml了
    直接用关键字区分啊
    比如一个题type="单选"
    des="以下选项中哪个是正确的"
    wait="A....  B....  C....  D...."
    answer="A"type="多选"
    des="以下选项中哪些是正确的"
    wait="A....  B....  C....  D...."
    answer="ACD"type="填空"
    des="在____空白处填上答案"
    wait=""
    answer="答案"当然我这是简单举例,属性还可以再细化一些
      

  3.   

    还是用数据库吧,题和选项一对多的关键先建立好,还有题和答案的关系表,便于你答完题算分,其实这个东西的核心在于数据层,表现层什么多选,单选,组合选,填空,他爱怎么弄怎么弄怎么弄,我只需要记录每个人答的每道题的答案是什么就行了,题库表中弄个type去标识下是题的类型即可
      

  4.   

    Mark一下,晚上抽时间写一个试试。
      

  5.   

    用ooa思想最好处理了public class Question { private String question = null;//问题
    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("========================");

    }

    }
      

  6.   

    answer 中修改一下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); answerInfo = question.getKey();
    score = question.getScore();
    return question.getScore();
    }
    }
    answerInfo = question.getKey();

    }
    return 0;
    }红色部分为增加的