基于JSP的学生成绩管理系统

基于JSP的学生成绩管理系统


注:数据库里面的一些数据会有调整,因为原数据中涉及到一些学生姓名,学号,教师姓名等信息,结果验证里面的截图是在原来61份信息的基础上,列举了7位同学进行测试验证。
以下是本篇文章正文内容,下面案例仅供参考

一、设计方案

   系统要求用户输入正确的账号和密码才能进入系统。系统提供用户管理权限,可根据角色进行权限分配,能根据实施情况,增加或者删除成绩,同时根据现有情况对学生成绩进行分析。
   管理员可以对数据库的所有功能模块进行写和读权限的操作,教师可以对数据库部分功能模块进行写和读权限的操作,对个人信息档案可以进行查看,学生只能对成绩进行查看和个人信息的查看。

总设计框图

二、功能设计

2.1功能简述

   基于sql的学生成绩管理系统,当tomcat启动时会默认在浏览器打开用户登录界面,当用户名和密码输入后选择相应的用户身份,该信息数据库中存在,会进入黄交院学生成绩管理界面,进行相关功能模块的操作。当前是管理员admin身份时,可以对所有的信息进行操作。
   当前是教师身份时,不能对班级信息,学生信息,个人信息进行修改,但是对学生成绩有读和写的权限,同时对不能修改的功能模块有读的权限。当前是学生身份时,只能对个人成绩和信息有读的权限而不能进行修改。针对不同的身份,登录后显示的界面不同,操作也不同。从而实现管理员的权限高于教师的权限,教师的权限高于学生的权限。

2.2管理员模块设计

	管理员可以对学生的信息进行添加,修改,删除,对教师的个人信息也同样可以进行添加,修改,删除。对学生班级进行管理,使学生信息归类整齐,对课程安排如学时,科目,上课地点,授课教师进行安排部署,对学生的成绩,可以根据科目查询选修该门课的学生成绩信息,也可以根据分数段查询及格,不及格,优秀成绩的学生信息等,管理员可以在系统管理中设置多个系统账号便于对信息的管理,也可以修改当前登录的密码,当管理员对信息管理操作结束后,点击注销退出模块退出系统,页面返回到用户登录界面。

功能模块按钮布局设计:
管理员权限

<LI class="navbg"><A href="<%=path %>/admin/xuesheng_list.jsp">学生管理</A></LI>
 <LI class="navbg"><A href="<%=path %>/admin/jiaoshi_list.jsp">教师管理</A></LI>
 <LI class="navbg"><A href="<%=path %>/admin/banji_list.jsp">班级管理</A></LI>
 <LI class="navbg"><A href="<%=path %>/admin/kecheng_list.jsp">课程管理</A></LI>
 <LI class="navbg"><A href="<%=path %>/admin/chengji_list.jsp">成绩管理</A></LI>
 <LI class="navbg"><A href="<%=path %>/admin/adminlist.jsp">系统管理</A></LI>

2.3教师模块设计

	教师可以对学生的信息进行,班级管理和个人档案进行查看,对学生的成绩,可以根据科目查询选修该门课的学生成绩信息,也可以根据分数段查询及格,不及格,优秀成绩的学生信息等,同样教师也可以修改当前登录的密码,当教师操作完成后,点击注销退出按钮退出当前界面,返回用户登录界面。

功能模块按钮布局设计:
教师模块

<LI class="navbg"><A href="<%=path %>/jiaoshi/chengji_list.jsp">成绩管理</A></LI>
<LI class="navbg"><A href="<%=path %>/jiaoshi/xuesheng_list.jsp">学生信息</A></LI>
<LI class="navbg"><A href="<%=path %>/jiaoshi/banji_list.jsp">班级信息</A></LI>
<LI class="navbg"><A href="<%=path %>/jiaoshi/jiaoshi_show.jsp">个人档案</A></LI>
<LI class="navbg"><A href="<%=path %>/jiaoshi/modifypwd.jsp">修改密码</A></LI>
<LI class="navbg"><A href="<%=path %>/RemoveServlet?mark=admin">注销退出</A></LI>

2.4学生模块设计

	学生只能查看当前自己考试的成绩,个人档案的信息,修改当前登录的密码,查询完成绩后点击注销退出按钮退出学生界面。

功能模块按钮布局设计:
学生设计

