Java面向对象内测
功能要求
开发基于控制台的试题信息管理系统。具体要求如下:
(1)显示试题信息管理系统主菜单,包括:
1)列出所有试题信息
2)按科目查询
3)按题干查询
4)添加试题
5)删除试题
6)退出系统
package com.szxs.question; /**
* 试题实体类
* @author
*
*/
public class QuestionInfo {
private int questionId; //试题编号
private String question; //题干
private String optionA; //选项A
private String optionB; //选项B
private String optionC; //选项C
private String optionD; //选项D
private int subject; //科目
private String answer; //正确答案 public QuestionInfo() {
} public QuestionInfo(int questionId, String question, String optionA, String optionB, String optionC, String optionD,
int subject, String answer) {
this.questionId = questionId;
this.question = question;
this.optionA = optionA;
this.optionB = optionB;
this.optionC = optionC;
this.optionD = optionD;
this.subject = subject;
this.answer = answer;
} public int getQuestionId() {
return questionId;
}
public void setQuestionId(int questionId) {
this.questionId = questionId;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public String getOptionA() {
return optionA;
}
public void setOptionA(String optionA) {
this.optionA = optionA;
}
public String getOptionB() {
return optionB;
}
public void setOptionB(String optionB) {
this.optionB = optionB;
}
public String getOptionC() {
return optionC;
}
public void setOptionC(String optionC) {
this.optionC = optionC;
}
public String getOptionD() {
return optionD;
}
public void setOptionD(String optionD) {
this.optionD = optionD;
}
public int getSubject() {
return subject;
}
public void setSubject(int subject) {
this.subject = subject;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
} }
package com.szxs.question; /**
* 试题接口
* @author
*
*/
public interface QuestionInfoDao {
//查询所有试题
public void showQuestionInfo();
//根据科目查询试题
public void selectQuestion(int subject);
//根据题干查询试题
public void selectQuestion(String question);
//添加试题
public void addQuestion(String question,String optionA,String optionB,String optionC,String optionD,int subject,String answer);
//删除试题
public void delQuestion();
}
package com.szxs.question; import java.util.Scanner; /**
* 试题实现类
* @author
*
*/
public class QuestionInfoDaoImpl implements QuestionInfoDao {
QuestionInfo[] questions=new QuestionInfo[10];
public void init() {
questions[0]=new QuestionInfo(1,"下面关于栈的描述中错误的是( )","A、栈是先进后出的线性表","B、栈只能顺序存储",
"C、栈具有记忆功能","D、对栈的插入弓删除操作中,不需要改变栈底指针",1,"B");
questions[1]=new QuestionInfo(2,"在Java中,负责对字节代码解释执行的是( )","A.垃圾回收器","B.虚拟机",
"C.编译器","D.多线程机制",1,"C");
questions[2]=new QuestionInfo(3,"在Visual Studio.Net窗口中,()窗口提供令人连接本地或远程计算机上数据库并进行管理的功能","A 工具箱","B 资源视图 ",
"C 解决方案资源管理器","D 服务器资源管理器",2,"D");
questions[3]=new QuestionInfo(4,"XCOPY命令的()选项用来指示复制所有子目录,即使是空目录也要复制","A /q ","B /s",
"C /p ","D /e",2,"D");
questions[4]=new QuestionInfo(5,"如果做动态网站开发,以下()可以作为服务器端脚本语言","A java ","B JSP",
"C Javascript ","D Html",3,"A");
questions[5]=new QuestionInfo();
questions[6]=new QuestionInfo();
questions[7]=new QuestionInfo();
questions[8]=new QuestionInfo();
questions[9]=new QuestionInfo(); } /**
* 查询所有试题
*/
public void showQuestionInfo() {
for (QuestionInfo question : questions) {
if(question.getQuestion()!=null) {
System.out.println(question.getQuestionId()+"、"+question.getQuestion()+"\n\t"+question.getOptionA()+"\n\t"+question.getOptionB()+
"\n\t"+question.getOptionC()+"\n\t"+question.getOptionD()+"\n\t"+"答案:"+question.getAnswer());
}
}
} /**
* 根据科目查询试题
*/
public void selectQuestion(int subject) {
for (QuestionInfo question: questions) {
if(question.getQuestion()!=null && question.getSubject()==subject) {
System.out.println(question.getQuestionId()+"、"+question.getQuestion()+"\n\t"+question.getOptionA()+"\n\t"+question.getOptionB()+
"\n\t"+question.getOptionC()+"\n\t"+question.getOptionD()+"\n\t"+"答案:"+question.getAnswer());
}
}
} /**
* 根据题干查询试题
*/
public void selectQuestion(String question) {
for (QuestionInfo q : questions) {
if(q.getQuestionId()!=0 && q.getQuestion().contains(question)) {
System.out.println(q.getQuestionId()+"、"+q.getQuestion()+"\n\t"+q.getOptionA()+"\n\t"+q.getOptionB()+
"\n\t"+q.getOptionC()+"\n\t"+q.getOptionD()+"\n\t"+"答案:"+q.getAnswer());
}
}
} /**
* 添加试题
*/
public void addQuestion(String question, String optionA, String optionB, String optionC, String optionD,
int subject, String answer) {
for (int i=0;i<questions.length;i++) {
if(questions[i].getQuestion()==null) {
questions[i].setQuestionId(i+1);
questions[i]=new QuestionInfo(questions[i].getQuestionId(),question,optionA,optionB,optionC,optionD,subject,answer);
break;
}
}
System.out.println("添加成功!");
showQuestionInfo(); } /**
* 删除试题
*/
public void delQuestion() {
Scanner input=new Scanner(System.in); do {
System.out.print("请输入需要删除的试题编号:");
int questionId=input.nextInt();
boolean isDel=false;
int index=-1;
for(int i=0;i<questions.length;i++) {
if(questions[i].getQuestion()!=null && questions[i].getQuestionId()==questionId) {
index=i; //找到要删除的下标位置
isDel=true;
break;
}
}
if(index!=-1) {
for(int i=index;i<questions.length-1;i++) {
if(questions[i].getQuestion()!=null ) {
questions[i]=questions[i+1];
questions[i].setQuestionId(questions[i].getQuestionId()-1); //试题删除后试题编号重新排列
}
}
questions[questions.length-1]=new QuestionInfo(); //清空最后一个对象的数据
System.out.println("删除成功!");
} showQuestionInfo();
if(!isDel) {
System.out.println("对不起,没有要删除的编号!请重新输入");
}
if(isDel) {
break;
}
}while(true); } }
package com.szxs.question; import java.util.Scanner; /**
* 测试类
* @author
*
*/
public class Test { public static void main(String[] args) {
Scanner input=new Scanner(System.in);
QuestionInfoDaoImpl qdi=new QuestionInfoDaoImpl();
qdi.init(); System.out.println("****************欢迎使用试题管理系统**************");
do {
System.out.print("请选择操作(1、列出所有试题 2、按科目查询 3、按题干模糊查询 4、添加试题 5、删除试题 6、退出系统)");
switch(input.nextInt()) {
//列出所有试题
case 1:
qdi.showQuestionInfo();
break;
//按科目查询
case 2:
System.out.print("请输入科目:(1、Java 2、C# 3、JSP)");
int subject=input.nextInt();
qdi.selectQuestion(subject);
break;
//按题干查询
case 3:
System.out.print("请输入题干:");
String question=input.next();
qdi.selectQuestion(question);
break;
//添加试题
case 4:
System.out.print("请输入科目(1、Java 2、C# 3、JSP)");
subject=input.nextInt();
System.out.print("请输入新的题干:");
question=input.next();
System.out.print("请输入新的选项A:");
String optionA=input.next();
System.out.print("请输入新的选项B:");
String optionB=input.next();
System.out.print("请输入新的选项C:");
String optionC=input.next();
System.out.print("请输入新的选项D:");
String optionD=input.next();
System.out.print("请输入新的答案:");
String answer=input.next();
qdi.addQuestion(question, optionA, optionB, optionC, optionD, subject, answer);
break;
//删除试题
case 5:
qdi.delQuestion();
break;
//退出系统
case 6:
System.out.println("欢迎下次使用!");
return;
} }while(true); } }
如有优化的地方,请指教!
Java面向对象内测的更多相关文章
- JAVA面向对象
JAVA面向对象 对象 我们生活中能看到能摸到的一切事物都是对象.在程序中模拟出生活中的所有东西万物皆对象 只要是对象--属性和行为(方法) 属性 对象有什么 例如:学生有姓名.学 ...
- 理解JAVA - 面向对象(object) - 属性,方法
理解JAVA - 面向对象(object) - 属性,方法 多态的体现: 向上造型,父类接收子类对象:向上造型: 从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...
- Java面向对象㈠ -- 封装
Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...
- 谈谈Java面向对象的三大特性
Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...
- Java面向对象:接口
Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...
- 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final
一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...
- 20145212《Java程序设计》实验报告二 《 Java面向对象程序设计》
20145212 实验二< Java面向对象程序设计> 实验内容 单元测试 三种代码 伪代码 百分制转五分制: 如果成绩小于60,转成"不及格" 如果成绩在60与70之 ...
- 20145213《Java程序设计》实验二Java面向对象程序设计实验报告
20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...
随机推荐
- JDK从1.8升级到9.0.1后sun.misc.BASE64Decoder和sun.misc.BASE64Encoder不可用
目录 描述 原因分析 处理办法 参考 描述 最近研究把项目的JDK升级从1.8升级到9.0.1,在eclipse上配置好JDK为9后,发现项目有错,查看发现sun.misc.BASE64Decoder ...
- springmvc和struts2的区别(转)
1.客户端浏览器发出HTTP请求. 2.根据web.xml配置,该请求被FilterDispatcher接收. 3.根据struts.xml配置,找到需要调用的Action类和方法, 并通过I ...
- P2135 方块消除
题目描述 Jimmy最近迷上了一款叫做方块消除的游戏.游戏规则如下:n个带颜色方格排成一列,相同颜色的方块连成一个区域(如果两个相邻方块颜色相同,则这两个方块属于同一区域).为简化题目,将连起来的同一 ...
- [poj] 3907 Build Your Home || 求多边形面积
原题 多组数据,到0为止. 每次给出按顺序的n个点(可能逆时针,可能顺时针),求多边形面积(保留整数) 多边形面积为依次每条边(向量)叉积/2的和 \(S=\sum _{i=1}^{n-1}p[i]* ...
- BZOJ1233 [Usaco2009Open]干草堆tower 【单调队列优化dp】
题目链接 BZOJ1233 题解 有一个贪心策略:同样的干草集合,底长小的一定不比底长大的矮 设\(f[i]\)表示\(i...N\)形成的干草堆的最小底长,同时用\(g[i]\)记录此时的高度 那么 ...
- 洛谷 P2375 [NOI2014]动物园 解题报告
P2375 [NOI2014]动物园 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定 ...
- git bash 如何进入某个盘的特定文件夹
下面是用gitbash进入E:\the fifth version of ecard\epayment这个文件夹下 命令如下图所示:
- TCP面试题之滑动窗口原理
TCP 滑动窗口 作用: 1. 提供TCP可靠性:对发送的数据进行确认 2. 流量控制:窗口大小随链路变化 一.TCP窗口机制 TCP中窗口大小是指tcp协议一次传输多少个数据.因为TCP是一个面向连 ...
- 乌班图 root权限获取
点击左侧终端标 2 出现命令提示符 3 首先输入:sudo passwd root(设置root密码) 4 输入当前系统的账户密码(账户:admin-pc的密码) 5 输入新的root密码,确认新密码 ...
- hdu 6114 百度之星复赛B T1
Chess Problem Description 車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋子阻隔的棋子. 一天,小度在棋盘上摆起了许多車……他想知道,在一共N×M个点的矩形棋盘中 ...