jsp学生信息系统报告.docx

上传人:b****5 文档编号:11765229 上传时间:2023-04-01 格式:DOCX 页数:34 大小:1.20MB
下载 相关 举报
jsp学生信息系统报告.docx_第1页
第1页 / 共34页
jsp学生信息系统报告.docx_第2页
第2页 / 共34页
jsp学生信息系统报告.docx_第3页
第3页 / 共34页
jsp学生信息系统报告.docx_第4页
第4页 / 共34页
jsp学生信息系统报告.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

jsp学生信息系统报告.docx

《jsp学生信息系统报告.docx》由会员分享,可在线阅读,更多相关《jsp学生信息系统报告.docx(34页珍藏版)》请在冰豆网上搜索。

jsp学生信息系统报告.docx

jsp学生信息系统报告

摘要

随着社会信息化程序不断提高,越来越多的软件开发人员需要开发Web应用程序。

目前网络编程主要有两大技术体系:

基于JavaEE的网络开发和基于.NET的网络开发。

JavaEE技术以其开放性,灵活性的技术成熟度,赢得了广大编程爱好者的青睐,并且在目前企业级信息系统开发领域也占领了很大的市场,取得了许多成功的案例。

此次课程设计我使用JavaEE编程技术,利用MyEclipse开发工具设计了一个学生信息管理系统。

用户的身份分为学生和管理员,用户登陆系统时系统根据用户身份提供相应的功能。

学生的功能包括:

学生信息的查询,个人信息的修改,密码修改和留言。

当用户登陆时若有新留言,系统提示用户查看新留言。

管理员在此基础上还有添加学生信息和删除学生信息的功能,修改的权限也大于学生。

本系统采用JSP和Servlet结合,JSP和JavaBean结合的技术。

通过JDBC连接到数据库,实现数据库的操作。

关键词:

JavaEE编程技术ServletJavaBean数据库

 

一、需求分析

1.1功能需求

前台功能:

1)学生信息浏览功能:

学生和管理员都可进行查询和浏览,学生可以按学号、姓名查询和查询全部学生信息,管理员可以按班级,专业查询。

查询时先要选择查询方式,再输入查询的关键词。

查询全部学生信息时不需要输入关键词。

2)学生个人信息维护功能:

学生能对自己部分信息(年龄、email、电话)的修改功能,而部分信息(学号、姓名、性别、专业、班级)不能做修改。

修改时先读取个人信息到文本框中,学生可以在文本框中对个人信息修改。

不能修改的信息对应的文本框为只读。

修改完成后保存即可。

3)留言版:

学生可以有针对性的向其他同学进行信息留言,留言时需要输入收信人的学号和内容即可,留言时获取系统时间,留言人为登陆时系统记录的学号对应的姓名。

对方登陆后,若有新留言可以自动提示,并设有查询新留言的超链接。

后台功能:

1)管理员可按照班级对学生个人信息进行管理,班级信息管理包括按班级查询学生信息,修改班级信息,删除班级信息,添加班级信息。

2)管理员可对学生基本信息进行录入,查询、添加、修改、删除。

管理员查询是在学生查询的基础上新增加按班级,按专业对学生进行查询。

添加学生信息时只需将要添加的学生信息输入对应的文本框中。

修改学生信息时先查询出修改学生的信息查询显示在文本框中,修改时只需要将信息输入到对应的文本框中,不能修改的信息对应的文本框设为为只读,管理员可以修改除了学号以外的其它信息。

删除时先查询出要删除的学生信息,再确认删除。

3)管理员可动态添加班级信息,对班级信息进行管理和设置

1.2环境需求

根据系统的基本功能需求,以及客户的信息系统环境,计划采用浏览器/服务器模式来

构建管理系统,这样方便维护和使用。

同时,根据客户对技术的具体建议,计划采用J2EE

技术来开发。

具体的软硬件环境要求如下:

(1)硬件环境:

采用普通办公用个人计算机作为服务器即可。

(2)操作系统:

可以采用WindowsXP以上系统。