<LI class="navbg"><A href="<%=path %>/xuesheng/tongji.jsp">成绩查看</A></LI>
<LI class="navbg"><A href="<%=path %>/xuesheng/xuesheng_show.jsp">个人档案</A></LI>
<LI class="navbg"><A href="<%=path %>/xuesheng/modifypwd.jsp">修改密码</A></LI>
<LI class="navbg"><A href="<%=path %>/RemoveServlet?mark=admin">注销退出</A></LI>

三、部分程序代码

学生成绩管理部分代码:
<%@ page language="java" import="java.util.*,util.*" pageEncoding="gb2312"%>
<jsp:useBean id="array" scope="page" class="bean.AllBean"/>
<jsp:include flush="true" page="/admin/top.jsp"/>
<%
String path = request.getContextPath();
StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%
ArrayList adminlogin = (ArrayList)session.getAttribute("adminlogin");
if(adminlogin == null || adminlogin.size() == 0){
    
    
   %>
<script>alert('您还没有登录!');window.navigate('<%=path %>/index.jsp');</script>
<%
}else{
    
    
String mark = request.getParameter("mark");
String id = request.getParameter("id");
ArrayList client = array.getChengji(id);
String str = "";
if(mark != null && mark.equals("add")){
    
    
   str = "添加";
}
if(mark != null && mark.equals("update")){
    
    
   str = "修改";
}
 %>
<script language="JavaScript">
function chick()
{
    
    
   var pattern = /^[a-zA-Z0-9]+$/;
   var ints = /^[0-9]+$/;
varemails=/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{
    
    2,3}$/;
   if (document.form1.xuesheng.value == "" ) 
   {
    
    
      alert("请选择学生!");
      document.form1.xuesheng.focus();
      return false;
   }
   if (document.form1.kemu.value == "" ) 
   {
    
    
      alert("请选择考试科目!");
      document.form1.kemu.focus();
      return false;
   }
   if (document.form1.shijian.value == "" ) 
   {
    
    
      alert("请输入考试时间!");
      document.form1.shijian.focus();
      return false;
   }
   if (!ints.test(document.form1.fenshu.value))  
   {
    
    
      alert("考试成绩只能是整数!");
      document.form1.fenshu.focus();
      return false;
   }
}
</script>
</head>
<%
String message = (String)request.getAttribute("message");
   if(message == null){
    
    
      message = "";
   }
   if (!message.trim().equals("")){
    
    
      out.println("<script language='javascript'>");
      out.println("alert('"+message+"');");
      out.println("</script>");
   }
   request.removeAttribute("message");
%>
<div align="center">
<body>
<table width="1080" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td class="border_left border_right border_bottom" height="400" valign="top" align="center"><table border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td height="5"></td>
        </tr>
      </table>
<formmethod="post"name="form1"action="<%=path %>/ChengjiServlet?mark=<%=mark %>&id=<%=id %>"  onSubmit="return chick()">
            <table width="50%" class="border">
          <tr>
            <td height="25" colspan="2" align="center" bgcolor="#DEF1E3" class="tabletd2">成绩<%=str %></td>
        </tr>
              <tr>
                <td height="25" align="right" class="tabletd1">学生姓名:</td>
                <td height="25" class="tabletd1">&nbsp;<select name="xuesheng">
                <option value="">--请选择学生--</option>
                <%
                ArrayList xuesheng = array.getXuesheng();
                for(int i = 0;i < xuesheng.size();i++){
    
    
                   ArrayList alRow = (ArrayList)xuesheng.get(i);
                   if(client == null || client.size() == 0){
    
    
                 %>
                <option value="<%=alRow.get(0) %>"><%=alRow.get(6) %></option>
                <%}else{
    
     %>
<optionvalue="<%=alRow.get(0)%>"<%=client.get(1).equals(alRow.get(0))?"selected":"" %>><%=alRow.get(5) %></option>
                <%}} %>
                </select></td>
              </tr>
              <tr>
                <td height="25" align="right" class="tabletd2">考试科目:</td>
                <td height="25" class="tabletd1">&nbsp;<select name="kemu">
                <option value="">--请选择考试科目--</option>
                <%
                ArrayList kecheng = array.getKecheng();
                for(int i = 0;i < kecheng.size();i++){
    
    
                   ArrayList alRow = (ArrayList)kecheng.get(i);
                   if(client == null || client.size() == 0){
    
    
                 %>
                <option value="<%=alRow.get(0) %>"><%=alRow.get(1) %></option>
                <%}else{
    
     %>
                <optionvalue="<%=alRow.get(0)%>" <%=client.get(2).equals(alRow.get(0))?"selected":"" %>><%=alRow.get(1) %></option>
                <%}} %>
                </select></td>
              </tr>
              <tr>
                <td height="25" align="right" class="tabletd1">考试时间:</td>
                <td height="25" class="tabletd1">&nbsp;
                <%
                if(mark.equals("add")){
    
    
                 %>
                 <input type="text" name="shijian" class="Wdate" id="d4321" onFocus="WdatePicker({dateFmt:'yyyy-MM-dd'})">
                <%
                }else{
    
    
                 %>
                 <input type="text" name="shijian" class="Wdate" id="d4321" onFocus="WdatePicker({dateFmt:'yyyy-MM-dd'})" value="<%=client.get(3) %>">
                 <%} %>
                </td>
              </tr>
              <tr>
                <td height="25" align="right" class="tabletd2">分数:</td>
                <td height="25" class="tabletd2">&nbsp;<input type="text" name="fenshu" value="<%=client == null || client.size() == 0?"":client.get(4) %>"></td>
              </tr>
           <tr>
               <td height="25" colspan="2" align="center" class="tabletd1"><input type="submit" value="提交" class="input"></td>
           </tr>
            </table>
        </form></td>
  </tr>
</table>
</body> 
</div>
</html>
<%} %>

