基于Vue+node的图书馆座位预约选座管理系统

news2025/1/10 11:21:44

目 录
一、绪论 1
(一)选题背景简介 1
(二)目的和意义 2
(三)基本内容及目标 2
二 技术简介 4
(一) React 4
(二)Vue 4
(三)Egg.js 5
(四)Yarn 6
(六)iView 6
(七)Ant Design Mobile 6
(九)JSON Web Token 6
(十)Knex 7
三、系统概要设计 8
(一) 系统需求分析 8

  1. 管理端 8
    (二)可行性分析 8
    1.技术可行性 8
    2.经济可行性 9
    3.操作可行性 9
    (三)Server端模型 9
    四、数据库设计 10
    (一)数据概念结构设计 10
    (二)数据库关系设计 10
    五、后台设计 11
    (一) Egg 11
    (二) 权限校验 11
    (三)连接数据库 12
    (四)JavaScript异步并发问题 13
    六、管理端设计 15
    (一) 登录页面 15
    (二)主页 16
    (三)座位管理 19
  2. 座位情况 19
  3. 编辑座位 23
  4. 创建自习室 25
    (四)学校管理 26
    (五)管理员管理 28
    (六)个人信息 29
    七、手机端设计 31
    (一)用户登录 31
    (二)首页 33
    (三)预约列表 38
    (二)个人信息 39
    结论 40
    参 考 文 献 41
    致 谢 42
    该系统的用户群体主要是学生和图书馆管理员,该系统开发的目的是让学生占座更加方便,并且最大限度杜绝不文明占座行为的发生,方便图书馆管理员的管理。对于学生来说,他们不用早起占座,只需要登陆系统去预约,而且系统规定一人只能占一座,他们也不用担心会有人占多个座位。系统会采取定期除名,例如这个座位的使用者超过规定时间没有去,座位将会被管理员清空(包括系统和实际座位)。对于图书馆管理者来说,这会让他们的管理更方便更有效。
    学生可以实时看到座位的空缺情况,并且进行选择。每个座位都有可选、已选、和暂离三种状态。
    该系统的应用可以为图书馆和学生双方都带来极大的便利
    研究的重点
    用户的登陆
    座位的预约和不再使用
    查看座位信息
    管理员的清空功能
    研究的难点
    后台数据的管理:数据的增删改查,包括对用户座位信息的清空
    用户查看座位信息的准确性和实时性,例如刷新后座位信息的变化情况
    三、系统概要设计
    系统的设计主要前台和后台两个部分
    (一)系统需求分析
    1.管理端
    1.登入/登出
    2.座位管理
    1)实时座位占用清空查询
    2)编辑自习室/图书馆座位
    3)创建自习室
    3.学校管理(增删改查,分页)
    4.管理员管理(增删)
    5.个人信息(密码验证,修改密码)
    (二)可行性分析
    这里讲的可行性分析的任务是从技术上、经济上分析需解决的问题是否存在可行性。其目的是在尽可能短的时间内用尽可能小的代价确定问题是否有解。
    1.技术可行性
    技术上的可行性分析主要分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。本文转载自http://www.biyezuopin.vip/onews.asp?id=13362
    本套系统采用vue、react与egg实现,代码完全开源,文档完善,便于二次开发与维护,简单培训即可使用与维护。
import React, { useState, useEffect } from 'react';
import { Route, withRouter } from 'react-router-dom';
import { TabBar, Toast } from 'antd-mobile';
import store from '@/store'
import { initStudent } from '@/reducer/student';
import Page from './pages'
import '@s/main.scss'
import { getToken } from '@u/cookie';
import { stuInfo } from '@h/student'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { library } from '@fortawesome/fontawesome-svg-core'
import { faHome, faUserAlt, faCalendar, faCalendarAlt } from '@fortawesome/free-solid-svg-icons'

library.add(faHome, faUserAlt, faCalendar, faCalendarAlt)


