小步伐-基于java+SpringBoot+Vue的开放实验室预约管理体系设计与实现 ...

瑞星  金牌会员 | 2024-11-21 10:35:45 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 802|帖子 802|积分 2406

项目运行

1.运行情况:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE情况:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat情况:Tomcat 7.x,8.x,9.x版本均可
4.硬件情况:windows 7/8/10 4G内存以上;大概 Mac OS;
5.是否Maven项目: 否;查看源码目录中是否包罗pom.xml;若包罗,则为maven项目,否则为非maven项目
6.数据库:MySql 5.7/8.0等版本均可;
7.小步伐:uniapp
毕设资助,指导,本源码分享,调试摆设(见文末)
体系介绍:

开放实验室预约管理体系旨在为实验室管理职员和学生提供一个便捷的预约管理平台。体系通过会合化处理惩罚实验室信息、公告、课题报名等,提高了信息管理的服从和准确性。采用B/S架构,使用Java语言开发,结合Spring Boot框架和MySQL数据库,确保了体系的稳定性和易维护性。
整体功能包罗:
  1. 字典管理
  2. 公告管理
  3. 课题报名管理
  4. 老师管理
  5. 实验室管理
  6. 实验室预约管理
  7. 学生管理
  8. 管理员管理
复制代码
前台模块:
  1. 用户注册与登录
  2. 实验室信息浏览与预约
  3. 公告信息查看
  4. 课题报名信息提交
复制代码
配景模块:
  1. 管理员登录:系统登录功能,验证管理员身份。
  2. 实验室管理:管理实验室信息,包括添加、修改、删除操作。
  3. 公告信息管理:发布和管理实验室公告。
  4. 公告类型管理:管理公告类型,添加或编辑公告分类。
  5. 学生管理:管理学生信息。
  6. 老师管理:管理老师信息。
  7. 课题报名管理:管理课题报名信息。
复制代码

功能截图:





代码实现:

  1. var _default = {
  2.   data: function data() {
  3.     return {
  4.       username: '',
  5.       password: '',
  6.       codes: [{
  7.         num: 1,
  8.         color: '#000',
  9.         rotate: '10deg',
  10.         size: '16px'
  11.       }, {
  12.         num: 2,
  13.         color: '#000',
  14.         rotate: '10deg',
  15.         size: '16px'
  16.       }, {
  17.         num: 3,
  18.         color: '#000',
  19.         rotate: '10deg',
  20.         size: '16px'
  21.       }, {
  22.         num: 4,
  23.         color: '#000',
  24.         rotate: '10deg',
  25.         size: '16px'
  26.       }],
  27.       options: ['请选择登录用户类型'],
  28.       optionsValues: ['', 'yonghu'],
  29.       index: 0,
  30.       roleNum: 0
  31.     };
  32.   },
  33.   onLoad: function onLoad() {
  34.     var options = ['请选择登录用户类型'];
  35.     var menus = _menu.default.list();
  36.     this.menuList = menus;
  37.     for (var i = 0; i < this.menuList.length; i++) {
  38.       if (this.menuList[i].hasFrontLogin == '是') {
  39.         options.push(this.menuList[i].roleName);
  40.         this.roleNum++;
  41.       }
  42.     }
  43.     if (this.roleNum == 1) {
  44.       this.index = 1;
  45.     }
  46.     this.options = options;
  47.     this.randomString(4);
  48.     this.styleChange();
  49.   },
  50.   methods: {
  51.     randomString: function randomString() {
  52.       var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 4;
  53.       var chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
  54.       var colors = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
  55.       var sizes = ['28', '30', '32', '34', '36'];
  56.       for (var i = 0; i < len; i++) {
  57.         // 随机验证码
  58.         var key = Math.floor(Math.random() * chars.length);
  59.         this.codes[i].num = chars[key];
  60.         // 随机验证码颜色
  61.         var code = '#';
  62.         for (var j = 0; j < 6; j++) {
  63.           var _key = Math.floor(Math.random() * colors.length);
  64.           code += colors[_key];
  65.         }
  66.         this.codes[i].color = code;
  67.         // 随机验证码方向
  68.         var rotate = Math.floor(Math.random() * 30);
  69.         var plus = Math.floor(Math.random() * 2);
  70.         if (plus == 1) rotate = '-' + rotate;
  71.         this.codes[i].rotate = 'rotate(' + rotate + 'deg)';
  72.         // 随机验证码字体大小
  73.         var size = Math.floor(Math.random() * sizes.length);
  74.         this.codes[i].size = sizes[size] + 'rpx';
  75.       }
  76.     },
  77.     styleChange: function styleChange() {
  78.       this.$nextTick(function () {
  79.         // document.querySelectorAll('.uni-yaoxianStyle .uni-yaoxianStyle-yaoxianStyle').forEach(el=>{
  80.         //   el.style.backgroundColor = this.loginFrom.content.yaoxianStyle.backgroundColor
  81.         // })
  82.       });
  83.     },
  84.     onRegisterTap: function onRegisterTap(tableName) {
  85.       uni.setStorageSync("loginTable", tableName);
  86.       this.$utils.jump('../register/register');
  87.     },
  88.     onForgetTap: function onForgetTap() {
  89.       this.$utils.jump('../forget/forget');
  90.     },
  91.     onLoginTap: function onLoginTap() {
  92.       var _this = this;
  93.       return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
  94.         var res;
  95.         return _regenerator.default.wrap(function _callee$(_context) {
  96.           while (1) {
  97.             switch (_context.prev = _context.next) {
  98.               case 0:
  99.                 if (_this.optionsValues[_this.index]) {
  100.                   _context.next = 3;
  101.                   break;
  102.                 }
  103.                 _this.$utils.msg("请选择登陆人类型");
  104.                 return _context.abrupt("return");
  105.               case 3:
  106.                 if (true) {
  107.                   _context.next = 6;
  108.                   break;
  109.                 }
  110.                 _this.$utils.msg("请输入正确的验证码");
  111.                 return _context.abrupt("return");
  112.               case 6:
  113.                 _context.next = 8;
  114.                 return _this.$api.login("".concat(_this.optionsValues[_this.index]), {
  115.                   username: _this.username,
  116.                   password: _this.password
  117.                 });
  118.               case 8:
  119.                 res = _context.sent;
  120.                 uni.setStorageSync("token", res.token);
  121.                 uni.setStorageSync("nickname", _this.username);
  122.                 uni.setStorageSync("nowTable", "".concat(_this.optionsValues[_this.index]));
  123.                 _context.next = 14;
  124.                 return _this.$api.session("".concat(_this.optionsValues[_this.index]));
  125.               case 14:
  126.                 res = _context.sent;
  127.                 uni.setStorageSync("userid", res.data.id);
  128.                 if (res.data.vip) {
  129.                   uni.setStorageSync("vip", res.data.vip);
  130.                 }
  131.                 uni.setStorageSync("role", "".concat(_this.options[_this.index]));
  132.                 _this.$utils.tab("../index/index");
  133.               case 19:
  134.               case "end":
  135.                 return _context.stop();
  136.             }
  137.           }
  138.         }, _callee);
  139.       }))();
  140.     },
  141.     optionsChange: function optionsChange(e) {
  142.       this.index = e.target.value;
  143.     }
  144.   }
  145. };
复制代码
源码获取:

大家点赞、收藏、关注、批评啦 、查看

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

瑞星

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表