基于java的学生信息管理系统方案设计书报告.docx
《基于java的学生信息管理系统方案设计书报告.docx》由会员分享,可在线阅读,更多相关《基于java的学生信息管理系统方案设计书报告.docx(39页珍藏版)》请在冰豆网上搜索。
基于java的学生信息管理系统方案设计书报告
计算机科学与技术学院
课程设计报告
(2005~2006学年度第1学期)
课程名称:
网络编程技术
题目:
基于java的学生信息管理系统
姓名:
刘亮
学号:
20034440437
专业:
计算机科学与技术
班级:
03级04班
地点:
专业实验室
教师:
谭敏生
前言
随着计算机科学的发展,数据库技术在Internet中的应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。
个性化已逐渐成为当今Web应用的潮流。
本课程设计研究了一种基于数据关联规则的网络学生信息管理系统,此方案与现今网上已采用的一些方案相比,具有用户使用更简单、界面更直观等优点。
在设计中我们发现这样一个事实,一个用户或管理员在登陆这个网站时一般来讲只对该网站的部分内容感性趣,而且这种兴趣会持续一段时间。
这点启发了我们,如果能根据用户活管理员的喜好为不同的用户显示其个性化的页面,即着重显示该用户感兴趣的内容,将为用户节约大量的检索时间,而且这样的网页显然是更具有吸引力的。
一些站点已经在这方面作出了一定的尝试,通常采用的方法是,在用户登陆时为其提供一系列的选项,使用户能够对站点进行一些自主的设置。
这样做能够使站点呈现一定程度的个性化,但是对用户来讲,还是比较烦琐,而且在用户了解一个站点前让其对站点进行设置,其结果未免有些粗糙。
于是我们构想了这样一种方案,对用户登陆后的动作进行跟踪,分析,发掘用户点击的规律,即用户先后点击的关联规则,这样,在用户点击一个主题(链接)之后,系统能够自动生成一页面,其中包含了该主题下用户经常关注的内容(若干链接),这样便在无须用户作出任何额外工作的情况下实现了为用户量身订做的个性化页面。
要实现这样的功能,离不开后台数据库的支持。
管理员验证信息,收集到的用户点击信息,主题层次信息,分析得出的关联规则表等大量的数据都由数据库管理系统管理。
本文中数据库服务器端采用了SQLServer2000数据库作为ODBC(OpenDataBaseConnectivity)数据源,并以先进的JDBC-ODBC桥接技术进行数据库存取等操作,使Web与数据库紧密联系起来。
整个个性化页面生成系统主要由使用Dreamweaver_MX开发的关联规则采掘系统和利用JSP技术实现的个性化Web页面生成器两部分组成。
关联规则采掘系统对数据库中的历史记录进行分析,产生用户关联规则表;页面生成器则负责记录管理员的行为动态生成管理员个性化Web页面。
二者通过数据库服务器和Web服务器连接。
为能更好的设计系统,我们在设计时将组内成员主要分成了两组:
一组主要负责后台数据库的设计;
一组主要负责前台浏览器的设计。
基于Java的学生信息管理系统
--------后台数据库设计报告
1.课程设计目的及要求
设计目的:
使用JDBC-ODBC桥接驱动程序将前台浏览器与后台数据库(本系统用的是SQLServer)结合位为一体。
利用SQL语句接口来调用数据库,以存取或更新数据库中的数据,特别是实现对数据库中学生照片的存取,这是我们后台数据可设计的重点。
在文档中就新增、删除、修改与查询等几个基本的数据库操作,外加这些操作相关的一些项目作了简单的陈述。
设计要求:
1.要求在前台主界面上显示数据库中存放的学生的基本信息,一般的普通用户可以在系统中查看所有学生的信息;而由特定权限的管理员可以通过按钮或菜单对学生的信息进行录入、修改、查询、删除等功能。
2.利用JDBC驱动程序连接数据库,修改、存储学生的基本信息。
2.课程设计软硬件环境
2.1系统开发工具的选择
后台数据库:
本系统后台数据库选择SQLServer2000。
2.2性能需求
2.2.1硬件环境
·处理器:
InterCR300或更高。
·内存:
128MB(建议256MB)。
·硬盘空间:
30MB。
2.2.2软件环境
·操作系统:
Windows98或Windows2000/WindowsNTServer4.0/windowXP。
·数据库:
SQLServer2000。
3.课程设计内容
3.1熟悉java与数据库系统
3.1.1数据库系统简介
数据库系统是一个信息核心,也是任何企业单位非常重视的运营主体。
但随着科技的进步,多元化的需求,促使数据库扮演的角色愈来愈复杂,也愈来愈重视数据库系统相关程序开发工具的简便及性能。
由于java的特性,对这方面需求能够发挥相当多的优势,因而java系统的应用越来越多。
JDBC是java与数据库连接的一项规范,用于提供统一的SQL语言的关系数据库系统访问接口,与Java应用的相关程序取得数据库连接之后,便可依照SQL语言去执行各项语句命令的运行。
3.1.2JDBC数据库连接
Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。
JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。
作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。
JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。
JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。
目前比较常见的JDBC驱动程序可分为以下四个种类:
(1)JDBC-ODBC桥接ODBC驱动程序
利用ODBC驱动程序提供JDBC访问。
注意,必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上。
因此,这种类型的驱动程序最适合于企业网(这种网络上客户机的安装不是主要问题),或者是用Java编写的三层结构的应用程序服务器代码。
(2)本地API半Java驱动程序
这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。
注意,象桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。
(3)JDBC-NET纯Java驱动程序
这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。
这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。
所用的具体协议取决于提供者。
通常,这是最为灵活的JDBC驱动程序。
有可能所有这种解决方案的提供者都提供适合于Intranet用的产品。
为了使这些产品也支持Internet访问,它们必须处理Web所提出的安全性、通过防火墙的访问等方面的额外要求。
几家提供者正将JDBC驱动程序加到他们现有的数据库中间件产品中。
(4)本地协议纯Java驱动程序
这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。
这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。
由于许多这样的协议都是专用的,因此数据库提供者自己将是主要来源,有几家提供者已在着手做这件事了。
据专家预计第(3)、(4)类驱动程序将成为从JDBC访问数据库的首方法。
第
(1)、
(2)类驱动程序在直接的纯Java驱动程序还没有上市前会作为过渡方案来使用。
对第
(1)、
(2)类驱动程序可能会有一些变种,这些变种要求有连接器,但通常这些是更加不可取的解决方案。
第(3)、(4)类驱动程序提供了Java的所有优点,包括自动安装(例如,通过使用JDBC驱动程序的appletapplet来下载该驱动程序)。
3.1.3建立JDBC连接步骤
数据库连接对动态网站来说是最为重要的部分。
很多数据库系统都带有JDBC驱动程序,Java程序就通过JDBC驱动程序与数据库相连,执行查询和提取数据等。
Sun公司还开发了JDBC-ODBCbridge,用此技术,Java程序就可以访问带有ODBC驱动程序的数据库,目前大多数据库系统都带有ODBC驱动程序,所以Java程序能访问诸如Oracle、Sybase、MSSQLServer和MSAccess等。
在本系统中采用的是SQLServer2000,利用JDBC-ODBC桥接将jsp与数据库连接,主要的数据库连接步骤如下:
首先,建立一个SQLServer数据库,其中设计了两个表:
学生信息表aa,用户表b,在学生信息表中保存有学生的姓名、学号(设为主键)、性别和照片(因为我们在设计系统时,主要考虑实现通过前台浏览器对数据库中学生的基本信息进行管理,所以我们在数据库中只保存了学生的一般信息,没有对学生资料更好的进行归类,但是主要的编程思想都是一样的),用户管理表中保存有管理员的用户名和密码,管理员需要通过密码验证才能进入管理员主界面。
然后,在ControlPanel(控制面板)的ODBCDatasource模块中,加入SystemDSN,取名为xf,并指向test.mdb。
最后,创建JSP程序访问数据库。
在Java中,关键的java.sql、javax.sql等类库,提供了JDBC相关及接口程序,因为JDBC是执行SQL的标准应用程序接口规范,所以如何建立一个使用JDBC的应用程序,除应了解前述概念外,还有几个简单而重要的步骤需要掌握。
下示为一个JDBC程序,关键部分对应的步骤说明与语句范例。
步骤说明
语句范例
引进所要的JDBCpackage
importjava.sql.*;
新建适用的JDBC驱动类程序
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
通过JDBCURL取得数据连接
Connectionconn=DriverManager.getConnection("jdbc:
odbc:
xf")
建立SQL语句对象
Statementstmt=conn.createStatement();
执行SQL语句及接收返回结果
resultSetrs=stmt.executeQuery(“SELECT*FROM”);
至此可利用返回结果进行相关程序设计
关闭查询结果集ResultSet
rs.close();
关闭SQL语句连接
Stmt.close();
关闭数据库连接
Conn.close();
3.2SQLServer2000和与系统相关的SQL语言介绍
3.2.1数据定义DDL(datadefinitionlanguage)
数据定义语言是指对数据的格式和形态下定义的语言,他是每个数据库要建立时候时首先要面对的,举凡数据分哪些表格关系、表格内的有什么栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。
1、建表格:
createtabletable_name(column1datatype[notnull][notnullprimarykey],column2datatype[notnull],...)说明:
datatype--是资料的格式。
nutnull--可不可以允许资料有空的(尚未有资料填入)。
primarykey--是本表的主键。
2、更改表格 altertabletable_nameaddcolumncolumn_namedatatype说明:
增加一个栏位(没有删除某个栏位的语法。
altertabletable_nameaddprimarykey(column_name)说明:
更改表得的定义把某个栏位设为主键。
altertabletable_namedropprimarykey(column_name)说明:
把主键的定义删除。
3、建立索引 createindexindex_nameontable_name(column_name)说明:
对某个表格的栏位建立索引以增加查询时的速度。
4、删除 droptable_namedropindex_name
3.2.2数据形态datatypes
smallint16位元的整数;interger32位元的整数;
decimal(p,s)p精确值和s大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点后有几位数,如果没有特别指定,则系统会设为p=5;s=0;
float32位元的实数;double64位元的实数;char(n)n长度的字串,n不能超过254;varchar(n)长度不固定且其最大长度为n的字串,n不能超过4000;
graphic(n)和char(n)一样,不过其单位是两个字元double-bytes,n不能超过127,这个形态是为了支援两个字元长度的字体,例如中文字;
vargraphic(n)可变长度且其最大长度为n的双字元字串,n不能超过2000;
date包含了年份、月份、日期;time包含了小时、分钟、秒;
timestamp包含了年、月、日、时、分、秒、千分之一秒。
3.2.3SOLServer2000数据库的物理体系
数据型(Data):
包含有除text、ntext、imange外的所有数据行;
索引(Idex):
所含内容为索引条目;
文本/图像(Text/image):
text、ntext、image数据。
3.2.4数据操作dml(datamanipulationlanguage)
数据定义好之后接下来的就是数据的操作。
数据的操作不外乎增加数据(insert)、查询数据(query)、更改数据(update)、删除数据(delete)四种模式,以下分别介绍他们的语法:
1、增加数据:
insertintotable_name(column1,column2,...)values(value1,value2,...)
说明:
1.若没有指定column系统则会按表格内的栏位顺序填入资料。
2.栏位的资料形态和所填入的资料必须吻合。
3.table_name也可以是景观view_name。
2、查询数据:
selectcolumn1,columns2,...fromtable_name
说明:
把table_name的特定栏位资料全部列出来
select*fromtable_namewherecolumn1=***[andcolumn2>yyy][orcolumn3<>zzz]
说明:
1.´*´表示全部的栏位都列出来。
2.where之後是接条件式,把符合条件的资料列出来。
selectcolumn1,column2fromtable_nameorderbycolumn2[desc]
说明:
orderby是指定以某个栏位做排序,[desc]是指从大到小排列,若没有指明,则是从小到大排列。
3、更改数据:
updatetable_namesetcolumn1=´***´whereconditoins
说明:
1.更改某个栏位设定其值为´***´。
2.conditions是所要符合的条件、若没有where则整个table的那个栏位都会全部被更改。
4、删除资料:
deletefromtable_namewhereconditions
说明:
删除符合条件的资料。
3.3基于JSP实现图片的数据库存储与显示
这一模块是我们对系统设计的重点和难点。
数据库应用程序,特别是基于WEB的数据库应用程序,常会涉及到图片信息的存储和显示。
在设计过程中,我们考虑过将所要显示的图片存在特定的目录下,在数据库中保存相应的图片的名称,在JSP中建立相应的数据源,利用数据库访问技术处理图片信息。
但是,如果我们想动态的显示图片,上述方法就不能满足需要了。
我们必须把图片存入数据库,然后通过编程动态地显示我们需要的图片。
实际操作中,可以利用JSP的编程模式来实现图片的数据库存储和显示。
下面给出了在本系统中调用数据库中学生照片并显示照片的程序以及接收由浏览器发送过来的请求将学生照片存储到数据库中,并附带有程序的分析。
//读取图片源代码
try{
Stringid=request.getParameter("id");//获得学生的id
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动程序
}catch(ClassNotFoundExceptione)//捕获异常
{
out.println("notfound!
");
}
Connectionconn=DriverManager.getConnection("jdbc:
odbc:
xf");//连接数据库
Statementstmt=conn.createStatement();//创建SQL指令对象stmt
ResultSetresult=null;//建立ResultSet(结果集)对象
result=stmt.executeQuery("selectimafromaawhereid='"+id+"'");
//执行图片查询语句
if(result.next())
{
intlen=10*1024*1024;//定义字符数组长度
OutputStreamsout=response.getOutputStream();//建立输出流
InputStreamin=result.getBinaryStream
(1);//建立输入流
byteb[]=newbyte[len];
for(inti=in.read(b);i!
=-1;)//对取图片信息
{//如果i=-1表示图片读取成功或不存在
sout.write(b);
in.read(b);
}
sout.flush();//强制清出缓冲区
sout.close();//关闭输出流
}
}catch(SQLExceptione)//抛出异常
{
out.println(e.toString());
}
将上面的代码保存在xianshi.jsp文件中,在学生信息中通过id=<%=id%>"width="141">将通过上面代码取得的图片显示在页面上,其中id信息通过request请求发送给xianshi.jsp中的id属性。
//存储图片源代码
try{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundExceptione)
{
out.println("notfound!
");
}
Connectionconn=DriverManager.getConnection("jdbc:
odbc:
xf");
Statementstmt=conn.createStatement();
Stringname=request.getParameter("1");//获得学生姓名
name=newString(name.getBytes("8859_1"),"gb2312");//对获取信息进行中文编码
Stringid=request.getParameter("2");
//id=newString(id.getBytes("8859_1"),"gb2312");
Stringsex=request.getParameter("3");
sex=newString(sex.getBytes("8859_1"),"gb2312");
Stringimage=request.getParameter("4");
image=newString(image.getBytes("8859_1"),"gb2312");
FileInputStreamstr=newFileInputStream(image);//建立输入流
Stringsql="insertaa(name,id,sex,ima)values(?
?
?
?
)";//定义数据库添加语句
PreparedStatementrs=conn.prepareStatement(sql);
//建立PreparedStatement对象
rs.setString(1,name);//向表中第1列插入学生姓名
rs.setString(2,id);//输入学生id
rs.setString(3,sex);//输入学生性别
rs.setBinaryStream(4,str,str.available());
//输入照片,str.available()获得图片大小
rs.execute();//执行插入操作
}catch(SQLExceptione)//抛出异常
{
out.println(e.toString());
}
4.总结分析
至此该系统基于WEB的数据库应用程序已经完成了。
由于考虑到我们设计该系统主要是基于Java的学生信息管理系统,按照老师的要求,在浏览器中实现显示学生基本的文字信息和学生的照片功能,所以在数据库中我们只保存了少许几个学生的一些基本信息,如姓名、学号、性别、照片,并没有花费太多的经历将学生的一些详细资料按学院或其他信息建多个学生信息表,这一点我们也感到非常遗憾。
学生信息表设计虽然简单,但是我们处理了一个令很多人都感到困惑的难点,在JSP中,利用数据库访问技术处理图片信息,即基于WEB的动态图片显示。
基于java的学生信息管理系统
----系统前台Web服务
1.课程设计目的及要求
设计目的:
在学习了网络编成等课程后,为了更好的理解其有关原理并熟悉网络编成设计过程,进行了此次课程设计。
在设计中主要涉及到数据库的设计及操作过程,也为掌握数据库设计的基本方法并进一步应用奠定了基础。
前台浏览器设计部分是通过Dreamwaver工具应用jsp编程来实现界面的设计与修改,从而熟悉网络编程的技术。
设计要求:
设计基于java的学生信息管理系统的前台浏览器服务,包括系统的总界面设计以及系统的功能分析设计,完成系统的整体结构。
2.课程设计软硬件环境
2.1前台开发工具
本系统是在JSP环境下实现,后台数据库为MSSQL2000,前台应用JSP技术,JSP全称为JAVASERVERPAGES,也就是[JAVA服务端网页]的意思,JSP是一种集成HTML及JAVA程序于一体的网页技术,让网页设计者能够轻易而有弹性地建立互联网应用程序。
JSP称为网页,但它结合JAVA的SERVLET服务端小程序技术,因此称为JSP程序也可以。
其中使用到tomcat工具.tomcat可说是一个国际级的JSP服务器,也可以称为JSP容器(CONTAINER)或JSP引擎。
tomcat可融入Apache服务器中,而Apache可安装于Unix、Linus、NT、WINDOWS