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

📄 lquestion.java

📁 在线模拟选课系统
💻 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 + -