魏意烽 ,曾令超 ,魏炆通 ,吴浩昌 ,潭鑫钥 ,詹富城
(广东白云学院,广东 广州 510450)
近年来,随着快递行业的快速发展,快递站在方便人们取快递的同时也难免会出现一些特殊情况,比如快递被拿错、快递取件人信息与真实取件人的信息不符合、找不到快递员的联系方式等问题。基于此,课题组根据这些问题针对性地提出了“智能驿站”的想法,该想法的核心在于拥有一个“大脑”,即数据库[1]。在当前众多的嵌入式数据库中,开源的SQLite 数据库在市场上占据主流。因此,课题组创建的数据库是基于QtCreater 的SQLite3 数据库[2],其实现了对进出驿站的快件的快速管理以及实时监控,可以有效解决快递在进站和出站时遇到的大部分问题,极大地提高了驿站的安全性和实用性。
“智能驿站”的数据库系统由SQLite3 数据库运用QtCreater 搭建的服务器与客户端,输入设备和输出设备组成,系统的框架如图1 所示。输入设备有特制的扫码枪按键、Rock Pi 4C Plus连接的鼠标、键盘,输出设备有Rock Pi 4C Plus 连接的LCD 显示器。当快件到达驿站后,会由驿站工作人员使用扫码枪对快递包裹上的条形码进行扫描,扫描后的数据将被保存在数据库中[3]。管理员可以随时登录服务器对后台数据库中的数据进行操作,一旦取件人有任何关于快递包裹状态或者快递员联系方式的问题,便可以由服务器向客户端发送快递包裹数据,最后数据会显示在Rock Pi 4C Plus 连接的显示器(项目实验装置,后续便可以利用Qt 和Linux 的可移植性强的特点将客户端移植到任何系统上,比如Android,MAC OS X 等系统)上,取件人便可以实时查看快递包裹的动态。
图1 “智能驿站”系统框架图
通过在QtCreater 环境中新建一个Qt Widget Application 应用程序,并新建一个继承于QWidget 类的Widget 窗口类,设计一个主界面[4],方便管理员直接操作数据库,对数据的增删改查以及查看储存快递信息的3 张表格进行图形化操作。其中,3 张表分别为快递员与快递公司信息表、快递与取件人信息表、出库信息表与用户账号数据表。
“智能驿站”服务器系统主界面,如图2 所示。通过单击主界面中的“快递与取件人信息表”按钮,图中的QtestBrowser 组件便会显示快递单号、投递时间、取件人姓名、取件人电话、取件地址等信息,并且此信息会一直保留,除非包裹已经被取走,信息才会进入出库信息表。在Qt 中为了实现事件处理及界面跳转,可以通过对快件的信号函数添加槽函数,当单击图2 中的“连接数据库”按钮时[5],会发出一个click 信号,再在click 信号函数上添加on_Connect_clicked()槽函数,就可以实现与数据库的连接。
一旦建立了与数据库的连接,就可以使用Q S Q L Q u e r y 执行底层数据库支持的S Q L 语句,只需创建一个Q S Q L Q u e r y 对象,然后调用QSQLQuery::exec()函数就可以向数据库提供标准的SQL 语句[6]。
服务器的系统界面还包含另外两个重要的PushButton 控件,分别是快递员与快递公司信息表(Couries_Table)和出库信息表(Out_Table),PushButoon 也都添加了相应的槽函数,其分别对应着一项功能。其中,出库信息表的信息对项目想法的实现具有十分重要的作用,在系统中的作用仅次于主表的“快递与取件人信息表”。
图2 “智能驿站”服务器系统主界面
“智能驿站”管理系统的具体流程,如图3 所示。一旦驿站的接线员收到取错件者的电话,经认定,确认为取错件者之后,工作人员会查找被取错的快件信息,同时让取错件者将快件放在驿站暂留区,最后工作人员会发消息通知原主来取件;如果是未取件者,且快件无法在驿站找到,接线员便可以通知管理员查找快件数据库,调取信息表;如果是非驿站客户端注册人员,则调取该取件人的生物特征(人脸图像),交于警方处理,让警方对其发出警告,归还快件;如果是驿站客户端的注册人员,则短信通知该取件人,取错快件,请在3 天内将快件放至驿站暂留区,不配合者,列入用户黑名单,并交于警方,从此不得入驿站。
安装QtCreater跟服务器管理界面,类似于创建应用程序窗口等,创建好之后,再创建客户端登录界面,登录界面包含2 个PushButton 控件、2 个LineEdit 控件和1 个Label 控件。其中,2 个PushButton 控件分别对应着登录按钮、注册账号密码按钮,用户登录时在2 个LineEdit 编辑框中分别输入账号(手机电话号码)和密码,输入完成后单击登录按钮,登录按钮会发射clicked()信号,该信号用来调用登录按钮的槽函数。
在槽函数中主要有3个部分:
1)获取LineEdit 编辑框中的内容,判断用户是否输入账号和密码,如果返回值为空,则表示完整地输入了账号和密码,否则将清空LineEdit 编辑框中的内容,提示重新输入。
2)将LineEdit 编辑框中输入的账号和密码与数据库中的“用户信息表”已存信息进行比较。
3)如果LineEdit编辑框输入的信息与数据库中已经注册的信息对应,则登录成功,登录成功后将显示用户主界面;如果输入的信息没有在数据库中找到,则显示登录失败,账号或者密码错误,请重新登录。
主界面是由继承于QWidget 类的Widget 窗口类组成,界面的组件有5 个PushButton 控件、1 个LineEdit 组件、1 个QTextBrower 组件、1 个Combo box 组件和1 个Label 组件。每个按钮都添加了相应的槽函数[5],分别对应着一项功能[7]。用户一登录主界面,便会在界面正中看到自己的待取件,如果没有待取件便不会显示,方便用户快速查看自己是否存在待取件。
通过以上步骤,编程实现了对“智能驿站”客户端的设计。完成程序编写后,按下载运行,显示无错误也无警告后,以Release 方式编译生成exe 程序,运行成功后,找到项目生成目录,将exe 可执行文件复制到一个新建的空文件夹中,最后在Qt 命令行中使用windeployqt 工具将程序打包发布,得到完整exe可执行程序发布集合,可以在任何一种系统上运行此“智能驿站”的客户端。
当一个快件到站之后,会用扫码枪将快件扫码入库,随后快件的各种数据将自动被导入数据库的表格。如果快件在之后与取件人的交接过程中出现任何问题,“智能驿站”的专业人员可以登录驿站的服务器系统解决出现的问题。项目成员演示了快件进入驿站,通过扫码枪导入数据库的过程,快件信息能够被录入到数据库中,并且反复尝试也没有出现数据丢失的情况,确保了在真实场景中应用的稳定性。
专业人员输入账号密码,即可登录服务器查看数据库快件信息的更新情况。比如,驿站来了一个快递单号为“773178563991773”的快递,当它被导入数据库的信息是有取件人姓名、地址、电话等信息时,经测试后,点击服务器的各个按钮均能成功实现操作。
使用Rock Pi 4C Plus 开发板连接显示器作为客户端,在Rock Pi 4C Plus 开发板中已提前烧进了一个Linux debian 5.10.0-18-amd64 的系统,gcc/g++ version 10.2.1 在此系统上下载好客户端的exe 程序,进行注册之后再登录。Rock Pi 4C Plus 开发板接线实物图如图4 所示,客户端登录界面如图5 所示,客户端主界面如图6 所示。可以在待取件界面看到快件信息,快件信息为快件基本信息(单号、地址等)和取件人信息(若该取件人已注册为本驿站客户端用户,用户库内有其基本信息及生物特征信息,使用①信息;若该取件人未注册为本驿站客户端用户,用户信息库中无此人信息,则调用出件时由OpenCV 配合树莓派读取摄像头[8]进行人脸识别并保存下来取件人的生物特征信息[9],使用②信息)。取出库信息表不可随意查看,收集的信息也不会用作其他商业用途。数据更新时间为每天24:00,自动封存当天的取出库信息表,封存时间为6 个月。在这期间若无取件人取错快件的情况,系统将会在封存结束当天24:00自动删表;在这期间若有快件取错事件,可通过预留在驿站内的服务热线询问取件情况,调出该当事人的快件状态信息并进行对比[10],确认快件取错属实,方可调用封存中的信息表。
图4 开发板接线实物图
图5 客户端登录界面
图6 客户端主界面
本系统通过使用Qt 应用框架呈现出人机交互界面,采用Qt 信号槽机制实现对快件出入库数据的管理和操作,利用Qt 提供的进程内数据库SQLite3,可用于多种操作系统平台。经过测试,管理员登录服务器后能够使用相应的功能,用户(取件人)成功登录客户端也可以查看快件是否到站,当快件被取走时,客户端和服务器均能对其做出反应,及时更新数据库。课题组模拟了快件出错的多种情况,其都能得到很好的解决,表明该系统能快速解决在快递出站中遇到的各种问题,极大地提高了驿站的可靠性与驿站人员的工作效率,节省了时间和金钱成本,并为传统驿站的创新提供了参考。