当前位置:文档之家› 学生信息管理系统课程设计说明书

学生信息管理系统课程设计说明书

宜春学院数学及计算机科学学院课程设计说明书课程名称: JSP课程设计课程代码:题目:学生信息管理系统设计说明书年级/专业/班: 12软件工程学生姓名:学号:指导教师:开题时间: 2014 年 12 月 08 日完成时间: 2014 年 12 月 27目录一、引言 (2)二、设计目的及任务 (2)三、设计方案 (3)四、结论 (28)五、致谢 (28)六、参考文献.................................... 错误!未定义书签。

课程设计一、引言随着Internet国际互联网的发展,越来越多的企业开始建造自己的网站。

基于Internet的信息服务,商务服务已经成为现代企业一项不可缺少的内容。

很多企业都已不满足于建立一个简单的仅仅能够发布信息的静态网站。

现代企业需要的是一个功能强大的,能提供完善的电子商务服务的动态商务网站。

同时人们的生活方式也在随着发生改变,传统的购物方式已不能满足人们的需求。

JSP是Sun公司推出的一种网站开发技术,Sun公司借助自己在Java 上的不凡造诣,又把人们引进JSP时代,JSP即Java Server Page,它可以在Servlet和JavaBean的支持下,完成功能强大的Web应用程序。

所以,在我的毕业设计中,我采用了JSP作为开发工具,构建了一个能实现基本的信息管理的小型动态网站——学生信息管理系统。

二、设计目的及任务该系统为广大高校的学生提供学生信息管理平台。

它作为现代化管理工具,把同学们的信息在网上实现信息的保存,修改,插入操作,有效提高了管理的效率。

为了完成所选项目的任务,要求实现以下目标:(1)向广大的同学们介绍本系统在管理方面的优越性,可靠性,实用性,必要性(2)利用B/S的体系结构建立管理系统的理论模型(3)使用jsp进行功能模块的定制和交互界面的具体开发(4)系统的维护方案通过以上内容的研究,将开发出一套使用方便,功能型强的学生信息管理系统要完成的任务:(1)根据系统的使用范围结合实际情况对系统需求分析文档进行编写(2)根据需求分析,对系统的代码进行合理的编写(3)代码的调试和运行三、设计方案3.1 学生信息管理系统需求分析1、软件功能总体需求描述及各子系统功能要求2、系统角色分析按软件工程的方法完成系统所涉及角色的分析角色分为1种:(1)用户: 对本系统拥有所有权限,包括增加,修改,查询,删除学生信息和班级信息的权限。

3、系统用例分析及建模在这一节我们将以“体系结构”为中心,以“用例驱动”的分析方法采用UML来完成系统需求阶段模型的建立,在这一阶段的主要完成的任务是根据上一节中分析得出的系统参及者,从参及者的角度出发完成用例的分析,采用面向对象的方法用UML为系统建立用例模型(1)用户用例模型4、系统用例描述上一节从系统参及者的角度建立了整个系统的用例模型,下面我们将对前面得到的用例进行描述,在用例描述中我们将为每个用例进行编号,确定用例名称,对每个用例的功能进行简要的描述,明确每个用例的参及者以及执行该用例需要的前置条件和执行完用例的后置条件,并且会对每个用例的活动流程进行描述。

(1)学生信息管理学生信息增加用例描述用例编号:01用例名称:增加学生信息功能:向数据库中添加学生信息执行者:用户前置条件:用户已经登录本系统后置条件:增加的学生信息能够保存到数据库主事件流:1、登录学生信息管理系统;2、进入学生信息添加界面;3、确定信息无误后进行添加;3.2 系统分析及设计1、系统总体设计从需求上来讲,学生信息管理系统在总体架构上并不复杂,因此可以使用简单的三层架构来实现。

具体的系统逻辑架构图2、学生信息管理系统静态结构模型在本节中我们将根据前面定义的系统需求以及建立的学生信息管理系统用例模进行进一步的分析,寻找发现系统中存在的类、类的相关的属性和方法,并且找出这些类之间的关系,同时为学生信息管理系统建立系统的静态模型,最终得到完整的系统类图以及它们之间的关系,这个过程也是面向对象分析的基本任务 [13]。

