GenPaperServlet.java
资源名称:examasp.rar [点击查看]
上传用户:hjt198082
上传日期:2015-04-16
资源大小:95k
文件大小:7k
源码类别:
MySQL数据库
开发平台:
Java
- import java.io.*;
- import java.sql.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- //import oracle.jdbc.driver.OracleDriver;
- public class GenPaperServlet extends HttpServlet
- {
- Connection conn;
- Statement stmt;
- ResultSet rs;
- int total_question_num;
- int total_question_in_paper;
- int total_paper_num;
- String curr_classid;
- public GenPaperServlet()
- {
- conn = null;
- stmt = null;
- rs = null;
- total_question_num = 0;
- total_question_in_paper = 0;
- total_paper_num = 0;
- curr_classid = "";
- }
- public void doGet(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
- throws ServletException, IOException
- {
- httpservletresponse.setContentType("text/html;charset=GBK");
- PrintWriter printwriter = httpservletresponse.getWriter();
- printwriter.println("<html><head></head><body><center>");
- printwriter.println("请以POST方式提交");
- printwriter.println("</center></body></html>");
- printwriter.close();
- }
- public void doPost(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
- throws ServletException, IOException
- {
- httpservletresponse.setContentType("text/html;charset=GBK");
- PrintWriter printwriter = httpservletresponse.getWriter();
- String s = httpservletrequest.getParameter("classid"); //"20"
- String s1 = httpservletrequest.getParameter("paper_num"); //"1"
- if(s == null || s1 == null)
- {
- printwriter.println("<center>");
- printwriter.println("请按照正常方式提交数据<br>");
- printwriter.println("<a href=/test/admin/genpaper.jsp>单击这里设置生成试卷的参数</a>");
- printwriter.println("</center>");
- }
- total_paper_num = Integer.parseInt(s1);
- curr_classid = s;
- int i = 0;
- if(!open_db(curr_classid))
- {
- printwriter.println("打开数据库错误!");
- return;
- }
- if(!setParams(curr_classid))
- {
- System.out.println("设置系统参数错误!");
- return;
- }
- if(!verify_QuertionLib())
- {
- printwriter.println("试题库中试卷不足,请增加新的试题!");
- printwriter.println("班级代号:" + curr_classid);
- printwriter.println("该班级一套试卷中的试题数:" + total_question_in_paper);
- printwriter.println("目前题库中该班级的试题总数:" + total_question_num);
- return;
- }
- i = genPaper(total_paper_num, curr_classid);
- if(i == 0)
- {
- printwriter.println("生成试卷操作失败!");
- return;
- }
- if(!updateOtherTable(i, curr_classid))
- {
- printwriter.println("更新相关表操作失败!");
- return;
- } else
- {
- printwriter.println("<center>");
- printwriter.println("动态组卷成功!<br>");
- printwriter.println("共生成了 " + i + " 套试卷<br>");
- printwriter.println("<a href=/test/admin/genpaper.jsp>单击这里设置生成试卷的参数</a>");
- printwriter.println("</center>");
- return;
- }
- }
- public boolean open_db(String s)
- {
- try
- {
- //new OracleDriver();
- //conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ora9", "scott", "tiger");
- conn = DriverManager.getConnection("jdbc:odbc:aaa", "abc", "abc");
- stmt = conn.createStatement();
- }
- catch(Exception exception)
- {
- return false;
- }
- return true;
- }
- public boolean setParams(String s)
- {
- String s1 = "";
- try
- {
- String s2 = "select count(questionid) as countquestionid from test_question_lib ";
- s2 = s2 + "where classid='" + s + "'";
- rs = stmt.executeQuery(s2);
- rs.next();
- total_question_num = rs.getInt("countquestionid");
- s2 = "select totalques from test_classinfo ";
- s2 = s2 + "where classid='" + s + "'";
- rs = stmt.executeQuery(s2);
- rs.next();
- total_question_in_paper = rs.getInt("totalques");
- }
- catch(Exception exception)
- {
- return false;
- }
- return true;
- }
- public boolean verify_QuertionLib()
- {
- return total_question_num >= total_question_in_paper;
- }
- public boolean updateOtherTable(int i, String s)
- {
- int j = 0;
- String s1 = "update test_classinfo set totalpaper=totalpaper+";
- s1 = s1 + i + " where classid='" + s + "'";
- try
- {
- j = stmt.executeUpdate(s1);
- }
- catch(Exception exception)
- {
- return false;
- }
- return j == 1;
- }
- public int genPaper(int i, String s)
- {
- boolean flag = false;
- boolean flag1 = false;
- boolean flag2 = false;
- boolean flag3 = false;
- String s1 = "";
- try
- {
- int ai[] = new int[total_question_num];
- int i1 = 0;
- boolean flag4 = false;
- String s2 = "select max(paper_id) as max_paper_id from test_paper_lib";
- rs = stmt.executeQuery(s2);
- rs.next();
- int j = rs.getInt("max_paper_id") + 1;
- s2 = "select questionid from test_question_lib where classid='" + s + "'";
- for(rs = stmt.executeQuery(s2); rs.next();)
- ai[i1++] = rs.getInt("questionid");
- for(int k1 = 0; k1 < i; k1++)
- {
- int k = ai.length; //8
- for(int l1 = 0; l1 < total_question_in_paper; l1++)
- {
- // int ai[] ={1 ,3 , 5 ,9 , 56,30 96 ,25};
- int j1 = (int)Math.floor(Math.random() * (double)k); // 4
- String s3 = "insert into test_paper_lib values(";
- s3 = s3 + j + "," + ai[j1] + ")";
- stmt.executeUpdate(s3);
- int l = ai[k - 1];
- ai[k - 1] = ai[j1];
- ai[j1] = l;
- k--;
- }
- j++;
- }
- }
- catch(Exception exception)
- {
- return 0;
- }
- return i;
- }
- }