学完java web后,期末期间用所学知识写了一个简单的学生管理系统,现在有空整理分享下。

注意:本文章仅供参考和学习,源码和数据库设计在文章的底部,点击展开然后往下翻就可以找到,其实数据库就六张表,很简单,可以看尾部第11项 数据实例表 自己写。导入报异常可能是导包的问题,BUG千千万,原因很多种,自己复制下eclipse报的错误报告,然后百度一下,基本能解决,因为我们现在遇到的错误,很多前人已经遇到并解决了,或者找身边的大佬帮忙看看。我只偶尔上线,做课程设计应急的话请直接点击链接下载,想学到东西的建议跟着文章自己写一写。

2020-05-17更新:好多人私信我要代码,我以为传到CSDN的盘上你们都能拿到的,但看见CSDN的积分要求越来越高,我就知道大伙搞不定了。我比较讨厌不劳而获,直接拿着项目跑结果的行为,但考虑的部分人在复现时确实存在着些许问题,可能是我博客写的不够好的原因吧,所以现在我重新上传至百度网盘,供大家下载,希望大家能在这基础上做一些改进,比如说数据库写的很烂,你们可以写一些视图、存储过程等,功能上也可以作进一步的优化,前端也可以做的更精致……但别问我技术问题,这个课设项目做完后我没有去维护,一些原因下,我也不想去改bug。

链接:https://pan.baidu.com/s/1xRonKzSeIuEK7JEn6rvhzA
提取码:4pgr
复制这段内容后打开百度网盘手机App,操作更方便哦

1.简述

编写该系统的目的是为了对学生的成绩进行信息化管理,降低教师管理的成本,提高工作效率。该系统有六张数据表:学生表、教师(管理员)表、成绩表、课程表、班级表、登录表。学生表和教师表用来存储系统用户;成绩表用来存储学生成绩;课程表用来储存课程信息;班级表用来存储班级信息;登录表用来存储登录信息。该系统使用了MVC设计模式,实现了权限管理、登录登出、自动登录、验证码,成绩的增加、删除、修改、查询等功能。数据库使用的是mysql8.0,数据库的版本不同,那么连接驱动和连接方式也有所不同。

2.流程图

2.1登录

2.2管理员界面

2.3学生界面

3.项目目录

3.1项目目录图

3.2项目目录结构

  1. Controller(控制器)包下存放的是负责转发请求,对请求进行处理的Servlet类。其中有AddScoreServlet.java(添加成绩)、AutoLoginFilter.java(自动登录)、CheckServlet.java(生成验证码)、DelScoreServlet.java(删除成绩)、ExitServlet.java(返回)、FindScoreServlet.java(查询成绩)、LoginServlet.java(登陆)、LogoutServlet.java(登出)、UpdScoreServlet.java(更改删除成绩)。
  2. Dao(数据访问)包下存放的是负责进行数据库访问的类。其中有AdministratorDao.java(管理员)、ClassesDao.java(班级)、CourseDao(课程)、GradeDao(成绩)、StudentDao(学生)、UserDao(登陆信息)。
  3. Model(模型)包下存放的是JavaBean类。其中包括Administrator.java(管理员)、Classes.java(班级)、Course(课程)、Grade(成绩)、Student(学生)、User(登陆信息)。
  4. Util(多用途)包下存放的是工具类。其中包括JDBCUtil.java(数据连接)。
  5. Jsp(动态网页)包下存放的是动态网页界面。其中包括AddScore.jsp(添加成绩界面)、Admin.jsp(管理员界面)、FindScore.jsp(查询成绩界面)、Foot.jsp(公用界面)、Login.jsp(登录界面)、Student.jsp(学生界面)、UpdDelScore.jsp(更改删除界面)。

3.3MVC模式

4.技术说明

4.1 权限管理

本系统的使用者分为两种:学生和管理员(教师)。权限管理分为数据权限、页面权限、功能权限。数据权限是控制用户看那些数据;页面权限是控制用户可以进入哪些页面;功能权限是控制用户可以使用哪些功能。这些权限的实现通过:EequesDispatch接口中的forward()进行请求转发技术、HttpServletResponse接口中的sendRedirect()进行重定向技术、HttpSession接口进行传参技术、EL表达式中隐式对象PageContest和SessionScope、JSTL中Core标签库的<c:if>和<c:choose>和<c:when>。每个JSP页面在进行动态加载时,都会先在标签中对session域的user.identity属性进行判断,没有登陆或没有相关权限的,则不提供该界面的操作权限,并提供登录链接。

4.2 登录登出

登录登出功能的实现主要运用了Session、Cookie技术。登录操作:当JSP的From表单提交相关的数据后,Servlet类会对提交的账号、密码、验证码、身份进行判断,通过对数据库中相关表单查询的得出结果。如果结果正确,则会将用户的状态user存入session域,接着发送一个用户的Cookie给浏览器,最后自动跳转到首页,否则会提示相应的错误提示。登出操作:首先是session对象无效,然后删除自动登录的Cookie,最后跳转至登陆界面。

4.3自动登录

自动登录技术的实现,运用了Cookie会话、Filter过滤器等技术。单一的使用Cookie也可以实现自动登录,但这样做会造成每个Servlet类中出现大量重复的校验程序,所以加入Filter对服务器的所有请求进行拦截。Filter会对用户的访问请求进行拦截,判断请求是否包含用户自动登录的Cookie。如果包含,则获取Cookie中的用户名、密码、身份,并验证用户名、密码、身份是否正确。如果正确,则将用户的登录信息封装到User对象存入Session域中,完成自动登录,完成自动登录

4.4验证码

验证码技术的实现,主要运用了Session技术。先产生4位随机数和图片,然后将图像以字节流的形式输出至客户端,最后把随机数存储至Session域中。

4.5成绩的增删改查

增、删、查、改的实现,主要运用了Java数据库连接技术。我使用的是MySQL。在与数据库连接前,需要安装MySQL的连接驱动jar包,然后注册数据库驱动,最后通过DiverManager获取数据库Connection连接对象。连接成功后再获取Statement状态对象,然后就可以使用Statement对象进行数据库的操作。对于查询操作的结果,运用ResultSet对象进行存储。

5Controller包下的类

5.1AddScoreServlet类