(1)识别学生信息管理系统中的类用例识别法、实体识别法和名词识别法是在这阶段采用的主要方法,在这一阶段我们主要是对前面定义的需求以及建立的用例模型分析来找出系统中的持久类,持久类的确立也可以为我们后面的数据设计工作打下良好的基础。

下面我们来描述学生信息管理系统涉及到的主要的实体类的属性和方法,主要包括了以下几种:1、用户信息类(StudentInformation)用户信息类描述了学生信息管理系统中用户的基本信息,包括:用户姓名、密码。

2、系统用户界面类以上分析得到的是系统的实体类,在系统在完成这些实体类的操作用户还需要通过界面来完成,这些用户及系统之间的交互的界面也属于系统类,一般称为界面类,一个好的系统通常具备友好的图形用户界面,因此,还需要找出并定义系统中的界面类。

3、学生信息管理系统动态模型的建立前面建立的用例模型和类模型只是对系统具备的功能和需要处理的数据进行了描述,而一个系统的这些功能是如何实现的,对数据如何操作的并不能体现出来,而要使一个系统描述更完整,在面向对象的分析方法中还需要采用动态模型从另一个角度来对系统进行描述,系统的动态模型图主要由以下几种图组成:协作图、时序图、状态图和活动图,它们对系统描述的侧重点各不相同,在接下来的分析中我们将采用状态图来描述对象在系统运行过程中状态的变化,用活动图和顺序图对系统用例进行进一步的描述 [16] 。

(1)系统活动图1、登录活动图登录活动对任何一个系统来说都是最基本的活动之一,在学生信息管理系统中登录活动主要验证用户的用户名和密码如果验证通过就可以进入系统的主界面,根据需求及相关工作流程画出其活动图如图所示。

图1 登录活动图4、数据库设计1.概念设计2、逻辑设计设计数据库的逻辑结构,及具体的DBMS无关,主要反映业务逻辑。

3、物理设计(1)确定数据的存储结构:顺序存储和链式存储(2)设计数据的存取路径:E:\学生信息管理系统(3)确定数据的存放位置:E:\学生信息管理系统\Database\(4)确定系统配置:MYSQL,ECLIPSE , WIN7系统4、数据库表设计数据库表结构设计如下所示:(1)用户信息表如下表所示:用户信息表(2)学生表如下表所示:(3)班级表如下表所示:列名是否主键数据类型长度备注: Id 是int11班级idgradeName否varchar 20班级名称gradeDesc否varchar1000班级描述3.3学生信息管理系统的实现在系统实现部分主要完成两项工作:把前期面向对象设计的成果用jsp实现;测试并调试实现的程序。

在代码实现阶段以前期的分析及设计为基础,以用例为驱动来实现各个功能模块,除了功能上及设计阶段的各功能保持一致之外还应该注重代码的风格和系统的界面设计,在代码实现时良好的程序风格比较重要同时系统的界面设计也应该得到重视,用户界面设计的一条总的原则是:以人为本,以用户的体验为准。

学生信息管理系统部分功能模块的实现(1)学生信息管理系统登录功能模块该界面主要用来完成对登录用户身份的验证。

运行系统首先进入登录界面,输入用户名、密码,验证通过后进入主界面。

该模块通过对用户帐号和用户密码的验证来完成对用户登录身份的验证,登录界面如图所示。

