功能要求

开发基于控制台的试题信息管理系统。具体要求如下:

(1)显示试题信息管理系统主菜单,包括:

1)列出所有试题信息

2)按科目查询

3)按题干查询

4)添加试题

5)删除试题

6)退出系统

 1 package com.szxs.question;
 2 
 3 /**
 4  * 试题实体类
 5  * @author 
 6  *
 7  */
 8 public class QuestionInfo {
 9     private int questionId;  //试题编号
10     private String question;  //题干
11     private String optionA;  //选项A
12     private String optionB;  //选项B
13     private String optionC;  //选项C
14     private String optionD;  //选项D
15     private int subject;  //科目
16     private String answer;  //正确答案
17     
18     
19     public QuestionInfo() {
20     }
21     
22     public QuestionInfo(int questionId, String question, String optionA, String optionB, String optionC, String optionD,
23             int subject, String answer) {
24         this.questionId = questionId;
25         this.question = question;
26         this.optionA = optionA;
27         this.optionB = optionB;
28         this.optionC = optionC;
29         this.optionD = optionD;
30         this.subject = subject;
31         this.answer = answer;
32     }
33 
34     public int getQuestionId() {
35         return questionId;
36     }
37     public void setQuestionId(int questionId) {
38         this.questionId = questionId;
39     }
40     public String getQuestion() {
41         return question;
42     }
43     public void setQuestion(String question) {
44         this.question = question;
45     }
46     public String getOptionA() {
47         return optionA;
48     }
49     public void setOptionA(String optionA) {
50         this.optionA = optionA;
51     }
52     public String getOptionB() {
53         return optionB;
54     }
55     public void setOptionB(String optionB) {
56         this.optionB = optionB;
57     }
58     public String getOptionC() {
59         return optionC;
60     }
61     public void setOptionC(String optionC) {
62         this.optionC = optionC;
63     }
64     public String getOptionD() {
65         return optionD;
66     }
67     public void setOptionD(String optionD) {
68         this.optionD = optionD;
69     }
70     public int getSubject() {
71         return subject;
72     }
73     public void setSubject(int subject) {
74         this.subject = subject;
75     }
76     public String getAnswer() {
77         return answer;
78     }
79     public void setAnswer(String answer) {
80         this.answer = answer;
81     }
82     
83     
84 }
 1 package com.szxs.question;
 2 
 3 /**
 4  * 试题接口
 5  * @author 
 6  *
 7  */
 8 public interface QuestionInfoDao {
 9     //查询所有试题
10     public void showQuestionInfo();
11     //根据科目查询试题
12     public void selectQuestion(int subject);
13     //根据题干查询试题
14     public void selectQuestion(String question);
15     //添加试题
16     public void addQuestion(String question,String optionA,String optionB,String optionC,String optionD,int subject,String answer);
17     //删除试题
18     public void delQuestion();
19 }
  1 package com.szxs.question;
  2 
  3 import java.util.Scanner;
  4 
  5 /**
  6  * 试题实现类
  7  * @author 
  8  *
  9  */
 10 public class QuestionInfoDaoImpl implements QuestionInfoDao {
 11     QuestionInfo[] questions=new QuestionInfo[10];
 12     public void init() {
 13         questions[0]=new QuestionInfo(1,"下面关于栈的描述中错误的是( )","A、栈是先进后出的线性表","B、栈只能顺序存储",
 14                 "C、栈具有记忆功能","D、对栈的插入弓删除操作中,不需要改变栈底指针",1,"B");
 15         questions[1]=new QuestionInfo(2,"在Java中,负责对字节代码解释执行的是( )","A.垃圾回收器","B.虚拟机",
 16                 "C.编译器","D.多线程机制",1,"C");
 17         questions[2]=new QuestionInfo(3,"在Visual Studio.Net窗口中,()窗口提供令人连接本地或远程计算机上数据库并进行管理的功能","A 工具箱","B 资源视图  ",
 18                 "C 解决方案资源管理器","D 服务器资源管理器",2,"D");
 19         questions[3]=new QuestionInfo(4,"XCOPY命令的()选项用来指示复制所有子目录,即使是空目录也要复制","A /q ","B /s",
 20                 "C /p ","D /e",2,"D");
 21         questions[4]=new QuestionInfo(5,"如果做动态网站开发,以下()可以作为服务器端脚本语言","A  java ","B  JSP",
 22                 "C  Javascript ","D  Html",3,"A");
 23         questions[5]=new QuestionInfo();
 24         questions[6]=new QuestionInfo();
 25         questions[7]=new QuestionInfo();
 26         questions[8]=new QuestionInfo();
 27         questions[9]=new QuestionInfo();
 28 
 29     }
 30 
 31     /**
 32      * 查询所有试题
 33      */
 34     public void showQuestionInfo() {
 35         for (QuestionInfo question : questions) {
 36             if(question.getQuestion()!=null) {
 37                 System.out.println(question.getQuestionId()+"、"+question.getQuestion()+"\n\t"+question.getOptionA()+"\n\t"+question.getOptionB()+
 38                         "\n\t"+question.getOptionC()+"\n\t"+question.getOptionD()+"\n\t"+"答案:"+question.getAnswer());
 39             }
 40         }
 41     }
 42 
 43     /**
 44      * 根据科目查询试题
 45      */
 46     public void selectQuestion(int subject) {
 47         for (QuestionInfo question: questions) {
 48             if(question.getQuestion()!=null && question.getSubject()==subject) {
 49                 System.out.println(question.getQuestionId()+"、"+question.getQuestion()+"\n\t"+question.getOptionA()+"\n\t"+question.getOptionB()+
 50                         "\n\t"+question.getOptionC()+"\n\t"+question.getOptionD()+"\n\t"+"答案:"+question.getAnswer());
 51             }
 52         }
 53     }
 54 
 55     /**
 56      * 根据题干查询试题
 57      */
 58     public void selectQuestion(String question) {
 59         for (QuestionInfo q : questions) {
 60             if(q.getQuestionId()!=0 && q.getQuestion().contains(question)) {
 61                     System.out.println(q.getQuestionId()+"、"+q.getQuestion()+"\n\t"+q.getOptionA()+"\n\t"+q.getOptionB()+
 62                             "\n\t"+q.getOptionC()+"\n\t"+q.getOptionD()+"\n\t"+"答案:"+q.getAnswer());
 63             }
 64         }
 65     }
 66 
 67     /**
 68      * 添加试题
 69      */
 70     public void addQuestion(String question, String optionA, String optionB, String optionC, String optionD,
 71             int subject, String answer) {
 72         for (int i=0;i<questions.length;i++) {
 73             if(questions[i].getQuestion()==null) {
 74                 questions[i].setQuestionId(i+1);
 75                 questions[i]=new QuestionInfo(questions[i].getQuestionId(),question,optionA,optionB,optionC,optionD,subject,answer);
 76                 break;
 77             }
 78         }
 79         System.out.println("添加成功!");
 80         showQuestionInfo();
 81     
 82     }
 83 
 84     /**
 85      * 删除试题
 86      */
 87     public void delQuestion() {
 88         Scanner input=new Scanner(System.in);
 89         
 90         do {
 91             System.out.print("请输入需要删除的试题编号:");
 92             int questionId=input.nextInt();
 93             boolean isDel=false;
 94             int index=-1;  
 95             for(int  i=0;i<questions.length;i++) {
 96                 if(questions[i].getQuestion()!=null && questions[i].getQuestionId()==questionId) {
 97                     index=i;  //找到要删除的下标位置
 98                     isDel=true;
 99                     break;
100                 }
101             }
102             if(index!=-1) {
103                 for(int i=index;i<questions.length-1;i++) {
104                     if(questions[i].getQuestion()!=null ) {
105                         questions[i]=questions[i+1];
106                         questions[i].setQuestionId(questions[i].getQuestionId()-1); //试题删除后试题编号重新排列
107                     }
108                 }
109                 questions[questions.length-1]=new QuestionInfo(); //清空最后一个对象的数据
110                 System.out.println("删除成功!");
111             }
112             
113             showQuestionInfo();
114             if(!isDel) {
115                 System.out.println("对不起,没有要删除的编号!请重新输入");
116             }
117             if(isDel) {
118                 break;
119             }
120         }while(true);
121         
122     }
123 
124 }
 1 package com.szxs.question;
 2 
 3 import java.util.Scanner;
 4 
 5 /**
 6  * 测试类
 7  * @author 
 8  *
 9  */
