⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 free_test_paper.jsp

📁 在线考试软件。 在线考试软件详细设计说明书:说明在线测试这一模块各部分的功能和结构
💻 JSP
📖 第 1 页 / 共 2 页
字号:
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<%@ page import="java.sql.*" %>
<%@ page import="jinghua.*"%>
<%@ page import="java.text.*" %>
<%@ page import="java.util.*" %>

<jsp:useBean id="DBCon" class="jinghua.JinghuaConn" scope="session">
</jsp:useBean>
<%! boolean debug=false;
String studentID;
%>
<%
try{
    studentID=(String)session.getAttribute("studentID");
    //Tools.showalert(studentID,out);
    if(studentID==null){
        throw new Exception();
    }

}catch(Exception e){
    Tools.showalert("您还没有登录,或连接超时,请重新登录!",out);
    Tools.showJS("window.open('../login.jsp','_self')",out);
}




int subID=Integer.parseInt(request.getParameter("Subject"));//-1为全部
int knowID=Integer.parseInt(request.getParameter("KnowPoint"));//-1为全部
//1:任意;2:容易;3:中等;4:较难
int hardID=Integer.parseInt(request.getParameter("hard"));
//testorder:2随机顺序;2从难到易;3从易到难
int testorder=Integer.parseInt(request.getParameter("testorder"));
int testnumber=Integer.parseInt(request.getParameter("testnumber"));
//难易度设置:A,B,C,D,E
//容易:E:30%,D:30%,C:30%;B:10%
//中等:D:20%,C:30%,B:30%,A:10%,E:10%;
//较难:C:20%,B:20%,A:50%,D:10%
int numA=0,numB=0,numC=0,numD=0,numE=0,numElse=0;//各难度试题的个数
switch(hardID){
    case 1:
        numElse=testnumber;
        break;
    case 2:

        numA=0;
        numB=(int)Math.floor(testnumber*0.1);
        numC=(int)Math.floor(testnumber*0.3);
        numD=(int)Math.floor(testnumber*0.3);
        numE=(int)Math.floor(testnumber*0.3);
        numElse=testnumber-numA-numB-numC-numD-numE;
        break;

    case 3:
        numA=(int)Math.floor(testnumber*0.1);
        numB=(int)Math.floor(testnumber*0.3);
        numC=(int)Math.floor(testnumber*0.3);
        numD=(int)Math.floor(testnumber*0.2);
        numE=(int)Math.floor(testnumber*0.1);
        numElse=testnumber-numA-numB-numC-numD-numE;
        break;
    case 4:
        numA=(int)Math.floor(testnumber*0.4);
        numB=(int)Math.floor(testnumber*0.2);
        numC=(int)Math.floor(testnumber*0.2);
        numD=(int)Math.floor(testnumber*0.1);
        numE=(int)Math.floor(testnumber*0.1);
        numElse=testnumber-numA-numB-numC-numD-numE;
        break;
}
if(debug){
    out.print("<br>studentID="+studentID+
            "<br>subID="+subID+
            "<br>knowID="+knowID+
            "<br>hardID="+hardID+
            "<br>testorder="+testorder+
            "<br>numA="+numA+
            "<br>numB="+numB+
            "<br>numC="+numC+
            "<br>numD="+numD+
            "<br>numE="+numE+
            "<br>numElse="+numElse
            );
}
ResultSet rs=null;
String sql="";
String sqlcon="";
String sqlorder="";

int testnum=0;
int testmark=0;
int i=0;
String strQuestIDs=null;
Statement stmt=null;

StringBuffer testIDs=new StringBuffer();

//StringBuffer Answer=new StringBuffer();
//StringBuffer Mark=new StringBuffer();
int testNumber=0;



