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

目 录
一、绪论 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.niftyadmin.cn/n/774.html

相关文章

SpringBoot使用在控制层切面注解配置的方式将日志存储在mysql

&#x1f345;程序员小王的博客&#xff1a;程序员小王的博客 &#x1f345;CSDN地址&#xff1a;程序员小王java &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 如有编辑错误联系作者&#xff0c;如果有比较好的文章欢迎分享给我&#xff0c…

Python实现自动安装第三方库,又是偷懒的一天

前言 哈喽啊&#xff0c;今天给你们分享一个偷懒摸鱼的小技巧~ 让你们实现更高效的摸鱼&#xff0c;让Python自动安装第三方库 是全自动不需要手动滴 pip手动安装 源码.资料.素材.点击领取即可 一说Python要安装哪个模块&#xff0c;我们第一反应&#xff0c;winr输入cmd&am…

年薪50w+的软件测试工程师是怎么炼成的?

随着互联网行业的迅速发展&#xff0c;软件测试工程师的地位越来越高&#xff0c;公司招聘时的薪资也越来越高&#xff0c;那么市场上为什么还有大量的软件测试工程师薪资只有5-6k呢&#xff1f;因为他们有一个共同的弱点&#xff0c;就是只会手工测试&#xff01;&#xff01;…

D-逃亡的贝贝(二分+有限制最小边权)

D-逃亡的贝贝_牛客练习赛104 (nowcoder.com) 题意:给你一个n个点,m条双向边的图(有边权),再给你起点s与终点t,以及有k个药水可以使某一条边,减小,求起点到终点经历边权最小值为多少. 题解: 首先建图,然后看到题中让我们找的是一个最小,或最大的值,是一个线性的值,我们就可以想…

Linux-系统监控系统常用命令

系统监控 proc文件系统 proc文件系统是一种无存储的文件系统&#xff0c;当读其中的文件时&#xff0c;其内容动态生成&#xff0c;当写文件时&#xff0c;文件所关联的写函数被调用。内核部件可以通过该文件系统向用户空间提供接口来提供查询信息、修改软件行为&#xff0…

[C]带你了解C语言是如何操作文件的

文章目录一、认识文件1.1 为什么要使用文件1.2 什么是文件1.3 文件名1.4 文件指针1.5 文件的打开和关闭二、文件的顺序读写2.1 fgetc和fputc2.2 fgets和fputs2.3 fscanf和fprintf2.4 fread和fwrite2.5 对比一组函数三、文件的随机读写3.1 fseek3.2 ftell3.3 rewind四、文本文件…

【MLOPs】Docker

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

喜讯!麦聪软件获得国际权威机构颁发的CMMI3证书

近日&#xff0c;麦聪软件宣布已通过国际权威机构CMMI Institute的评估并获得CMMI3证书。 CMMI3证书的获得&#xff0c;标志着麦聪软件在软件研发能力、项目管理能力、质量保障能力和实施交付能力等方面已经得到国际权威机构的认可&#xff0c;是麦聪软件研发管理体系规范化过…