herose  
     
     
 

  学生专业成绩管理系统的设计与实现

尉鹏博 韩银锋

摘要:本系统为“学生专业成绩管理系统的设计与实现”。利用JSP技术实现前台网页访问后台ACCESS数据库。实现普通用户查询自己的成绩及修改自己的密码功能,实现管理员用户对后台数据库的维护功能。
关键词:管理系统 JSP技术 ACCESS数据库 普通用户 管理员用户
一、需求分析
1. 前景
    目前的成绩管理系统主要是使用B/S模式程序开发技术中的ASP技术,或C/S模式程序开发中VB、VC等技术。C/S模式程序开发适用于小型局域网,应用较广泛,但是对于“××学院05级网络技术专业成绩管理系统”,想要随处可查,不太适用。ASP技术是微软开发的技术应用与计算机中,是网上程序开发的主要软件之一,应用也较广泛。JSP技术目前在网络编程中应用越来越广泛,而且JSP具有平台无关性。所以我在此选用JSP技术。
2. 设计中所用软件
    Java、Tomcat、DreamWaverMX、Access。
3. 需求分析
    “学生专业成绩管理系统的设计与实现”要求完成:
    (1) 普通用户
    普通用户按学号及密码登陆网站,完成对本人成绩分学期进行查询,并可对本人的密码进行修改的功能。这里普通用户就是学员。
    (2) 管理员
    管理员用户登陆界面。对用户进行管理,用户级别分为管理和普通。对管理级别用户完成添加、删除、修改、查询用户的功能。对普通级别用户完成添加学员、删除学员、修改学号信息、查询学号信息的功能。对学员成绩分学期进行管理完成修改的功能。
4. 数据库及数据表
    “学生专业成绩管理系统的设计与实现”建立数据库“cjgl”,其中数据表包括:用户表(use)、学员信息表(info)、五学期成绩表(cj1、cj2、cj3、cj4、cj5)。在此选用ACCESS作为数据库开发软件。这些数据表的表结构如下:
(1) 用户表(use)
 

字段名

字段类型

字段宽度

是否主键

说明

user

文本

10

用户名

Pwd

文本

10

 

密码

Jb

文本

4

 

级别

(2) 学员信息表(info)

字段名

字段类型

字段宽度

是否主键

说明

Num

文本

8

学号

name

文本

8

 

姓名

class

文本

6

 

班级

sex

文本

2

 

性别

(3) 第一学期成绩表(cj1)

字段名

字段类型

字段宽度

是否主键

说明

num

文本

8

学号

gs

文本

3

 

高数

yy

文本

3

 

英语

jj

文本

3

 

计算机基础

(4) 第二学期成绩表(cj2)~第五学期成绩表(cj5)
cj2表中字段有:num(学号),文本型,宽度8,主键;sjjg(数据结构成绩)、os(操作系统成绩)、java(Java成绩)都为文本类型宽度为3。
cj3表中字段有:num(学号),文本型,宽度8,主键;vbnet(VB.NET成绩)、net(网络成绩)都为文本类型宽度为3。
cj4表中字段有:num(学号),文本型,宽度8,主键;asp(ASP成绩)、jsp(JSP成绩)都为文本类型宽度为3。
cj5表中字段有:num(学号),文本型,宽度8,主键;rjgc(软件工程成绩)、jsp(软件测试成绩)都为文本类型宽度为3。
二、总体设计
    1.系统模块图(如图2-1所示)


三、详细设计
    1. 普通用户界面
    用户主界面如图3-1所示。包括“查询成绩”和“登陆”功能。
    可用DreamwaverMX设计如图界面,为“查询成绩”和“登陆”添加链接,都链接到“登陆”界面。因为没有用户权限是不能查询成绩的。而且普通用户(学员)只能查询自己的成绩。

    (1)建立ODBC数据源cjsource
    (2)连接文件conn.jsp
<%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:cjsource");
Statement st=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
%>
(3) “登陆”
    dl.html(如图3-2所示)。可用DreamwaverMX设计如图界面,为“返回”添加链接,都链接到“用户主界面”。用表单括起表格,“登陆”按钮为“提交”按钮。设置表单的action属性传值给dlok.jsp文件,将“用户名”后的文本框的name属性设为user,将“密码”后的文本框的name属性设为pwd。


    dlok.jsp文件(如图3-3所示)。单击“查询”链接到查询界面,如图3-4所示。单击“修改密码”链接到修改密码界面,只能修改该用户的密码,如图3-6所示。单击“返回”链接到主界面index.html,如图3-2所示。
代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<style type="text/css">
<!--
body {
background-color: #CCFFFF;
}
.STYLE1 {font-size: 24px}
-->
</style></head>

/*以上代码为DreamWaver自动生成,只需在新建时选JSP文件,以后扩展名为.jsp文件中以上部分将不在重述,只对body内的代码进行说明。*/

<body>
<p align="center">&nbsp;
</p>
<p class="STYLE1"><img src="xhyyb.bmp"></p>
<p><a href="index.html">返回</a></p>
<p align="center">
<%String user=request.getParameter("user");
String pwd=request.getParameter("pwd");
if (user==null||user.length()==0)
out.println("用户名为空");
else if(pwd==null||pwd.length()==0)
out.println("密码为空");
else
{%>
<%@include file="conn.jsp"%>
<%ResultSet rs=st.executeQuery("select * from use where user='"+user+"' and jb='普通'");
if (!rs.next())
{ out.println("登陆名错误,或用户级别不对");}
else if (!rs.getString("pwd").equals(pwd.trim()))
{ out.println("密码错误");}
else
{out.println("欢迎"+user);
session.setAttribute("suser",user);
session.setAttribute("spwd",pwd);
%>
登陆成功,欢迎您 !!!
</p>
</p>
<div align="center"><a href="sel.jsp">查询</a> |<a href="xgmm.jsp">修改密码</a> |
<%}}%>
<a href="index.html">返回</a>
</div>
<p align="center">&nbsp;</p>
<p>&nbsp;</p>
</body>
</html>
    注意这里将用户名存入session中,因为只能查询自己的成绩,用户名即为学员的学号。这里为session.setAttribute("suser",user);。
    (4) 查询成绩(如图3-4所示)
    选择查询学期页sel.jsp(如图3-4所示)。可用DreamwaverMX设计如图界面,为“返回”添加链接,都链接到“用户主界面”index.html。用表单括起表格,添加 “提交”和“重置”按钮。设置表单的action属性传值给selok.jsp文件,将“学期”后的列表框的name属性设为xq。选不同的学期,返回不同的查询结果。这里以第一学期selresult1.jsp为例。


    中间页,判断学期页selok.jsp。选择不同的学期打开不同的表。这里本页为过渡页无效果。代码如下:
<body>
<%
String num=(String)session.getAttribute("suser");
String xq=request.getParameter("xq");
session.setAttribute("snum",num);
session.setAttribute("sxq",xq);
if (xq.equals("1")){%>
<jsp:include page="selresult1.jsp"/>
<%}if (xq.equals("2")){%>
<jsp:include page="selresult2.jsp"/>
<%}if (xq.equals("3")){%>
<jsp:include page="selresult3.jsp"/>
<%}if (xq.equals("4")){%>
<jsp:include page="selresult4.jsp"/>
<%}if (xq.equals("5")){%>
<jsp:include page="selresult5.jsp"/>
<%}%>
</body>
    第一学期查询成功页selresult1.jsp(如图3-5所示)。“返回主页”链接到返回界面index.html,“继续查询”链接查询界面sel.jsp。
代码如下:
<body>
<img src="xhyyb.bmp"><p>
<%@include file="conn.jsp"%>
<%String num=(String)session.getAttribute("snum");
ResultSet rs=st.executeQuery("select * from cj1 where num='"+num+"'");
if (!rs.next())
out.println("该学号不存在");
else
{
%>
<a href="index.html">返回主页</a> | <a href="sel.jsp">继续查询</a></p>
<table width="400" border="2" cellspacing="1" cellpadding="1">
<tr>
<td>学期</td>
<td>学号</td>
<td>高数</td>
<td>英语</td>
<td>计算机应用基础</td>
</tr>
<tr>
<td><%= "1" %>&nbsp;</td>
<td><%= num%>&nbsp;</td>
<td><%= rs.getString("gs") %>&nbsp;</td>
<td><%= rs.getString("yy") %>&nbsp;</td>
<td><%= rs.getString("jj") %>&nbsp;</td>
</tr>
</table>
<p>
<%}%>
</p>
</body>
    其它学期与类似selresult1.jsp,只是字段不同。
   (5)修改用户密码
    输入修改密码信息xgmm.jsp(如图3-6所示)。可用DreamwaverMX设计如图界面,为“返回”添加链接,都链接到“用户主界面”index.html。用表单括起表格,添加“提交”和“重置”按钮。设置表单的action属性传值给xgmmok.jsp文件,将“原密码”后的文本框的name属性设为oldpwd,将“新密码”后的文本框的name属性设为newpwd,将“确认密码”后的文本框的name属性设为okpwd。


xgmmok.jsp代码如下:
<body>
<p><img src="xhyyb.bmp"></p>
<a href="index.html">返回</a>
<%String user=(String)session.getAttribute("suser");
String oldpwd=request.getParameter("oldpwd");
String newpwd=request.getParameter("newpwd");
String okpwd=request.getParameter("okpwd");
%>
<%@include file="conn.jsp"%>
<%if (oldpwd==null||oldpwd.length()==0)
{%>
| <a href="xgmm.jsp">重新修改</a><%
out.println("<p>原密码为空,请输入原密码!</p>");
}
else if(newpwd==null||newpwd.length()==0)
{%>
| <a href="xgmm.jsp">重新修改</a>
<% out.println("<p>新密码为空,请输入新密码!</p>");
}
else if(okpwd==null||okpwd.length()==0)
{%>
| <a href="xgmm.jsp">重新修改</a>
<%out.println("<p>确认密码为空,请输入确认密码!</p>"); }
else
{ResultSet rs=st.executeQuery("select * from use where user='"+user+"' and pwd='"+oldpwd+"'");
if (!rs.next())
{%>
| <a href="xgmm.jsp">重新修改</a>
<%out.println("<p>您的原密码有误!请重新输入!!!</p>");}
else
if(!newpwd.equals(okpwd))
{%>
| <a href="xgmm.jsp">重新修改</a>
<%out.println("<p>您的新密码与确认密码不一致!请重新输入!!!</p>");}
else
{st.executeUpdate("update use set pwd='"+newpwd+"' where user='"+user+"'" );
out.println("<p>修改成功!!!"+user+"您的密码是"+newpwd+"</p>");
}
}
%>
</body>
    2. 管理员用户界面
    管理员用户界面请在设计文件夹中新建一个“gly”文件夹。将管理员的所有界面存入gly文件夹。
    (1) 管理员登陆
    管理员必须先登陆,有管理员权限的用户才能进行系统维护。管理员登陆界面home.html如图3-7所示。与普通用户登陆界面(图3-2)相似只是没有“返回”。做法也与普通用户登陆界面相同。用DreamWaverMX设计页面,用表单括起表格,设form的action属性为dlok.jsp(如图3-8所示),将“用户名”后的文本框的name属性设为user,将“密码”后的文本框的name属性设为pwd。


    与普通用户界面的dlok.jsp文件相似,“返回”返回到登陆界面dl.html(如图3-7),“进入”进入到管理员维护主界面index.html(如图3-9)。代码将普通用户的查询命令中的级别改为“管理”。如下:
ResultSet rs=st.executeQuery("select * from use where user='"+user+"'and jb='管理'");
    (2) 管理员维护主界面index.html(如图3-9所示)


    “管理员维护主界面”包括“注册”、“修改用户信息”、“删除管理员用户”、“查询用户信息”、“添加学员”、“修改学员信息”、“修改成绩”、“删除学员”、“查询学员”、“查询学期成绩”的功能。本页用DreamWaverMX设计,将各功能链接到各自的页面。
    (3) 用户注册


    输入注册信息页reg.jsp(如图3-10所示),用DreamWaverMX设计,“返回”链接到gly目录下的index.html。将表格用表单括起,设form的action属性为regok.jsp,将“用户名”后的文本框的name属性设为user,将“密码”后的文本框的name属性设为pwd,将“确认密码”后的文本框设为pwdok,将“用户级别”后的列表框的name属性设为yhjb。
    注册成功页regok.jsp(如图3-11所示)。
