基于Vue的宿舍管理系统

基于Vue的宿舍管理系统资源-CSDN文库


基于 Koa 以及 VueJS 的宿舍管理系统。

 

 

 

新增功能:

  • 【楼层管理】添加『入住人员信息』模块,显示入住学生、性别、院系、专业的人数,可用饼图表示
  • 【用户信息】学生用户添加性别、院系、专业字段
  • 【楼层管理】每层楼显示空余床位和已入住人数
  • 【宿舍信息】宿舍信息显示空余床位,新增修改床位数的功能
  • 【学生信息】如果是超级管理员,会有『更换寝室』按钮,可以修改学生宿舍
  • 【管理员系统】新增『来访人员登记』模块,可以添加来访人员记录,仅提供新增功能,记录信息包含姓名、电话号、身份证、性别等,登记日期自动生成

代码:

  • 支持使用环境变量修改服务端配置,将 server/.env.template 重命名为 .env 文件即可应用配置
  • 升级 Vue 版本为 2.7
  • 升级 echarts,移除 v-charts,使用 vue-echarts 作为 Vue 图表组件
  • 新增 npm run db:init 指令,快捷初始化数据库

1. 需求分析

主要需求:

  • 学生信息录入、修改、删除、查询
  • 宿舍管理评分
  • 学生早起率、懒床率
  • 学生宿舍打扫频率
  • 学生晚归情况
  • 楼层管理

考虑到实用性,该系统需要拆分为两大子系统,一个是学生端系统,一个是后台管理端系统。学生端系统主要提供给学生使用,负责一些宿舍记录及个人信息记录的基本操作;后台管理模块则是主要负责对所有学生信息的整理,提供宿舍管理、楼层管理、数据查看等权限,提供给宿舍管理员使用的。

1.1 学生系统

学生系统拥有以下功能:

  • 创建账户
  • 分配宿舍
  • 填写个人信息
  • 修改个人信息
  • 起床打卡(用于统计懒床率)
  • 归宿登记(用于统计晚归情况)
  • 打扫记录(用于统计宿舍打扫频率)
  • 查看宿日常数据

1.2 管理系统

管理系统拥有以下功能:

  • 楼层管理
  • 宿舍评价
  • 宿舍信息管理
  • 学生信息查看
  • 保洁人员管理
  • 统计学生早起率
  • 统计学生宿舍打扫频率
  • 统计学生晚归

超级管理员在享有上述管理员同等权限的同时额外拥有如下功能:

  • 创建管理员
  • 创建宿舍楼
  • 为宿舍楼分配管理员
  • 为宿舍楼分配保洁人员

3. 技术分析

前端:

  • Vue 作为基础框架
  • vue-router 控制路由(hash 模式)
  • vuex 状态管理
  • axios 接入数据
  • Vue-element-admin 作为基础框架

后台(Nodejs):

  • Koa 作为基础框架
  • koa-router —— 服务端路由控制
  • koa-static —— 读取静态文件
  • koa-jwt —— JWT 登录校验
  • koa-body —— http body 数据处理
  • koa-compress —— Gzip 压缩
  • koa-cors —— CORS 解决跨域问题
  • sequelize —— ORM

数据库:

  • MySQL

数据库设计一览:

4. 目录介绍

clinet 目录下为前端的项目文件, server 为后台目录下的文件

4.1 Clinet 目录

4.1.1 根目录

public :

HTML 模板和静态资源,参考 vue-cli 官方文档

src :

源码目录

.eslint* :

Eslint 代码规范规则相关

.prettierrc.js :

Prettier 代码格式化相关

vue.config.js :

webpack 规则,无需修改

4.1.2 src 源码目录(重点)

api:

抽离出的单独的请求文件,请求后台的 url

assets:

前端的静态文件资源

components:

前端的页面的组件,重点组件有:

  • GroupSelector:级联选择器组件
  • RecordTable:记录表格组件
  • RoomSelector:房间级联选择器组件

filter:

Vue 过滤器,详见 Vue 官方文档

icons:

icon 图标文件

layout:

最外层的整体布局组件

router:

前端路由系统,详见 Vue-Router 文档

store:

前端状态管理系统,详见 Vuex 文档

utils:

页面中的某会被复用的方法,如计算日期、格式化日期的方法,会被抽离到 utils 中,再在各个页面中被引入

views(重点):

每个页面的代码都在这里

App.vue:

最外层容器页面

main.js:

入口文件

settings.js:

配置文件(无需更改)

4.2 server 目录

server 目录下的 static 文件为静态文件目录,前端 Vue 源码编译好之后会自动存放到 static 目录下。src 为源码目录,以下介绍为 src 目录下的文件:

