时间:2024-05-04
陈子杨 何允恒 李木子 陈梦仙 王云鸾 吕友波
摘要:图书馆对于高校学生,不仅是借阅书籍,查阅资料的设施,还是自主学习的场所。伴随着移动互联网的迅猛发展,以移动端为代表的终端异军突起。它给人们带来了全新的移动沟通体验,在学生中应用颇为普遍,影响力非常广,信息的时效性非常显著。因而该文描述了一套针对图书馆座位管理的移动端可视化选座系统的设计与实现。使用了python语言中的flask框架来实现web端的搭建。而数据库所需数据是通过轻量级数据库sqlite储存的。该系统可以让用户在移动端上就能实现图书馆选座,续座退座等功能,有极大的便利效果。
关键词:移动端;选座系统;flask
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2019)01-0075-03
The Design and Implementation of a University Library Selection System Based on Mobile
CHEN Zi-yang, HE Yun-heng, LI Mu-zi, CHEN Meng-xian, WANG Yun-luan,LV You-bo
(School of Computer and Information Engineering, Harbin Commercial University, Harbin 150028, China)
Abstract: The library is not only a library for borrowing books, accessing materials, but also a place for self-learning. Along with the rapid development of the mobile Internet, the terminal represented by the mobile terminal has sprung up. It brings people a new mobile communication experience, which is quite popular among students, has a wide influence, its information is Timeliness. Therefore, this paper describes the design and implementation of a mobile terminal visualization system for library seat management. The web side is built by the flask framework of the python language. The data required by the database is stored by the lightweight database sqlite. The system allows the user to 'select the seat', 'Extend seat occupancy time', and 'Leave the seat' on the mobile terminal, which has great convenience.
Key words: mobile terminal; Selection System; flask
1 背景
圖书馆对于高校学生,不仅是借阅书籍,查阅资料的设施,还是自主学习的场所。伴随着移动互联网的迅猛发展,以移动端为代表的终端异军突起。它给人们带来了全新的移动沟通体验,在学生中应用颇为普遍,影响力非常广,信息的时效性非常显著。自从我校图书馆出现了选座设备,便很好地杜绝了学生用书本、物品占座的现象。但是目前我校的图书馆原有的选座设备依然存在很多需要完善的方面:1)该选座设备给想要选座的同学限定了座位的使用时间,却无法提醒该座位过期的时间,且若需要“续座”须得在使用时间到期前半小时去往选座系统“续座”,从而严重影响了学生学习的集中性和积极性。2)由于未在规定时间内“续座”或完全离开,则会被系统记录一次,累积三次后就会在一段时间内无法选座。但是系统记录的次数只会在超过三次后才能清零,可能会导致学生不能选座的问题
针对这些问题,我们研究了以网络为媒介建立的手机移动端图书馆选座系统,并实现了“网上订座”“逾期提醒”等功能,做到设备需求来源于师生,设备服务于师生。
2 系统设计
2.1 系统总体设计
选座系统主要目的是实现用户在移动端完成图书馆座位的“即时选座”,“提前预定”以及“即时退座”等功能。整个系统可分为三个层次,如图1所示。分别为:一、视图界面,主要通过bootstrap来设计。二、数据库模块,通过SQLite用于系统的数据存储处理。三、通过flask框架搭建后台功能模块。三个层次互相联系,协同运作。
2.2 视图界面先
2.2.1 系统流程呈现
如图2所示,对于用户而呈现的有基础的登陆注销界面,选座界面以及三个基本功能的按钮。完成一次“选座”,“预定”或者是“退订”即完成一次流程。
如图3所示,整个视图页面的逻辑模块分为登陆注销模块和选座功能模块。从选座界面开始,倘若未登录就跳转到登陆界面,通过验证回到了选座界面。倘若验证失败则会弹出flash提示组件。在已登陆的情况下就拥有了两个功能,选择或者预定,执行“选座”或者“预定”时向服务器发起请求并得到反馈后便拥有了“退订”的功能。
2.2.2 视图实现方式
该选座系统的视图界面是基于前端框架Bootstrap设计的。前端开发框架是指一系列产品化的HTML/CSS/JavaScript组件的集合。其UI组件样式简洁,配备有一些JavaScript插件以及其栅格系统,这让我们的视图界面能够更便捷的开发并呈现出来。Bootstrap能够很好地实现响应式网页设计,在屏幕分辨率,尺寸各异的移动端,甚至是电脑端可以响应出不同的设图界面,使页面更富有弹性化兼容不同移动设备,减少了开发量。
除此之外,JQuery也是该视图界面的重要框架。JQuery是一个简洁,快速,轻量级的JavaScript库。不仅仅Bootstrap的脚本部分是基于JavaScript框架JQuery的,并且该视图页面的特定逻辑也是通过JQuery脚本实现的,极大地简化了 JavaScript 编程。
日期选择插件Datepicker是一个配置灵活的插件,该视图使用了Datepicker实现了座位选择在时间上选择限定的可视化工具,图4移动端的视图页面。
ECharts(Enterprise Charts)是百度的一个开源的数据可视化工具,一个纯Javascript的图表库。该视图使用echarts控件渲染了一个小型插件,实现座位时间上的可视化。如下图5。
2.3 功能模块概述
该系统软件基于Flask框架设计开发,是基于Linux平台开发,因为其基于B/S方式因而用户可以跨平台使用该系统软件。Flask是一个使用Python语言编写的轻量级Web应用框架,使用Jinjia2渲染模板。
该系统由Nginx接入用户的HTTP连接,将用户的请求转发给uwsgi进程,uwsgi根据WSGI协议构建进程池并调度Flask服务进程。
当用户打开了浏览器,呈现出来的是一个指定楼层指定区域的座位矩阵。而这个座位矩阵对应了现实世界下的图书馆自习座位。座位矩阵如图6。
该座位通过jinjia2模板遍历产生,并通过数据库内信息设置好矩阵元素属性,如(a。未被选中;b。被选中;c。已被使用d。已被预约;e暂离)。
用户通过点击按钮生成一个请求,并后台逻辑加工成为一个信息集S{用户信息,座位信息,请求需求}。紧接着Flask后台则将信息集转交给了数据库。数据库调整后做出响应后再返回信息作用于页面上的座位矩阵。
2.3.1 ORM映射模块
面向对象开发是当前开发的主流,几乎所有的应用程序都需要一个持久化的存储系统。而关系数据库仍然是许多人都青睐的持久信息储存方法,于是該系统采用了ORM映射将对象的状态关系到关系数据库的数据上。用以提高开发效率、降低开发成本和问题复杂度,最重要的目的还是消除编写低级数据库访问代码。最终使用了SQLAlchemy这个python中最知名的ORM工具,用以Flask后台和数据库的连接。
2.3.2 任务调度模块
用户可以选择指定位置,但是用户的座位占用时间是限定的,到了一定时间用户就会从有座位的状态到无座位的状态。而数据库是相对静态的,不能自发的修改本身内容。因此该系统使用了APScheduler,APScheduler (Advanced Python Scheduler) 是基于Quartz的一个Python定时任务框架。可以安排稍后执行的python代码,无论是一次或者说还是定期执行。设置好定时任务,通过简单的数据库操作,实现座位状态的改变,实现多用户同一座位使用。
2.4 数据库设计
一个选座系统,首先确定的两个实体是座位和选座人员。一个选座人员可以选定一个座位,而一个位置也只能被一个选座人员使用,于是相应的一对一关系就出现了。选座人员可以对座位进行选座也可以进行预定,统称二者为‘绑定,那么需要一个记录和存储这个绑定关系信息的容器。
对于选座人员这个实体可以确定主体为学生,先暂时不考虑教职工的选座功能。对于学生可以模拟出学生姓名,身份找号,性别,学号,年级,专业等等属性。学生的属性只有学号和身份证号是唯一的,为了区别于学生和其他社会人员,并且考虑到数据库的储存,学号是适合作为学生关系的唯一标识符。
为了更加精确便捷地便于学生找到座位,对于座位这个实体,要不断细化分类。对不同楼层,不同区域的位置进行分组,因此关系模型的设计就设置区域属性。位置区域这些属性是对于座位实际存在的,同时也应该存在一些逻辑上设置的属性。因此为了区别座位是否被学生选座,而设置座位的状态(是否选座,是否预定等等)。同时考虑到前端视图的映射,指定区域的一批座位也需要进行编号。
对于绑定关系分为选座和预定,前者只需要学生和座位两个实体的唯一标识符,但是考虑到预定功能,需满足不同时刻而设置了开始时间和结束时间。
2.4.1 数据库模型结构
如下图7满足项目需求而设计的数据库实体关系图:
根据ER图并去除传递关系可以得出的关系有:
1)学生(学号,姓名,身份证号,性别,专业代码,年级代码)
2)专业(专业代码,专业)
3)年级(年级代码,年级)
4)座位(座位id,座位编号,区域码,位置状态,桌子代码)
5)区域位置(区域代码,方向,高度)
6)位置状态(位置状态,位置状态值)
7)桌子(桌子代码,区域码)
8)选座集合(位置ID,学号,开始时间,结束时间)
整个数据库的数据表包括了座位信息,被选座位集,学生信息,桌子信息,(自习区)位置信息,专业信息和年级信息,而实际在数据库上的表如图8。
2.4.2 数据库安全性
仅有管理员才能获取数据库的所有权限,包括创建新的用户,创建基本表和视图,拥有对所有数据库对象的存取权限,并授权给其他一般用户。
而一般用户,诸如学生只能查询到本人的个人信息和座位信息,有限地修改座位状态。
2.4.3 数据集完整性
数据库的完整性是指数据的正确性和相容性。该数据库的数据是符合现实世界语义、反映当前实际情况的,而且该数据库内的内部关系也是符合逻辑的。
2.4.4 数据库规范性
范式(paradigm)的概念和理论是美国著名科学哲学家托马斯·库恩(Thomas Kuhn) 提出并在《科学革命的结构》(The Structure of Scientific Revolutions)(1970)中系统阐述的。常见范式有1NF,2NF,3NF,BCNF(Boyce Codd Normal Form)。而一个低一级范式的关系模式通过模式分解可以转换为若干个高一级的关系模式的集合,这种过程称作规范化。
对于学生关系R1(学号,姓名,身份证号,性别,专业,年级),拥有着年级和专业的属性,倘若出现了新的专业或者新的年级,而尚无对应学生时,则无法存储这个专业或者年级,存在插入异常。因此将学生关系分解为三个关系学生关系R1(学号,姓名,身份证号,性别,专业码,年级码),专业关系R2(专业码,专业),年级关系R3(年级码,年级)。此时三个关系符合BCNF,即修正的第三范式。
对于座位关系R4(座位ID,座位编号,方向,楼层,座位状态,桌子号),各个属性都是必需的且不相互依赖,包含码,因此符合BCNF。但考虑到前端映射效率问题分解成区域位置关系R5(区域代码,方向,楼层),桌子关系R6(桌子号,区域码),考虑到存取设置R7(位置状态,状态情况)。R5,R6,R7都符合BCNF,但此时的R4(座位ID,座位编号,区域号,座位状态码,桌子号)因桌子号和区域号具有传递的情况,只符合2NF。
对于选座集合关系R8(学号。座位ID,开始时间,结束时间)符合BCNF。
3 结束语
该文通过对该校图书馆情况的观察和思考,立足于该校的学生情况,结合所学知识提出和实现了一系列功能用于服务。从用户的角度正确了解到了用户的需求而为其提供服务,把视图页面,后台的实现,数据库的设计都一一介绍阐述,完成了一个智能,服务,便捷的图书馆选座系统。
参考文献:
[1] 王珊,薩师煊.数据库系统概论[M].5版.北京: 高等教育出版社,1983.
[2] 胡鑫,刘红,叶小亮.一种图书馆可视化智能选座引导系统的研究与实现[J].物联网技术, 2016(2):71-72.
[3] 代琳娜. 高校图书馆占座现象的技术缓解策略[J].科技资讯,2015(20):205-206.
[4] 郭小平. 大数据:基于微信移动端的教务信息公众平台[J].亚太教育,2016(25):289.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!