摘要
在当今快节奏的商业环境中,有效的库存管理对于便利店的成功运营至关重要。库存管理涉及到对商品的跟踪、监控和优化,以确保有足够的库存满足客户需求,同时避免过度库存导致的成本浪费。为了解决这一问题,我们设计并实现了一个基于 Django 的便利店库存管理及分析系统。
在便利店库存管理及分析系统的设计中,采用Python编程语言和Django技术,在MVC的模式下,并使用MySQL作为系统的数据库。该系统设计了强大的功能模块,考虑了便利店库存管理的各个方面。这些主要功能模块分别是系统用户、商品目录管理、商品目录管理、损耗出库管理、采购入库管理、销售记录管理、销售分析管理、费用记录管理、利润记录管理、类型分析管理、购买分析管理等功能模块。最后,通过系统需求分析和系统设计方法验证,结果表明该设计具有实用价值,因此从软件设计的角度,对研究理论、基础、总体系统布局和具体系统设计进行了详细研究。
关键词:Python编程语言;Django技术;便利店库存管理
Design and Implementation of Convenience Store Inventory Management and Analysis System Based on django
ABSTRACT
In today's fast-paced business environment, effective inventory management is crucial for the successful operation of convenience stores. Inventory management involves tracking, monitoring, and optimizing goods to ensure that there is sufficient inventory to meet customer needs, while avoiding cost waste caused by excessive inventory. To address this issue, we have designed and implemented a convenience store inventory management and analysis system based on Django.
In the design of the convenience store inventory management system, Python programming language and Django technology are used, in MVC mode, and MySQL is used as the system database. The system is designed with powerful functional modules, taking into account various aspects of convenience store inventory management. These main functional modules are system users, product catalog management, product catalog management, loss outbound management, procurement inbound management, sales record management, sales analysis management, expense record management, profit record management, type analysis management, purchase analysis management, and other functional modules. Finally, through system requirement analysis and system design method validation, the results indicate that the design has practical value. Therefore, from the perspective of software design, a detailed study was conducted on the research theory, foundation, overall system layout, and specific system design.
Keywords:Python programming language; Django technology; Convenience store inventory management
目 录
第1章绪论
随着城市化进程的加快和人们生活水平的提高,便利店在人们的日常生活中扮演着越来越重要的角色。然而,由于便利店商品种类繁多、库存管理复杂,传统的手工管理方式已经无法满足快速发展的需求。因此,设计和实现一个基于Django的便利店库存管理及分析系统具有重要的研究背景和实际意义。
首先,便利店作为零售业的重要一环,其库存管理对于提高运营效率、降低成本、优化供应链非常关键。通过引入Django框架,可以建立一个全面的便利店库存管理及分析系统,实现自动化的库存记录、盘点、补货等功能,提高便利店的运营效率和管理水平。
其次,便利店作为零售行业的重要组成部分,其销售数据蕴含着丰富的商业价值。通过对销售数据的分析,可以帮助便利店经营者更好地了解商品的销售情况、消费者的购买偏好,从而制定更科学的采购策略、优化产品组合、提高销售额。基于Django的便利店库存管理及分析系统将为便利店经营者提供一个强大的数据分析工具,帮助他们做出准确的决策。
综上所述,设计和实现一个基于Django的便利店库存管理及分析系统具有重要的研究背景和实际意义,能够提高便利店的运营效率、优化管理水平,帮助经营者制定科学的决策,同时提升消费者的购物体验。
便利店库存管理及分析系统是企业一项复杂而必要的工作。经理们需要每天处理大量的文档和数据。为了及时结算每个业务账户,检查库存数量和货物进出和出库情况,确保企业的正常运营和财产安全,企业经理需要花费大量的人力、物力和时间来做数据记录和统计。
在发达国家,计算机化库存管理水平非常高,自动化管理模式已经实现。尽管国内企业在这方面有很强的意识和很大的进步,包括物资管理,但在管理方面仍然存在一些问题。在一些企业,库存管理仍然是手工和半手工的。从物资购买登记开始到物资出库结束,所有操作基本上都是书面记录。库存管理是由库存管理人员编写的,统计是用计算器完成的。这种方法不仅管理复杂、效率低下,而且缺乏一些基本的库存管理工具,如库存状态统计、查询经济订货量的计算等。这也在一定程度上导致了管理落后、竞争落后以及企业经济效益的损失。
论文整体分为六个章节模块:引言部分介绍研究背景以及意义,第二章主要是介绍采用的相关技术还有使用的开发方法,第三章描述的是前期调查分析,第四章的系统的功能等设计,第五章主要是整个系统的实现过程及关键代码,最后一章是系统测试方法以及测试结果的记录与描述。
开发环境主要就是包括以下几个类型:
1、操作系统:Microsoft Windows10Pro1709;
2、开发工具:Pycharm;
3、服务器:Tomcat7.0;
4、数据库:MySQL5.6、MySQL For Navicat(可视化界面管理客户端)
2.2操作系统
Windows10和Windows以后的版本关于Windows10,微软宣布它将以比以前更快的节奏更新Windows,将不会有官方的“Windows11”;相反,WindowsUpdate(或另一个企业服务模型)会将现有的Windows10更新为新版本。在编写此书时,已经有两个这样的更新发生在2015年11月(也称为版本1511,指服务年和月份)和2016年7月(版本1607,也因为周年更新的营销名称所知)。
Windows10和“一个内核”多年来,几种不同类型的Windows已经发展起来。除了在PC上运行的主流Windows之外,还有Xbox360游戏控制台,它运行一个分叉Windows2000。WindowsPhone7基于WindowsCE(微软的实时操作系统)运行的一个变体。维护和扩展所有这些代码库显然是困难的。因此,微软决定将内核和基础平台支持的二进制文件聚合为一个。这开始于Windows8和Windows电话8,其中共享内核(Windows8.1和Windows电话8.1具有聚合的Windows运行时API)。使用Windows10,融合就完成了,这个共享平台被称为Onecore,它运行在PC、电话、XboxOne游戏控制台、全息屏和物联网(IoT)设备(如树莓Pi2)上。
PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。
MySQL是一个关系型数据库管理系统,它的范围包括了膝上型计算机、台式机、企业服务器。20世纪,最初的MySQL是由Sybase专门为UNIX系统开发的,后来微软将它移植到了WindowsNT系统上。从1994年开始,微软发布独立于Sybase开发的MySQL版本,而Sybase在20世纪90年代后期,就已经停止使用MySQL这个名称。
MySQL提供MySQL多个拷贝之间以及其他数据库系统的复制服务。其中的分析服务是属于系统的一个完整部分,包括了:联机分析处理(OLAP)和数据挖掘工具。MySQL提供了一个大的图形化工具集和向导,引导数据库管理员执行各种任务,例如建立定期备份、在服务器之间复制数据,以及调整数据库性能。
便利店库存管理及分析系统采用的是MVC模式进行编写的。MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层,即模型层、视图层、控制层。
视图(View)代表用户交互界面,在Web应用之中,可以说是HTML的界面,也有可能包括了XML、XHTML或者是Applet等。随着技术还有需求的发展,Web应用的复杂程度还有规模也在增加,因此处理的难度也在增加。一个Web应用就可能有很多的界面,在MVC模式中,视图仅仅处理的只有数据采集、处理,还有用户的请求,并不包括业务流程的处理,业务流程由模型(Model)来处理。
模型(Model)就是业务流程/状态的处理及业务规则的制定。模型处理业务流程的过程其它层是无法看见了的,它就像黑箱子,在接受视图请求的数据之后,然后返回最终的处理结果。MVC最主要的核心就是业务模型的设计,一个典型的应用例子就是目前流行的EJB模型,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但是它不能作为应用设计模型的框架。
控制器(Controller)可以理解为接收用户的请求,然后视图和模型匹配在一起,一起再完成用户请求。它有非常明显的作用在划分控制层上,可以很清晰地告诉你,它就是一个分发器,选择什么样的模型、视图,可以完成用户的什么样的请求。控制层不做所有的数据处理,比如说:用户点击一个连接,控制层接受到请求之后,并不处理业务信息,它只是向模型传递用户的信息,同时告诉模型做什么,然后选择符合需求的视图返回给用户。
Django是一个由Python编写的具有完整架站能力的开源Web框架。使用Django,只要很少的代码,Python的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务
Django本身基于MVC模型,即Model(模型)+View(视图)+ Controller(控制器)设计模式,因此天然具有MVC的出色基因:开发快捷、部署方便、可重用性高、维护成本低等。Python加Django是快速开发、设计、部署网站的最佳组合。
Django具有以下特点:
能完善、要素齐全:该有的、可以没有的都有,常用的、不常用的工具都用。Django提供了大量的特性和工具,无须你自己定义、组合、增删及修改。
完善的文档:经过十多年的发展和完善,Django有广泛的实践经验和完善的在线文档(可惜大多数为英文)。开发者遇到问题时可以搜索在线文档寻求解决方案[13]。
强大的数据库访问组件:Django的Model层自带数据库ORM组件,使得开发者无须学习其他数据库访问技术(SQL、pymysql、SQLALchemy等)。
灵活的URL映射:Django使用正则表达式管理URL映射,灵活性高。
丰富的Template模板语言:类似jinjia模板语言,不但原生功能丰富,还可以自定义模板标签。
可行性分析是项目开发前期评估的一个重要环节,通常是在项目开发的最初进行的,主要从多个角度来分析项目开发是否可行。
经济可行性分析主要是考虑在系统开发的过程中所涉及到的费用问题,从全方位角度分析,费用主要涉及人力资本费用,相关设备费用,以及维护费用等。本次系统开发的整体规模都比较小,涉及到的费用较低,对于个人来讲,都可以承受,为此,经济可行性的分析也是行得通的。
技术可行性分析主要通过对现有技术的判断,来预测系统的实际开发是否存在可能性,是整个分析过程中最为关键的一个环节,决定系统的实际成功率。因此,系统在技术可行性上做出详细的分析。首先,系统采用的是Django开发技术,这项技术比较全面,实用广泛,没有实现不了的功能需求;其次,数据库采用的是MySQL作为存储数据,这种数据库稳定性极高,也是大众实用的数据库;最后,开发工具,采用的是Pycharm,工具中具有框架函数等,可以直接引用;通过三年多的学习与实践,对本系统的使用技术掌握已经熟练,并对相应的技术种类有一定的了解,主要运用的语言是Python。
操作本系统所采用的是Web浏览器,并且浏览器是大家熟悉的浏览方式,Web浏览器主要是为了实现客户端的请求以及管理服务器端口组件,并对数据库的数据进行处理以及返还结果。数据库的建立是为了将数据进行整理并储存,从而保证了数据的完整性一旦需要对数据进行相关操作那么工作会变得较为容易,减少了工作量。所有操作都由系统自行控制完成。解放了生产力、加快工作效率的同时也降低了错误率,保证了系统的稳定性。本系统为了使整体操作更加轻松,便捷,使用了JS动态交互技术,在操作人员进行操作过程中就不要相关的数据库等资料进行了解,保证了核心数据的安全性。整个系统都是可视化操作,通过鼠标点击就可完成,不需要太多的数据处理,因此,操作可行性是可以行得通的。
通过上述分析,可以确定该系统具有实际开发的价值和可能性。
通过用户需求的调查与了解,系统主要提供的功能如下:
1.管理员账户的基本信息管理。主要提供管理员账户的基本信息录入、删除、维护和查询等功能,包括:
管理员录入管理员账户基本信息;
管理员更新、增加及删除管理员账户基本信息;
用户根据管理员账户ID查询基本信息;
系统管理员更改个人密码;
2.用户的基本信息管理。主要提供用户的基本信息录入、删除、维护和查询等功能,包括:
管理员录入用户基本信息;
管理员更新、增加及删除用户基本信息;
管理员根据用户ID查询基本信息;
用户用户更改个人密码;
3.商品目录管理。主要提供商品目录的基本信息录入、修改和查询功能,包括:
管理员录入目录基本信息;
管理员更新、增加及删除商品目录基本信息;
管理员根据商品目录ID查询基本信息;
4.损耗出库管理。主要是提供损耗出库的基本信息录入、维护和查询功能,包括:
管理员录入损耗出库基本信息;
管理员更新、增加及删除损耗出库基本信息;
管理员根据损耗出库ID查询损耗出库基本信息;
5.采购入库管理。主要提供采购入库的基本信息录入、删除、维护和查询功能,包括:
管理员录入采购入库信息;
管理员更新、增加采购入库基本信息;
管理员根据采购入库ID查询采购入库基本信息;
用户根据个人信息导航栏查询采购入库信息;
6.销售记录管理管理。主要提供销售记录的基本信息录入、删除、维护和查询功能,包括:
管理员录入销售记录信息;
管理员更新、增加销售记录基本信息;
管理员根据销售记录ID查询销售记录基本信息;
用户根据个人信息导航栏查询销售记录信息;
7. 销售分析管理:对销售数据进行分析,提供销售趋势、热销商品等信息。
8. 费用记录管理:记录便利店的费用支出,如采购费用、运营费用等。
9. 利润记录管理:记录便利店的利润信息,包括销售额、成本、利润等。
10. 类型分析管理:对商品类型进行分析,提供各类商品的销售情况、利润情况等信息。
11. 购买分析管理:分析顾客的购买行为,提供购买偏好、购买频率等信息。
便利店库存管理及分析系统的主要构成分为两部分,一是商品的入库管理操作,另一个是商品的出库管理操作。围绕这两大部分,便利店库存管理及分析系统的全部功能将展开。如下图中的传统业务流程图所描述,按采购部门的采购计划表,等待领导及仓库管理员审批之后下发通知,合格的订单进行订单处理;操作员进行入库,然后归类汇总。当商品库存满足要求时,进行正常的出库处理;当商品库存量低于出库量,则要填写缺货单进行商品入库,从而进行着传统规模中正常的库存管理业务流程。
系统业务流程图如下所示。

