基于Java+SpringBoot+Vue的开放实验管理系统设计与实现

这篇具有很好参考价值的文章主要介绍了基于Java+SpringBoot+Vue的开放实验管理系统设计与实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

博主介绍擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战

🍅文末获取源码联系🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

Java项目精品实战案例(300套)
Java微信小程序项目实战(200套)

Python项目精品实战案例(100套)文章来源地址https://www.toymoban.com/news/detail-544850.html

目录

一、效果演示

二、前言介绍

三、主要技术

四、系统设计

4.1、主要功能模块设计         

4.2、系统登陆流程设计

五、功能截图

5.1、首页

5.2、管理员登录

5.3、后台页面

5.4、 班级管理

5.4、新闻咨询

5.5、学生注册

5.6、用户管理

六、数据库设计(部分)

七、代码实现

八、源码获取


一、效果演示

二、前言介绍

信息技术永远是改变生活的第一种创新方式,各种行业的发展更是脱离不了科技化的支持。原本传统的行业正在被科技行业的切入悄悄的发生变化。就拿我们生活当中常见的事情举例而言,在外卖行业还没有发展的快速的时候,方便面等速食成了快速吃饱的首要选择,但当外卖行业出现而来,影响最大的缺是这些行业。更换言之,越来越多的人们正在享受着科技带来的变化。而在这种信息化大潮当中,各样各业的企业如果想提高自己的工作效率,必然需要符合自己需要的软件公办工具。对于学校而言,校园信息化一直都是社会多方位多层次被关注的一个方向。校园实验室数据管理一直是一个令管理者比较烦恼的一件事情,不能够及时有效的进行实验室数据管理的管理。如果可以利用信息化的手段进行管理的话,那将非常有效。

三、主要技术

技术名 作用
SpringBoot 后端框架
Vue 前端框架
MySQL 数据库

四、系统设计

4.1、主要功能模块设计         

基于Java+SpringBoot+Vue的开放实验管理系统设计与实现,Java精品项目实战,java,spring boot,vue.js,mysql数据库,开放实验管理系统,web,java毕设

4.2、系统登陆流程设计

基于Java+SpringBoot+Vue的开放实验管理系统设计与实现,Java精品项目实战,java,spring boot,vue.js,mysql数据库,开放实验管理系统,web,java毕设

五、功能截图

5.1、首页

网站的前台可以来说是一个门面,如何能让使用者进入网站后感受到优美的图案、整齐的布局、便捷的操作按钮,对于网站设计者来说还是有一定的难度的。本网站前台页面在设计前期,就将页面的图案设计、布局考虑进去了。首先进入前台的就是一个大的banner图,将其网站的主题风格直现到用户面前。banner图从一定程度上来说也是需要体现设计元素的,设计元素的美观程度直接体现的就是网站的美观程度。在设计前台页面的时候,我还特意的参考了几个大的网站的banner图,将其风景图进行了些比对,还请教了些美工的同学们。其页面如下图所示:

基于Java+SpringBoot+Vue的开放实验管理系统设计与实现,Java精品项目实战,java,spring boot,vue.js,mysql数据库,开放实验管理系统,web,java毕设

5.2、管理员登录

作为管理系统而言,那肯定是没有那些电商的绚丽前台页面儿了,那么最能体现他们管理系统的页面呢?就是管理员以及其他角色登录时候的页面,那么通过管理员。以及其他角色的区分呢,我们将主题进行一个体现。通过这个页面呢,就可以知道我们是什么系统,什么角色进行的一些登陆,需要输入什么,有什么样的功能,登陆之后大致也就明白了。

基于Java+SpringBoot+Vue的开放实验管理系统设计与实现,Java精品项目实战,java,spring boot,vue.js,mysql数据库,开放实验管理系统,web,java毕设

5.3、后台页面

后台管理页面是整个设计当中必不可少的一个部分,那么,后台管理页面通常都是以左边是树状形式将所有的功能菜单列出,右边是工作区域。这样一来,机可以方便管理者通过左边快速浏览到所有的功能,也可以通过右边较大的区域进行每个功能的操作。如下图所示

