JavaEE课程设计报告-试卷分析报告产生系统_第1页
JavaEE课程设计报告-试卷分析报告产生系统_第2页
JavaEE课程设计报告-试卷分析报告产生系统_第3页
JavaEE课程设计报告-试卷分析报告产生系统_第4页
JavaEE课程设计报告-试卷分析报告产生系统_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软 件 学 院课程设计报告书课程名称 JavaEE课程设计 设计题目 试卷分析报告产生系统 专业班级 学 号 姓 名 指导教师 2011 年 12 月目录1设计时间12设计目的23设计任务2224需求分析3335概要设计4446详细设计5567编码与实现9数据库实现91011127.5 DAO类的实现137.6 Servlet类的实现1822“”文件268运行与测试289总结与展望31参考文献32成绩评定321 设计时间2011年12月16日-2011年12月25日2 设计目的JavaEE课程设计是对所学JavaEE与中间件课程的小结,提高对所学知识综合应用能力,是集中实践性环节之一。要求同学

2、们对课程中所学习到的知识综合运用,开发有一定规模的Java Web程序。3 设计任务3.1 必备功能说明:(1)功能描述:用户以合法身份登录系统后,才能进行所有操作;用户可以添加、查看和删除学生成绩;用户添加完所有学生的成绩后,统计出<60分、60<=成绩<75、75<=成绩<90、90<=成绩<=100这四个分数段的学生人数。(2)添加学生成绩:学生添加成绩信息(包括学号、姓名、成绩)(3)查看学生成绩(4)删除学生成绩(5)统计各分数段人数:统计出每个分数段的学生人数3.2 开发语言与开发环境:Windows 7,MyEclipse、SQL Ser

3、ver 2005 Express4 需求分析功能要求为:用户可以添加、删除、查看学生成绩,学生成绩中包括学号、姓名、成绩三项信息。图4-1为系统的数据流图,4-2为进一步分解后的数据流图。图 4-1 数据流图图 4-2 详细数据流图5 概要设计5.1 数据库设计图5-1为成绩的E-R图。成绩表学号姓名成绩图5-1 E-R图本程序使用的数据库系统为SQL Server 2005,数据库名称为“mydb”,数据表名称为“scores”,表结构如表5-1所示。成绩表(学号,姓名,成绩),主码为学号。列名数据类型允许空主键备注idint否是学号namevarchar(50)否否姓名scoreint否否

4、成绩表4-1 成绩表详细设计5.2 层次结构图图 5-2 层次结构图6 详细设计6.1 程序流程图图6-1为整个系统的程序流程图。开始输入用户名和密码判断正误显示所有成绩添加成绩删除成绩成绩分类显示所有成绩成绩分类添加成绩删除成绩结束YYYYYNNNNN图 6-1 程序流程图 模块程序流程图(1)图6-2为登陆流程图。图 6-2 登陆程序流程图开始输入用户名和密码LoginServletUserService判断正误I结束YN开始ListAllScoresServletScoreDAO.getAllScores()访问数据库ResuleSet结束ResuleSet(2)图6-3为查看所有成绩流

5、程图。图 6-3 查看所有成绩流程图(3)图6-4为查看添加成绩流程图。图 6-4 添加成绩流程图开始AddScoreServletScoreDAO.addScore()访问数据库结束(4)图6-5为查看删除成绩流程图。图 6-5 删除成绩流程图(5)图6-6为查看成绩分类流程图。图 6-6 查看成绩分类流程图7 编码与实现 数据库的实现图7-1为数据库创建截图,其中scores表为所创建的成绩表。图7-1 数据库创建图7-2为成绩表的设计。图7-2 成绩表实现图7-3为在成绩表中插入数据的截图。图7-3 插入数据7.2 创建Java Web工程图7-4 Java Web工程目录结构图图7-4

