学生成绩管理系统
基于Jsp+sql server数据库的学生成绩管理系统需求分析学生成绩管理系统需求服务对象为在校学生和在校交工校教工. 整体分为学生模块和教师模块.学生模块 需求 :1:学生个体通过学号登录系统.2:网页页面显示学生信息(学号,姓名,成绩,年龄,新版)性别,联系方式,居住地)3:学生个体可以修改自己的信息(姓名,性别,年龄,)龄,联系方式,居住地)4:学生无删除与增加自身信息的权限.教师模块需求
基于Jsp+sql server数据库的学生成绩管理系统
需求分析
学生成绩管理系统需求服务对象为在校学生和在校交工
校教工. 整体分为学生模块和教师模块.
学生模块 需求 :
1:学生个体通过学号登录系统.
2:网页页面显示学生信息(学号,姓名,成绩,年龄,新版)
性别,联系方式,居住地)
3:学生个体可以修改自己的信息(姓名,性别,年龄,)
龄,联系方式,居住地)
4:学生无删除与增加自身信息的权限.
教师模块需求:
1:教师个体通过教工号登陆系统.
2:教师选择课程后查看所带班全部学生全部信息
3:教师登陆后允许修改学生成绩
4:教师可增加学生个体信息到系统表中
5:教师无删除学生个体信息权限
项目构思
设计学生信息表,包含字段如下: |
(学号,课程号,姓名,成绩,年龄,性别,联系方式,居住地) |
住地) |
设计教工表,包含字段如下: |
(课程号,教工号,课程名,教工姓名,职称) |
Register.jsp提供学生教师登录入口 |
registerForward.jsp判断用户身份 |
studentDispose.jsp显示学生信息 |
studentModification.jsp修改学生信息 |
teacherClass.jsp查找教师所带课程 |
Showinfo.jsp显示教师所带班级 学生信息 |
modificationScore.jsp显示要修改的学生成绩 |
finallyScoreModification.jsp修改成绩 |
addStudentInfo.jsp增添学生用户界面 |
finallAddinfo.jsp添加学生成绩 |
详细设计
学生信息表: |
(s# , c# ,sname , score,age,sex,telephone,home) |
教工表: |
(c#,cname,title,t#,tname) |
Register.jsp功能: |
分设两个入口:教师入口和学生入口 |
教师入口由教师工号字段进入 |
学生 入口由学生学号字段进入 |
RegisterForward.jsp功能: |
接收由register.html提交的字段,并依submit的value值判断提交按钮,并依此刷新到不同界面 |
studentDispose.jap功能:(由registerForward.jsp |
跳转) |
链接数据库学生信息表,查询字段等于s#的元组, |
将其显示在网页上,并设有修改按钮(提交至stud |
entModification.jsp),查询后关闭数据库 |
studentModification.jsp功能: |
接收由studentDispose.jsp传入的元组所有字段, |
链接数据库,查询到对应s#,修改学生信息表属性 |
值,显示修改成功或失败,返回登录入口. |
teacherClass.jsp功能: |
为教师提供课程选择功能. |
链接数据库教工表,查询t#等于字段的所有c#, |
页面显示教工的tname,title,并设有下拉列表框, |
显示cname,设进入按钮,跳转页面并提交cname |
字段.关闭数据库. |
ShowInfo.jsp功能: |
接收cname字段.链接数据库教工表,由cname字 |
段匹配c#,查询学生信息表,匹配c#字段,页面显 |
示对应行记录,标头显示tname,title,cname,行信 |
息右侧显示设修改超链接(超链接传入s#) |
底部设有增加学生信息超链接. |
Modification.jsp功能: |
接收S#字段,链接数据库学生信息表,读取匹配s |
#的字段行,页面显示s#,sname,score,设有修改按 |
钮.关闭数据库. |
finallyScoreModification.jsp功能: |
接收由modificationscore.jsp传入的s#,score. |
链接数据库学生信息表,匹配s#,更新score,页面 |
显示修改成功或失败. |
addStudentInfo.html功能: |
学生信息填入表单(接收cname,由showinfo提交) |
用以录入学生信息,设提交按钮. |
finallAddInfo.jsp功能: |
接收addStudentInfo.html的字段. |
链接数据库教工表,由cname查询c#. |
将接收的字段与c#作为记录插入到学生信息表 |
中,显示插入成功或失败. |
关闭数据库.5秒后跳转到showInfo页面. |
代码部分:
register.jsp
<%@ page pageEncoding="UTF-8" %>
<html>
<head><title>登录入口</title>
<script type="text/javascript" src="registerForward.js"></script>
</head>
<body>
<form name="form1" method="post" action="" >
<table align="center" width="300" height="100">
<tr><th>工号:</th><td><input type="text" name="jobNumber" ></td></tr>
<tr><th colspan="2"><input type="submit" value="教师入口" onClick="return teacherCheck()" />
<input type="submit" value="学生入口" onClick="return studentCheck()" /></th></tr>
</table>
</form>
</body>
</html>
registerForward.js
function teacherCheck()
{
if(document.form1.jobNumber.value=='')
{
alert("工号不能为空!");
return false;
}
document.form1.mehtod="post";
document.form1.action="teacherClass.jsp";
document.form1.submit();
return true;
}
function studentCheck()
{
if(document.form1.jobNumber.value=='')
{
alert("工号不能为空!");
return false;
}
document.form1.action="studentDispose.jsp";
document.form1.submit();
}
studentDispose.jsp
<%@ page pageEncoding="UTF-8" import ="java.sql.*" import="java.util.*" %>
<html>
<head><title>显示学生信息</title></head>
<body>
<%! String sNumber , sname , sex ,telephone , home ; int age ,score;%>
<%
String jobNumber = request.getParameter("jobNumber");
Connection con;
PreparedStatement pstmt;
ResultSet rs=null;
String sql=null;
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=LCBCom";
String user = "sa";
String userPassword = "123";
Class.forName(driver);
con = DriverManager.getConnection(url , user , userPassword);
sql="select s# , sname , score,age,sex,telephone,home from S where s#=? ";
pstmt = con.prepareStatement(sql);
pstmt.setString(1 , jobNumber);
rs = pstmt.executeQuery();
if(rs.next())
{
sNumber= rs.getString("s#"); //String 是 s#报错重复的变量s# , 为什么?
sname = rs.getString("sname");
score = rs.getInt("score");
age = rs.getInt("age");
sex = rs.getString("sex");
telephone = rs.getString("telephone");
home = rs.getString("home");
if(sex.equals("M"))
{
sex="男";
}
else
{
sex="女";
}
rs.close();
pstmt.close();
con.close();
//将学生用户信息存储在session中
session.setAttribute("sNumber" , sNumber ); //直接写变量,不用放在表达式里
session.setAttribute("sname" , sname );
session.setAttribute("score" , score );
session.setAttribute("age" , age );
session.setAttribute("sex" , sex );
session.setAttribute("telephone" , telephone);
session.setAttribute("home" , home );
}
else{
%>
<jsp:forward page="numberError.jsp" >
<jsp:param name="jobNumber" value="<%= jobNumber %>" />
</jsp:forward>
<%
}
%>
<h2 align="center">你的信息如下:</h2>
<form method="post" name=form2 action="studentModification.jsp" >
<table align="center">
<tr><th>学号:</th><td><%= sNumber %></td></tr>
<tr><th>姓名:</th><td><%= sname %></td></tr>
<tr><th>年龄:</th><td><%= age %></td></tr>
<tr><th>成绩:</th><td><%= score %></td></tr>
<tr><th>性别:</th><td><%= sex %></td></tr>
<tr><th>联系方式:</th><td><%= telephone %></td></tr>
<tr><th>居住地:</th><td><%= home %></td></tr>
<tr><th>修改个人信息:</th><td><input type="submit" value="提交" ></td></tr>
</body>
</html>
numberError.jsp
<%@ page pageEncoding="UTF-8" %>
<html>
<body>
<%
String errorNumber = request.getParameter("jobNumber");
%>
<p>无法识别学号<%= errorNumber %>,请检查学号是否输入正确!</p>
<p>5秒后将返回登录界面</p>
<% response.setHeader("Refresh" , "5;url=register.jsp"); %>
</body>
</html>
studentModification.jsp
<%@ page pageEncoding="UTF-8" import ="java.sql.*" import="java.util.*" %>
<html>
<body>
<%
session = request.getSession();
String sNumber = (String)session.getAttribute("sNumber");
String sname = (String)session.getAttribute("sname");
Object o;
o = session.getAttribute("score");
String score = o.toString();
o = session.getAttribute("age");
String age = o.toString();
String sex = (String)session.getAttribute("sex");
String telephone = (String)session.getAttribute("telephone");
String home = (String)session.getAttribute("home");
if(sex.equals("男"))
{
sex = "M";
}
else
{
sex = "W";
}
Connection con;
PreparedStatement pstmt;
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=LCBCom";
String user = "sa";
String userPassword = "123";
Class.forName(driver);
con = DriverManager.getConnection(url , user , userPassword);
String sql = "update S set s#=? , sname = ? , score = ? , age = ? , sex = ? , telephone = ? , home = ? where s# = ? ";
pstmt = con.prepareStatement(sql);
pstmt.setString(1 , sNumber);
pstmt.setString(2 , sname);
pstmt.setInt(3 , Integer.parseInt(score));
pstmt.setInt(4 , Integer.parseInt(age));
pstmt.setString(5 , sex);
pstmt.setString(6 , telephone);
pstmt.setString(7 , home);
pstmt.setString(8 , sNumber);
pstmt.executeUpdate();
pstmt.close();
con.close();
%>
<p>数据更新完成,将在5秒后返回主界面</p>
<% response.setHeader("Refresh" , "5;url=register.jsp"); %>
<p>已更新的数据如下:</p>
<p>成绩:<%= score %></p>
<p>姓名:<%= sname %></p>
<p>学号:<%= sNumber %></p>
<p>性别:<%= sex %></p>
<p>年龄:<%= age %></p>
<p>联系方式:<%= telephone %></p>
<p>居住地:<%= home %></p>
</body>
</html>
teacherClass.jsp
<%@ page pageEncoding="UTF-8" import ="java.sql.*" import="java.util.*" %>
<html>
<body>
<%! String tname , title; %>
<%
String jobNumber = request.getParameter("jobNumber");
jobNumber.trim();
session.setAttribute("t#" ,jobNumber);
Connection con;
PreparedStatement pstmt;
ResultSet rs=null;
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=LCBCom";
String user = "sa";
String userPassword = "123";
Class.forName(driver);
con = DriverManager.getConnection(url , user , userPassword);
String sql = "select c# , cname , tname , title from T where t# = ?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1 , jobNumber);
rs = pstmt.executeQuery();
String ArrayCname[] = new String[10];
String ArrayCnumber[] = new String[10];
int i=0;
while(rs.next())
{
tname = rs.getString("tname");
title = rs.getString("title");
ArrayCname[i] = rs.getString("cname");
ArrayCnumber[i] = rs.getString("c#");
//原来的设计里没有获取c#的想法,跳转到showinfo.jsp页面后,是根据cname的值查找c# ,然后又根据c#找的学生表的数据.这时要对学生表和教工表做外连接,不太好.
//所以现在直接把c#也请求过来,然后单选框的value是c#的值,而对应的显示的是cname. 之后只需要查找学生表即可.
i++;
}
rs.close();
pstmt.close();
con.close();
%>
<form name = "form3" action="showInfo.jsp" >
<table align="center">
<h2 align = "center" > 选择你的课程进入系统</h2>
<h3 align="center" ><%= tname %><%= title %>,请您选课</h3>
<%
int u=0;
while(u<i)
{
out.println(" "+" "+" "+" "+" "+"<h4 align=\"center \"><input type=\"radio\" name = \"Cnumber\" value="+ArrayCnumber[u]+">"+ ArrayCname[u]+"</h4>");
u++;
}
%>
<input type = "submit" value="进入" align="center">
</table>
</form>
</body>
</html>
showInfo.jsp
s<%@ page pageEncoding="UTF-8" import ="java.sql.*" import="java.util.*" %>
<html>
<body>
<form name="form4" >
<table align="center" border="8" width="600" height="200">
<h3 align="center"> 学生信息:</h3>
<tr><td>学号</td><td>姓名</td><td>年龄</td><td>性别</td><td>联系方式</td><td>成绩</td><td>修改成绩</td></tr>
<%! String cnumber , snumber; %>
<%
session = request.getSession();
Object o = session.getAttribute("t#");
String c = o.toString();
cnumber = request.getParameter("Cnumber"); //接收到的是实际的c#值 , 变量写c# 报错说变量c重复定义,估计是#特殊字符
Connection con;
PreparedStatement pstmt;
ResultSet rs=null;
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=LCBCom";
String user = "sa";
String userPassword = "123";
Class.forName(driver);
con = DriverManager.getConnection(url , user , userPassword);
String sql = "select s# ,sname ,score ,age ,sex , telephone , home from S where c# = ?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1 , cnumber);
rs = pstmt.executeQuery();
while(rs.next())
{
%>
<tr><td><%= rs.getString("s#") %></td>
<%
snumber = rs.getString("s#");
%>
<td><%= rs.getString("sname")%></td>
<td><%= rs.getInt("age") %></td>
<%
String sex = rs.getString("sex");
if(sex.equals("M"))
{
sex = "男";
}
else
{
sex = "女";
}
session.setAttribute("showInfo_snumber" , snumber);
session.setAttribute("showInfo_cnumber" , cnumber);
%>
<td><%= sex %></td>
<td><%= rs.getString("telephone") %></td>
<td><%= rs.getInt("score") %></td>
<td><a href = "Modification.jsp" >修改成绩</a></td>
</tr>
<%
}
%>
</table>
</form>
<h2 align="center"><a href = "addStudentInfo.jsp">创建学生身份信息</a></h2>
</body>
</html>
addStudentInfo.jsp
<%@ page pageEncoding="UTF-8" import ="java.sql.*" import="java.util.*" %>
<html>
<body>
<%
session = request.getSession();
Object o = session.getAttribute("showInfo_cnumber");
String cnumber = o.toString();
%>
<form name = "form6" action = "finallAddInfo.jsp">
<table align="center" border="7" width="300" height="400">
<tr><td>姓名:</td><td><input type="text" name="sname"></td></tr>
<tr><td>年龄:</td><td><input type="text" name="age" ></td></tr>
<tr><td>性别:</td></tr>
<tr><td><input type="radio" name="sex" value="M" checked>男</td><td><input type="radio" name="sex" value="W" >女</tr>
<tr><td>学号:</td><td><input type="text" name="snumber"></td></tr>
<tr><td>联系方式:</td><td><input type="text" name="telephone" ></td></tr>
<tr><td>居住地:</td><td><input type="text" name="home" ></td></tr>
<tr><td>成绩:</td><td><input type = "text" name = "score" ></td></tr>
<tr><td><input type = "submit" value="添加"> </td></tr>
<tr><td><%= cnumber %></td></tr>
</body>
</html>
finallAddInfo.jsp
<%@ page pageEncoding="UTF-8" import ="java.sql.*" import="java.util.*" %>
<html>
<body>
<%
String sname = request.getParameter("sname");
String age = request.getParameter("age");
String snumber = request.getParameter("snumber");
String telephone = request.getParameter("telephone");
String home = request.getParameter("home");
String sex = request.getParameter("sex");
String score = request.getParameter("score");
int age_new = Integer.parseInt(age);
int score_new = Integer.parseInt(score);
session = request.getSession();
Object o = session.getAttribute("showInfo_cnumber");
String cnumber = o.toString();
Connection con;
PreparedStatement pstmt;
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=LCBCom";
String user = "sa";
String userPassword = "123";
Class.forName(driver);
con = DriverManager.getConnection(url , user , userPassword);
String sql = "insert into S(s# ,c# ,age ,sex ,home ,telephone , score ,sname) values(?, ? ,? ,? ,?,? , ? ,?)";
pstmt = con.prepareStatement(sql);
pstmt.setString(1 , snumber);
pstmt.setString(2 , cnumber);
pstmt.setInt(3 , age_new);
pstmt.setString(4 , sex);
pstmt.setString(5 , home);
pstmt.setString(6 , telephone);
pstmt.setInt(7 , score_new);
pstmt.setString(8 ,sname);
pstmt.executeUpdate();
%>
<h2 align="center">学生成绩插入成功!将在5秒后返回登录界面</h2>
<% response.setHeader("Refresh" , "5;url=register.jsp"); %>
</body>
</html>
modification.jsp
<%@ page pageEncoding="UTF-8" import ="java.sql.*" import="java.util.*" %>
<html>
<body>
<%
session = request.getSession();
Object o = session.getAttribute("showInfo_snumber");
String snumber = o.toString();
Connection con;
PreparedStatement pstmt;
ResultSet rs=null;
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=LCBCom";
String user = "sa";
String userPassword = "123";
Class.forName(driver);
con = DriverManager.getConnection(url , user , userPassword);
String sql = "select sname ,score from S where s# = ? ";
pstmt = con.prepareStatement(sql);
pstmt.setString(1 , snumber);
rs = pstmt.executeQuery();
rs.next();
String sname = rs.getString("sname");
int score = rs.getInt("score");
session.setAttribute("Modification_snumber" , snumber );
rs.close();
pstmt.close();
con.close();
%>
<form name = "form5" action = "finallyScoreModification.jsp" >
<table align = "center" >
<h1 align="center">成绩修订</h1>
<tr><th>姓名:</th><td><%= sname %></td></tr>
<tr><th>学号:</th><td><%= snumber %></td></tr>
<tr><th>当前成绩:</th><td><%= score %></td></tr>
<tr><th>修订后的成绩:</th><td><input type = "text" name = "score" ></td></tr>
<tr><td align="center" colspan = "2"><input type = "submit" value = "修改" ></td></tr>
</table>
</form>
</body>
</html>
finallyScoreModification.jsp
<%@ page pageEncoding="UTF-8" import ="java.sql.*" import="java.util.*" %>
<html>
<body>
<%! String snumber; %>
<%
session = request.getSession();
String score = request.getParameter("score");
int int_score = Integer.parseInt(score);
Object o = session.getAttribute("Modification_snumber");
snumber = o.toString();
Connection con;
PreparedStatement pstmt;
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=LCBCom";
String user = "sa";
String userPassword = "123";
Class.forName(driver);
con = DriverManager.getConnection(url , user , userPassword);
String sql = "update S set score = ? where s# = ?" ;
pstmt = con.prepareStatement(sql);
pstmt.setInt(1 , int_score);
pstmt.setString(2 , snumber);
pstmt.executeUpdate();
%>
<h2 align="center">修改成绩成功!将在5秒后返回登录界面</h2>
<% response.setHeader("Refresh" , "5;url=register.jsp"); %>
</body>
</html>
数据库建表代码:
use LCBCom
--s# , c# ,sname , score,age,sex,telephone,home
create table S
(
id int identity(1,1),
s# varchar(20) constraint PK_S_s# primary key,
c# varchar(20) ,
sname char(6) default '',
score int check(score<100 and score >0),
age int check(age<50 and age>0),
telephone char(20) default '',
home varchar(40) default ''
)
use LCBCom
alter table S
add sex char(1)
go -- 忘加了sex
use LCBCom
--s# , c# ,sname , score,age,sex,telephone,home
alter table S
add foreign key(c#) references T(c#)
on update cascade
on delete no action
go
--on 之后没格式没有{} , 直接写关键字,而且在创建外键之前必须已近存在外键
use LCBCom
--c#,cname,title,t#,tname
create table T
(
c# varchar(20) constraint PK_T_c# primary key,
cname char(10) ,
tname char(4) ,
t# varchar(20),
title char(6)
)
use LCBCom
insert into dbo.S(s# , c# , sname , score , age ,sex,telephone , home)
values ('201665748339' , '0010' ,'王佳 ',34 ,21 ,'W ' ,'18865673382' , '哈尔滨江北区学海街1006室')
go
use LCBCom
insert into T(c# ,cname ,tname ,t# , title)
values('0000' ,'javaWeb开发教程 ', '张娜' , '20160000' ,'教授')
go
选取部分源数据:
T表源数据示例:
c# cname tname t# title
0000 javaWeb开发教程 张娜 20160000 教授
0001 数据结构 严为民 20160001 副教授
0010 c语言程序设计 谭浩强 20160010 讲师
0011 python程序设计教程 林兴良 20160011 讲师
S表源数据示例:
s# c# sname score age sex telephone home
201662025056 0000 张三 78 20 M 18846791756 哈尔滨江北区学海街1006室
201662979907 0001 李四 88 19 W 18846782389 哈尔滨江北区学海街1006室
201666387629 0001 王五 89 19 M 18837893338 哈尔滨江北区学海街1006室
201665748339 0010 王佳 34 21 W 18865673382 哈尔滨江北区学海街1006室
最后,链接数据库用到的用户名是 sa 密码:123 可以自行按需求更改
更多推荐
所有评论(0)