使用JSP/SERVLET实现在校学生管理系统

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 使用JSP/SERVLET实现在校学生管理系统

项目编号: BS-GX-012


本系统基于JSP/SERVLET技术开发实现,前端采用easyui进行页面设计,用户交互性好,采用三层架构,MVC设计模式,数据库采用MYSQL数据库,开发工具为IDEA或ECLIPSE。


系统分为管理员、老师端、学生端三个角色!


管理员:进入系统可以进行 学生管理,教师管理,基础信息管理(年级管理,班级管理,课程管理),系统管理,成绩统计分析管理等。管理员用户在user表中type类型为1 的用户。


学生用户:进入系统可以  查询考试成绩,查看班级通讯录,修改个人信息等。学生用户在user表中type类型为2 的用户。


教师用户:进入系统可以  管理学生成绩,查看教师通讯录,修改个人信息等。


教师用户在user表中type类型为2 的用户。

一,管理员角色进入


登录功能:  admin   111111

image.png

管理员功能演示:

20201120224651715.png

成绩统计

image.png

老师信息管理

image.png

学生信息管理

image.png

课程管理

image.png

年级管理

image.png

班级管理

image.png

系统管理

image.png

二,老师登陆后台


登陆页面:  2012   /  111111

image.png

image.png

学生成绩管理

image.png

老师通讯录查看

image.png

个人信息管理

image.png

三,学生登陆系统


登陆页面:201301006   /  111111

image.png

成绩查询

image.png

班级通讯录

image.png

个人信息管理

image.png

本系统功能完整,运行无误,结构清晰,适合做毕业设计使用。

package com.lizhou.service;
import java.sql.Connection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import com.lizhou.bean.Clazz;
import com.lizhou.bean.Grade;
import com.lizhou.bean.Page;
import com.lizhou.bean.Student;
import com.lizhou.dao.impl.BaseDaoImpl;
import com.lizhou.dao.impl.ClazzDaoImpl;
import com.lizhou.dao.inter.BaseDaoInter;
import com.lizhou.dao.inter.ClazzDaoInter;
import com.lizhou.tools.MysqlTool;
import com.lizhou.tools.StringTool;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
/**
 * 年级服务层
 * @author ZNZ
 *
 */
