?? mn_test_rs.jsp
字號(hào):
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<%@ page import="java.sql.*" %>
<%@ page import="jinghua.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%! boolean debug=false;%>
<jsp:useBean id="DBCon" class="jinghua.JinghuaConn" scope="session">
</jsp:useBean>
<%
String testID=request.getParameter("testid");
String studentID=request.getParameter("studentid");
String mn_testID=request.getParameter("mn_testID");
int valid=Integer.parseInt(request.getParameter("valid"));
int old=Integer.parseInt(request.getParameter("old"));
//String testID="62";
//String studentID="1";
if(studentID==null){
Tools.showalert("您還沒(méi)有登錄,或連接超時(shí),請(qǐng)重新登錄!",out);
Tools.showJS("window.open('../login.jsp','_self')",out);
}
ResultSet rs=null;
String sql="";
String title="";
int testnum=0;
StringBuffer sb=null;
PreparedStatement pstmt=null;
Statement stmt=null;
String name="";//考生姓名
int correct=0;
int error=0;
String correctAns="";
String youAns="";
StringBuffer dbmsg=new StringBuffer();
StringBuffer testIDs=new StringBuffer();
StringBuffer Answer=new StringBuffer();
StringBuffer Mark=new StringBuffer();
StringBuffer SubAns=new StringBuffer();
StringBuffer SubMark=new StringBuffer();
StringBuffer TF=new StringBuffer();
StringBuffer Dif=new StringBuffer();
int sub_num=0;
Vector explain=new Vector();
String [] arrMark=null;
String [] arrAnswer=null;
String [] arrSubAns=null;
String [] arrTestID=null;
String [] arrTF=null;
String temp="";
String subid="";//科目ID
String markPercent="";//百分制的分?jǐn)?shù)
float testmark=0.0f;
float totalmark=0.0f;
int testNumber=0;
try{
Connection con=DBCon.getConnection();
sql="select id,paper,title,testnum,subid from test where id="+testID;
pstmt=con.prepareStatement(sql);
rs=pstmt.executeQuery();
// pstmt.close();
if(debug){
out.print("<br>sql="+sql);
}
if(rs.next()){
//分析試題:試題ID@答案@分?jǐn)?shù)@難易度; 一道試題的格式,以#號(hào)結(jié)束
if(debug) out.print("<br>begin:");
String paper=rs.getString("paper");
title=rs.getString("title");
testnum=rs.getInt("testnum");//總試題數(shù)量
subid=rs.getString("subid");
if(debug) out.print("<br>paper="+paper+"<br>testnum="+testnum);
String [] tests=paper.split("#");
for(int i=0;i<testnum;i++){
//取回試題號(hào)
String [] test=tests[i].split("@");
if(debug) {
out.print("<BR>tests["+i+"]="+tests[i]);
}
testIDs.append(test[0]+",");//題號(hào)
Answer.append(test[1]+",");//答案
Mark.append(test[2]+",");
Dif.append(test[3]+",");
testmark+=Float.parseFloat(test[2]);//總分?jǐn)?shù)
}
arrMark=Mark.toString().split(",");
arrAnswer=Answer.toString().split(",");
arrTestID=testIDs.toString().split(",");
//根據(jù)arrTestID提取考生提交的答案信息,不填寫(xiě)的為"空";
if(debug){
out.print("<br>Mark="+Mark.toString());
out.print("<br>Answer="+Answer.toString());
out.print("<br>TestID="+testIDs.toString());
out.print("<br>Mark="+Mark.toString() );
out.print("<br>Dif="+Dif.toString());
}
//取回用戶(hù)提交的答案
for(int i=0;i<testnum;i++){
temp=request.getParameter("radio"+arrTestID[i]);
if (temp==null){
SubAns.append("空"+",") ;
//arrSubAns[i]=new String("@");
}else{
SubAns.append(temp+",");
//arrSubAns[i]=new String(temp);
}
}
if(debug){
out.print("<br>Mark="+Mark.toString());
out.print("<br>Answer="+Answer.toString());
out.print("<br>TestID="+testIDs.toString());
out.print("<br>SubAns="+SubAns.toString());
}
arrSubAns=SubAns.toString().split(",");
//評(píng)分
correct=0;
error=0;
testmark=0;
totalmark=0.0f;
for(int i=0;i<testnum;i++)
{
if(valid==1 && old==0){
jinghua.T_Question.addUsedCount(con,Integer.parseInt(arrTestID[i]));
}
totalmark+=Float.parseFloat(arrMark[i]);
if(arrSubAns[i].equals(arrAnswer[i])){
if(valid==1 && old==0){
jinghua.T_Question.addCorrectCount(con,Integer.parseInt(arrTestID[i]));
}
TF.append("T,");
SubMark.append(arrMark[i]+",");
correct++;
if(debug){
Tools.debugmsg("<br>arrMark["+i+"]="+arrMark[i],out);
}
testmark+=Float.parseFloat(arrMark[i]);
}else {
error++;
SubMark.append("0,");
if(arrSubAns[i].equals(" "))
TF.append("@,");
else
TF.append("F,");
}
}
if(debug){
out.print("<br>TF="+TF.toString() );
out.print("<br>SubMark="+SubMark.toString() );
out.print("<br>TF[2]="+TF.toString().charAt(2));
}
arrTF=TF.toString().split(",");
//考生信息
rs.close();
pstmt.close();
sql="select vcUserNo,vcName from UserInfo where vcUserNo="+"'"+studentID+"'";
pstmt=con.prepareStatement(sql);
rs=pstmt.executeQuery();
if(rs.next()){
name=""+rs.getString("vcName");
}
rs.close();
pstmt.close();
//將錯(cuò)題插入錯(cuò)題本
for(int i=0;i<testnum;i++){
if(debug) out.println("<BR>question error id="+arrTestID[i]+
": result="+arrTF[i] );
if(!arrTF[i].equals("T")){
int count=0;
sql=" select count(*) as errcount from errorpad where stu_id='"+studentID+"'"+
" and question_id="+arrTestID[i];
try{
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
if(rs.next()){
count=rs.getInt("errcount");
}
rs.close();
stmt.close();
if(debug){
out.print("<br>errorpad question_id="+arrTestID[i]+
"<br>count="+count);
}
if(count==0){//插入新記錄
sql=" insert into errorpad(stu_id,question_id,add_date,errorcount,test_id,mn_test_id,sourcetype)"+
" values('"+studentID+"',"+arrTestID[i]+",CURRENT_TIMESTAMP,1,"+testID+","+mn_testID+",3) ";
stmt=con.createStatement();
stmt.executeUpdate(sql);
stmt.close();
}else{
sql=" update errorpad set errorcount=errorcount+1 where stu_id='"+studentID+"'"+
" and question_id="+arrTestID[i];
stmt=con.createStatement();
stmt.executeUpdate(sql);
stmt.close();
}
}
catch(SQLException se){
out.print("<br> query errorpad info error sql="+sql);
out.print("<br>"+se.toString());
}
catch(Exception e){
out.print("<br> query errorpad info error sql="+sql);
out.print("<br>"+e.toString());
}
}//end_if
}//end for errorpad
//記錄考試結(jié)果
if(valid==1 && old==0){
DecimalFormat df=new DecimalFormat("###.0");//分?jǐn)?shù)換算
markPercent=df.format(testmark/totalmark*100);
//將分?jǐn)?shù)記錄到mn_scores表:
//查詢(xún)mn_scores中是否有相應(yīng)記錄,有則刪除
sql="select * from mn_scores where stu_id='"+studentID+"' and mn_test_id="+mn_testID+" and sub_id="+subid;
try{
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
if(rs.next()){//已經(jīng)有記錄,則不更新
rs.close();
stmt.close();
}else
{
rs.close();
stmt.close();
//在mn_scores中增加新的記錄
//構(gòu)造test_rs串:正確答案串#分?jǐn)?shù)串#個(gè)人答案串#TF串#難易度串#得分串
//temp=Answer.toString()+"#"+Mark.toString()+"#"+SubAns.toString()+"#"+
//TF.toString()+"#"+Dif.toString()+"#"+SubMark.toString();
temp=SubAns.toString()+"#"+TF.toString()+"#"+SubMark.toString();
sql=" insert into mn_scores(stu_id,mn_test_id,sub_id,score,tea_id,test_date,test_id,test_rs)"+
" values( "+
"'"+studentID+"',"+mn_testID+","+subid+","+testmark+",1,CURRENT_DATE,"+testID+",'"+
temp+"'"+" )";
try{
stmt=con.createStatement();
stmt.executeUpdate(sql);
stmt.close();
if(debug){
out.print("<br>insert into mn_scores sql="+sql);
}
}catch(SQLException se){
out.print("<br> insert into mn_scores error sql="+sql);
out.print("<br>"+se.toString());
}
catch(Exception e){
out.print("<br> insert into mn_scores error sql="+sql);
out.print("<br>"+e.toString());
}
//檢查這次模擬考試的總科目數(shù)
try{
sql="select sub_num from mn_test where id="+mn_testID;
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
if(rs.next())
sub_num=rs.getInt("sub_num");
else
sub_num=Integer.MAX_VALUE;
rs.close();
stmt.close();
if(debug){
out.print("<br>select subnum sql="+sql);
}
}
catch(SQLException se){
out.print("<br> query mn_test error sql="+sql);
out.print("<br>"+se.toString());
}
catch(Exception e){
out.print("<br> query mn_test error sql="+sql);
out.print("<br>"+e.toString());
}
//查詢(xún)已經(jīng)完成的科目數(shù)
int have_test=0;
try{
sql="select count(*) as tnum from mn_scores where stu_id='"+studentID+"' and mn_test_id="+mn_testID;
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
if(rs.next()){
have_test=rs.getInt("tnum");
}
rs.close();
stmt.close();
if(debug){
out.print("<br>have test subs="+have_test);
}
}
catch(SQLException se){
out.print("<br> query mn_scores error sql="+sql);
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -