基于Vue的宿舍管理系统

news2024/11/13 9:33:13

基于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.coloradmin.cn/o/1354636.html

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

相关文章

大洋钻探系列之五“地球号”钻探船

​ “地球号”(Chikyu)是日本船舶科学技术中心为实施“21世纪海洋钻探规划” 而订造的一艘隔水管型深海钻探船, 主要用于对深海海底地质结构的勘探, 由三井造船工程公司所属的玉野船厂建造, 于2002年1月下水。该船在玉…

ant design pro 5 企业级后台前端框架自定义根路径设置,解决public文件夹下资源在打包部署后出现找不到的问题

关于ant design pro v5的开箱使用方法见:开箱即用的企业级数据和业务管理中后台前端框架Ant Design Pro 5的开箱使用和偏好配置-CSDN博客 在开发过程中为了方便我们可能会将部分静态资源如logo等放入public文件夹,但在设置站点根路径后,publi…

物联网开发点对点通信模式NFC和蓝牙如何无缝结合

随着物联网开发和智能手机的普及,NFC 技术作为一种新兴的技术正在被越来越多新款手机所采用。该技术的发展使得将 RFID 功能集成到手机的设想成为了可能。当前作为传统近距离通信的蓝牙技术也在不断地发展,传输速率跟过去相比也有大幅度的提高&#xff0…

python爬虫实现获取招聘信息

使用的python版本: 3.12.1 selenium版本:4.8.0 urllib版本:1.26.18 from selenium import webdriver from selenium.webdriver import ActionChains import timeimport re import xlwt import urllib.parsedef get_html(url):chrome_drive…

BDZL-V200 4G无线点对点互相传输终端

随着科技的不断进步,智慧产业正成为各行各业的发展趋势。在这个背景下,BDZL-V200(简称V200)作为一款基于4G无线网络全网通的数据点对点通信技术的无线数据互传终端产品,正式推出市场。该产品将为远方设备的监测、远程抄…

全面开花!聚铭网络入选《ISC 2023数字安全创新能力全景图谱》10大细分领域

日前,《ISC 2023数字安全创新能力全景图谱》重磅出炉,聚铭网络凭借多元化的产品和卓越的创新能力,成功上榜全景图10大细分领域,多项细分领域的入围再一次彰显了聚铭网络过硬的综合安全实力。 据悉,此次全景图是ISC平台…

【数据结构】循环队列(数组实现)

目录 一、循环队列定义 怎么使一个数组在逻辑上呈“环状”呢? 二、循环队列与顺序队列的差异 1、存储方式: 2、操作方式: 3、空间利用率: 4、循环队列判断队空的方式: 5、循环队列判断队满的方式 完整测试代码及注释: 总…

simulink代码生成(九)—— 串口显示数据(纸飞机联合调试)

纸飞机里面的协议是固定的,必须按照协议配置; (1)使用EasyHEX协议,测试int16数据类型 测试串口发出的数据是否符合? 串口接收数据为: 打开纸飞机绘图侧: (1&#xff09…

常见网络协议

1.DNS协议 (域名系统) DNS协议使用的端口号是53 位于OSI模型中的应用层 DNS系统的作用:将域名(网址)解析为IP地址。 DNS的基本原理是:将域名映射到IP地址 DNS工作流程 当用户给定一个域名&#xff0…

实验笔记之——服务器链接

最近需要做NeRF相关的开发,需要用到GPU,本博文记录本人配置服务器远程链接的过程,本博文仅供本人学习记录用~ 连上服务器 首先先确保环境是HKU的网络环境(HKU AnyConnect也可)。伙伴已经帮忙创建好用户(第一次登录会提示重新设置密码)。用cmd ssh链接ssh -p 60001 <u…

综合跨平台全端ui自动化测试框架Airtest——AirtestIDE录制微信小程序脚本教学

前言 有在自动化测试领域的小伙伴应该都知道&#xff0c;app和小程序自动化这一类的自动化测试在实际操作中有时候很棘手让人心烦&#xff0c;动不动就是用appium写代码脚本维护什么的&#xff0c;不仅步骤繁琐&#xff0c;环境配置方面也是繁琐无比&#xff0c;动不动就与客户…

【操作系统xv6】学习记录5--实验1 Lab: Xv6 and Unix utilities

ref:https://pdos.csail.mit.edu/6.828/2020/xv6.html 实验&#xff1a;Lab: Xv6 and Unix utilities 环境搭建 实验环境搭建&#xff1a;https://blog.csdn.net/qq_45512097/article/details/126741793 搭建了1天&#xff0c;大家自求多福吧&#xff0c;哎。~搞环境真是折磨…

前端push.js桌面通知库

push.js 官网&#xff1a;https://pushjs.org/ 安装 1,npm 安装方式 npm install push.js --save 2,script引入方式 <script src"https://cdnjs.cloudflare.com/ajax/libs/push.js/0.0.11/push.min.js"></script> 使用 1&#xff0c;获取用户许可…

UnityRenderStreaming使用记录(二)

记录一下发现的问题 1、网页经常出现一直转但是不出现播放按钮的问题 检查发现有几个js文件从外网加载&#xff0c;速度太慢导致的&#xff0c;下载到本地&#xff0c;重新打包webserver.exe就可以了 比如Receiver Sampled的网页在UnityRenderStreaming\WebApp\client\public…

elect函数可以设置等待时间,

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;贝叶斯滤波与Kalman估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能&#xff0c…

Mybatis-Plus乐观锁配置使用流程【OptimisticLockerInnerInterceptor】

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家:人工智能学习网站 1.乐观锁实现 1.配置插件 1.XML方式 <bean class"com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerI…

el-table表格动态添加列。多组数据拼接和多层级数据的处理

提示&#xff1a;el-table表格动态添加列 文章目录 前言一、多组数据拼接二、多层级处理三、实际应用中&#xff0c;为避免闪屏&#xff0c;可以表格数据统一渲染总结 前言 需求&#xff1a;富文本编辑器 一、多组数据拼接 <template><div class"test">…

【langchain】入门初探实战笔记(Chain, Retrieve, Memory, Agent)

1. 简介 1.1 大语言模型技术栈 大语言模型技术栈由四个主要部分组成&#xff1a; 数据预处理流程&#xff08;data preprocessing pipeline&#xff09;嵌入端点&#xff08;embeddings endpoint &#xff09;向量存储&#xff08;vector store&#xff09;LLM 终端&#xff…

mac环境下安装部署mysql5.7

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

人工智能教程(四):概率论入门

目录 前言 TensorFlow 入门 SymPy 入门 概率论入门 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站 在本系列的 上一篇文章 中&#xff0c;我们进一步讨论了矩阵和线性代数&#…