package Controller;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import Dao.AdministratorDao;
import Dao.ClassesDao;
import Dao.CourseDao;
import Dao.GradeDao;
import Dao.StudentDao;
import Model.Administrator;
import Model.Classes;
import Model.Course;
import Model.Grade;
import Model.Student;/*** Servlet implementation class AddScoreServlet*/
public class AddScoreServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=utf-8");String stuId = request.getParameter("stuId");String stuName = request.getParameter("stuName");String courseId = request.getParameter("courseId");String tcId = request.getParameter("tcId");String courseGrade = request.getParameter("courseGrade");String classId = request.getParameter("classId");try{StudentDao stuDao = new StudentDao();CourseDao courseDao = new CourseDao();AdministratorDao adminDao = new AdministratorDao();ClassesDao classesDao = new ClassesDao();GradeDao gradeDao = new GradeDao();Student stu = stuDao.find(stuId);Course course = courseDao.find(courseId);Administrator admin = adminDao.find(tcId);Classes classes = classesDao.find(classId);Grade grade = new Grade();grade.setStuId(stuId);grade.setStuName(stuName);grade.setCourseId(courseId);grade.setTcId(tcId);grade.setCourseGrade(courseGrade);grade.setClassId(classId);if (stu.getStuName() == null) {request.setAttribute("errerMsg", "姓名为空");request.getRequestDispatcher("/Jsp/AddScore.jsp").forward(request, response);}if(stu != null || stu.getStuName() == stuName){if(course != null){if(admin != null){if(classes != null){if(gradeDao.insert(grade)){response.sendRedirect(request.getContextPath() + "/Jsp/AddScore.jsp");}else{request.setAttribute("errerMsg", "添加失败");request.getRequestDispatcher("/Jsp/AddScore.jsp").forward(request, response);}}else{request.setAttribute("errerMsg", "没有该班级");request.getRequestDispatcher("/Jsp/AddScore.jsp").forward(request, response);}}else{request.setAttribute("errerMsg", "没有该教师ID");request.getRequestDispatcher("/Jsp/AddScore.jsp").forward(request, response);}} else {request.setAttribute("errerMsg", "没有该课程ID");request.getRequestDispatcher("/Jsp/AddScore.jsp").forward(request, response);}} } catch (Exception ee) {ee.printStackTrace();}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

5.2AutoLoginFilter类

