精华内容
下载资源
问答
  • WEB课设学生成绩管理系统.zip资源进行解压之后,包含博主本人的WEB课设报告(方便理解设计思路和流程以及源代码)+studentmanagement.zip(导入到eclipse就可以直接运用)+xr-web.sql(数据库文件转储文件,用...
  • 学生成绩管理系统(SSMS),涉及到学生、教师、系统管理员、班级、学生成绩、课程。设置一个系统管理员对系统进行管理。该系统分为三大类:管理员、学生、教师。该项目是基于javaweb进行开发,很适合刚学完javaweb的...
  • 运用Java web的MVC的三层开发模式,结合数据库,设计的学生成绩管理系统源码
  • WEB课设学生成绩管理系统

    万次阅读 多人点赞 2019-07-18 17:40:44
    WEB课设学生成绩管理系统 一、设计内容 学校每年都会有学生基本信息变动,也会举行期中期末考试。如何有效地管理这些学生的基本信息和成绩,帮助学校和老师掌握学生的基本情况,这就是学生成绩管理系统需要完成...

    WEB课设之学生成绩管理系统

    一、设计内容

    学校每年都会有学生基本信息变动,也会举行期中期末考试。如何有效地管理这些学生的基本信息和成绩,帮助学校和老师掌握学生的基本情况,这就是学生成绩管理系统需要完成的功能。学生成绩管理系统主要是用来管理学生基本信息数据与学生成绩的系统。需要提供如录入、删除、修改、查找学生基本信息以及成绩,甚至个别学生或者全体学生成绩报表的导出和学生成绩柱状图的生成。

    1、 系统需求分析
    1.1 系统功能分析
    本系统主要的功能是向学校提供学生的基本信息和考试成绩。
    本系统主要有以下几项功能:
    a、用户登录相应账号并且输入对应密码才能进入系统进行相应操作
    b、添加学生功能:姓名、学号、性别、出生年月日。(学号系统会自动生成且唯一)
    c、根据学生学号或者姓名查找学生信息功能:在界面上显示姓名、学号和成绩
    d、学生信息的修改与删除功能:不能修改学号。
    e、根据学生学号查找学生成绩功能:在界面上显示姓名、学号和成绩。
    f、根据学生姓名(支持模糊匹配)查找学生成绩功能:并在界面上显示姓名、学号和成绩,如果有多个相同姓名学生存在,一起显示出来。
    g、修改添加学生成绩功能:每个人都有数学、Java、英语、体育四门课,可分课程输入成绩。
    h、生成学生学习情况报表功能:报表包含学号、姓名、各科目成绩及对应的该科目班级平均值,总成绩以及班级总成绩平均值,用户可选择分成个人或者全班学习情况导出至excel文件。
    i、支持对单个学生各科成绩生出柱状分布图。

    1.2 系统功能模块设计(划分)
    根据系统功能要求,可以将系统分解成几个模块来分别设计应用程序界面,如图 1-1所示。
    在这里插入图片描述
    图1-1 学生成绩管理系统功能模块图

    1.3 与其它系统的关系
    学生成绩管理系统是校园信息管理系统的一个组成部分。它为其它系统如班级信息管理系统、教学管理系统、宿舍分配系统等提供学生的基本情况。同时需要其他系统提供的班级设置和院系设置等情况。这些系统可以使用同一个数据库,直接相互调用所需的数据。

    1.4 数据流程图
    学生成绩管理系统的数据流程如图1-2所示。
    在这里插入图片描述
    图1-2 学生成绩管理系统数据流程图

    2、数据库设计
    2.1 数据库需求分析
    根据上一节图1-2学生成绩管理系统数据流程图,可以列出以下数据项、数据结构以及外部数据支持。
    记录学生信息所需的数据项和数据结构:
    A、学生信息表:学号、姓名、性别、生日。
    B、学生成绩表:学号、姓名、数学成绩、Java成绩、英语成绩、体育成绩。
    C、学生成绩导出表:学号、姓名、数学成绩、Java成绩、英语成绩、体育和四门科目成绩总分数。
    外部数据支持:
    A、 用户登录表:用户名、密码、用户身份证号码。

    2.2 数据库概念结构设计
    下图2-1是本系统所需数据的 E-R 模型图。
    在这里插入图片描述
    图2-1 学生成绩管理系统所需数据的 E-R 模型图

    2.3 数据库逻辑结构设计
    根据系统E-R图,需要设计3个数据表来存放学生的基本信息和成绩信息。为了系统的完整,系统中包括了应用程序设计中所需的1个外部数据表。这4个数据表如表1到表4所示。
    在这里插入图片描述
    表1 student学生信息表
    在这里插入图片描述
    表2 score学生成绩表
    在这里插入图片描述
    表3 report学生成绩导出表
    在这里插入图片描述
    表4 dlb用户登录表

    二、实现方法

    1、功能说明
    1.1 学生成绩管理系统用户注册登录和登录密码的修改
    1.2 学生个人基本信息输入
    1.3 学生个人基本信息查询、修改和删除
    1.4 学生成绩查询和修改
    1.5 学生个人或者全班成绩导出文件
    1.6 学生个人成绩生成柱状图

    2、系统界面设计
    完成数据库创建和功能说明以后,我们可以进行下一步工作,即设计用户界面。我们的系统主要有以下几个界面:
    2.1 用户账号密码信息注册界面
    2.2 用户账号密码登录界面
    2.3 用户登录失败界面
    2.4 用户密码修改界面
    2.5 学生个人基本信息录入界面
    2.6 学生个人基本信息查找界面
    2.7 查找学号失败界面
    2.8 查找姓名失败界面
    2.9 学生个人基本信息修改界面
    2.10 学生个人基本信息删除界面
    2.11 学生个人成绩查询界面
    2.12 学生个人成绩修改界面
    2.13 学生个人或者全部学生成绩导出文件界面
    2.14 学生个人成绩柱状图生成界面
    2.15 学生个人成绩柱状图显示界面
    2.16 用户操作失败界面
    2.17 用户登录主界面

    3、各功能模块的实现
    在这里插入图片描述
    图3-1用户账号密码信息注册界面

    在这里插入图片描述
    图3-2用户账号密码登录界面

    在这里插入图片描述
    图3-3学生个人基本信息录入界面

    在这里插入图片描述
    图3-4学生个人基本信息查找界面

    在这里插入图片描述
    图3-5学生个人基本信息修改界面

    在这里插入图片描述
    图3-6学生个人或者全部学生成绩导出文件界面

    以上只是WEB课设之学生成绩管理系统部分设计内容,如果想要WEB课设之学生成绩管理系统资源请点击下面资源链接进行下载,希望能帮助到你!

    独家资源:点击资源下载链接
    在这里插入图片描述

    各位大佬如有更好的建议或者不清楚的地方让各位产生了疑问,各位可以在评论中提出!

    展开全文
  • 学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段,但是几年前,各个学校的学生成绩管理基本上...

    大学生课程设计 ------ Java Web课程设计(学生成绩管理系统01)

    Java Web课程设计(代码+课程报告)

    课程作业效果如下:

    学生1:后台实现、数据库设计、前端后台整合

    学生2:前端美化、数据库设计、前端后台整合

    一、 需求

    展开全文
  • web课设作业--学生管理系统-数据库, 直接可以导入数据库,再运行代码,既可调试.
  • 完整的学生成绩管理系统,有学生、教师两个角色,包含数据库。
  • SpringMVC+Mybatis+Mysql学生成绩管理系统 SpringMVC初学者,页面做的不太好看,不过初学嘛,只要功能正常就好啦! 效果展示 数据库 ’

    SpringMVC+Mybatis+Maven+Mysql学生成绩管理系统

    初学SpringMVC,页面做的不太好看,不过重要的是理解页面传参过程。
    本文不是一个教程,没有知识点。就是单纯的分享整个项目源码(包括配置文件)。
    你需要先了解什么是springmvc和maven有什么用。


    我这人学习一门新技术就想先看到结果再去慢慢学,故分享出一个简单的项目来帮助正在学习springmvc的小伙伴。

    环境

    IDE:IntelliJ IDEA 2020.1.2(Ultimate Edition)
    数据库:MySQL 8.0


    效果展示

    登录界面

    登录界面

    主界面(很简陋)

    主界面


    新建工程(如果已经知道如何创建maven就请忽略以下步骤,直接到数据库创建)

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述这一步目的是配置maven的下载源为国内,提高下载速度。(如果不配置,创建项目可能会很慢)首先你要去官网下载maven到本地,具体教程其他博客有(并配置setting.xml,教程解决maven创建项目慢的问题

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    部署到Tomcat(同样,如果会了就请忽略)

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    创建数据库(如果不会创建数据库网上也有教程,下面给的是数据库脚本)

    CREATE DATABASE ssm
    CREATE TABLE student(	
    	id INT PRIMARY KEY AUTO_INCREMENT,
    	s_name VARCHAR(20),
    	s_class VARCHAR(20),
    	s_java DOUBLE,
    	s_c DOUBLE
    )
    CREATE TABLE account(	
    	s_uname VARCHAR(20) PRIMARY KEY,
    	s_pwd VARCHAR(20)
    )
    INSERT INTO account VALUE('admin','admin');//初始账号密码是admin

    项目源码

    项目结构

    项目结构


    Conroller层

    AccountController

    package cn.itcast.controller;
    
    import cn.itcast.domain.Account;
    import cn.itcast.service.AccountService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.swing.text.AbstractDocument;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.List;
    
    /**
     * 帐户web
     */
    @Controller
    @RequestMapping("/account")
    public class AccountController {
    
        @Autowired
        private AccountService accountService;
    
        //查询所有账户信息
        @RequestMapping("/findallaccount")
        public String findAll(Model model){
            System.out.println("表现层:查询所有账户...");
            // 调用service的方法
            List<Account> list = accountService.findAll();
            model.addAttribute("listaccount",list);
            return "listaccount";
        }
    
       //保存账户信息
        @RequestMapping("/saveaccount")
        public String  save(Account account,Model model) {
            System.out.println("表现层:保存账户...");
            // 调用service的方法
            Account account1=accountService.searchAccount(account);
            System.out.println("提交的账户信息"+account1);
            model.addAttribute("saveaccount",account1);
            if(account1==null){
                accountService.saveAccount(account);
                System.out.println("保存账户成功!");
                return "redirect:/Login.jsp";
            }else{
                System.out.println("用户名已存在!");
                return "redirect:/Register.jsp";
            }
        }
    
        //验证账号密码
        @RequestMapping("/check")
        public String check(Account account,Model model,HttpServletResponse response) throws IOException {
            System.out.println("表现层:验证账户...");
            // 调用service的方法
            Account account1=accountService.searchAccount(account);
            model.addAttribute("accountmes",account1);
            System.out.println("提交的账户"+account);
            System.out.println("查询到的账户"+account1);
            if(account1!=null){
                if(account1.getS_pwd().equals(account.getS_pwd())){
                    System.out.println("密码正确!");
                    return "MainPage";
                }else{
                    System.out.println("密码错误!");
                    response.setContentType("text/html;charset=utf-8");
                    String[] ids = null;
                    try {
                        PrintWriter writer = response.getWriter();
                        String msg = null;
                        msg = "alert('密码错误!');history.go(-1)";
                        writer.print("<script type='text/javascript'>" + msg + "</script>");
                        writer.flush();
                        writer.close();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
    
                }
            }else{
                System.out.println("不存在该用户!");
                response.setContentType("text/html;charset=utf-8");
                String[] ids = null;
                try {
                    PrintWriter writer = response.getWriter();
                    String msg = null;
                    msg = "alert('不存在该用户!');history.go(-1)";
                    writer.print("<script type='text/javascript'>" + msg + "</script>");
                    writer.flush();
                    writer.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
            return "redirect:/Login.jsp";
        }
    
    }

    StudentController

    package cn.itcast.controller;
    
    import cn.itcast.domain.Student;
    import cn.itcast.service.StudentService;
    import jdk.nashorn.internal.ir.RuntimeNode;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.List;
    
    @Controller
    @RequestMapping("/student")
    public class StudentController {
        @Autowired
        private StudentService studentService;
        //查询学生信息,排名信息
        @RequestMapping("/findallstudent")
        public String findall(Model model){
    
            // 调用service的方法
            System.out.println("表现层:查询所有学生...");
            List<Student> list = studentService.FindAllStudent();
            model.addAttribute("liststudent",list);
    
            // 调用service的方法
            System.out.println("表现层:对所有学生排名...");
            List<Student> rank = studentService.RankAllStudent();
            model.addAttribute("rankstudent",rank);
    
            // 调用service的方法
            System.out.println("表现层:学生成绩预警...");
            List<Student> alert = studentService.AlertStudent();
            model.addAttribute("alertstudent",alert);
    
            return "liststudent";
    //        return "redirect:/MainPage.jsp";
        }
    
        //查询指定学生信息
        @RequestMapping("/searchstudent")
        public String  search(Student student,Model model){
            // 调用service的方法
            System.out.println("表现层:查询指定学生...");
            List<Student> search = studentService.SearchStudent(student);
            model.addAttribute("searchstudent",search);
    
            // 调用service的方法
            System.out.println("表现层:查询所有学生...");
            List<Student> list = studentService.FindAllStudent();
            model.addAttribute("liststudent",list);
    
            // 调用service的方法
            System.out.println("表现层:对所有学生排名...");
            List<Student> rank = studentService.RankAllStudent();
            model.addAttribute("rankstudent",rank);
    
            // 调用service的方法
            System.out.println("表现层:学生成绩预警...");
            List<Student> alert = studentService.AlertStudent();
            model.addAttribute("alertstudent",alert);
    
            return "liststudent";
        }
        
        //增加学生信息
        @RequestMapping("/insertstudent")
        public String save(Student student) {
            // 调用service的方法
            System.out.println("表现层:增加指定学生...");
            studentService.InsertStudent(student);
            return "redirect:/student/findallstudent";
        }
        
        //删除学生信息
        @RequestMapping("/deletestudent")
        public String delete(Student student){
            // 调用service的方法
            System.out.println("表现层:删除指定学生...");
            studentService.DeleteStudent(student);
            return "redirect:/student/findallstudent";
        }
    
        //修改学生信息
        @RequestMapping("/updatestudent")
        public String update(Student student){
            // 调用service的方法
            System.out.println("表现层:修改指定学生...");
            studentService.UpdateStudent(student);
            return "redirect:/student/findallstudent";
        }
    
    }
    

    Dao层

    AccountDao

    package cn.itcast.dao;
    
    import cn.itcast.domain.Account;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Select;
    import org.springframework.stereotype.Repository;
    import java.util.List;
    
    /**
     * 帐户dao接口
     */
    @Repository
    public interface AccountDao {
    
        // 查询所有账户
        @Select("select * from account")
        public List<Account> findAll();
    
        // 保存帐户信息
        @Insert("insert into account (s_uname,s_pwd) values (#{s_uname},#{s_pwd})")
        public void saveAccount(Account account);
    
        //查询指定账号的密码
        @Select("select * from account where s_uname=#{s_uname}")
        public Account searchAccount(Account account);
    
    }
    

    StudentDao

    package cn.itcast.dao;
    
    import cn.itcast.domain.Student;
    import org.apache.ibatis.annotations.Delete;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Select;
    import org.apache.ibatis.annotations.Update;
    import org.springframework.stereotype.Repository;
    
    import java.util.List;
    
    @Repository
    public interface StudentDao {
    
        @Select("select id,s_name,s_class,s_java,s_c from student order by id")
        public List<Student> FindAllStudent();
    
        @Insert("insert into student (s_name,s_class,s_java,s_c) values (#{s_name},#{s_class},#{s_java},#{s_c})")
        public void InsertStudent(Student student);
    
        @Delete("delete from student where id=#{id}")
        public void DeleteStudent(Student student);
    
        @Update("update student set s_name=#{s_name},s_class=#{s_class},s_java=#{s_java},s_c=#{s_c} where id=#{id}")
        public void UpdateStudent(Student student);
    
        @Select("select id,s_name,s_class,s_java,s_c from student order by s_java+s_c desc")
        public List<Student> RankAllStudent();
    
        @Select("select id,s_name,s_class,s_java,s_c from student where s_name=#{s_name} and s_class=#{s_class}")
        public List<Student> SearchStudent(Student student);
    
        @Select("select * from student where s_java<60 or s_c<60")
        public List<Student> AlertStudent();
    }
    

    service层

    AccountService

    package cn.itcast.service;
    
    import cn.itcast.domain.Account;
    
    import java.util.List;
    
    public interface AccountService {
    
        // 查询所有账户
        public List<Account> findAll();
    
        // 保存帐户信息
        public void saveAccount(Account account);
    
        //查询指定账号信息
        public Account searchAccount(Account account);
    
    }
    

    StudentService

    package cn.itcast.service;
    
    import cn.itcast.domain.Account;
    import cn.itcast.domain.Student;
    
    import java.util.List;
    
    public interface StudentService {
    
        // 查询所有学生信息
        public List<Student> FindAllStudent();
    
        // 插入学生信息
        public void InsertStudent(Student student);
    
        //删除学生信息
        public void DeleteStudent(Student student);
    
        //修改学生信息
        public void UpdateStudent(Student student);
    
        //学生排名
        public List<Student> RankAllStudent();
    
        //查询指定学生
        public List<Student> SearchStudent(Student student);
    
        //成绩预警
        public List<Student> AlertStudent();
    }
    

    AccountServiceImpl

    package cn.itcast.service.impl;
    
    import cn.itcast.dao.AccountDao;
    import cn.itcast.domain.Account;
    import cn.itcast.service.AccountService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service("accountService")
    public class AccountServiceImpl implements AccountService{
    
        @Autowired
        private AccountDao accountDao;
    
    
        public List<Account> findAll() {
            System.out.println("业务层:查询所有账户...");
            return accountDao.findAll();
        }
    
        public void saveAccount(Account account) {
            System.out.println("业务层:保存帐户...");
            accountDao.saveAccount(account);
        }
    
        @Override
        public Account searchAccount(Account account) {
            System.out.println("业务层:查询指定账户...");
            return accountDao.searchAccount(account);
        }
    }

    StudentServiceImpl

    package cn.itcast.service.impl;
    
    import cn.itcast.dao.StudentDao;
    import cn.itcast.domain.Student;
    import cn.itcast.service.StudentService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    
    @Service("studentService")
    public class StudentServiceImpl implements StudentService {
        @Autowired
        private StudentDao studentDao;
    
    
        @Override
        public List<Student> FindAllStudent() {
            System.out.println("业务层:查询所有学生信息...");
            return studentDao.FindAllStudent();
        }
    
        @Override
        public void InsertStudent(Student student) {
            System.out.println("业务层:保存学生信息...");
            studentDao.InsertStudent(student);
        }
    
        @Override
        public void DeleteStudent(Student student) {
            System.out.println("业务层:删除学生信息...");
            studentDao.DeleteStudent(student);
        }
    
        @Override
        public void UpdateStudent(Student student) {
            System.out.println("业务层:修改学生信息...");
            studentDao.UpdateStudent(student);
        }
    
        @Override
        public List<Student> RankAllStudent() {
            System.out.println("业务层:对学生成绩排名...");
            return studentDao.RankAllStudent();
        }
    
        @Override
        public List<Student> SearchStudent(Student student) {
            System.out.println("业务层:查询指定学生信息...");
            return studentDao.SearchStudent(student);
        }
    
        @Override
        public List<Student> AlertStudent() {
            System.out.println("业务层:学生成绩预警...");
            return studentDao.AlertStudent();
        }
    
    
    }
    

    domain(实体层)

    Account

    package cn.itcast.domain;
    
    import java.io.Serializable;
    
    /**
     * 帐户
     */
    public class Account implements Serializable{
    
        private String s_uname;
        private Double s_pwd;
    
        public String getS_uname() {
            return s_uname;
        }
    
        public void setS_uname(String s_uname) {
            this.s_uname = s_uname;
        }
    
        public Double getS_pwd() {
            return s_pwd;
        }
    
        public void setS_pwd(Double s_pwd) {
            this.s_pwd = s_pwd;
        }
    
        @Override
        public String toString() {
            return "Account{" +
                    "s_uname='" + s_uname + '\'' +
                    ", s_pwd=" + s_pwd +
                    '}';
        }
    }
    

    Student

    package cn.itcast.domain;
    
    import java.io.Serializable;
    
    public class Student implements Serializable {
        private Integer id;
        private String s_name;
        private String s_class;
        private Double s_java;
        private Double s_c;
        private Double s_total;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getS_name() {
            return s_name;
        }
    
        public void setS_name(String s_name) {
            this.s_name = s_name;
        }
    
        public String getS_class() {
            return s_class;
        }
    
        public void setS_class(String s_class) {
            this.s_class = s_class;
        }
    
        public Double getS_java() {
            return s_java;
        }
    
        public void setS_java(Double s_java) {
            this.s_java = s_java;
        }
    
        public Double getS_c() {
            return s_c;
        }
    
        public void setS_c(Double s_c) {
            this.s_c = s_c;
        }
    
        public Double getS_total() {
            return this.s_c+this.s_java;
        }
    
        public void setS_total(Double s_total) {
            this.s_total = s_total;
        }
    }
    

    MainPage.jsp

    <%--
      Created by IntelliJ IDEA.
      User: mzx
      Date: 2020/6/11
      Time: 20:31
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>$Title$</title>
        <style>
            body {
                margin: 0;
                padding: 0;
                border: 0;
                overflow: hidden;
                height: 100%;
                max-height: 100%;
            }
            #frameTop {
                position: absolute;
                top: 0;
                left: 0;
                height: 100%;
                width: 100%;
                overflow: hidden;
                vertical-align: middle;
            }
            #frameContentRight {
                position: absolute;
                left: 0px;
                top: 100px;
                height: 85%;
                width: 100%;
                overflow: hidden;
                vertical-align: top;
                background: #fff;
            }
        </style>
    </head>
    <body>
    <div>
        <iframe id="frameTop" src="../../Title.html" scrolling="no"></iframe>
    </div>
    <div>
        <iframe id="frameContentRight" name="display" src="/student/findallstudent" scrolling="auto"></iframe>
    </div>
    </body>
    </html>

    liststudent.jsp

    <%--
      Created by IntelliJ IDEA.
      User: mzx
      Date: 2018/5/6
      Time: 0:24
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
        <title>Title</title>
        <style>
            body{
                position: relative;
            }
            #edit_comm{
                position: absolute;
                display: none;
                width:450px;
                height: 80%;
            }
            #add_comm{
                position: absolute;
                display: inline-block;
                width:450px;
                height: 200px;
            }
    
            .t1{
                margin-left: 470px;
                position: absolute;
                display: inline-block;
                width:450px;
                height: 80%;
            }
            .t2{
                margin-left: 940px;
                position: absolute;
                display: inline-block;
                width:490px;
                height: 80%;
            }
            .t3{
                margin-left: 940px;
                position: absolute;
                display: none;
                width:490px;
                height: 80%;
            }
            .a2:hover{
                color: lightskyblue;
            }
            table, td, th
            {
                border:1px solid lightskyblue;
                text-align: center;
                padding: 5px 0px;
                border-radius: 4px;
            }
            td:hover{
                border: 1px solid red;
            }
            .btn:hover{
                color: lightskyblue;
            }
            .t2_d{
                text-align: center;
            }
            .h3{
                display: inline-block;
            }
            .a3{
                display: inline-block;
            }
            .a3:hover{
                color: red;
            }
        </style>
    
    </head>
    <body>
    <script>
        function refush() {
            window.location.href="/student/findallstudent" ;
        }
        
        function delete_stu(id){
            var s_class =document.getElementById("s_class"+id).innerHTML;
            var s_name =document.getElementById("s_name"+id).innerHTML;
            var result = confirm("是否删除"+s_class+"ID为"+id+"的"+s_name+"同学的信息");
            if(result)
                window.location.href="/student/deletestudent?id="+id;
        }
        
        function update_stu(id) {
            var s_name =document.getElementById("s_name"+id).innerHTML;
            var s_class =document.getElementById("s_class"+id).innerHTML;
            var s_java = document.getElementById("s_java"+id).innerHTML;
            var s_c =document.getElementById("s_c"+id).innerHTML;
    
            var result = confirm("是否修改"+s_class+"ID为"+id+"的"+s_name+"同学的信息");
            if(result){
    
                document.getElementById("edit_id").value=(id);
                document.getElementById("edit_s_name").value=(s_name);
                document.getElementById("edit_s_class").value=(s_class);
                document.getElementById("edit_s_java").value=(s_java);
                document.getElementById("edit_s_c").value=(s_c);
    
                // alert(s_name+s_class+s_java+s_c);
                document.getElementById("add_comm").style.display='none'
                document.getElementById("edit_comm").style.display='inline-block'
            }
        }
        function  alertstudent() {
            document.getElementById("rankstudent").style.display="none"
            document.getElementById("alertstudent").style.display="inline-block"
        }
    
    </script>
    <div id="add_comm">
        <h3 align="center">添加学生信息</h3>
        <form action="/student/insertstudent" method="post">
            <table align="center" border="1px" >
                <tr><td align="center">学生姓名:<input type="text" placeholder="请输入学生姓名" name="s_name" /></td></tr>
                <tr>
                    <td align="center">
                        班级:<select name="s_class">
                        <option value="计本17-1班">计本17-1</option>
                        <option value="计本17-2班">计本17-2</option>
                        <option value="网络17-1班">网络17-1</option>
                        <option value="网络17-2班">网络17-2</option>
                    </select>
                    </td>
                </tr>
                <tr>
                    <td align="center">java成绩:<input type="text" placeholder="请输入java成绩" name="s_java" /></td>
                </tr>
                <tr>
                    <td align="center">c语言成绩:<input type="text" placeholder="请输入c成绩" name="s_c" /></td>
                </tr>
                <tr>
                    <td align="center"><input type="submit" class="btn" value="保存"/></td>
                </tr>
            </table>
        </form>
        <h3 align="center">查询学生信息</h3>
        <form action="/student/searchstudent" method="post">
            <table align="center">
                <tr>
                    <td><input type="text" name="s_name" placeholder="请输入要查询的学生姓名"></td>
                </tr>
                <tr>
                    <td align="center">
                        班级:<select name="s_class" >
                        <option value="计本17-1班">计本17-1</option>
                        <option value="计本17-2班">计本17-2</option>
                        <option value="网络17-1班">网络17-1</option>
                        <option value="网络17-2班">网络17-2</option>
                    </select>
                    </td>
                </tr>
                <tr>
                    <td>
                        <input type="submit" class="btn" value="查询">
                    </td>
                </tr>
            </table>
        </form>
        <h3 align="center">查询结果显示</h3>
        <table align="center" border="1">
            <tr>
                <td>ID</td>
                <td>姓名</td>
                <td>班级</td>
                <td>java成绩</td>
                <td>c语言成绩</td>
                <td>总成绩</td>
                <td>操作</td>
            </tr>
                <c:forEach items="${searchstudent}" var="student">
                    <tr>
                        <td  id="id${student.id}" align="center">${student.id}</td>
                        <td  id="s_name${student.id}" align="center">${student.s_name}</td>
                        <td  id="s_class${student.id}" align="center">${student.s_class}</td>
                        <td  id="s_java${student.id}" align="center">${student.s_java}</td>
                        <td  id="s_c${student.id}" align="center">${student.s_c}</td>
                        <td  id="s_total${student.id}" align="center">${student.s_total}</td>
                        <td align="center"><a class="a2" onclick="delete_stu(${student.id})">删除</a>/<a class="a2" onclick="update_stu(${student.id})">修改</a> </td>
                    </tr>
                </c:forEach>
        </table>
    </div>
    
    
    <div class="t" id="edit_comm">
        <h2 id="edit_title" align="center">编辑学生</h2>
        <form action="/student/updatestudent" method="post">
            <table align="center" border="1">
                <tr>
                    <td align="center" >
                        ID<input type="text" id="edit_id" name="id" value="">
                    </td>
                </tr>
                <tr>
                    <td align="center">
                        学生姓名<input type="text" placeholder="请输入学生姓名" value="" id="edit_s_name" name="s_name" />
                    </td>
                </tr>
                <tr>
                    <td align="center">
                        班级:<select name="s_class" id="edit_s_class">
                                <option value="计本17-1班">计本17-1</option>
                                <option value="计本17-2班">计本17-2</option>
                                <option value="网络17-1班">网络17-1</option>
                                <option value="网络17-2班">网络17-2</option>
                            </select>
                    </td>
                </tr>
                <tr>
                    <td align="center">
                        java成绩<input type="text" placeholder="请输入java成绩" value="" id="edit_s_java" name="s_java" >
                    </td>
                </tr>
                <tr>
                    <td align="center">
                        c语言成绩<input type="text" placeholder="请输入c成绩" value="" id="edit_s_c" name="s_c" />
                    </td>
                </tr>
                <tr>
                    <td align="center">
                        <input type="submit" value="确定修改" class="btn"/>
                        <input type="button" value="取消修改" onclick="refush()" class="btn"/>
                    </td>
                </tr>
            </table>
        </form>
    </div>
    
    <div class="t1">
        <h3 align="center">所有学生成绩信息</h3>
        <table align="center" border="1">
            <tr>
                <td>ID</td>
                <td>姓名</td>
                <td>班级</td>
                <td>java成绩</td>
                <td>c语言成绩</td>
                <td>总成绩</td>
                <td>操作</td>
            </tr>
    
            <c:forEach items="${liststudent}" var="student">
                <tr>
                    <td  id="id${student.id}" align="center">${student.id}</td>
                    <td  id="s_name${student.id}" align="center">${student.s_name}</td>
                    <td  id="s_class${student.id}" align="center">${student.s_class}</td>
                    <td  id="s_java${student.id}" align="center">${student.s_java}</td>
                    <td  id="s_c${student.id}" align="center">${student.s_c}</td>
                    <td  id="s_total${student.id}" align="center">${student.s_total}</td>
                    <td align="center"><a class="a2" onclick="delete_stu(${student.id})">删除</a>/<a class="a2" onclick="update_stu(${student.id})">修改</a> </td>
                </tr>
            </c:forEach>
    
        </table>
    
    </div>
    
    <div class="t2" id="rankstudent">
        <div class="t2_d">
            <h3 align="center" class="h3">成绩排名</h3>
            <a onclick="alertstudent()" class="a3">!成绩预警!</a>
        </div>
    
        <table align="center" border="1">
            <tr>
                <td align="center">名次</td>
                <td align="center">ID</td>
                <td align="center">姓名</td>
                <td align="center">班级</td>
                <td align="center">java成绩</td>
                <td align="center">c语言成绩</td>
                <td align="center">总分数</td>
            </tr>
                <c:forEach items="${rankstudent}" var="student" varStatus="rank">
                    <tr>
                        <td  align="center">第${rank.count}</td>
                        <td  align="center">${student.id}</td>
                        <td  align="center">${student.s_name}</td>
                        <td  align="center">${student.s_class}</td>
                        <td  align="center">${student.s_java}</td>
                        <td  align="center">${student.s_c}</td>
                        <td  align="center">${student.s_total}</td>
                    </tr>
            </c:forEach>
        </table>
    </div>
    
    <div class="t3" id="alertstudent">
        <h3 align="center" style="color: red">单科成绩有不及格的同学!</h3>
        <table align="center" border="1">
            <tr>
                <td align="center">ID</td>
                <td align="center">姓名</td>
                <td align="center">班级</td>
                <td align="center">java成绩</td>
                <td align="center">c语言成绩</td>
                <td align="center">总分数</td>
            </tr>
            <c:forEach items="${alertstudent}" var="student" >
                <tr>
                    <td  align="center">${student.id}</td>
                    <td  align="center">${student.s_name}</td>
                    <td  align="center">${student.s_class}</td>
                    <td  align="center">${student.s_java}</td>
                    <td  align="center">${student.s_c}</td>
                    <td  align="center">${student.s_total}</td>
                </tr>
            </c:forEach>
        </table>
    </div>
    
    </body>
    </html>

    title.html

    <!DOCTYPE html>
    <html>
      <head>
        <title>Titlel.html</title>
       
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="title">
        <meta name="content-type" content="text/html; charset=UTF-8">
       <style>
          body{
             background:lightskyblue;
             text-align:center;
          }
       </style>
      </head>
    
      <body>
        <h1 align=center >欢迎进入学生成绩管理系统!</h1>
      </body>
    </html>
    

    Login.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
             pageEncoding="utf-8"%>
    <html>
    <head>
        <title>登录界面</title>
        <style>
            body {
                margin: 0;
                padding: 0;
                font-family: sans-serif;
                background: lightskyblue;
            }
            .box {
                width: 300px;
                padding: 40px;
                position: absolute;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%);
                background: #191919;
                text-align: center;
                border-radius: 8px;
            }
            .box h1 {
                color: white;
                text-transform: uppercase;
                font-weight: 500;
            }
            .box input[type='text'],
            .box input[type='password'] {
                border: 0;
                background: none;
                display: block;
                margin: 20px auto;
                text-align: center;
                border: 2px solid #3498db;
                padding: 14px 10px;
                width: 200px;
                outline: none;
                color: white;
                border-radius: 24px;
                transition: 0.25s;
            }
            .box input[type='text']:focus,
            .box input[type='password']:focus {
                width: 280px;
                border-color: #2ecc71;
            }
            .submit {
                border: 0;
                background: none;
                margin: 20px auto;
                margin-top: 0;
                display: inline-block;
                text-align: center;
                border: 2px solid #3498db;
                padding: 10px 40px;
                outline: none;
                color: white;
                border-radius: 24px;
                transition: 0.25s;
                cursor: pointer;
                text-decoration: none;
                font-size: 12px;
            }
            .submit:hover {
                background: #2ecc71;
                border-color: #2ecc71;
            }
        </style>
    </head>
    <body>
    <form action="/account/check" method="post">
        <div class="box">
            <h1>Welcome</h1>
            <input type="text"  name="s_uname" placeholder="Username" />
            <input type="password" name="s_pwd" placeholder="Password" />
            <input type="submit" class="submit" name="bt" value="登录"/>
            <a  class="submit" href="Register.jsp">没有账号?注册一个</a>
        </div>
    </form>
    </body>
    </html>

    Register.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ page contentType="text/html;charset=UTF-8"%>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <html>
    <head>
        <base href="<%=basePath%>">
        <title>My JSP 'Register.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <meta content="text/html;charset=UTF-8" />
           <style>
            body {
                margin: 0;
                padding: 0;
                font-family: sans-serif;
                background: lightskyblue;
            }
            .box {
                width: 300px;
                padding: 40px;
                position: absolute;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%);
                background: #191919;
                text-align: center;
            }
            .box h1 {
                color: white;
                text-transform: uppercase;
                font-weight: 500;
            }
            .box input[type='text'],
            .box input[type='password'] {
                border: 0;
                background: none;
                display: block;
                margin: 20px auto;
                text-align: center;
                border: 2px solid #3498db;
                padding: 14px 10px;
                width: 200px;
                outline: none;
                color: white;
                border-radius: 24px;
                transition: 0.25s;
            }
            .box input[type='text']:focus,
            .box input[type='password']:focus {
                width: 280px;
                border-color: #2ecc71;
            }
            .submit {
                border: 0;
                background: none;
                margin: 20px auto;
                margin-top: 0;
                display: inline-block;
                text-align: center;
                border: 2px solid #3498db;
                padding: 10px 40px;
                outline: none;
                color: white;
                border-radius: 24px;
                transition: 0.25s;
                cursor: pointer;
                text-decoration: none;
                font-size: 12px;
            }
            .submit:hover {
                background: #2ecc71;
                border-color: #2ecc71;
            }
        </style>
    
    </head>
    <body>
    <form action="/account/saveaccount" method="post">
        <div class="box">
            <h1>Register</h1>
            <input type="text"  name="s_uname" placeholder="Username" />
            <input type="password" name="s_pwd" placeholder="Password" />
            <input type="submit" class="submit" name="submit" value="完成,提交"/>
            <input type="reset" class="submit" name="reset" value="重置"/>
        </div>
    </form>
    </body>
    </html>

    配置文件

    web.xml

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
      <display-name>Archetype Created Web Application</display-name>
    
      <!--配置Spring的监听器,默认只加载WEB-INF目录下的applicationContext.xml配置文件-->
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      <!--设置配置文件的路径-->
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
      </context-param>
      <context-param>
        <param-name/>
        <param-value/>
      </context-param>
    
      <welcome-file-list>
        <welcome-file>Login.jsp</welcome-file>
      </welcome-file-list>
      
      <!--配置前端控制器-->
      <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--加载springmvc.xml配置文件-->
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <!--启动服务器,创建该servlet-->
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    
      <!--解决中文乱码的过滤器-->
      <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
          <param-name>encoding</param-name>
          <param-value>UTF-8</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
      
    </web-app>
    

    applicationContext.xml(注意修改数据库名字和你的数据库账号密码)

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">
    
        <!--开启注解的扫描,希望处理service和dao,controller不需要Spring框架去处理-->
        <context:component-scan base-package="cn.itcast" >
            <!--配置哪些注解不扫描-->
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
        </context:component-scan>
    
        <!--Spring整合MyBatis框架-->
        <!--配置连接池-->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="com.mysql.cj.jdbc.Driver"/>
            <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssm?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;zeroDateTimeBehavior=CONVERT_TO_NULL"/>
            <property name="user" value="root"/>
            <property name="password" value="123456"/>
        </bean>
    
        <!--配置SqlSessionFactory工厂-->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
        </bean>
    
        <!--配置AccountDao接口所在包-->
        <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="cn.itcast.dao"/>
        </bean>
    
        <!--配置Spring框架声明式事务管理-->
        <!--配置事务管理器-->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
    
        <!--配置事务通知-->
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="find*" read-only="true"/>
                <tx:method name="*" isolation="DEFAULT"/>
            </tx:attributes>
        </tx:advice>
    
        <!--配置AOP增强-->
        <aop:config>
            <aop:advisor advice-ref="txAdvice" pointcut="execution(* cn.itcast.service.impl.*ServiceImpl.*(..))"/>
        </aop:config>
    
    </beans>

    log4j.properties

    # Set root category priority to INFO and its only appender to CONSOLE.
    #log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
    log4j.rootCategory=info, CONSOLE, LOGFILE
    
    # Set the enterprise logger category to FATAL and its only appender to CONSOLE.
    log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
    
    # CONSOLE is set to be a ConsoleAppender using a PatternLayout.
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
    
    # LOGFILE is set to be a File appender using a PatternLayout.
    log4j.appender.LOGFILE=org.apache.log4j.FileAppender
    log4j.appender.LOGFILE.File=d:\axis.log
    log4j.appender.LOGFILE.Append=true
    log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
    
    

    springmvc.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
    
        <!--开启注解扫描,只扫描Controller注解-->
        <context:component-scan base-package="cn.itcast.controller">
            <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
        </context:component-scan>
    
        <!--开启SpringMVC注解的支持-->
        <mvc:annotation-driven/>
        <mvc:default-servlet-handler />
    
        <!--配置的视图解析器对象-->
        <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/pages/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    
        <!--过滤静态资源-->
        <mvc:resources location="/css/" mapping="/css/**" />
        <mvc:resources location="/images/" mapping="/images/**" />
        <mvc:resources location="/js/" mapping="/js/**" />
    </beans>

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>cn.itcast</groupId>
      <artifactId>ssm</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>war</packaging>
    
      <name>ssm Maven Webapp</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <spring.version>5.0.2.RELEASE</spring.version>
        <slf4j.version>1.6.6</slf4j.version>
        <log4j.version>1.2.12</log4j.version>
        <mybatis.version>3.4.5</mybatis.version>
      </properties>
    
      <dependencies>
        <!-- spring -->
        <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjweaver</artifactId>
          <version>1.6.8</version>
        </dependency>
    
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-aop</artifactId>
          <version>${spring.version}</version>
        </dependency>
    
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>${spring.version}</version>
        </dependency>
    
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>${spring.version}</version>
        </dependency>
    
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>${spring.version}</version>
        </dependency>
    
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-test</artifactId>
          <version>${spring.version}</version>
        </dependency>
    
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-tx</artifactId>
          <version>${spring.version}</version>
        </dependency>
    
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>${spring.version}</version>
        </dependency>
    
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
          <scope>compile</scope>
        </dependency>
    
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.13</version>
        </dependency>
    
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
          <version>2.5</version>
          <scope>provided</scope>
        </dependency>
    
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.0</version>
          <scope>provided</scope>
        </dependency>
    
        <dependency>
          <groupId>jstl</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
        </dependency>
    
        <!-- log start -->
        <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>${log4j.version}</version>
        </dependency>
    
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>${slf4j.version}</version>
        </dependency>
    
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>${slf4j.version}</version>
        </dependency>
    
        <!-- log end -->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>${mybatis.version}</version>
        </dependency>
    
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>1.3.0</version>
        </dependency>
    
        <dependency>
          <groupId>c3p0</groupId>
          <artifactId>c3p0</artifactId>
          <version>0.9.1.2</version>
          <type>jar</type>
          <scope>compile</scope>
        </dependency>
      </dependencies>
    
      <build>
        <finalName>ssm</finalName>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
          <plugins>
            <plugin>
              <artifactId>maven-clean-plugin</artifactId>
              <version>3.0.0</version>
            </plugin>
            <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
            <plugin>
              <artifactId>maven-resources-plugin</artifactId>
              <version>3.0.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.7.0</version>
            </plugin>
            <plugin>
              <artifactId>maven-surefire-plugin</artifactId>
              <version>2.20.1</version>
            </plugin>
            <plugin>
              <artifactId>maven-war-plugin</artifactId>
              <version>3.2.0</version>
            </plugin>
            <plugin>
              <artifactId>maven-install-plugin</artifactId>
              <version>2.5.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-deploy-plugin</artifactId>
              <version>2.8.2</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </project>
    

    这个项目是跟着视频边学边做的,有缺陷的地方请指多指教。
    希望能给大家学习的路上带来一些微小的帮助!

    百度网盘
    提取码:rzpz

    展开全文
  • 父类User的设计,因为不管是管理员、教师还是学生对于整个系统来说他们都是有很多的共同的属性,所以他们都是继承于User类。User里面都是一些关于用户的一些属性比如:用户名、密码等 同时也为User设置对应的构造...

    写在前面

    之前一节已经将课设编码需要的环境配置完成了,这一节将介绍实体类的设计和异常类的设计。

    一、实体类的设计

    整体结构
    在这里插入图片描述

    • 父类User的设计,因为不管是管理员、教师还是学生对于整个系统来说他们都是有很多的共同的属性,所以他们都是继承于User类。User里面都是一些关于用户的一些属性比如:用户名、密码等 同时也为User设置对应的构造方法和访问修改器,还为User实现了可序列化接口。因为之前使用的不是json来写对象的,所以需要实现序列化。
    package studentSystem.pojo;
    
    import java.io.Serializable;
    
    /**
     * 用户实体类
     */
    public class User implements Serializable {
    
        private static final long serialVersionUID = 1L;
    
        /**
         * id
         */
        private Integer id;
    
        /**
         * 用户名
         */
        private String username;
    
        /**
         * 密码
         */
        private String password;
    
        /**
         * 身份(1 学生 2 老师)
         */
        private Integer identity;
    
        /**
         * 姓名
         */
        private String name;
    
        /**
         * 性别
         */
        private String sex;
    
        /**
         * 年龄
         */
        private Integer age;
    
        /**
         * 联系方式
         */
        private String phone;
    
        public User(Integer id, String username, String password, Integer identity, String name, String sex, Integer age, String phone) {
            this.id = id;
            this.username = username;
            this.password = password;
            this.identity = identity;
            this.name = name;
            this.sex = sex;
            this.age = age;
            this.phone = phone;
        }
    
        public User() {
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public Integer getIdentity() {
            return identity;
        }
    
        public void setIdentity(Integer identity) {
            this.identity = identity;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public String getPhone() {
            return phone;
        }
    
        public void setPhone(String phone) {
            this.phone = phone;
        }
    }
    
    
    • 学生实体类Student的设计,该类里面我只设置了学号,也可以设置其他的属性,因为时间的原因我就设置的比较的简单,这并不影响后续的实验,只是字段的增加。Student类继承User类,同时也实现类序列化,并为该类设置相应的构造方法和访问修改器。同时为了方便测试还重写了toString方法,这样打印出来的数据就更加的清晰。这里面有一个idCount属性,是一个静态属性,因为之前考虑使用用户id作为唯一标识,后面设置这个属性作为new一个对象他的ID就是对应的增加1,这样用户的id就不会重复,但是发现在实现可视化的时候ID有点多余,就是用学号作为标识,这样会更加的简单。因为管理员、教师和学生是分为3个表存储的,所以不需要考虑他们之间的冲突。
    package studentSystem.pojo;
    
    import java.io.Serializable;
    
    /**
     * 学生实体类
     */
    public class Student extends User implements Serializable {
    
        private static final long serialVersionUID = 1L;
    
        public static int idCount = 1;
    
        /**
         * 学号
         */
        private String studentNum;
    
    
        public Student(Integer id, String username, String password, Integer identity, String name, String sex, Integer age, String phone, String studentNum) {
            super(id, username, password, identity, name, sex, age, phone);
            this.studentNum = studentNum;
            idCount++;
        }
    
        public Student(String studentNum) {
            this.studentNum = studentNum;
        }
    
        public Student() {
        }
    
        public String getStudentNum() {
            return studentNum;
        }
    
        public void setStudentNum(String studentNum) {
            this.studentNum = studentNum;
        }
    
        @Override
        public String toString() {
            StringBuffer stringBuffer = new StringBuffer();
            String user = "ID: " + this.getId() + ", 用户名: " + this.getUsername() + ", 密码: " + this.getPassword()
                    + ", 身份: " + this.getIdentity() + ", 姓名: " + this.getName() + ", 性别: " + this.getSex()
                    + ", 年龄: " + this.getAge() + ", 联系方式: " + this.getPhone();
            String student = "学号: " + this.getStudentNum();
            stringBuffer.append(user);
            stringBuffer.append(", ");
            stringBuffer.append(student);
            return stringBuffer.toString();
        }
    }
    
    
    • 教师实体类Teacher,和学生实体类类似,只是将学号改为职工号。也是继承User类实现序列化,同样增加构造方法和get、set方法。
    package studentSystem.pojo;
    
    import java.io.Serializable;
    
    /**
     * 教师实体类
     */
    public class Teacher extends User implements Serializable {
    
        private static final long serialVersionUID = 1L;
    
        public static int idCount = 0;
    
        private String workNum;
    
        public Teacher(Integer id, String username, String password, Integer identity, String name, String sex, Integer age, String phone, String workNum) {
            super(id, username, password, identity, name, sex, age, phone);
            this.workNum = workNum;
            idCount++;
        }
    
        public Teacher() {
        }
    
        public Teacher(String workNum) {
            this.workNum = workNum;
        }
    
        public String getWorkNum() {
            return workNum;
        }
    
        public void setWorkNum(String workNum) {
            this.workNum = workNum;
        }
    
        @Override
        public String toString() {
            StringBuffer stringBuffer = new StringBuffer();
            String user = "ID: " + this.getId() + ", 用户名: " + this.getUsername() + ", 密码: " + this.getPassword()
                    + ", 身份: " + this.getIdentity() + ", 姓名: " + this.getName() + ", 性别: " + this.getSex()
                    + ", 年龄: " + this.getAge() + ", 联系方式: " + this.getPhone();
            String teacher = "职工号: " + this.getWorkNum();
            stringBuffer.append(user);
            stringBuffer.append(", ");
            stringBuffer.append(teacher);
            return stringBuffer.toString();
        }
    }
    
    • 管理员实体类Admin,和之前的实体类相同,将学号换为职工号,他和教师实体类差不多一样,但是为了区分我就把他们分开了。因为我最后测试的时候只用一个管理员就可以了,不需要专门对于管理员进行功能开发。课设的题目上只需要2个用户:学生和教师,这个管理员是我自己增加的。
    package studentSystem.pojo;
    
    /**
     * @author D.hu
     * @date 2020/12/6
     * @desc
     */
    public class Admin extends User {
    
        private String workNum;
    
        public Admin(Integer id, String username, String password, Integer identity, String name, String sex, Integer age, String phone, String workNum) {
            super(id, username, password, identity, name, sex, age, phone);
            this.workNum = workNum;
        }
    
        public Admin() {
        }
    
        public Admin(String workNum) {
            this.workNum = workNum;
        }
    
        public String getWorkNum() {
            return workNum;
        }
    
        public void setWorkNum(String workNum) {
            this.workNum = workNum;
        }
    
    }
    
    • 学科实体类Subject,这个类是记录每一个学生的每一个科目对应的分数,所以他会和学号关联起来,这样就相当于数据库中的链接查询。本来做的是将成绩作为一个hashmap放入学生实体类中,后面为了简单点就是用分开的了。不过hashmap也挺好用。成绩类实现了Comparable接口,为了后面方便使用Java的Stream流进行排序操作。
    package studentSystem.pojo;
    
    import java.io.Serializable;
    
    /**
     * 成绩实体类
     */
    public class Subject implements Serializable, Comparable<Subject>{
    
        private static final long serialVersionUID = 1L;
    
        /**
         * 学号
         */
        private String studentNum;
    
        /**
         * 语文
         */
        private Integer Chinese;
    
        /**
         * 数学
         */
        private Integer Math;
    
        /**
         * 英语
         */
        private Integer English;
    
        /**
         * 物理
         */
        private Integer Physics;
    
        /**
         * 化学
         */
        private Integer Chemistry;
    
        /**
         * 生物
         */
        private Integer Biology;
    
        /**
         * 总分
         */
        private Integer sum;
    
        public Subject() {
        }
    
        public Subject(String studentNum, Integer chinese, Integer math, Integer english, Integer physics, Integer chemistry, Integer biology) {
            this.studentNum = studentNum;
            Chinese = chinese;
            Math = math;
            English = english;
            Physics = physics;
            Chemistry = chemistry;
            Biology = biology;
            this.sum = chinese + math + english + physics + chemistry + biology;
        }
    
        public String getStudentNum() {
            return studentNum;
        }
    
        public void setStudentNum(String studentNum) {
            this.studentNum = studentNum;
        }
    
        public Integer getChinese() {
            return Chinese;
        }
    
        public void setChinese(Integer chinese) {
            Chinese = chinese;
        }
    
        public Integer getMath() {
            return Math;
        }
    
        public void setMath(Integer math) {
            Math = math;
        }
    
        public Integer getEnglish() {
            return English;
        }
    
        public void setEnglish(Integer english) {
            English = english;
        }
    
        public Integer getPhysics() {
            return Physics;
        }
    
        public void setPhysics(Integer physics) {
            Physics = physics;
        }
    
        public Integer getChemistry() {
            return Chemistry;
        }
    
        public void setChemistry(Integer chemistry) {
            Chemistry = chemistry;
        }
    
        public Integer getBiology() {
            return Biology;
        }
    
        public void setBiology(Integer biology) {
            Biology = biology;
        }
    
        public Integer getSum() {
            return sum;
        }
    
        public void setSum(Integer sum) {
            this.sum = sum;
        }
    
        @Override
        public String toString() {
            StringBuffer stringBuffer = new StringBuffer();
            String subject = "成绩:" + "Chinese: " + this.getChinese() + ", Math: " + this.getMath()
                    + ", English: " + this.getEnglish() + ", Physics: " + this.getPhysics()
                    + ", Chemistry: " + this.getChemistry() + ", Biology: " + this.getBiology()
                    + ", sum: " + this.getSum();
            stringBuffer.append(subject);
            return stringBuffer.toString();
        }
    
        @Override
        public int compareTo(Subject o) {
            return this.sum.compareTo(o.getSum());
        }
    }
    

    二、异常类的设计

    在程序设计中我们难免会遇到很多的异常,比如分母为0的运算,这样会使程序异常的结束,所以我们得实现一些异常处理类去捕获和处理这些异常。自定义的异常都可以通过继承Exception类来实现。也可以继承具体的异常类实现。这里为了简单就只是用Exception类。
    在这里插入图片描述

    • 用户不存在异常
      当我们在查询用户和进行登陆的时候,会对数据进行查找,如果没有找到就会返回为null,那么你对这个null对象进行get和set的化就会报错空指针异常。所以需要进行异常的处理。这个课设没有要求异常操作,这里只是简单的实现一下,没有做对应的具体处理。本来想做成像springboot那样全局捕获异常,然后处理,我查了资料,没有查到使用原生Java写的,所以以后有时间在做吧。
    package studentSystem.myException;
    
    public class UserNotFoundException extends Exception {
    
        public UserNotFoundException(String message) {
            super(message);
        }
        
    }
    
    • 用户已经存在异常,当我们插入数据的时候,可以这个用户已经存在了,所以可以定义一个异常进行处理一下。
    package studentSystem.myException;
    
    public class UserIsExistException extends Exception {
    
        public UserIsExistException(String message) {
            super(message);
        }
    }
    
    • 同样的对应的课程信息和用户的类似我就不多叙述了
    package studentSystem.myException;
    
    /**
     * @author D.hu
     * @date 2020/12/6
     * @desc
     */
    public class SubjectIsExistException extends Exception {
    
        public SubjectIsExistException(String message) {
            super(message);
        }
    }
    
    
    package studentSystem.myException;
    
    public class SubjectNotFoundException extends Exception {
    
        public SubjectNotFoundException(String message) {
            super(message);
        }
    }
    
    

    这些定义的异常都只是简单的实现比如打印对应的义仓你信息等,没有做的非常的好。如果需要设计的一个完成的化,可以设计一个专门作为出参的处理类,里面有对应的信息属性、返回的code编码和一个范型结果,如果有数据的返回就将数据放入这个范型里面,这样就是可以实现,但是有一个前提就是得实现全局播捕获这些异常,有异常就直接返回,这个对象,可以通过返回的编码来实现判断是什么类型的异常。(这只是我个人的一个思路,因为之前在用springboot写Web项目的时候就是使用的这个想法)

    三、总结

    这一节介绍了实体类的实现和异常的设计,都是比较简单的设计,因为时间紧迫就没有进行复杂的想法,本节如有错误,欢迎指正!!!

    关于本篇的其他的章节

    Java课设–学生成绩管理系统一
    Java课设–学生成绩管理系统二
    Java课设–学生成绩管理系统四
    Java课设–学生成绩管理系统五
    Java课设–学生成绩管理系统六
    Java课设–学生成绩管理系统七
    Java课设–学生成绩管理系统八

    展开全文
  • 本次课程设计课题为学生成绩管理系统,该学生成绩管理系统主要包括前台用户界面的开发和后台数据库的开发,重点在于后台数据库的开发。要求建立起完整性强、数据一致性和数据安全性好的数据库。在前端用户界面的开发...
  • 用idea实现的学生成绩管理系统,完成的功能 包括登录注册 成绩记录 修改 删除 添加
  • 基于WEB学生管理系统

    2014-12-15 22:19:52
    基于WEB学生管理系统 ,综合考虑了学生管理的复杂性 故设计了此系统
  • 系统说明: ... (7)成绩管理:教师登录系统后,可以查询自己教授的课程并对学生的成绩打分。 (8)系统管理: 修改登录密码,关于系统说明 系统开发环境: MyEclipse5.5 + Tomcat6.0 + mysql5.0
  • 本文所介绍的学生在线考试系统,基于B/S模式运用Jsp+Mysql+SSM架构实现。支持学生、老师及管理员的登录及相关操作。学生可自行注册,并以班级的形式管理,可参考试、查看考试成绩、查看历史考卷等操作;教师有管理员...
  • Java课程设计-学生成绩管理系统

    千次阅读 热门讨论 2021-12-14 14:26:54
    ????作者主页:疯狂行者???? ?...、【计算机源码之家】公号作者✌ 简历...计算机课程设计|毕业设计之学生成绩管理系统代码-基于JavaWeb的学生成绩管理系统 文章目录计算机课程设计|毕业设计之学生成绩管理系统代码-基于Ja
  • 本设计可以找到源码,可以为您做设计,请看个人简介信息获取,资源免费,希望您给个关注,后续会上传源码,关注后第一时间会通知到您。感谢!

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 274
精华内容 109
关键字:

web课设学生成绩管理系统