APP下载

一种基于Python的图书馆自习室管理系统

2022-04-28陈家豪刘永乐王晨阳陈兰丽孙建冬

科技创新与应用 2022年11期
关键词:字段自习室管理员

熊 辉,陈家豪,刘永乐,王晨阳,陈兰丽,,孙建冬

(1.重庆工业职业技术学院,重庆 401120;2.湖北理工学院,湖北 黄石 435003;3.湖北师范大学,湖北 黄石 435000)

大学图书馆良好的学习环境是学生喜爱到图书馆自习的主要原因之一。随着大学的扩招,图书馆自习室座位资源与学生的供需矛盾越来越突出,占座的现象越来越严重[1]。图书馆占座就是在别人去之前一个人占用一个或者多个座位,并且在所占的桌子或者椅子上放着一个物件以表示该座位已经被占用。尤其是各种考试前夕,图书馆自习室便成为了学生密度最高的地方之一。大多数国内高校目前的解决方案是周期性清理图书馆座位。这样的方案表面上可以解决使用座位的矛盾,但是自习室座位的使用率仍然很低。学生占座后,由于上课与作息时间的需要,座位还是长期处于空座,这样也会使没有占到座位的同学觉得不够公平。

因此,图书馆如何合理地分配座位,如何高效地使用座位资源,如何建立一个公平合理的自习室管理制度,成为各大高校亟需解决的问题。

1 图书馆自习室管理系统现状

我国对图书馆自习室管理系统已经有了较多的研究[2]。当前,在图书馆自习室管理系统的研究,主要分为以下3个方面:(1)基于人工的图书馆自习室管理系统。这种的管理方式容易导致自习室座位使用效率较低,而大多数学生得不到自习室座位。(2)基于C/S构架或B/S的图书馆自习室管理系统。这种结构使用广泛,但是要求有较好的系统分析基础,开发成本较高。(3)基于物联网技术的图书馆自习室管理系统[3]。嵌入式技术以及物联网技术与校园信息化技术相结合,是未来图书馆自习室管理系统的研究发展方向。但是现在技术不够成熟,软硬件开发难度大,成本高。

2 基于Python的图书馆自习室管理系统开发

2.1 Python前后端框架的特点

Python是一个结合了编译性、互动性、解释性和面向对象的脚本语言。Python具有很强的可读性,相比其他高级程序语言,其语法结构更有特色[4]。基于Python的图书馆自习室管理系统,方案简洁实用,成本低廉,运行维护方便。Django是一个Python的网站开发基本框架[5],具有丰富的应用库支持,可以将公共工具包转换为个人开发包,这使得Django具有很大的扩展性。

Vue.js是Python用于构建用户界面的轻量级响应式JavaScript(JS)框架[6]。与其他大型框架不同,Vue可以自底向上逐层应用。Vue的核心库设计只关注视图层,不仅易于上手开发,还便于与第三方支持库或既有项目整合。另一方面,当与现代化的工具链以及各种支持库相结合使用时,Vue也完全能够为复杂的单页应用提供驱动。

使用前后端分离方式时,所有的静态文件将放在静态文件服务器中,向后台获取数据需要通过各个应用程序接口(API)进行。前端在每一个页面需要通过特殊的API对后端的数据实现特定的增、删、改、查等操作,保证数据和操作执行的可靠性和安全性。

2.2 系统角色分析

为了保证图书馆自习室管理系统的顺利开发,要对系统的使用者进行角色的划分,从技术的可行性分析出不同角色的流程,并分析不同角色不同功能。

图书馆自习室管理系统的使用者可以划分为2类:图书馆管理员与使用自习室的学生。在图书馆自习室管理系统中,管理员充当系统维护角色,负责维护系统的正常运转与环境管理。管理员的主要权限有以下几点:(1)图书馆自习室的座位信息查询。可以直接看到各个自习室的使用情况,对应的座位号是否被使用等。(2)学生的状态查询。通过学号可以看到每个学生的使用状态,学生是否在学;学生使用的自习室与座位号;学生的账号是否被禁止学习等。(3)查看学生的信息。可以看到学生的基本信息、借阅情况等。(4)监督与处罚。管理员对座位使用情况进行监督。如座位被使用而座位上没人,可以对其使用者进行禁止学习操作。(5)恢复学生使用。如果学生反省自己错误,可以通过学号恢复学生对系统的使用权。