<%@ page language="java" import="java.util.*,util.*" pageEncoding="gb2312"%>
<jsp:useBean id="array" scope="page" class="bean.AllBean"/>
<jsp:include flush="true" page="/admin/top.jsp"/>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%
ArrayList adminlogin = (ArrayList)session.getAttribute("adminlogin");
if(adminlogin == null || adminlogin.size() == 0){
    
    
   %>
<script>alert('您还没有登录!');window.navigate('<%=path %>/index.jsp');</script>
<%
}else{
    
    
 %>
</head>
<%
String message = (String)request.getAttribute("message");
   if(message == null){
    
    
      message = "";
   }
   if (!message.trim().equals("")){
    
    
      out.println("<script language='javascript'>");
      out.println("alert('"+message+"');");
      out.println("</script>");
   }
   request.removeAttribute("message");
%>
<div align="center">
<body>
<table width="1080" border="0" cellspacing="0" cellpadding="0" >
  <tr>
    <td class= height="400" valign="top" align="center"><table border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td height="5"></td>
        </tr>
      </table>
      <form name="form1" method="post" action="<%=path %>/admin/chengji_list.jsp">
        <table border="0" cellspacing="1" cellpadding="5">
          <tr>
            <td bgcolor="#CCCCCC">按考试科目查询</td>
            <td bgcolor="#CCCCCC"><select name="kaoshikemu">
                <option value="">--请选择考试科目--</option>
                <%
                ArrayList kechengs = array.getKecheng();
                for(int i = 0;i < kechengs.size();i++){
    
    
                   ArrayList alRow = (ArrayList)kechengs.get(i);
                 %>
                <option value="<%=alRow.get(0) %>"><%=alRow.get(1) %></option>
                <%} %>
              </select></td>
            <td bgcolor="#CCCCCC"><input type="submit" value="查询"></td>
          </tr><tr>
            <td bgcolor="#CCCCCC">按考试分数查询</td>
            <td bgcolor="#CCCCCC"><select name="kaoshifenshu">
                <option value="">--请选择考试分数--</option>
                <option value="1">60分以下</option>
                <option value="2">60-70</option>
                <option value="3">71-80</option>
                <option value="4">81-90</option>
                <option value="5">91分以上</option>
              </select></td>
            <td bgcolor="#CCCCCC"><input type="submit" value="查询"></td>
          </tr>
        </table>
      </form>
      <table width="98%" border="0" cellspacing="0" cellpadding="0" bgcolor="#999999">
        <tr class="tabletop">
          <td height="25" colspan="12" align="center">成绩管理</td>
        </tr>
        <tr class="tablemenu">
          <td height="20" align="center">序号</td>
          <td height="20" align="center">学生姓名</td>
          <td height="20" align="center">考试科目</td>
          <td height="20" align="center">考试时间</td>
          <td height="20" align="center">分数</td>
          <td height="20" align="center"></td>
          <td height="20" align="center"></td>
        </tr>
        <%
          ArrayList client = array.getChengji();
          Validate v = new Validate();
          String kaoshikemu = v.getUnicode(request.getParameter("kaoshikemu"));
          Stringkaoshifenshu=v.getUnicode(request.getParameter("kaoshifenshu"));
          if(kaoshikemu != null && !kaoshikemu.equals("")){
    
    
           client = array.getChengjikemu(kaoshikemu);
          }
          if(kaoshifenshu != null && !kaoshifenshu.equals("")){
    
    
           String str = "";
           if(kaoshifenshu.equals("1")){
    
    
              str = "fenshu<60";
           }
           if(kaoshifenshu.equals("2")){
    
    
              str = "fenshu>=60 and fenshu<=70";
           }
           if(kaoshifenshu.equals("3")){
    
    
              str = "fenshu>70 and fenshu<=80";
           }
           if(kaoshifenshu.equals("4")){
    
    
              str = "fenshu>80 and fenshu<=90";
           }
           if(kaoshifenshu.equals("5")){
    
    
              str = "fenshu>90";
           }
           client = array.getChengjifenshu(str);
          }
          for(int i = 0;i < client.size();i++){
    
    
           ArrayList alRow = (ArrayList)client.get(i);
         ArrayList xuesheng = array.getXuesheng(alRow.get(1).toString());
         ArrayList kecheng = array.getKecheng(alRow.get(2).toString());
           %>
        <tr class="tabletd<%=i%2+1 %>">
          <td height="25" align="center"><%=i+1 %></td>
          <td height="25" align="center"><a title="点击查看详细信息" href="<%=path %>/admin/xuesheng_show.jsp?id=<%=xuesheng.get(0) %>"><%=xuesheng.get(5) %></a></td>
          <td height="25" align="center"><%=kecheng.get(1) %></td>
          <td height="25" align="center"><%=alRow.get(3) %></td>
          <td height="25" align="center"><%=alRow.get(4) %></td>
          <tdheight="25"align="center"><a href="<%=path %>/admin/tongji.jsp?xueshengid=<%=alRow.get(1) %>">个人成绩统计</a></td>
          <tdheight="25"align="center"><a href="<%=path %>/admin/chengji.jsp?mark=update&id=<%=alRow.get(0) %>">修改</a>&nbsp;&nbsp;<a href="<%=path %>/DelServlet?chengji=<%=alRow.get(0) %>">删除</a></td>
        </tr>
        <%} %>
        <tr class="tabletop">
          <tdheight="25"colspan="12"align="center"><a href="<%=path %>/admin/chengji.jsp?mark=add">添加成绩</a></td>
        </tr>
      </table></td>
  </tr>
</table>
</body>
</div>
</html>
<%} %>

