学生信息管理系统课程设计.docx
- 文档编号:10937474
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:29
- 大小:205.62KB
学生信息管理系统课程设计.docx
《学生信息管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统课程设计.docx(29页珍藏版)》请在冰豆网上搜索。
学生信息管理系统课程设计
课程设计说明书
课程名称:
JSP课程设计
课程代码:
题目:
学生信息管理系统设计说明书
年级/专业/班:
12软件工程
学生姓名:
学号:
指导教师:
开题时间:
2014年12月08日
完成时间:
2014年12月27
目录
一、引言2
二、设计目的与任务2
三、设计方案3
四、结论11
五、致谢11
六、参考文献11。
课程设计
一、引言
随着Internet国际互联网的发展,越来越多的企业开始建造自己的网站。
基于Internet的信息服务,商务服务已经成为现代企业一项不可缺少的内容。
很多企业都已不满足于建立一个简单的仅仅能够发布信息的静态网站。
现代企业需要的是一个功能强大的,能提供完善的电子商务服务的动态商务网站。
同时人们的生活方式也在随着发生改变,传统的购物方式已不能满足人们的需求。
JSP是Sun公司推出的一种网站开发技术,Sun公司借助自己在Java上的不凡造诣,又把人们引进JSP时代,JSP即JavaServerPage,它可以在Servlet和JavaBean的支持下,完成功能强大的Web应用程序。
所以,在我的毕业设计中,我采用了JSP作为开发工具,构建了一个能实现基本的信息管理的小型动态网站——学生信息管理系统。
2、设计目的与任务
该系统为广大高校的学生提供学生信息管理平台。
它作为现代化管理工具,把同学们的信息在网上实现信息的保存,修改,插入操作,有效提高了管理的效率。
为了完成所选项目的任务,要求实现以下目标:
(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)用户信息表如下表所示:
用户信息表
列名:
是否主键
数据类型:
长度
备注:
Id
是
int
11
本表主键,用户Id
userName
否
Varchar
20
用户名
password
否
Varchar
20
用户密码
(2)学生表如下表所示:
学生表
列名:
是否主键
数据类型:
长度
备注:
Id
是
int
11
本表主键,学生Id
stuNo
否
varchar
20
学号
sex
否
varchar
5
性别
birthday
否
date
生日
gradeId
否
int
11
班级id
否
varchar
20
邮箱
stuDesc
否
varchar
1000
描述
(3)班级表如下表所示:
班级表
列名
是否主键
数据类型
长度
备注:
Id
是
int
11
班级id
gradeName
否
varchar
20
班级名称
gradeDesc
否
varchar
1000
班级描述
3.3学生信息管理系统的实现
在系统实现部分主要完成两项工作:
把前期面向对象设计的成果用jsp实现;测试并调试实现的程序。
在代码实现阶段以前期的分析与设计为基础,以用例为驱动来实现各个功能模块,除了功能上与设计阶段的各功能保持一致之外还应该注重代码的风格和系统的界面设计,在代码实现时良好的程序风格比较重要同时系统的界面设计也应该得到重视,用户界面设计的一条总的原则是:
以人为本,以用户的体验为准。
学生信息管理系统部分功能模块的实现
(1)学生信息管理系统登录功能模块
该界面主要用来完成对登录用户身份的验证。
运行系统首先进入登录界面,输入用户名、密码,验证通过后进入主界面。
该模块通过对用户帐号和用户密码的验证来完成对用户登录身份的验证,登录界面如图所示。
学生信息管理系统登录界面图
核心代码:
packagecom.dao;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importcom.model.User;
publicclassUserDao{
//登陆验证
publicUserlogin(Connectionconn,Useruser)throwsException{
UserresultUser=null;
Stringsql="select*fromt_userwhereuserName=?
andpassword=?
";
PreparedStatementpstmt=conn.prepareStatement(sql);
pstmt.setString(1,user.getUserName());//设置第一个问号的内容
pstmt.setString(2,user.getPassword());
ResultSetrs=pstmt.executeQuery();
if(rs.next()){
resultUser=newUser();
resultUser.setUserName(rs.getString("userName"));
resultUser.setPassword(rs.getString("password"));
}
returnresultUser;
}
}
packagecom.model;
publicclassUser{
privateintid;
privateStringuserName;
privateStringpassword;
publicUser(){
super();
//TODOAuto-generatedconstructorstub
}
publicUser(StringuserName,Stringpassword){
super();
this.userName=userName;
this.password=password;
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetUserName(){
returnuserName;
}
publicvoidsetUserName(StringuserName){
this.userName=userName;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
}
packagecom.servlet;
importjava.io.IOException;
importjava.sql.Connection;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
importcom.dao.UserDao;
importcom.model.User;
importcom.util.DbUtil;
importcom.util.StringUtil;
publicclassLoginServletextendsHttpServlet{
DbUtildbUtil=newDbUtil();
UserDaouserDao=newUserDao();
@Override
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
this.doPost(request,response);
}
@Override
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
StringuserName=request.getParameter("userName");
Stringpassword=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;
}
Useruser=newUser(userName,password);
Connectionconn=null;
try{
conn=dbUtil.getCon();
UsercurrentUser=userDao.login(conn,user);
if(currentUser==null){
request.setAttribute("error","用户名或密码错误!
");
//服务器端跳转
request.getRequestDispatcher("login.jsp").forward(request,response);
}else{
//获取session
HttpSessionsession=request.getSession();
session.setAttribute("currentUser",currentUser);
//客服端跳转
response.sendRedirect("index.jsp");
}
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
dbUtil.closeCon(conn);
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
(2)学生信息管理系统班级信息管理模块
这部分能对班级的信息进行增,删,改,查,基本上满足动态网站的要求:
班级信息管理界面图
核心代码:
packagecom.model;
publicclassGrade{
privateintid;
privateStringgradeName;
privateStringgradeDesc;
publicGrade(){
super();
//TODOAuto-generatedconstructorstub
}
publicGrade(StringgradeName,StringgradeDesc){
super();
this.gradeName=gradeName;
this.gradeDesc=gradeDesc;
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetGradeName(){
returngradeName;
}
publicvoidsetGradeName(StringgradeName){
this.gradeName=gradeName;
}
publicStringgetGradeDesc(){
returngradeDesc;
}
publicvoidsetGradeDesc(StringgradeDesc){
this.gradeDesc=gradeDesc;
}
}
packagecom.dao;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importcom.model.Grade;
importcom.model.PageBean;
importcom.util.StringUtil;
publicclassGradeDao{
publicResultSetgradeList(Connectioncon,PageBeanpageBean,Gradegrade)throwsException{
StringBuffersb=newStringBuffer("select*fromt_grade");
if(grade!
=null&&StringUtil.isNotEmpty(grade.getGradeName())){
sb.append("andgradeNamelike'%"+grade.getGradeName()+"%'");
}
if(pageBean!
=null){
sb.append("limit"+pageBean.getStart()+","+pageBean.getRows());
}
PreparedStatementpstmt=con.prepareStatement(sb.toString().replaceFirst("and","where"));
returnpstmt.executeQuery();
}
publicintgradeCount(Connectioncon,Gradegrade)throwsException{
StringBuffersb=newStringBuffer("selectcount(*)astotalfromt_grade");
if(StringUtil.isNotEmpty(grade.getGradeName())){
sb.append("andgradeNamelike'%"+grade.getGradeName()+"%'");
}
PreparedStatementpstmt=con.prepareStatement(sb.toString().replaceFirst("and","where"));
ResultSetrs=pstmt.executeQuery();
if(rs.next()){
returnrs.getInt("total");
}else{
return0;
}
}
/**
*deletefromtableNamewherefieldin(1,3,5)
*@paramcon
*@paramdelIds
*@return
*@throwsException
*/
publicintgradeDelete(Connectioncon,StringdelIds)throwsException{
Stringsql="deletefromt_gradewhereidin("+delIds+")";
PreparedStatementpstmt=con.prepareStatement(sql);
returnpstmt.executeUpdate();
}
publicintgradeAdd(Connectioncon,Gradegrade)throwsException{
Stringsql="insertintot_gradevalues(null,?
?
)";
PreparedStatementpstmt=con.prepareStatement(sql);
pstmt.setString(1,grade.getGradeName());
pstmt.setString(2,grade.getGradeDesc());
returnpstmt.executeUpdate();
}
publicintgradeModify(Connectioncon,Gradegrade)throwsException{
Stringsql="updatet_gradesetgradeName=?
gradeDesc=?
whereid=?
";
PreparedStatementpstmt=con.prepareStatement(sql);
pstmt.setString(1,grade.g
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息管理 系统 课程设计