基于Java+SpringBoot+Vue的开放实验管理系统设计与实现,Java精品项目实战,java,spring boot,vue.js,mysql数据库,开放实验管理系统,web,java毕设

5.4、 班级管理

当我们系统中需要展现一些。人或物的属性信息的时候,我们就要采用列表的这种方式。这样做的好处呢,就是可以很好的将这些属性信息一一列出来,通过列举的方式呢,可以让用户清楚的可以看到。

基于Java+SpringBoot+Vue的开放实验管理系统设计与实现,Java精品项目实战,java,spring boot,vue.js,mysql数据库,开放实验管理系统,web,java毕设

5.4、新闻咨询

在系统的新闻资讯中我们可以看到相关系统的一些信息,这都是为了方便我们及时了解相关政策

基于Java+SpringBoot+Vue的开放实验管理系统设计与实现,Java精品项目实战,java,spring boot,vue.js,mysql数据库,开放实验管理系统,web,java毕设

5.5、学生注册

不论是系统也好还是网站也罢,最直接给用户感受的就是页面了,那页面的布局以及页面的功能都是要经过仔细的考虑的。本次设计呢就是在最初时进行了当下的同行业类型进行参考而做的,同时,为了能够使系统更加贴近生活,所以我们在设计元素上也有所考虑。

基于Java+SpringBoot+Vue的开放实验管理系统设计与实现,Java精品项目实战,java,spring boot,vue.js,mysql数据库,开放实验管理系统,web,java毕设

5.6、用户管理

系统当中用户的管理一方面可以让管理者知道系统中使用者的数量,另一方面也可以对于用户进行一个有效的管理。用户是系统的根本,用户也是系统所存在的意义。试想一下,一个系统如果没有了用户的支持可以说也没有了存在的必要了。所以说用户管理在系统当中可以说是一个必不可少的功能。

基于Java+SpringBoot+Vue的开放实验管理系统设计与实现,Java精品项目实战,java,spring boot,vue.js,mysql数据库,开放实验管理系统,web,java毕设

这里功能太多,就不一一展示啦~

六、数据库设计(部分)

E-R图

数据库是计算机信息系统的基础。目前,电脑系统的关键与核心部分就是数据库。数据库开发的优劣对整个系统的质量和速度有着直接影响。

数据库概念结构设计采用实体-关系(E-R)模型设计方法。 e-R模型方法的组成部分为实体、属性和连接。 E-r模型用E-r图表示、提醒用户工作环境中所涉及事物,属性是对实体特征具体描述。 数据库在系统设计中起着决定性关键作用、 部分设计如下。
 

管理员信息属性有:用户名、密码、编号。如下图所示。

基于Java+SpringBoot+Vue的开放实验管理系统设计与实现,Java精品项目实战,java,spring boot,vue.js,mysql数据库,开放实验管理系统,web,java毕设

用户信息属性包括:编号,姓名,性别,年龄,电话,邮箱,地址,身份证号。具体如下图所示。

基于Java+SpringBoot+Vue的开放实验管理系统设计与实现,Java精品项目实战,java,spring boot,vue.js,mysql数据库,开放实验管理系统,web,java毕设

七、代码实现

package com.example.controller;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.example.common.Result;
import com.example.common.ResultCode;
import com.example.entity.*;
import com.example.exception.CustomException;

import com.example.service.AdminInfoService;
import com.example.service.JiaoshiInfoService;
import com.example.service.XueshengInfoService;


import org.springframework.web.bind.annotation.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import cn.hutool.json.JSONUtil;

import java.util.*;
import java.util.stream.Collectors;

@RestController
public class AccountController {

    @Value("${authority.info}")
    private String authorityStr;

    @Resource
    private AdminInfoService adminInfoService;
	@Resource
private JiaoshiInfoService jiaoshiInfoService;
@Resource
private XueshengInfoService xueshengInfoService;

	