代码如下:
<body>
<%request.setCharacterEncoding("gb2312");%>
<p><img src="../xhyyb.bmp"></p>
<p><a href="index.html">返回</a></p>
<p>
<%String user=request.getParameter("user");
String pwd=request.getParameter("pwd");
String pwdok=request.getParameter("pwdok");
String yhjb=request.getParameter("yhjb");
if (user==null||user.length()==0)
out.println("用户名为空");
else if(pwd==null||pwd.length()==0)
out.println("密码为空");
else if(pwdok==null||pwd.length()==0)
out.println("确认密码为空");
else if(yhjb==null||yhjb.length()==0)
out.println("请选择用户级别");
else if(!pwd.equals(pwdok))
out.println("密码不一致");
else
{%>
<%@include file="conn.jsp"%>
<%ResultSet rs=st.executeQuery("select * from use where user='"+user+"'");
if (rs.next())
{ out.println("用户名已经存在");}
else
{if(yhjb.equals("普通"))
{st.executeUpdate("insert into use values('"+user+"','"+pwd+"','普通')");
st.executeUpdate("insert into info(num) values('"+user+"')");
st.executeUpdate("insert into cj1 (num) values('"+user+"')");
st.executeUpdate("insert into cj2 (num) values('"+user+"')");
st.executeUpdate("insert into cj3 (num) values('"+user+"')");
st.executeUpdate("insert into cj4 (num) values('"+user+"')");
st.executeUpdate("insert into cj5 (num) values('"+user+"')");
}
else
{st.executeUpdate("insert into use values('"+user+"','"+pwd+"','管理')");}
%>
</p>
<table width="231" border="1" align="center">
<tr>
<td width="77">用户名</td>
<td width="107"><%=user %>&nbsp;</td>
</tr>
<tr>
<td>密码</td>
<td><%= pwd %>&nbsp;</td>
</tr>
<tr>
<td>用户级别</td>
<td><%= yhjb %>&nbsp;</td>
</tr>
</table>
<%
}}%>
</body>
    (4) 修改用户信息
    输入要修改的用户名,然后修改它的密码。
    输入要修改的用户名页upduser.html(如图3-12所示)。将表格用表单括起,设form的action属性为upduserinput.jsp,将“用户名”后的文本框的name属性设为user。
    修改用户信息页upduserinput.jsp(如图3-13所示)。用表单将表格括起,设form的action属性为upduserres.jsp。将“密码”后的文本框的name属性设为pwd,value属性的值设为从use表中取出的用户的密码。将“确认密码”后的文本框的name属性设为pwdok,value属性的值设为从use表中取出的用户的密码。将“用户级别”后的文本框的name属性设为jb,value属性设为从use表中取出的用户级别。

代码如下:
<body>
<p><img src="../xhyyb.bmp"> </p>
<p><a href="index.html">返回</a></p>
<p align="center" class="style1">现在开始修改</p>
<form method="post" name="form1" action="upduserres.jsp">
<%String user=request.getParameter("user");
session.setAttribute("suser",user);
%>
<%@include file="conn.jsp"%>
<%ResultSet rs=st.executeQuery("select * from use where user='"+user+"'");
if (!rs.next())
{ out.println("用户名不存在");}
else
{%>
<table width="256" border="1" align="center">
<tr>
<td width="78">用户名</td>
<td width="162"><%=user%>&nbsp;</td>
</tr>
<tr>
<td>密码</td>
<td><input name="pwd" type="text" id="pwd" size="6" maxlength="6" value=<%=rs.getString("pwd")%>></td>
</tr>
<tr>
<td>确认密码</td>
<td><input name="pwdok" type="text" id="pwdok" size="6" maxlength="6" value=<%=rs.getString("pwd")%>></td>
</tr>
<tr>
<td>用户级别</td>
<td><input name="jb" type="text" id="jb" size="4" maxlength="4" value=<%=rs.getString("jb")%>>
(普通,管理)</td>
</tr>
<tr align="center" bordercolor="#FFFFFF">
<td colspan="2"><input type="submit" name="Submit" value="提交"></td>
</tr>
</table>
</form>
<%}%>
</body>
修改用户成功界面页upduseres.jsp(如图3-14所示)。代码如下:


<body>
<p><img src="../xhyyb.bmp"> </p>
<p><a href="index.html">返回</a></p>
<p align="center">
<%request.setCharacterEncoding("gb2312");%>
<%String user=(String)session.getAttribute("suser");
String pwd=request.getParameter("pwd");
String pwdok=request.getParameter("pwdok");
String jb=request.getParameter("jb");
%>
<%@include file="conn.jsp"%>
<%if(!pwd.equals(pwdok))
out.println("密码不一致");
else
{st.executeUpdate("update use set pwd='"+pwd+"',jb='"+jb+ "' where user='"+user+"'");
%>
</p>
<p align="center">修改成功</p>
<table width="400" border="2" align="center" cellpadding="1" cellspacing="1">
<tr>
<td>用户名</td>
<td>密码</td>
<td>级别</td>
</tr>
<tr>
<td><%=user%>&nbsp;</td>
<td><%=pwd%>&nbsp;</td>
<td><%=jb%>&nbsp;</td>
</tr>
</table>
<%}%>
</body>
    (5) 删除管理员用户
    首先输入管理员用户的用户名deladm.html(如图3-15所示),然后检查用户是否存在deladmok.jsp(如图3-16所示),存在删除该用户deladmresult.jsp。
    输入要删除管理员用户的用户名页deladm.html(如图3-15所示),表格用表单括起,form的action属性设为deladmok.jsp。“用户名”后的文本框的name属性设为user。


    查询用户是否存在页deladmok.jsp(如图3-16所示),查询用户存在并显示用户信息。确认信息用表单括起,form的action属性设为deladmresult.jsp。deladmok.jsp文件代码如下:
<body>
<p align="left"><img src="../xhyyb.bmp"> </p>
<p align="left"><a href="index.html">返回</a></p>
<p>
<%@include file="conn.jsp"%>
<%String user=request.getParameter("user");
session.setAttribute("suser",user);
ResultSet rs=st.executeQuery("select * from use where user='"+user+"'");
if (!rs.next())
out.println("该用户不存在");
else
{%>
</p>
<p>管理员信息:</p>
<table width="400" border="2" cellspacing="1" cellpadding="1">
<tr>
<td>用户名</td>
<td>密码</td>
<td>级别</td>
</tr>
<tr>
<td><%=user %>&nbsp;</td>
<td><%=rs.getString("pwd") %>&nbsp;</td>
<td><%=rs.getString("jb") %>&nbsp;</td>
</tr>
</table>
<form name="form1" method="post" action="deladmresult.jsp">
<p>确定删除,删除后该学生的所有信息,所有成绩将不存在!!!</p>
<p>
<input type="submit" name="Submit" value="确定">
<input type="reset" name="Submit2" value="取消">
</p>
</form>
<%}%>
<p>&nbsp;</p>
</body>
    删除用户页deladmresult.jsp,删除用户页只是将该用户从use表中删除,并提示“管理员用户信息被删除!”或“该管理员用户不存在”。代码如下:
