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

📄 testpaperaction.java

📁 java网上考试系统
💻 JAVA
字号:
package com.qrsx.exam.struts.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 com.qrsx.exam.Constants;
import com.qrsx.exam.dao.DAOFactory;
import com.qrsx.exam.dao.StudentDAO;
import com.qrsx.exam.dao.TeacherDAO;
import com.qrsx.exam.dao.TestPaperDAO;
import com.qrsx.exam.model.Classes;
import com.qrsx.exam.model.SelectQuestion;
import com.qrsx.exam.model.Student;
import com.qrsx.exam.model.Teacher;
import com.qrsx.exam.model.TestPaper;
import com.qrsx.exam.model.TestResult;
import com.qrsx.exam.model.User;
import com.qrsx.exam.model.YesNoQuestion;
import com.qrsx.exam.struts.BaseAction;
import com.qrsx.exam.struts.form.TestPaperForm;
import com.qrsx.exam.util.BeanUtils;
import com.qrsx.exam.util.StringUtils;

/**
 * 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(Constants.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 = BeanUtils.copyProperties(new TestPaper(), form);

        // 取得当前登录教师
        HttpSession session = request.getSession();
        Teacher t = (Teacher) session
                .getAttribute(Constants.SESSION_USER);

        // 设置提示信息
        if (StringUtils.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(Constants.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 + -