package Controller;import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;import Dao.AdministratorDao;
import Dao.StudentDao;
import Model.Administrator;
import Model.Student;
import Model.User;/*** Servlet Filter implementation class AutoLoginFilter*/
public class AutoLoginFilter implements Filter {/*** @see Filter#destroy()*/public void destroy() {// TODO Auto-generated method stub}/*** @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)*/public void doFilter(ServletRequest req, ServletResponse response,FilterChain chain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) req;//获取一个名为autologin的cookieCookie[] cookies = request.getCookies();String autologin = null;for (int i=0; cookies != null && i<cookies.length; i++){if("autologin".equals(cookies[i].getName())){//找到了指定的cookieautologin = cookies[i].getValue();break;}}if(autologin != null){//做自动登陆System.out.println("进入过滤器。");String [] parts = autologin.split("-");String username = parts[0];String password = parts[1];String num = parts[2];User user = new User();int flag = 0;if(num == "1"){AdministratorDao adminDao = new AdministratorDao();Administrator admin = adminDao.find(username);if(admin != null) {if (admin.getTcPassword().equals(password)){flag = 1;user.setIdentity("admin");}}} else {StudentDao stuDao = new StudentDao();Student stu = stuDao.find(username);if (stu != null){if (stu.getStuPassword().equals(password)){flag = 1;user.setIdentity("student");}}}//检查用户名和密码if (flag == 1 ){//登陆成功,将用户状态user对象存入session域user.setUsername(username);user.setPassword(password);request.getSession().setAttribute("user", user);}}//放行chain.doFilter(request, response);}/*** @see Filter#init(FilterConfig)*/public void init(FilterConfig fConfig) throws ServletException {// TODO Auto-generated method stub}}

5.3CheckServlet类

package Controller;import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.*;/*** Servlet implementation class CheckServlet*/
public class CheckServlet extends HttpServlet {private static final long serialVersionUID = 1L;private static int WIDTH = 60;private static int HEIGHT = 20;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session = request.getSession();response.setContentType("image/jpeg");ServletOutputStream sos = response.getOutputStream();//设置浏览器不要缓存图片response.setHeader("Pragma", "No-cache");response.setHeader("Cache-Control", "no-cache");response.setDateHeader("Expires", 0);//创建内存图像并获得其图形上下文BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);Graphics g = image.getGraphics();//产生随机的认证码char[] rands = generateCheckCode();//产生图片drawBackground(g);drawRands(g, rands);//结束图像的绘制过程,完成图像g.dispose();//将图像输出到客户端ByteArrayOutputStream bos = new ByteArrayOutputStream();ImageIO.write(image, "JPEG", bos);byte[] buf = bos.toByteArray();response.setContentLength(buf.length);//下面语句也可写成:bos.writeTo(sos);sos.write(buf);bos.close();sos.close();//将当前验证码存入到Session中session.setAttribute("check_code", new String(rands));//直接使用下面的代码将有问题,session对象在提交响应前获取
//      request.getSession().setAttribute("check_code", new String(rands));}private void drawRands(Graphics g, char[] rands) {g.setColor(Color.BLACK);g.setFont(new Font(null, Font.ITALIC|Font.BOLD, 18));//在不同的高度上输出验证码的每个字符g.drawString("" + rands[0], 1, 17);g.drawString("" + rands[1], 16, 15);g.drawString("" + rands[2], 31, 18);g.drawString("" + rands[3], 46, 16);System.out.println(rands);}private void drawBackground(Graphics g) {//画背景g.setColor(new Color(0xDCDCDC));g.fillRect(0, 0, WIDTH, HEIGHT);//随机产生120个干扰点for (int i=0; i<120; i++){int x = (int)(Math.random() * WIDTH);int y = (int)(Math.random() * HEIGHT);int red = (int)(Math.random() * 255);int green = (int)(Math.random() * 255);int blue= (int)(Math.random() * 255);g.setColor(new Color(red, green, blue));g.drawOval(x, y, 1, 0);}}//生成一个4字符的验证码private char[] generateCheckCode() {//定义验证码的字符表String chars = "0123456789zxcvbnmasdfghjklqwertyuiop";char [] rands = new char[4];for(int i=0; i<4; i++){int rand = (int)(Math.random() * 36);rands[i] = chars.charAt(rand);}return rands;}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

5.4DelScoreServlet类

package Controller;import java.io.IOException;
import java.util.ArrayList;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import Dao.GradeDao;
import Model.Grade;/*** Servlet implementation class DelScoreServlet*/
public class DelScoreServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=utf-8");String stuId = request.getParameter("stuId");String stuName = request.getParameter("stuName");String courseId = request.getParameter("courseId");String tcId = request.getParameter("tcId");String classId = request.getParameter("classId");String grade = request.getParameter("grade");Grade grades = new Grade();grades.setStuId(stuId);grades.setStuName(stuName);grades.setCourseId(courseId);grades.setTcId(tcId);grades.setClassId(classId);grades.setCourseGrade(grade);HttpSession session = request.getSession();ArrayList<Grade> list = (ArrayList<Grade>) session.getAttribute("grade");try {GradeDao gradeDao = new GradeDao();if (gradeDao.delete(grades)) {for(int j=0;j<list.size();j++){if(list.get(j) == null){list.remove(j);}if(list.get(j)!=null && list.get(j).getStuId().equals(stuId)&& list.get(j).getCourseId().equals(courseId)&& list.get(j).getStuName().equals(stuName)&& list.get(j).getTcId().equals(tcId)&& list.get(j).getCourseGrade().equals(grade)&& list.get(j).getClassId().equals(classId)){list.remove(j);break;}}response.sendRedirect(request.getContextPath() + "/Jsp/UpdDelScore.jsp");} else {request.setAttribute("errerMsg", "删除失败");request.getRequestDispatcher("/Jsp/UpdDelScore.jsp").forward(request, response);}} catch (Exception ee) {ee.printStackTrace();}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

5.5ExitServlet类

package Controller;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import Model.User;/*** Servlet implementation class ExitServlet*/
public class ExitServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setContentType("text/html; charset=utf-8");HttpSession session = request.getSession();User user = (User)session.getAttribute("user");System.out.println(user.getIdentity());if(user.getIdentity().equals("student")){session.removeAttribute("grade");response.sendRedirect(request.getContextPath() + "/Jsp/Student.jsp");}else{session.removeAttribute("grade");response.sendRedirect(request.getContextPath() + "/Jsp/Admin.jsp");}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

5.6FindScoreServlet类

package Controller;import java.io.IOException;
import java.util.ArrayList;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import Dao.GradeDao;
import Dao.StudentDao;
import Model.Student;
import Model.User;
import Model.Grade;/*** Servlet implementation class FindScoreServlet*/
public class FindScoreServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");HttpSession session = request.getSession();User users = (User)request.getSession().getAttribute("user");  String id = null;if (users.getIdentity() == "admin") {id = request.getParameter("id");} else if (users.getIdentity() == "student") {id = users.getUsername();}String func = request.getParameter("func");try {StudentDao stuDao = new StudentDao();Student student = stuDao.find(id);if(student != null){try {GradeDao gradeDao = new GradeDao();ArrayList<Grade> list = (ArrayList<Grade>) gradeDao.find(id);session.setAttribute("grade", list);if(func.equals("show")){response.sendRedirect(request.getContextPath() + "/Jsp/FindScore.jsp");}else{response.sendRedirect(request.getContextPath() + "/Jsp/UpdDelScore.jsp");}} catch(Exception ee) {ee.printStackTrace();}}else{request.setAttribute("errerMsg", "没有该学生");if(func.equals("show")){request.getRequestDispatcher("/Jsp/FindScore.jsp").forward(request, response);}else{request.getRequestDispatcher("/Jsp/UpdDelScore.jsp").forward(request, response);}}} catch (Exception ee) {ee.printStackTrace();}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

5.7LoginServlet类

package Controller;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import Dao.AdministratorDao;
import Dao.StudentDao;
import Dao.UserDao;
import Model.Administrator;
import Model.Student;
import Model.User;/*** Servlet implementation class LoginServlet*/
public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");String username = request.getParameter("username");String password = request.getParameter("password");String identity = request.getParameter("identity");String autoLogin = request.getParameter("autologin");String checkCode = request.getParameter("check_code");String savedCode = (String) request.getSession().getAttribute("check_code");System.out.println(username + " " + password + " " + checkCode + " "+ savedCode + " " + identity);if(username != null && password != null){System.out.println("账号密码不为空");//账号密码不为空if(checkCode.equals(savedCode)) {//验证码正确System.out.println("验证码正确");if(identity !=null) {if(identity.equals("admin")){       //教师try{System.out.println("进入教师");AdministratorDao adminDao = new AdministratorDao();Administrator admin = adminDao.find(username); if (admin != null){if (admin.getTcPassword().equals(password)) {System.out.println("ok");function1(username, password, autoLogin, 1, request, response);}} else {request.setAttribute("errerMsg", "没有该教师");request.getRequestDispatcher("/Jsp/Login.jsp").forward(request, response);}} catch (Exception ee) {ee.printStackTrace();}} else if (identity.equals("student")){         //学生try{System.out.println("进入学生");StudentDao stuDao = new StudentDao();Student student = stuDao.find(username);if (student != null) {if (student.getStuPassword().equals(password)){System.out.println("ok");function1(username, password, autoLogin, 2, request, response);    }} else {request.setAttribute("errerMsg", "没有该学生");request.getRequestDispatcher("/Jsp/Login.jsp").forward(request, response);}} catch (Exception ee) {ee.printStackTrace();}}} else {request.setAttribute("errerMsg", "身份为空");request.getRequestDispatcher("/Jsp/Login.jsp").forward(request, response);}} else {//验证不正确request.setAttribute("errerMsg", "验证码错误");request.getRequestDispatcher("/Jsp/Login.jsp").forward(request, response);}} else {//账号或密码为空request.setAttribute("errerMsg", "用户名或密码不能为空");request.getRequestDispatcher("/Jsp/Login.jsp").forward(request, response);}}private void function1(String username, String password, String autoLogin, int num,HttpServletRequest request, HttpServletResponse response) throws IOException{//将用户状态user对象存入session域User user = new User();user.setUsername(username);user.setPassword(password);if (num == 1) {user.setIdentity("admin");} else if (num ==2) {user.setIdentity("student");}request.getSession().setAttribute("user", user);//登陆记录UserDao userDao = new UserDao();userDao.insert(user);//发送自动登陆的cookieif(autoLogin != null){//注意cookie中的密码要加密if(num == 1){Cookie cookie = new Cookie("autologin", username + "-" + password + "-" + "1");cookie.setMaxAge(Integer.parseInt(autoLogin));cookie.setPath(request.getContextPath());response.addCookie(cookie);}else if (num == 2){Cookie cookie = new Cookie("autologin", username + "-" + password + "-" + "2");cookie.setMaxAge(Integer.parseInt(autoLogin));cookie.setPath(request.getContextPath());response.addCookie(cookie);}}if (num == 1) {          //教师//跳转至首页response.sendRedirect(request.getContextPath() + "/Jsp/Admin.jsp");} else if (num == 2){    //学生//跳转至首页response.sendRedirect(request.getContextPath() + "/Jsp/Student.jsp");}}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

5.8LogoutServlet类

package Controller;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class LogoutServlet*/
public class LogoutServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//用户注销request.getSession().invalidate();//从客户端删除自动登陆的cookieCookie cookie = new Cookie("autologin", "msg");cookie.setPath(request.getContextPath());cookie.setMaxAge(0);response.addCookie(cookie);response.sendRedirect(request.getContextPath() + "/Jsp/Login.jsp");}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

5.9UpdScoreServlet类

package Controller;import java.io.IOException;
import java.util.ArrayList;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import Dao.GradeDao;
import Model.Grade;/*** Servlet implementation class UpdScoreServlet*/
public class UpdScoreServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charcet=utf-8");String stuId = request.getParameter("stuId");String stuName = request.getParameter("stuName");String courseId = request.getParameter("courseId");String tcId = request.getParameter("tcId");String classId = request.getParameter("classId");String grade = request.getParameter("grade");Grade grades = new Grade();grades.setStuId(stuId);grades.setStuName(stuName);grades.setCourseId(courseId);grades.setTcId(tcId);grades.setClassId(classId);grades.setCourseGrade(grade);HttpSession session = request.getSession();try{GradeDao gradeDao = new GradeDao();if (gradeDao.update(grades)) {ArrayList<Grade> list = (ArrayList<Grade>) gradeDao.find(stuId);session.setAttribute("grade", list);response.sendRedirect(request.getContextPath() + "/Jsp/UpdDelScore.jsp");} else {request.setAttribute("errerMsg", "更新失败");request.getRequestDispatcher("/Jsp/UpdDelScore.jsp").forward(request, response);}} catch(Exception ee) {ee.printStackTrace();}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

6.Dao包下的类

6.1AdministratorDao类

package Dao;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;import Model.Administrator;
import Util.JDBCUtils;public class AdministratorDao {Connection conn = null;Statement stmt = null;ResultSet rs = null;//添加管理员操作public boolean insert(Administrator admin){try {conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "insert into administrator (tcId, tcName, tcClassId, tcSex, tcPassword) "+ "values('"+ admin.getTcId()+ "','"+ admin.getTcName()+ "','"+ admin.getTcClassId()+ "','"+ admin.getTcSex()+ "','"+ admin.getTcPassword()+ "')";System.out.println("添加SQL语句为:" + sql);int num = stmt.executeUpdate(sql);if (num > 0){return true;}return false;} catch (Exception ee) {ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return false;}//查询所有的Administrator对象public ArrayList<Administrator> findAll(){ArrayList<Administrator> list = new ArrayList<Administrator>();try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "select * from administrator";System.out.println("查询所有的SQL语句:" + sql);rs = stmt.executeQuery(sql);while (rs.next()) {Administrator admin = new Administrator();admin.setTcId(rs.getString("tcId"));admin.setTcName(rs.getString("tcName"));admin.setTcSex(rs.getString("tcSex"));admin.setTcClassId(rs.getString("tcClassId"));admin.setTcPassword(rs.getString("tcPassword"));list.add(admin);}return list;} catch(Exception ee) {ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return null;}//根据ID查询public Administrator find(String tcId){try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "select * from administrator where tcId = '" + tcId +"'";System.out.println("单个查询SQL语句:" + sql);          rs = stmt.executeQuery(sql);while (rs.next()) {Administrator admin = new Administrator();admin.setTcId(rs.getString("TcId"));admin.setTcName(rs.getString("TcName"));admin.setTcSex(rs.getString("TcSex"));admin.setTcClassId(rs.getString("TcClassId"));admin.setTcPassword(rs.getString("TcPassword"));return admin;}return null;}catch(Exception ee){ee.printStackTrace();}finally{JDBCUtils.release(rs, stmt, conn);}return null;}//删除学生public boolean delete(String tcId){try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "delete from administrator where tcId= '" + tcId + "'";System.out.println("删除的SQL语句是:" + sql);int num = stmt.executeUpdate(sql);if (num > 0){return true;}return false;} catch (Exception ee){ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return false;}//修改用户public boolean update(Administrator admin){try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "update administrator set tcName='" + admin.getTcName() + "',tcClassId='" + admin.getTcClassId()+ "',tcSex='" + admin.getTcSex()+ "',tcPassword='" + admin.getTcPassword()+ "' where tcId='" + admin.getTcId() + "'";System.out.println("修改的SQL语句是:" + sql);int num = stmt.executeUpdate(sql);if (num > 0){return true;}return false;} catch (Exception ee){ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return false;}
}

6.2ClassDao类

package Dao;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;import Model.Classes;
import Util.JDBCUtils;public class ClassesDao {Connection conn = null;Statement stmt = null;ResultSet rs = null;//添加班级操作public boolean insert(Classes classes){try {conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "insert into classes (classId, stuNum, className) "+ "values('"+ classes.getClassId()+ "',"+ classes.getStuNum()+ ",'"+ classes.getClassName()+ "')";System.out.println("添加SQL语句为:" + sql);int num = stmt.executeUpdate(sql);if (num > 0){return true;}return false;} catch (Exception ee) {ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return false;}//查询所有的classes对象public ArrayList<Classes> findAll(){ArrayList<Classes> list = new ArrayList<Classes>();try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "select * from classes";System.out.println("查询所有的SQL语句:" + sql);rs = stmt.executeQuery(sql);while (rs.next()) {Classes classes = new Classes();classes.setClassId(rs.getString("classId"));classes.setStuNum(rs.getInt("stuNum"));classes.setClassName(rs.getString("className"));list.add(classes);}return list;} catch(Exception ee) {ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return null;}//根据ID查询public Classes find(String classId){try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "select * from classes where classId = '" + classId + "'";rs = stmt.executeQuery(sql);System.out.println("单个查询SQL语句:" + sql);while (rs.next()) {Classes classes = new Classes();classes.setClassId(rs.getString("classId"));classes.setStuNum(rs.getInt("stuNum"));classes.setClassName(rs.getString("className"));return classes;}return null;}catch(Exception ee){ee.printStackTrace();}finally{JDBCUtils.release(rs, stmt, conn);}return null;}//删除班级public boolean delete(String classId){try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "delete from classes where classId='" + classId + "'";System.out.println("删除的SQL语句是:" + sql);int num = stmt.executeUpdate(sql);if (num > 0){return true;}return false;} catch (Exception ee){ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return false;}//修改班级public boolean update(Classes classes){try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "update classes set stuNum=" + classes.getStuNum() + ",className='" + classes.getClassName()+ "' where classId='" + classes.getClassId() +"'";System.out.println("修改的SQL语句是:" + sql);int num = stmt.executeUpdate(sql);if (num > 0){return true;}return false;} catch (Exception ee){ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return false;}
}

6.3CourseDao类

package Dao;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;import Model.Course;
import Util.JDBCUtils;public class CourseDao {Connection conn = null;Statement stmt = null;ResultSet rs = null;//添加课程操作public boolean insert(Course course){try {conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "insert into course (courseId, courseTime, credit, courseName) "+ "values('"+ course.getCourseId()+ "','"+ course.getCourseTime()+ "',"+ course.getCredit()+ ",'"+ course.getCourseName()+ "')";System.out.println("添加SQL语句为:" + sql);int num = stmt.executeUpdate(sql);if (num > 0){return true;}return false;} catch (Exception ee) {ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return false;}//查询所有的course对象public ArrayList<Course> findAll(){ArrayList<Course> list = new ArrayList<Course>();try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "select * from course";System.out.println("查询所有的SQL语句:" + sql);rs = stmt.executeQuery(sql);while (rs.next()) {Course course = new Course();course.setCourseId(rs.getString("courseId"));course.setCourseName(rs.getString("courseName"));course.setCredit(rs.getInt("credit"));course.setCourseTime(rs.getString("CourseTime"));list.add(course);}return list;} catch(Exception ee) {ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return null;}//根据ID查询public Course find(String courseId){try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "select * from course where courseId = '" + courseId + "'";rs = stmt.executeQuery(sql);System.out.println("单个查询SQL语句:" + sql);while (rs.next()) {Course course = new Course();course.setCourseId(rs.getString("CourseId"));course.setCourseName(rs.getString("CourseName"));course.setCredit(rs.getInt("Credit"));course.setCourseTime(rs.getString("CourseTime"));return course;}return null;}catch(Exception ee){ee.printStackTrace();}finally{JDBCUtils.release(rs, stmt, conn);}return null;}//删除班级public boolean delete(String courseId){try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "delete from course where courseId= '" + courseId + "'";System.out.println("删除的SQL语句是:" + sql);int num = stmt.executeUpdate(sql);if (num > 0){return true;}return false;} catch (Exception ee){ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return false;}//修改班级public boolean update(Course course){try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "update course set courseTime='" + course.getCourseTime() + "',credit=" + course.getCredit()+ ",courseName='" + course.getCourseName() + "' where courseId='" + course.getCourseId() + "'";System.out.println("修改的SQL语句是:" + sql);int num = stmt.executeUpdate(sql);if (num > 0){return true;}return false;} catch (Exception ee){ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return false;}
}

6.4GradeDao类

package Dao;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;import Model.Grade;
import Util.JDBCUtils;public class GradeDao {Connection conn = null;Statement stmt = null;ResultSet rs = null;//添加成绩操作public boolean insert(Grade grade){try {conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "insert into grade (stuId, stuName, courseId, tcId, courseGrade, classId) "+ "values('"+ grade.getStuId()+ "','"+ grade.getStuName()+ "','"+ grade.getCourseId()+ "','"+ grade.getTcId()+ "','"+ grade.getCourseGrade()+ "','"+ grade.getClassId()+ "')";System.out.println("添加SQL语句为:" + sql);int num = stmt.executeUpdate(sql);if (num > 0){return true;}return false;} catch (Exception ee) {ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return false;}//查询所有的grade对象public ArrayList<Grade> findAll(){ArrayList<Grade> list = new ArrayList<Grade>();try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "select * from grade";System.out.println("查询所有的SQL语句:" + sql);rs = stmt.executeQuery(sql);while (rs.next()) {Grade grade = new Grade();grade.setCourseId(rs.getString("courseId"));grade.setStuName(rs.getString("stuName"));grade.setCourseGrade(rs.getString("courseGrade"));grade.setStuId(rs.getString("stuId"));grade.setTcId(rs.getString("tcId"));grade.setClassId(rs.getString("classId"));list.add(grade);}return list;} catch(Exception ee) {ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return null;}//根据ID查询public ArrayList<Grade> find(String stuId){ArrayList<Grade> list = new ArrayList<Grade>();try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "select * from grade where stuId = '" + stuId + "'";rs = stmt.executeQuery(sql);System.out.println("单个查询SQL语句:" + sql);while (rs.next()) {Grade grade = new Grade();grade.setCourseId(rs.getString("courseId"));grade.setStuName(rs.getString("stuName"));grade.setCourseGrade(rs.getString("courseGrade"));grade.setStuId(rs.getString("stuId"));grade.setTcId(rs.getString("tcId"));grade.setClassId(rs.getString("classId"));list.add(grade);}return list;}catch(Exception ee){ee.printStackTrace();}finally{JDBCUtils.release(rs, stmt, conn);}return null;}//删除成绩public boolean delete(Grade grade){try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "delete from grade where stuId= '" + grade.getStuId()+ "' and stuName = '" + grade.getStuName()+ "' and courseId = '" + grade.getCourseId()+ "' and tcId = '" + grade.getTcId()+ "' and courseGrade = '" + grade.getCourseGrade()+ "' and classId = '" + grade.getClassId()+ "'";System.out.println("删除的SQL语句是:" + sql);int num = stmt.executeUpdate(sql);if (num > 0){return true;}return false;} catch (Exception ee){ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return false;}//修改成绩public boolean update(Grade grade){try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "update grade set "+ "courseGrade='" + grade.getCourseGrade() + "' where stuId='" + grade.getStuId()+"' and stuName= '" + grade.getStuName()+"' and courseId='" + grade.getCourseId()+"' and tcId='"  + grade.getTcId()+"' and classId='" + grade.getClassId()+ "'";System.out.println("修改的SQL语句是:" + sql);int num = stmt.executeUpdate(sql);if (num > 0){return true;}return false;} catch (Exception ee){ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return false;}
}

6.5StudentDao类

package Dao;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;import Model.Student;
import Util.JDBCUtils;public class StudentDao {Connection conn = null;Statement stmt = null;ResultSet rs = null;//添加学生操作public boolean insert(Student student){try {conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "insert into student (stuId, stuName, stuSex, stuClassId, stuPassword) "+ "values('"+ student.getStuId()+ "','"+ student.getStuName()+ "','"+ student.getStuSex()+ "','"+ student.getStuClassId()+ "','"+ student.getStuPassword()+ "')";System.out.println("添加SQL语句为:" + sql);int num = stmt.executeUpdate(sql);if (num > 0){return true;}return false;} catch (Exception ee) {ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return false;}//查询所有的student对象public ArrayList<Student> findAll(){ArrayList<Student> list = new ArrayList<Student>();try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "select * from student";System.out.println("查询所有的SQL语句:" + sql);rs = stmt.executeQuery(sql);while (rs.next()) {Student student = new Student();student.setStuId(rs.getString("stuId"));student.setStuName(rs.getString("stuName"));student.setStuSex(rs.getString("stuSex"));student.setStuClassId(rs.getString("stuClassId"));student.setStuPassword(rs.getString("stuPassword"));list.add(student);}return list;} catch(Exception ee) {ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return null;}//根据ID查询public Student find(String stuId){try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "select * from student where stuId = '" + stuId + "'";rs = stmt.executeQuery(sql);System.out.println("单个查询SQL语句:" + sql);while (rs.next()) {Student student = new Student();student.setStuId(rs.getString("stuId"));student.setStuName(rs.getString("stuName"));student.setStuSex(rs.getString("stuSex"));student.setStuClassId(rs.getString("stuClassId"));student.setStuPassword(rs.getString("stuPassword"));return student;}return null;}catch(Exception ee){ee.printStackTrace();}finally{JDBCUtils.release(rs, stmt, conn);}return null;}//删除学生public boolean delete(String stuId){try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "delete from student where stuId='" + stuId + "'";System.out.println("删除的SQL语句是:" + sql);int num = stmt.executeUpdate(sql);if (num > 0){return true;}return false;} catch (Exception ee){ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return false;}//修改用户public boolean update(Student student){try{conn = JDBCUtils.getConnection();stmt = conn.createStatement();String sql = "update student set stuName='" + student.getStuName() + "',stuSex='" + student.getStuSex()+ "',stuClassId='" + student.getStuClassId() + "',stuPassword='"+ student.getStuPassword() + "' where stuId='" + student.getStuId() + "'";System.out.println("修改的SQL语句是:" + sql);int num = stmt.executeUpdate(sql);if (num > 0){return true;}return false;} catch (Exception ee){ee.printStackTrace();} finally {JDBCUtils.release(rs, stmt, conn);}return false;}}

6.6UserDao类

package Dao;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;import Model.User;
import Util.JDBCUtils;public class UserDao {//添加登录记录public boolean insert(User user){Connection conn = null;Statement stmt = null;ResultSet rs = null;try{//获取数据的连接conn = JDBCUtils.getConnection();//获取Statement对象stmt = conn.createStatement();//发送SQL语句String sql = "insert into user(username, password, identity)" +"values('"+ user.getUsername()+ "','"+ user.getPassword()+ "','"+ user.getIdentity()+ "')";int num = stmt.executeUpdate(sql);if(num > 0){return true;}return false;} catch(Exception ee) {ee.printStackTrace();} finally{JDBCUtils.release(rs, stmt, conn);}return false;}}

7.Model包下的类

7.1Administrator类

package Model;public class Administrator {private String tcId;       //教师编号private String tcName;        //教师姓名private String tcClassId; //班级编号private String tcSex;     //教师性别private String tcPassword;    //教师密码public void setTcId(String tcId){this.tcId = tcId;}public void setTcName(String tcName){this.tcName = tcName;}public void setTcClassId(String tcClassId){this.tcClassId = tcClassId;}public void setTcSex(String tcSex){this.tcSex = tcSex;}public void setTcPassword(String tcPassWord){this.tcPassword = tcPassWord;}public String getTcId(){return tcId;}public String getTcName(){return tcName;}public String getTcClassId(){return tcClassId;}public String getTcSex(){return tcSex;}public String getTcPassword(){return tcPassword;}
}

7.2Classes类

package Model;public class Classes {private String classId;      //班级编号private int stuNum;           //学生数private String className;  //班级名public void setClassId(String classId){this.classId = classId;}public void setStuNum(int stuNum){this.stuNum = stuNum;}public void setClassName(String className){this.className = className;}public String getClassId(){return classId;}public int getStuNum(){return stuNum;}public String getClassName(){return className;}
}

7.3Course类

package Model;public class Course {private String courseId;      //课程编号private String courseTime;        //课时private int credit;     //课程学分private String courseName;        //课程名public void setCourseId(String courseId) {this.courseId = courseId;}public void setCourseTime(String courseTime){this.courseTime = courseTime;}public void setCredit(int credit){this.credit = credit;}public void setCourseName(String courseName){this.courseName = courseName;}public String getCourseId(){return courseId;}public String getCourseTime(){return courseTime;}public int getCredit(){return credit;}public String getCourseName(){return courseName;}
}

7.4Grade类

package Model;public class Grade {private String stuId;          //学生编号private String stuName;           //学生姓名private String courseId;      //课程编号private String tcId;          //教师private String courseGrade;     //课程分数private String classId;           //班级编号public void setStuId(String stuId){this.stuId = stuId;}public void setStuName(String stuName){this.stuName = stuName;}public String getStuName(){return stuName;}public void setCourseId(String courseId){this.courseId = courseId;}public void setTcId(String tcId){this.tcId = tcId;}public void setCourseGrade(String courseGrade){this.courseGrade = courseGrade;}public void setClassId(String classId){this.classId = classId;}public String getStuId(){return stuId;}public String getCourseId(){return courseId;}public String getTcId(){return tcId;}public String getCourseGrade(){return courseGrade;}public String getClassId(){return classId;}
}

7.5Student类

package Model;public class Student {private String stuId;        //学生编号private String stuName;       //学生姓名private String stuSex;        //学生性别private String stuClassId;    //班级编号private String stuPassword;   //学生密码public void setStuId(String stuId){this.stuId = stuId;}public void setStuName(String stuName){this.stuName = stuName;}public void setStuSex(String stuSex){this.stuSex = stuSex;}public void setStuClassId(String stuClassId){this.stuClassId = stuClassId;}public void setStuPassword(String stuPassword){this.stuPassword = stuPassword;}public String getStuId(){return stuId;}public String getStuName(){return stuName;}public String getStuSex(){return stuSex;}public String getStuClassId(){return stuClassId;}public String getStuPassword(){return stuPassword;}
}

7.6User类

package Model;public class User {private String username;    //账号private String password;    //密码private String identity;    //身份public void setUsername(String username){this.username = username;}public void setPassword(String password){this.password = password;}public void setIdentity(String identity){this.identity = identity;}public String getUsername(){return username;}public String getPassword(){return password;}public String getIdentity(){return identity;}
}

8.Utils包下的类

8.1JDBCUtils类

package Util;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class JDBCUtils {// 加载驱动,并建立数据库连接public static Connection getConnection() throws SQLException,ClassNotFoundException {Class.forName("com.mysql.cj.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/grademanage?useSSL=FALSE&serverTimezone=UTC";  //注意:8.0的MySQL,所以连接方式不一样String Name = "root";String password = "你的密码";Connection conn = DriverManager.getConnection(url, Name, password);return conn;}// 关闭数据库连接,释放资源public static void release(Statement stmt, Connection conn) {if (stmt != null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}stmt = null;}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}conn = null;}}public static void release(ResultSet rs, Statement stmt, Connection conn){if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}rs = null;}release(stmt, conn);}
}

9.JSP

9.1 Login.jsp(登录界面)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生成绩管理系统</title>
</head>
<center><h3>用户登录</h3></center>
<body style="text-align: center;"><form action="${pageContext.request.contextPath }/LoginServlet" method = "post"><table border="1" width="600px" cellpadding="0" cellspacing="0" align="center"><tr><td height="30" align="center">用户名: </td><td><input type="text" name="username" />${errerMsg }</td></tr><tr><td height="30" align="center">密&nbsp;&nbsp;&nbsp;&nbsp;码: </td><td><input type="password" name="password" /></td></tr><tr><td height="30" align="center">验证码:</td><td >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="check_code"/><img src="/GradeManage/CheckServlet"/><br/></td></tr><tr><td height="35" align="center">身份:</td><td><input type="radio" name="identity"value="admin"/>管理员(老师 )<input type="radio" name="identity"value="student"/>学生</td></tr><tr><td height="35" align="center">自动登录时间</td><td><input type="radio" name="autologin"value="${60*60*24*31 }"/>一个月<input type="radio" name="autologin"value="${60*60*24*31*3 }"/>三个月<input type="radio" name="autologin"value="${60*60*24*31*6 }"/>半年<input type="radio" name="autologin"value="${60*60*24*31*12 }"/>一年</td></tr><tr><td height="30" colspan="2" align="center"><input type="submit" value="登陆">&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset" value="重置"/></td></tr></table></form>
</body>
</html>

9.2 Student.jsp(学生操作界面)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" import="java.util.*" import="Model.User"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生成绩管理系统</title>
</head>
<body><body style="text-align: center;"><c:choose><c:when test="${sessionScope.user==null }"><a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a>            </c:when><c:otherwise><c:if test="${sessionScope.user.getIdentity() == 'student' }"><h3>学生操作界面</h3>欢迎 ${sessionScope.user.username }!<div><a href="${pageContext.request.contextPath }/Jsp/FindScore.jsp">查询  &nbsp; 成绩</a></div><br/><a href="${pageContext.request.contextPath }/LogoutServlet">注销</a></c:if><c:if test="${sessionScope.user.identity == 'admin'}"><div>你无权访问!!!</div><a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a>    </c:if></c:otherwise></c:choose>
</body>
</body>
</html>

9.3 Foot.jsp(共有界面)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" import="java.util.*" import="Model.User"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生成绩管理系统</title>
</head>
<body><br/><c:choose><c:when test="${sessionScope.user==null }"><a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a></c:when><c:otherwise><form action="${pageContext.request.contextPath }/ExitServlet" method="post"><input type="submit" value="返回"></form>    欢迎你,${sessionScope.user.username }!<a href="${pageContext.request.contextPath }/LogoutServlet">注销</a></c:otherwise></c:choose>
</body>
</html>

9.4 Admin.jsp (管理员操作界面)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" import="java.util.*" import="Model.User"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生成绩管理系统</title>
</head>
<body style="text-align: center;"><c:choose><c:when test="${sessionScope.user==null }"><a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a>            </c:when><c:otherwise><c:if test="${sessionScope.user.identity == 'admin'}"><h3>管理员操作界面</h3>欢迎 ${sessionScope.user.username }!<div><a href="${pageContext.request.contextPath }/Jsp/FindScore.jsp">查询  &nbsp; 成绩</a></div><div><a href="${pageContext.request.contextPath }/Jsp/AddScore.jsp">录入  &nbsp; 成绩</a></div><div><a href="${pageContext.request.contextPath }/Jsp/UpdDelScore.jsp">修改删除成绩</a></div><br/><a href="${pageContext.request.contextPath }/LogoutServlet">注销</a>                  </c:if><c:if test="${sessionScope.user.identity == 'student'}"><div>你无权访问!!!</div><a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a>   </c:if></c:otherwise></c:choose>
</body>
</html>

9.5 AddScore.jsp(添加界面)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生成绩管理系统-录入成绩</title>
</head>
<body style="text-align: center;"><c:choose><c:when test="${sessionScope.user.identity == 'admin'}"><div>输入下列信息进行分数录入</div><br/><form action="${pageContext.request.contextPath }/AddScoreServlet" method="post"><table align="center" cellpadding="0" cellspacing="0" border="1" width="600px"><tr><td height="30" align="center">学生编号</td><td><input type="text" name="stuId">${errerMsg}</td></tr><tr><td height="30" align="center">学生姓名</td><td><input type="text" name="stuName"></td></tr><tr><td height="30" align="center">课程编号</td><td><input type="text" name="courseId"></td></tr><tr><td height="30" align="center">教师编号</td><td><input type="text" name="tcId"></td></tr><tr><td height="30" align="center">课程分数</td><td><input type="text" name="courseGrade"></td></tr><tr><td height="30" align="center">班级编号</td><td><input type="text" name="classId"></td></tr><tr><td height="30" colspan="2" align="center"><input type="submit" value="添加"/>&nbsp;&nbsp;<input type="reset" value="重置"/></td></tr></table></form><br/><%@ include file="Foot.jsp" %></c:when><c:otherwise><c:if test="${sessionScope.user != null}"><div>你无权访问!!!</div><br/></c:if><a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a>    </c:otherwise></c:choose>
</body>
</html>

9.6 FindScore.jsp(查询界面)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" import="java.util.*" import="Model.Grade"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生成绩管理系统-查询成绩</title>
</head>
<body  style="text-align: center;"><c:choose><c:when test="${sessionScope.user==null }"><a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a>       </c:when><c:otherwise><div><form action="${pageContext.request.contextPath }/FindScoreServlet" method = "post"><input name="func" type="hidden" value="show">成绩查询方式:学号查询<br/><c:if test="${sessionScope.user.identity == 'admin'}"><input name="id" type="text">${errerMsg}</c:if><input type="submit" value="查询"></form></div><br/><table align="center" cellpadding="5" cellspacing="5" border="1"><%ArrayList<Grade> list=(ArrayList<Grade>) session.getAttribute("grade"); if(list!=null&&list.size()!=0){%><tr><td colspan="6" align="center">学号为<%=list.get(0).getStuId() %>的学生成绩如下</td></tr><tr><td>学生学号</td><td>学生姓名</td><td>课程编号</td><td>教师编号</td><td>课程分数</td><td>班级编号</td></tr><%for(int j=0;j<list.size();j++){%><tr><td><%=list.get(j).getStuId()%></td><td><%=list.get(j).getStuName()%></td><td><%=list.get(j).getCourseId()%></td><td><%=list.get(j).getTcId()%></td><td><%=list.get(j).getCourseGrade()%></td><td><%=list.get(j).getClassId()%></td></tr><% }}%></table><%@ include file="Foot.jsp" %></c:otherwise></c:choose>
</body>
</html>

9.7 UpdScore.jsp(更新界面)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" import="java.util.*" import="Model.Grade"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生成绩管理系统-修改删除成绩</title>
</head>
<body  style="text-align: center;"><c:choose><c:when test="${sessionScope.user.identity == 'admin'}"><div ><form action="${pageContext.request.contextPath }/FindScoreServlet" method = "post"><input name="func" type="hidden" value="update">成绩查询方式:学号查询<br/><input name="id" type="text">${errerMsg}<input type="submit" value="查询"></form></div><br/><table align="center" cellpadding="5" cellspacing="5" border="1"><%ArrayList<Grade> list=(ArrayList<Grade>) session.getAttribute("grade"); if(list!=null&&list.size()!=0){%><tr><td colspan="8" align="center">学号为<%=list.get(0).getStuId() %>的学生成绩如下</td></tr><tr><td>学生学号</td><td>学生姓名</td><td>课程编号</td><td>教师编号</td><td>班级编号</td><td>课程分数</td><td>修改</td><td>是否删除</td></tr><%for(int j=0;j<list.size();j++){%><tr><td><%=list.get(j).getStuId()%></td><td><%=list.get(j).getStuName()%></td><td><%=list.get(j).getCourseId()%></td><td><%=list.get(j).getTcId()%></td><td><%=list.get(j).getClassId()%></td><form action="${pageContext.request.contextPath }/UpdScoreServlet" method="post"><input type="hidden" name="stuId" value="<%=list.get(j).getStuId() %>"><input type="hidden" name="stuName" value="<%=list.get(j).getStuName() %>"><input type="hidden" name="courseId" value="<%=list.get(j).getCourseId() %>"><input type="hidden" name="tcId" value="<%=list.get(j).getTcId() %>"><input type="hidden" name="classId" value="<%=list.get(j).getClassId() %>"><td><input name="grade" type="text" value="<%=list.get(j).getCourseGrade()%>"></td><td><input type="submit" value="修改"></td></form><form action="${pageContext.request.contextPath }/DelScoreServlet" method="post"><input type="hidden" name="stuId" value="<%=list.get(j).getStuId() %>"><input type="hidden" name="stuName" value="<%=list.get(j).getStuName() %>"><input type="hidden" name="courseId" value="<%=list.get(j).getCourseId() %>"><input type="hidden" name="tcId" value="<%=list.get(j).getTcId() %>"><input type="hidden" name="classId" value="<%=list.get(j).getClassId() %>"><input type="hidden" name="grade" value="<%=list.get(j).getCourseGrade()%>"><td><input type="submit" value="删除"></td></form></tr><% }}%></table><br/><%@ include file="Foot.jsp" %></c:when><c:otherwise><c:if test="${sessionScope.user != null}"><div>你无权访问!!!</div><br/></c:if><a href="${pageContext.request.contextPath }/Jsp/Login.jsp">用户登录</a>    </c:otherwise>            </c:choose>
</body>
</html>

10.系统演示

10.1登陆界面

10.2管理员操作界面

10.3管理员查询成绩界面

10.4管理员录入成绩界面

10.5管理员修改删除界面

10.6学生操作界面

10.7学生查询成绩界面

11 数据实体表

  • 课程表(Course

字段名

字段类型

是否为主键

是否为空

备注

courseID

varchar(20)

课程编号

courseTime

varchar(20)

课时

courseGrade

int

课程分数

courseName

varchar(50)

课程名

  • 成绩表(Grade

字段名

字段类型

是否为主键

是否为空

备注

stuID

varchar(20)

用户编号

courseID

varchar(20)

课程编号

teacher

varchar(20)

教师

courseGrade

varchar(20)

课程分数

classID

varchar(20)

班级编号

  • 班级表(Class)

字段名

字段类型

是否为主键

是否为空

备注

classID

varchar (20)

班级编号

stuNum

int

学生数

className

varchar(20)

班级名

  • 管理员表(Admin

字段

字段类型

是否为主键

是否为空

备注

tcID

varchar(20)

教师编号

tcName

varchar(20)

教师姓名

tcClassID

varchar(20)

班级编号

tcSex

varchar(20)

教师性别

tcPassword

varchar(20)

教师密码

  • 学生表(Student

字段名

字段类型

是否为主键

是否为空

备注

stuID

varchar(20)

学生编号

stuName

varchar(20)

学生姓名

stuSex

varchar(50)

学生性别

stuClassID

varchar(20)

班级编号

stuPassword

Varchar(20)

学生密码

  • 用户表(User

字段名

字段类型

是否为主键

是否为空

备注

username

varchar(20)

学生或教师的编号

password

varchar(20)

密码

identity

varchar(20)

身份

源码

数据库设计

Java Web学生成绩管理系统(JSP+Servlet+JDBC+Dao)相关推荐

  1. 【课程设计】Java Web 学生成绩管理系统

    摘要:一个基于Java Web的学生成绩管理系统,在学生成绩管理系统中主要有三个权限:管理员.教师和学生.管理员模块主要实现的基本功能是添加教师.添加学生.开设院系和开设课程:教师模块主要实现的基本功 ...

  2. jsp+mysql学生成绩管理系统_jsp+servlet+mysql学生成绩管理系统 javaweb成绩管理系统 - 下载 - 搜珍网...

    压缩包 : c59896403d8d913d853f6c0910dc71.zip 列表 jsp servlet mysql实现的学生成绩管理系统/ jsp servlet mysql实现的学生成绩管理 ...

  3. jsp+ssh+mysql实现的Java web学生考勤管理系统源码附带视频指导运行教程

    今天给大家演示的是一款由jsp+ssh+mysql实现的Java web学生考勤管理系统,其中struts版本是struts2.本系统实现了管理员.学生.教师三个角色的功能,其中管理员可以管理基本信息 ...

  4. java成绩管理系统论文总结_毕业论文基于java的学生成绩管理系统.doc

    毕业论文基于java的学生成绩管理系统 PAGE PAGE 109 课 程 设 计 论 文 基于JAVA的学生成绩管理系统的设计与实现 THE DESIGN AND REALIZATION OF TH ...

  5. IDEA+Java+Servlet+JSP+Bootstrap+Mysql实现Web学生成绩管理系统

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库 5.工程截图 二.系统展示 1.注册页面 2.登录页面 3.学生-主页面 4.学生-个人信息-查询登录密码 5.学生-个人信息 ...

  6. java成绩管理系统毕业论文_java web学生成绩管理系统,可作为java毕业论文

    项目描述 ​这是有利于大学生毕业论文参考的java项目<学生成绩管理系统> 项目名称:学生成绩管理系统 项目需求分析(Need 需求): (1)该系统的用户分为教师和学生.教师的功能有:管 ...

  7. 2021-07-08IDEA+Java+Servlet+JSP+Bootstrap+Mysql实现Web学生成绩管理系统

    一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库 5.工程截图 二.系统展示 1.注册页面 2.登录页面 3.学生-主页面 4.学生-个人信息-查询登录密码 5.学生-个人信息-查看 ...

  8. 学生选课管理系统 jsp + servlet + mysql (2021)

    jsp + servlet + mysql 学生选课管理系统(2021) 1.系统运行环境 运行环境:Java8 + MySQL8 + Tomcat8.0 开发工具:eclipse/idea 2.系统 ...

  9. java mysql 学生成绩管理系统_Java实现简单的学生成绩管理系统

    ScoreInformation.java import java.util.Scanner; class ScoreInformation { private String stunumber;   ...

最新文章

  1. nginx 日志配置log_format用法
  2. Envoy为什么能战胜Ngnix——线程模型分析篇
  3. 作为一个码农,必须知道的 Web 协议有哪些?
  4. 【ElasticSearch】Es 源码之 Discovery DiscoveryModule 源码解读
  5. Linux学习笔记---记一次rootfs根文件系统下载时掉进的大坑
  6. iOS平台上的MVVM模式(译文)
  7. sed的模式匹配用法探讨
  8. Unity 常用API以及C# 工具类的使用
  9. [导入]带图片的,多列的DropDownList的实现
  10. sdut 1465 公共因子
  11. stm32CubeMx lwip + freeRTOS
  12. 中嘉城湖靠谱国有企业要为实现人民对美好生活的向往不断奋斗
  13. 机器学习综述论文笔记:Machine Learning: A Review of Learning Types
  14. 计算机属性 资源管理器停止,Win7资源管理器总是停止工作怎么处理?Win7网页自动关闭如何解决?...
  15. 在移动端打开 Google 的网页快照
  16. Qlist+QMap+QVariant使用
  17. 帆软数据分析:BI物流可视化
  18. macbook pro 连接无线鼠标卡顿问题解决
  19. RabbitMQ学习笔记
  20. 遗传算法_粒子群算法优化支持向量机分类预测-附代码

热门文章

  1. 如何在JAVA项目中实现反向代理功能?
  2. DDR4 Spec 第五章 终端电阻
  3. 使用VS编译NCNN
  4. 苹果M1芯片为何如此快?一个开发者的解释
  5. 固态硬盘简称是不是ssd_为什么懂电脑的人都说SSD不要分区?原来真相是这样!...
  6. Qt 5.15 LTS版本 安装教程 在线安装
  7. 微信小程序开发【知识点大全】
  8. 京津城际列车最新时刻表(2009年北京南站候车室照片)
  9. Threejs实现3d地球记录(4)
  10. 下列选项中不属于python 3中的关键字是_以下不是python中的关键字