3.4 泰山学院毕业论文 下载本文

泰山学院本科毕业论文

图4-4 试卷管理界面

试卷管理的作用是查询所有的试卷列表、增加新的试卷和删除不用的试卷。 进入试卷管理页面时,系统将展现所有的试卷列表,展现内容包括每套试卷的名称、试题列表,考虑到一套试卷能可能包含大量试题,试题列表中仅显示试题Id。

对试卷的操作主要是增加和删除。点击增加按钮时,右下将展现增加操作界面。在增加页面中可以输入试卷的名称、试题列表。在试卷列表页面中选中一条记录后,点击删除按钮,系统将判读该试卷是否被某场考试使用,如果未被使用,可以删除,否则不予删除。

查询试卷所有列表页面(paperList.jsp)主要代码如下: paperList.jsp 中首先引入 paper 类,如下代码所示: <%@ page import=\然后调用paper类的getPapers()方法,调用过程如下所示: List papers = Paper.getPapers(); Paper类的getPapers()方法的作用的从数据库的paper表中查询出所有的记录,然后通过每条记录来构建Paper对象,最后将这些试题集合保存到List中。getPapers()的主要代码如下所示: public static List getPapers() { List papers = new ArrayList(); DBConn dbconn = new DBConn(); Connection conn = dbconn.getConn(); String sql = \24

泰山学院本科毕业论文

Statement stmt = DBConn.getStatement(conn); ResultSet rs = DBConn.getResultSet(stmt, sql); try { while (rs.next()) { Paper paper = new Paper(); paper.setId(rs.getInt(\ paper.setName(rs.getString(\ paper.setQuestionIds(rs.getString(\ papers.add(paper); }

} catch (SQLException e) { e.printStackTrace(); } finally { DBConn.close(rs); DBConn.close(stmt); DBConn.close(conn); }

return papers;

}

取得所要查询的试卷列表后,paperList.jsp页面遍历List,取出List中的

每个Paper对象,将对象的各个值用表格的形式展现,展现过程的代码如下所示: <% for(int i=0;i ><%=p.getName()%> 在试卷列表展现页面中,教师可以增加试卷和删除试卷。点击增加试题按钮时,分栏框架的右下将展现试卷增加页面。

一张试卷主要包括两部分内容:试卷名称、试题列表Id。试卷名称手动输入即可,试题列表Id的输入需要先点击获得试题列表的按钮,系统将弹出所有试题列表的页面,从弹出的页面中选择所需的试题后,这些试题的Id将返回到试卷增加页面的试题列表框中。

当输入完试卷信息点击保存后,页面将执行试卷的保存操作,主要实现代码如下:

25

泰山学院本科毕业论文

if(action != null && action.trim().equals(\String name = request.getParameter(\String questionIds = request.getParameter(\Paper p = new Paper(); p.setName(name); p.setQuestionIds(questionIds); p.save(); out.println(\添加试卷成功!恭喜!\return; } 该过程先获取填写的表单参数,然后构建一个Paper对象,将相应的值赋给这个Paper对象,然后调用Paper对象的save方法,将值写入数据库的paper表。Paper对象的save方法代码如下:

public void save() { DBConn dbconn = new DBConn(); Connection conn = dbconn.getConn(); String sql = \ PreparedStatement pstmt = DBConn.prepare(conn, sql); try { pstmt.setString(1,name ); pstmt.setString(2, questionIds); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { DBConn.close(pstmt); DBConn.close(conn); } } 至此,完成了试卷的保存。教师还能删除试卷,在试卷列表页面中选中一条试卷记录后,点击删除,将执行试卷的删除操作。删除操作在paperDel.jsp页面完成。选中试卷后,点击删除按钮,paperDel.jsp页面获得上个页面传递过来的试卷Id号,调用paper类的delete方法,删除数据库中的相应记录,paperDel.jsp页面的主要代码如下所示:

int id = Integer.parseInt(request.getParameter(\Paper p = new Paper(); boolean isDelSucess = p.delete(id); String result=isDelSucess?\提示:删除成功!\试卷已被使用,不允许删除!\如上代码所示,paperDel.jsp页面将调用Paper类的delete方法,Paper类26

泰山学院本科毕业论文

的delete方法的代码如下所示:

public boolean delete(int id) { if (!delAble(id)) return false; DBConn dbconn = new DBConn(); Connection conn = dbconn.getConn(); String sql = \ PreparedStatement pstmt = DBConn.prepare(conn, sql); try { pstmt.setInt(1,id ); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { DBConn.close(pstmt); DBConn.close(conn); } return true; } 在删除试卷之前先通过delAble()判断该试卷能否被删除,delAble方法先获得试卷的Id,再到考试表里查询出所有考试用到的试卷Id的集合,然后遍历这些试卷Id的集合,查找是否包含传入的那个Id,如果未包含,则表明该试卷未被使用,可以执行删除操作,否则将不予删除该试卷。delAble()具体实现代码如下所示:

private boolean delAble(int id){

String idString = String.valueOf(id); StringBuffer allIds = new StringBuffer(); String ids = null;

DBConn dbconn = new DBConn(); Connection conn = dbconn.getConn(); String sql = \

Statement stmt = DBConn.getStatement(conn); ResultSet rs = DBConn.getResultSet(stmt, sql); try { while (rs.next()) { ids=(rs.getString(\ allIds.append(ids).append(\ }

} catch (SQLException e) { e.printStackTrace(); } finally { DBConn.close(rs); DBConn.close(stmt);

27