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

📄 testpaperaction.java

📁 asp制作的在线考试系统
💻 JAVA
字号:
package cn.hxex.exam.action;

import java.io.IOException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import cn.hxex.exam.bean.TestResult;
import cn.hxex.exam.dao.DAOFactory;
import cn.hxex.exam.dao.StudentDAO;
import cn.hxex.exam.dao.TeacherDAO;
import cn.hxex.exam.dao.TestPaperDAO;
import cn.hxex.exam.form.TestPaperForm;
import cn.hxex.exam.model.Classes;
import cn.hxex.exam.model.SelectQuestion;
import cn.hxex.exam.model.Student;
import cn.hxex.exam.model.Teacher;
import cn.hxex.exam.model.TestPaper;
import cn.hxex.exam.model.User;
import cn.hxex.exam.model.YesNoQuestion;
import cn.hxex.exam.struts.BaseAction;
import cn.hxex.exam.struts.StrutsConstants;
import cn.hxex.exam.util.HxexBeanUtils;
import cn.hxex.exam.util.HxexStringUtils;

/**
 * The Action about test paper
 * 
 * @struts.action
 * 	name="testPaperForm"
 *  path="/exam/testpaper"
 *  scope="request"
 *  input="/exam/testpaper_list.jsp"
 *  validate="false"
 *  parameter="p"
 * 
 * @struts.action-forward 
 *  name="add" 
 *  path="/exam/testpaper_add.jsp"
 * 
 * @struts.action-forward 
 *  name="list" 
 *  path="/exam/testpaper_list.jsp"
 * 
 * @struts.action-forward 
 *  name="update" 
 *  path="/exam/testpaper_update.jsp"
 * 
 * @struts.action-forward 
 *  name="stulist" 
 *  path="/exam/testpaper_stulist.jsp"
 *  
 * @struts.action-forward 
 *  name="result" 
 *  path="/exam/testpaper_result.jsp"
 *  
 * @author galaxy
 *
 */
public class TestPaperAction extends BaseAction
{
	protected final Log log = LogFactory.getLog(getClass());
	
	/**
	 * 获得试卷列表
	 */
	public ActionForward list( ActionMapping mapping, 
						ActionForm form, 
						HttpServletRequest request, 
						HttpServletResponse response ) 
						throws IOException, ServletException
	{
		HttpSession session = request.getSession();
		
		// 得到当前登录教师的信息
		User u = (User)session.getAttribute( StrutsConstants.SESSION_USER );
		
		// 取得该教师所发布的试卷信息
		TeacherDAO dao = DAOFactory.getDao( TeacherDAO.class );
		Teacher t = dao.findById( u.getId(), false );
		Set<TestPaper> papers = t.getPapers();
		
		request.setAttribute( "papers", papers );
		
		// 返回试卷列表页面
		return mapping.findForward( "list" );
	}

	/**
	 * 进入试卷录入页面
	 */
	public ActionForward addin( ActionMapping mapping, 
			ActionForm form, 
			HttpServletRequest request, 
			HttpServletResponse response ) 
			throws IOException, ServletException
	{
		return mapping.findForward( "add" );
	}
	
	/**
	 * 试卷信息的保存功能
	 */
	public ActionForward save( ActionMapping mapping, 
			ActionForm form, 
			HttpServletRequest request, 
			HttpServletResponse response ) 
			throws IOException, ServletException
	{
		// 得到用户提交的试卷信息
		TestPaper paper = HxexBeanUtils.copyProperties( new TestPaper(), form );
		
		// 取得当前登录教师
		HttpSession session = request.getSession();
		Teacher t = (Teacher)session.getAttribute( StrutsConstants.SESSION_USER );
		
		// 设置提示信息
		if( HxexStringUtils.isEmpty( ((TestPaperForm)form).getId() ) )
		{
			// 保存试卷信息
			TeacherDAO teacherdao = DAOFactory.getDao( TeacherDAO.class );
			t = teacherdao.findById( t.getId(), false );
			paper.setTeacher( t );

			TestPaperDAO paperdao = DAOFactory.getDao( TestPaperDAO.class );
			paperdao.makePersistent( paper );
			
			addMessage( request, "testpaper.msg.add.success" );
			
			TestPaperForm paperform = (TestPaperForm)form;
			paperform.setExamtime( null );
			paperform.setTitle( null );
			
			return mapping.findForward( "add" );
		}
		else
		{
			// 修改试卷信息
			TestPaperDAO dao = DAOFactory.getDao( TestPaperDAO.class );
			TestPaper tp = dao.findById( paper.getId(), false );
			tp.setTitle( paper.getTitle() );
			tp.setExamtime( paper.getExamtime() );
			
			addMessage( request, "testpaper.msg.update.success" );
			return list( mapping, form, request, response );
		}
	}
	
