基于Python+MySQL+Pyqt5开发的自动贩卖机系统(无人售货机)

目录
1 系统背景概述 2
1.1 开发背景简介 2
1.2 组织机构设置 2
1.3 现行系统存在的问题 3
1.4 开发新系统的必要性及可行性分析 4
1.4.1 必要性 4
1.4.2 可行性 5
2 系统需求分析 5
2.1 问题分析及因果分析 5
2.2 业务需求分析 6
2.2.1 现行系统业务流程 6
2.2.2 未来系统业务流程 8
2.3 上下文数据流图 9
2.4 系统需求用例建模 10
3 结构化系统分析 11
3.1 逻辑数据模型(逻辑E-R图) 11
3.2 数据流程模型(DFD) 11
3.2.1 Part1:0层图 11
3.2.2 Part2:1层图 12
3.2.3 Part3:2层图 12
4 结构化系统设计 15
4.1 系统体系结构设计 15
4.2 总体功能模块设计 15
4.3 物理数据库设计(物理E-R图) 18
4.4 数据库的主要代码设计 18
4.5 用户界面设计 19
4.5.1 财务 19
4.5.2 采购 19
4.5.3 配送 22
4.5.4 维护 24
4.5.5 客服 25
4.5.6 顾客 26
5 面向对象的系统分析 28
5.1 系统分析用例模型 28
5.2 活动图与顺序图 33
5.3 系统分析类图 37
6 面向对象的系统设计 39
6.1 设计类图 39
6.2 设计阶段交互图 40
7 系统实施 42
7.1 编程与试运行 42
7.2 输入试验数据和测试 51
8 项目进度表 54
2 系统需求分析
问题分析及因果分析
一.关于部门缺失或分工问题
用户购买后缺少售后部门。现行系统用户遇到问题难以找到有效途径得到解决。我们的系统计划设立售后支持部门,在用户遇到问题时可以直接进入客服界面,由客服为其解决相关问题。
另外,当前系统的维护主要是通过企业遇到问题时再外包维修完成,这可能主要是出于成本的考量。但考虑到货柜主要售卖的产品都属于时效性较强的食品、饮料等,系统故障、购买到过期食品都会对用户体验带来极大的影响。考虑到当前自动售货柜当前所处市场竞争程度较强,企业用户水平对市场占有率、盈利水平影响较大,我们认为需要加强用户服务水平。因此,我们通过维修部门定期检查、客户反馈两个途径降低顾客遇到故障机器的概率,提升客户服务水平。
二.数据使用问题
当前送货策略采取的是在每个货柜缺少的时候进行派送,每个货柜内货品种类基本一致,造成热销品类商品很快就会售空。造成物流成本的提升,企业盈利水平的下降。因此,我们可以通过分析该货柜的销售情况进行合理分析,找到该货柜最常见的顾客群体,进行针对性的个性化的进货、配货方案。
三.技术问题
现行的系统在自助结账时采用的是按照重量进行比较,这种方法对于单重较大的物品较为有效,但对于单重较轻的商品会对重量精度要求较高,进而导致设备的成本以及后期维护成本较高。因此,我们采用的是图像识别技术进行商品识别,进而实现自动扣款。通过建立商品图像数据库,利用CNN卷积神经网络提取商品特征,再通过卷积池化等操作进行商品的识别。降低后期成本,提高系统使用寿命。
同时,现行系统采用的登陆方式是传统的密码登陆模式,安全性不及生物识别技术。存在一定的系统安全性风险。通过人脸识别技术让系统人的每一个用户,集身份验证与认定于一体,提高系统安全性。

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'Main.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.face_login_btn = QtWidgets.QPushButton(self.centralwidget)
        self.face_login_btn.setGeometry(QtCore.QRect(180, 280, 121, 41))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(14)
        self.face_login_btn.setFont(font)
        self.face_login_btn.setObjectName("face_login_btn")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(140, 40, 491, 151))
        font = QtGui.QFont()
        font.setFamily("黑体")
        font.setPointSize(48)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.admin_login_btn = QtWidgets.QPushButton(self.centralwidget)
        self.admin_login_btn.setGeometry(QtCore.QRect(510, 280, 121, 41))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(14)
        self.admin_login_btn.setFont(font)
        self.admin_login_btn.setObjectName("admin_login_btn")
        self.graphicsView = QtWidgets.QGraphicsView(self.centralwidget)
        self.graphicsView.setGeometry(QtCore.QRect(240, 340, 305, 203))
        self.graphicsView.setObjectName("graphicsView")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.face_login_btn.setText(_translate("MainWindow", "人脸登录"))
        self.label.setText(_translate("MainWindow", " 欢迎来到能量站"))
        self.admin_login_btn.setText(_translate("MainWindow", "管理员登录"))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shejizuopin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值