图3-1系统业务流程图
1.数据流图0层0层数据流图是由普通用户、管理员及便利店库存管理及分析系统组成的,用户可以向系统提入库信息、出库信息、销售记录信息;管理员可以向系统提供入库信息、统计信息、商品信息;管理员把商品信息传给系统,系统会把商品信息提供给用户。
本系统的数据流图0层如下图所示。

图3-2系统的0层数据流图
2.数据流图1层管理员可以对库存进行管理,产生库存信息表,把库存信息传递给商品目录管理,产生商品信息表,在把商品信息传给统计管理,对信息进行统计,也会把统计的信息传给管理员,用户还可以通过商品目录管理查看商品库存信息。
系统的数据流图1层如下图所示。

图3-3系统1层数据流图
3.库存管理数据流图2层管理员可以对入库进行管理产生入库信息表,商品信息表也可以提供信息给入库管理,入库信息表可以把信息传给出库管理,管理员对出库进行管理,产生出库信息表,库存管理分解2层数据流图如下图所示。

3.5系统用例分析
3.5.1管理员用例图
系统中的核心用户是管理员,管理员登录后,通过管理员功能来管理后台系统。主要功能有:首页、系统用户、商品目录管理、商品目录管理、损耗出库管理、采购入库管理、销售记录管理、销售分析管理、费用记录管理、利润记录管理、类型分析管理、购买分析管理等功能。管理员用例如图3-5所示。