(3)数据库系统:

采用Mysql数据库

(4)Web服务器:

采用Tomcat5以上系统。

(5)Java运行环境:

采用JRE1.5以上中文版本。

(6)客户端:

采用浏览器工具即可。

 

二、概要设计

2.1系统总体结构

按照系统的需求要求,可以把系统功能进行分解,以便按照每个功能模块的要求分别实现对应的功能。

系统总体结构如下图2.1所示:

图2.1系统结构图

用户的身份分为学生和管理员,用户登陆系统时系统根据用户身份提供相应的功能。

系统提供给学生的查询方式有按学号查询、按姓名查询和查询全部学生信息;学生可以修改部分个人信息,对于像学号、班级、专业这样的信息学生不能作修改;学生可以给任何用户留言,留言时系统会获取留言人和留言时间。

系统提供给管理员的查询方式在学生的基础上增加了按班级查询、按专业查询和查询管理员信息;管理员可以向学生库中添加学生信息和从学生库中删除学生信息;管理员可以修改除学号以外的所有学生信息;管理员在留言时系统会在获取到的管理员姓名前加入“管理员”的字样,以提醒收信人,此信息是来自于管理员。

2.2开发环境的配置

由于采用了J2EE模型2的方式,因此只要安装好需求分析中提出的软件、硬件环境要求就可以了。

另外,为了便于开发,还要安装一套开发工具,推荐使用Eclipse或者MyEclipse,其中提供了方便的编程界面。

本系统没有其他的插件或者API,当安装好这些软件后,就可以进行开发了。

其中要

注意的就是版本一致性问题,强烈建议采用最新版本的开发工具。

本系统采用了Mysql数据库系统,建议安装5.0以上版本。

最新版本可以到网站()上去下载。

三、详细设计

3.1数据库设计

3.1.1数据字典

本系统中所用到的数据库数据信息如下表如示:

表3.1数据库逻辑表

表格

名称

说明

studentinfor

学生信息表

学生基本信息

administrator

管理员信息表

管理员基本信息

massage

留言表

留言信息表

表3.2学生信息表

名称

类型

长度

说明

sno

字符串

10

学生学号

sname

字符串

45

学生姓名

ssex

字符串

6

性别

sage

整型

年龄

classname

字符串

45

班级

department

字符串

45

专业

email

字符串

45

Email

phone

字符串

45

联系电话

password

字符串

6

登陆密码

表3.3管理员信息表

名称

类型

长度

说明

number

字符串

10

管理员编号

name

字符串

45

管理员姓名

password

字符串

6

登陆密码

sex

字符串

6

性别

email

字符串

45

Email

phone

字符串

45

联系电话

表3.4留言表

名称

类型

长度

说明

numberm

整型

留言编号

sno

字符串

10

收信人编号

massageinfor

字符串

450

留言内容

givename

字符串

45

留言人姓名

dateg

字符串

45

留言时间

readm

字符串

2

读取标记

3.1.2逻辑设计

根据系统需求和设计的规划,可以建立一个数据库,并在其中建立几个表格,分别用来存储各个功能模块的数据信息。

E-R图如图3.1所示

图3.1E-R图

3.1.3物理设计

E-R图中实体与实体之间的关系,可以进一步转化为相应的数据模型,目前很多的DBMS只支持关系、网状、层次三种数据模型,尤其是关系模型,以其优越的性能赢得了很大的市场。

对某一种数据模型,各个机器又有不同的限制。

图3.2物理模型

3.1.4数据库实施

按上述步骤建立数据库,如图3.3所示,表中学生表属性如图3.4所示,管理员表录图3.5所示,留言表如图3.6所示。

图3.3数据库表

图3.4学生表属性

图3.5管理员表属性

图3.6留言表属性

3.1.5JAVAEE数据库连接

连接类如下,连接到本地IP下的mysql数据库的student数据库中,连接身份为“root”连接密码为“413622”

