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

📄 query_mark_mn_detail.jsp

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

<%@ page import="java.sql.*"%>
<%@ page import="java.text.*"%>
<%@ page import="jinghua.*"%>
<%@ page import="java.util.*"%>
<%@ page import = "jinghua.chart.servlet.WebHitChart" %>
<%@ page import = "jinghua.chart.servlet.WebHitDataSet" %>
<%@ page import = "java.io.PrintWriter" %>

<jsp:useBean id="DBCon" class="jinghua.JinghuaConn" scope="session">
</jsp:useBean>
<%!Connection con;
//查询参加某次模拟考试的所有学生的ID
String colwidth="";

boolean debug=false;
String studentID="";
String gradenote="";
String gradename="";
int maxHisSubNum =0;
String mn_testID="";
Statement stmt=null;
ResultSet rs=null;
String sql="";
String test_subs="";
int sub_num=0;
int have_test=0;
int i=0;
int j=0;
long i10=0;
long i30=0;
float f10=0;
float f30=0;
DecimalFormat df=new DecimalFormat("####.00");
class mn_test{
    String id;
    String name;
    String gradenote;
    String subs;
    String totalMark;
    int sub_num;
    int testPeople;//全部参加人数
    //参加完所有测试的学生的ID,用","分隔
	int flag;//1:complete;2:uncomplete;3:do not any test;
    public String toString(){
        String temp="";
        temp="<br> id="+id+"<br> name="+name;
        return temp;
   }
};
class student{
    String id;
    String name;
    String jh_area;
    String school;
    String jh_area_sch;
    String grade;
    String test_date;
    int total_mark;//总分
    String avgTop10;//top 10%的总分
    String avgTop30;
    int posAll;//全部排名
    int posPercent;//100人排名

    public String toString(){
        String temp="";
        temp="<br> id="+id+"<br> name="+name+"<br> grade="+grade+"<br>jh_area="+jh_area+
        "<br>school="+school+"<br>jh_area_sch="+jh_area_sch+"<br>test_date="+test_date;
        return temp;
   }
};
class History{
    long id;
    String stu_id;
    String mn_test_id;
    int sub_num;
    int testPeople;
    String tested_id;
    int totalmark;
    String position;
    String top10avg;
    String top30avg;
    String testdate;
    String [] sub_names;
    String [] sub_marks;
    String debug;
    public String toString(){
        String temp="";
        temp="<br> id="+id+"<br> stu_id="+stu_id+"<br> mn_test_id="+mn_test_id+
            "<br>totalmark="+totalmark+"<br>position="+position+
            "<br>top10avg="+top10avg+"<br>top30avg="+top30avg;
        return temp;
   }
};
class Subject{
    int sub_id;
    String name;
    String totalMark;
    String realMark;
    String avgArea;
    String avgTotal;
    String avgTop10;
    String avgTop30;
    String posAll;//全部排名
    String posPercent;//100人排名
    int testnum=0;//试题数目
    String [] arrAnswer;
    String [] arrMark;
    String [] arrSubAnswer;
    String [] arrTF;
    String [] arrDif;
    String [] arrSubMark;
    String [] arrRate;//准确率
    String [] arrID;//question id数组
    public String toString(){
        String temp="";
        temp="<br> sub_id="+sub_id+"<br> name="+name+"<br> totalMark="+totalMark+
        "<br>avgArea="+avgArea+"<br>avgTotal="+avgTotal+"<br>avgTop10="+avgTop10+
        "<br>avgTop30="+avgTop30+ "<br>posAll="+posAll+ "<br>posPercent="+posPercent;
        return temp;
   }
};
mn_test mnTest;
student Student;
Vector subs;
Vector hisRS;
%>
<%