图3-5管理员用例图
3.5.2员工用户用例图
员工用户包括:后台首页、商品目录管理、损耗出库管理、采购入库管理、销售记录管理等功能。员工用户用例如图3-6所示。

图3-6 普通员工用例图
系统设计原理包括:
- 模块化。模块化就是把整个程序划分为多个模块,每个模块有自己的名字并可以被独立访问。所有模块的功能集合起来就可以满足用户需求。
- 抽象。抽象是暂时忽略软件的细节,集中精力将软件的本质特征提取出来。
- 逐步求精。总体设计需要先解决主要问题,再将问题一步步细化。
- 局部化和信息隐藏。不同模块之间,信息相互不能访问,是不能访问的;并且应该在相近的物理地址上放置关系较密切的软件元素。
- 模块独立。模块之间应该遵循高内聚,低耦合的原则。
便利店库存管理及分析系统从实际应用角度来说可以分成员工用户管理模块、管理员模块主要这两大模块。
系统的功能模块图如下图所示。

图4-1系统功能结构图
数据库设计(DatabaseDesign)是指对一个给定的环境,构造良好的数据库模式,建立数据库系统,使之能够最有效地存储数据,满足各类用户的需求即处理要求和信息要求。在数据库应用范围内,经常把使用数据库的系统称为数据库的应用系统。
E-R设计方法是一种通过E-R图来描述现实世界信息结构的DB设计方法。E-R图由实体、属性、联系三部分组成。它有两个优点,即接近于人的思维,容易理解;与计算机无关,用户容易接受。
系统的主要实体间关系E-R图如下图所示:

