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> <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>
-
至此,条件筛选的修改就全部完成了,下面来看一下实际运行的效果

查询结果:

通过这次的修改,我更深入地学习了他人代码的长处,并实践了阅读他人代码的方法,阅读他人代码不是一件简单的事情,需要搞懂的地方有很多,比如代码最初编写时编写的思路,工程整体的结构以及核心代码的作用。
这次的修改使我受益匪浅,以后也将多多学习他人编写的优秀代码,并不断联系阅读他人代码的能力,是自身得到快速的进步!

浙公网安备 33010602011771号