10 public class Test {
11 
12     public static void main(String[] args) {
13         Scanner input=new Scanner(System.in);
14         QuestionInfoDaoImpl qdi=new QuestionInfoDaoImpl();
15         qdi.init();
16 
17         System.out.println("****************欢迎使用试题管理系统**************");
18         do {
19             System.out.print("请选择操作(1、列出所有试题  2、按科目查询  3、按题干模糊查询  4、添加试题  5、删除试题  6、退出系统)");
20             switch(input.nextInt()) {
21                 //列出所有试题
22                 case 1:
23                     qdi.showQuestionInfo();
24                     break;
25                 //按科目查询
26                 case 2:
27                     System.out.print("请输入科目:(1、Java  2、C#  3、JSP)");
28                     int subject=input.nextInt();
29                     qdi.selectQuestion(subject);
30                     break;
31                 //按题干查询
32                 case 3:
33                     System.out.print("请输入题干:");
34                     String question=input.next();
35                     qdi.selectQuestion(question);
36                     break;
37                 //添加试题
38                 case 4:
39                     System.out.print("请输入科目(1、Java  2、C#  3、JSP)");
40                     subject=input.nextInt();
41                     System.out.print("请输入新的题干:");
42                     question=input.next();
43                     System.out.print("请输入新的选项A:");
44                     String optionA=input.next();
45                     System.out.print("请输入新的选项B:");
46                     String optionB=input.next();
47                     System.out.print("请输入新的选项C:");
48                     String optionC=input.next();
49                     System.out.print("请输入新的选项D:");
50                     String optionD=input.next();
51                     System.out.print("请输入新的答案:");
52                     String answer=input.next();
53                     qdi.addQuestion(question, optionA, optionB, optionC, optionD, subject, answer);
54                     break;
55                 //删除试题
56                 case 5:
57                     qdi.delQuestion();
58                     break;
59                 //退出系统
60                 case 6:
61                     System.out.println("欢迎下次使用!");
62                     return;
63             }
64         
65         }while(true);
66     
67         
68     }
69 
70 }

 

如有优化的地方,请指教!

posted on 2018-12-03 21:34  从零开始-白  阅读(390)  评论(0编辑  收藏  举报