try{
    Connection con=DBCon.getConnection();
//构造查询条件
//科目
sqlcon="(`question`.`Source` =1)";

if(subID!=-1){
    sqlcon=sqlcon+" AND "+" (`question`.`SubjectID`="+subID+") ";
}
//知识点
if(knowID!=-1){
    if(sqlcon.equals(""))
        sqlcon=" ((`question`.`KnowPointID1` = "+knowID+") OR "+
                "  (`question`.`KnowPointID2` = "+knowID+") OR "+
                "  (`question`.`KnowPointID3` = "+knowID+")) ";
    else
        sqlcon=sqlcon+ " AND "+
                "((`question`.`KnowPointID1` = "+knowID+") OR "+
                "  (`question`.`KnowPointID2` = "+knowID+") OR "+
                "  (`question`.`KnowPointID3` = "+knowID+")) ";
}

if(debug){
    out.println("<br>sqlcon="+sqlcon);
}
//testorder:2随机顺序;2从难到易;3从易到难
switch(testorder){
    case 1:
        sqlorder=" ORDER BY RAND()";
        break;
    case 2:
        sqlorder=" ORDER BY `question`.`PreHard` ASC,`question`.`ID` ASC";
        break;
    case 3:
        sqlorder=" ORDER BY `question`.`PreHard` DESC,`question`.`ID` ASC";
        break;
    default:
        break;
}

//难易度
Vector questIDs=new Vector();
//A
if(numA>0){
    if(sqlcon.equals(""))
        sql="SELECT   `question`.`ID` FROM  `question` WHERE "+
                "(`question`.`PreHard` = 'A')"+" ORDER BY RAND() "+" LIMIT  "+numA;
    else
        sql="SELECT   `question`.`ID` FROM  `question` WHERE "+
            sqlcon+" AND "+"(`question`.`PreHard` = 'A')"+" ORDER BY RAND() "+" LIMIT  "+numA;
    try{
        stmt=con.createStatement();
        rs=stmt.executeQuery(sql);
        while(rs.next()){
            questIDs.addElement(new String(rs.getString("ID")));
        }
        if(debug)
            out.print("<br>select numA sql="+sql);
    }
    catch(Exception e){
        out.print("<br> query question hard A error sql="+sql);
        out.print("<br>"+e.toString());
    }
}
if(debug){
    out.print("<br>vector number A="+questIDs.size());
}
//B
if(numB>0){
    if(sqlcon.equals(""))
        sql="SELECT   `question`.`ID` FROM  `question` WHERE "+
                "(`question`.`PreHard` = 'B')"+" ORDER BY RAND() "+" LIMIT  "+numB;
    else
        sql="SELECT   `question`.`ID` FROM  `question` WHERE "+
            sqlcon+" AND "+"(`question`.`PreHard` = 'B')"+" ORDER BY RAND() "+" LIMIT  "+numB;
    try{
        stmt=con.createStatement();
        rs=stmt.executeQuery(sql);
        while(rs.next()){
            questIDs.addElement(new String(rs.getString("ID")));
        }
        if(debug)
            out.print("<br>select numB sql="+sql);
    }
    catch(Exception e){
        out.print("<br> query question hard B error sql="+sql);
        out.print("<br>"+e.toString());
    }
}
if(debug){
    out.print("<br>vector number B="+questIDs.size());
}

//C
if(numC>0){
    if(sqlcon.equals(""))
        sql="SELECT   `question`.`ID` FROM  `question` WHERE "+
                "(`question`.`PreHard` = 'C')"+" ORDER BY RAND() "+" LIMIT  "+numC;
    else
        sql="SELECT   `question`.`ID` FROM  `question` WHERE "+
            sqlcon+" AND "+"(`question`.`PreHard` = 'C')"+" ORDER BY RAND() "+" LIMIT  "+numC;
    try{
        stmt=con.createStatement();
        rs=stmt.executeQuery(sql);
        while(rs.next()){
            questIDs.addElement(new String(rs.getString("ID")));
        }
        if(debug)
            out.print("<br>select numC sql="+sql);
    }
    catch(Exception e){
        out.print("<br> query question hard C error sql="+sql);
        out.print("<br>"+e.toString());
    }
}
if(debug){
    out.print("<br>vector number C="+questIDs.size());
}

//D
if(numD>0){
    if(sqlcon.equals(""))
        sql="SELECT   `question`.`ID` FROM  `question` WHERE "+
                "(`question`.`PreHard` = 'D')"+" ORDER BY RAND() "+" LIMIT  "+numD;
    else
        sql="SELECT   `question`.`ID` FROM  `question` WHERE "+
            sqlcon+" AND "+"(`question`.`PreHard` = 'D')"+" ORDER BY RAND() "+" LIMIT  "+numD;

    try{
        stmt=con.createStatement();
        rs=stmt.executeQuery(sql);
        while(rs.next()){
            questIDs.addElement(new String(rs.getString("ID")));
        }
        if(debug)
            out.print("<br>select numD sql="+sql);
    }
    catch(Exception e){
        out.print("<br> query question hard D error sql="+sql);
        out.print("<br>"+e.toString());
    }
}
if(debug){
    out.print("<br>vector number D="+questIDs.size());
}

//E
if(numE>0){
    if(sqlcon.equals(""))
        sql="SELECT   `question`.`ID` FROM  `question` WHERE "+
                "(`question`.`PreHard` = 'E')"+" ORDER BY RAND() "+" LIMIT  "+numE;
    else
        sql="SELECT   `question`.`ID` FROM  `question` WHERE "+
            sqlcon+" AND "+"(`question`.`PreHard` = 'E')"+" ORDER BY RAND() "+" LIMIT  "+numE;
    try{
        stmt=con.createStatement();
        rs=stmt.executeQuery(sql);
        while(rs.next()){
            questIDs.addElement(new String(rs.getString("ID")));
        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -