基于二维码的图书馆座位管理系统的设计与实现

摘 要

随着移动终端的普及,手机已经成为当代人不可缺少的通讯工具。 在此基础上,大众的生活状态发生显著改变。需要注意的是,智能手机拥有多种系统,而Android系统是较为常见的一种。基于这一点,技术人员可以利用Android系统逐步优化图书馆座位管理系统。

本研究以Android系统为基础,进一步完善图书馆座位管理系统的理论研究体系。简单来说,系统后台功能极为强大,既能收集用户数据,又能对系统进行升级维护。除此之外,用户还可以在前台进行操作,使用android开发中经常使用的控制来设计界面,使用MVC模式来设计整体的体系结构,在eclipse编译器中使用集成了android的SDK来开发,mysql作为系统的数据库。本文详细阐述了图书馆座位管理系统的特点,并对其功能展开介绍。通过这种方式,深入探究开发该系统的相关要素。

最终的成果是,使用该系统可以解决图书馆选座难题,缓解图书馆选座终端的压力,高效利用移动终端完成图书馆选座操作。

关键词:android; 图书馆; 座位; 管理系统

第一章 绪 论

1.1 课题背景

各高校为方便学生查阅知识以及提高自主学习的效率,均拥有占地面积庞大的图书馆。在这种情况下,学生能够自由的汲取各种知识。不过,由于学生数量越来越多,图书馆经常座无虚席。基于这一点,学生之间摩擦不断,严重影响了学习氛围。由于图书馆的座位有限,学校没有像样的管理方法,这样的现象持续不断,变得越来越严重。我校对占领现象采用专人整理的方式。

在这种情况下,不仅是图书馆的服务满意度造成影响。学生们也在利用座位时,有时会发生争吵,也会对同学之间的和睦关系产生影响。 特别是,每当学生们为了准备各种考试纷纷来到图书馆时,图书馆的座位就会爆满。 另外,如果当时没有人,但由于座位上放着着书,其他学生就会被延迟使用,这也是浪费资源的行为。 此外,也有不是本校教师的学生,为了寻找学习的气氛来到图书馆的自习室,长时间坐在座位上,加剧了座位的紧张,图书馆的座位不能共享,因此,不能有效利用资源。

针对上述现象,笔者收集相关材料,并对图书馆座位管理系统展开深入探究。通过这种方式,构建全新的管理系统,有效降低各类摩擦的发生概率。

1.2 国内外的研究发展现状

1.2.1国内高效图书馆座位管理的研究现状

进入二十一世纪后,社会经济水平提高,大学生的数量随之激增。与此同时,各类占座事件屡见不鲜。以图书馆为例,解决占座现象的手段较少。简单来说,校方很少利用强制手段制止愈演愈烈的占座现象。通常情况下,图书馆的工作人员会要求学生离开之前,清理座位上的垃圾和物品。与此同时,他们还会收走座位上的物品。

尽管如此,每天工作结束前必须收拾图书馆内的各种物品,会造成学生丢失财物。在这种情况下,学生会产生不满情绪,进而发生更大的摩擦。因此,校方无法凭借工作人员来处理相关问题。与此同时,工作人员也不愿激怒学生。基于这一点,部分学者研制出了图书馆座位管理系统。在现代化信息技术的协助下,他们收集相关数据,开发了符合自己学校实际情况的软件管理系统。这在某种程度上缓和了占座现象引起的不必要的纠纷,因而是有效的,提高了座位使用率,降低了人工费用。

1.2.2 国外座位资源管理研究现状

阅读是人类进步的基础,养成良好的阅读习惯,既能帮助人们掌握更多知识,又能提升阅读者的整体素质。在此基础上,图书馆的数量越来越多,逐渐成为推动社会进步的重要支柱。从实际情况来看,国外的社区图书馆广受好评,有着恨锁值得借鉴的经验。 例如,韩国XX高度重视图书馆的建设,在法律上规定了图书馆的选址,环境,技术标准等。 日本学者Toshiaki在研究该领域时,以各种手段引导大众增加阅读量。除此之外,他还详细分析了课堂座位数量以及占座特点。由于研究资源以及外部环境存在较大差异,致使研究结果截然相关。不过,学界普遍认为座位管理既会影响到学习效率,又能诱发学生之间的冲突。因此,校方必须妥善管理座位安排,才能营造良好的学习氛围。

据我所知,在海外的大学中,大学生所占的比例并不多,当然是存在的。 但是,因为海外的大学相对较好,所以在占座方面也可以说是一样的。 例如,在德国的大学,每个学院的考试时间和授课时间各不相同,学生自身有需要向管理部门申请,当然也有时间限制。 在欧美的其他大学,例如哈佛大学这样的学校,图书馆不是一个,所以基本上可以找到一个地方学习。 总体而言,国外的占座现象并不常见。究其原因,图书馆与课堂内的座位属于公共资源,而国外更注重素质教育,能够有效解决此类问题。与此同时,国内的应试教育培养出了大批实用主义人才。在这种情况下,学生更倾向于利用公共资源达成自身目的。国内外学者结合国情,对相关问题展开深入探究,并详细分析了资源分配存在的不足之处。通过这种方式,为学界提供了更多研究视角,完善了该领域的研究体系,帮助校方提出行之有效的解决方案,以便轻松解决特定的问题。

1.3本文的主要研究内容

本研究结合图书馆情况,收集校内学生数据,逐步完成相关设计。需要注意的是,校方在处理占座现象时,习惯采用较为温和的劝说方式。不过,校内学生的配合度较低,反而增加双方摩擦的概率,进而引发恶性事件。与此同时,学生配合度也反映了整个学校的学风,大学生的个人素质。 从这个水平来说,占座现象是不容忽视的,校方要予以充分重视,并及时进行处理。除此之外,校方要充分利用现代化信息技术,提高公共资源的管理效率。通过这种方式,帮助学生养成良好的生活习惯。不仅如此,现代信息化技术也能有效推动学校的发展。

从实际情况来看,只有公平、公开的管理系统,才能赢得学生的认可,同时也为学校节省少量劳动力成本。简单来说,管理员可以凭借强大的信息管理系统,完成各种一键操作。在此过程中,其管理效率大幅度提升。与此同时,学生可以根据系统信息,及时抢占座位资源。笔者主要优化了系统的以下几点功能:

(1)座位预约管理系统及身份的验证

通常情况下,座位管理系统在分配资源时,需要由学生完成刷卡。随后,系统会分配座位。在这种情况下,此类系统的工作效率极低,一旦学生数量过多,有时会排起长队在大军排起长队,有时也会代替刷卡占座位。 因此,为了解决上述系统的问题,本系统导入了座位管理预约系统。 其特征是,实现了通过个人终端的用户名和密码进行自我注册或通过学生卡进行注册的2个方式。 还可以连接到学生卡中心的数据库,完成座位资源的分配。另外,校方在建立识别系统时,尽量以学生卡信息为基础,方便系统进行验证和查询。与此同时,其成本也不高。

(2)图书馆阅览室座位的排位

在选择座位的过程中,既可以由学生自主选择,又能依照系统分配完成选座。通过这种方式,使学生能够获得更多自主权。与此同时,不仅避免了占座冲突,还能提高学生的学习效率。

(3)座位资源的更新管理

从传统的座位管理方式来看,校方会指派工作人员在图书馆内来回走动,观察座位的使用状况。 这种管理方法不仅费时费力,有时还会导致不必要的冲突和效率低下。 在本系统中,管理者只需手动或自动进行更新,保留违反者的记录,就可以提高座位的利用效率,这也与小程序不同。 通过本系统可以获得更多的信息,这些信息可以使学校在相关建设上进行有价值的改进。

1.4研究目标

笔者针对愈演愈烈的校园占座现象,详细分析管理系统的不足之处,并提出相应的解决途径。通过这种方式,帮助校方提高管理效率,降低占座引发的冲突,进而建立良好的学习氛围。与此同时,也能引导学生养成良好的生活习惯。除此之外,系统的简单操作对学生来说也很方便。

第二章 功能分析

2.1客户端

本系统具有用户注册登陆,用户个人信息的询问,用户的座位选择,用户利用座位时长提示,用户座位利用时间的延长,用户暂时离开座位,用户的座位释放等功能。

一、用户必须输入相关信息,完成身份验证之后,才能成功登陆该系统。

二、用户能够随时查询个人信息。

三、用户能够利用系统自带的实时地图,确认座位资源是否充沛,并做出更加合理的选择和判断。

四、 用户可以选择座位进行预订。

