收藏 分销(赏)

试卷分析报告产生系统.doc

上传人:可**** 文档编号:778344 上传时间:2024-03-13 格式:DOC 页数:70 大小:434KB
下载 相关 举报
试卷分析报告产生系统.doc_第1页
第1页 / 共70页
试卷分析报告产生系统.doc_第2页
第2页 / 共70页
点击查看更多>>
资源描述
。 软 件 学 院 课程设计报告书 课程名称 JavaEE 课程设计 设计题目 试卷分析报告产生系统 专业班级 软件工程10-3班 学 号 1020010303 姓 名 韩飞 指导教师 刘佳旭 2013年01月 目录 1 设计时间 2013年1月21日-2013年1月23日 2 设计目的 JavaEE课程设计是对所学JavaEE与中间件课程的小结,是提高学生对所学知识综合应用能力的一种方式,是集中实践性环节之一。要求同学们对课程中所学习到的知识综合运用,开发有一定规模的Java Web程序。 3 设计任务 (1)功能描述:用户以合法身份登录系统后,才能进行所有操作;用户可以添加、查看和删除学生成绩;用户添加完所有学生的成绩后,统计出<60分、60<=成绩<75、75<=成绩<90、90<=成绩<=100这四个分数段的学生人数。 (2)添加学生成绩:学生添加成绩信息(包括学号、姓名、成绩); (3)查看学生成绩 (4)删除学生成绩 (5)统计各分数段人数:统计出每个分数段的学生人数 4 设计内容 4.1需求分析 功能要求为:用户可以添加、删除、查看学生成绩,学生成绩中包括学号、姓名、成绩三项信息。 总体目标、 具体目标 系统数据建模 数据功能建模 图4-1为系统的数据流图,4-2为进一步分解后的数据流图。 图 4-1 数据流图 删除操作 统计操作 查看操作 返回 添加操作 返回数据 返回数据 要求统计 要求删除 用户信息 登陆 登陆 用户 添加 查看 删除 统计 用户信息 用户信息 登录 信息 要求添加 要求查看 图 4-2 详细数据流图 5 概要设计 5.1 数据库设计 图5-1为成绩的E-R图。 成绩表 学号 姓名 成绩 图5-1 E-R图 本程序使用的数据库系统为SQL Server 2000,数据库名称为“mydb”,数据表名称为“score”,表结构如表5-1所示。 成绩表(学号,姓名,成绩),主码为学号。 列名 数据类型 长度 允许空 备注 number Varchar 50 Y 学号 name varchar 50 Y 姓名 score int 4 Y 成绩 表4-1 成绩表详细设计 5.2 层次结构图 图 5-2 层次结构图 6 详细设计 6.1 程序流程图 图6-1为整个系统的程序流程图。 开始 输入用户名和密码 判断正误 显示成绩 添加成绩 删除成绩 成绩分类 显示成绩 成绩分类 添加成绩 删除成绩 结束 Y Y Y Y Y N N N N N 图 6-1 程序流程图 6.2 模块程序流程图 (1)图6-2为登陆流程图。 图 6-2 登陆程序流程图 开始 输入用户名和密码 LoginServlet UserService 判断正误 Index.jsp 结束 Y N 开始 ListAllScoresServlet ScoreDAO.getAllScores() 访问数据库 ResuleSet 结束 ResuleSet showAllScores.jsp (2)图6-3为查看所有成绩流程图。 图 6-3 查看所有成绩流程图 (3)图6-4为查看添加成绩流程图。 图 6-4 添加成绩流程图 开始 addScore.jsp AddScoreServlet ScoreDAO.addScore() 访问数据库 结束 showAllScores.jsp (4)图6-5为查看删除成绩流程图。 图 6-5 删除成绩流程图 (5)图6-6为查看成绩分类流程图。 图 6-6 查看成绩分类流程图 7 编码与实现 7.1 数据库的实现 图7-1为数据库创建截图,其中t_chengji表为所创建的成绩表。 图7-1 数据库创建 图7-2为成绩表的设计。 图7-2 成绩表实现 7.2 创建Java Web工程 图7-4 Java Web工程目录结构图 图7-4为Java Web工程student_score的截图。 “ScoreDAO.java”为和数据库交互,进行增、删、改、查操作。 “Score.java”代表成绩信息的实体类。 “Segment.java”代表成绩段信息的实体类。 “User.java”代表用户信息的实体类。 “UserService.java”判断用户登陆信息是否正确的业务层。 “AddScoreServlet.java”为接收页面表单数据并增加成绩信息的Servlet类,继承“HttpServlet”。 “ClassifyAllScoresServlet.java”为将数据库中成绩信息分类的Servlet类,继承“HttpServlet”。 “DeleteScoreServlet.java”为接收页面表单数据并删除相应成绩信息的Servlet类,继承“HttpServlet”。 “ListAllScoresServlet.java”为列出数据库中所有成绩信息的Servlet类,继承“HttpServlet”。 “LoginServlet.java”为接收页面表单登陆信息并验证用户信息的Servlet类,继承“HttpServlet”。 “DBConnection.java”为获得数据库连接的工具类。 “SQL Server JDBC Driver”为与数据库SQL Server 2005连接的驱动包。 “Web.xml”为配置Servlet中<servlet>元素和<servlet-mapping>元素的XML文件。 “addScore.jsp”为增加学生成绩的JSP页面。 “classifyAllScores.jsp”为分类学生成绩的JSP页面。 “deleteScore.jsp”为删除学生成绩的JSP页面。 “index.jsp”为主页面。 “login.jsp”为登陆页面。 “loginError.jsp”为登陆失败页面。 “showAllScores.jsp”为显示所有学生成绩的JSP页面。 7.3 工具类的实现 工具类名为“DBConnection”,该类用于获得数据库的连接,它的实现代码如下: public class DBConnection { public static Connection getConnection(){ final String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; final String url="jdbc:sqlserver://localhost:1433;databasename=mydb"; try{ Class.forName(driverName); }catch(ClassNotFoundException e){ e.printStackTrace(); } try{ Connection con=DriverManager.getConnection(url, "sa", "sa"); con.setAutoCommit(false); return con; }catch(SQLException e){ e.printStackTrace(); } return null; } } 7.4 实体类的实现 实体类有三类。 (1)第一类的类名为“Score”,该类拥有代表成绩信息的私有属性以及各个属性的set、get方法,它的实现代码如下: public class Score { private int id; private String name; private int score; public int getId() { return id; } public void setId(int id) { this.id = id; } //省略其他的get、set方法 } (2)第二类的类名为“Segment”, 该类拥有代表成绩分类信息的私有属性以及各个属性的set、get方法,它的实现代码如下: public class Segment { private String segment; private int num; public String getSegment() { return segment; } public void setSegment(String segment) { this.segment = segment; } //省略其他的get、set方法 } (3)第三类的类名为“User”,该类拥有代表用户信息的私有属性以及各个属性的set、get方法,它的实现代码如下: public class User { private String username; private String userpsw; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } //省略其他的get、set方法 } 7.5 DAO类的实现 DAO类的类名为“ScoreDao”,该类使用JDBC技术实现,用于和数据库交互,进行相关的增、删、查、统计操作,它的实现代码如下: public class ScoreDAO { //查询所有成绩信息 public List getAllScores() { Connection con = DBConnection.getConnection(); String listSQL = "select * from scores"; List list = new ArrayList(); try { PreparedStatement psmt = con.prepareStatement(listSQL); ResultSet rs = psmt.executeQuery(); while (rs.next()) { Score score = new Score(); score.setId(rs.getInt("id")); score.setName(rs.getString("name")); score.setScore(rs.getInt("score")); list.add(score); } mit(); return list; } catch (SQLException e) { e.printStackTrace(); } finally { if (con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } return null; } //添加成绩信息 public boolean addScore(Score score) throws Exception { Connection con = DBConnection.getConnection(); String listSQL = "insert into scores values(?,?,?)"; PreparedStatement pstmt = con.prepareStatement(listSQL); try { pstmt.setInt(1, score.getId()); pstmt.setString(2, score.getName()); pstmt.setInt(3, score.getScore()); pstmt.executeUpdate(); mit(); return true; } catch (SQLException e) { con.rollback(); e.printStackTrace(); } finally { con.close(); } return false; } //删除成绩信息 public boolean deleteScore(Score score) throws Exception { Connection con = DBConnection.getConnection(); String listSQL = "delete from scores where id=?"; PreparedStatement pstmt = con.prepareStatement(listSQL); try { pstmt.setInt(1, score.getId()); pstmt.executeUpdate(); mit(); return true; } catch (SQLException e) { con.rollback(); e.printStackTrace(); } finally { con.close(); } return false; } //成绩分类查询 public List classifyAllScores(){ Connection con = DBConnection.getConnection(); List list = new ArrayList(); try{ PreparedStatement psmt1 = con.prepareStatement("select * from scores where 0<=score and score<60"); PreparedStatement psmt2 = con.prepareStatement("select * from scores where 60<=score and score<75"); PreparedStatement psmt3 = con.prepareStatement("select * from scores where 75<=score and score<90"); PreparedStatement psmt4 = con.prepareStatement("select * from scores where 90<=score and score<=100"); Segment segment1=new Segment(); Segment segment2=new Segment(); Segment segment3=new Segment(); Segment segment4=new Segment(); //第一段计数 ResultSet rs = psmt1.executeQuery(); int count=0; while(rs.next()){ count++; } segment1.setSegment("0<=score<60"); segment1.setNum(count); //第二段计数 rs = psmt2.executeQuery(); count=0; while(rs.next()){ count++; } segment2.setSegment("60<=score<75"); segment2.setNum(count); //第三段计数 rs = psmt3.executeQuery(); count=0; while(rs.next()){ count++; } segment3.setSegment("75<=score<90"); segment3.setNum(count); //第四段计数 rs = psmt4.executeQuery(); count=0; while(rs.next()){ count++; } segment4.setSegment("90<=score<=100"); segment4.setNum(count); list.add(segment1); list.add(segment2); list.add(segment3); list.add(segment4); mit(); return list; }catch(SQLException e){ e.printStackTrace(); }finally { if (con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } return null; } } 7.6 Servlet类的实现 Servlet类共有5个类。 (1)第一个Servlet类的类名为“AddScoreServlet”,该类继承了“HttpServlet”,该类用于接收页面表单中的数据并将数据传递到DAO类进行添加成绩操作,它的实现代码如下: public class AddScoreServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("GBK"); int id=0; if(!request.getParameter("id").equals("")&&request.getParameter("id")!=null) id=Integer.parseInt(request.getParameter("id")); String name=(String)request.getParameter("name"); int score=0; if(!request.getParameter("score").equals("")&&request.getParameter("score")!=null) score=Integer.parseInt(request.getParameter("score")); Score score1=new Score(); score1.setId(id); score1.setName(name); score1.setScore(score); ScoreDAO scoreDAO=new ScoreDAO(); try{ scoreDAO.addScore(score1); }catch(Exception e){ e.printStackTrace(); } List list=scoreDAO.getAllScores(); request.setAttribute("allScores", list); request.getRequestDispatcher("/showAllScores.jsp").forward(request, response); } } (2)第二个Servlet类的类名为“ClassifyAllScoresServlet”,该类继承了“HttpServlet”,用于DAO将成绩分类信息传递给“classifyAllScores.jsp”页面。实现代码如下: public class ClassifyAllScoresServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ScoreDAO scoreDAO=new ScoreDAO(); List list=scoreDAO.classifyAllScores(); request.setAttribute("classifyAllScores", list); request.getRequestDispatcher("/classifyAllScores.jsp").forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } } (3)第三个Servlet类的类名为“DeleteScoreServlet”,该类继承了“HttpServlet”,用于将JSP页面所要删除的成绩信息传递给DAO进行删除操作。实现代码如下: public class DeleteScoreServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("GBK"); int id = 0; if(!request.getParameter("id").equals("")&&request.getParameter("id")!=null) id=Integer.parseInt(request.getParameter("id")); Score score=new Score(); score.setId(id); ScoreDAO scoreDAO=new ScoreDAO(); try{ scoreDAO.deleteScore(score); }catch(Exception e){ e.printStackTrace(); } List list=scoreDAO.getAllScores(); request.setAttribute("allScores", list); request.getRequestDispatcher("/showAllScores.jsp").forward(request, response); } } (4)第四个Servlet类的类名为“ListAllScoresServlet”,该类继承了“HttpServlet”,用于将DAO中所查询出的所有成绩信息传递给“showAllScores.jsp”页面。该类实现代码如下: public class ListAllScoresServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ScoreDAO scoreDAO=new ScoreDAO(); List list=scoreDAO.getAllScores(); request.setAttribute("allScores", list); request.getRequestDispatcher("/showAllScores.jsp").forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } } (5)第五个Servlet类的类名为“LoginServelt”,该类继承了“HttpServlet”,用于将“login.jsp”页面内的表单信息传递给“UserService”进行判定。如果正确验证则将转到“index.jsp”页面,否则将转到“loginError.jsp”页面。该类实现代码如下: public class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username=request.getParameter("username"); String userpsw=request.getParameter("userpsw"); User user =new User(); user.setUsername(username); user.setUserpsw(userpsw); UserService userService=new UserService(); if(userService.CheckLogin(user)){ HttpSession session =request.getSession(); session.setAttribute("name", username); request.getRequestDispatcher("/index.jsp").forward(request, response); }else{ request.getRequestDispatcher("/loginError.jsp").forward(request, response); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request,response); } } 7.7 页面的实现 本程序有6个主要的页面。 (1)“login.jsp”页面包含一个由用户名文本框、密码框、提交按钮和重置按钮组成的表单。它的实现代码如下: <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <html> <body> <form action="servlet/LoginServlet" method="get"> 用户名称:<input type="text" name="username" value="" /><br/> 用户密码:<input type="password" name="userpsw" value="" /><br/> <input type="submit" name="submit" value="登录" /> <input type="reset" name="reset" value="重写" /> </form> </body> </html> (2)“index.jsp”页面包含“显示所有成绩”、“统计所有成绩”超链接,用于控制页面跳转。它的实现代码如下: <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <html> <body> <a href="servlet/ListAllScoresServlet">显示所有成绩</a><br> <a href="servlet/ClassifyAllScoresServlet">统计所有成绩</a><br> </body> </html> (3)“showAllScores.jsp”页面包含成绩信息列表和添加、删除、返回三个超链接,用于实现“添加成绩”、“删除成绩”、“返回”三个功能。它的实现代码如下: <%@ page language="java" import="java.util.*,domain.Score" pageEncoding="GBK"%> <html> <body> <table border="1"> <tr> <th>学号</th> <th>姓名</th> <th>成绩</th> </tr> <% List list=(List)request.getAttribute("allScores"); for(Iterator it=list.iterator();it.hasNext();){ Score score=(Score)it.next(); %> <tr> <td><%=score.getId() %></td> <td><%=score.getName() %></td> <td><%=score.getScore() %></td> </tr> <% } %> </table> <a href="addScore.jsp">添加</a> <a href="deleteScore.jsp">删除</a> <a href="/student_score/index.jsp">返回</a> </body> </html> (4)“addScore.jsp”页面包含学号文本框、姓名文本框、成绩文本框、提交按钮、返回超链接,用于数据添加到数据库。它的实现代码如下: <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <html> <body> <form action="servlet/AddScoreServlet" method="post"> <table> <tr><td>学号:</td><td><input type="text" name="id" /></td></tr> <tr><td>姓名:</td><td><input type="text" name="name" /></td></tr> <tr><td>成绩:</td><td><input type="text" name="score" /></td></tr> <tr><td><input type="submit" name="submit" value="提交" /> <a href="/student_score/index.jsp">返回</a></td></tr> </table> </form> </body> </html> (5)“deleteScore.jsp”页面包含一个学号文本框、一个删除按钮、一个返回超链接。用于对所填学号的删除。它的实现代码如下: <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <html> <body> <form action="servlet/DeleteScoreServlet" method="post
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服