    @PostMapping("/login")
    public Result<Account> login(@RequestBody Account account,  HttpServletRequest request) {
        if (StrUtil.isBlank(account.getUsername()) || StrUtil.isBlank(account.getMima()) || account.getLevel() == null) {
            throw new CustomException(ResultCode.PARAM_LOST_ERROR);
        }
        String level = account.getLevel();
        Account login = new Account();
        if (level.equals("管理员")) {
            login = adminInfoService.login(account.getUsername(), account.getMima());
        }
		
if (level.equals("教师")) {
            login = jiaoshiInfoService.login(account.getUsername(), account.getMima());
            //yoxusxhenhe if(login.getStatus().equals("否")){return Result.error("500","帐号未审核通过,请联系管理员");}
        }
if (level.equals("学生")) {
            login = xueshengInfoService.login(account.getUsername(), account.getMima());
            //yoxusxhenhe if(login.getStatus().equals("否")){return Result.error("500","帐号未审核通过,请联系管理员");}
        }

		
//        if (2 == level) {
//            login = sellerInfoService.login(account.getUsername(), account.getMima());
//        }
//        if (level.equals("用户")) {
//            login = userInfoService.login(account.getUsername(), account.getMima());
//            if(login.getStatus().equals("否")){
//                return Result.error("500","状态异常,请联系管理员");
//            }
//        }
//        if (level.equals("员工")) {
//            login = yuangongxinxiInfoService.login(account.getUsername(), account.getMima());
//            if(login.getStatus().equals("否")){
//                return Result.error("500","状态异常,请联系管理员");
//            }
//        }

        request.getSession().setAttribute("user", login);
        return Result.success(login);
    }

  

    @GetMapping("/logout")
    public Result logout(HttpServletRequest request) {
        request.getSession().setAttribute("user", null);
        return Result.success();
    }

    @GetMapping("/auth")
    public Result getAuth(HttpServletRequest request) {
        Object user = request.getSession().getAttribute("user");
        if(user == null) {
            return Result.error("401", "未登录");
        }
        return Result.success(user);
    }

    @GetMapping("/getAccountInfo")
    public Result<Object> getAccountInfo(HttpServletRequest request) {
        Account account = (Account) request.getSession().getAttribute("user");
        if (account == null) {
            return Result.success(new Object());
        }
        String level = account.getLevel();
        if (level.equals("管理员")) {
            return Result.success(adminInfoService.findById(account.getId()));
        }
		if (level.equals("教师")) { return Result.success(jiaoshiInfoService.findById(account.getId())); }
if (level.equals("学生")) { return Result.success(xueshengInfoService.findById(account.getId())); }

//          if (level.equals("管理员")) {
//            return Result.success(sellerInfoService.findById(account.getId()));
//        }
//        if (level.equals("用户")) {
//            return Result.success(userInfoService.findById(account.getId()));
//        }
//
//        if (level.equals("医生")) {
//            return Result.success(yishengxinxiInfoService.findById(account.getId()));
//        }
//        if (level.equals("员工")) {
//            return Result.success(yuangongxinxiInfoService.findById(account.getId()));
//        }


        return Result.success(new Object());
    }

    @GetMapping("/getSession")
    public Result<Map<String, String>> getSession(HttpServletRequest request) {
        Account account = (Account) request.getSession().getAttribute("user");
        if (account == null) {
            return Result.success(new HashMap<>(1));
        }
        Map<String, String> map = new HashMap<>(1);
        map.put("username", account.getUsername());
        return Result.success(map);
    }

    @GetMapping("/getAuthority")
    public Result<List<AuthorityInfo>> getAuthorityInfo() {
        List<AuthorityInfo> authorityInfoList = JSONUtil.toList(JSONUtil.parseArray(authorityStr), AuthorityInfo.class);
        return Result.success(authorityInfoList);
    }

    /**
     * 获取当前用户所能看到的模块信息
     * @param request
     * @return
     */
    @GetMapping("/authority")
    public Result<List<Integer>> getAuthorityInfo(HttpServletRequest request) {
        Account user = (Account) request.getSession().getAttribute("user");
        if (user == null) {
            return Result.success(new ArrayList<>());
        }
        JSONArray objects = JSONUtil.parseArray(authorityStr);
        for (Object object : objects) {
            JSONObject jsonObject = (JSONObject) object;
            if (user.getLevel().equals(jsonObject.getStr("level"))) {
                JSONArray array = JSONUtil.parseArray(jsonObject.getStr("models"));
                List<Integer> modelIdList = array.stream().map((o -> {
                    JSONObject obj = (JSONObject) o;
                    return obj.getInt("modelId");
                })).collect(Collectors.toList());
                return Result.success(modelIdList);
            }
        }
        return Result.success(new ArrayList<>());
    }

