java组卷
‘壹’ 如何用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");
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 + "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;
}
}
‘贰’ 跪求java实现B/S考试系统的思路(最好有源代码)
做这个题库系统需要按照mvc设计一下, 最近我也实现一个类似的, 下面说下我的设计
数据库mysql+开发环境eclipse+jdk1.8, 然后基于一个整合框架把项目搭建起来
设计基础试题表, 这个主要有类型难度等等
设计试卷表, 试卷表由create的时候根据输入的规则自动根据上面的基础题库表组装而成
剩下的用户管理, 导出就比较容易了, 导出可以用poi导出成word
‘叁’ 用java开发基于web的试卷自动生成系统,要可以导出word文档
你尽管放心,不会有大侠为你提供的,你这叫定制开发,得付费的!哈哈!
‘肆’ java实现组卷功能
组卷一般分两种模式
一种是固定试卷 你直接在你题库选择题目 拼成了试卷 生成你直接拼接字符串生成一个html文件就可以了
一种是随机试卷,你设计好 选择题几个 问答题几个 。。。类似 然后一键生成 根据你设定的参数去随机取题目 然后 按一定的规律拼接就可以了 比如3个选择 2个填空 1个问答 剩下那些拼接都是布局的问题了
‘伍’ 有什么好用的在线考试系统吗Java的。
考试云就是这样一个好的考试系统,拥有如下特点:
1、支持新增考生信息,可以使用Excel模板批量导入考生信息;可以进行组无限层级织架构的建设,分部门分组管理考生信息。
2、支持可视化批量新增试题,支持word、Excel、TXT导题模板一键导入试题;导入试题时,系统会自动检测相似题目和试题格式,并给出相应的提示,避免试题的重复录入。
3、支持免登录、口令、免登录+口令、账号密码四种考生参加考试的方式;支持固定试卷、抽题试卷、随机试卷三种试卷类型,可以根据考试业务灵活组卷。
4、有模拟考场环境的参数设置,如考试时间、答题时长、参考次数、成绩显示等;还有防止作弊的措施,如人脸识别、视频抓怕监考、随机打乱试题顺序、禁止考试中途切屏、禁止考生复制、粘贴等操作。
5、支持自动阅卷,主观题可设置得分点、关键词进行判卷,具备多维度的成绩统计分析,让考试结果一目了然。
‘陆’ 哪位高手有随机组卷的思路 最好有源码 我用的是java+jsp+servlet。
M我 晚上我给你一套源码
‘柒’ 求一个java智能试卷生成系统,基于web形式的,做毕业设计
这个简单呀,你先把试题存到数据库中,然后再读取出来,生成web页面,如果你想生成的每一份试题都不一样,也可以添加一些算法,这样生成的试卷每个都不一样。。思路就这样。。。
‘捌’ 使用java来实现在智能组卷中的遗传算法(急急急)
题目好像是让你做个增强版的List ,简单的都实现了 程序架子大概是这样,排序查找什么的网络搜下 算法很多,套着每样写个方法就行了,测试就在main‘方法里写
publicclassMyList{
privateString[]arr;
privateintcount;
publicMyList(intcount){
arr=newString[count];
this.count=count;
}
publicMyList(int[]intArr){
arr=newString[intArr.length];
this.count=intArr.length;
for(inti=0;i<intArr.length;i++){
arr[i]=intArr[i]+"";
}
}
publicMyList(String[]stringArr){
arr=stringArr;
this.count=stringArr.length;
}
publicintgetLength(){
returncount;
}
//清空容器内的数组。
publicvoidclearAll(){
arr=newString[count];
}
//通过给定元素下标来删除某一元素
publicvoidremoveBySeqn(intseqn){
if(seqn>=0&&seqn<count){
arr[seqn]=null;
}
}
publicstaticvoidmain(String[]args){
MyListlist=newMyList(40);
MyListlist1=newMyList({3,2,125,56,123});
MyListlist2=newMyList({"123",""ad});
list2.removeBySeqn(0);
list1.clearAll();
}
}