package com.neuedu.servlet; import com.neuedu.domain.questioninfo; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; /** * Created by Administrator on 2016/11/23 0023. */ @WebServlet(name = "ProduceQuestionServlet", urlPatterns = "/exam") public class ProduceQuestionServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } private List<questioninfo> readallquestion(String strpath) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(strpath),"utf-8")); String strline = ""; List<questioninfo> lst = new ArrayList<questioninfo>(); int index = 0; int choice = 0; questioninfo qi = new questioninfo(); while ((strline = br.readLine()) != null) { index++; choice = index % 6; switch (choice) { case 1: { qi.setQuestion(strline); break; } case 2: { qi.setAnswer1(strline); break; } case 3: { qi.setAnswer2(strline); break; } case 4: { qi.setAnswer3(strline); break; } case 5: { qi.setAnswer4(strline); break; } default: { qi.setRightanswer(strline); lst.add(qi); qi = new questioninfo();//为下几题new出对象 break; } } } br.close(); return lst; } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); String strPath = request.getServletContext().getRealPath("question.txt"); List<questioninfo> lst = readallquestion(strPath);//文件中所有的题的集合 int r=(int)(Math.random()*lst.size()); Set<Integer> set=new HashSet<Integer>(); while(set.size()<3){ set.add(r); r=(int)(Math.random()*lst.size());//再次随机,如果随机数重复,集合中的size()不变 } List<questioninfo> lstpro=new ArrayList<questioninfo>();//提供的题的集合 for(Integer ii:set){{ questioninfo q= lst.get(ii); lstpro.add(q); } } request.setAttribute("question", lstpro); request.getRequestDispatcher("/exam.jsp").forward(request, response); } }
package com.neuedu.domain; /** * Created by Administrator on 2016/11/23 0023. */ public class questioninfo { private String question; private String answer1; private String answer2; private String answer3; private String answer4; private String rightanswer; public String getQuestion() { return question; } public void setQuestion(String question) { this.question = question; } public String getAnswer1() { return answer1; } public void setAnswer1(String answer1) { this.answer1 = answer1; } public String getAnswer2() { return answer2; } public void setAnswer2(String answer2) { this.answer2 = answer2; } public String getAnswer3() { return answer3; } public void setAnswer3(String answer3) { this.answer3 = answer3; } public String getAnswer4() { return answer4; } public void setAnswer4(String answer4) { this.answer4 = answer4; } public String getRightanswer() { return rightanswer; } public void setRightanswer(String rightanswer) { this.rightanswer = rightanswer; } }<%-- Created by IntelliJ IDEA. User: Administrator Date: 2016/11/23 0023 Time: 18:36 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html> <head> <title>Title</title> </head> <body> <table width="75%" border="0" align="center"> <tr> <td> <form name="quiz1" action ="mailto:www.mb5u.com@163.com" method="post"> 您的姓名: <input type="Text" name="Name" value="" class="pt9"> <hr> <c:forEach items="${question}" var="q" varStatus="ii"> ${q.question} <ol> <input type="radio" name="Q${ii.index+1}" value="1" > ${q.answer1} <input type="radio" name="Q${ii.index+1}" value="2" > ${q.answer2} <input type="radio" name="Q${ii.index+1}" value="3" > ${q.answer3} <input type="radio" name="Q${ii.index+1}" value="4" > ${q.answer4} <input type="hidden" name = "answer${ii.index+1}" value="${q.rightanswer}"> </ol> </c:forEach> <hr> <input type="button" name="submit" value="开始评分" onClick=scorequiz(this.form) class="pt9"> <input type="reset" name="reset" value="重新测试" onClick=clearquiz(this.form) class="pt9"> <input type="submit" value="将成绩MAIL给管理员" onClick=scorequiz(this.form) name="submit" class="pt9"> 你的考试成绩: <input name="SCORE" type="text" class="pt9"> </form> </td> </tr> </table> </body> </html>
jsp+servlet模拟从题库中随机选出3道题目考试
最新推荐文章于 2023-02-10 10:55:38 发布