原始工程下载地址:

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

修改后工程下载地址:

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

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

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

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

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>    <input type="submit" value="提交"></div>
52         </div>
53     </form>
54 </table>
55 </body>
56 </html>

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

  修改信息的过程如下:

    修改前:

      

java成绩管理系统论文总结 java学生成绩管理系统心得_学生成绩管理系统

      

java成绩管理系统论文总结 java学生成绩管理系统心得_学生成绩管理系统_02

 

     修改后:

       

java成绩管理系统论文总结 java学生成绩管理系统心得_改进_03

 

  接着,是向这个系统添加条件筛选功能,为了实现这个功能,我才用了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>

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

 

     

java成绩管理系统论文总结 java学生成绩管理系统心得_Javaweb_04

    查询结果:

    

java成绩管理系统论文总结 java学生成绩管理系统心得_改进_05

  

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

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