public class ClazzService {
  ClazzDaoInter dao = new ClazzDaoImpl();
  /**
   * 获取指定年级下的班级
   * @param gid 年级ID
   * @return JSON格式的班级
   */
  public String getClazzList(String gradeid){
    int id = Integer.parseInt(gradeid);
    //获取数据
    List<Object> list = dao.getList(Clazz.class, "SELECT * FROM clazz WHERE gradeid=?", new Object[]{id});
    //json化
    JsonConfig config = new JsonConfig();
    config.setExcludes(new String[]{"grade", "studentList"});
        String result = JSONArray.fromObject(list, config).toString();
        return result;
  }
  /**
   * 获取班级详细信息
   * @param gradeid
   * @param page
   * @return
   */
  public String getClazzDetailList(String gradeid, Page page) {
    //获取数据
    List<Clazz> list = dao.getClazzDetailList(gradeid, page);
    //获取总记录数
    long total = 0;
    if(!StringTool.isEmpty(gradeid)){
      int gid = Integer.parseInt(gradeid);
      total = dao.count("SELECT COUNT(*) FROM clazz WHERE gradeid=?", new Object[]{gid});
    } else {
      total = dao.count("SELECT COUNT(*) FROM clazz", new Object[]{});
    }
    //定义Map
    Map<String, Object> jsonMap = new HashMap<String, Object>();  
    //total键 存放总记录数,必须的
        jsonMap.put("total", total);
        //rows键 存放每页记录 list 
        jsonMap.put("rows", list); 
        //格式化Map,以json格式返回数据
        String result = JSONObject.fromObject(jsonMap).toString();
        return result;
  }
  /**
   * 添加班级
   * @param name
   * @param gradeid
   */
  public void addClazz(String name, String gradeid) {
    int gid = Integer.parseInt(gradeid);
    dao.insert("INSERT INTO clazz(name, gradeid) value(?,?)", new Object[]{name, gid});
  }
  /**
   * 删除班级
   * @param clazzid
   * @throws Exception 
   */
  public void deleteClazz(int clazzid) throws Exception {
    //获取连接
    Connection conn = MysqlTool.getConnection();
    try {
      //开启事务
      MysqlTool.startTransaction();
      //删除成绩表
      dao.deleteTransaction(conn, "DELETE FROM escore WHERE clazzid=?", new Object[]{clazzid});
      //删除考试记录
      dao.deleteTransaction(conn, "DELETE FROM exam WHERE clazzid=?", new Object[]{clazzid});
      //删除用户
      List<Object> list = dao.getList(Student.class, "SELECT number FROM student WHERE clazzid=?",  new Object[]{clazzid});
      if(list.size() > 0){
        Object[] param = new Object[list.size()];
        for(int i = 0;i < list.size();i++){
          Student stu = (Student) list.get(i);
          param[i] = stu.getNumber();
        }
        String sql = "DELETE FROM user WHERE account IN ("+StringTool.getMark(list.size())+")";
        dao.deleteTransaction(conn, sql, param);
        //删除学生
        dao.deleteTransaction(conn, "DELETE FROM student WHERE clazzid=?", new Object[]{clazzid});
      }
      //删除班级的课程和老师的关联
      dao.deleteTransaction(conn, "DELETE FROM clazz_course_teacher WHERE clazzid=?", new Object[]{clazzid});
      //最后删除班级
      dao.deleteTransaction(conn, "DELETE FROM clazz WHERE id=?",  new Object[]{clazzid});
      //提交事务
      MysqlTool.commit();
    } catch (Exception e) {
      //回滚事务
      MysqlTool.rollback();
      e.printStackTrace();
      throw e;
    } finally {
      MysqlTool.closeConnection();
    }
  }
}
package com.lizhou.service;
import java.sql.Connection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import com.lizhou.bean.Clazz;
import com.lizhou.bean.Course;
import com.lizhou.bean.Grade;
import com.lizhou.bean.Page;
import com.lizhou.bean.Student;
import com.lizhou.dao.impl.BaseDaoImpl;
import com.lizhou.dao.impl.ClazzDaoImpl;
import com.lizhou.dao.inter.BaseDaoInter;
import com.lizhou.dao.inter.ClazzDaoInter;
import com.lizhou.tools.MysqlTool;
import com.lizhou.tools.StringTool;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
/**
 * 课程服务层
 * @author ZNZ
 *
 */