const Main = (props) => {
    useEffect(() => {
        if (!getToken() || getToken() === 'undefined') {
            Toast.offline('登录信息失效,请重新登录!', 1, () => {
                props.history.replace('/login')
            });
        }
    }, [props.history.location.pathname])

    useEffect(() => {
        stuInfo().then(res => {
            store.dispatch(initStudent(res.data.res[0]))
        })
    }, [])

    const [route, setRoute] = useState(props.history.location.pathname)

    return (
        <>
            <TabBar
                barTintColor="white"
                tintColor="#33A3F4"
                unselectedTintColor="#949494"
            >
                <TabBar.Item
                    data-seed="logId"
                    icon={<FontAwesomeIcon icon="home" />}
                    key="home"
                    onPress={() => {
                        setRoute('/main/home')
                        props.history.replace('/main/home')
                    }}
                    // selected={route === '/main/home'}
                    selected={/^\/main\/home/.test(route)}
                    selectedIcon={<FontAwesomeIcon icon="home" />}
                    title="主页"
                >
                    {
                        <Route
                            component={Page.Home}
                            path="/main/home"
                        />
                    }
                </TabBar.Item>
                <TabBar.Item
                    data-seed="logId"
                    icon={<FontAwesomeIcon icon="calendar" />}
                    key="order"
                    onPress={() => {
                        setRoute('/main/order')
                        props.history.replace('/main/order')
                    }}
                    selected={route === '/main/order'}
                    selectedIcon={<FontAwesomeIcon icon="calendar-alt" />}
                    title="我的预约"
                >
                    {
                        <Route
                            component={Page.Order}
                            path="/main/order"
                        />
                    }
                </TabBar.Item>
                <TabBar.Item
                    data-seed="logId"
                    icon={<FontAwesomeIcon icon="user-alt" />}
                    key="user"
                    onPress={() => {
                        setRoute('/main/user')
                        props.history.replace('/main/user')
                    }}
                    selected={route === '/main/user'}
                    selectedIcon={<FontAwesomeIcon icon="user-alt" />}
                    title="个人信息"
                >
                    {
                        <Route
                            component={Page.User}
                            path="/main/user"
                        />
                    }
                </TabBar.Item>
            </TabBar>
        </>

    )
}

export default withRouter(Main)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

生产者消费者模型

什么是生产者消费者模型&#xff1f; 生产者和消费是操作系统中一种重要的模型&#xff0c;它描述的是一种等待和通知的机制。一、概念引入 日常生活中&#xff0c;每当我们缺少某些生活用品时&#xff0c;我们都会去超市进行购买&#xff0c;那么&#xff0c;你有没有想过&am…

Node.js之Hello World

目录 简介 1.安装 2.安装后的效果 3.准备尝试运行的代码 4.运行JS代码 5.访问正在运行的代码(Hello World) 简介 Node.js 是一个基于"Chrome V8 引擎" 的JavaScript "运行环境"&#xff1b; NodeJS不是一门编程语言, NodeJS是一个运行环境&#xff…

C语言题解 | 消失的数字轮转数组

… &#x1f333;&#x1f332;&#x1f331;本文已收录至&#xff1a;C语言题解系列 更多知识尽在此专栏中&#xff01; &#x1f389;&#x1f389;&#x1f389;欢迎点赞、收藏、关注 &#x1f389;&#x1f389;&#x1f389;文章目录&#x1f349;前言&#x1f349;正文&…

这才是使用ps命令的正确姿势

这才是使用ps命令的正确姿势 前言 在linux系统当中我们通常会使用命令去查看一些系统的进程信息&#xff0c;我们最常使用的就是 ps (process status)。ps 命令主要是用于查看当前正在运行的程序&#xff0c;以及他们相关的的信息&#xff0c;我们可以通过不同的选项进行查看…

全球名校AI课程库(12)| CMU卡内基梅隆 · 数据库系统进阶课程『Advanced Database Systems』

&#x1f3c6; 课程学习中心 | &#x1f6a7; 计算机基础课程合辑 | &#x1f30d; 课程主页 | &#x1f4fa; 中英字幕视频 | &#x1f680; 项目代码解析 课程介绍 CMU 15-721 是 CMU 卡内基梅隆大学开放的数据库方向进阶课程&#xff0c;讨论了很多数据库方向新的技术研究方…

基于Matlab使用跟踪筛选器跟踪机动目标仿真(附源码)

此示例演示如何使用各种跟踪筛选器跟踪机动目标。该示例显示了使用单个运动模型和多个运动模型的滤镜之间的差异。 一、定义方案 在此示例中&#xff0c;定义了一个目标&#xff0c;该目标最初以 200 m/s 的恒定速度行进 33 秒&#xff0c;然后输入 10 度/秒的恒定转弯。转弯…

【C++】类和对象(中)

类和对象是面向对象语言的一个重要部分&#xff0c;承接上一话&#xff0c;我们直接开始这一章的内容。 文章目录 一、类的6个默认成员函数二、构造函数三、析构函数四、拷贝构造函数五、赋值操作符重载六、 const成员函数七、取地址及const取地址操作符重载八、相关习题的练习…

Windows系统常用网络命令详解及命令示例(全)

1.最基本也是最常用的&#xff0c;PING ping 192.168.0.8 -t 测试物理网络   &#xff0c;参数-t是等待用户中断测试   2.检查DNS、IP、Mac等   A. Win98&#xff1a;winipcfg   B.Win2000及以上&#xff1a;ipconfig /all      C.NSLOOKUP&#xff1a;如果查看河北…

