【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码

招生管理网站(系统)

  • 招生管理系统项目简介
  • 内容及步骤
    • 1、 招生管理系统的总体设计与实现
      • 1.1需求分析
      • 1.2系统功能设计
      • 1.4系统功能测试(部分)
      • 1.5代码下载

招生管理系统项目简介

搭建Java开发环境、IDEA、MySQL等工具;搭建本地服务器和web前台网站,Ajax用于服务端与客户端之间异步通信;前端基于HTML、CSS、 JS、JSP、jQuery实现用户界面;搭建、设计MySQL数据库;后端使用Java语言实现学生注册、学生登陆、查看个人信息、打印准考证、查询成绩、网上缴费等学生端基本功能和新闻管理、缴费管理、录取管理等教师端基本功能;使用Springboot和Mybatis为后端框架;使用Maven为项目构建工具;使用BootStrap进行UI设计;使用JSTL标识库用于减少JSP文件的Java代码;使用Navicat软件进行可视化操作。

内容及步骤

1、 招生管理系统的总体设计与实现

1.1需求分析

使用JS、JSP、Java语言,在IDEA环境下,设计实现一下高效简洁的招生管理网站(系统)。在当今社会,教育发展越来越迅速,招生管理系统可以利于考生报名考试和教师对考生报考信息的管理。
本系统要求实现以下基本需求:
学生端需求:
(1) 注册报名:学生进入网站想要报考,必须先注册账号才能进行报名、查询等等操作,否则只能以游客身份浏览首页。报名时每个学生可以报考三个专业、每个专业不能相同。
(2) 查看个人信息:学生完成注册后都可以查看自己的个人信息,也可以修改自己的信息。
(3) 打印准考证:报考学生完成在线报名后,可以查看自己的准考证并且可以打印使用。
(4) 网上缴费:学生报名后,必须缴纳报名费,否则无法生成考生身份;后台只会有账号信息而不会有考生信息。
(5) 成绩、录取查询:学生参加完考试后,可以在七天之内登录网站查看自己的成绩以及自己是否被录取。
管理员端需求:
(1) 管理缴费:管理员可以在后台查看报考学生的缴费信息,如有学生报名但未缴费,也可以通过后端进行补缴。还可以将缴费信息导出为文件。
(2) 新闻管理:管理员可以在后台对网站上添加新闻、修改新闻、删除新闻、编辑新闻。
(3) 考生信息管理:后台上可以查看修改考生的个人信息;还可以将缴费信息导出为文件。
(4) 考场管理:在后台上可以设置考生考场的位置和最大参考人数;安排考生的考场和座位;可以新添考场或者删除考场,也可以导出考场表。
(5) 录取管理:在后台上可以输入考生的成绩、更新考生的录取状态。
(6) 统计管理:可以通过表格方式查看各个专业的报考、录取情况;通过图表查看报名考生、录取考生在全国的分布。

1.2系统功能设计

根据需求分析的结果,本系统至少要分为以下三个模块:注册模块、登录模块、学生应用系统模块、管理员应用系统模块,分别用于注册报名、登录网站、完成学生的各种操作、完成管理员的各种操作。
招生管理系统具体实现和功能为:
一、前端:1.HTML页面,显示报名网站的首页;2.学生应用系统页面:注册报名进入应用系统,同时也可以点击功能进入其他页面(如个人信息页面、查看打印准考证页面等等)。
二、后端:1.逻辑层:控制层、业务逻辑层、数据持久层、系统服务层实现后端基本功能;业务逻辑层中包含Ajax技术,用于向前端发送请求;测试类通过引入junit.jar包进行单元测试。2.数据库:本地MySQL数据库实现各种信息(如考场信息、考生信息)的存储。3.SpringBoot:利用框架自身集成的tomcat提供系统服务。4.Mybatis:通过对象类和数据库类名的映射,免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
本系统的整体功能模块图如1-1所示。
【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码_第1张图片

图1-1 招生管理系统功能结构图

1.3 招生管理系统详细设计(具体实现)
(1)招生管理系统总体功能展示如图1-2所示:

【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码_第2张图片

图1-2 总体功能展示图

(2)数据库设计
此处展示我设计的报名信息表、考场表、缴费信息表等七张表,如图1-3、图1-4、图1-5所示:
【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码_第3张图片

图1-3 报名信息表
【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码_第4张图片