app.js:

入口文件,所有的框架在此引入

config.js:

配置文件,除了数据库相关的文件,其余配置项不要更改

utils:

后台某些会被复用的方法,会被抽离到 utils 中,再在各个页面中被引入

struct:

全局中新建的结构体(非重要,涉及 Javascript 面向对象设计)

routes:

后台路由

model:

后台 Model 层(定义数据库表结构)

db:

数据库连接与生成的方法

controller:

后台的 Controller 层

middle:

Koa 中间件,详见 Koa 中间件机制。

5. 项目启用方式

预先准备 Node 环境,避免各种奇怪的问题,建议使用 16.x 版本,建议使用 volta 管理 node 版本。

5.1 运行后台

数据库中创建表 "dormitory"(如下为 Navicat 数据库管理工具):

 

 

如果 mysql 低版本选择 utf8,高版本选择 utf8mb4

复制 server/.env.template 重命名为 .env,修改相关配置。

使用命令行工具移动至 server 目录下,运行:

## 安装依赖
$ npm install## 初始化数据库(该指令执行后会强行覆盖数据库中已有的数据,仅运行一次即可!)
$ npm run db:init## 运行项目
$ npm run start

看到以下输出,即为成功:

浏览器访问 http://localhost:8080

预置账号:

  • 管理员(admin 123456)
  • 超级管理员(superAdmin 123456)
  • 学生用户1(student1 123456)
  • 学生用户2(student2 123456)

初始化的数据可以在 db_generator.js 中的 createDefaultData 方法中修改

5.2 前端文件

按照上述步骤已经可以正常运行项目,如果需要修改与调试前端页面请按照以下步骤:

首先要确保已经在 /clinet 目录下运行过 npm install 安装好了前端依赖

  1. 在 /server 目录下运行 npm run dev 开启后台开发模式
  2. 在 /client 目录下运行 npm run dev 开启前端开发模式
  3. 修改 /clinet 目录下的任意文件
  4. 修改完成后,在 /client 目录下运行 npm run build:prod

构建时会出现警告,如 $weight: Passing a number without unit % (0) is deprecated. 无视即可,不影响功能

6. API 文档

共计 32 个接口,接口文档:DormitoryManagement

 


该文档的源码已经放在最上面,点击链接即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/595269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gamebryo游戏引擎源码(gb2.6+gb3.2+gb4.0+中文手册)

Gamebryo游戏引擎源码,是源码,是源码,是源码。喜欢研究游戏的可以下载研究研究,代码写得很好,有很多借得参考的地方。 Gamebryo游戏引擎源码(gb2.6gb3.2gb4.0中文手册) 下载地址: 链…

rollup 插件开发示例

✨专栏介绍 Rollup专栏是一个专门介绍Rollup打包工具的系列文章。Rollup是一个现代化的JavaScript模块打包工具,它可以将多个模块打包成一个或多个文件,以提高应用程序的性能和加载速度。 在Rollup专栏中,您将学习到如何安装和配置Rollup&a…

专车数据层架构进化往事:好的架构是进化来的,不是设计来的

很多年前,读了子柳老师的《淘宝技术这十年》。这本书成为了我的架构启蒙书,书中的一句话像种子一样深埋在我的脑海里:“好的架构是进化来的,不是设计来的”。 2015 年,我加入神州专车订单研发团队,亲历了专…

将DOM结构转换成图片保存至本地或保存至剪切板

在新业务需求中,碰到这样一个场景,需要将后端返回的表格数据,保存至本地或者保存至剪切板,直接发送给用户使用。 1. 将内容转换成图片并保存至本地 1.1 交互效果 如图所示,想要点击复制按钮后,将下面这个…

Talk | 香港科技大学博士生陈竞晔:TextDiffuser系列让扩散模型渲染文本不再是难题

本期为TechBeat人工智能社区第560期线上Talk。 北京时间1月3日(周三)20:00,香港科技大学在读博士生—陈竞晔的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “TextDiffuser系列让扩散模型渲染文本不再是难题”,介绍了他的团…

2020年认证杯SPSSPRO杯数学建模D题(第一阶段)让电脑桌面飞起来全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 D题 让电脑桌面飞起来 原题再现: 对于一些必须每天使用电脑工作的白领来说,电脑桌面有着非常特殊的意义,通常一些频繁使用或者比较重要的图标会一直保留在桌面上,但是随着时间的推移,…

如何无需公网IP实现远程访问Windows本地WebDAV服务中存储文件