6、为Java Web工程student_score的截图。“”为和数据库交互,进行增、删、改、查操作。“”代表成绩信息的实体类。“”代表成绩段信息的实体类。“”代表用户信息的实体类。“”判断用户登陆信息是否正确的业务层。“A”为接收页面表单数据并增加成绩信息的Servlet类,继承“HttpServlet”。“”为将数据库中成绩信息分类的Servlet类,继承“HttpServlet”。“”为接收页面表单数据并删除相应成绩信息的Servlet类,继承“HttpServlet”。“”为列出数据库中所有成绩信息的Servlet类,继承“HttpServlet”。“”为接收页面表单登陆信息并验证用户信

7、息的Servlet类,继承“HttpServlet”。“”为获得数据库连接的工具类。“SQL Server JDBC Driver”为与数据库SQL Server 2005连接的驱动包。“W”为配置Servlet中<servlet>元素和<servlet-mapping>元素的XML文件。“”为增加学生成绩的JSP页面。“”为分类学生成绩的JSP页面。“”为删除学生成绩的JSP页面。“”为主页面。“”为登陆页面。“”为登陆失败页面。“”为显示所有学生成绩的JSP页面。7.3 工具类的实现工具类名为“DBConnection”,该类用于获得数据库的连接,它的实现代码如下:

8、public class DBConnection public static Connection getConnection()final String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"final String url="jdbc:sqlserver:/localhost:1433;databasename=mydb"tryClass.forName(driverName);catch(ClassNotFoundException e)e.printStackTrace

9、();tryConnection 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