<body>
<p align="left"><img src="../xhyyb.bmp"> </p>
<p align="left"><a href="index.html">返回</a></p>
<p align="left">
<%@include file="conn.jsp"%>
<%String user=(String)session.getAttribute("suser");
ResultSet rs=st.executeQuery("select * from use where user='"+user+"'");
if (!rs.next())
{ out.println("该管理员用户不存在");}
else
{
st.executeUpdate("delete from use where user='"+user+"'");
out.println(user+"管理员用户信息被删除!");
}%>
</p>
</body>
    (6) 查询用户信息seluser.jsp(如图3-17所示)


查询用户信息页seluser.jsp(如图3-17所示),查询所有用户的信息。分页显示,一页显示8条用户信息。代码如下:
<body>
<p><img src="../xhyyb.bmp"></p>
<p><a href="index.html">返回</a> </p>
<p>
<%try{%>
<%@include file="conn.jsp"%>
<%ResultSet rs=st.executeQuery("select * from use");
String topage=request.getParameter("topage");
int pagesize=8;
int showpage=1;
int rowcount=0;
int pagecount=0;
rs.last();
rowcount=rs.getRow();
if(rowcount%pagesize==0)
pagecount=rowcount/pagesize;
else
pagecount=rowcount/pagesize+1;
if (topage!=null && !topage.equals(""))
{showpage=Integer.parseInt(topage);
if (showpage>pagecount)
showpage=pagecount;
else if(showpage<=0)
showpage=1;
}
%>
<hr>
<table>
<tr>
<td width="109">用户名</td>
<td width="103">密码</td>
<td width="69">级别</td>
</tr>
<% rs.absolute((showpage-1)*pagesize+1);
for(int i=1;i<=pagesize;i++)
{
%>
<tr>
<td><%=rs.getString("user")%></td>
<td><%=rs.getString("pwd")%></td>
<td><%=rs.getString("jb")%></td>
</tr>
<%
if(!rs.next()) break; }
%>
<tr>
<td colspan="3">共<font color="blue"><%=rowcount%></font>条 &nbsp;共<font color="blue"><%=pagecount%></font>页 &nbsp;当前页为第<font color="red"><%=showpage%></font>页</td>
</tr>
<tr>
<td colspan="5">
<div align="right"><a href=seluser.jsp?topage=<%=1%>>1</a> <a href=seluser.jsp?topage=<%=showpage-1%>>上一页</a> <a href=seluser.jsp?topage=<%=showpage+1%>>下一页</a> <a href=seluser.jsp?topage=<%=pagecount%>><%=pagecount%></a> </div></td>
<%
if(showpage!=1)
{
%>
<%
}
if(showpage!=pagecount)
{
%>
<%}%>
</tr>
</table>
<%rs.close();
st.close();
con.close();
}
catch(Exception e)
{out.println("<font color=red size=5><b>");
out.println("执行错误");
out.println("</b></font>");
}
%>
</body>
    (7) 添加学员(如图3-18所示)


输入学员信息,如图3-18。添加学员信息进学员信息表info,同时将该学号添加进用户表use(设用户为普通,密码默认为123)和各学期成绩表(cj1~cj5)中。
    输入学员信息页insnormal.html(如图3-18所示),用表单将表格括起,设form的action属性为    insnormalok.jsp。设“学号”后的文本框的name属性为num,设“姓名”后的文本框的name属性为uname,设“班级”后的文本框的name属性为uclass,设“性别”后的列表框的name属性为sex。
    添加学员成功页insnormalok.jsp(如图3-19所示),显示添加学员信息,询问是否输入学员成绩。“是”将学号传给下一页insnorresult.jsp(插入成绩页)修改成绩。


代码如下:
<body>
<p><img src="../xhyyb.bmp"></p>
<p><a href="index.html">返回</a>
<%request.setCharacterEncoding("gb2312");%>
<form name="form1" method="post" action="insnorresult.jsp">
<%String num=request.getParameter("num");
String uname=request.getParameter("uname");
String uclass=request.getParameter("uclass");
String sex=request.getParameter("sex");
%>
<%@include file="conn.jsp"%>
<%if (num==null||num.length()==0)
out.println("学号不能为空!");
else
{
ResultSet rs=st.executeQuery("select * from info where num='"+num+"'");
if (rs.next())
{ out.println("该学号已经存在");}
else
{st.executeUpdate("insert into use values('"+num+"','123','普通')");
st.executeUpdate("insert into cj1 (num) values('"+num+"')");
st.executeUpdate("insert into cj2 (num) values('"+num+"')");
st.executeUpdate("insert into cj3 (num) values('"+num+"')");
st.executeUpdate("insert into cj4 (num) values('"+num+"')");
st.executeUpdate("insert into cj5 (num) values('"+num+"')");
st.executeUpdate("insert into info values('"+num+"','"+uname+"','"+uclass+"','"+sex+"')");
session.setAttribute("snum",num);
session.setAttribute("sname",uname);
session.setAttribute("sclass",uclass);
session.setAttribute("ssex",sex);
%>
</p>
<table width="400" border="2" align="center" cellpadding="1" cellspacing="1">
<tr>
<td><div align="center">学号</div></td>
<td><div align="center">姓名</div></td>
<td><div align="center">班级</div></td>
<td><div align="center">性别</div></td>
</tr>
<tr>
<td><div align="center"><%=num%></div></td>
<td><div align="center"><%=uname%>&nbsp;</div></td>
<td><div align="center"><%=uclass%>&nbsp;</div></td>
<td><div align="center"><%=sex%>&nbsp;</div></td>
</tr>
<tr>
<td colspan="4"><div align="center">
    现在输入该生的成绩?
<input type="submit" name="Submit2" value="是">
</div></td>
</tr>
</table>
<div align="center"> </div>
</form>
<%}}%>
</body>
    插入成绩页insnorresult.jsp(如图3-20所示),实为取出学员的学号然后修改成绩,因为该学员的学号已在插入学员信息时就已经为各个成绩表插入了该学员的学号。将文本框的name属性分别设为gs,yy,jj,sjjg,os,java,vbnet,net,asp,jsp,rjgc,rjcs。用表单将表格括起,设form的action属性为insnorresok.jsp(输入成绩成功页)。