try{
    studentID=request.getParameter("stuID");
	mn_testID=request.getParameter("mn_testID");
    //Tools.showalert(studentID,out);

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

try{
    con=DBCon.getConnection();
	String filenamemn = WebHitChart.generateMnBarChartSize(Long.parseLong(mn_testID), 350,250,session, new PrintWriter(out));
	//String graphURLmn = request.getContextPath() + "/servlet/DisplayChart?filename=" + filenamemn;
    String graphURLmn = request.getContextPath()+"/chart/temp/"+filenamemn;

    String filenamestu = WebHitChart.generateStuHisXYChartSize(studentID, Long.parseLong(mn_testID),350,250,session, new PrintWriter(out));
	//String graphURLstu = request.getContextPath() + "/servlet/DisplayChart?filename=" + filenamestu;
    String graphURLstu = request.getContextPath()+"/chart/temp/"+filenamestu;

    //out.print("<br>graphURLmn="+graphURLmn);
    //out.print("<br>graphURLstu="+graphURLstu);
    //获取学生的年级信息
    sql=" SELECT   `grade`.`Name`,  `grade`.`note` FROM"+
        "  `grade`  INNER JOIN `UserInfo` ON (`grade`.`note` = `UserInfo`.`gradenote`)"+
        " WHERE  (`UserInfo`.`vcUserNo` = '"+studentID+"')";

    try{
        stmt=con.createStatement();
        rs=stmt.executeQuery(sql);

        if(rs.next()){
            gradenote=rs.getString("note");
            gradename=rs.getString("Name");
            rs.close();
            stmt.close();
        }
        if(debug){
            out.print("<br>stuID="+studentID+"<br>gradenote="+gradenote);
        }
    }
    catch(SQLException se){
        out.print("<br> query student error sql="+sql);
        out.print("<br>"+se.toString());
    }
    catch(Exception e){
        out.print("<br> query student error sql="+sql);
        out.print("<br>"+e.toString());
    }



    //获取模拟考试的科目信息
    sql="select * from mn_test where id="+mn_testID;
    try{
        mnTest=new mn_test();
        Student=new student();
        subs=new Vector();
        stmt=con.createStatement();
        rs=stmt.executeQuery(sql);
        if(rs.next()){
            mnTest.subs=rs.getString("subs");
			if(mnTest.subs==null)
				mnTest.subs="-1";
			else if(mnTest.subs.equals(""))
				mnTest.subs="-1";
            mnTest.id=mn_testID;
            mnTest.name=rs.getString("name");
            mnTest.sub_num=rs.getInt("sub_num");
            mnTest.gradenote=gradenote;
            mnTest.testPeople=rs.getInt("testpeople");
        }
		rs.close();
        stmt.close();
        if(debug){
            out.print("<br>mn_test_subs="+mnTest.subs+"<br>sub_num="+mnTest.sub_num);
        }
    }
    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());
    }
    //
    //如果完成了模拟考试,
    have_test=0;
    sql="select count(*) as have_test from mn_history where stu_id='"+studentID+"' and mn_test_id="+mn_testID;
    try{
        stmt=con.createStatement();
        rs=stmt.executeQuery(sql);
        if(rs.next()){
            have_test=rs.getInt("have_test");
        }
        rs.close();
        stmt.close();

        if(debug){
            out.print("<br>query mn_history sql="+sql);
        }
    }
    catch(SQLException se){
        out.print("<br>query mn_history sql="+sql);
        out.print("<br>"+se.toString());
    }
    catch(Exception e){
        out.print("<br>query mn_history sql="+sql);
        out.print("<br>"+e.toString());
    }
    //查询该学生是否完成该模拟考试中的所有测试

%>