四、结果验证

角色一:管理员

(1)登录界面

浏览器中输入http://localhost:8080/Test archive
在这里插入图片描述
(2)管理员登录

管理员有最高权限,用户名和密码以及身份选择正确后才可以登录成功,否则提示失败,无法进行登录。
在这里插入图片描述
(3)管理员菜单

教师菜单和学生菜单类似,只不过管理员拥有最高权限,相应的功能操作较多。
登录成功,默认会跳转到修改密码界面,修改后下次登录使用新密码,才能登录成功。
在这里插入图片描述
(4)学生管理

管理员可以对学生信息进行增删改查。
在这里插入图片描述
(5)教师管理

管理员可以对教师信息进行增删改查。在这里插入图片描述
(6)课程管理

管理员可以对课程信息进行增删改查。在这里插入图片描述
角色二:教师

(1)学生信息查询
在这里插入图片描述
(2)学生成绩查看在这里插入图片描述
(3)个人信息查看在这里插入图片描述
角色三:学生

(1)个人成绩查看
在这里插入图片描述
(2)个人信息查看在这里插入图片描述
基于jsp的学生成绩管理系统设计源程序代码及数据库
基于jsp的学生成绩管理系统流程图绘制

猜你喜欢

转载自blog.csdn.net/qq_45171581/article/details/123311625