开发基于控制台的试题信息管理系统。具体要求如下:
(1)显示试题信息管理系统主菜单,如图-1所示,包括:
1)列出所有试题信息
2)按科目查询
3)按题干模糊查询
4)添加试题
5)删除试题
6)退出系统
(2)列出所有试题信息:查询出所有试题的信息,内容包括:题干,A、B、C、D四个选项,答案。如图-2所示。
(3)按科目查询:输入科目,查询出属于此科目的所有试题。如图-3所示。
(4)按题干模糊查询:输入题干,按题干模糊查询出相关试题。如图-4所示。
(5)添加试题:输入试题的各个属性信息,并将试题保存至数据库。如图-5所示。
(6)删除试题:删除指定编号的试题,如果输入的试题编号不存在,给出提示信息。如图-6所示。
(7)退出系统。

系统运行界面如图所示:
查看试题

根据科目查看试题

模糊查询试题

新增试题

删除试题

数据库表结构

需要创建的工具类、实体类、接口、
采用三层架构搭建系统框架
数据访问层、业务逻辑层、表示层
采用数据访问层采用DAO模式设计和开发
设计步骤
第一步:根据数据库表创建实体类
第二步:创建DAO接口和实现类
第三步:创建业务接口和实现类
第四步:优化业务接口设计
第五步:根据分析结果,给出伪代码,完成设计


1、创建实体类QuestionInfo

public class QuestionInfo {private int QuestionId;private String Question;private String optionA;private String optionB;private String optionC;private String optionD;private int subject;public int getQuestionId() {return QuestionId;}public void setQuestionId(int questionId) {QuestionId = questionId;}public String getQuestion() {return Question;}public void setQuestion(String question) {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;}private String answer;
}

2、创建dao层接口QuestionInfoDao

import Question.entity.QuestionInfo;
import java.util.List;
public interface QuestionInfoDao{//查询所有试题List<QuestionInfo> showInfo();//按科目查询试题List<QuestionInfo> showSubject(int num);//按题干模糊查询试题List<QuestionInfo> showDim(String question);//添加试题int add(QuestionInfo questionInfo);//删除试题int delete(int id);//按试题编号查询试题List<QuestionInfo> showId(int id);
}

3、导入BaseDao类 切记:更改数据库名 填对用户名和密码

