大学生本科毕业资格审核系统的设计与实现 毕业设计-附源码

摘要

信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对大学生本科毕业资格审核系统等问题,对如何通过计算机大学生本科毕业资格审核系统进行研究分析,然后开发设计出大学生本科毕业资格审核系统已解决问题。

大学生本科毕业资格审核系统主要功能模块包括登录、个人资料、用户管理、审核条件、成绩审核、学分审核、审核通知、学院审核等信息维护,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取MySQL作为后台数据的主要存储单元,采用Java技术、Ajax技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对大学生本科毕业资格审核系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现大学生本科毕业资格审核系统和部署运行使用它。

关键词:毕业资格审核系统;JAVA语言;ssm ;MYSQL数据库

  • 4 章 关键模块的设计与实现
    1. 登录模块

管理员、班主任、校领导、院领导和学生在登录界面输入账号+密码,点击“登录”按钮,系统在用户数据库表中会对管理员、班主任和学生的账号进行匹配,账号+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息,返回到登录的界面,其主界面展示如下图4.1所示。

图4.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;

        QueryWrapper wrapper = new QueryWrapper<User>();

        Map<String, String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }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.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

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

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());

            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, "账号或密码不正确");

        }

}

    public String select(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("select ");

        sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");

        sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

            sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");

        }

        if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

            sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");

        }

        if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

            int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

            int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

            sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);

        }

        log.info("[{}] - 查询操作,sql: {}",table,sql);

        return sql.toString();

}

    public List selectBaseList(String select) {

        List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);

        List<E> list = new ArrayList<>();

        for (Map<String,Object> map:mapList) {

            list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

        }

        return list;

}

  1. 用户管理模块

管理员可以对系统中所有的用户角色进行管控,包含了管理员、学生用户、班主任用户、校领导用户以及院领导用户这五种角色,如果需要添加新的用户,点击页面中的“添加”按钮根据提示输入上用户信息,点击“提交”以后在对应的用户界面就可以查看到了,可以点击用户后面的“删除”按钮直接删除某一用户,这里以学生用户为例。界面如下图4.2所示。

图4.2 用户管理界面图

用户管理关键代码如下所示。

public List selectBaseList(String select) {

        List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);

        List<E> list = new ArrayList<>();

        for (Map<String,Object> map:mapList) {

            list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

        }

        return list;

}

  1. 审核条件模块

管理员点击“审核条件”会显示出所有的审核条件信息,支持通过学院名称或者学院类型对审核条件信息进行查询,如果想要添加新的审核条件信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条审核条件信息,点击“删除”进行删除。界面如下图4.3所示。

图4.3 审核条件界面图

审核条件关键代码如下所示。

 @RequestMapping("/get_obj")

    public Map<String, Object> obj(HttpServletRequest request) {

        List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));

        if (resultList.size() > 0) {

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("obj",resultList.get(0));

            return success(jsonObject);

        } else {

            return success(null);

        }

}

  1. 成绩审核模块

管理员点击“成绩审核”会显示出所有的成绩审核信息,支持通过学生用户或者学生姓名或者学院名称对成绩审核信息进行查询,如果想要添加新的成绩审核信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条成绩审核信息,点击“删除”进行删除。界面如下图4.4所示。

图4.4 成绩审核界面图

  1. 学分审核模块

管理员点击“学分审核”会显示出所有的学分审核信息,支持通过学生用户或者学生姓名或者学院名称对学分审核信息进行查询,如果想要添加新的学分审核信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条学分审核信息,点击“删除”进行删除。界面如下图4.5所示。

图4.5 学分审核界面图

  1. 学院审核模块

管理员点击“学院审核”会显示出所有的学院审核信息,支持通过专业或者年级对学院审核信息进行查询,如果想要添加新的学院审核信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条学院审核信息,点击“删除”进行删除。界面如下图4.6所示。

图4.6 学院审核界面图

  1. 审核通知模块

管理员点击“审核通知”会显示出所有的审核通知信息,支持通过通知编号或者通知标题对审核通知信息进行查询,如果想要添加新的审核通知信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条审核通知信息,点击“删除”进行删除。界面如下图4.7所示。

图4.7 审核通知界面图

  1. 个人信息模块

管理员、班主任用户、学生用户、校领导用户和院领导用户点击“个人信息”按钮,可以对个人的头像、昵称、手机号码等信息进行更新;个人信息界面如下图4.8所示。