	/**
	 * 进入试卷修改页面的Action方法
	 */
	public ActionForward updatein( ActionMapping mapping, 
			ActionForm form, 
			HttpServletRequest request, 
			HttpServletResponse response ) 
			throws IOException, ServletException
	{
		// 得到用户提交的信息
		TestPaperForm paperform = (TestPaperForm)form;
		
		// 检索用户要修改的试卷对象
		TestPaperDAO dao = DAOFactory.getDao( TestPaperDAO.class );
		TestPaper paper = dao.findById( paperform.getId(), false );
		
		if( paper==null )
		{
			addMessage( request, "testpaper.msg.update.notexist" );
			return list( mapping, form, request, response );
		}
		else
		{
			request.setAttribute( "paper", paper );
		}
		
		// 跳转到试卷修改页面
		return mapping.findForward( "update" );
	}

	/**
	 * 试卷删除功能
	 */
	public ActionForward delete( ActionMapping mapping, 
			ActionForm form, 
			HttpServletRequest request, 
			HttpServletResponse response ) 
			throws IOException, ServletException
	{
		// 得到用户提交的参数
		TestPaperForm paperform = (TestPaperForm)form;
		
		// 得到试卷的基本信息
		TestPaperDAO dao = DAOFactory.getDao( TestPaperDAO.class );
		TestPaper paper = dao.findById( paperform.getId(), false );
		if( paper!=null )
		{
			// 删除试卷
			paper.getTeacher().getPapers().remove( paper );
			dao.makeTransient( paper );
			addMessage( request, "testpaper.msg.delete.success" );
		}
		else
		{
			addMessage( request, "testpaper.msg.update.notexist" );
		}
		return list( mapping, form, request, response );
	}
	
	/**
	 * 获得学生试卷列表的Action方法
	 */
	public ActionForward stulist(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException
	{
		// 得到Session对象的实例
		HttpSession session = request.getSession();

		// 得到当前登录用户的信息
		User u = (User) session.getAttribute(StrutsConstants.SESSION_USER);
		if( u!=null )
		{
			// 得到学生对象
			StudentDAO stuDAO = DAOFactory.getDao( StudentDAO.class );
			Student student = stuDAO.findById( u.getId(), false );
			// 得到学生所在的班级
			Classes classes = student.getClasses();
			// 得到班级的任课教师
			Set<Teacher> teachers = classes.getTeachers();
			
			// 得到这些任课教师所发布的所有的试卷
			Set<TestPaper> papers = new HashSet<TestPaper>();
			Iterator<Teacher> it = teachers.iterator(); 
			while( it.hasNext() )
			{
				Teacher t = it.next();
				papers.addAll( t.getPapers() );
			}
			request.setAttribute( "papers", papers );
		}
		
		// 跳转到试卷列表页面
		return mapping.findForward( "stulist" );

	}
	
	/**
	 * 自动判卷Action方法
	 */
	public ActionForward exam(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException
	{
		// 得到用户提交的试卷参数
		TestPaperForm paperform = (TestPaperForm)form;
		
		// 得到试卷的信息
		TestPaperDAO dao = DAOFactory.getDao( TestPaperDAO.class );
		TestPaper paper = dao.findById( paperform.getId(), false );
		
		if( paper!=null )
		{
			// 初始化考试结果Bean
			TestResult result = new TestResult();
			
			// 选择题
			Set<SelectQuestion> selects = paper.getSelectquestions();
			Iterator<SelectQuestion> itSelects = selects.iterator();
			while( itSelects.hasNext() )
			{
				SelectQuestion select = itSelects.next();
				String answer = request.getParameter( select.getId() );
				result.addScore( select.getScore( answer ) );
				result.addTotalScore( select.getScore() );			
			}
			
			// 判断题
			Set<YesNoQuestion> yesnos = paper.getYesnoquestions();
			Iterator<YesNoQuestion> itYesNo = yesnos.iterator();
			while( itYesNo.hasNext() )
			{
				YesNoQuestion yesno = itYesNo.next();
				String answer = request.getParameter( yesno.getId() );
				result.addScore( yesno.getScore( answer ) );
				result.addTotalScore( yesno.getScore() );
			}
			
			// 设置考试的结果
			request.setAttribute( "testresult", result );
			addMessage( request, "testpaper.msg.delete.success" );
		}
		else
		{
			addMessage( request, "testpaper.msg.update.notexist" );
		}
		
		// 跳转到结果页面
		return mapping.findForward( "result" );
	}
}

⌨️ 快捷键说明

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