五、 在手动座位选择功能中,用户需要进行楼层选择,系统以列表形式向用户提示座位的情况,将未使用的座位标记为可选择状态,将已经使用的座位标记为不可选择状态。 用户可以通过向上或向下滚动列表来选择适合自己的位置。

六 、 如果选择成功,则会转到提示界面并显示用户名和使用时间的倒计时(默认为4小时)。 在使用时间结束前的15分钟内,将显示一条消息,询问您是使用时间结束,还是在使用时间结束前释放座位。

如果用户在指定的时间内完成了持续工作,则系统会将用户的学习时间延长两个小时。 另外,在2小时的结束前15分钟,指示用户再次确认是进行下一次操作还是腾出座位。

2.2服务端

服务端作为程序的指挥部,主要负责对程序运行做保障。

第三章 技术的实现

3.1搭建开发环境

3.11在进行搭建开发环境前先下载以下程序安装JDK、eclipse、SDK、adt

3.12安装JDK

配置环境变量:

(1)新建->变量名”JAVA_HOME”,变量值”C:\Java\jdk1.8.0_05″(你JDK的安装路径)

(2)编辑->变量名”Path”,在原变量值的最后面加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”

(3)新建->变量名“CLASSPATH”,变量值“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”

3.13安装SDK

android SDK是用于模拟android运行环境的文件集合。android SDK TOOLS主要包括一个SDK管理器和一个AVD管理器。SDK管理器用来管理不同版本的SDK(每个版本SDK对应一个安卓版本),AVD管理器用于创建一个虚拟手机。

配置环境变量:

新建一个系统环境变量,变量名为ANDROID_SDK_HOME,变量值为你的SDK安装路径。然后就是在系统的Path变量后,追加 ;% ANDROID_SDK_HOME%\platform-tools;% ANDROID_SDK_HOME%\tools。然后可以检验一下Android SDK是否安装成功:在命令行窗口中输入”adb version“,如出现版本信息说明安装成功。

3.2安卓技术开发

3.3二维码的生成与识别

1.引入依赖

首先在libs文件目录下放进jar包zxing.jar,然后引入依赖,sync。

然后添加二维码工具类

EncodingUtils.class

package com.example.qrcodedemo.utils;

import android.graphics.Bitmap;

import android.graphics.Canvas;

import com.google.zxing.BarcodeFormat;

import com.google.zxing.EncodeHintType;

import com.google.zxing.WriterException;

import com.google.zxing.common.BitMatrix;

import com.google.zxing.qrcode.QRCodeWriter;

import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

import java.util.HashMap;

import java.util.Map;

/**

* 二维码生成工具类

*/

public class EncodingUtils {

/**

* 创建二维码

*

* @param content content

* @param widthPix widthPix

* @param heightPix heightPix

* @param logoBm logoBm

* @return 二维码

*/

public static Bitmap createQRCode(String content, int widthPix, int heightPix, Bitmap logoBm) {

try {

if (content == null || “”.equals(content)) {

return null;

}

// 配置参数

Map<EncodeHintType, Object> hints = new HashMap<>();

hints.put(EncodeHintType.CHARACTER_SET, “utf-8″);

// 容错级别

hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);

// 图像数据转换,使用了矩阵转换

BitMatrix bitMatrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, widthPix,

heightPix, hints);

int[] pixels = new int[widthPix * heightPix];

// 下面这里按照二维码的算法,逐个生成二维码的图片,

// 两个for循环是图片横列扫描的结果

for (int y = 0; y < heightPix; y++) {

for (int x = 0; x < widthPix; x++) {

if (bitMatrix.get(x, y)) {

pixels[y * widthPix + x] = 0xff000000;

} else {

pixels[y * widthPix + x] = 0xffffffff;

}

}

}

// 生成二维码图片的格式,使用ARGB_8888

Bitmap bitmap = Bitmap.createBitmap(widthPix, heightPix, Bitmap.Config.ARGB_8888);

bitmap.setPixels(pixels, 0, widthPix, 0, 0, widthPix, heightPix);

if (logoBm != null) {

bitmap = addLogo(bitmap, logoBm);

}

//必须使用compress方法将bitmap保存到文件中再进行读取。直接返回的bitmap是没有任何压缩的,内存消耗巨大!

return bitmap;

} catch (WriterException e) {

e.printStackTrace();

}

return null;

}

/**

* 在二维码中间添加Logo图案

*/

private static Bitmap addLogo(Bitmap src, Bitmap logo) {

if (src == null) {

return null;

}

if (logo == null) {

return src;

}

//获取图片的宽高

int srcWidth = src.getWidth();

int srcHeight = src.getHeight();

int logoWidth = logo.getWidth();

int logoHeight = logo.getHeight();

if (srcWidth == 0 || srcHeight == 0) {

return null;

}

if (logoWidth == 0 || logoHeight == 0) {

return src;

}

//logo大小为二维码整体大小的1/5

float scaleFactor = srcWidth * 1.0f / 5 / logoWidth;

Bitmap bitmap = Bitmap.createBitmap(srcWidth, srcHeight, Bitmap.Config.ARGB_8888);

try {

Canvas canvas = new Canvas(bitmap);

canvas.drawBitmap(src, 0, 0, null);

canvas.scale(scaleFactor, scaleFactor, srcWidth / 2, srcHeight / 2);

canvas.drawBitmap(logo, (srcWidth – logoWidth) / 2, (srcHeight – logoHeight) / 2, null);

canvas.save();

canvas.restore();

} catch (Exception e) {

bitmap = null;

e.getStackTrace();

}

return bitmap;

}

}

改布局文件用于预览二维码效果,其中EditText用于输入放在二维码中的文本信息,qrCode1为生成不带logo的二维码的点击事件,qrCode2为生成带logo的二维码的点击事件。

<?xml version=”1.0″ encoding=”utf-8″?>

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”

xmlns:app=”http://schemas.android.com/apk/res-auto”

xmlns:tools=”http://schemas.android.com/tools”

android:layout_width=”match_parent”

android:layout_height=”match_parent”

tools:context=”.MainActivity”

android:orientation=”vertical”>

<EditText

android:id=”@+id/input_txt”

android:layout_width=”300dp”

android:textSize=”18sp”

android:layout_height=”wrap_content”

android:layout_marginTop=”10dp”

android:hint=”输入要生成二位码的内容”/>

<Button

android:text=”生成二维码”

android:layout_width=”239dp”

android:layout_height=”wrap_content”

android:id=”@+id/encode_btn1″

android:textSize=”18sp”

android:onClick=”qrCode1″

android:layout_marginTop=”20dp”/>

<ImageView

android:layout_width=”200dp”

android:layout_height=”200dp”

android:id=”@+id/code_image1″

android:layout_marginTop=”20dp” />

<TextView

android:layout_width=”match_parent”

android:layout_height=”2dp”

android:layout_marginTop=”10dp”

android:background=”#7e7b7b”/>

<Button

android:text=”生成带Logo的二维码”

android:layout_width=”239dp”

android:layout_height=”wrap_content”

android:id=”@+id/encode_btn2″

android:textSize=”18sp”

android:onClick=”qrCode2″

android:layout_marginTop=”10dp”/>

<ImageView

android:layout_width=”200dp”

android:layout_height=”200dp”

android:id=”@+id/code_image2″

android:layout_marginTop=”20dp”/>

</LinearLayout>

然后我们在主活动中使用集成的EncodingUtils类中的createQRCode()方法来生成相应的二维码,第一个参数content为二维码中所存放的信息,第二个参数widthPix为所生成二维码的宽度,第三个参数heightPix为所生成二维码的高度,第四个参数logoBm为二维码中间的logo,如果不带logo的话此参数设为null即可。

package com.example.qrcodedemo;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.Toast;

import com.example.qrcodedemo.utils.EncodingUtils;

public class MainActivity extends AppCompatActivity {

private ImageView enCodeImage1,enCodeImage2;//展示生成的二维码

private EditText editText;//输入要生成二维码的内容

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//初始化控件

enCodeImage1 = (ImageView) findViewById(R.id.code_image1);

enCodeImage2 = (ImageView) findViewById(R.id.code_image2);

editText = (EditText) findViewById(R.id.input_txt);

}

/**

* 生成不带Logo的二维码点击事件

* @param view

*/

public void qrCode1(View view){

if (“”.equals(editText.getText().toString())){

Toast.makeText(this, “请在输入框中输入内容”, Toast.LENGTH_SHORT).show();

return;

}

//生成二维码

Bitmap codeBitmap = EncodingUtils.createQRCode(editText.getText().toString(),500,500,null);

enCodeImage1.setImageBitmap(codeBitmap);//显示二维码

}