代码如下:
<body>
<p><img src="../xhyyb.bmp"></p>
<p><a href="index.html">返回</a></p>
<form name="form1" method="post" action="insnorresok.jsp">
<table width="400" border="2" align="center" cellpadding="1" cellspacing="1">
<tr>
<td>学期</td>
<td>学号</td>
<td>高数</td>
<td>英语</td>
<td>计算机基础</td>
</tr>
<tr>
<td>1</td>
<td><%=session.getAttribute("snum")%></td>
<td><input name="gs" type="text" id="gs" size="3" maxlength="3"></td>
<td><input name="yy" type="text" id="yy" size="3" maxlength="3"></td>
<td><input name="jj" type="text" id="jj" size="3" maxlength="3"></td>
</tr>
<tr>
<td>学期</td>
<td>学号</td>
<td>数据结构</td>
<td>操作系统</td>
<td>java</td>
</tr>
<tr>
<td>2</td>
<td><%=session.getAttribute("snum")%></td>
<td><input name="sjjg" type="text" id="sjjg" size="3" maxlength="3"></td>
<td><input name="os" type="text" id="os" size="3" maxlength="3"></td>
<td><input name="java" type="text" id="java" size="3" maxlength="3"></td>
</tr>
<tr>
<td>学期</td>
<td>学号</td>
<td>VB.NET</td>
<td colspan="2">网络</td>
</tr>
<tr>
<td>3</td>
<td><%=session.getAttribute("snum")%></td>
<td><input name="vbnet" type="text" id="vbnet" size="3" maxlength="3"></td>
<td colspan="2"><input name="net" type="text" id="net" size="3" maxlength="3"></td>
</tr>
<tr>
<td>学期</td>
<td>学号</td>
<td>ASP</td>
<td colspan="2">JSP</td>
</tr>
<tr>
<td>4</td>
<td><%=session.getAttribute("snum")%></td>
<td><input name="asp" type="text" id="asp" size="3" maxlength="3"></td>
<td colspan="2"><input name="jsp" type="text" id="jsp" size="3" maxlength="3"></td>
</tr>
<tr>
<td>学期</td>
<td>学号</td>
<td>软件工程</td>
<td colspan="2">软件测试</td>
</tr>
<tr>
<td>5</td>
<td><%=session.getAttribute("snum")%></td>
<td><input name="rjgc" type="text" id="rjgc" size="3" maxlength="3"></td>
<td colspan="2"><input name="rjcs" type="text" id="rjcs" size="3" maxlength="3"></td>
</tr>
<tr>
<td colspan="5"><div align="center">
<input type="submit" name="Submit" value="提交">
</div></td>
</tr>
</table>
<div align="center"></div>
</form>
</body>
    输入成绩成功页insnorresok.jsp(如图3-21所示)。将insnorresult.jsp中输入的成绩显示出来。


代码如下:
<body>
<p><img src="../xhyyb.bmp"></p>
<p><a href="index.html">返回</a></p>
<p>
<%String num=(String)session.getAttribute("snum");
String gs=request.getParameter("gs");
String yy=request.getParameter("yy");
String jj=request.getParameter("jj");
String sjjg=request.getParameter("sjjg");
String os=request.getParameter("os");
String java=request.getParameter("java");
String vbnet=request.getParameter("vbnet");
String net=request.getParameter("net");
String asp=request.getParameter("asp");
String jsp=request.getParameter("jsp");
String rjgc=request.getParameter("rjgc");
String rjcs=request.getParameter("rjcs");
%>
<%@include file="conn.jsp"%>
<% st.executeUpdate("update cj1 set gs='"+gs+"',yy='"+yy+"',jj='"+jj+"' where num='"+num+"'");
st.executeUpdate("update cj2 set sjjg='"+sjjg+"',os='"+os+"',java='"+java+"' where num='"+num+"'");
st.executeUpdate("update cj3 set vbnet='"+vbnet+"',net='"+net+"' where num='"+num+"'");
st.executeUpdate("update cj4 set asp='"+asp+"',jsp='"+jsp+"' where num='"+num+"'");
st.executeUpdate("update cj5 set rjgc='"+rjgc+"',rjcs='"+rjcs+"' where num='"+num+"'");
%>
</p>
<table width="400" border="2" align="center" cellpadding="1" cellspacing="1">
<tr>
<td>学期</td>
<td>学号</td>
<td>高数</td>
<td>英语</td>
<td>计算机基础</td>
</tr>
<tr>
<td>1</td>
<td><%=num%></td>
<td><%=gs%></td>
<td><%=yy%></td>
<td><%=jj%></td>
</tr>
<tr>
<td>学期</td>
<td>学号</td>
<td>数据结构</td>
<td>操作系统</td>
<td>java</td>
</tr>
<tr>
<td>2</td>
<td><%=num%></td>
<td><%=sjjg%>&nbsp;</td>
<td><%=os%>&nbsp;</td>
<td><%=java%>&nbsp;</td>
</tr>
<tr>
<td>学期</td>
<td>学号</td>
<td>VB.NET</td>
<td colspan="2">网络</td>
</tr>
<tr>
<td>3</td>
<td><%=num%></td>
<td><%=vbnet%>&nbsp;</td>
<td colspan="2"><%=net%>&nbsp;</td>
</tr>
<tr>
<td>学期</td>
<td>学号</td>
<td>ASP</td>
<td colspan="2">JSP</td>
</tr>
<tr>
<td>4</td>
<td><%=num%></td>
<td><%=asp%>&nbsp;</td>
<td colspan="2"><%=jsp%>&nbsp;</td>
</tr>
<tr>
<td>学期</td>
<td>学号</td>
<td>软件工程</td>
<td colspan="2">软件测试</td>
</tr>
<tr>
<td>5</td>
<td><%=num%></td>
<td><%=rjgc%>&nbsp;</td>
<td colspan="2"><%=rjcs%>&nbsp;</td>
</tr>
</table>
</body>
    (8) 修改学员信息
    输入要修改学员信息的学员学号,然后修改它的信息。这里学号不能修改。
输入要修改学员信息的学员学号页updnormal.html(如图3-22所示)。“返回”链接到index.html。表单将表格括起,将form的action属性设为updnorinput.jsp。“学号”后的文本框的name属性设为num。
    修改学员信息页updnorinput.jsp(如图3-23所示)。“返回”链接到index.html。表单将表格括起,将form的action属性设为updnorres.jsp。“姓名”后的文本框的name属性设为uname,“班级”后的文本框的name属性设为uclass,“性别”后的文本框name属性设为sex。


    修改学员信息页updnorinput.jsp代码如下:
