目 录
第1章 绪论 1
1.1选题背景及意义 1
1.1.1选题背景 1
1.1.2 研究意义 1
1.2国内外研究现状及发展趋势 2
1.2.1国内研究现状 2
1.2.2国外研究现状 2
1.2.3发展趋势 2
1.3论文结构 3
第2章 关键技术介绍 4
2.1 Spring Boot技术 4
2.2 VUE技术 4
2.3 MySQL数据库 5
2.4 Tomcat介绍 6
2.5 IDEA软件介绍 6
第3章 需求分析 8
3.1 功能性需求 8
3.1.1 管理员功能需求 8
3.1.2 用户功能需求 9
3.3.3用例图 9
3.3.4活动图 12
3.1.3 非功能性需求 16
3.2 可行性分析 17
第4章 系统设计 19
4.1 系统结构设计 19
4.2 类建模 19
4.2 状态图 20
4.3 顺序图 20
4.3.1 个人信息管理 20
4.3.2上机课信息发布 21
4.3.3实验室设备管理 21
4.3.4实验室信息管理 22
4.3.5损坏单审核 22
4.3.6填写损坏单 23
4.3.7填写预约单 23
3.3.8信息查询 24
3.3.9用户登录 24
3.3.10用户管理 25
3.3.11预约单审核 25
4.4 包图 26
4.5类图详细设计 26
4.2 数据库设计 27
4.2.1 实体E-R图 28
4.2.2 数据表 30
第5章 系统实现 39
5.1 用户功能模块 39
5.1.1 用户登录界面 39
5.1.2 用户注册界面 39
5.1.3 用户个人中心界面 40
5.1.4 用户实验室界面 40
5.2 管理员功能模块 42
5.2.1 管理员登录界面 42
5.2.2 管理员信息界面 42
5.2.3 实验室管理界面 43
第6章 系统测试 47
6.1 测试方法 47
6.2 功能测试 47
6.3 性能测试 49
第7章 结论与展望 50
7.1 结论 50
7.2 展望 50
参考文献 51
致 谢 53
第3章 需求分析
在高校实验室管理系统的设计与实现过程中,需求分析是至关重要的一环。通过详细的需求分析,我们可以确保系统能够满足管理员和用户的不同需求,同时确保系统的稳定性、易用性和实用性。以下是对本高校实验室管理系统的需求分析。
3.1 功能性需求
3.1.1 管理员功能需求
作为系统的主要管理者,管理员需要拥有全面的管理权限,以便对系统进行有效的管理和维护。具体功能需求包括:
用户管理:管理员能够创建、修改、删除用户账号,设置用户权限,并查看用户活动日志。
实验室管理:管理员能够添加、编辑、删除实验室信息,包括实验室名称、地点、负责人、设备配置等。
设备管理:管理员能够管理设备的入库、出库、维修、报废等流程,确保设备的有效利用和及时更新。
设备报备与申请管理:管理员能够审核用户的设备报备申请,处理设备申请请求,并跟踪设备的使用情况。
消耗品管理:管理员负责消耗品的采购、入库、出库管理,确保实验室日常运行的物资需求。
消耗品领取管理:管理员审核用户的消耗品领取申请,确保资源的合理分配和使用。
论坛管理:管理员能够监控论坛内容,处理违规帖子,维护论坛秩序。
系统管理:管理员负责系统的参数设置、备份恢复、日志查看等,确保系统的稳定运行。
实验室预约管理系统的功能主要分为前台用户(学生、教师)根据自己的需求进行注册登录,浏览实验室信息并对科室进行预约操作。后台系统管理员主要对注册用户,实验室信息,学生预约等进行处理。
3.1.2 用户功能需求
用户主要通过系统前台访问实验室信息、设备信息、消耗品信息等,并在后台进行相关的申请和操作。具体功能需求包括:
信息浏览:用户能够浏览实验室的基本信息、设备信息、消耗品信息、论坛内容和新闻资讯等。
实验室申请:用户能够在线提交实验室使用申请,查看申请状态,确保实验的顺利进行。
设备报备与申请:用户能够报备自有设备或申请使用实验室设备,并跟踪申请进度。
消耗品领取:用户能够提交消耗品领取申请,确保实验所需物资的及时供应。
论坛互动:用户能够在论坛中发布帖子、回复评论,与其他用户进行交流和讨论。
<!-- 首页 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>首页</title>
<link rel="stylesheet" href="./layui/css/layui.css">
<!-- 样式 -->
<link rel="stylesheet" href="./css/style.css" />
<!-- 主题(主要颜色设置) -->
<link rel="stylesheet" href="./css/theme.css" />
<!-- 通用的css -->
<link rel="stylesheet" href="./css/common.css" />
</head>
<body scrolling="no" style="overflow-y: hidden;overflow-x: hidden;">
<div id="header">
<div class="top">
<img src="" >
{{projectName}}
<div></div>
</div>
<!-- 顶部导航栏 -->
<header>
<ul class="layui-nav nav">
<li class="layui-nav-item">
<a href="javascript:navPage('./pages/home/home.html')">
<i class="layui-icon" style="font-size: 15px;"></i>
首页
</a>
</li>
<li v-for="(item,index) in indexNav" v-bind:key="index" class="layui-nav-item"><a :href="'javascript:navPage(\''+item.url+'\')'">
<i class="layui-icon" style="font-size: 15px;"></i>
{{item.name}}
</a></li>
<li class="layui-nav-item">
<a href="javascript:centerPage();">
<i class="layui-icon" style="font-size: 15px;"></i>
我的
</a>
</li>
<li class="layui-nav-item"><a target="_blank" :href="'javascript:window.location.href=\''+adminurl+'\''">
<i class="layui-icon" style="font-size: 15px;"></i>
跳转到后台
</a></li>
<li v-if="cartFlag" class="layui-nav-item">
<a href="javascript:navPage('./pages/cart/list.html')">
<i class="layui-icon" style="font-size: 15px;"></i>
购物车
</a>
</li>
<li v-if="chatFlag" class="layui-nav-item">
<a href="javascript:chatTap()">
<i class="layui-icon" style="font-size: 15px;"></i>
客服
</a>
</li>
</ul>
</header>
</div>
<!-- 顶部导航栏 -->
<iframe src="./pages/home/home.html" id="iframe" frameborder="0" scrolling="auto" onload="changeFrameHeight()"></iframe>
<!-- footer -->
<!--
<footer class="footer" id="footer">
<div class="footer-item">
地址:公司地址 电话:+86-0000-00000 传真:+86-0000-00000
</div>
<div class="footer-item">
Copyright © 版权所有 Power by XXXXXX
</div>
</footer>
-->
<!-- footer -->
<!-- layui -->
<script src="./layui/layui.js"></script>
<!-- vue.js -->
<script src="./js/vue.js"></script>
<!-- 组件配置信息 -->
<script src="./js/config.js"></script>
<script>
var vue = new Vue({
el: '#header',
data: {
indexNav: indexNav,
cartFlag: cartFlag,
adminurl: adminurl,
chatFlag: chatFlag,
projectName: projectName
},
methods: {
jump(url) {
jump(url)
}
}
});
layui.use(['element','layer'], function() {
var element = layui.element;
var layer = layui.layer;
});
function chatTap(){
var userTable = localStorage.getItem('userTable');
if (userTable) {
layui.layer.open({
type: 2,
title: '客服聊天',
area: ['600px', '600px'],
content: './pages/chat/chat.html'
});
} else {
window.location.href = './pages/login/login.html'
}
}
// 导航栏跳转
function navPage(url) {
localStorage.setItem('iframeUrl', url);
document.getElementById('iframe').src = url;
}
// 跳转到个人中心也
function centerPage() {
var userTable = localStorage.getItem('userTable');
if (userTable) {
localStorage.setItem('iframeUrl', './pages/' + userTable + '/center.html');
document.getElementById('iframe').src = './pages/' + userTable + '/center.html';
} else {
window.location.href = './pages/login/login.html'
}
}
var iframeUrl = localStorage.getItem('iframeUrl');
document.getElementById('iframe').src = iframeUrl;
// alert(iframeUrl)
changeFrameHeight();
// 窗口变化时候iframe自适应
function changeFrameHeight() {
var header = document.getElementById('header').scrollHeight;
// var swiper = document.getElementById('swiper').scrollHeight;
var ifm = document.getElementById("iframe");
ifm.height = document.documentElement.clientHeight - header;
ifm.width = document.documentElement.clientWidth;
console.log(ifm.height)
}
// reasize 事件 窗口大小变化后执行的方法
window.onresize = function() {
changeFrameHeight();
}
</script>
</body>
</html>