图4-2系统E-R图
根据E-R模型,便利店库存管理及分析系统建立了以下逻辑数据结构,下面是各数据表的详细说明。
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
| 2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
| 3 | info | text | 65535 | 0 | Y | N | ||
| 4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
| 5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
| 2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
| 3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
| 4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
| 5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
| 6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
| 7 | position | varchar | 32 | 0 | Y | N | 位置: | |
| 8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
| 9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
| 10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
| 11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
| 12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
| 13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
| 14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
| 15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
| 16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
| 17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
| 18 | option | text | 65535 | 0 | Y | N | 配置: | |
| 19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | cost_records_id | int | 10 | 0 | N | Y | 费用记录ID | |
| 2 | record_date | date | 10 | 0 | Y | N | 记录日期 | |
| 3 | cost_name | varchar | 64 | 0 | Y | N | 费用名称 | |
| 4 | cost_amount | int | 10 | 0 | Y | N | 0 | 费用金额 |
| 5 | expense_remarks | text | 65535 | 0 | Y | N | 费用备注 | |
| 6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
| 3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | inventory_analysis_id | int | 10 | 0 | N | Y | 库存分析ID | |
| 2 | product_name | varchar | 64 | 0 | Y | N | 商品名称 | |
| 3 | adjust_date | date | 10 | 0 | Y | N | 调整日期 | |
| 4 | adjust_quantity | int | 10 | 0 | Y | N | 0 | 调整数量 |
| 5 | reason_for_adjustment | text | 65535 | 0 | Y | N | 调整原因 | |
| 6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | loss_outbound_id | int | 10 | 0 | N | Y | 损耗出库ID | |
| 2 | ordinary_employees | int | 10 | 0 | Y | N | 0 | 普通员工 |
| 3 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
| 4 | product_name | varchar | 64 | 0 | Y | N | 商品名称 | |
| 5 | production_date | varchar | 64 | 0 | Y | N | 生产日期 | |
| 6 | deadline | varchar | 64 | 0 | Y | N | 截止日期 | |
| 7 | loss_quantity | int | 10 | 0 | Y | N | 0 | 损耗数量 |
| 8 | reason_remarks | text | 65535 | 0 | Y | N | 原因备注 | |
| 9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | ordinary_employees_id | int | 10 | 0 | N | Y | 普通员工ID | |
| 2 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
| 3 | employee_phone_number | varchar | 64 | 0 | Y | N | 员工电话 | |
| 4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
| 5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
| 6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | product_catalog_id | int | 10 | 0 | N | Y | 商品目录ID | |
| 2 | product_name | varchar | 64 | 0 | N | N | 商品名称 | |
| 3 | product_type | varchar | 64 | 0 | Y | N | 商品类型 | |
| 4 | product_specifications | varchar | 64 | 0 | Y | N | 商品规格 | |
| 5 | purchase_price_of_goods | int | 10 | 0 | Y | N | 0 | 商品进价 |
| 6 | product_selling_price | int | 10 | 0 | Y | N | 0 | 商品售价 |
| 7 | production_date | date | 10 | 0 | Y | N | 生产日期 | |
| 8 | shelf_life | varchar | 64 | 0 | Y | N | 保质期限 | |
| 9 | deadline | date | 10 | 0 | Y | N | 截止日期 | |
| 10 | inventory_quantity | int | 10 | 0 | Y | N | 0 | 库存数量 |
| 11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | profit_records_id | int | 10 | 0 | N | Y | 利润记录ID | |
| 2 | business_date | date | 10 | 0 | Y | N | 营业日期 | |
| 3 | business_sales | int | 10 | 0 | Y | N | 0 | 营业总额 |
| 4 | operating_expenses | int | 10 | 0 | Y | N | 0 | 营业费用 |
| 5 | cost_of_goods | int | 10 | 0 | Y | N | 0 | 商品成本 |
| 6 | todays_profit | int | 10 | 0 | Y | N | 0 | 本日利润 |
| 7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | purchase_analysis_id | int | 10 | 0 | N | Y | 购买分析ID | |
| 2 | analysis_date | date | 10 | 0 | Y | N | 分析日期 | |
| 3 | product_type | varchar | 64 | 0 | Y | N | 商品类型 | |
| 4 | sales_amount | int | 10 | 0 | Y | N | 0 | 销售金额 |
| 5 | analysis_remarks | text | 65535 | 0 | Y | N | 分析备注 | |
| 6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | purchase_receipt_id | int | 10 | 0 | N | Y | 采购入库ID | |
| 2 | ordinary_employees | int | 10 | 0 | Y | N | 0 | 普通员工 |
| 3 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
| 4 | product_name | varchar | 64 | 0 | N | N | 商品名称 | |
| 5 | product_type | varchar | 64 | 0 | Y | N | 商品类型 | |
| 6 | procurement_batch | varchar | 64 | 0 | Y | N | 采购批次 | |
| 7 | purchase_quantity | int | 10 | 0 | Y | N | 0 | 采购数量 |
| 8 | production_date | date | 10 | 0 | Y | N | 生产日期 | |
| 9 | shelf_life | varchar | 64 | 0 | Y | N | 保质期限 | |
| 10 | deadline | date | 10 | 0 | Y | N | 截止日期 | |
| 11 | procurement_remarks | text | 65535 | 0 | Y | N | 采购备注 | |
| 12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | sales_analysis_id | int | 10 | 0 | N | Y | 销售分析ID | |
| 2 | sales_date | date | 10 | 0 | Y | N | 销售日期 | |
| 3 | product_name | varchar | 64 | 0 | Y | N | 商品名称 | |
| 4 | sales_quantity | varchar | 64 | 0 | Y | N | 销售数量 | |
| 5 | analysis_remarks | text | 65535 | 0 | Y | N | 分析备注 | |
| 6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | sales_records_id | int | 10 | 0 | N | Y | 销售记录ID | |
| 2 | ordinary_employees | int | 10 | 0 | Y | N | 0 | 普通员工 |
| 3 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
| 4 | sales_time | datetime | 19 | 0 | Y | N | 销售时间 | |
| 5 | product_name | varchar | 64 | 0 | Y | N | 商品名称 | |
| 6 | product_selling_price | int | 10 | 0 | Y | N | 0 | 商品售价 |
| 7 | sales_quantity | int | 10 | 0 | Y | N | 0 | 出售数量 |
| 8 | total_price | varchar | 64 | 0 | Y | N | 总计价格 | |
| 9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | sensitive_vocabulary_id | int | 10 | 0 | N | Y | 敏感词汇ID | |
| 2 | sensitive_vocabulary | varchar | 64 | 0 | Y | N | 敏感词汇 | |
| 3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | type_analysis_id | int | 10 | 0 | N | Y | 类型分析ID | |
| 2 | product_type | varchar | 64 | 0 | Y | N | 商品类型 | |
| 3 | sales_season | varchar | 64 | 0 | Y | N | 销售季节 | |
| 4 | sales_amount | int | 10 | 0 | Y | N | 0 | 销售金额 |
| 5 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
| 2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
| 3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
| 4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
| 5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
| 6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
| 7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
| 8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
| 2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
| 3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
| 4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
| 5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
| 6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
| 7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
| 8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
| 9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
| 10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
| 11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
| 12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
| 13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
| 14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
| 2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
| 3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
| 4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
| 9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
注册模块:用户在线填写用户名、密码、姓名、手机号、邮箱、身份等信息进行注册操作。普通员工注册界面如下图所示。