<body>
<p><img src="../xhyyb.bmp"> </p>
<p><a href="index.html">返回</a></p>
<p align="center">现在开始修改</p>
<form name="form1" method="post" action="updnorres.jsp">
<%String num=request.getParameter("num");
session.setAttribute("snum",num);%>
<%@include file="conn.jsp"%>
<%ResultSet rs=st.executeQuery("select * from info where num='"+num+"'");
if (!rs.next())
{ out.println("用户名不存在");}
else
{
%>
<table width="188" border="2" align="center" cellpadding="1" cellspacing="1">
<tr>
<td width="55">学号</td>
<td width="118"><%=num%></td>
</tr>
<tr>
<td>姓名</td>
<td><input name="uname" type="text" id="uname" size="8" maxlength="8" value=<%=rs.getString("name")%>></td>
</tr>
<tr>
<td>班级</td>
<td><input name="uclass" type="text" id="uclass" size="6" maxlength="6" value=<%=rs.getString("class")%>></td>
</tr>
<tr>
<td>性别</td>
<td><input name="sex" type="text" id="sex" size="2" maxlength="2" value=<%=rs.getString("sex")%>>
(男,女)</td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input type="submit" name="Submit" value="提交">
</div></td>
</tr>
</table>
<%}%>
</form>
</body>
    修改成功页updnorres.jsp(如图3-24所示)。“返回”链接到index.html。


代码如下:
<body>
<%request.setCharacterEncoding("gb2312");%>
<p><img src="../xhyyb.bmp"> </p>
<p><a href="index.html">返回</a></p>
<p align="center">修改成功</p>
<p align="center">
<%String num=(String)session.getAttribute("snum");
String uname=request.getParameter("uname");
String uclass=request.getParameter("uclass");
String sex=request.getParameter("sex");
%>
<%@include file="conn.jsp"%>
<% st.executeUpdate("update info set name='"+uname+"',class='"+uclass+"',sex='"+sex+ "' where num='"+num+"'");
%>
</p>
<table width="400" border="2" align="center" cellpadding="1" cellspacing="1">
<tr>
<td>学号</td>
<td>姓名</td>
<td>班级</td>
<td>性别</td>
</tr>
<tr>
<td><%=num%>&nbsp;</td>
<td><%=uname%>&nbsp;</td>
<td><%=uclass%>&nbsp;</td>
<td><%=sex%>&nbsp;</td>
</tr>
</table>
</body>
    (9)修改成绩
    修改成绩是按照学期和学号进行修改的。和添加学员时不同。五学期是类似的,这里只说明第一学期。首先选择要修改学员成绩的学期和学号。然后显示该学员该学期的成绩信息,只能修改成绩,不能修改学号。单击“修改”,显示修改后的成绩信息。
选修改成绩的学号和学期页updcj.html(如图3-25所示)。“返回”链接到index.html。表单将表格括起,将form的action属性设为updcjok.jsp。“学号”后的文本框的name属性设为num,“学期”后的列表框的name属性设为xq。
    图3-25选修改成绩的学号和学期页 图3-26修改第一学期成绩页


判断学期页updcjok.jsp。中间页。代码如下:
<body>
<p>&nbsp;</p>
<%String num=request.getParameter("num");
String xq=request.getParameter("xq");
session.setAttribute("snum",num);
if (xq.equals("1")){%>
<jsp:include page="updcjres1.jsp"/>
<%}if (xq.equals("2")){%>
<jsp:include page="updresult2.jsp"/>
<%}if (xq.equals("3")){%>
<jsp:include page="updresult3.jsp"/>
<%}if (xq.equals("4")){%>
<jsp:include page="updresult4.jsp"/>
<%}if (xq.equals("5")){%>
<jsp:include page="updresult5.jsp"/>
<%}%>
</body>
</html>
    修改第一学期成绩页updcjres1.jsp(如图4-26所示)。“返回”链接到index.html。表单将表格括起,将form的action属性设为updcjtab1.jsp。文本框的name属性分别设为gs,yy,jj。
代码如下:
<body>
<p><img src="../xhyyb.bmp"></p>
<p><a href="index.html">返回</a></p>
<p>
<%@include file="conn.jsp"%>
<%String num=(String)session.getAttribute("snum");
ResultSet rs=st.executeQuery("select * from cj1 where num='"+num+"'");
if (!rs.next())
out.println("该学号不存在");
else
{%>
</p>
<form name="form1" method="post" action="updcjtab1.jsp">
<table width="400" border="2" align="center" cellpadding="1" cellspacing="1">
<tr>
<td>学号</td>
<td>高数</td>
<td>英语</td>
<td>计算机应用基础</td>
</tr>
<tr>
<td><%=num %>&nbsp;</td>
<td><input name="gs" type="text" id="gs" size="5" maxlength="3" value=<%=rs.getString("gs")%>></td>
<td><input name="yy" type="text" id="yy" size="5" maxlength="3" value=<%=rs.getString("yy")%>></td>
<td><input name="jj" type="text" id="jj" size="5" maxlength="3" value=<%=rs.getString("jj")%>></td>
</tr>
</table>
<p align="center">
<input type="submit" name="Submit" value="修改">
<input type="reset" name="Submit2" value="取消">
<%}%>
</p>
</form>
</body>
    修改第一学期成绩成功页updcjtab1.jsp(如图3-27所示)。


代码如下:
<body>
<p><img src="../xhyyb.bmp"></p>
<p><a href="index.html">返回</a></p>
<div align="center">
<%@include file="conn.jsp"%>
<%String num=(String)session.getAttribute("snum");
String gs=request.getParameter("gs");
String yy=request.getParameter("yy");
String jj=request.getParameter("jj");
st.executeUpdate("update cj1 set gs='"+gs+"',yy='"+yy+"',jj='"+jj+"'where num='"+num+"'");
ResultSet rs=st.executeQuery("select * from cj1 where num='"+num+"'");
rs.next();%>
<table width="400" border="2" cellspacing="1" cellpadding="1">
<tr>
<td>学号</td>
<td>高数</td>
<td>英语</td>
<td>计算机应用基础</td>
</tr>
<tr>
<td><%=num %>&nbsp;</td>
<td><%=rs.getString("gs")%>&nbsp;</td>
<td><%=rs.getString("yy")%>&nbsp;</td>
<td><%=rs.getString("jj")%>&nbsp;</td>
</tr>
</table>
</div>
</body>
    (10) 删除学员
    输入学员学号。显示该学员的所有信息,包括用户表use中信息,学员信息表info中信息,各学期成绩表(cj1~cj5)中信息。删除这些信息。