<%if(mnTest.sub_num==0){
    				Tools.showalert("模拟考试还没有进行!",out);
                    Tools.showJS("window.close()",out);
				}else if (have_test<1){
		    		Tools.showalert("您还没有全部参加完这次模拟考试的各科测试,不能统计分数!",out);
                    Tools.showJS("window.close()",out);
				}else{


    //查询模拟考试的总分
    sql="select FORMAT(sum(mark),0) as totalmark from test,mn_scores "+
        "where test.id=mn_scores.test_id and mn_test_id="+mn_testID+" and stu_id='"+
        studentID+"'";
    try{
        stmt=con.createStatement();
        rs=stmt.executeQuery(sql);
        if(rs.next()){
            mnTest.totalMark=rs.getString("totalmark");
        }
		rs.close();
        stmt.close();
        if(debug){
            out.print("<br>mn_test totalMark sql="+sql);
            out.print("<br>mn_test totalMark="+mnTest.totalMark);
        }
    }
    catch(SQLException se){
        out.print("<br> query totalpeople error sql="+sql);
        out.print("<br>"+se.toString());
    }
    catch(Exception e){
        out.print("<br> query totalpeople error sql="+sql);
        out.print("<br>"+e.toString());
    }



    //查询学生信息,生成成绩单,考试日期取为所有试卷最后做的时间
    sql="SELECT   `UserInfo`.`vcName`,  `UserInfo`.`vcUserNo`, "+
    "  DATE_FORMAT(`mn_scores`.`test_date`,\"%Y-%m-%e\") as test_date,  `UserInfo`.`vcSchool`,  `UserInfo`.`jh_area`,CONCAT(`UserInfo`.`jh_area`,'<br>(',`UserInfo`.`vcSchool`,')') AS jh_area_sch "+
    "FROM  `UserInfo`  LEFT OUTER JOIN `grade` ON (`UserInfo`.`gradenote` = `grade`.`note`) "+
    "LEFT OUTER JOIN `mn_scores` ON (`UserInfo`.`vcUserNo` = `mn_scores`.`stu_id`) "+
    "WHERE UserInfo.vcUserNo='"+studentID+"' and mn_scores.mn_test_id="+mn_testID+
    " and mn_scores.stu_id='"+studentID+"'"+
    " ORDER BY test_date DESC"+
    " LIMIT 1";
    try{
    stmt=con.createStatement();
    rs=stmt.executeQuery(sql);
    if(rs.next()){


        Student.grade=gradename;
        Student.id=rs.getString("vcUserNo");
        Student.jh_area=rs.getString("jh_area");
        Student.jh_area_sch=rs.getString("jh_area_sch");
        Student.name=rs.getString("vcName");
        Student.school=rs.getString("vcSchool");
        Student.test_date=rs.getString("test_date");

    }
        rs.close();
        stmt.close();
        if(debug){
            out.print("<br> query student info  sql="+sql);
            //out.print("<br>student info="+Student.toString());
        }
    }
    catch(SQLException se){
        out.print("<br> query student info error sql="+sql);
        out.print("<br>"+se.toString());
    }
    catch(Exception e){
        out.print("<br> query student info error sql="+sql);
        out.print("<br>"+e.toString());
    }

    //成绩和排名
    //总分

    try{
    //个人总分
    sql=" SELECT mn_history.stu_id,mn_history.mn_test_id,  FORMAT(SUM(mn_scores.score),0) AS totalmark"+
        " FROM  `mn_history`  LEFT OUTER JOIN `mn_scores` ON  (`mn_history`.`mn_test_id` = `mn_scores`.`mn_test_id`) "+
        "   AND (`mn_history`.`stu_id` = `mn_scores`.`stu_id`) "+
        " WHERE mn_history.mn_test_id="+mnTest.id+" and mn_history.stu_id ='"+Student.id +"'"+
        " GROUP BY mn_history.stu_id,mn_history.mn_test_id"+
        " ORDER BY  totalmark desc";
    stmt=con.createStatement();
    rs=stmt.executeQuery(sql);
    if(debug)
        out.println("<br><br><br> person totalmark sql="+sql);
    if(rs.next()){
        Student.total_mark=rs.getInt("totalmark");
    }
    else{
        Student.total_mark=0;
    }
    rs.close();
    stmt.close();

    //排名
    i10=Math.round(mnTest.testPeople *0.1);//top10
    i30=Math.round(mnTest.testPeople *0.3);
    if(i10==0) i10=1;
    if(i30==0) i30=1;
    f10=0;
    f30=0;

    sql=" SELECT mn_history.stu_id,mn_history.mn_test_id,  FORMAT(SUM(mn_scores.score),0) AS totalmark"+
        " FROM  mn_history LEFT OUTER JOIN mn_scores ON(mn_history.stu_id=mn_scores.stu_id) "+
        " AND (`mn_history`.`mn_test_id` = `mn_scores`.`mn_test_id`)"+
        " WHERE mn_history.mn_test_id="+mnTest.id+
        " GROUP BY mn_history.stu_id,mn_history.mn_test_id"+
        " ORDER BY  totalmark desc";
    stmt=con.createStatement();
    rs=stmt.executeQuery(sql);

    i=0;
    int imark=0;
    int tempPos=1;
    float fmark=0;
    int tmark=Integer.MAX_VALUE;
    while(rs.next()){
        i++;
        imark=rs.getInt("totalmark");
        fmark=rs.getFloat("totalmark");

        if(i<=i10)
            f10+=fmark;
        if(i<=i30)
            f30+=fmark;
        //查找分数的排名

        if(debug){
            out.print("<br><br>student totalmark="+Student.total_mark +

⌨️ 快捷键说明

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