    @GetMapping("/permission/{modelId}")
    public Result<List<Integer>> getPermission(@PathVariable Integer modelId, HttpServletRequest request) {
        List<AuthorityInfo> authorityInfoList = JSONUtil.toList(JSONUtil.parseArray(authorityStr), AuthorityInfo.class);
        Account user = (Account) request.getSession().getAttribute("user");
        if (user == null) {
            return Result.success(new ArrayList<>());
        }
        Optional<AuthorityInfo> optional = authorityInfoList.stream().filter(x -> x.getLevel().equals(user.getLevel())).findFirst();
        if (optional.isPresent()) {
            Optional<AuthorityInfo.Model> firstOption = optional.get().getModels().stream().filter(x -> x.getModelId().equals(modelId)).findFirst();
            if (firstOption.isPresent()) {
                List<Integer> info = firstOption.get().getOperation();
                return Result.success(info);
            }
        }
        return Result.success(new ArrayList<>());
    }

    @PutMapping("/updateMima")
    public Result updateMima(@RequestBody Account info, HttpServletRequest request) {
        Account account = (Account) request.getSession().getAttribute("user");
        if (account == null) {
            return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg);
        }
        String oldMima = SecureUtil.md5(info.getMima());
        if (!oldMima.equals(account.getMima())) {
            return Result.error(ResultCode.PARAM_PASSWORD_ERROR.code, ResultCode.PARAM_PASSWORD_ERROR.msg);
        }
        info.setMima(SecureUtil.md5(info.getNewMima()));
        String level = account.getLevel();
        if (level.equals("管理员")) {
            AdminInfo adminInfo = new AdminInfo();
            BeanUtils.copyProperties(info, adminInfo);
            adminInfoService.update(adminInfo);
        }
		
if (level.equals("教师")) {
            JiaoshiInfo jiaoshiInfo = new JiaoshiInfo();
            BeanUtils.copyProperties(info, jiaoshiInfo);
            jiaoshiInfoService.update(jiaoshiInfo);
        }
if (level.equals("学生")) {
            XueshengInfo xueshengInfo = new XueshengInfo();
            BeanUtils.copyProperties(info, xueshengInfo);
            xueshengInfoService.update(xueshengInfo);
        }

//          if (level.equals("管理员")) {
//            SellerInfo sellerInfo = new SellerInfo();
//            BeanUtils.copyProperties(info, sellerInfo);
//            sellerInfoService.update(sellerInfo);
//        }
//        if (level.equals("用户")) {
//            UserInfo userInfo = new UserInfo();
//            BeanUtils.copyProperties(info, userInfo);
//            userInfoService.update(userInfo);
//        }
//
//        if (level.equals("医生")) {
//            YishengxinxiInfo yishengxinxiInfo = new YishengxinxiInfo();
//            BeanUtils.copyProperties(info, yishengxinxiInfo);
//            yishengxinxiInfoService.update(yishengxinxiInfo);
//        }
//        if (level.equals("员工")) {
//            YuangongxinxiInfo yuangongxinxiInfo = new YuangongxinxiInfo();
//            BeanUtils.copyProperties(info, yuangongxinxiInfo);
//            yuangongxinxiInfoService.update(yuangongxinxiInfo);
//        }

        info.setLevel(level);
        info.setUsername(account.getUsername());
        // 清空session,让用户重新登录
        request.getSession().setAttribute("user", null);
        return Result.success();
    }
    @PostMapping("/resetMima")
    public Result resetMima(@RequestBody Account account) {
        String level = account.getLevel();
        if (level.equals("管理员")) {
            AdminInfo info = adminInfoService.findByUserName(account.getUsername());
            if (info == null) {
                return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg);
            }
            info.setMima(SecureUtil.md5("123456"));
            adminInfoService.update(info);
        }