学生的服务与权限如下:(1)系统登录。通过学号与密码登录图书馆自习室管理系统。(2)个人信息查询。只能看到自己的基本信息、学习状态与座位是否被禁用。(3)座位查询。可以看到每一个自习室的使用情况、座位使用情况。(4)座位办理。通过手机App或者电脑网页,办理正常的入座与退座。

2.3 系统流程分析

图书馆自习室的管理核心是可以保证自习室座位的高效使用,以免浪费座位资源。另外,还要维护良好的学习环境,保证自习室的安静、座位的整洁以及公共卫生安全。

本系统从学生与管理员的登录开始,实现系统的各种功能。基本流程如图1所示。

图1 图书馆自习室管理系统基本流程图

(1)学生使用图书馆自习室管理系统,先使用自己的学号与密码登录管理系统,随之可以查看各个自习室的座位使用情况。如果是空座,那么学生可以通过点击座位来选择入座,如果不是空座则无法点击。退座的过程也需要学生确认是否退座。使用座位的过程中,所占的座位会从空座变成被选用。所以各个座位就不会引起使用的冲突。

(2)管理员从登录页面开始进入系统,需要维护图书馆自习室的学习环境,不能允许被使用的座位上没有学生在学习。所有每个管理员有着监督与惩罚的权限,可以禁止学生使用座位,同时也可以恢复学生对座位的使用权。

3 图书馆自习室管理系统的实现

3.1 数据库设计

数据库是一个系统的核心部分,数据库的安全是最重要的,必须能保证用户的信息安全和隐私安全。本系统选择MySQL数据库来储存用户的使用数据,采用目前最稳定、高效、安全的MySQL 5.7版本。

数据库需要系统角色的划分,根据角色特点编写合适的字段,以便使用时查找与调用。本系统数据库设计较简洁,学生和管理员相同,有学号(工号)、名字、密码等字段。为查询学生是否被禁止学习,给出1个can_study布尔值字段;为显示学生是否在学习中,给出1个in_study的布尔值,如果正常入座、退座则会改变这个字段;为记录学生所用的座位号,给出1个字符串的字段seat_info。自习室的座位是1个model,需要多次实例化才能得到多个座位。它包含2个字段,1个是让前端知道座位是否被占用的布尔值字段is_user,还有1个字符字段显示当座位被使用时同学的学号。

3.2 前后端分离设计

本系统采用基于Vue.js前端框架和Django后端框架结合的前后端分离架构设计。前后端分离的开发,是指前后端工程师约定好数据交互接口,并行地进行开发和测试。前端通过HTTP请求获取数据并负责将数据渲染到页面上;后端只提供数据,不负责将数据渲染到页面上。主要优点包括以下几点。

(1)提升开发效率。前后端分离以后,可以实现前后端代码的解耦,只要前后端沟通约定应用所需接口以及接口参数,便可以开始并行开发,无需等待对方的开发工作结束。(2)增强代码的可维护性。前后端分离后,应用的代码不再是前后端混合,只有在运行期才会有调用依赖关系。(3)支持多终端和服务化架构。前后端分离后,同一套数据接口可以为不同的终端提供服务,更有助于打造多终端应用。

3.2.1 前端设计

图书馆自习室管理系统的使用者只有图书馆管理员和使用自习室的学生,因此系统前端设计简单清晰。当使用者访问系统时,直接出现登录界面,如果不进行登录则无法访问首页,也无法看到图书馆的基本信息、自习室座位等信息。系统设置了一个拦截器程序,拦截没有登录的用户,避免无关人员进入系统。登陆后,页面会依次展示图书馆的简介、图书馆的开馆时间等信息。通过点击登录界面的选择栏可以跳转到个人中心,或者查看各个图书馆自习室。学生有自己的个人中心,而管理员可以登录管理学生中心页面。当用户注销后,网页自动跳转到需要登录的页面,同时清空使用者的使用信息。