public class CourseService {
  BaseDaoInter dao = new BaseDaoImpl();
  /**
   * 获取所有课程
   * @return
   */
  public String getCourseList(String gradeid){
    List<Object> list;
    if(StringTool.isEmpty(gradeid)){
      list = dao.getList(Course.class, "SELECT * FROM course");
    } else{
      list = dao.getList(Course.class, 
          "SELECT c.* FROM course c, grade_course gc WHERE c.id=gc.courseid AND gc.gradeid=?", 
          new Object[]{Integer.parseInt(gradeid)});
    }
    //json化
        String result = JSONArray.fromObject(list).toString();
        return result;
  }
  /**
   * 添加课程
   * @param course
   */
  public void addCourse(Course course) {
    dao.insert("INSERT INTO course(name) value(?)", new Object[]{course.getName()});
  }
  /**
   * 删除课程
   * @param courseid
   * @throws Exception 
   */
  public void deleteClazz(int courseid) throws Exception {
    //获取连接
    Connection conn = MysqlTool.getConnection();
    try {
      //开启事务
      MysqlTool.startTransaction();
      //删除成绩表
      dao.deleteTransaction(conn, "DELETE FROM escore WHERE courseid=?", new Object[]{courseid});
      //删除班级的课程和老师的关联
      dao.deleteTransaction(conn, "DELETE FROM clazz_course_teacher WHERE courseid=?", new Object[]{courseid});
      //删除年级与课程关联
      dao.deleteTransaction(conn, "DELETE FROM grade_course WHERE courseid=?",  new Object[]{courseid});
      //最后删除课程
      dao.deleteTransaction(conn, "DELETE FROM course WHERE id=?",  new Object[]{courseid});
      //提交事务
      MysqlTool.commit();
    } catch (Exception e) {
      //回滚事务
      MysqlTool.rollback();
      e.printStackTrace();
      throw e;
    } finally {
      MysqlTool.closeConnection();
    }
  }
}
package com.lizhou.service;
import java.sql.Connection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import com.lizhou.bean.Course;
import com.lizhou.bean.CourseItem;
import com.lizhou.bean.Exam;
import com.lizhou.bean.Page;
import com.lizhou.bean.Student;
import com.lizhou.bean.Teacher;
import com.lizhou.bean.User;
import com.lizhou.dao.impl.BaseDaoImpl;
import com.lizhou.dao.impl.ExamDaoImpl;
import com.lizhou.dao.impl.StudentDaoImpl;
import com.lizhou.dao.impl.TeacherDaoImpl;
import com.lizhou.dao.inter.BaseDaoInter;
import com.lizhou.dao.inter.ExamDaoInter;
import com.lizhou.dao.inter.StudentDaoInter;
import com.lizhou.dao.inter.TeacherDaoInter;
import com.lizhou.tools.MysqlTool;
import com.lizhou.tools.StringTool;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
/**
 * 教师类服务层
 * @author ZNZ
 *
 */
