📄 paperhelper.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 + -