文章目录 1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户端4.1 连接WebDav服务器4.2 连接成功4.2 连接成功总结: 自己用Windows Server搭建了家用NAS主机&…

Vue+ElementUI笔记(1)

一、表格 1.上移、下移和移除功能 需求:有时我们会面对类似这样的表格 图中的上移,下移功能需求明显要求我们改变两行数据的顺序。在实际开发中这种功能一般由后台来做,因为列表数据一般从后台获取刷新。即是我们点击”上移“,向…

mac环境下安装部署mysql5.7

下载安装包 进入官网下载MySQL5.7的安装包 https://www.mysql.com/downloads/ 安装包下载完成后双击pkg文件进行安装,无脑点下一步即可,注意安装完成后记得保存最后弹出框的密码 进入系统偏好设置,找到mysql,开启mysql服务…

maven:在maven中使用tomcat7插件

1、在pom.xml中添加tomcat7插件 <build><!-- Embedded Apache Tomcat required for testing war --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</ver…

springboot漫画网站源码和论文

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

面试官:如何实现两栏布局,右侧自适应?三栏布局中间自适应呢?

面试官&#xff1a;如何实现两栏布局&#xff0c;右侧自适应&#xff1f;三栏布局中间自适应呢&#xff1f; 一、背景 在日常布局中&#xff0c;无论是两栏布局还是三栏布局&#xff0c;使用的频率都非常高 两栏布局 两栏布局实现效果就是将页面分割成左右宽度不等的两列&am…

ROS学习记录:在ROS中用C++实现激光雷达避障

前言 本文建立在成功获取激光雷达数据的基础上&#xff0c;详细参考 在ROS中用C实现获取激光雷达的数据 一、实现思路 二、在VScode中打开之前编写好的lidar_node.cpp 三、在lidar_node.cpp中写入如下代码 #include <ros/ros.h> #include <std_msgs/String.h> …

Mysql的四大引擎,账号管理,数据库的建立

数据库存储引擎查看 Support字段说明 default的为默认引擎 YES表示可以使用 NO表示不能使用 命令 SHOW ENGINES 四大引擎 MEMORY 使用场景&#xff1a;由于易失性&#xff0c;可以用于存储在分析中产生的中间表 特点 所有的数据都保存在内存中&#xff0c;一旦服务器重启&…

[每周一更]-(第55期):Go的interface

参考地址 https://juejin.cn/post/6978322067775029261https://gobyexample.com/interfaceshttps://go.dev/tour/methods/9 介绍下Go的interface 在Go语言中&#xff0c;interface是一种特殊的数据类型&#xff0c;用于定义一组方法的规范。它描述了一个对象可以具备的行为&…

ElasticSearch自定义算分排序(Function Score Query)

使用 function score query&#xff0c;可以修改文档的相关性算分 (query score)&#xff0c;根据新得到的算分排序。 目录 Function Score Query 案例 Function Score Query 几种默认的计算分值的函数&#xff1a; Weight:为每一个文档设置一个简单而不被规范化的权重Fie…

Centos8破解Root密码

注&#xff1a;Centos7同理。 1.重启Centos8系统后&#xff0c;在启动页面中选中第一行&#xff0c;按【e】键进入界面。 2.找到linux开头所在行的找到“ro”改为上“rw init/sysroot/bin/bash”&#xff0c;同时按下【Ctrl】【X】跳转到紧急模式。 3.在紧急模式下&#xff0c…

UniversalTransformer with Adaptive Computation Time(ACT)

原论文链接&#xff1a;https://arxiv.org/abs/1807.03819 Main code import torch import numpy as npclass PositionTimestepEmbedding(torch.nn.Module):def forward(self, x, t):device x.devicesequence_length x.size(1)d_model x.size(2)position_embedding np.arr…

Qt界面篇:Qt停靠控件QDockWidget、树控件QTreeWidget及属性控件QtTreePropertyBrowser的使用

1、功能介绍 本篇主要使用Qt停靠控件QDockWidget、树控件QTreeWidget及Qt属性控件QtTreePropertyBrowser来搭建一个简单实用的主界面布局。效果如下所示。 2、控件使用详解 2.1 停靠控件QDockWidget QDockWidget可以停靠在 QMainWindow 内或作为桌面上的顶级窗口浮动。默认值…

基于OpenCV的透视变化

基本概念 透视变换(Perspective Transformation)是仿射变换的一种非线性扩展,是将图片投影到一个新的视平面(Viewing Plane)&#xff0c;也称作投影映射(Projective Mapping)。 原理&#xff1a;将二维的图片投影到一个三维视平面上&#xff0c;然后再转换到二维坐标下&#…