//         if (level.equals("管理员")) {
//            SellerInfo info = sellerInfoService.findByUserName(account.getUsername());
//            if (info == null) {
//                return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg);
//            }
//            info.setMima(SecureUtil.md5("123456"));
//            sellerInfoService.update(info);
//        }
//        if (level.equals("用户")) {
//            UserInfo info = userInfoService.findByUserName(account.getUsername());
//            if (info == null) {
//                return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg);
//            }
//            info.setMima(SecureUtil.md5("123456"));
//            userInfoService.update(info);
//        }

//         if (level.equals("医生")) {
//            YishengxinxiInfo info = yishengxinxiInfoService.findByUserName(account.getXingming());
//            if (info == null) {
//                return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg);
//            }
//            info.setPassword(SecureUtil.md5("123456"));
//            yishengxinxiInfoService.update(info);
//
//        }

//        if (level.equals("员工")) {
//            YuangongxinxiInfo info = yuangongxinxiInfoService.findByGonghao(account.getGonghao());
//            if (info == null) {
//                return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg);
//            }
//            info.setMima(SecureUtil.md5("123456"));
//            yuangongxinxiInfoService.update(info);
//
//        }


        return Result.success();
    }
}

八、源码获取

大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

精彩专栏推荐订阅下方专栏👇🏻👇🏻👇🏻👇🏻

Java项目精品实战案例(300套)

Java微信小程序项目实战(200套)

Python项目精品实战案例(100套)

到了这里,关于基于Java+SpringBoot+Vue的开放实验管理系统设计与实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【开源】基于JAVA+Vue+SpringBoot的超市账单管理系统

    基于JAVA+Vue+SpringBoot+MySQL的超市账单管理系统,包含供应商模块、商品管理模块、超市账单模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,超市账单管理系统基于角色的访问控制,给超市管理员

    2024年02月02日
    浏览(55)
  • 基于Java+SpringBoot+Vue实现美术馆管理系统

     博主介绍 : ✌ 全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟  java项

    2024年02月06日
    浏览(42)
  • 基于Java+SpringBoot+Vue招聘管理系统设计和实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流 ✌ 主要内容: SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、P

    2024年02月20日
    浏览(41)
  • 基于Java+SpringBoot+vue+elementui 实现即时通讯管理系统

    博主介绍: 计算机科班人,全栈工程师,掌握C、C#、Java、Python、Android等主流编程语言,同时也熟练掌握mysql、oracle、sqlserver等主流数据库,能够为大家提供全方位的技术支持和交流。 目前工作五年,具有丰富的项目经验和开发技能。提供相关的学习资料、程序开发、技术解

    2024年02月19日
    浏览(45)
  • 【开源】基于JAVA+Vue+SpringBoot的食品生产管理系统

    基于JAVA+Vue+SpringBoot+MySQL的食品生产管理系统,包含了加工厂管理、客户管理、食品管理、生产订单、销售订单、系统公告模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,食品生产管理系统基于

    2024年01月22日
    浏览(51)
  • 【开源】基于JAVA+Vue+SpringBoot的高校宿舍调配管理系统

    基于JAVA+Vue+SpringBoot+MySQL的高校宿舍调配管理系统,包含了宿舍管理模块、宿舍分配模块、个人配置模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,高校宿舍调配管理系统基于角色的访问控制,

    2024年01月23日
    浏览(58)
  • 基于Java+SpringBoot+Vue前后端分离仓库管理系统设计实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 基于Jav

    2023年04月09日
    浏览(244)
  • 基于SpringBoot+Vue的学生宿舍管理系统(Java毕业设计)

    【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我

    2024年02月03日
    浏览(61)
  • 基于Java+SpringBoot+Vue汽车租赁管理系统设计和实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流 ✌ 主要内容: SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、P

    2024年01月25日
    浏览(63)
  • 基于Java+SpringBoot+vue+element驾校管理系统设计和实现

     博主介绍 : ✌ 全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟  java项

    2024年02月03日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包