赞
踩
目录
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", "管理员登录"))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。