/**

* 生成带Logo的二维码

* @param view

*/

public void qrCode2 (View view){

if (“”.equals(editText.getText().toString())){

Toast.makeText(this, “请在输入框中输入内容”, Toast.LENGTH_SHORT).show();

return;

}

//获取logo资源,

//R.drawable.logo为logo图片

Bitmap logoBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.logo);

//生成二维码

Bitmap codeBitmap = EncodingUtils.createQRCode(editText.getText().toString(),500,500,logoBitmap);

enCodeImage2.setImageBitmap(codeBitmap);//显示二维码

}

}

3.4appserv数据库

学校座位系统数据库的设计就是根据学生用户的需要,在特定的环境中设计和建立整个数据库系统的数据库的过程。事实上,大量的数据在整个系统中采用合适的组织、存储、维护模式。 整个过程是复杂的,它的好坏将对整个系统产生很大的影响。数据库的设计基本包括物理设计和逻辑设计。

3.4.1数据库设计

通过对图书馆座位资源数据的整体分析,接下来设计了座位系统的概念数据模型

基于二维码的图书馆座位管理系统的设计与实现

  阅览室数据库模型

基于二维码的图书馆座位管理系统的设计与实现

  阅览室座位模型

基于二维码的图书馆座位管理系统的设计与实现

  学生用户模型

  第四章 总结

关于图书馆座位管理系统的设计和相关代码的实现,已经做了基本的介绍。 整体设计的思考方法很明确,简单地说,就是解决学校图书馆占座的问题。图书馆占座是很多高校都能看到的现象,根据学校的不同,处理方式也不同。 鉴于本校的实际情况,到现在为止采用人为的管理,主要依靠学生的自觉的行动。 从这件事很多麻烦引起了不少矛盾,对学校管理也产生了很大的不良影响。 本人经历了漫长的观察和调查的过程,在最后设计了本系统,解决了这些问题,希望能够为学生提供方便。

本课题主要是为提高校内图书馆利用率,对座位资源进行研究,进而研发了行之有效的管理系统。本文提出将计算机信息管理系统引入座位资源管理中,然后进行分配。通过图书馆座位的预约和及时的清理,可以帮助学生及时找到合适的座位。图书馆自学座位的使用效率和价值得到提高。

致谢

时间如梭光阴如剑,转眼毕业在即。回首往昔历历在目仿佛入学还在昨天,转眼就要为了自己的前程和梦想各奔东西。在这离别之际,首先我要特别感谢我的家人和老师对我的支持和帮助。然后感谢我的同学和朋友对我的鼓励和关怀,最后感谢本文所有的参考文献作者对计算机行业发展的贡献。

最后,再次对关心、帮助我的老师和同学表示衷心地感谢!

参考文献

[1]谢军红, 陶桂芬. 基于智能终端与二维码信息的座位管理应用研究[J]. 图书情报导刊, 2015, 25(9):129-131.

[2]杨成[1,2,3] 徐艺[1,2,3] 邹永杰[1,2,3] 王永金[1,2,3] 鄢小花[1,2,3] 杨蒙[1,2,3]. 基于二维码的微图书馆系统[J]. 物联网技术(6):120.

[3]宋钧玉. 基于二维码的图书馆移动应用服务体系实践研究[J]. 科学中国人, 2017(21).

郭俊仓, 蔡科平. 基于二维码的图书馆文化传播路线及效果分析[J]. 西安工业大学学报(3):48-52.

[4]杨丰汀. 基于移动设备的图书馆读者社区子系统的设计与实现[D]. 北京邮电大学, 2014.

[5]宋云云. 基于移动群智感知的图书馆座位资源监控技术研究[J]. 图书情报工作(21):46-52.

基于二维码的图书馆座位管理系统的设计与实现

基于二维码的图书馆座位管理系统的设计与实现

价格 ¥9.90 发布时间 2022年11月25日
已付费?登录刷新
下载提示:

1、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“文章版权申述”(推荐),也可以打举报电话:18735597641(电话支持时间:9:00-18:30)。

2、网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。

3、本站所有内容均由合作方或网友投稿,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务。

原创文章,作者:1158,如若转载,请注明出处:https://www.447766.cn/chachong/75586.html,

Like (0)
1158的头像1158编辑
Previous 2022年11月25日
Next 2022年11月25日

相关推荐

My title page contents