10、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(Strin

11、g 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

12、 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.prepareState

13、ment(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);con mit();return list; catch (SQLException e) e.printStackTrace()

14、; 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.pr

15、epareStatement(listSQL);try pstmt.setInt(1, score.getId();pstmt.setString(2, score.getName();pstmt.setInt(3, score.getScore();pstmt.executeUpdate();con mit();return true; catch (SQLException e) con.rollback();e.printStackTrace(); finally con.close();return false; /删除成绩信息public boolean deleteScore(Sc

16、ore 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();con mit();return true; catch (SQLException e) con.rollba

17、ck();e.printStackTrace(); finally con.close();return false; /成绩分类查询public List classifyAllScores()Connection con = DBConnection.getConnection();List list = new ArrayList();tryPreparedStatement psmt1 = con.prepareStatement("select * from scores where 0<=score and score<60");PreparedSt

18、atement 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 wher

19、e 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.

20、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 = p

21、smt4.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);con mit();return list;catch(SQLException e)e.printStackTrace();finally if (con != null) try con.c

22、lose(); 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, HttpServletResp

23、onse 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("&q

24、uot;)&&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")!

25、=null)score=Integer.parseInt(request.getParameter("score");Score score1=new Score();score1.setId(id);score1.setName(name);score1.setScore(score);ScoreDAO scoreDAO=new ScoreDAO();tryscoreDAO.addScore(score1);catch(Exception e)e.printStackTrace();List list=scoreDAO.getAllScores();request.set

26、Attribute("allScores", list);request.getRequestDispatcher("/showAllScores.jsp").forward(request, response);(2)第二个Servlet类的类名为“ClassifyAllScoresServlet”,该类继承了“HttpServlet”,用于DAO将成绩分类信息传递给“”页面。实现代码如下:public class ClassifyAllScoresServlet extends HttpServlet public void doGet(HttpSe

27、rvletRequest request, HttpServletResponse response)throws ServletException, IOException ScoreDAO scoreDAO=new ScoreDAO();List list=scoreDAO.classifyAllScores();request.setAttribute("classifyAllScores", list);request.getRequestDispatcher("/classifyAllScores.jsp").forward(request,

28、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

29、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

30、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();tryscoreDAO.deleteScore(score);catch(Exception e)

31、();List list=scoreDAO.getAllScores();request.setAttribute("allScores", list);request.getRequestDispatcher("/showAllScores.jsp").forward(request, response);(4)第四个Servlet类的类名为“ListAllScoresServlet”,该类继承了“HttpServlet”,用于将DAO中所查询出的所有成绩信息传递给“showAllScores.jsp”页面。该类实现代码如下:public class

32、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(&

33、quot;/showAllScores.jsp").forward(request, response);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException this.doGet(request, response);(5)第五个Servlet类的类名为“LoginServelt”,该类继承了“HttpServlet”,用于将“”页面内的表单信息传递给“UserService”进行判定。如果正确验证则将转到“”页

34、面,否则将转到“”页面。该类实现代码如下: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

35、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(reques

36、t, response);elserequest.getRequestDispatcher("/loginError.jsp").forward(request, response);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException this.doGet(request,response);7.7 页面的实现本程序有6个主要的页面。(1)“”页面包含一个由用户名文本框、密码框、提交按钮和重置按钮组成的

37、表单。它的实现代码如下:<% page language="java" import="java.util.*" pageEncoding="GBK"%><html> <body> <form action="servlet/LoginServlet" method="get"> 用户名称:<input type="text" name="username" value="" /&g

38、t;<br/> 用户密码:<input type="password" name="userpsw" value="" /><br/> <input type="submit" name="submit" value="登录" /> <input type="reset" name="reset" value="重写" /> </form> &l

39、t;/body></html>(2)“”页面包含“显示所有成绩”、“统计所有成绩”超链接,用于控制页面跳转。它的实现代码如下:<% page language="java" import="java.util.*" pageEncoding="GBK"%><html> <body> <a href="servlet/ListAllScoresServlet">显示所有成绩</a><br> <a href="se

40、rvlet/ClassifyAllScoresServlet">统计所有成绩</a><br> </body></html>(3)“”页面包含成绩信息列表和添加、删除、返回三个超链接,用于实现“添加成绩”、“删除成绩”、“返回”三个功能。它的实现代码如下:<% page language="java" import="java.util.*,domain.Score" pageEncoding="GBK"%><html> <body> &

41、lt;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>

42、<%=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="/

43、student_score/index.jsp">返回</a> </body></html>(4)“”页面包含学号文本框、姓名文本框、成绩文本框、提交按钮、返回超链接,用于数据添加到数据库。它的实现代码如下:<% page language="java" import="java.util.*" pageEncoding="GBK"%><html> <body> <form action="servlet/AddScoreServl

44、et" 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>

45、 <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></

46、td></tr> </table> </form> </body></html>(5)“”页面包含一个学号文本框、一个删除按钮、一个返回超链接。用于对所填学号的删除。它的实现代码如下:<% page language="java" import="java.util.*" pageEncoding="GBK"%><html> <body> <form action="servlet/DeleteScoreServlet

47、" method="post"> <table> <tr><th>请输入要删除成绩的学号:</th></tr> <tr><td><input type="text" name="id" /></td></tr> <tr><td><input type="submit" name="submit" value="删除&quo

48、t; /><a href="/student_score/index.jsp">返回</a></td></tr> </table> </form> </body></html>(6)“”页面用于显示成绩分数段的人数信息。它的实现代码如下:<% page language="java" import="java.util.*,domain.Segment"pageEncoding="GBK"%><h

49、tml><body><table border="1"><tr><th>分数段</th><th>人数</th></tr><%List list = (List) request.getAttribute("classifyAllScores");for (Iterator it = list.iterator(); it.hasNext();) Segment segment = (Segment) it.next();%><tr>

50、;<td><%=segment.getSegment()%></td><td><%=segment.getNum()%></td></tr><%></table><a href="/student_score/index.jsp">返回</a></body></html> 配置“”文件<servlet><servlet-name>LoginServlet</servlet-name>&

51、lt;servlet-class></servlet-class></servlet><servlet><servlet-name>ListAllScoresServlet</servlet-name><servlet-class></servlet-class></servlet><servlet><servlet-name>AddScoreServlet</servlet-name><servlet-class></servlet-cl

52、ass></servlet><servlet><servlet-name>DeleteScoreServlet</servlet-name><servlet-class></servlet-class></servlet><servlet><servlet-name>ClassifyAllScoresServlet</servlet-name><servlet-class></servlet-class></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论