基于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" %>
登录入口
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.*" %>
显示学生信息
<%! 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{
%>
<%
}
%>
你的信息如下: