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

📄 paperhelper.java

📁 采用Eclispe开发平台
💻 JAVA
字号:
package com.whatratimes.util;

import com.whatratimes.dbms.DBHelper;
import com.whatratimes.dbms.InsertSQLExecuter;
import com.whatratimes.dbms.QuerySQLExecuter;
import com.whatratimes.dbms.UserSQLExecuter;
import com.whatratimes.tables.t_exam;
import com.whatratimes.util.ConstHelper;

import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;

public class PaperHelper
{
    public static Integer selectPaper(Integer assignment_id, Integer user_id)
    {
        Object[] papers = UserSQLExecuter.executeQuery(
                "SELECT PaperId " +
                "FROM " +
                "t_exam_assigned_paper " +
                "WHERE " +
                "AssignmentId = " + assignment_id
        );

        Object[] used_papers = UserSQLExecuter.executeQuery(
                "SELECT DISTINCT PaperId " +
                "FROM " +
                "t_exam_submit " +
                "WHERE " +
                "AssignmentId = " + assignment_id + " AND " +
                "UserId = " + user_id
        );

        if (papers.length <= used_papers.length)
        {
            // no paper to select.
            return null;
        }

        Vector r = new Vector();

        for (int i = 0; i < papers.length; i++)
        {
            r.add(((Hashtable) papers[i]).get("PaperId"));
        }

        for (int i = 0; i < used_papers.length; i++)
        {
            r.remove(((Hashtable) used_papers[i]).get("PaperId"));
        }

        return (Integer) r.elementAt((ConstHelper.ran.nextInt(r.size())));

    }

    public static Integer selectPracticePaper(Integer assignment_id, Integer user_id)
    {
        Object[] papers = UserSQLExecuter.executeQuery(
                "SELECT PaperId " +
                "FROM " +
                "t_exam_assigned_paper " +
                "WHERE " +
                "AssignmentId = " + assignment_id
        );

        Object[] used_papers = UserSQLExecuter.executeQuery(
                "SELECT DISTINCT PaperId " +
                "FROM " +
                "t_exam_submit " +
                "WHERE " +
                "AssignmentId = " + assignment_id + " AND " +
                "UserId = " + user_id
        );

        Vector r = new Vector();

        for (int i = 0; i < papers.length; i++)
        {
            r.add(((Hashtable) papers[i]).get("PaperId"));
        }

        // 实践题如果还有未用试卷,就优先使用未用试卷,否则可以重复使用已用过的试卷。
        if (papers.length > used_papers.length)
        {
            for (int i = 0; i < used_papers.length; i++)
            {
                r.remove(((Hashtable) used_papers[i]).get("PaperId"));
            }
        }

        return (Integer) r.elementAt((ConstHelper.ran.nextInt(r.size())));

    }

    public static Integer generatePaperBeforeExam(t_exam exam)
    {

        QuerySQLExecuter sql = new QuerySQLExecuter();

        sql.appendTableName("t_question");
        sql.appendColumn("QuestionId");

        sql.appendWhereCondition("CourseId", "=", new Integer(exam.CourseId));
        sql.appendWhereCondition("QuestionType", "=", new Integer(exam.QuestionType));
        sql.appendWhereCondition("ExamType", "=", new Integer(exam.ExamType));


        if ( exam.Unit != 0 )
        {
            sql.appendWhereCondition("Unit", "=", new Integer(exam.Unit));
        }
        if ( exam.Chapter != 0 )
        {
            sql.appendWhereCondition("Chapter", "=", new Integer(exam.Chapter));
        }
        if ( exam.Section != 0 )
        {
            sql.appendWhereCondition("Section", "=", new Integer(exam.Section));
        }

        Object[] objs = sql.executeQuery();


        int number = exam.NumberOfQuestion;

        if (objs.length < number)
        {
            return null;
        }

        Vector r = new Vector();

        for ( int i=0; i<objs.length; i++)
        {
            r.add(((Hashtable)objs[i]).get("QuestionId"));
        }

        Vector questions = new Vector();

        while (questions.size() < number)
        {
            Integer next = new Integer(ConstHelper.ran.nextInt(r.size()));

            Object qid = r.elementAt(next.intValue());

            r.removeElementAt( next.intValue());

            Object[] temp = UserSQLExecuter.executeQuery("" +
                    "select ChoiceId from t_question_choice where QuestionId = " + qid);

            if (temp.length < 2)
            {
                // invalid question
                if ( number - questions.size() > r.size())
                {
                    return null;
                }
                continue;
            }

            questions.add(qid);

            UserSQLExecuter.executeUpdate(" update t_question set UsageCounter = UsageCounter + 1 where QuestionId = " + qid);

        }

        Integer pid = new Integer(DBHelper.getNextPaperId());

        int qq = 1;
        Enumeration enu = questions.elements();
        while (enu.hasMoreElements())
        {
            InsertSQLExecuter isql = new InsertSQLExecuter();
            isql.appendTableName("t_exam_question");
            isql.appendValue("ExamId", new Integer(exam.ExamId));
            isql.appendValue("PaperId", pid);
            isql.appendValue("QuestionSeq", new Integer(qq++));
            isql.appendValue("QuestionId", enu.nextElement());

            isql.executeUpdate();
        }

        return pid;

    }

}

⌨️ 快捷键说明

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