如何用Java实现随机出题?

如何用Java实现随机出题?,第1张

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/htmlcharset=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/htmlcharset=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")

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 = 0k1 <ik1++)

{

int k = ai.length//8

for(int l1 = 0l1 <total_question_in_paperl1++)

{

// 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 + "test_seq_paper.nextval," + 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

}

}

import java.util.ArrayList

import java.util.List

public class Random {

    public static void main(String[] args) {

        String[] tiMu = new String[20]

        for (int i = 0 i < tiMu.length i++) {

  稿芹          tiMu[i] = "第" + (i + 1) + "题"

        }

        String[] temp = new String[10]

        //开始抽取题目

        //产生码缺10个随机数

        List<Integer> list = new ArrayList<Integer>()

        int i

        while(list.size() < 10){

            i = (int) (Math.random() * 20)

            if(!list.contains(i)){

                list.add(i)

            }

        }

        for (int j = 0 j < list.size() j++) {

            temp[j] = tiMu[list.get(j)]

       迟敬辩 }

        for (int iloop = 0 iloop < temp.length iloop++) {

            System.out.print(temp[iloop] + "   ")

        }

    }

}

代码已经写完了,亲测可用,望采纳哦!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12545757.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存