3.2.2 后端设计

为了方便开发,使用Django自带的后台管理程序。在Django项目中的admin.py文件中注册需要被管理的Model。属性设置如下:

使用超级账号访问“http://127.0.0.1:8000/admin/”网站管理后台数据,后台管理包括学生管理、座位管理和管理员身份创建。

3.3 用户登录模块

登录模块用来识别用户,对用户的权限进行判定。因管理员和学生登录身份不同,模块提供了2个登录按钮。为了让前端区分出是学生身份还是管理身份,本系统使用了Vue框架中的Vuex组件,它可以将关键数据存在内存中,后面开发模块使用不同功能,系统可以从内存中调出身份来区分。登录成功后页面会跳转至首页,如果学号(工号)或者密码错误则会回馈给前端相应的信息。

3.4 入座与退座功能模块

在座位分配的问题中,系统使用分页的功能来实现不同自习室座位的管理。学生选择不同的自习室去访问不同的座位号码,就可以得到属于相应自习室的座位。入座前需要判断该学生是否可以使用该系统、操作者是否是学生、是否已经使用了1个座位等。经过一系列的判断后,则可以通过AJAX(Asynchronous JavaScript And XML)向后台请求入座操作。Vue前端将入座者信息、座位信息传递给Django框架后台,经过2个AJAX的“PATCH”请求则完成入座,将学号信息赋予所选座位,同时把座位信息赋予“个人信息”的“座位号”,学生的学习状态改为“学习中”,被使用的座位状态也被改为“使用中”。入座成功后,程序中相应的字段会改变,而系统应用界面也会随之跳转到学生“个人中心”页面。

如果学生学习完毕,从“个人中心”点击“退出学习”,需要2个AJAX的“PATCH”请求来改变学生与座位的字段信息,即座位信息复原。点击页面右上角的“注销”便可以退出系统,内存中清除使用者的信息,页面也会随着跳转到登录页面。

3.5 禁止与恢复学生对座位的使用功能

管理员维护自习室的学习环境,提高座位的使用率。对于占着座位却发现座位上没人的情况,管理员有权限去禁止这个学生再次使用该座位。若管理员发现某座位被使用而座位上却没有学生,可以点击这个学号进入管理页面。为了保护学生的个人隐私,系统设定学生之间不能查看彼此的“个人中心”。因此,前端设定为只有管理员才可以点击学号跳转到特定的学生管理页面,可以清楚看到该学生的基本信息。页面上设置搜索框,管理员可以通过学号来搜索特定学生。页面底部设置了“禁止学习”按钮,点击可以直接禁止这个学生使用该座位。点击后这名学生的“能否学习”字段已被改变,该学生依然可以登录这个系统查看每个座位的使用情况,但是无法入座。学生若反省自己的行为,可以向管理员申请恢复自己账号使用。管理员恢复某个学生的账号使用,需要用学生学号通过搜索框查找这个学生。

该查询操作通过Vue前端AJAX的“POST”请求向后台发送学号,后台以这段字符串为索引,在数据库中查询,成功后返回该学生的信息。Django框架后台代码如下:

4 结束语

高校图书馆自习室反映了一所大学的学习氛围,也是学校图书馆管理水平的体现。基于Python开发的图书馆座位自习管理系统,界面简洁,稳定性好,开发维护成本低。该系统为学生提供必要的座位资源服务和图书馆管理功能。应用程序采用先进的管理员权限管理功能,可以较好解决图书馆“占座”现象,提高座位资源利用效率,提升图书馆服务质量。

猜你喜欢

字段自习室管理员
边读研边做副业
带钩或不带钩选择方框批量自动换
付费自习室爆火,“焦虑性充电”有无必要
付费自习室走红
可疑的管理员
突然爆红的“付费自习室”会是一个新风口吗?
让管理员管不了的名字
当小小图书管理员
无正题名文献著录方法评述
无正题名文献著录方法评述