Javaweb学生成绩管理系统修改心得

  原始工程下载地址:

链接:https://pan.baidu.com/s/1yycn5pQYw1M3WjtybC7N7g
提取码:fj6p

修改后工程下载地址:

链接:https://pan.baidu.com/s/15YFpJCJGW06ANgGOmv7KKg
提取码:64dn

  该工程完成了一个管理学生成绩信息的网页管理系统,使用了jsp以及servlet程序完成了该系统的前端和后端程序,在学生信息的管理上,采用了MySQL数据库进行数据信息的管理,但该工程仅仅只是完成了学生信息的增加和查询,并没有很好的实用价值,下面本人将对这一系统做出改进。

  但该系统有一个很好的优点,将与数据库的交互用一个类包装了起来,再通过javabean的成员函数对数据库操作函数进行调用,最后,在servlet中,通过对javabean实例成员的成员函数调用实现对数据库的修改,本人的修改将会建立在这一层次结构之上。

  首先是完善系统的基本功能,在现有的基础上添加修改的功能。

  •   编写修改信息的servlet
    •  1 package Servlet;
       2 
       3 import Bean.Student;
       4 
       5 import javax.servlet.ServletException;
       6 import javax.servlet.http.HttpServlet;
       7 import javax.servlet.http.HttpServletRequest;
       8 import javax.servlet.http.HttpServletResponse;
       9 import java.io.IOException;
      10 import java.sql.SQLException;
      11 
      12 public class ModifyStudentServlet extends HttpServlet {
      13     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      14         request.setCharacterEncoding("utf-8");
      15         //获取新的数据
      16         String originalID = request.getParameter("originalID");
      17         Integer ID = Integer.parseInt(request.getParameter("ID"));
      18         String Name = request.getParameter("Name");
      19         String Class = request.getParameter("Class");
      20         String Gender = request.getParameter("Gender");
      21         String Course = request.getParameter("Course");
      22         double Grade = Double.parseDouble(request.getParameter("Grade"));
      23 
      24         //向数据库中添加数据
      25         Student student = new Student(ID, Name, Gender, Class, Course, Grade);
      26         try {
      27             student.modifyStudentInformation(originalID);
      28         } catch (SQLException throwables) {
      29             throwables.printStackTrace();
      30         }
      31     }
      32 
      33     @Override
      34     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      35         req.setCharacterEncoding("utf-8");
      36         String originalID = req.getParameter("originalID");
      37         String name = req.getParameter("Name");
      38         String gender = req.getParameter("Gender");
      39         String Class = req.getParameter("Class");
      40         String course = req.getParameter("Course");
      41         String grade = req.getParameter("Grade");
      42         Student student = new Student(Integer.parseInt(originalID), name, gender, Class, course, Double.parseDouble(grade));
      43         req.setAttribute("student", student);
      44         req.getRequestDispatcher("modify.jsp").forward(req, resp);
      45     }
      46 }
  • 做好与数据库的沟通
    • 在MySQLUtils类中添加函数,通过Map获取信息,并将数据库中的信息进行修改
    •  1 static public void updateInformation(String Schema, String primaryKey, String primaryValue, Map<String, String> valueMap) throws SQLException {
       2         String valueList = "";
       3         for(Map.Entry<String, String> entry : valueMap.entrySet()){
       4             valueList += String.format(entry.getKey() + "='" + entry.getValue() + "',");
       5         }
       6         valueList = valueList.substring(0, valueList.length() - 1);
       7         String sql = "UPDATE " + "information" + " SET " + valueList + " WHERE " + primaryKey + " = " + primaryValue;
       8         Statement statement = ConnectSQL(Schema);
       9         statement.execute(sql);
      10     }
    • 在Student这一javabean中添加函数,该函数将会将Student类实例中保存的信息整合,并发送至MySQLUtils.updateInformation函数中

    •  1 public void modifyStudentInformation(String originalPrimaryValue) throws SQLException {
       2         Map<String, String> valueMap = new HashMap<>();
       3         valueMap.put("id", String.valueOf(this.ID));
       4         valueMap.put("name", this.Name);
       5         valueMap.put("gender", this.Gender);
       6         valueMap.put("classes", this.Classes);
       7         valueMap.put("course", this.Course);
       8         valueMap.put("grade", String.valueOf(this.Grade));
       9         MySQLUtils.updateInformation("student", "id", originalPrimaryValue, valueMap);
      10     }
  • 编写jsp页面
  •  1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
     2 <!DOCTYPE html>
     3 <html>
     4 <head>
     5     <title>修改学生信息</title>
     6     <style>
     7         .deng{
     8             width:300px;
     9             height: 400px;
    10             background-color: #d9e3e8;
    11             margin: 200px auto;
    12             border-radius: 10px;
    13             border: 1px #000000;
    14         }
    15         .ding{
    16             width: 100%;
    17             height: 50px;
    18             background-color: #093f63;
    19             float:left;
    20             border-radius: 10px 10px 0px 0px;
    21             color: white;
    22             text-align: center;
    23             line-height: 50px;
    24         }
    25         .ref{
    26             width: 280px;
    27             height: 40px;
    28             margin-left: 10px;
    29             margin-top: 5px;
    30             float: left;
    31             text-align: center;
    32             line-height: 40px;
    33         }
    34     </style>
    35 </head>
    36 <body bgcolor="#e6e6fa">
    37 
    38 <table align="center" border="0px" cellpadding="10px" cellspacing="10px">
    39 
    40 
    41     <form action="${pageContext.request.contextPath}/modifyStudent" method="post" onsubmit="return check()">
    42         <div class="deng">
    43             <input type="hidden" value="${requestScope.student.ID}" name="originalID">
    44             <div class="ding">学生信息填写</div>
    45             <div class="ref">学号:<input type="text" name="ID" id="ID" placeholder="${requestScope.student.ID}"></div>
    46             <div class="ref">姓名:<input type="text" name="Name" id="Name" placeholder="${requestScope.student.name}"></div>
    47             <div class="ref">性别:<input type="radio" name="Gender" value="男"><input type="radio" name="Gender" value="女"></div>
    48             <div class="ref">班级:<input type="text" name="Class" id="Class" placeholder="${requestScope.student.classes}"></div>
    49             <div class="ref">所修课程:<input type="text" name="Course" id="Course" placeholder="${requestScope.student.course}"></div>
    50             <div class="ref">课程成绩:<input type="text" name="Grade" id="Grade" placeholder="${requestScope.student.grade}"></div>
    51             <div class="ref"><a href="manager_left.jsp" style="text-decoration: none">返回菜单</a>&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="提交"></div>
    52         </div>
    53     </form>
    54 </table>
    55 </body>
    56 </html>

    至此,修改功能已完成添加。

  修改信息的过程如下:

    修改前:

      

       

     修改后:

       

 

  接着,是向这个系统添加条件筛选功能,为了实现这个功能,我才用了select标签,这是一个html下拉菜单,可以选择要筛选的条件

  • 添加比较枚举类型,此枚举类型用于定义大于、小于和等于三种比较方式
    • 1 public enum Condition {
      2     LessThan,
      3     MoreThan,
      4     Equal
      5 }
  • 向MySQLUtils类中添加筛选查找函数,该函数主要用于查询符合条件的所有项
    •  1 static public ResultSet conditionScreening(String Schema, String key, String value, Condition condition) throws SQLException {
       2         String sql = "SELECT * FROM " + "information" + " WHERE " + key;
       3         if(condition.equals(Condition.LessThan)){
       4             sql += "<'" + value + "'";
       5         } else if(condition.equals(Condition.MoreThan)){
       6             sql += ">'" + value + "'";
       7         } else if(condition.equals(Condition.Equal)){
       8             sql += "='" + value + "'";
       9         }
      10         System.out.println(sql);
      11         Statement statement = ConnectSQL(Schema);
      12         return statement.executeQuery(sql);
      13     }
  • 修改jsp页面
    •  1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
       2 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
       3 <!DOCTYPE html>
       4 <html>
       5 <head>
       6     <meta charset="UTF-8">
       7     <title >查询结果</title>
       8     <style>
       9         .deng{
      10             width:600px;
      11             height: 800px;
      12             background-color: #d9e3e8;
      13             margin: 100px auto;
      14             border-radius: 10px;
      15             border: 1px #000000;
      16         }
      17         .ding{
      18             width: 100%;
      19             height: 50px;
      20             background-color: #093f63;
      21             float:left;
      22             border-radius: 10px 10px 0px 0px;
      23             color: white;
      24             text-align: center;
      25             line-height: 50px;
      26         }
      27     </style>
      28 </head>
      29 <body bgcolor="#e6e6fa">
      30 <div class="deng">
      31     <div class="ding">学生信息列表
      32         <tr>
      33             <td><a href="manager_left.jsp" style="color: white">返回菜单</a></td>
      34         </tr>
      35 
      36     </div>
      37     <table cellpadding="10px">
      38         <tr>
      39             <td>学生学号</td>
      40             <td>学生姓名</td>
      41             <td>学生性别</td>
      42             <td>学生所在班级</td>
      43             <td>所选课程</td>
      44             <td>课程成绩</td>
      45         </tr>
      46 
      47         <c:forEach var="item" items="${requestScope.studentList}">
      48             <tr>
      49                 <td>${item.ID}</td>
      50                 <td>${item.name}</td>
      51                 <td>${item.gender}</td>
      52                 <td>${item.classes}</td>
      53                 <td>${item.course}</td>
      54                 <td>${item.grade}</td>
      55                 <td><a href="${pageContext.request.contextPath}/modifyStudent?originalID=${item.ID}&Name=${item.name}&Gender=${item.gender}&Class=${item.classes}&Course=${item.course}&Grade=${item.grade}" methods="get">修改</a></td>>
      56             </tr>
      57         </c:forEach>
      58     </table>
      59 </div>
      60 </body>
      61 </html>

  至此,条件筛选的修改就全部完成了,下面来看一下实际运行的效果

 

     

    查询结果:

    

  

  通过这次的修改,我更深入地学习了他人代码的长处,并实践了阅读他人代码的方法,阅读他人代码不是一件简单的事情,需要搞懂的地方有很多,比如代码最初编写时编写的思路,工程整体的结构以及核心代码的作用。

  这次的修改使我受益匪浅,以后也将多多学习他人编写的优秀代码,并不断联系阅读他人代码的能力,是自身得到快速的进步!

 

posted @ 2021-03-09 16:35  TedGillXD  阅读(538)  评论(0)    收藏  举报