图4.8 个人信息界面图

  • 5 章 系统实验与结果分析
    1. 测试的目的

通过前面章节的介绍,我们可以看到本大学生本科毕业资格审核系统已经完成了,但是能不能投入使用还是未知,因为在每个项目正式使用之前必须对开发的项目进行测试,如果不进行测试一旦投入使用可能会出现很多未可知的问题,比如使用人数太多导致系统瘫痪,比如某一功能存在bug信息填写错误等等,这些错误将给使用者带来很多的困扰,甚至造成更大的损失,因此测试是项目投入使用的最后一步,为用户提供一个运行顺畅、完美的项目也就是我们进行最后测试的目的。

  1. 系统部分测试

用户登录功能测试:

表5.1 用户登录功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

用户登录模块测试

用户登录成功的情况

点击前登录界面输入账号和密码分别输入admin和admin后点击“登录”按钮。

登录成功并调整到用户界面

正确

审核条件信息添加功能测试:

表5.2 审核条件信息添加功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

审核条件添加模块测试

审核条件添加成功的情况

在审核条件的页面中将点击添加,输入审核条件关信息,输入正确的信息后然后点击“提交”按钮。

提示添加成功

正确

审核条件添加模块测试

审核条件添加失败的情况

在审核条件页面中不填写的学院名称,其他信息正常输入“提交”按钮。

提示“添加失败,信息不能为空”

正确

查询成绩审核信息功能模块测试:

表5.3 查询成绩审核信息功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

查询成绩审核信息功能测试

查询成功的情况

在成绩审核界面输入学生用户或者学生姓名进行查询

查询成功

正确

审核通知信息添加功能测试:

表5.4 审核通知添加功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

审核通知添加模块测试

审核通知添加成功的情况

在审核通知的页面中将点击添加,输入通知相关信息,输入正确的信息后然后点击“提交”按钮。

提示添加成功

正确

审核通知添加模块测试

审核通知添加失败的情况

在审核通知页面中不填写的通知编号或者通知标题,其他信息正常输入“提交”按钮。

提示“添加失败,信息不能为空”

正确

  1. 系统测试结果

通过编写大学生本科毕业资格审核系统的测试用例,已经检测完毕用户的登录模块、审核条件信息添加模块、查询成绩审核模块、审核通知添加模块的功能测试,在对以上功能得测试过程中,发现了系统中的很多漏送并进行了完善,经过多人在线进行测试,系统完全可以正常运行,当然在后期的维护中系统将不断完善。

  • 6 章 结论

在开发本大学生本科毕业资格审核系统之前我胸有成竹,觉得很简单,但在实际的开发中我发现了自身的很多问题,许多编程思想和方法都还没有掌握牢靠,比如Bootsatrp、Jquery、AJAX 、Spring、SpringMVC、mybeatis等许多Java Web开发技术,通过开发这个大学生本科毕业资格审核系统我成长了很多,懂得了做什么事情都要脚踏实地,不能眼高手低,在本次大学生本科毕业资格审核系统的开发中我逐渐掌握逐渐熟悉的技术。

本次大学生本科毕业资格审核系统的开发中我还学会了例如良好的编程思想和完善的规划思想。在着手编程之前需要罗列出程序框架的大概,脑海中构建出程序的主题框架。做好这一步我们才能胸有成竹的经行开发项目。当设计框架了熟于心之后,需要思考本次编程所需的主要知识点和技术点,并充分学习。如此一来项目的开发才能循序渐进、如丝般顺滑,长久以往就能养成良好的开发习惯。一个程序好不好还要看出的bug多不多,如果在项目完成前做好bug的查验与预防可能发生的事故才能保证程序的稳定长久性运行。如果项目在完工后出现各种问题自己,那么在进入社会后,不仅会给公司团队带来麻烦和增加不必要的工作,还会导致客户流失,公司对自己的评价下降。

在本次项目中我也暴露了诸多问题。对于Java的编程知识有所欠缺,环境配置和算法上出现诸多问题,时常导致项目运行出错,或者目标的实现有问题。或者实现想法时算法未优化,使得代码冗长,程序运行不顺畅。

 源码获取

README.md · yuanmadd/HuoQuYuanMa - Gitee.com

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值