public class BaseDao {Connection conn=null;public BaseDao(){try{Class.forName("com.mysql.cj.jdbc.Driver");conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/question","root","root");}catch (Exception e){System.out.println(e.getMessage());}}public int executeUpdate(String sql,Object... O){int i = 0;try {PreparedStatement st = conn.prepareStatement(sql);if (O != null) {for (int j = 0; j <O.length ; j++) {st.setObject(j+1,O[j]);}}i = st.executeUpdate();} catch (SQLException throwables) {throwables.printStackTrace();}return i;}public ResultSet executeQuery(String sql,Object... o){ResultSet rs = null;try {PreparedStatement st = conn.prepareStatement(sql);if (o!= null) {for (int j = 0; j <o.length ; j++) {st.setObject(j+1,o[j]);}}rs = st.executeQuery();} catch (Exception e) {System.out.println(e.getMessage());}return rs;}
}

4、创建dao层下的impl包 并创建QuestionInfoDaoImpl 类继承BaseDao类实现QuestionInfoDao接口中的所有方法。

import Question.dao.BaseDao;
import Question.dao.QuestionInfoDao;
import Question.entity.QuestionInfo;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;public class QuestionInfoDaoImpl extends BaseDao implements QuestionInfoDao {ResultSet rs=null;public List<QuestionInfo> show(){List<QuestionInfo> list=new ArrayList<>();try {while (rs.next()) {QuestionInfo qs=new QuestionInfo();qs.setQuestionId(rs.getInt("questionId"));qs.setQuestion(rs.getString("question"));qs.setOptionA(rs.getString("optionA"));qs.setOptionB(rs.getString("optionB"));qs.setOptionC(rs.getString("optionC"));qs.setOptionD(rs.getString("optionD"));qs.setSubject(rs.getInt("subjectID"));qs.setAnswer(rs.getString("answer"));list.add(qs);}} catch (SQLException throwables) {throwables.printStackTrace();}return list;}//查询所有试题@Overridepublic List<QuestionInfo> showInfo() {rs=executeQuery("select * from question_info");return show();}//按科目查询试题@Overridepublic List<QuestionInfo> showSubject(int num) {rs = executeQuery("select * from question_info where subjectID=?",num);return show();}//按题干模糊查询试题@Overridepublic List<QuestionInfo> showDim(String question) {rs = executeQuery("select * from question_info where question like ?","%"+question+"%");return show();}//添加试题@Overridepublic int add(QuestionInfo qs) {int i = executeUpdate("INSERT INTO `question`.`question_info`(`question`, `optionA`, `optionB`, `optionC`, `optionD`, `subjectID`, `answer`) VALUES (?, ?, ?, ?, ?, ?, ?);",qs.getQuestion(),qs.getOptionA(),qs.getOptionB(),qs.getOptionC(),qs.getOptionD(),qs.getSubject(),qs.getAnswer());return i;}//删除试题@Overridepublic int delete(int id) {int i = executeUpdate("delete from `question`.`question_info` where questionId=?",id);return i;}//按试题编号查询试题@Overridepublic List<QuestionInfo> showId(int id) {rs = executeQuery("select * from question_info where subjectID=?",id);return show();}
}

5、创建service包下业务逻辑层 QuestionManager类

import Question.dao.impl.QuestionInfoDaoImpl;
import Question.entity.QuestionInfo;
import java.util.List;
import java.util.Scanner;
public class QuestionManager {Scanner input=new Scanner(System.in);public int getInput(){while (!input.hasNextInt()) {System.out.print("输入错误,请重新输入:");input.next();}return input.nextInt();}QuestionInfoDaoImpl questionDaoImpl=new QuestionInfoDaoImpl();public void menu(){String sum=null;do {System.out.println("***************欢迎使用试题管理系统*********************");System.out.println("请选择操作(1、列出所有试题 2、按科目查询 3、按题干模糊查询 4、添加试题 5、删除试题 6、退出系统)");int num = input.nextInt();switch (num) {case 1:showInfo();break;case 2:showId();break;case 3:showDim();break;case 4:add();break;case 5:delete();break;case 6:System.exit(0);break;default:System.out.println("输入错误!");break;}System.out.println("请问是否继续?");sum=input.next();}while (sum.equals("y"));}public void lists(List<QuestionInfo> list){for (QuestionInfo item:list) {System.out.println(item.getQuestionId()+"、"+item.getQuestion()+"\n"+item.getOptionA()+"\n"+item.getOptionB()+"\n"+item.getOptionC()+"\n"+item.getOptionD()+"\n"+item.getAnswer());}}public void showInfo(){lists(new QuestionInfoDaoImpl().showInfo());}public void showSubject(){System.out.println("请输入科目:");int num=input.nextInt();lists(new QuestionInfoDaoImpl().showSubject(num));}public void showDim(){System.out.println("请输入题干:");String question=input.next();lists(new QuestionInfoDaoImpl().showDim(question));}public void add(){QuestionInfo qs=new QuestionInfo();System.out.println("请输入科目(1、Java 2、C# 3、JSP):");qs.setSubject(input.nextInt());System.out.println("请输入新的题干:");qs.setQuestion(input.next());System.out.println("请输入新的选项A:");qs.setOptionA(input.next());System.out.println("请输入新的选项B:");qs.setOptionB(input.next());System.out.println("请输入新的选项C:");qs.setOptionC(input.next());System.out.println("请输入新的选项D:");qs.setOptionD(input.next());System.out.println("请输入新的答案:");qs.setAnswer(input.next());if (new QuestionInfoDaoImpl().add(qs)>0) {System.out.println("新增成功!");}}public void delete(){System.out.println("请输入需要删除的试题编号:");int id=input.nextInt();if (new QuestionInfoDaoImpl().delete(id)>0) {System.out.println("删除成功!");}}public void showId(){System.out.println("请输入要查询的数据编号");int id=input.nextInt();lists(new QuestionInfoDaoImpl().showId(id));}
}

6、创建ui包 表示层 Main类

import Question.service.QuestionManager;public class Main {public static void main(String[] args) {QuestionManager questionManager=new QuestionManager();questionManager.menu();}
}

最后运行Main方法即可完成试题管理系统啦~

Java使用三层架构、JDBC连接数据库完成《试题信息管理系统》相关推荐

  1. Java语言写一个简单的学生信息管理系统,通过JDBC连接数据库对学生信息进行增删改查,采用三层思想和DBUtils第三方框架。

    我把源代码和sql文件放GitHub上了,你们可以自行下载:https://github.com/fenglily1/student. 有问题可以留言或私信,我看到就会回. 进阶版加上页面的管理系统在 ...

