功能要求
开发基于控制台的试题信息管理系统。具体要求如下:
(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 }
如有优化的地方,请指教!