备件出入库管理系统的设计与应用

(整期优先)网络出版时间:2021-07-08
/ 2

备件出入库管理系统的设计与应用

孙文杰1,潘伟, 杨秉佐,苏猛

山东中烟工业有限责任公司青岛卷烟厂 山东省青岛市 266101

摘要:目前计算机软件应用越来越广泛,各种软件系统的应用也给人们的工作和生活带来了极大的方便。在软件开发工具逐渐普及的背景下,采用Qt Creator开发工具完成界面设计,借助PyCharm开发工具采用Python语言结合SQLite数据库设计一套基于二维码的备件出入库管理系统。该系统具有备件库存查询与报警、信息编辑与导出功能,可准确记录备件的出入库信息,把握备件库存情况,减低清点库存的工作强度。

关键词:Qt Creator;二维码;Python;SQLite;备件出入库管理系统

1背景

目前备件库房内缺乏对备件出入库的系统管理,无法准确及时把握库房内备件使用与库存情况。日常使用中会发现当设备出现故障时,无法第一时间找到所需备件,甚至会出现备件缺少的情况,增加了设备的停机时间。由于备件管理较为混乱,相关人员无法有效记录备件的出入库情况,备件实际库存情况不得而知,需要定期清点库存备件,增加了工作强度。

2功能需求

为提高系统上线后的使用价值,汇总分析设计功能:

(1)二维码。可批量制作二维码,可识别二维码并获取备件信息。

(2)备件出入库。取代人工记录方式,实现备件精确入库、二维码扫描一键出库。

(3)报警提示。可对备件数量少的备件进行提示报警。

(4)备件查询。根据不同的条件进行备件的筛选查找。

(5)备件维护。具有备件明细的导入、导出与信息修改功能。

3系统设计

该系统上线后包含两大功能,备件管理功能和二维码制作功能,使用中需要将二维码制作软件与备件管理软件分开部署于不同的位置。由于一种备件号只能对于一种备件,具有备唯一性,可通过识别备件号来确定备件。

3.1出入库管理软件

3.1.1重点模块设计

(1)备件入库设计

操作人员进行入库时,需要输入新备件的备件号或型号进行查询,若查询到该备件为已经存在备件,系统自动填充备件信息,操作人员在完成信息检查确认并录入入库数据后进行备件入库。若未查到备件信息,操作人员需人工录入备件信息完成备件入库。

(2)备件出库设计

操作人员从货架上获取相应备件二维码后,用摄像头对二维码进行扫描,随后对识别到的备件信息进行确认并录入出库数量,点击出库完成出库操作。

(3)二维码制作软件

二维码制作软件在设计时支持从Excel批量导入备件信息,预先把备件信息保存到Excel表中,通过获取Excel表中备件号准确获得备件信息,进而完成二维码制作。为方便确认二维码对应的备件号,将备件号明码写到生成的图片中。生成的二维码以图片形式写入到Excel中,在表格中完成排版布局,由Excel完成二维码的批量打印。

3.1.2界面设计

采用Qt Creator工具实现界面设计,可方便快捷添加界面中需要的控件,实现界面的布局,简化软件代码的编写,提高设计效率。软件GUI界面主要基于QMainWindow模板和QDialog模板来实现,主要包括主界面、入库界面、出库界面、备件查询界面、出入库记录界面、备件详情界面。

3.1.3软件编码

Python是一种跨平台的、开源的、免费的、解释型的高级编程语言,功能强大,可简单有效地面向对象编程,很方便的将C/C++的类库封装为Python的模块来使用,运行速度较快,在数据分析、数据可视化等方面得到广泛的应用。

该系统采用Python语言来实现代码的编写,在后期使用中会有较多的备件条目,使用SQLite数据库进行数据的存储可以便于备件的后续管理,设计界面实现数据的查询、导出实现备件信息的管理和应用。

(1)Model/View结构

Model/View结构是进行数据显示与编辑的一种高效结构,这种结构将界面组件和原始数据分离,通过数据模型实现界面和原始数据关联,原始数据由模型(Model)读取,然后在视图(View)组件上进行显示和控制,在界面上编辑修改的数据通过Model保存到源数据。

该系统中系统采集到的数据作为原始数据存放于SQLite数据库中,使用QSqlQueryModel作为Model建立与SQLite数据库的关联,使用QTableView组件完成与QSqlQueryModel的关联,实现SQLite数据库数据与界面组件的信息互联,完成数据库与界面的操作。

(2)线程使用

在具有图形用户界面的应用程序中,主线程由GUI线程充当,是Qt唯一可以执行GUI相关操作的线程,但是可以拥有一个或多个非GUI线程作为工作线程。

该软件运行中不要求实时性,但其中部分功能的实现需要占用一定的时间来完成。为保证部分功能使用中不影响图形界面的响应速度,采用多线程运行方式。其中信息导出、图片导入等耗时功能由子线程来实现,其余由主线程来完成。

(3)信号与槽使用

Q界面组件都是由QWidget继承而来,支持信号与槽功能。信号和槽机制是一种高级接口,应用于对象之间的通讯,是Qt的核心特征。在代码编制过程中,用到以下几种:

(1)组件信号与内建槽函数。该功能实现设置内容的保存与取消等。如:self.cancel.clicked.connect(window.close)

(2)组件信号与自定义槽函数。该功能灵活,使用较多,如按钮、Action动作等。如:self.model.crowChanged.connect(self.do_crChanged)

(3)自定义信号与槽函数。该功能来实现窗口间的数据传递、线程间的数据传递等。如:signal = pyqtSignal(str, str, float) self.signal.emit(testBrand, testOK, testWeight)

(4)代码编制

代码编制采用单继承与界面独立封装的方法来实现,避免界面组件与新类中定义的属性混合在一起,提高代码可读性,同时避免界面组件成为窗体业务类的公共属性,做到封装,提高安全性,实现界面与业务的分离。

核心部分包括界面操作、信号与槽函数使用、子线程使用、子线程与主线程间数据传递、SQLite数据库操作(创建、查询、修改、删除)、QRCode操作、Excel操作与文件操作等。

4应用效果

4.1系统部署

将生成的exe文件部署到指定电脑,完成摄像头连接。

4.2系统测试

系统安装部署完成后对系统所有功能进行测试,包括出入库测试、库存查询测试、数据导入导出测试、图片导入测试、报警明细测试、数据库备份测试。

4.3系统应用

经过多次调试后可正确实现预期功能,运行稳定可靠,实现备件出入库功能与备件库存报警提示功能,可准确完成备件查询、明细导出、信息备份等,运行效果良好。

参考文献

[1]王维波, 栗宝鹏, 张晓东. Python Qt GUI与数据可视化编程[M]. 北京: 人民邮电出版社, 2019.

[2]王硕, 孙洋洋. PyQt5快速开发与实战[M]. 北京: 电子工业出版社, 2019.

[3]明日科技. Python从入门到精通[M]. 北京: 清华大学出版社, 2018

[4] Magnus Lie Hetland, 袁国忠. Python基础教程(第3版)[M]. 北京: 人民邮电出版社, 2013.

1