输入学员学号页del.html(如图3-28所示)。“返回”链接到index.html。表单将表格括起,将form的action属性设为delok.jsp。“学号”后文本框的name属性分别设为num。

    确认信息页delok.jsp(如图3-29所示)。显示该学员的所有信息,确认删除。“返回”链接到index.html。表单将删除确认括起,将form的action属性设为delresult.jsp。代码如下:


<body>
<p><img src="../xhyyb.bmp"> </p>
<p><a href="index.html">返回</a></p>
<p>
<%@include file="conn.jsp"%>
<%String num=request.getParameter("num");
session.setAttribute("snum",num);
ResultSet rs=st.executeQuery("select * from info where num='"+num+"'");
if (!rs.next())
out.println("该学号不存在");
else
{%>
</p>
<p>个人信息:</p>
<table width="400" border="2" cellspacing="1" cellpadding="1">
<tr>
<td>学号</td>
<td>姓名</td>
<td>班级</td>
<td>性别</td>
</tr>
<tr>
<td><%= num %>&nbsp;</td>
<td><%=rs.getString("name") %>&nbsp;</td>
<td><%=rs.getString("class") %>&nbsp;</td>
<td><%=rs.getString("sex") %>&nbsp;</td>
</tr>
</table>
<p>
<%rs=st.executeQuery("select * from use where user='"+num+"'");
rs.next();%>
</p>
<p>用户信息:</p>
<table width="400" border="2" cellspacing="1" cellpadding="1">
<tr>
<td>用户名</td>
<td>用户密码</td>
<td>用户级别</td>
</tr>
<tr>
<td><%= num %>&nbsp;</td>
<td><%= rs.getString("pwd") %>&nbsp;</td>
<td><%= rs.getString("jb") %>&nbsp;</td>
</tr>
</table>
<p>
<%rs=st.executeQuery("select * from cj1 where num='"+num+"'");
rs.next();%>
</p>
<p>第一学期成绩:</p>
<table width="400" border="2" cellspacing="1" cellpadding="1">
<tr>
<td height="30">学号</td>
<td>高数</td>
<td>英语</td>
<td>计算机应用基础</td>
</tr>
<tr>
<td><%= num %>&nbsp;</td>
<td><%= rs.getString("gs") %>&nbsp;</td>
<td><%= rs.getString("yy") %>&nbsp;</td>
<td><%= rs.getString("jj") %>&nbsp;</td>
</tr>
</table>
<%rs=st.executeQuery("select * from cj2 where num='"+num+"'");
rs.next();%>
<p>第二学期成绩:</p>
<table width="400" border="2" cellspacing="1" cellpadding="1">
<tr>
<td>学号</td>
<td>数据结构</td>
<td>操作系统</td>
<td>java</td>
</tr>
<tr>
<td><%= num %>&nbsp;</td>
<td><%= rs.getString("sjjg") %>&nbsp;</td>
<td><%= rs.getString("os") %>&nbsp;</td>
<td><%= rs.getString("java") %>&nbsp;</td>
</tr>
</table>
<p>
<%rs=st.executeQuery("select * from cj3 where num='"+num+"'");
rs.next();%>
</p>
<p>第三学期成绩:</p>
<table width="400" border="2" cellspacing="1" cellpadding="1">
<tr>
<td>学号</td>
<td>VB.NET</td>
<td>网络</td>
</tr>
<tr>
<td><%= num %>&nbsp;</td>
<td><%= rs.getString("vbnet") %>&nbsp;</td>
<td><%= rs.getString("net") %>&nbsp;</td>
</tr>
</table>
<p>
<%rs=st.executeQuery("select * from cj4 where num='"+num+"'");
rs.next();%>
</p>
<p>第四学期成绩:</p>
<table width="400" border="2" cellspacing="1" cellpadding="1">
<tr>
<td>学号</td>
<td>ASP</td>
<td>JSP</td>
</tr>
<tr>
<td><%= num %>&nbsp;</td>
<td><%= rs.getString("ASP") %>&nbsp;</td>
<td><%= rs.getString("JSP") %>&nbsp;</td>
</tr>
</table>
<p>
<%rs=st.executeQuery("select * from cj5 where num='"+num+"'");
rs.next();%>
</p>
<p>第五学期成绩:</p>
<table width="400" border="2" cellspacing="1" cellpadding="1">
<tr>
<td>学号</td>
<td>软件工程</td>
<td>软件测试</td>
</tr>
<tr>
<td><%= num %>&nbsp;</td>
<td><%= rs.getString("rjgc") %>&nbsp;</td>
<td><%= rs.getString("rjcs") %>&nbsp;</td>
</tr>
</table>
<form name="form1" method="post" action="delresult.jsp">
<p>确定删除,删除后该学生的所有信息,所有成绩将不存在!!!</p>
<p>
<input type="submit" name="Submit" value="确定">
<input type="reset" name="Submit2" value="取消">
</p>
</form>
<%}%>
</body>
删除成功页delresult.jsp(如图3-30所示)。从表中彻底删除该学员。代码如下:
<body>
<p align="left"><img src="../xhyyb.bmp"> </p>
<p align="left"><a href="index.html">返回</a></p>
<p>
<%@include file="conn.jsp"%>
<%String num=(String)session.getAttribute("snum");
ResultSet rs=st.executeQuery("select * from info where num='"+num+"'");
if (!rs.next())
{ out.println("该学号不存在");}
else
{
st.executeUpdate("delete from info where num='"+num+"'");
st.executeUpdate("delete from use where user='"+num+"'");
st.executeUpdate("delete from cj1 where num='"+num+"'");
st.executeUpdate("delete from cj2 where num='"+num+"'");
st.executeUpdate("delete from cj3 where num='"+num+"'");
st.executeUpdate("delete from cj4 where num='"+num+"'");
st.executeUpdate("delete from cj5 where num='"+num+"'");
out.println(num+"学号所有信息被删除!");
}%>
</p>
</body>
    (11) 查询学员


    查询学员页selinfo.jsp(如图3-31所示)。分页显示所有学员的信息,每页显示8条记录。
