📄 lquestion.java
字号:
/*
* This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/).
*/
package ch07.logic;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.*;
import javax.servlet.http.HttpSession;
import ch07.*;
import ch07.global.GlobalObjectProvider;
import ch07.object.unit.*;
import ch07.database.*;
/**
* 针对用户相关的逻辑处理类
* @author ShenYK
* @version 1.0
*/
public class LQuestion
{
//获得某一分类下面的试题
public Vector getQuestionsByCategoryId( String sUsername, String sCategoryId )
throws Exception
{
//首先获得对应分类的若干信息
DCategory dCategory = (DCategory)GlobalObjectProvider.getDatabaseService(CommonConst.DATABASE_KEY_CATEGORY);
//如果对应的类没有的话,报错
if ( dCategory == null )
{
throw new Exception("对应的数据操作类没有找到!");
}
Category myCategory = dCategory.getCategoryById( sCategoryId );
int iQuestionNumber = myCategory.getQuestionNumber();
//随机获得对应分类的指定数目问题
DQuestion dQuestion = (DQuestion)GlobalObjectProvider.getDatabaseService(CommonConst.DATABASE_KEY_QUESTION);
//如果对应的类没有的话,报错
if ( dQuestion == null )
{
throw new Exception("对应的数据操作类没有找到!");
}
Vector vQuestions = dQuestion.getRandomQuestions( sUsername, sCategoryId, iQuestionNumber );
return vQuestions;
}
//获得某一分类下面的所有试题
public Vector getAllQuestionsByCategoryId( String sCategoryId )
throws Exception
{
//利用对应的数据操作类取得所有问题
DQuestion dQuestion = (DQuestion)GlobalObjectProvider.getDatabaseService(CommonConst.DATABASE_KEY_QUESTION);
//如果对应的类没有的话,报错
if ( dQuestion == null )
{
throw new Exception("对应的数据操作类没有找到!");
}
Vector vQuestions = dQuestion.getAllQuestionsByCategoryId( sCategoryId );
return vQuestions;
}
//用户完成答题,计算用户得分
public int[] calculateResult( String sUsername, String sCategoryId, Vector allQuestions, Hashtable hAnswers )
throws Exception
{
//返回值
int[] iReturn = new int[2];
//计算用户总共答对了答错了多少题
int iRightCount = 0;
for ( int i=0; i<allQuestions.size(); i++ )
{
String sCorrectAnswer = ((Question)allQuestions.get(i)).getAnswer();
String sUserAnswer = (String)hAnswers.get(Integer.toString(i));
if ( sCorrectAnswer.equals(sUserAnswer) )
{
iRightCount++;
}
}
//计算用户得分
iReturn[0] = (int)(iRightCount*100)/(allQuestions.size());
//将用户的考试成绩记入数据库
//得到分类信息的数据操作对象
DRecord dRecord = (DRecord)GlobalObjectProvider.getDatabaseService(CommonConst.DATABASE_KEY_RECORD);
//如果对应的类没有的话,报错并返回login页面
if ( dRecord == null )
{
throw new Exception("对应的数据操作类没有找到!");
}
//更新数据库并计算名次
int iOrder = dRecord.registerRecord( sUsername, sCategoryId, iReturn[0], allQuestions);
iReturn[1] = iOrder;
return iReturn;
}
//删除某一指定试题
public void deleteQuestionById( String sQuestionId )
throws Exception
{
//利用对应的数据操作类取得所有问题
DQuestion dQuestion = (DQuestion)GlobalObjectProvider.getDatabaseService(CommonConst.DATABASE_KEY_QUESTION);
//如果对应的类没有的话,报错
if ( dQuestion == null )
{
throw new Exception("对应的数据操作类没有找到!");
}
dQuestion.deleteQuestionById( sQuestionId );
return;
}
//根据试题ID获得对应的题目详细信息
public Question getQuestionById( String sQuestionId )
throws Exception
{
//利用对应的数据操作类取得所有问题
DQuestion dQuestion = (DQuestion)GlobalObjectProvider.getDatabaseService(CommonConst.DATABASE_KEY_QUESTION);
//如果对应的类没有的话,报错
if ( dQuestion == null )
{
throw new Exception("对应的数据操作类没有找到!");
}
Question questionObj = dQuestion.getQuestionById( sQuestionId );
return questionObj;
}
//修改某一指定试题
public void modifyQuestion( Question questionObj )
throws Exception
{
//利用对应的数据操作类取得所有问题
DQuestion dQuestion = (DQuestion)GlobalObjectProvider.getDatabaseService(CommonConst.DATABASE_KEY_QUESTION);
//如果对应的类没有的话,报错
if ( dQuestion == null )
{
throw new Exception("对应的数据操作类没有找到!");
}
dQuestion.modifyQuestion( questionObj );
return;
}
//添加一条新试题
public void addQuestion( Question questionObj )
throws Exception
{
//利用对应的数据操作类取得所有问题
DQuestion dQuestion = (DQuestion)GlobalObjectProvider.getDatabaseService(CommonConst.DATABASE_KEY_QUESTION);
//如果对应的类没有的话,报错
if ( dQuestion == null )
{
throw new Exception("对应的数据操作类没有找到!");
}
dQuestion.addQuestion( questionObj );
return;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -