1、。软 件 学 院课程设计报告书课程名称 JavaEE 课程设计 设计题目 试卷分析报告产生系统 专业班级 软件工程10-3班 学 号 1020010303 姓 名 韩飞 指导教师 刘佳旭 2013年01月目录1 设计时间2013年1月21日-2013年1月23日2 设计目的JavaEE课程设计是对所学JavaEE与中间件课程的小结,是提高学生对所学知识综合应用能力的一种方式,是集中实践性环节之一。要求同学们对课程中所学习到的知识综合运用,开发有一定规模的Java Web程序。3 设计任务(1)功能描述:用户以合法身份登录系统后,才能进行所有操作;用户可以添加、查看和删除学生成绩;用户添加完所有
2、学生的成绩后,统计出60分、60=成绩75、75=成绩90、90=成绩=100这四个分数段的学生人数。(2)添加学生成绩:学生添加成绩信息(包括学号、姓名、成绩);(3)查看学生成绩(4)删除学生成绩(5)统计各分数段人数:统计出每个分数段的学生人数4 设计内容4.1需求分析功能要求为:用户可以添加、删除、查看学生成绩,学生成绩中包括学号、姓名、成绩三项信息。总体目标、具体目标系统数据建模数据功能建模图4-1为系统的数据流图,4-2为进一步分解后的数据流图。图 4-1 数据流图删除操作统计操作查看操作返回添加操作返回数据返回数据要求统计要求删除用户信息登陆登陆用户添加查看删除统计用户信息用户信
3、息登录信息要求添加要求查看图 4-2 详细数据流图5 概要设计5.1 数据库设计图5-1为成绩的E-R图。成绩表学号姓名成绩图5-1 E-R图本程序使用的数据库系统为SQL Server 2000,数据库名称为“mydb”,数据表名称为“score”,表结构如表5-1所示。成绩表(学号,姓名,成绩),主码为学号。列名数据类型长度允许空备注numberVarchar50Y学号namevarchar50Y姓名scoreint4Y 成绩表4-1 成绩表详细设计5.2 层次结构图图 5-2 层次结构图6 详细设计6.1 程序流程图图6-1为整个系统的程序流程图。开始输入用户名和密码判断正误显示成绩添加
4、成绩删除成绩成绩分类显示成绩成绩分类添加成绩删除成绩结束YYYYYNNNNN图 6-1 程序流程图6.2 模块程序流程图(1)图6-2为登陆流程图。图 6-2 登陆程序流程图开始输入用户名和密码LoginServletUserService判断正误Index.jsp结束YN开始ListAllScoresServletScoreDAO.getAllScores()访问数据库ResuleSet结束ResuleSetshowAllScores.jsp(2)图6-3为查看所有成绩流程图。图 6-3 查看所有成绩流程图(3)图6-4为查看添加成绩流程图。图 6-4 添加成绩流程图开始addScore.j
5、spAddScoreServletScoreDAO.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”为和数据库交互,进行
6、增、删、改、查操作。“Score.java”代表成绩信息的实体类。“Segment.java”代表成绩段信息的实体类。“User.java”代表用户信息的实体类。“UserService.java”判断用户登陆信息是否正确的业务层。“AddScoreServlet.java”为接收页面表单数据并增加成绩信息的Servlet类,继承“HttpServlet”。“ClassifyAllScoresServlet.java”为将数据库中成绩信息分类的Servlet类,继承“HttpServlet”。“DeleteScoreServlet.java”为接收页面表单数据并删除相应成绩信息的Servlet
7、类,继承“HttpServlet”。“ListAllScoresServlet.java”为列出数据库中所有成绩信息的Servlet类,继承“HttpServlet”。“LoginServlet.java”为接收页面表单登陆信息并验证用户信息的Servlet类,继承“HttpServlet”。“DBConnection.java”为获得数据库连接的工具类。“SQL Server JDBC Driver”为与数据库SQL Server 2005连接的驱动包。“Web.xml”为配置Servlet中元素和元素的XML文件。“addScore.jsp”为增加学生成绩的JSP页面。“classifyA
8、llScores.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.micr
9、osoft.sqlserver.jdbc.SQLServerDriver;final String url=jdbc:sqlserver:/localhost:1433;databasename=mydb;tryClass.forName(driverName);catch(ClassNotFoundException e)e.printStackTrace();tryConnection con=DriverManager.getConnection(url, sa, sa);con.setAutoCommit(false);return con;catch(SQLException e)e
10、.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”, 该类拥有代表成绩分类信息的私有属性
11、以及各个属性的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 user
12、name;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 c
13、on = 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);scor
14、e.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.getC
15、onnection();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
16、.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()
17、;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();tryPreparedStatement psmt1 = con.prepareStatement(sel
18、ect * from scores where 0=score and score60);PreparedStatement psmt2 = con.prepareStatement(select * from scores where 60=score and score75);PreparedStatement psmt3 = con.prepareStatement(select * from scores where 75=score and score90);PreparedStatement psmt4 = con.prepareStatement(select * from sc
19、ores 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=score60);segment1.setNum(count);/第二段计数rs =
20、psmt2.executeQuery();count=0;while(rs.next()count+;segment2.setSegment(60=score75);segment2.setNum(count);/第三段计数rs = psmt3.executeQuery();count=0;while(rs.next()count+;segment3.setSegment(75=score90);segment3.setNum(count);/第四段计数rs = psmt4.executeQuery();count=0;while(rs.next()count+;segment4.setSeg
21、ment(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
22、个类。(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 d
23、oPost(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(na
24、me);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();tryscoreDAO.addScore(score1);catch(Exce
25、ption 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
26、 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.getRequestDispat
27、cher(/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
28、 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 requ
29、est.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();tryscoreDAO.deleteScore(score);catch(Exception e)e.printStackTrace();Lis
30、t 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 H
31、ttpServlet 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, respon
32、se);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”页面。该类实现代码如下:p
33、ublic 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);us
34、er.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);elserequest.getRequestDispatcher(/loginError.jsp).forward
35、(request, response);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException this.doGet(request,response);7.7 页面的实现本程序有6个主要的页面。(1)“login.jsp”页面包含一个由用户名文本框、密码框、提交按钮和重置按钮组成的表单。它的实现代码如下: 用户名称: 用户密码: (2)“index.jsp”页面包含“显示所有成绩”、“统计所有成绩”超链接,用于控制页面跳转。
36、它的实现代码如下: 显示所有成绩 统计所有成绩 (3)“showAllScores.jsp”页面包含成绩信息列表和添加、删除、返回三个超链接,用于实现“添加成绩”、“删除成绩”、“返回”三个功能。它的实现代码如下: 学号 姓名 成绩 添加 删除 返回 (4)“addScore.jsp”页面包含学号文本框、姓名文本框、成绩文本框、提交按钮、返回超链接,用于数据添加到数据库。它的实现代码如下: 学号: 姓名: 成绩: 返回 (5)“deleteScore.jsp”页面包含一个学号文本框、一个删除按钮、一个返回超链接。用于对所填学号的删除。它的实现代码如下: form action=servlet/DeleteScoreServlet method=post
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100