  2. 01.java后台三层架构

    学而止步之java后台三层架构是干嘛呢? 1.后台三层架构基础知识梳理 后台三层架构的知识梳理 所谓的三层开发就是将整个业务应用划分为表现层,业务逻辑层,数据访问层,这样有利于系统的开发,维护,部署和 ...

  3. java毕业设计基于BS架构的疫情包联信息管理系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计基于BS架构的疫情包联信息管理系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw java毕业设计基于BS架构的疫情包联信息管理系统的设计与实现mybatis+源码+调 ...

  4. JAVA计算机毕业设计预装箱式净水站可视化信息管理系统Mybatis+源码+数据库+lw文档+系统+调试部署

    JAVA计算机毕业设计预装箱式净水站可视化信息管理系统Mybatis+源码+数据库+lw文档+系统+调试部署 JAVA计算机毕业设计预装箱式净水站可视化信息管理系统Mybatis+源码+数据库+lw文 ...

  5. java计算机毕业设计Web医学院校大学生就业信息管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计Web医学院校大学生就业信息管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计Web医学院校大学生就业信息管理系统源码+mysql数据库+系统+lw文档 ...

  6. 基于Java毕业设计疫情下的进出口食品安全信息管理系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计疫情下的进出口食品安全信息管理系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计疫情下的进出口食品安全信息管理系统源码+系统+mysql+lw文档+部署软件 本源 ...

  7. java计算机毕业设计Web医学院校大学生就业信息管理系统源码+mysql数据库+系统+lw文档+部署1

    java计算机毕业设计Web医学院校大学生就业信息管理系统源码+mysql数据库+系统+lw文档+部署1 java计算机毕业设计Web医学院校大学生就业信息管理系统源码+mysql数据库+系统+lw文 ...

  8. java计算机毕业设计预装箱式净水站可视化信息管理系统源码+数据库+系统+lw文档+部署

    java计算机毕业设计预装箱式净水站可视化信息管理系统源码+数据库+系统+lw文档+部署 java计算机毕业设计预装箱式净水站可视化信息管理系统源码+数据库+系统+lw文档+部署 本源码技术栈: 项目 ...

  9. java毕业生设计预装箱式净水站可视化信息管理系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计预装箱式净水站可视化信息管理系统计算机源码+系统+mysql+调试部署+lw java毕业生设计预装箱式净水站可视化信息管理系统计算机源码+系统+mysql+调试部署+lw 本源码技 ...

最新文章

  1. ASP.NET小收集:IFrame使用
  2. mysql存储过程 delete select insert_mysql常见操作语句,建表,增删改查
  3. Oracle SQL之 序列使用限制
  4. Spring Bean的获取与实例化
  5. vue项目获取下拉框选中id_vue treeselect获取当前选中项的label实例
  6. html文档打开错误,我的html的文档无法打开,打开也是报错
  7. android的单选按钮xml语法,android-通过数组而不是xml布局中的单独字符串设置单选按钮组中单选按钮的文本...
  8. .NET Nancy 详解(三) Respone 和 ViewEngine
  9. ssh整合步骤之一(搭建环境)
  10. 你可能不知道的10条SQL技巧,涨知识了!
  11. 资产管理软件 GLPI的安装(转)
  12. linux dosbox使用教程,dosbox安装及汇编教程 dosbox的常用快捷键
  13. 电机计算机仿真,电机调速系统的计算机仿真
  14. ubuntu下mingw32交叉编译环境搭建
  15. ut红种状态解决办法汇总
  16. 【算法】两矩形相交的判定
  17. 解决python使用猴子补丁时引入ssl错误
  18. 内存泄漏问题该如何解决-面试学习笔记
  19. 与时间赛跑!阿里云医疗 AI | 心血管识别技术
  20. 2-4 第18次课 高项之沟通管理与干系人管理

热门文章

  1. java多线程提交,如何按照时间顺序获取线程结果,看完你就懂了 | Java工具类
  2. STLINK : Warning: Connection to device 0x413 is lost
  3. 磁珠 符号_(整理)贴片磁珠规格.
  4. 如何进行有效的计划管理?
  5. loj 3090 「BJOI2019」勘破神机 - 数学
  6. PHP绘制99的棋盘,JS canvas绘制五子棋的棋盘
  7. iTween基础之iTweenPath(自定义路径移动)
  8. About kettle carte
  9. 学 计算机 知识视频,教你学电脑——计算机基础知识【视频】*
  10. 读理工科研究生的心态