publicclassDB{

publicstaticConnectiongetConn(){

Connectionconn=null;

try{

Class.forName("org.gjt.mm.mysql.Driver");

conn=java.sql.DriverManager.getConnection("jdbc:

mysql:

//localhost:

3306/student","root","413622");

}catch(ClassNotFoundExceptione){

e.printStackTrace();

}catch(SQLExceptione){

e.printStackTrace();

}

returnconn;

}

publicstaticStatementcreateStmt(Connectionconn){

Statementstmt=null;

try{

stmt=conn.createStatement();

}catch(SQLExceptione){

e.printStackTrace();

}

returnstmt;

}

publicstaticResultSetexecuteQuery(Statementstmt,Stringsql){

ResultSetrs=null;

try{

rs=stmt.executeQuery(sql);

}catch(SQLExceptione){

e.printStackTrace();

}

returnrs;

}

publicstaticResultSetexecuteQuery(PreparedStatementpreparedstmt)

{

ResultSetrs=null;

try{

rs=preparedstmt.executeQuery();

}catch(SQLExceptione){

e.printStackTrace();

}

returnrs;

}

publicstaticPreparedStatementprepareStmt(Connectionconn,Stringsql){

PreparedStatementpstmt=null;

try{

pstmt=(PreparedStatement)conn.prepareStatement(sql);

}catch(SQLExceptione){

e.printStackTrace();

}

returnpstmt;

}

publicstaticvoidclose(Connectionconn){

if(conn!

=null){

try{

conn.close();

}catch(SQLExceptione){

e.printStackTrace();

}

}

}

publicstaticvoidclose(Statementstmt){

if(stmt!

=null){

try{

stmt.close();

}catch(SQLExceptione){

e.printStackTrace();

}

}

}

publicstaticvoidclose(ResultSetrs){

if(rs!

=null){

try{

rs.close();

}catch(SQLExceptione){

e.printStackTrace();

}

}

}

}否

3.2功能设计

3.2.1登陆功能

先获取主界面文本框中输入的用户名、密码和登陆方式。

登陆身份若是管理员则administrator.checkManUser(conn,username,password)函数对比数据库中管理员表的内容,登陆成功则跳到管理员主页面。

若是学生则利用student.checkStuUser(conn,username,password)函数对比数据库中学生表中的内容,登陆成功则跳到学生主页面,程序流程如图3.7所示

图3.7登陆流程图

登陆功能关键代码如下:

username=request.getParameter("username");

password=request.getParameter("password");

radio=request.getParameter("radio");

if(radio.equals("1"))

{

try{

if(administrator.checkStuUser(conn,username,password)){

rd=this.getServletContext().getRequestDispatcher("/StuMain.jsp");

rd.forward(request,response);

}else{

rd=this.getServletContext().getRequestDispatcher("/login.jsp");

rd.forward(request,response);

}

}catch(Exceptione){

rd=this.getServletContext().getRequestDispatcher("/login.jsp");

rd.forward(request,response);

}

}else

{

try{

if(student.checkManUser(conn,username,password)){

rd=this.getServletContext().getRequestDispatcher("/AdmMain.jsp");

rd.forward(request,response);

}else{

rd=this.getServletContext().getRequestDispatcher("/login.jsp");

rd.forward(request,response);

}

}catch(Exceptione){

rd=this.getServletContext().getRequestDispatcher("/login.jsp");

rd.forward(request,response);}

}

checkManUser(conn,username,passwo)函数与checkStuUser(conn,username,password)类似,下面以管理员登陆为例说明:

当用户名和密码与数据库中相同时返回值为TURE,否则返回值为FALSE

publicstaticbooleancheckManUser(Connectionconn,Stringusername,Stringpassword)throwsException{

StringstrSql;

Statementstmt;

ResultSetrs;

strSql="select*fromadministratorwherenumber='"+username

+"'andpassword='"+password+"'";

stmt=DB.createStmt(conn);

rs=DB.executeQuery(stmt,strSql);

if(rs.next()){

returntrue;

}else{

returnfalse;

}

}

3.2.2查询功能

先获取下拉框的值,赋值给S。

S的作用是记录查询方式用的,学生查询方式有学号、姓名和全部学生信息。

再获取输入的关键词,赋值给keyword,keyword记录查询关键词。

再利用前面提到的student.findstudent(conn,s,keyword)函数处理。

查询成功将查询到的信息显示出来,查询失败则显示提示信息。

查询程序流程如图3.8所示。

图3.8查询流程图

程序关键代码如下:

java.sql.Connectionconn=null;

java.sql.ResultSetrs=null;

conn=DB.getConn();

Strings=request.getParameter("combobox1");

Stringkeyword=(String)request.getParameter("search");

try{

rs=student.findstudent(conn,s,keyword);

}catch(java.sql.SQLExceptione){

out.println(e.toString());

}finally{

if(conn!

=null)conn.close();

}

findstudent(conn,s,keyword)函数位于student类中,s的值为“1”为按学号查询,“2”为按姓名查询,“3”为查询全部学生信息,“4”为按班级查询,“5”为按专业查询,“6”为查询管理员信息。

学生查询权限为1、2、3,管理员可以是1、2、3、4、5、6关键代码如下:

publicstaticResultSetfindstudent(Connectionconn,Strings,Stringkeyword)throwsSQLException

{

ResultSetrs=null;

java.sql.PreparedStatementpreparedStmt=null;

if(s.equals("1"))

{

preparedStmt=conn.prepareStatement("select*fromstudentinforwheresno='"+keyword+"'");

}

elseif(s.equals("2"))

{

preparedStmt=conn.prepareStatement("select*fromstudentinforwheresname='"+keyword+"'");

}

elseif(s.equals("3"))

{

preparedStmt=conn.prepareStatement("select*fromstudentinfor");

}

elseif(s.equals("4"))

{

preparedStmt=conn.prepareStatement("select*fromstudentinforwhereclassname='"+keyword+"'");

}

elseif(s.equals("5"))

{

preparedStmt=conn.prepareStatement("select*fromstudentinforwheredepartment='"+keyword+"'");

}

else{

preparedStmt=conn.prepareStatement("select*fromadministrator");

}

rs=preparedStmt.executeQuery();

returnrs;

}

3.2.3添加功能

先获取文本框的值,再将获取到的值为学生的实例stu的属性赋值,再利用student.Insertstu(conn,stu)将信息添加到数据库中去。

获取学生实例的属性写入数据库属性。

添加成功则产生成功提示信息,再返回添中页面,失败则产生失败信息,再返回添加页面,添加流程如图3.9所示

图3.9添加学生信息流程图

添加学生信息的关键代码如下:

Stringsno=request.getParameter("snoa");

Stringsname=request.getParameter("snamea");

Stringssex=request.getParameter("ssexa");

intsage=Integer.parseInt(request.getParameter("sagea"));

Stringclassname=request.getParameter("classnamea");

Stringdepartment=request.getParameter("departmenta");

Stringemail=request.getParameter("emaila");

Stringphone=request.getParameter("phonea");

studentstu=newstudent();

stu.setSno(sno);

stu.setSname(sname);

stu.setSsex(ssex);

stu.setSage(sage);

stu.setClassname(classname);

stu.setDepartment(department);

stu.setEmail(email);

stu.setPhone(phone);

Connectionconn=DB.getConn();

try{

student.InsertStu(conn,stu);

out.println("添加成功返回");

}catch(Exceptione){

e.printStackTrace();

out.println("添加失败返回");

}finally{

DB.close(conn);

}

InsertStu(conn,stu)函数位于student类中,此函数先获取学生实例stu的属性,再将其属性写入相应的数据库字段中。

添加信息权限仅限管理员,关键代码如下:

publicstaticbooleanInsertStu(Connectionconn,studentstu)

throwsException{

PreparedStatementstmt=null;

Strings="123456";

Stringa=stu.getSno();

Stringb=stu.getSname();

Stringc=stu.getSsex

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文学研究

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1