当前位置: 首页 > news >正文

SpringBoot+Vue项目计算机等级考试报名系统

文末获取源码

开发语言:Java

框架:springboot+vue

Node:node.js

JDK版本:JDK1.8

服务器:tomcat7

数据库:mysql 5.7/8.0

数据库工具:Navicat11

开发软件:eclipse/idea,Visual 

Maven包:Maven3.3.9

浏览器:谷歌浏览器

目录

一、前言介绍 

二、系统功能分析 

三、系统详细设计

3.1登录模块

3.2前台首页模块

3.3公告消息模块

3.4在线报名模块

3.5报名流程模块

四、管理员功能模块

4.1后台登录模块

4.2公告栏模块

4.3考生用户模块

4.4学校资讯模块

5.5报考信息模块

五、部分核心代码

5.1用户登录关键代码

5.2找回密码关键代码

5.3准考证信息关键代码

5.4用户注册关键代码


一、前言介绍 

信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对计算机等级考试报名系统等问题,对在线学习网站进行研究分析,然后开发设计出在线学习网站以解决问题。

计算机等级考试报名系统主要功能模块包括首页、站点管理(轮播图、公告栏)用户管理(管理员、考生用户)、内容管理(分类列表、校园资讯、作)、更多管理(报考信息、准考证信息、报名流程、院系管理),采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取MySQL作为后台数据的主要存储单元,采用springboot框架、Java技术、Ajax技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对在线学习网站  的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现计算机等级考试报名系统和部署运行使用它。

二、系统功能分析 

本计算机等级考试报名系统主要包括两大功能模块,即用户功能模块和管理员功能模块。

(1)管理员模块:系统中的核心用户是管理员,管理员登录后,通过管理员来管理后台系统。主要功能有:首页、站点管理(轮播图、公告栏)用户管理(管理员、考生用户)、内容管理(分类列表、校园资讯、作)、更多管理(报考信息、准考证信息、报名流程、院系管理)等功能。 

(2)前台用户:首页、公告消息、学校资讯、在线报名、报名流程、我的(我的账户、我的收藏、个人中心、退出)。

三、系统详细设计

3.1登录模块

3.2前台首页模块

3.3公告消息模块

3.4在线报名模块

3.5报名流程模块

四、管理员功能模块

4.1后台登录模块

4.2公告栏模块

4.3考生用户模块

4.4学校资讯模块

5.5报考信息模块

五、部分核心代码

5.1用户登录关键代码

/**
     * 登录
     * @param data
     * @param httpServletRequest
     * @return
     */
    @PostMapping("login")
    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
        log.info("[执行登录接口]");

        String username = data.get("username");
        String email = data.get("email");
        String phone = data.get("phone");
        String password = data.get("password");

        List resultList = null;
        Map<String, String> map = new HashMap<>();
        if(username != null && "".equals(username) == false){
            map.put("username", username);
            resultList = service.select(map, new HashMap<>()).getResultList();
        }
        else if(email != null && "".equals(email) == false){
            map.put("email", email);
            resultList = service.select(map, new HashMap<>()).getResultList();
        }
        else if(phone != null && "".equals(phone) == false){
            map.put("phone", phone);
            resultList = service.select(map, new HashMap<>()).getResultList();
        }else{
            return error(30000, "账号或密码不能为空");
        }
        if (resultList == null || password == null) {
            return error(30000, "账号或密码不能为空");
        }
        //判断是否有这个用户
        if (resultList.size()<=0){
            return error(30000,"用户不存在");
        }

        User byUsername = (User) resultList.get(0);


        Map<String, String> groupMap = new HashMap<>();
        groupMap.put("name",byUsername.getUserGroup());
        List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
        if (groupList.size()<1){
            return error(30000,"用户组不存在");
        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态
        if (!StringUtils.isEmpty(userGroup.getSourceTable())){
            String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
            String res = String.valueOf(service.runCountSql(sql).getSingleResult());
            if (res==null){
                return error(30000,"用户不存在");
            }
            if (!res.equals("已通过")){
                return error(30000,"该用户审核未通过");
            }
        }

        //查询用户状态
        if (byUsername.getState()!=1){
            return error(30000,"用户非可用状态,不能登录");
        }

        String md5password = service.encryption(password);
        if (byUsername.getPassword().equals(md5password)) {
            // 存储Token到数据库
            AccessToken accessToken = new AccessToken();
            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
            accessToken.setUser_id(byUsername.getUserId());
            tokenService.save(accessToken);

            // 返回用户信息
            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
            user.put("token", accessToken.getToken());
            JSONObject ret = new JSONObject();
            ret.put("obj",user);
            return success(ret);
        } else {
            return error(30000, "账号或密码不正确");
        }
}

5.2找回密码关键代码

  /**
     * 找回密码
     * @param form
     * @return
     */
    @PostMapping("forget_password")
    public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {
        JSONObject ret = new JSONObject();
        String username = form.getUsername();
        String code = form.getCode();
        String password = form.getPassword();
        // 判断条件
        if(code == null || code.length() == 0){
            return error(30000, "验证码不能为空");
        }
        if(username == null || username.length() == 0){
            return error(30000, "用户名不能为空");
        }
        if(password == null || password.length() == 0){
            return error(30000, "密码不能为空");
        }

        // 查询用户
        Map<String, String> query = new HashMap<>();
        query.put("username",username);
        Query select = service.select(query, service.readConfig(request));
        List list = select.getResultList();
        if (list.size() > 0) {
            User o = (User) list.get(0);
            JSONObject query2 = new JSONObject();
            JSONObject form2 = new JSONObject();
            // 修改用户密码
            query2.put("user_id",o.getUserId());
            form2.put("password",service.encryption(password));
            service.update(query, service.readConfig(request), form2);
            return success(1);
        }
        return error(70000,"用户不存在");
    }