代码如下:
<body>
<p><img src="../xhyyb.bmp"></p>
<p><a href="index.html">返回</a></p>
<%try{%>
<%@include file="../conn.jsp"%>
<%ResultSet rs=st.executeQuery("select * from info");
String topage=request.getParameter("topage");
int pagesize=8;
int showpage=1;
int rowcount=0;
int pagecount=0;
rs.last();
rowcount=rs.getRow();
if(rowcount%pagesize==0)
pagecount=rowcount/pagesize;
else
pagecount=rowcount/pagesize+1;
if (topage!=null && !topage.equals(""))
{showpage=Integer.parseInt(topage);
if (showpage>pagecount)
showpage=pagecount;
else if(showpage<=0)
showpage=1;
}
%>
<hr>
<table>
<tr>
<td width="74">学号</td>
<td width="50">姓名</td>
<td width="59">班级</td>
<td width="86">性别</td>
</tr>
<% rs.absolute((showpage-1)*pagesize+1);
for(int i=1;i<=pagesize;i++)
{
%>
<tr>
<td><%=rs.getString("num")%></td>
<td><%=rs.getString("name")%></td>
<td><%=rs.getString("class")%></td>
<td><%=rs.getString("sex")%></td>
</tr>
<%
if(!rs.next()) break; }
%>
<tr>
<td colspan="4">共<font color="blue"><%=rowcount%></font>条 &nbsp;共<font color="blue"><%=pagecount%></font>页 &nbsp;当前页为第<font color="red"><%=showpage%></font>页</td>
</tr>
<tr>
<td colspan="6">
<div align="right"><a href=selinfo.jsp?topage=<%=1%>>1</a> <a href=selinfo.jsp?topage=<%=showpage-1%>>上一页</a> <a href=selinfo.jsp?topage=<%=showpage+1%>>下一页</a> <a href=selinfo.jsp?topage=<%=pagecount%>><%=pagecount%></a> </div></td>
<%
if(showpage!=1)
{
%>
<%
}
if(showpage!=pagecount)
{
%>
<%}%>
</tr>
</table>
<%rs.close();
st.close();
con.close();
}
catch(Exception e)
{out.println("<font color=red size=5><b>");
out.println("执行错误");
out.println("</b></font>");
}
%>
</body>
    (12) 查询学期成绩
    选择学期,分页显示所有学员该学期的成绩。五学期类似,这里讲述第一学期。
    选择学期页selcj.html(如图3-32所示)。“返回”链接到index.html。表单将表格括起,form的action属性设为selcjok.jsp。“学期”后列表框的name属性设为xq。


    确定学期页,中间页selcjok.jsp。代码如下:
<body>
<% String xq=request.getParameter("xq");
if (xq.equals("1")){%>
<jsp:include page="selcjres1.jsp"/>
<%}if (xq.equals("2")){%>
<jsp:include page="selresult2.jsp"/>
<%}if (xq.equals("3")){%>
<jsp:include page="selresult3.jsp"/>
<%}if (xq.equals("4")){%>
<jsp:include page="selresult4.jsp"/>
<%}if (xq.equals("5")){%>
<jsp:include page="selresult5.jsp"/>
<%}%>
</body>
第一学期成绩查询结果页selcjres1.jsp(如图3-33所示)。分页显示,一页显示8条记录。代码如下:
<body>
<p><img src="../xhyyb.bmp"></p>
<p><a href="index.html">返回</a></p>
<%try{%>
<%@include file="conn.jsp"%>
<%ResultSet rs=st.executeQuery("select * from cj1");
String topage=request.getParameter("topage");
int pagesize=8;
int showpage=1;
int rowcount=0;
int pagecount=0;
rs.last();
rowcount=rs.getRow();
if(rowcount%pagesize==0)
pagecount=rowcount/pagesize;
else
pagecount=rowcount/pagesize+1;

if (topage!=null && !topage.equals(""))
{showpage=Integer.parseInt(topage);
if (showpage>pagecount)
showpage=pagecount;
else if(showpage<=0)
showpage=1;
}
%>
<hr>
<table>
<tr>
<td width="74">学号</td>
<td width="50">高数</td>
<td width="59">英语</td>
<td width="86">计算机基础</td>
</tr>
<% rs.absolute((showpage-1)*pagesize+1);
for(int i=1;i<=pagesize;i++)
{
%>
<tr>
<td><%=rs.getString("num")%></td>
<td><%=rs.getString("gs")%></td>
<td><%=rs.getString("yy")%></td>
<td><%=rs.getString("jj")%></td>
</tr>
<%
if(!rs.next()) break; }
%>
<tr>
<td colspan="4">共<font color="blue"><%=rowcount%></font>条 &nbsp;共<font color="blue"><%=pagecount%></font>页 &nbsp;当前页为第<font color="red"><%=showpage%></font>页</td>
</tr>
<tr>
<td colspan="6">
<div align="right"><a href=selcjres1.jsp?topage=<%=1%>>1</a> <a href=selcjres1.jsp?topage=<%=showpage-1%>>上一页</a> <a href=selcjres1.jsp?topage=<%=showpage+1%>>下一页</a> <a href=selcjres1.jsp?topage=<%=pagecount%>><%=pagecount%></a> </div></td>
<%
if(showpage!=1)
{
%>
<%
}
if(showpage!=pagecount)
{
%>
<%}%>
</tr>
</table>
<%rs.close();
st.close();
con.close();
}
catch(Exception e)
{out.println("<font color=red size=5><b>");
out.println("执行错误");
out.println("</b></font>");
}
%>
</body>
四、总结
    本系统为“学生专业成绩管理系统的设计与实现”。利用现在流行的JSP技术实现前台网页和后台数据库ACCESS的访问。实现普通用户按学号及密码登陆网站,完成对本人成绩分学期进行查询的功能。实现管理员按管理员用户登陆界面,对用户进行管理,用户级别分为管理和普通。对管理级别用户完成添加、删除、修改、查询用户的功能。对普通级别用户完成添加学员、删除学员、修改学号信息、查询学号信息的功能。对学员成绩分学期进行管理完成修改的功能。

参考文献:
1 方逵.JSP编程技术与应用[M].北京:高等教育出版社,2006
2 金林櫵.网络数据库技术及应用[M].北京:机械工业出版社,2002
3 杨学全.SQL Server 2000实例教程[M].北京:电子工业出版社.2004

(电脑编程技巧与维护杂志社版权所有。未经许可不得转载。)
 

 
 
     
     
 
2008 Copyright.《电脑编程技巧与维护》杂志社 版权所有