图5-1普通员工注册模块界面
注册关键代码如下:
def Register(self, ctx):
print("===================注册=====================")
userService = service_select("user")
body = ctx.body
if "username" not in body and body["username"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名不能为空",
}
}, ensure_ascii=False))
if "user_group" not in body and body["user_group"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户组不能为空",
}
}, ensure_ascii=False))
if "password" not in body and body["password"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "密码不能为空",
}
}, ensure_ascii=False))
post_param = body
post_param['nickname'] = body["nickname"] or ""
post_param['password'] = md5hash(body["password"])
obj = userService.Get_obj({"username": post_param['username']}, {"like": False})
if obj:
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名已存在",
}
}, ensure_ascii=False))
ret = {
"error": {
"code": 70000,
"message": "注册失败",
}
}
bl = userService.Add(post_param)
if bl:
ret = {
"result": {
"bl": True,
"message": "注册成功"
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
登录模块:用户、管理员可以通过登录进入该系统,如果输入正确,则可以进入该系统,普通员工登录界面如下图所示。

图5-2普通员工登录模块界面
登录的逻辑代码如下所示。
def Login(self, ctx):
print("===================登录=====================")
ret = {
"error": {
"code": 70000,
"message": "账户不存在",
}
}
body = ctx.body
password = md5hash(body["password"]) or ""
obj = service_select("user").Get_obj(
{"username": body["username"]}, {"like": False}
)
if obj:
user_group = service_select("user_group").Get_obj({'name': obj['user_group']}, {"like": False})
if user_group and user_group['source_table'] != '':
user_obj = service_select(user_group['source_table']).Get_obj({"user_id": obj['user_id']}, {"like": False})
if user_obj['examine_state'] == '未通过':
ret = {
"error": {
"code": 70000,
"message": "账户未通过审核",
}
}
return ret
if user_obj['examine_state'] == '未审核':
ret = {
"error": {
"code": 70000,
"message": "账户未审核",
}
}
return ret
if obj["state"] == 1:
if obj["password"] == password:
timeout = timezone.now()
timestamp = int(time.mktime(timeout.timetuple())) * 1000
token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))
ctx.request.session[token] = obj["user_id"]
service_select("access_token").Add(
{"token": token, "user_id": obj["user_id"]}
)
obj["token"] = token
ret = {
"result": {"obj": obj}
}
else:
ret = {
"error": {
"code": 70000,
"message": "密码错误",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "用户账户不可用,请联系管理员",
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
系统用户:如果想添加某个人员进入该系统,则添加该用户的信息,如果添加成功,就可以进入该系统,系统用户界面如下图所示。

图5-3系统用户界面
创建用户流程,首先获取用户的基本信息,然后将姓名转换为拼音做为用户名,默认密码是admin向数据库添加一条记录。创建用户流程图如下图所示。

图5-4创建用户流程图
用户管理关键代码如下:
body = ctx.body
unique = self.config.get("unique")
obj = None
if unique:
qy = {}
for i in range(len(unique)):
key = unique[i]
qy[key] = body.get(key)
obj = self.service.Get_obj(qy)
if not obj:
error = self.Add_before(ctx)
if error["code"]:
return {"error": error}
error = self.Events("add_before", ctx, None)
if error["code"]:
return {"error": error}
result = self.service.Add(body, self.config)
if self.service.error:
return {"error": self.service.error}
res = self.Add_after(ctx, result)
if res:
result = res
res = self.Events("add_after", ctx, result)
if res:
result = res
return {"result": result}
else:
return {"error": {"code": 10000, "message": "已存在"}}
商品目录列表,商品添加之后可以进行商品目录查询,输入商品名称、商品类型等信息可以查询出该商品的所有信息。包括商品规格、商品售价、商品进价等信息。商品目录列表界面如下图所示。

图5-5商品目录列表界面面
商品目录添加,管理员添加商品目录信息,主要页面是wuzi_add.html文件,通过调用commDao类的add()方法,将商品目录参数传入,实现商品目录的添加。商品目录添加页面如下图所示。

图5-6商品目录添加页面
采购入库,如果管理员想进行采购入库,采购入库之前须要对商品进行登记,登记完之后进行采购入库,采购入库之后,生成入库记录,商品的当前库存量=入库前的数量加上入库数量,在库存在会显示入库的商品,入库商品调配则将已入库的商品数量去除,则从库存数量减去商品调配数量得到库存总数量。采购入库界面如下图所示。

图5-7采购入库界面
采购入库流程图如下图所示。

图5-8采购入库流程图
采购入库管理关键代码如下:
def Del(self, ctx):
if len(ctx.query) == 0:
errorMsg = {"code": 30000, "message": "删除条件不能为空!"}
return errorMsg
result = self.service.Del(ctx.query, self.config)
if self.service.error:
return {"error": self.service.error}
return {"result": result}
销售记录列表,销售记录添加之后可以进行销售记录查询,输入员工姓名、销售时间、出售数量、商品名称、总计价格等信息可以查询出该商品的所有销售信息。销售记录列表界面如下图所示。

图5-9销售记录列表界面
销售记录添加,管理员添加销售记录信息,主要页面是wuzi_add.html文件,通过调用commDao类的add()方法,将销售记录参数传入,实现销售记录的添加。销售记录添加页面如下图所示。

图5-10销售记录列表添加界面
利润记录列表,利润记录添加之后可以进行利润记录查询,输入营业日期、本日利润等信息可以查询出该商品的所有利润信息。利润记录列表界面如下图所示。

图5-11利润记录列表界面
利润记录添加,管理员添加利润记录信息,主要页面是wuzi_add.html文件,通过调用commDao类的add()方法,将利润记录参数传入,实现利润记录的添加。利润记录添加页面如下图所示。

图5-12利润记录列表添加界面
购买分析列表,购买分析添加之后可以进行购买分析查询,输入分析日期等信息可以查询出该商品的所有购买分析信息。购买分析列表界面如下图所示。

图5-13购买分析列表界面
购买分析添加,管理员输入分析日期、销售金额、商品类型、分析备注等信息提交,实现购买分析的添加。购买分析添加页面如下图所示。

图5-14购买分析添加界面
6.1测试目的
测试的目的不仅要如何去组织测试,通过分析错误的产生原因以及结果,以便改进。在系统测试中,第一个目的就是检验系统在完成过程中的逻辑问题和系统可能存在的问题。然后通过测试修正原本的错误,提高系统的质量。第二个目的就是检测系统的安全性、可靠性也就是说系统的内容是不是安全的,会不会出现遗失等情况,系统是否能很好的正常的运行。
从便利店库存管理及分析系统的实际情况来考虑,系统测试的根本就是:各项功能是否能够正常运行,不同的用户可以通过系统都做出哪些操作。能否对系统的数据进行调用,对表的增删改查操作,并且系统数据和数据库的数据是否一致。
一个业务模块应该由许多功能单元共同实现,黑盒测试针对业务功能是否能按计划完成,并且不考虑系统内部的结构和效率问题,白盒测试的要求就是要尽可能的测试到所有的组成结构,即要尽量包含所有的功能模块、覆盖全部路径。这种测试要求测试人员必须完全了解系统的业务逻辑及处理过程。但是完成上面的要求是一件很难的事,并且若程序中含有循环之后,路径的数量会越来越大,执行每一条路径都将会变得极不现实。
6.3测试过程
6.3.1系统测试计划
通过这个测试体现了此系统的功能比较完善,系统运行比较稳定,足以证明此系统具有安全性和完整性。测试计划进度表在测试之前用来计划测试目的于测试的范围,并且计划出测试的方法以及测试的时间。软件的质量是我们的追求,所以测试的过程是十分重要的,测试计划因此也成为了测试工作的基础。
系统测试计划如下表所示。
表6-1系统测试计划表
| 测试任务 | 工作描述 | 计划开始日期 | 计划结束日期 |
| 测试策划阶段 | 制定测试的计划、时间和预测效果 | ||
| 测试设计阶段 | 选定测试用例,回顾测试覆盖 | ||
| 测试实现阶段 | 开发测试用例/脚本 | ||
| 测试执行阶段 | 测试用例/脚本执行 | ||
| 测试总结阶段 | 生成测试和缺陷填写报告 |
6.3.2系统测试用例
1.用户登录模块测试用例,用户登录系统时须要输入用户名和密码,用户名和密码输入正确则登录成功,否则将会给会相应提示。对用户登录输入用户名和密码设计详细测试用例。
用户登录测试用例如下表所示。
表6-2用户登录测试用例表
| 设计人 | 测试人 | 功能编号 | 1 | |||||||||
| 功能组 | 登录界面 | 功能点 | 用户登录 | 测试日期 | ||||||||
| 测试环境及前提 | ||||||||||||
| 测试条件 | 已添加用户A用户:1,密码: B用户:2,密码: | |||||||||||
| 测试项目及内容 | ||||||||||||
| 测试步骤 | 输入项 | 预期输出项 | 实际输出 | |||||||||
| 1 | 空值/空值 | 提示“用户名或密码不能为空!” | 提示“用户名或密码不能为空!” | |||||||||
| 2 | 空值/123 | |||||||||||
| 3 | 123/空值 | |||||||||||
| 4 | 1/1 | 成功登录到主程序,“系统设置”菜单中拥有所有权限 | 成功登录到主程序,“系统设置”菜单中拥有所有权限 | |||||||||
| 111/1 | 提示“用户名或密码错误,请重新输入” | 提示“用户名或密码错误,请重新输入” | ||||||||||
| 5 | 2/2 | 成功登录到主程序,在“系统设置”菜单中只能修改自己的密码 | 成功登录到主程序,在“系统设置”菜单中只能修改自己的密码 | |||||||||
| 测试结论 | 用户登录功能可以正常使用 | 总体结论 | 基本通过 | |||||||||
| 测试结论 | 功能可正常使用 | 总体结论 | 基本通过 | |||||||||
2.用户管理测试用例,添加用户时须要输入用户的详细信息,当用户信息输入正确时则输入成功,当用户信息输入不正确时则给出相应提示。
添加用户测试用例表如下表所示。
表6-3用户管理测试用例表
| 设计人 | 测试人 | 功能编号 | 2 | ||||
| 功能组 | 系统设置 | 功能点 | 添加用户 | 测试日期 | |||
| 测试环境及前提 | |||||||
| 测试条件 | 系统中存在欲创建人的基本信息 | ||||||
| 测试项目及内容 | |||||||
| 测试步骤 | 输入项 | 预期输出项 | 实际输出 | ||||
| 1 | 选择一条记录点击创建用户按钮 | 提示“用户创建成功!” | 提示“用户创建成功!” | ||||
| 2 | 使用管理员权限登录为刚刚创建的用户授权 | 提示“授权成功!” | 提示“授权成功!” | ||||
| 3 | 实用刚刚创建的用户登录系统 | 提示“登录成功!” | 提示“登录成功!” | ||||
| 测试结论 | 添加用户功能可以正常使用 | 总体结论 | 基本通过 | ||||
3.商品目录管理测试用例,对商品目录功能模块进行增删改查的测试。
商品目录测试用例如下表所示。
表6-4添加商品目录用例
| 设计人 | 测试人 | 功能编号 | 3 | |||||
| 功能组 | 商品目录管理界面 | 功能点 | 添加商品 | 测试日期 | ||||
| 测试环境及前提 | ||||||||
| 测试条件 | 进入商品目录模块 | |||||||
| 测试项目及内容 | ||||||||
| 测试步骤 | 输入项 | 预期输出项 | 实际输出 | |||||
| 1 | 添加商品时,没有输入任何物资信息 | 提示“商品添加失败!” | 提示“商品添加失败!” | |||||
| 2 | 添加商品时,输入带*号的文本框,并且符合格式要求 | 提示“商品添加成功!” | 提示“商品添加成功!” | |||||
| 3 | 添加商品时,输入所有文本框,并且格式符合要求 | 提示“商品添加成功!” | 提示“商品添加成功!” | |||||
| 4 | 添加商品时,只输入没有带*号的文本框 | 提示“商品添加失败!” | 提示“商品添加失败!” | |||||
4.采购入库管理测试用例,采购入库测试采购入库情况,可以选择一个商品进行入库,可以选则多个商品进行入库。
采购入库用例表如下表所示。
表6-5采购入库管理测试用例表
| 设计人 | 测试人 | 功能编号 | 4 | |||||
| 功能组 | 入库 | 功能点 | 采购入库 | 测试日期 | ||||
| 测试环境及前提 | ||||||||
| 测试条件 | 已录入商品信息 | |||||||
| 测试项目及内容 | ||||||||
| 测试步骤 | 输入项 | 预期输出项 | 实际输出 | |||||
| 1 | 选择一个商品,点击入库按钮,输入该商品入库数量 | 入库成功 | 入库成功 | |||||
| 2 | 选择一个商品,点击入库按钮,没有输入该商品入库数量 | 请输入入库数量 | 请输入入库数量 | |||||
| 测试结论 | 商品入库功能可以正常使用 | 总体结论 | 基本通过 | |||||
测试结果包括界面及功能测试和代码测试两部分,本系统对每个功能点做了详细的测试,测试结果正常。
测试结果表如下表所示。
表6-6系统功能测试结果表
| 序号 | 测试模块 | 功能点 | 质量保证标准 | 问题属性 | 测试结果 |
| F1 | 系统用户管理模块 | 修改密码 | 正确性 | 故障 | 正常 |
| 权限设置 | 正确性 | 故障 | 正常 | ||
| 角色管理 | 正确性 | 缺陷 | 正常 | ||
| 用户信息添加 | 正确性 | 故障 | 正常 | ||
| 用户信息修改 | 正确性 | 故障 | 正常 | ||
| 用户信息查询 | 正确性 | 故障 | 正常 | ||
| 用户信息删除 | 正确性 | 故障 | 正常 | ||
| 退出系统 | 正确性 | 故障 | 正常 | ||
| F2 | 功能管理模块 | 商品信息添加 | 正确性 | 故障 | 正常 |
| 商品信息修改 | 正确性 | 故障 | 正常 | ||
| 商品信息删除 | 正确性 | 故障 | 正常 | ||
| 入库信息添加 | 正确性 | 故障 | 正常 | ||
| 入库信息修改 | 正确性 | 故障 | 正常 | ||
| 入库信息删除 | 正确性 | 故障 | 正常 | ||
| 出库信息添加 | 正确性 | 故障 | 正常 | ||
| 出库信息修改 | 正确性 | 故障 | 正常 | ||
| 出库信息删除 | 正确性 | 故障 | 正常 | ||
| 费用记录添加 | 正确性 | 故障 | 正常 | ||
| 费用记录修改 | 正确性 | 故障 | 正常 | ||
| 费用记录删除 | 正确性 | 故障 | 正常 |
本系统是通过计算机技术,结合企业库存管理的需求,研制出的一套用于各个便利店库存管理及分析系统。该系统能够为便利店的库存管理提供方便,能够帮助便利店对其进行信息化管理,能够为便利店对各方面的管理提高工作效率。本系统还能够将各个资料录入,让管理层在网上查询所需要的资料,这样一来,就能够省去了专门负责库存管理人的工作量,也为库存管理工作提供了便利。
在对本系统进行了详细的分析以及一系列的可行性研究之后,根据该系统的设计构想,对本软件进行了开发设计。在确定了本系统具有较高的可行性以后,通过对系统的数据库的分析和总体的功能模块的设计,本系统前台采用的是Python开发技术,以MySQL作为后台数据库连接开发。在对系统进行详细的需求分析后,针对不同的需求设立不同的板块,发挥各部分不同的作用。根据该系统的功能结构图展示出了系统内各功能模块之间的业务逻辑结构。并且通过所设计的E-R图,表示出系统各个部分的功能,涉及到系统中各部分的联系,可以让读者能够清晰的了解到本系统的运行流程,并能够进一步的了解到系统各功能模块的相关信息。
[1]李春亭,王宜怀,施连敏等.编译型嵌入式Python的设计与实现[J].计算机工程与设计,2024,45(01):79-87.DOI:10.16208/j.issn1000-7024.2024.01.011.
[2]蔡文乐,秦立静.基于Python爬虫的招聘数据可视化分析[J].物联网技术,2024,14(01):102-105.DOI:10.16667/j.issn.2095-1302.2024.01.028.
[3]王延忻,王宏娟,石玉仁等.Python在结构化学可视化教学中的应用探索[J/OL].大学化学,1-10[2024-01-24].http://kns.cnki.net/kcms/detail/11.1815.O6.20240111.0926.004.html.
[4]曹金凤,王志文,高明等.基于Python语言和Abaqus软件的轮胎有限元分析结果自动后处理插件的研发[J].轮胎工业,2024,44(01):9-14.
[5]杨旭.物联网在电力物资便利店库存管理及分析系统优化中的应用[J].集成电路应用,2023,40(12):238-239.DOI:10.19339/j.issn.1674-2583.2023.12.108.
[6]邓青松,蒲忠.S汽车售后服务备件便利店库存管理及分析系统优化研究[J].中国物流与采购,2023,(23):36-37.DOI:10.16079/j.cnki.issn1671-6663.2023.23.011.
[7]Gaurav C ,Hicham J ,Laurent G , et al.Synconn_build: A python based synthetic dataset generator for testing and validating control-oriented neural networks for building dynamics prediction[J].MethodsX,2023,11102464-102464.
[8]Fernandes P ,Ferrer À ,Gonçalves P , et al.Stress-Constrained Topology Optimization for Commercial Software: A Python Implementation for ABAQUS ®[J].Applied Sciences,2023,13(23):
[9]Gaurav C ,Hicham J ,Laurent G , et al.pymodconn: A python package for developing modular sequence-to-sequence control-oriented deep neural networks[J].SoftwareX,2023,24101599-.
[10]Jasper T ,Michael J F .ExactPack: A python library of exact analytic solutions[J].SoftwareX,2023,24
[11]Ximena A G ,Felipe C B ,A.R. C D , et al.Roborueda: Python-based GUI to control a wheelchair and monitor user posture[J].SoftwareX,2023,24
[12]魏越超,史舒婷,范磊等.太原地震监测中心站便利店库存管理及分析系统的设计与实现[J].轻工科技,2023,39(06):137-139.
[13]李方方,孙丽君,张杭.加油站补货管理系统中在途库存的实时转运策略[J/OL].系统管理学报,1-22[2024-01-24].http://kns.cnki.net/kcms/detail/31.1977.N.20231114.1504.002.html.
[14]夏文杰,冀翼.一种便利店库存管理及分析系统的研究与设计[J].中国棉花加工,2023,(03):10-11.
[15]黄勇强,郑英姿.物流仓储管理系统的设计与实现[J].电脑知识与技术,2023,19(09):28-30+65.DOI:10.14004/j.cnki.ckt.2023.0426.
[16]张丹.库存物资处置数字化管理系统设计与开发[J].行政事业资产与财务,2023,(05):124-126.
[17]李焕梅,吴长安,吴艳玲等.基于MVC框架的元器件便利店库存管理及分析系统的设计与实现[J].电子制作,2023,31(04):61-63+34.DOI:10.16589/j.cnki.cn11-3571/tn.2023.04.009.
[18]干方乐,施永华,许海峰等.器材库存动态管理系统研发与应用[J].粮油仓储科技通讯,2022,38(06):56-58+63.
[19]施海峰.基于“零库存”的医院高值耗材管理系统设计[J].电子技术与软件工程,2022,(22):196-200.
[20]吴建华,竹木制品库存智能管理系统V1.0.江西省,江西庄驰家居科技有限公司,2022-08-04.
经历了近三个多月的动手实践及老师辛勤的指导和同学朋友热心的帮助下,本人的毕业设计便利店库存管理及分析系统的基本功能也基本完成。
此次设计中,通过不断的探讨与学习使我熟悉、使我初步了解了Django相关技术。我做的是一个B/S结构的便利店库存管理及分析系统,使我对做网站所需要,及运行的环境有了初步的了解,在此次设计中我翻阅了较多的书籍,在有限的时间了丰富了对便利店库存管理及分析系统技术的知识也积累了少许的经验。起初对Python的初步认识,通过这次设计更进一步的了解了其工作原理,懂得了配置服务器环境,连接数据库源,在设计过程中,也学会了用Pycharm设计一个简单的页面,增强了动手的能力,激发了在此方面的兴趣。
但是由于时间、基础及缺乏实践等多方面的问题,还有诸多需要解决的问题依然存在,设计中很多方面考虑不够周全或者考虑不到。
非常感谢我的老师,我的同学,我的朋友并希望在今后的学习生活中不断陪养多方面的兴趣,不断学习进步从而能够实现独立完成。设计中存在的诸多缺点诚肯老师的原谅。
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~
1856

被折叠的 条评论
为什么被折叠?