public class ExamService {
  private ExamDaoInter dao;
  public ExamService(){
    dao = new ExamDaoImpl();
  }
  /**
   * 获取考试信息
   * @param exam 参数
   * @param page 分页
   * @return
   */
  public String getExamList(Exam exam, Page page) {
    //sql语句
    StringBuffer sb = new StringBuffer("SELECT * FROM exam ");
    //参数
    List<Object> param = new LinkedList<>();
    //判断条件
    if(exam != null){ 
      if(exam.getGradeid() != 0){//条件:年级
        int gradeid = exam.getGradeid();
        param.add(gradeid);
        sb.append("AND gradeid=? ");
      }
      if(exam.getClazzid() != 0){
        int clazzid = exam.getClazzid();
        param.add(clazzid);
        sb.append("AND clazzid=? ");
      }
    }
    //添加排序
    sb.append("ORDER BY id DESC ");
    //分页
    if(page != null){
      param.add(page.getStart());
      param.add(page.getSize());
      sb.append("LIMIT ?,?");
    }
    String sql = sb.toString().replaceFirst("AND", "WHERE");
    //获取数据
    List<Exam> list = dao.getExamList(sql, param);
    //获取总记录数
    long total = getCount(exam);
    //定义Map
    Map<String, Object> jsonMap = new HashMap<String, Object>();  
    //total键 存放总记录数,必须的
        jsonMap.put("total", total);
        //rows键 存放每页记录 list 
        jsonMap.put("rows", list); 
        //格式化Map,以json格式返回数据
        String result = JSONObject.fromObject(jsonMap).toString();
        //返回
    return result;
  }
  /**
   * 获取记录数
   * @param exam
   * @return
   */
  private long getCount(Exam exam){
    //sql语句
    StringBuffer sb = new StringBuffer("SELECT COUNT(*) FROM exam ");
    //参数
    List<Object> param = new LinkedList<>();
    //判断条件
    if(exam != null){ 
      if(exam.getGrade() != null){//条件:年级
        int gradeid = exam.getGradeid();
        param.add(gradeid);
        sb.append("AND gradeid=? ");
      }
      if(exam.getClazz() != null){
        int clazzid = exam.getClazzid();
        param.add(clazzid);
        sb.append("AND clazzid=? ");
      }
    }
    String sql = sb.toString().replaceFirst("AND", "WHERE");
    long count = dao.count(sql, param).intValue();
    return count;
  }
  /**
   * 添加考试
   * @param exam
   * @throws Exception
   */
  public void addExam(Exam exam) throws Exception {
    Connection conn = MysqlTool.getConnection();
    try {
      //开启事务
      MysqlTool.startTransaction();
      //添加考试信息
      int examid = dao.insertReturnKeysTransaction(conn, 
          "INSERT INTO exam(name, time, remark, type, gradeid, clazzid, courseid) value(?,?,?,?,?,?,?)", 
          new Object[]{
            exam.getName(), 
            exam.getTime(),
            exam.getRemark(),
            exam.getType(),
            exam.getGradeid(),
            exam.getClazzid(),
            exam.getCourseid()
          });
      //添加学生成绩表
      String sql = "INSERT INTO escore(examid,clazzid,studentid,gradeid,courseid) value(?,?,?,?,?)";
      if(exam.getType() == Exam.EXAM_GRADE_TYPE){ //年级统考
        //查询该年级的课程
        List<Object> couObjList = dao.getList(Course.class, 
            "SELECT courseid id FROM grade_course WHERE gradeid=?", 
            new Object[]{exam.getGradeid()});
        //查询该年级下的学生
        List<Object> stuList = dao.getList(Student.class, 
            "SELECT id, clazzid FROM student WHERE gradeid=?",
            new Object[]{exam.getGradeid()});
        //转换类型
        List<Course> couList = new LinkedList<>();
        for(Object obj : couObjList){
          Course course = (Course) obj;
          couList.add(course);
        }
        //批量参数
        Object[][] param = new Object[stuList.size()*couList.size()][5];
        int index = 0;
        for(int i = 0;i < stuList.size();i++){
          Student student = (Student) stuList.get(i);
          for(int j = 0;j < couList.size();j++){
            param[index][0] = examid;
            param[index][1] = student.getClazzid();
            param[index][2] = student.getId();
            param[index][3] = exam.getGradeid();
            param[index][4] = couList.get(j).getId();
            index++;
          }
        }
        //批量添加学生考试表
        dao.insertBatchTransaction(conn, sql, param);
      } else{  //平时考试
        //查询该班级下的学生
        List<Object> stuList = dao.getList(Student.class, 
            "SELECT id FROM student WHERE clazzid=?",
            new Object[]{exam.getClazzid()});
        //批量参数
        Object[][] param = new Object[stuList.size()][5];
        for(int i = 0;i < stuList.size();i++){
          Student student = (Student) stuList.get(i);
          param[i][0] = examid;
          param[i][1] = exam.getClazzid();
          param[i][2] = student.getId();
          param[i][3] = exam.getGradeid();
          param[i][4] = exam.getCourseid();
        }
        //批量添加学生考试表
        dao.insertBatchTransaction(conn, sql, param);
      }
      //提交事务
      MysqlTool.commit();
    } catch (Exception e) {
      //回滚事务
      MysqlTool.rollback();
      e.printStackTrace();
      throw e;
    } finally {
      MysqlTool.closeConnection();
    }
  }
  /**
   * 删除考试
   * @param ids 
   * @throws Exception 
   */
  public void deleteExam(int id) throws Exception{
    //获取连接
    Connection conn = MysqlTool.getConnection();
    //开启事务
    MysqlTool.startTransaction();
    try {
      //删除成绩表
      dao.deleteTransaction(conn, "DELETE FROM escore WHERE examid=?", new Object[]{id});
      //删除考试
      dao.deleteTransaction(conn, "DELETE FROM exam WHERE id =?", new Object[]{id});
      //提交事务
      MysqlTool.commit();
    } catch (Exception e) {
      //回滚事务
      MysqlTool.rollback();
      e.printStackTrace();
      throw e;
    } finally {
      MysqlTool.closeConnection();
    }
  }
  /**
   * 获取某老师的考试
   * @param id
   * @return
   */
  public String teacherExamList(String number) {
    //获取教师信息
    Teacher teacher = new TeacherService().getTeacher(number);
    List<CourseItem> itemList = teacher.getCourseList();
    if(itemList.size() == 0){
      return "";
    }
    StringBuffer g = new StringBuffer();
    StringBuffer c = new StringBuffer();
    for(CourseItem item : itemList){
      g.append(","+item.getGradeid());
      c.append(","+item.getCourseid());
    }
    StringBuffer sb = new StringBuffer("SELECT * FROM exam WHERE (gradeid IN (");
    sb.append(g.toString().replaceFirst(",", ""));
    sb.append(") AND type=1) OR (courseid IN (");
    sb.append(c.toString().replaceFirst(",", ""));
    sb.append(") AND type=2)");
    //sql语句
    String sql = sb.toString();
    //获取数据
    List<Exam> list = dao.getExamList(sql, null);
        //格式化Map,以json格式返回数据
        String result = JSONArray.fromObject(list).toString();
        //返回
    return result;
  }
  /**
   * 获取某个学生考试列表
   * @param number
   * @return
   */
  public String studentExamList(String number) {
    //获取学生详细信息
    Student student = new StudentDaoImpl().getStudentList("SELECT * FROM student WHERE number="+number, null).get(0);
    String sql = "SELECT * FROM exam WHERE (gradeid=? AND type=1) OR (clazzid=? AND type=2)";
    List<Object> param = new LinkedList<>();
    param.add(student.getGradeid());
    param.add(student.getClazzid());
    //获取数据
    List<Exam> list = dao.getExamList(sql, param);
    //格式化Map,以json格式返回数据
        String result = JSONArray.fromObject(list).toString();
    return result;
  }
}
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
103 0
|
4月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
5月前
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
|
5月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
56 3
|
5月前
|
存储 缓存 前端开发
Servlet与JSP在Java Web应用中的性能调优策略
Servlet与JSP在Java Web应用中的性能调优策略
52 1
|
5月前
|
安全 Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+jsp实现的健身房管理系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术实现的健身房管理系统。随着健康生活观念的普及,健身房成为日常锻炼的重要场所,高效管理会员信息、课程安排等变得尤为重要。该系统旨在通过简洁的操作界面帮助管理者轻松处理日常运营挑战。技术栈包括:JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Shiro、Spring Boot 2.0等。系统功能覆盖登录、会员管理(如会员列表、充值管理)、教练管理、课程管理、器材管理、物品遗失管理、商品管理及信息统计等多方面。
|
5月前
|
供应链 前端开发 Java
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
这篇文章通过一个服装库存管理系统的实例,展示了在Spring Boot项目中使用Ajax、JSON、layui、MVC架构和iframe等技术,涵盖了注册登录、权限管理、用户管理、库存管理等功能,并提供了系统运行环境和技术要求的详细说明。
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
|
5月前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
基于Servlet和JSP的Java Web应用开发指南
133 0
|
5月前
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
36 0
|
5月前
|
监控 前端开发 Java
揭秘Web开发神器:Servlet、过滤器、拦截器、监听器如何联手打造无敌博客系统,让你的用户欲罢不能!
【8月更文挑战第24天】在Java Web开发中,Servlet、过滤器(Filter)、拦截器(Interceptor,特指Spring MVC中的)及监听器(Listener)协同工作,实现复杂应用逻辑。以博客系统为例,Servlet处理文章详情请求,过滤器(如LoginFilter)检查登录状态并重定向,Spring MVC拦截器(如LoggingInterceptor)提供细粒度控制(如日志记录),监听器(如SessionListener)监控会话生命周期事件。这些组件共同构建出高效、有序的Web应用程序。
47 0