图1-4 考场表
【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码_第5张图片
图1-5 其余表

(3)代码实现
我主要负责设计开发管理员后端的逻辑功能、部署项目、使用Mybatis实现对象类和数据库映射进行数据库信息增删改查,以下展示部分代码,如下:
(1) controller层

 package com.example.demo1.controller;

import com.example.demo1.modal.DzBmdjT;
import com.example.demo1.modal.DzKsxxT;
import com.example.demo1.modal.DzPayT;
import com.example.demo1.service.DzKsxxService;
import com.example.demo1.service.DzPayService;
import com.example.demo1.service.DzbmdjService;
import com.example.demo1.util.DateUtil;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.w3c.dom.stylesheets.LinkStyle;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * 支付控制层
 */
@Controller
public class DzPayController {
    //注入服务层
    @Resource
    private DzPayService payService;
    @Resource
    private DzbmdjService bmdjService;
    @Resource
    private DzKsxxService ksxxService;

    /**
     * 缴费页面跳转
     * @return
     */
    @RequestMapping(value = "pay", method = RequestMethod.GET)
    public String payView() {
        return "student/weChatPayment";
    }

    /**
     * 一键缴费逻辑
     * @param session
     * @return
     */
    @RequestMapping(value = "/pay", method = RequestMethod.POST)
    @ResponseBody
    public Boolean paySuccessView(HttpSession session) {
        // 获取身份证号码
        String sfzh = session.getAttribute("sfzh").toString();
        //创建报名登记对象
        DzBmdjT dzBmdjT = new DzBmdjT();
        dzBmdjT.setSfzh(sfzh);
        //根据身份证号码查询报名登记列表
        List<DzBmdjT> dzBmdjTList = bmdjService.getBmdjList(dzBmdjT);
        //拿到报名登记id
        int bmdjId = dzBmdjTList.get(0).getId();
        //根据身份证号查询  Id
        List<DzBmdjT> BmdjTList = bmdjService.getBmdjList(dzBmdjT);
        //获取姓名
        String xm = BmdjTList.get(0).getXm();
        //根据b报名登记id查询支付表中是否存在支付数据,若不存在则执行插入方法
        List<DzPayT> dzPayTList = payService.getPayLists(bmdjId);

        //如果支付列表不为空
        if (dzPayTList.isEmpty()) {
            //向支付对象中存入信息
            DzPayT dzPayT = new DzPayT();
            dzPayT.setBmdjId(bmdjId);
            dzPayT.setJffs(1);
            dzPayT.setPrice(120);
            dzPayT.setPayStatus(1);
            dzPayT.setOrderNo("123");
            dzPayT.setInputDate(new DateUtil().getStringDate("yyyy-MM-dd HH:mm:ss"));
            dzPayT.setInputName(xm);
            //执行支付方法
            int a = payService.getPayList(dzPayT);

            if (a == 1) {
                //支付成功后,再次插入考生信息数据
                intsertksxx(dzBmdjTList.get(0));
                return true;
            }
        }
        return false;
    }

    /**
     * 缴费成功页面跳转
     * @param model
     * @param session
     * @return
     */
    @RequestMapping(value = "paySuccess", method = RequestMethod.GET)
    public String paySuccess(Model model, HttpSession session) {
        //取出支付信息
        String sfzh = session.getAttribute("sfzh").toString();
        //根据身份证号查询  Id
        DzBmdjT dzBmdjT = new DzBmdjT();
        dzBmdjT.setSfzh(sfzh);

        List<DzBmdjT> dzBmdjTList = bmdjService.getBmdjList(dzBmdjT);
        int bmdjId = dzBmdjTList.get(0).getId();

        List<DzPayT> payList = payService.getPayLists(bmdjId);

        model.addAttribute("pay", payList.get(0));
        return "student/paymentSuccessful";
    }

    /**
     * 信息页面跳转
     * @param model
     * @param msg
     * @return
     */
    @RequestMapping(value = "/msg", method = RequestMethod.GET)
    public String payMsgView(Model model, String msg) {
        model.addAttribute("msg", msg);
        return "student/msg";
    }