初阶c语言之浅识指针

学习导航:> 1.指针是什么&#xff1f; 2.指针和指针类型 2.1指针-整数 2.2指针的解引用 3.野指针 3.1野指针成因 3.2如何规避野指针 4.指针运算 4.1指针-整数 4.2指针-指针 4.3指针的关系运算 5.指针和数组 6.二级指针 7.指针数组 1.指针是什么&#xff1f; 指…

动态路由协议解析(rip)

因为今天是1024程序猿节&#xff0c;小刘就在这里祝各位程序猿大佬们节日快乐啦 作者介绍&#xff1a; &#x1f4b0;作者&#xff1a;小刘在C站 ✨每天分享课堂笔记 &#x1f338;夕阳下&#xff0c;是最美的绽放 目录 动态路由协议和 rip 1.动态路由 2.动态路由协议工作…

非线性方程求根——牛顿迭代法

一、牛顿法 1.实质&#xff1a;牛顿法实质上是一种线性方法&#xff0c;其基本思想是将非线性方程f(x)0逐步归结为某种线性方程来解。 2.牛顿法公式&#xff1a; 已知方程f(x)0有近似解xk,假设&#xff0c;将f(x)在点xk泰勒展开&#xff0c;有则方程f(x)0可近似表示为&#…

【开关电源六】buck电路的输出纹波定量分析走一波?

在TI官网发现一篇关于降压开关电源的输出纹波定量分析&#xff0c;看完觉得挺不错的&#xff0c;于是大概整理翻译了一下分享出来。以往我们分析开关电源的一次纹波都是定性分析&#xff0c;知道输出电压纹波和电感纹波电流、输出滤波电容ESR等有关&#xff0c;今天我们用数学、…

再看 Logback 源码

三大组件 Logback 构建在三个主要的类上&#xff1a;Logger&#xff0c;Appender 和 Layouts。这三个不同类型的组件一起作用能够让开发者根据消息的类型以及日志的级别来打印日志。 Logger 类作为 logback-classic 模块的一部分。Appender 与 Layouts 接口作为 logback-core 的…

VapSR

1024刚过还得搬砖 注意机制在设计高级超分辨率&#xff08;SR&#xff09;网络中起着关键作用。在这项工作中&#xff0c;作者们通过改进注意机制设计了一个高效的SR网络。VapSR以更少的参数优于当前的轻量级网络。董超团队开源超大感受野注意力超分方案 paper&#xff1a;ht…

【数据挖掘 | 可视化】 WordCloud 词云(附详细代码案例)

&#x1f935;‍♂️ 个人主页: 计算机魔术师 &#x1f468;‍&#x1f4bb; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 开发环境 编辑器&#xff1a; jupyter notebook 解释器&#xff1a; python 3.7在七夕节中&#xff0c;博主写了一篇为女友收集…

自学Vue之路——Vue介绍及基本语法

今日内容概要 前端发展介绍Vue的快速使用插值语法指令系统之文本指令指令系统之事件指令指令系统之属性指令 前端发展介绍 HTML(5)、CSS(3)、JavaScript(ES5、ES6、ES13)&#xff1a;编写一个个的页面 -> 给后端(PHP、Python、Go、Java) -> 后端嵌入模板语法 -> 后端…

Arduino基础知识

目录&#xff1a; 第1章 概述 1.1 Arduino简介 1.2 Arduino内部结构 第2章 Arduino编程 2.1 Arduino开发环境 2.2 Arduino语言概述 2.3 Arduino基本函数 第3章 Arduino通信教程 3.1 SPI通信 3.2 红外通信 3.3 WiFi通信 3.4 蓝牙通信 第4章 Arduino实验 1、接收串…

【学生管理系统】权限管理之用户管理—查询所有用户并关联相关角色

目录 一、查询所有用户&#xff08;关联角色&#xff09; 1&#xff09;后端 2&#xff09;前端 &#x1f49f; 创作不易&#xff0c;不妨点赞&#x1f49a;评论❤️收藏&#x1f499;一下 一、查询所有用户&#xff08;关联角色&#xff09; 1&#xff09;后端 修改javaB…

牛客小题练手 | 二叉树(三)

&#x1f308;刷题&#xff0c;面试&#xff0c;求职&#xff0c;快来牛客网一起成为offer收割机&#xff01; 点击注册收割offer 一、BM32 合并二叉树 描述 已知两颗二叉树&#xff0c;将它们合并成一颗二叉树。合并规则是&#xff1a;都存在的结点&#xff0c;就将结点值加…

前端无法渲染CSS文件

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…