• SSH在线考试系统


    作者主页:夜未央5788

     简介:Java领域优质创作者、Java项目、学习资料、技术互助

    文末获取源码

    项目介绍

    本项目是在线模拟考试系统的设计与实现,系统采用浏览器/服务器模式开发,包括登录注册、在线考试、试卷设置、试题管理、分数的统计以及成绩查询等功能。系统运行在Windows操作系统上,以Tomcat作为Web服务器,使用SSH+JSP技术和MySQL数据库实现。

    项目主要包含管理员、教师与学生三种角色;

    环境需要

    1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
    2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
    3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
    4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
    5.数据库:MySql 5.7版本;

    6.是否Maven项目: 否;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目

    技术栈

    1. 后端:spring+structs+hibernate

    2. 前端:JSP+Javascript+css

    使用说明

    1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
    2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
    若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;
    2. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置;

    4. 运行项目,浏览器中输入http://localhost:8080/ctest 登录

    运行截图

     

     

     

     

     

     

     

     

    相关代码

    AdminUserAction

    1. public class AdminUserAction extends ActionSupport implements ModelDriven<AdminUser> ,SessionAware{
    2. private AdminUser admin = new AdminUser();
    3. private AdminUserService adminUserService;
    4. public void setAdminUserService(AdminUserService adminUserService) {
    5. this.adminUserService = adminUserService;
    6. }
    7. public AdminUser getModel() {
    8. return admin;
    9. }
    10. private String npw;
    11. public void setNpw(String npw) {
    12. this.npw = npw;
    13. }
    14. //管理员登录
    15. public String alogin(){
    16. return "alogin";
    17. }
    18. //验证管理员编号和密码是否正确
    19. public String login(){
    20. //接收从数据库中查询的信息
    21. AdminUser existAdmin = adminUserService.login(admin);
    22. //判断用户是否存在
    23. if(existAdmin == null){
    24. this.addActionError("管理员编号或密码错误");
    25. return "loginFailadmin";
    26. }else{
    27. //如果用户存在,将用户信息存到session中
    28. ServletActionContext.getRequest().getSession().setAttribute("existAdmin", existAdmin);
    29. return "loginSuccessadmin";
    30. }
    31. }
    32. //查看管理员信息
    33. public String ckxx(){
    34. return "ckxxadmin";
    35. }
    36. //修改密码
    37. public String upw(){
    38. return "upwadmin";
    39. }
    40. public String updatePW(){
    41. adminUserService.updatePW(admin.getUid(),npw);
    42. return "updateadminPW";
    43. }
    44. //安全退出清除session
    45. public String sessionDestory(){
    46. ServletActionContext.getRequest().getSession().invalidate();
    47. return "sessionDestoryadmin";
    48. }
    49. public void setSession(Map<String, Object> arg0) {
    50. }
    51. }

    问题Action

    1. public class QuestionAction extends ActionSupport implements ModelDriven<Question>{
    2. private Question question = new Question();
    3. public Question getModel() {
    4. return question;
    5. }
    6. private QuestionService questionService;
    7. public void setQuestionService(QuestionService questionService) {
    8. this.questionService = questionService;
    9. }
    10. private Integer tid;
    11. public void setTid(Integer tid) {
    12. this.tid = tid;
    13. }
    14. private Integer qtid;
    15. public void setQtid(Integer qtid) {
    16. this.qtid = qtid;
    17. }
    18. private int page;
    19. public void setPage(int page) {
    20. this.page = page;
    21. }
    22. //选择查找试题的试题类型
    23. public String ckQuestionAndXZQT(){
    24. List<QuestionType> listqt = questionService.ckQuestionAndXZQT();
    25. ActionContext.getContext().getValueStack().set("listqt", listqt);
    26. return "ckQuestionAndXZQT";
    27. }
    28. //选择查找试题的试题类型
    29. public String ckAdminQuestionAndXZQT(){
    30. List<QuestionType> listqt = questionService.ckQuestionAndXZQT();
    31. ActionContext.getContext().getValueStack().set("listqt", listqt);
    32. return "ckAdminQuestionAndXZQT";
    33. }
    34. //查找试题
    35. public String ckQuestion() throws UnsupportedEncodingException{
    36. if(question.getQid()!=null){
    37. question = questionService.selectQuestion(question.getQid());
    38. }
    39. PageBean<Question> pageBean = questionService.ckQuestion(question,tid,qtid,page);
    40. ActionContext.getContext().getValueStack().set("pageBean", pageBean);
    41. List<QuestionType> listqt = questionService.ckQuestionAndXZQT();
    42. ActionContext.getContext().getValueStack().set("listqt", listqt);
    43. ActionContext.getContext().getValueStack().set("pageqtid", qtid);
    44. return "ckQuestion";
    45. }
    46. //管理员查找试题
    47. public String ckAdminQuestion() throws UnsupportedEncodingException{
    48. if(question.getQid()!=null){
    49. //根据试题编号,获取试题详细信息
    50. question = questionService.selectQuestion(question.getQid());
    51. }
    52. //获取符合条件的试题
    53. PageBean<Question> pageBean = questionService.ckAdminQuestion(question,qtid,page);
    54. //将符合符合条件的数据存放到值栈中,出入到显示界面
    55. ActionContext.getContext().getValueStack().set("pageBean", pageBean);
    56. List<QuestionType> listqt = questionService.ckQuestionAndXZQT();
    57. ActionContext.getContext().getValueStack().set("listqt", listqt);
    58. ActionContext.getContext().getValueStack().set("pageqtid", qtid);
    59. return "ckAdminQuestion";
    60. }
    61. //查看相似选择试题
    62. public String ckXSXZQuestion(){
    63. List<Question> listxs = questionService.findByOword(question.getOword(), question.getQscope(), question.getQdifficulty(), qtid);
    64. ActionContext.getContext().getValueStack().set("question", question);
    65. ActionContext.getContext().getValueStack().set("listxs", listxs);
    66. return "ckXSXZQuestion";
    67. }
    68. public String ckXSXZAdminQuestion(){
    69. List<Question> listxs = questionService.findByOword(question.getOword(), question.getQscope(), question.getQdifficulty(), qtid);
    70. ActionContext.getContext().getValueStack().set("question", question);
    71. ActionContext.getContext().getValueStack().set("listxs", listxs);
    72. return"ckXSXZAdminQuestion";
    73. }
    74. //添加选择题
    75. public String addQuestionXZ(){
    76. return "addQuestionXZ";
    77. }
    78. public String addAdminQuestionXZ(){
    79. return "addAdminQuestionXZ";
    80. }
    81. //添加选择实现
    82. public String addQuestionXZSX(){
    83. Date date = new Date();
    84. question.setQdate(date);
    85. questionService.addQuestionXZSX(question,qtid,tid);
    86. return "addQuestionXZSX";
    87. }
    88. public String addAdminQuestionXZSX(){
    89. Date date = new Date();
    90. question.setQdate(date);
    91. questionService.addAdminQuestionXZSX(question,qtid);
    92. return "addQuestionXZSX";
    93. }
    94. //查看相似填空题
    95. public String ckXSTKQuestion(){
    96. List<Question> listxs = questionService.findByOword(question.getOword(), question.getQscope(), question.getQdifficulty(), qtid);
    97. ActionContext.getContext().getValueStack().set("question", question);
    98. ActionContext.getContext().getValueStack().set("listxs", listxs);
    99. return"ckXSTKQuestion";
    100. }
    101. public String ckXSTKAdminQuestion(){
    102. List<Question> listxs = questionService.findByOword(question.getOword(), question.getQscope(), question.getQdifficulty(), qtid);
    103. ActionContext.getContext().getValueStack().set("question", question);
    104. ActionContext.getContext().getValueStack().set("listxs", listxs);
    105. return "ckXSTKAdminQuestion";
    106. }
    107. //添加填空题
    108. public String addQuestionTK(){
    109. return "addQuestionTK";
    110. }
    111. public String addAdminQuestionTK(){
    112. return "addAdminQuestionTK";
    113. }
    114. //添加填空实现
    115. public String addQuestionTKSX(){
    116. Date date = new Date();
    117. question.setQdate(date);
    118. questionService.addQuestionXZSX(question,qtid,tid);
    119. return "addQuestionTKSX";
    120. }

    答案Action

    1. public class AnswerStateAction extends ActionSupport implements ModelDriven<AnswerState>{
    2. private AnswerState answerState = new AnswerState();
    3. public AnswerState getModel() {
    4. return answerState;
    5. }
    6. private AnswerStateService asService;
    7. public void setAsService(AnswerStateService asService) {
    8. this.asService = asService;
    9. }
    10. private Integer qid;
    11. public void setQid(Integer qid) {
    12. this.qid = qid;
    13. }
    14. private Integer tnid;
    15. public void setTnid(Integer tnid) {
    16. this.tnid = tnid;
    17. }
    18. private String qanswer;
    19. public void setQanswer(String qanswer) {
    20. this.qanswer = qanswer;
    21. }
    22. //根据试题编号,记录编号 进行将试题答案保存
    23. public String saveAnswerState() throws IOException{
    24. String qas = java.net.URLDecoder.decode(qanswer, "UTF-8");
    25. asService.saveAnswerState(tnid,qid,qas);
    26. return NONE;
    27. }
    28. }

    如果也想学习本系统,下面领取。回复:107ssh

  • 相关阅读:
    JSON 对比工具
    基于PHP的人才招聘网站设计
    C语言力扣第54题之螺旋矩阵。模拟旋转
    虚拟摄像头之一: android8.1 移植 v4l2loopback 虚拟摄像头
    【leetcode热题】杨辉三角 II
    Real-Time Rendering——9.6 Microgeometry微观几何
    VueX简单又详细的解读,看了就会用
    DirectX12(D3D12)基础教程(十八)—— PBR基础从物理到艺术(中)
    css实现水波纹
    PLC中ST编程的自定义功能块
  • 原文地址:https://blog.csdn.net/hanyunlong1989/article/details/125633594