5.3准考证信息关键代码

  */
    @Autowired
    public AdmissionInformationController(AdmissionInformationService service) {
        setService(service);
    }

    @PostMapping("/add")
    @Transactional
    public Map<String, Object> add(HttpServletRequest request) throws IOException {
        Map<String,Object> paramMap = service.readBody(request.getReader());
        Map<String, String> mapexaminee_number_ = new HashMap<>();
        mapexaminee_number_.put("examinee_number_",String.valueOf(paramMap.get("examinee_number_")));
        List listexaminee_number_ = service.select(mapexaminee_number_, new HashMap<>()).getResultList();
        if (listexaminee_number_.size()>0){
            return error(30000, "字段考生考号内容不能重复");
        }
        this.addMap(paramMap);
        return success(1);
    }

}

5.4用户注册关键代码

/**
     * 注册
     * @param user
     * @return
     */
    @PostMapping("register")
    public Map<String, Object> signUp(@RequestBody User user) {
        // 查询用户
        Map<String, String> query = new HashMap<>();
        query.put("username",user.getUsername());
        List list = service.select(query, new HashMap<>()).getResultList();
        if (list.size()>0){
            return error(30000, "用户已存在");
        }
        user.setUserId(null);
        user.setPassword(service.encryption(user.getPassword()));
        service.save(user);
        return success(1);
}

/**
     * 用户ID:[0,8388607]用户获取其他与用户相关的数据
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_id")
    private Integer userId;

    /**
     * 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)
     */

    @Basic
    @Column(name = "state")
    private Integer state;

    /**
     * 所在用户组:[0,32767]决定用户身份和权限
     */

    @Basic
    @Column(name = "user_group")
    private String userGroup;

    /**
     * 上次登录时间:
     */

    @Basic
    @Column(name = "login_time")
    private Timestamp loginTime;

    /**
     * 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
     */

    @Basic
    @Column(name = "phone")
    private String phone;

    /**
     * 手机认证:[0,1](0未认证|1审核中|2已认证)
     */

    @Basic
    @Column(name = "phone_state")
    private Integer phoneState;

    /**
     * 用户名:[0,16]用户登录时所用的账户名称
     */

    @Basic
    @Column(name = "username")
    private String username;

    /**
     * 昵称:[0,16]
     */

    @Basic
    @Column(name = "nickname")
    private String nickname;

    /**
     * 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
     */

    @Basic
    @Column(name = "password")
    private String password;

    /**
     * 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
     */

    @Basic
    @Column(name = "email")
    private String email;

    /**
     * 邮箱认证:[0,1](0未认证|1审核中|2已认证)
     */

    @Basic
    @Column(name = "email_state")
    private Integer emailState;

    /**
     * 头像地址:[0,255]
     */

    @Basic
    @Column(name = "avatar")
    private String avatar;

    /**
     * 创建时间:
     */

    @Basic
    @Column(name = "create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Timestamp createTime;

    @Basic
    @Transient
    private String code;
}

相关文章:

  • 【Flink 实战系列】Flink 消费多个 Topic 数据利用侧流输出完成分流功能
  • 【前端工程化】理解和配置process.env.NODE_ENV,项目中的环境变量到底是个啥
  • CVPR 2022 Oral 大连理工提出的SCI 快速、超强的低光照图像增强方法 亲测效果
  • cuda remove
  • CSS进阶篇——更多选择器 (selectors)
  • 嵌入式-ESP32
  • matplotlib绘制直方图,饼图,散点图,气泡图,箱型图,雷达图
  • JDBC编程六步、IDEA开发的第一个JDBC程序
  • 强化学习——day35 读论文:基于深度强化学习的网约车动态路径规划
  • 【408计算机组成原理】—原码、反码、补码、移码(六)
  • Vue入门【九】-- 动态路由和嵌套路由
  • Python数据类型:序列(列表list、元组tuple)
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • 算法分析与设计:10 大排序算法大汇总(Java)
  • 【斯坦福大学公开课CS224W——图机器学习】六、图神经网络1:GNN模型
  • [NodeJS] 关于Buffer
  • 【EOS】Cleos基础
  • 30天自制操作系统-2
  • HTTP中GET与POST的区别 99%的错误认识
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JAVA之继承和多态
  • node和express搭建代理服务器(源码)
  • php的插入排序,通过双层for循环
  • Python学习笔记 字符串拼接
  • socket.io+express实现聊天室的思考(三)
  • storm drpc实例
  • Yeoman_Bower_Grunt
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 回流、重绘及其优化
  • 京东美团研发面经
  • 开源地图数据可视化库——mapnik
  • 七牛云假注销小指南
  • 使用SAX解析XML
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 一道面试题引发的“血案”
  • 与 ConTeXt MkIV 官方文档的接驳
  • 智能网联汽车信息安全
  • nb
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #{}和${}的区别是什么 -- java面试
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (6)添加vue-cookie
  • (libusb) usb口自动刷新
  • (三)elasticsearch 源码之启动流程分析
  • (五)c52学习之旅-静态数码管
  • (原)Matlab的svmtrain和svmclassify
  • (转载)虚函数剖析
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • ./configure,make,make install的作用
  • .NET Core引入性能分析引导优化
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?