学生信息管理系统登录界面图核心代码:package com.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import er;public class UserDao {//登陆验证public User login(Connection conn,User user) throws Exception{User resultUser = null;String sql = "select * from t_user where userName=? and password=?";PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setString(1, user.getUserName());//设置第一个问号的内容pstmt.setString(2, user.getPassword());ResultSet rs = pstmt.executeQuery();if(rs.next()){resultUser = new User();resultUser.setUserName(rs.getString("userName"));resultUser.setPassword(rs.getString("password"));}return resultUser;}}package com.model;public class User {private int id;private String userName;private String password;public User() {super();// TODO Auto-generated constructor stub}public User(String userName, String password) { super();erName = userName;this.password = password;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) { erName = userName;}public String getPassword() {return password;}public void setPassword(String password) { this.password = password;}}package com.servlet;import java.io.IOException;import java.sql.Connection;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import erDao;import er;import com.util.DbUtil;import com.util.StringUtil;public class LoginServlet extends HttpServlet {DbUtil dbUtil = new DbUtil();UserDao userDao = new UserDao();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String userName = request.getParameter("userName");String password = request.getParameter("password");request.setAttribute("userName", userName);request.setAttribute("password", password);if(StringUtil.isEmpty(userName) || StringUtil.isEmpty(password)){request.setAttribute("error", "用户名或密码为空!");request.getRequestDispatcher("login.jsp").forward(request, response);return;}User user = new User(userName,password);Connection conn = null;try {conn = dbUtil.getCon();User currentUser = userDao.login(conn, user);if(currentUser == null){request.setAttribute("error", "用户名或密码错误!");//服务器端跳转request.getRequestDispatcher("login.jsp").forward(request, response);}else{//获取sessionHttpSession session = request.getSession();session.setAttribute("currentUser",currentUser);//客服端跳转response.sendRedirect("index.jsp");}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {dbUtil.closeCon(conn);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}(2)学生信息管理系统班级信息管理模块这部分能对班级的信息进行增,删,改,查,基本上满足动态网站的要求:班级信息管理界面图核心代码:package com.model;public class Grade {private int id;private String gradeName;private String gradeDesc;public Grade() {super();// TODO Auto-generated constructor stub }public Grade(String gradeName, String gradeDesc) { super();this.gradeName = gradeName;this.gradeDesc = gradeDesc;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getGradeName() {return gradeName;}public void setGradeName(String gradeName) { this.gradeName = gradeName;}public String getGradeDesc() {return gradeDesc;}public void setGradeDesc(String gradeDesc) { this.gradeDesc = gradeDesc;}}package com.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import com.model.Grade;import com.model.PageBean;import com.util.StringUtil;public class GradeDao {public ResultSet gradeList(Connection con,PageBean pageBean,Grade grade)throws Exception{StringBuffer sb=new StringBuffer("select * from t_grade");if(grade!=null && StringUtil.isNotEmpty(grade.getGradeName())){sb.append(" and gradeName like '%"+grade.getGradeName()+"%'");}if(pageBean!=null){sb.append(" limit "+pageBean.getStart()+","+pageBean.getRows());}PreparedStatementpstmt=con.prepareStatement(sb.toString().replaceFirst("and", "where"));return pstmt.executeQuery();}public int gradeCount(Connection con,Grade grade)throws Exception{StringBuffer sb=new StringBuffer("select count(*) as total from t_grade");if(StringUtil.isNotEmpty(grade.getGradeName())){sb.append(" and gradeName like '%"+grade.getGradeName()+"%'");}PreparedStatementpstmt=con.prepareStatement(sb.toString().replaceFirst("and", "where"));ResultSet rs=pstmt.executeQuery();if(rs.next()){return rs.getInt("total");}else{return 0;}}/*** delete from tableName where field in (1,3,5)* @param con* @param delIds* @return* @throws Exception*/public int gradeDelete(Connection con,String delIds)throws Exception{String sql="delete from t_grade where id in("+delIds+")";PreparedStatement pstmt=con.prepareStatement(sql);return pstmt.executeUpdate();}public int gradeAdd(Connection con,Grade grade)throws Exception{String sql="insert into t_grade values(null,?,?)";PreparedStatement pstmt=con.prepareStatement(sql);pstmt.setString(1, grade.getGradeName());pstmt.setString(2, grade.getGradeDesc());return pstmt.executeUpdate();}public int gradeModify(Connection con,Grade grade)throws Exception{String sql="update t_grade set gradeName=?,gradeDesc=? where id=?";PreparedStatement pstmt=con.prepareStatement(sql);pstmt.setString(1, grade.getGradeName());pstmt.setString(2, grade.getGradeDesc());pstmt.setInt(3, grade.getId());return pstmt.executeUpdate();}}package com.servlet;import java.io.IOException;import java.sql.Connection;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONArray;import net.sf.json.JSONObject;import com.dao.GradeDao;import com.model.Grade;import com.model.PageBean;import com.util.DbUtil;import com.util.JsonUtil;import com.util.ResponseUtil;public class GradeListServlet extends HttpServlet{ DbUtil dbUtil=new DbUtil();GradeDao gradeDao=new GradeDao();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String page=request.getParameter("page");String rows=request.getParameter("rows");String gradeName=request.getParameter("gradeName");if(gradeName==null){gradeName="";}Grade grade=new Grade();grade.setGradeName(gradeName);PageBean pageBean=new PageBean(Integer.parseInt(page),Integer.parseInt(rows));Connection con=null;try{con=dbUtil.getCon();JSONObject result=new JSONObject();JSONArrayjsonArray=JsonUtil.formatRsToJsonArray(gradeDao.gradeList(con, pageBean,grade));int total=gradeDao.gradeCount(con,grade);result.put("rows", jsonArray);result.put("total", total);ResponseUtil.write(response, result);}catch(Exception e){e.printStackTrace();}finally{try {dbUtil.closeCon(con);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}package com.servlet;import java.io.IOException;import java.sql.Connection;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONObject;import com.dao.GradeDao;import com.dao.StudentDao;import com.util.DbUtil;import com.util.ResponseUtil;public class GradeDeleteServlet extends HttpServlet{ DbUtil dbUtil=new DbUtil();GradeDao gradeDao=new GradeDao();StudentDao studentDao=new StudentDao();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String delIds=request.getParameter("delIds");Connection con=null;try{con=dbUtil.getCon();JSONObject result=new JSONObject();String str[]=delIds.split(",");for(int i=0;i<str.length;i++){boolean f=studentDao.getStudentByGradeId(con, str[i]);if(f){result.put("errorIndex", i);result.put("errorMsg", "班级下面有学生,不能删除!");ResponseUtil.write(response, result);return;}}int delNums=gradeDao.gradeDelete(con, delIds);if(delNums>0){result.put("success", "true");result.put("delNums", delNums);}else{result.put("errorMsg", "删除失败");}ResponseUtil.write(response, result);}catch(Exception e){e.printStackTrace();}finally{try {dbUtil.closeCon(con);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}package com.servlet;import java.io.IOException;import java.sql.Connection;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONArray;import net.sf.json.JSONObject;import com.dao.GradeDao;import com.model.Grade;import com.model.PageBean;import com.util.DbUtil;import com.util.JsonUtil;import com.util.ResponseUtil;import com.util.StringUtil;public class GradeSaveServlet extends HttpServlet{ DbUtil dbUtil=new DbUtil();GradeDao gradeDao=new GradeDao();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");String gradeName=request.getParameter("gradeName");String gradeDesc=request.getParameter("gradeDesc");String id=request.getParameter("id");Grade grade=new Grade(gradeName,gradeDesc);if(StringUtil.isNotEmpty(id)){grade.setId(Integer.parseInt(id));}Connection con=null;try{con=dbUtil.getCon();int saveNums=0;JSONObject result=new JSONObject();if(StringUtil.isNotEmpty(id)){saveNums=gradeDao.gradeModify(con, grade);}else{saveNums=gradeDao.gradeAdd(con, grade);}if(saveNums>0){result.put("success", "true");}else{result.put("success", "true");result.put("errorMsg", "保存失败");}ResponseUtil.write(response, result);}catch(Exception e){e.printStackTrace();}finally{try {dbUtil.closeCon(con);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}四、结论本次JSP的课程设计对我们来说是一个很好地锻炼机会,是对我们语言组织能力和表达能力的一次考验。

相关主题