——————————DescriptionStart——————————
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明






基于javaweb的JSP+Servlet在线考试管理系统(java+jsp+jquery+servlet+mysql)
项目介绍
本项目包含管理员与学生两个角色; 管理员角色包含以下功能: 登录页面,管理员首页,考生信息管理,成绩管理,考生录入,题库管理,题目录入,试卷管理等功能。
学生角色包含以下功能: 学生登录,学生主页,开始考试,查看成绩等功能。
PS:在添加学生或者添加试题的时候,可以上传文件来实现,文件的模板在管理试题和管理学生的时候,点击下载就有了。
环境需要
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项目:否;
技术栈
- 后端:Servlet 2. 前端:JSP+jQuery
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/ 登录
——————————CodeStart——————————
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| break; default: break; }
try { //实例化数据库连接对象,把上面计算到的分值分别存入数据库中 DatabassAccessObject db = new DatabassAccessObject(); LoginBean loginBean = (LoginBean) session.getAttribute("loginBean"); String ID = loginBean.getID(); db.insert("update student set score = ? where ID = ? ", score, ID); ResultSet rs = db.query("select * from score where id = ?", ID); if (!rs.next()) { db.insert("insert into score values(?,?,?,?,?,?,?,?)", ID, score, score_sing, score_muti, score_jud, score_fill, score_ess,grade); } else { db.modify( "update score set score = ? , score_sing = ? , score_muti= ? , score_jud = ? , score_fill = ? , score_ess = ?,grade = ? where ID = ? ;", score, score_sing, score_muti, score_jud, score_fill, score_ess,grade, ID); } rs = db.query("select * from student where id = ?", ID); rs.first(); } catch (Exception e) { e.printStackTrace(); } System.out.println(score); response.setContentType("text/html;charset=utf-8");
//如果考生交了白卷,且作答时间有剩余5分钟以上,则建议考生继续作答,重定向回试卷页面; //否则,视为交卷成功,重定向回学生信息页。 PrintWriter out = response.getWriter(); long curTime = System.currentTimeMillis() / 1000; long endTime = (long) session.getAttribute("endTime"); if (score == 0 && endTime - curTime >= 300) { out.println("<script language=javascript>if(confirm('时间尚有剩余,请认真作答')){window.location='" + request.getContextPath() + "/student/student_exam_paper.jsp';}</script>"); out.println("<script language=javascript>window.location='" + request.getContextPath() + "/student/student.jsp';alert('试卷已经提交,可以查阅成绩单');</script>"); LoginBean loginBean = (LoginBean) session.getAttribute("loginBean"); loginBean.setScore(score);
} else { LoginBean loginBean = (LoginBean) session.getAttribute("loginBean"); loginBean.setScore(score); session.removeAttribute("examTime"); session.removeAttribute("endTime"); out.println("<script language=javascript>window.location='" + request.getContextPath()
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8");
String executeMode = request.getParameter("executeMode"); int mode = Integer.parseInt(executeMode); System.out.println(mode);
int cpage = 0; int per = 10; if (request.getParameter("cpage") != null) { cpage = Integer.parseInt(request.getParameter("cpage")); } request.setAttribute("cpage", cpage); if (request.getParameter("per") != null) { per = Integer.parseInt(request.getParameter("per")); } request.setAttribute("per", per); String ID = request.getParameter("ID"); String name = request.getParameter("name"); String CLASS = request.getParameter("class"); Float score_sing = Float.valueOf(request.getParameter("score_sing")); Float score_muti = Float.valueOf(request.getParameter("score_muti")); Float score_jud = Float.valueOf(request.getParameter("score_jud")); Float score_fill = Float.valueOf(request.getParameter("score_fill")); Float score_ess = Float.valueOf(request.getParameter("score_ess"));
Float score = score_sing + score_muti + score_jud + score_fill + score_ess; String grade = ""; int f = Math.round(score); int g = ((f < 0) == true ? 1 : 0) + ((f < 60) == true ? 1 : 0) + ((f < 75) == true ? 1 : 0) + ((f < 85) == true ? 1 : 0) + ((f < 95) == true ? 1 : 0); switch (g) { case 0: grade = "优秀"; break; case 1: grade = "良好"; break; case 2: grade = "中等"; break; case 3: grade = "及格"; break; case 4: grade = "不及格"; break; case 5: grade = "缺考"; break; default:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| */ @WebServlet("/ShowQuePage") public class QuestionShowByPageServlet extends HttpServlet { private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int cpage = 0; int per = 10; if (request.getParameter("cpage") != null) { cpage = Integer.parseInt(request.getParameter("cpage")); } request.setAttribute("cpage", cpage); if (request.getParameter("per") != null) { per = Integer.parseInt(request.getParameter("per")); } request.setAttribute("per", per); try { DatabassAccessObject db = new DatabassAccessObject(); ResultSet rsTotal = db.query("select count(*) as total from question"); if (rsTotal.next()) { request.setAttribute("totalPage", 1 + (rsTotal.getInt("total") - 1) / per); } ArrayList<QuestionBean> queBeanAllList = new ArrayList<QuestionBean>(); ResultSet rs=null; String q_title=request.getParameter("q_title"); String q_type=""; q_type=request.getParameter("q_type"); if (q_title!=null) { rs=db.query("select * from question where title LIKE '%"+q_title+"%' ;"); }else if(q_type!=null&&q_type.length()>0){ rs=db.query("select * from question where type='"+q_type+"' ;"); } else { rs = db.query("select\r\n" + " *\r\n" + "from\r\n" + " question\r\n" + "order by\r\n" +
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
@WebServlet("/ShowScorePage") public class ScoreShowByPage extends HttpServlet { private static final long serialVersionUID = 1L; protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException { int cpage = 0; int per = 10; if (request.getParameter("cpage") != null) { cpage = Integer.parseInt(request.getParameter("cpage")); } request.setAttribute("cpage", cpage); if (request.getParameter("per") != null) { per = Integer.parseInt(request.getParameter("per")); } request.setAttribute("per", per); try { DatabassAccessObject db=new DatabassAccessObject(); ResultSet rsTotal = db .query("select count(*) as total from student"); if (rsTotal.next()) { request.setAttribute("totalPage", 1 + (rsTotal.getInt("total") - 1) / per); } ArrayList<StudentInfoBean> stuBeanAllList = new ArrayList<StudentInfoBean>(); ResultSet rs=null; String s_ID=request.getParameter("s_ID"); if (s_ID!=null) { rs=db.query("select score.ID,class,name,score_sing,score_muti,score_jud,score_fill,score_ess,score.score,grade from student join score on student.id=score.id where score.id LIKE '%"+s_ID+"%' ;"); }else { rs = db.query("select score.ID,class,name,score_sing,score_muti,score_jud,score_fill,score_ess,score.score,grade from student join score on student.id=score.id order by ID ;"); }
int total = 0; while (rs.next()) { String ID=rs.getString(1);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| * 此外,还可以接受批量上传的图片,并保存到工程目录下 */ @WebServlet("/HandleBatchAdd") @MultipartConfig public class BatchAdditionServlet extends HttpServlet { private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); String excelSorcePath = ""; Integer mode = Integer.valueOf(request.getParameter("mode")); String savePath = getServletContext().getRealPath("/images");
Part part = request.getPart("excel"); String fileName = part.getSubmittedFileName(); if (fileName.length() > 0) { savePath = getServletContext().getRealPath("/images"); part.write(savePath + "/" + fileName); excelSorcePath = savePath + "/" + fileName; }
for (Part imgPath : request.getParts()) { if (imgPath.getName().startsWith("img")) { String fileName1 = imgPath.getSubmittedFileName(); if (fileName1 == null || fileName1.length() == 0) break; try { imgPath.write(savePath + "/" + fileName1); } catch (Exception e) { System.out.println(e); }
|
——————————PayStart——————————
项目链接:
https://javayms.github.io?id=411122572008200tw
https://javayms.pages.dev?id=411122572008200tw