    //考试信息存储
    public void intsertksxx(DzBmdjT bmdj) {
        DzKsxxT dzksxxT = new DzKsxxT();
        dzksxxT.setBmdjId(bmdj.getId());
        dzksxxT.setKsh(bmdj.getKsh());
        dzksxxT.setSfzh(bmdj.getSfzh());
        dzksxxT.setZkzh("2018035101000");
        dzksxxT.setXm(bmdj.getXm());
        dzksxxT.setInputName(bmdj.getSfzh());
        dzksxxT.setInputDate(new DateUtil().getStringDate("yyyy-MM-dd HH:mm:ss"));
        //执行一个插入
        ksxxService.insert(dzksxxT);
    }
}
package com.example.demo1.controller;

import com.example.demo1.modal.DzBmdjT;
import com.example.demo1.modal.DzKaoChangT;
import com.example.demo1.service.DzbmdjService;
import com.example.demo1.service.DzkaochangService;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.xssf.usermodel.*;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.annotation.Resource;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.List;

/**
 * 导出excel控制层
 */
@Controller
public class ExportController {
    //注入服务层
    @Resource
    private DzbmdjService dzBmdjService;
    @Resource
    private DzkaochangService dzKaoChangService;

    /**
     * 考生信息导出逻辑
     *
     * @return
     * @throws IOException
     */
    @RequestMapping(value = "ksxxExport", method = RequestMethod.GET)
    public ResponseEntity<byte[]> ksxxExport() throws IOException {
        //创建工作薄
        XSSFWorkbook wb = new XSSFWorkbook();
        //分页名称
        XSSFSheet sheet = wb.createSheet("结果");
        //生成一种样式
        XSSFCellStyle style = wb.createCellStyle();
        //设值样式
        style.setAlignment(HorizontalAlignment.CENTER);
        style.setVerticalAlignment(VerticalAlignment.CENTER);
        //生成一种字体
        XSSFFont font = wb.createFont();
        //设值字体
        font.setFontName("微软雅黑");
        //设值字体大小
        font.setFontHeightInPoints((short) 12);
        //字体加粗
        font.setBold(true);
        //在样式中引用这种字体
        style.setFont(font);
        //
        //生成并设值另一个样式
        XSSFCellStyle style2 = wb.createCellStyle();
        style2.setAlignment(HorizontalAlignment.CENTER);
        style2.setVerticalAlignment(VerticalAlignment.CENTER);

        //生成另一种字体
        XSSFFont font2 = wb.createFont();
        //设值字体
        font2.setFontName("微软雅黑");
        //设值字体大小
        font2.setFontHeightInPoints((short) 12);
        //在样式2中引用这种字体
        style2.setFont(font2);

        //设值列宽
        sheet.setColumnWidth(0, 25 * 256);//身份证号列宽
        sheet.setColumnWidth(1, 22 * 256);//考生号列宽
        sheet.setColumnWidth(2, 11 * 256);//姓名列宽
        sheet.setColumnWidth(3, 9 * 256);//性别列宽
        sheet.setColumnWidth(4, 18 * 256);//政治面貌列宽
        sheet.setColumnWidth(5, 28 * 256);//毕业高中列宽
        sheet.setColumnWidth(6, 18 * 256);//联系电话列宽

        String[] excelHeaderArr = {"身份证号码", "考生号", "姓名", "性别", "政治面貌", "毕业高中", "联系电话"};
        //生成表格第一行 表头
        XSSFRow row = sheet.createRow(0);
        XSSFCell cell = null;
        for (int i = 0; i < excelHeaderArr.length; i++) {
            cell = row.createCell(i);
            //设值数据
            cell.setCellValue(excelHeaderArr[i]);
            cell.setCellStyle(style);
        }

        //报名登记信息列表
        DzBmdjT dzBmdjT = new DzBmdjT();
        List<DzBmdjT> bmdjList = dzBmdjService.getBmdjList(dzBmdjT);
        //循环报名登记列表并创建行与列
        for (int i = 0; i < bmdjList.size(); i++) {
            XSSFRow row1 = sheet.createRow(i + 1);
            cell = row1.createCell(0);
            cell.setCellValue(bmdjList.get(i).getSfzh());
            cell.setCellStyle(style2);

            cell = row1.createCell(1);
            cell.setCellValue(String.valueOf(bmdjList.get(i).getKsh()));
            cell.setCellStyle(style2);

            cell = row1.createCell(2);
            cell.setCellValue(bmdjList.get(i).getXm());
            cell.setCellStyle(style2);

            cell = row1.createCell(3);
            cell.setCellValue(bmdjList.get(i).getXb());
            cell.setCellStyle(style2);

            cell = row1.createCell(4);
            cell.setCellValue(bmdjList.get(i).getZzmm());
            cell.setCellStyle(style2);

            cell = row1.createCell(5);
            cell.setCellValue(bmdjList.get(i).getBygz());
            cell.setCellStyle(style2);

            cell = row1.createCell(6);
            cell.setCellValue(bmdjList.get(i).getLxdh());
            cell.setCellStyle(style2);

        }
        ```
```java
        //创建输出流对象
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        try {
            wb.write(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            outputStream.close();
        }

        //下载文件
        HttpHeaders httpHeaders = new HttpHeaders();
        String fileName = new String("考生信息表.xlsx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
        httpHeaders.setContentDispositionFormData("attachment", fileName);
        httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        ResponseEntity<byte[]> filebyte = new ResponseEntity<byte[]>(outputStream.toByteArray(), httpHeaders, HttpStatus.CREATED);
        try {
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            outputStream.close();
        }

        return filebyte;
    }


    /**
     * 考场信息导出
     * @return
     * @throws IOException
     */
    @RequestMapping(value = "kcExport", method = RequestMethod.GET)
    public ResponseEntity<byte[]> kcExport() throws IOException {
        //创建工作薄
        XSSFWorkbook wb = new XSSFWorkbook();
        //分页名称
        XSSFSheet sheet = wb.createSheet("结果");
        //生成一种样式
        XSSFCellStyle style = wb.createCellStyle();
        //设值样式
        style.setAlignment(HorizontalAlignment.CENTER);
        style.setVerticalAlignment(VerticalAlignment.CENTER);
        //生成一种字体
        XSSFFont font = wb.createFont();
        //设值字体
        font.setFontName("微软雅黑");
        //设值字体大小
        font.setFontHeightInPoints((short) 12);
        //字体加粗
        font.setBold(true);
        //在样式中引用这种字体
        style.setFont(font);

        //生成并设值另一个样式
        XSSFCellStyle style2 = wb.createCellStyle();
        style2.setAlignment(HorizontalAlignment.CENTER);
        style2.setVerticalAlignment(VerticalAlignment.CENTER);

        //生成另一种字体
        XSSFFont font2 = wb.createFont();
        //设值字体
        font2.setFontName("微软雅黑");
        //设值字体大小
        font2.setFontHeightInPoints((short) 12);
        //在样式2中引用这种字体
        style2.setFont(font2);

        //设值列宽
        sheet.setColumnWidth(0, 25 * 256);//考场编号列宽
        sheet.setColumnWidth(1, 22 * 256);//考场地点列宽
        sheet.setColumnWidth(2, 11 * 256);//容纳人数列宽


        String[] excelHeaderArr = {"考场编号", "考场地点", "容纳人数"};
        //生成表格第一行 表头
        XSSFRow row = sheet.createRow(0);
        XSSFCell cell = null;
        for (int i = 0; i < excelHeaderArr.length; i++) {
            cell = row.createCell(i);
            //设值数据

1.4系统功能测试(部分)

打开系统,初始窗口化的界面如图1-6所示

【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码_第6张图片

图1-6 系统首页界面

考生注册报名功能如图1-8所示
【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码_第7张图片

图1-8 进行注册报名界面

【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码_第8张图片

图1-9注册报名成功界面

学生注册后在登录页面登录即可进入应用系统,进行各种下一步操作,如图1-10所示
【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码_第9张图片

图1-10进入应用系统界面

学生进入可以查看个人信息、打印准考证、网上缴费、查询成绩、查询录取情况,如图1-11、图1-12所示(展示部分)
【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码_第10张图片

图1-11查看个人信息界面

【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码_第11张图片
图1-12 查看考场界面

管理员(教师)登录后台系统,就可以进行包括对考生信息增删改查、考场信息的增删改查等各种管理操作,如图1-16、图1-17、图1-18、图1-19、图1-20、图1-21所示
【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码_第12张图片

图1-16考生信息管理界面
【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码_第13张图片

图1-17录取管理界面

【基于Springboot、Mybatis后端框架开发——招生管理网站(系统)】附源码_第14张图片

图1-18考场管理界面

1.5代码下载

https://download.csdn.net/download/champion564/86502489

你可能感兴趣的:(后端,前端,mybatis,spring,boot,java,前端,bootstrap)