基于Python的库存管理系统的设计与实现

摘 要

基于Python的库存管理系统的研究可以提升其库存管理效率和降低成本。通过深入了解企业的库存管理需求和问题,结合现代信息技术的应用,该系统旨在提供全面的库存管理功能,利用信息技术工具,有效管理和控制库存商品。本文旨在研究库存管理系统的功能、优势以及对企业运营的影响。

本文将首先分析库存管理系统的需求和功能,然后基于Python技术搭建系统的开发环境,并设计数据库结构。接着,详细介绍系统的模块划分和各个功能模块的实现方法。最后,通过系统测试和性能评估,验证系统的稳定性和性能优势。本论文的研究目标是设计和实现一套库存管理系统,该系统将提供全面的物资仓储和进出库管理功能,为企业的库存运营提供高效、准确的支持。通过本论文的研究,可以为库存管理系统的设计与开发提供有益的参考和指导,提高企业的运营效率和客户满意度。

关键词:库存管理;Django框架;Python;MYSQL数据库

Abstract

The research on inventory management system based on Python can improve its inventory management efficiency and reduce costs. By deeply understanding the inventory management needs and issues of enterprises, combined with the application of modern information technology, this system aims to provide comprehensive inventory management functions, effectively manage and control inventory goods using information technology tools. This article aims to study the functions, advantages, and impact on enterprise operations of inventory management systems.

This article will first analyze the requirements and functions of the inventory management system, then build a development environment for the system based on Python technology, and design a database structure. Next, a detailed introduction will be given to the module division of the system and the implementation methods of each functional module. Finally, verify the stability and performance advantages of the system through system testing and performance evaluation. The research objective of this paper is to design and implement an inventory management system that will provide comprehensive material warehousing and inbound and outbound management functions, providing efficient and accurate support for enterprise inventory operations. Through the research in this paper, useful references and guidance can be provided for the design and development of inventory management systems, improving the operational efficiency and customer satisfaction of enterprises.

Key wordsInventory management; Django framework; Python; MYSQL database

目录

摘 要

Abstract

1 绪论

1.1研究背景与意义

1.2国内外研究现状

1.3论文结构与章节安排

2相关技术介绍

2.1 B/S体系工作原理

2.2 Django框架介绍

2.3 MySQL数据库

2.3 python语言

3 系统分析

3.1 可行性分析

3.1.1 技术可行性

3.1.2经济可行性

3.1.3操作可行性

3.2 系统性能分析

3.3 系统功能分析

3.4系统流程分析

3.4.1登录流程

3.4.2添加信息流程

3.4.3删除信息流程

4 系统设计

4.1系统概要设计

4.2系统结构设计

4.3系统顺序图设计

4.3.1登录模块顺序图

4.3.2添加信息模块顺序图

4.4数据库设计

4.4.1数据库E-R图设计

4.4.2数据库表设计

5 系统详细设计

5.1 登录模块

5.2 用户管理模块

5.3 中心仓库管理模块

5.4 物资信息管理模块

5.5 采购入库管理模块

5.6 销售出库管理模块

6 系统测试

6.1 测试定义

6.2 测试目的

6.3测试方案

(1)模块测试

(2)集成测试:

(3)验收测试:

1、登录测试

(1)首先我们打来浏览器,进入该系统的登录界面。

6.4系统分析

7 结论

参考文献

致 谢

1 绪论

1.1研究背景与意义

库存是企业和组织中不可避免的一个方面。它涉及到存储和管理产品的过程,以确保组织能够满足客户需求并保持良好的运营效率。库存管理是一个复杂而关键的任务,涉及到对供应链的所有方面的监控和协调。传统的库存管理方法往往依赖于手工操作和经验判断,这种方法容易出现错误和效率低下的问题。

随着信息技术的发展和应用,库存管理系统逐渐兴起。库存管理系统是一种以计算机技术为基础的系统,旨在提升企业的库存管理效率和准确性。它可以实时监控库存变化、自动生成库存报告和分析,并提供优化库存管理的建议。库存管理系统的应用不仅可以减少库存成本,提高资金利用效率,还可以提升客户满意度和组织的竞争力。

库存管理系统的研究意义重大。首先,库存是企业和组织运营中不可或缺的一个环节。优化库存管理可以提高企业的资金利用效率,减少库存成本,提高供应链的响应速度和灵活性。其次,库存管理系统的研究可以促进信息技术在库存管理领域的应用和发展,推动企业数字化转型的进程。最后,库存管理系统的研究还可以为其他领域的研究提供借鉴和参考,如供应链管理、物流管理等。

1.2国内外研究现状

库存管理对企业的运营和发展起着至关重要的作用。有效的库存管理可以帮助企业降低库存成本、提高资金周转率、优化供应链效率,从而提升企业的竞争力。因此,库存管理系统的研究和发展备受关注。

国内研究机构和高校在库存管理系统方面进行了一定的研究和探索,主要集中在库存优化、需求预测、物流管理等领域。一些企业在实际应用中逐步引入先进的信息技术和管理工具,如ERP系统、WMS系统等,实现了库存管理的自动化、规范化和精细化。中国制造业企业普遍存在库存过多、库存周转率低等问题,部分企业开始重视库存管理系统的建设,以提高运营效率。

国外在库存管理系统方面有着丰富的研究成果,尤其在库存模型、库存优化算法、供应链管理等领域处于领先地位。许多国外企业在库存管理领域采用先进的技术和方法,如RFID技术、人工智能、大数据分析等,实现了更高效的库存管理和供应链优化。 一些国外企业开发了针对不同行业和企业规模的定制化库存管理系统,为企业提供了更加个性化的解决方案,提升了企业的运营效率和竞争力。

总体来说,国内外在库存管理系统方面的研究现状各有不同,但都在不断地探索和创新,致力于提升企业的库存管理水平和效益。未来,随着信息技术的不断发展和应用,库存管理系统将进一步完善和智能化,为企业带来更大的价值和竞争力。

1.3论文结构与章节安排

这次编写的论文包含了六个部分的内容,具体内容如下:

第一部分绪论:文章主要从课题背景以及研究现状综合阐述了开发此系统的必要性。

第二部分相关技术:系统开发用到的各种技术都大致做出了简介。

第三部分系统分析:对系统的可行性分析以及对所有功能需求进行详细的分析,来查看该系统是否具有开发的可能。

第四部分系统设计:功能模块设计和数据库设计这两部分内容都有专门的表格和图片表示。

第五部分系统实现:进行系统主要功能模块的界面展示。

第六部分系统测试:测试系统的每一个功能是否能够正常运行,是否可以满足人们的需求。

2相关技术介绍

2.1 B/S体系工作原理 

B/S体系,即Browser/Server体系,是一种常见的网络应用程序架构。其工作原理基于客户端与服务器之间的请求-响应模型。用户通过浏览器向服务器发送请求,服务器接收到请求后进行处理,并生成相应的响应结果,最终将响应返回给客户端。浏览器接收到服务器返回的响应后,解析其中的标记语言(如HTML),并根据CSS样式表和PythonScript脚本来渲染页面,呈现给用户。用户可以与页面进行交互,例如点击链接、填写表单等操作,这些操作会触发新的请求,循环执行上述过程。

B/S体系具有许多优点,包括跨平台性、易于维护和升级、减少客户端依赖等。它成为了现代Web应用程序开发的主流架构,广泛应用于各种互联网服务和企业级应用系统中。通过B/S体系,用户可以通过简单的浏览器访问各种在线服务和资源,无需安装额外的软件,提供了更便捷、灵活的使用体验。同时,服务器端的集中管理和维护,使得系统的升级和更新更加高效和便捷。总之,B/S体系的工作原理为我们提供了一个稳定、可靠且高效的网络应用程序架构,为用户提供了便捷的互联网服务。

2.2 Django框架介绍

Django是一个使用Python语言开发的Web应用程序框架。它提供了一种简单而强大的方式来构建复杂的网站和应用程序。通过使用Django,开发人员可以更轻松地处理数据库、创建用户界面和处理用户请求。它还提供了一个自动生成管理界面的功能,使得管理后台数据变得更加简单。Django还具有强大的安全功能,可以保护网站免受常见的网络攻击。总之,Django是一个非常实用和易于学习的框架,适用于各种规模的Web项目。无论你是初学者还是经验丰富的开发人员,都可以从Django的便利性和灵活性中受益。

2.3 MySQL数据库

MySQL是一种流行的开源关系型数据库管理系统,被广泛应用于各种Web应用程序和企业级系统中。它具有免费开源、跨平台支持、高性能可扩展、数据安全完整性、灵活的数据模型和大型社区支持等优势。MySQL通过优化的查询处理和索引机制提供出色的性能,并支持事务处理和ACID属性,确保数据的一致性和完整性。其丰富的功能和灵活性使得开发人员能够轻松地处理和操作数据,而庞大的用户和开发者社区为他们提供了丰富的支持资源。总之,MySQL是一个可靠、高性能和灵活的数据库管理系统,适用于各种规模的项目,受到广大开发人员和企业的信赖与选择。

2.3 python语言

Python是一种简洁易读、跨平台且功能强大的编程语言。它拥有庞大而活跃的社区,提供了丰富的第三方库和框架,如NumPy、Pandas和Django,使开发人员能够快速构建各种应用程序。Python在数据处理和科学计算方面表现出色,通过相关库和工具,可以进行数据分析、机器学习和科学计算等任务。此外,Python广泛应用于Web开发、自动化脚本、网络爬虫等领域,其多样性使其成为一个全能的编程语言。无论你是初学者还是有经验的开发者,Python的简单语法、跨平台性以及强大的社区支持都能为你提供高效、优雅和可靠的编程体验。总之,Python是一个强大而灵活的编程语言,深受开发人员喜爱,并在各个领域得到广泛应用。

3 系统分析

3.1 可行性分析

在系统开发之初要进行系统可行分析,这样做的目的就是使用最小成本解决最大问题,一旦程序开发满足用户需要,带来的好处也是很多的。下面我们将从技术上、操作上、经济上等方面来考虑这个系统到底值不值得开发。

3.1.1 技术可行性

本库存管理系统采用Django框架技术、Python语言和MYSQL数据库进行开发设计,作为计算机专业学生,在学校期间就接触到许多关于编程方面的知识,当然也包括各种编程软件,对他们的了解度也比较系统,所以技术开发上面还是有一定把握。

3.1.2经济可行性

我在设计该系统的时候主要是从节约成本出发,然后进行具体的系统的设计,在系统的设计过程中由于采用的所有工具以及技术支持全部都是免费的,因此不需要有任何的成本就可以进行该系统的设计。所用到的所有资源都是免费的,只要有网络就可以进行下载使用,不需要支付相应的费用,因此该项目在经济方面是完全可以实行的。

3.1.3操作可行性

本人自己就是学生,程序开发经验不足,在界面设计上面不会设计太复杂,要讲究简单好看,操作上要方便,不能让用户觉得不流畅。用户一旦进入操作界面,界面上就会有相应提示,跟着操作提示就可以找到对应的功能操作模块,对于用户来说免培训就能使用。

从上面几个部分的可行性分析得出,这次开发的库存管理系统在开发上面没有什么大问题,值得开发。

3.2 系统性能分析

(1)系统响应效率:页面响应时问应该在3秒以内,最长不能超过4秒,并支持至少10000人同时在线所有系统。

(2)界面简洁清晰:系统界面要求简单明了,容易操作,符合用户操作习惯。

(3)储存性高:因为库存管理系统中有很多的信息需要存储,因此对于系统的存储量有很大的要求,需要有一个强大的数据库的支持才能确保所有的信息都能安全稳定的进行存储。

(4)易学性:该系统在操作上必须简单好上手,没有很多复杂的操作,只需要简单的进行学习就能操作该系统。

(5)稳定性需求:开发的库存管理系统要求运行稳定,运行过程中无界面不清楚、字体模糊等现象。

(6)稳定性:开发的库存管理系统要求运行稳定,运行过程中无界面不清楚、字体模糊等现象。

3.3 系统功能分析

本库存管理系统主要包括三大功能模块,即采购员功能模块、销售员功能模块和后台管理员模块。

(1)管理员模块:系统中的核心用户是系统管理员,管理员登录后,通过管理员菜单来管理后台系统。主要功能有:系统用户、中心仓库管理、分站仓库管理、物资信息管理、物资类型管理、入库记录管理、出库记录管理、调配入库管理、调配出库管理等功能。管理员用例图如图3-1所示。

图3-1 管理员用例图

(2)采购员模块:主要功能有中心仓库管理、分站仓库管理、物资信息管理、入库记录管理等功能。采购员用户用例图如图3-2所示。

                    

图3-2 采购员用户用例图

(2)销售员模块:主要功能有中心仓库管理、分站仓库管理、物资信息管理、出库记录管理等功能。销售员用户用例图如图3-3所示。

                    

图3-3 销售员用户用例图

3.4系统流程分析

3.4.1登录流程

登录模块主要满足管理员、采购员和销售员的权限登录,登录流程图如图3-4所示。

图3-4 登录流程图

3.4.2添加信息流程

用户在添加信息时,信息编号自动生成,系统会对添加的信息进行验证,验证通过则添加至数据库,添加信息成功,反之添加失败。添加信息流程如图3-5所示。

图3-5 添加信息流程图

3.4.3删除信息流程

用户可选择要删除的信息进行信息删除操作,在删除信息时系统提示是否确定删除信息,是则删除信息成功,系统数据库将信息进行删除。删除信息流程图如图3-6所示。

图3-6删除信息流程图

4 系统设计

4.1系统概要设计

本库存管理系统选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作,只要用户能连网,任何时间、任何地点都可以进行系统的操作使用。系统工作原理图如图4-1所示:

图4-1 系统工作原理图

4.2系统结构设计

整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计,系统功能结构如图4-2所示:

图4-2库存管理系统功能模块图

4.3系统顺序图设计

4.3.1登录模块顺序图

登录模块主要满足了管理员、采购员和销售员的权限登录,登录模块顺序图如图4-3所示。

图4-3 登录顺序图

4.3.2添加信息模块顺序图

管理员、采购员和销售员登录后均可进行添加信息操作,添加信息模块顺序图如图4-4所示。

图4-4 添加信息顺序图

4.4数据库设计

一个好的数据库可以关系到程序开发的优劣,数据库设计离不开表结构的设计,还有表与表之间的联系,以及系统开发需要设计的数据表内容等信息。在进行数据库设计期间,要结合实际情况来对数据库进行针对性的开发设计。

4.4.1数据库E-R图设计

本库存管理系统采用的是MYSQL数据库,数据存储快,因为库存管理系统,主要的就是对信息的管理,信息内容比较多,这就需要好好的设计一个好的数据库,分类要清楚,不能添加信息的时候,造成信息太过混乱,设计好的数据库首先就需要先把各个实体之间的关系表达明确。

系统的E-R图如下图所示:

图4-5 系统E-R图

4.4.2数据库表设计

将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。

表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

用户编号:

表allocate_outbound (调配出库)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

allocate_outbound_id

int

10

0

N

Y

调配出库ID

2

allocation_number

varchar

64

0

Y

N

调配编号

3

warehouse_name

varchar

64

0

Y

N

仓库名称

4

warehouse_type

varchar

64

0

Y

N

仓库类型

5

warehouse_location

varchar

64

0

Y

N

仓库位置

6

item_number

varchar

64

0

Y

N

物资编号

7

material_name

varchar

64

0

Y

N

物资名称

8

material_type

varchar

64

0

Y

N

物资类型

9

material_specifications

varchar

64

0

Y

N

物资规格

10

outbound_quantity

int

10

0

Y

N

0

出库数量

11

deployment_date

date

10

0

Y

N

调配日期

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表allocation_and_warehousing (调配入库)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

allocation_and_warehousing_id

int

10

0

N

Y

调配入库ID

2

allocation_number

varchar

64

0

Y

N

调配编号

3

warehouse_name

varchar

64

0

Y

N

仓库名称

4

warehouse_type

varchar

64

0

Y

N

仓库类型

5

warehouse_location

varchar

64

0

Y

N

仓库位置

6

item_number

varchar

64

0

Y

N

物资编号

7

material_name

varchar

64

0

Y

N

物资名称

8

material_type

varchar

64

0

Y

N

物资类型

9

material_specifications

varchar

64

0

Y

N

物资规格

10

inventory_quantity

int

10

0

Y

N

0

入库数量

11

deployment_date

date

10

0

Y

N

调配日期

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

更新时间:

表central_warehouse (中心仓库)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

central_warehouse_id

int

10

0

N

Y

中心仓库ID

2

warehouse_name

varchar

64

0

N

N

仓库名称

3

warehouse_type

varchar

64

0

Y

N

仓库类型

4

warehouse_location

varchar

64

0

Y

N

仓库位置

5

warehouse_introduction

longtext

2147483647

0

Y

N

仓库介绍

6

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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:

表material_information (物资信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

material_information_id

int

10

0

N

Y

物资信息ID

2

warehouse_name

varchar

64

0

Y

N

仓库名称

3

warehouse_type

varchar

64

0

Y

N

仓库类型

4

warehouse_location

varchar

64

0

Y

N

仓库位置

5

item_number

varchar

64

0

N

N

物资编号

6

material_name

varchar

64

0

Y

N

物资名称

7

material_type

varchar

64

0

Y

N

物资类型

8

quantity_of_materials

int

10

0

Y

N

0

物资数量

9

material_specifications

varchar

64

0

Y

N

物资规格

10

material_details

longtext

2147483647

0

Y

N

物资详情

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表material_type (物资类型)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

material_type_id

int

10

0

N

Y

物资类型ID

2

material_type

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

更新时间

表outbound_records (出库记录)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

outbound_records_id

int

10

0

N

Y

出库记录ID

2

outbound_number

varchar

64

0

Y

N

出库号

3

item_number

varchar

64

0

Y

N

物资编号

4

material_name

varchar

64

0

Y

N

物资名称

5

material_type

varchar

64

0

Y

N

物资类型

6

material_specifications

varchar

64

0

Y

N

物资规格

7

salesperson

int

10

0

Y

N

0

销售员

8

outbound_date

date

10

0

Y

N

出库日期

9

outbound_quantity

int

10

0

Y

N

0

出库数量

10

outbound_unit_price

int

10

0

Y

N

0

出库单价

11

sales_amount

varchar

64

0

Y

N

销售金额

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表purchasing_officer (采购员)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

purchasing_officer_id

int

10

0

N

Y

采购员ID

2

employee_id

varchar

64

0

Y

N

员工工号

3

employee_name

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

更新时间

表salesperson (销售员)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

salesperson_id

int

10

0

N

Y

销售员ID

2

employee_id

varchar

64

0

Y

N

员工工号

3

employee_name

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

更新时间

表storage_records (入库记录)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

storage_records_id

int

10

0

N

Y

入库记录ID

2

warehouse_entry_number

varchar

64

0

Y

N

入库号

3

item_number

varchar

64

0

Y

N

物资编号

4

material_name

varchar

64

0

Y

N

物资名称

5

material_type

varchar

64

0

Y

N

物资类型

6

material_specifications

varchar

64

0

Y

N

物资规格

7

purchasing_officer

int

10

0

Y

N

0

采购员

8

purchase_quantity

int

10

0

Y

N

0

采购数量

9

purchase_unit_price

int

10

0

Y

N

0

采购单价

10

purchase_amount

varchar

64

0

Y

N

采购金额

11

storage_date

date

10

0

Y

N

入库日期

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表sub_station_warehouse (分站仓库)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

sub_station_warehouse_id

int

10

0

N

Y

分站仓库ID

2

warehouse_name

varchar

64

0

N

N

仓库名称

3

warehouse_type

varchar

64

0

Y

N

仓库类型

4

warehouse_location

varchar

64

0

Y

N

仓库位置

5

warehouse_introduction

longtext

2147483647

0

Y

N

仓库介绍

6

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

文件类型

表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

email

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

创建时间:

15

vip_level

varchar

255

0

Y

N

会员等级

16

vip_discount

double

11

2

Y

N

0.00

会员折扣

表user_chat_friend

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_chat_friend_id

int

10

0

N

Y

id

2

user_id

int

10

0

N

N

用户id

3

friend_user_id

int

10

0

N

N

用户好友id

4

friend_user_name

varchar

255

0

Y

N

好友名称

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

表user_chat_group

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_chat_group_id

int

10

0

N

Y

id

2

group_id

int

10

0

Y

N

群聊id

3

group_name

varchar

255

0

Y

N

群聊名称

4

user_id

int

10

0

Y

N

用户id

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

表user_chat_read

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_chat_read_id

varchar

255

0

N

Y

id

2

user_id

int

10

0

Y

N

接收人id

3

send_user_id

int

10

0

Y

N

发送人id

4

group_id

int

10

0

Y

N

群聊id

5

type

int

10

0

Y

N

类型1-点对点消息,2-群聊消息

6

create_time

timestamp

19

0

Y

N

CURRENT_TIMESTAMP

时间

7

message

text

65535

0

Y

N

消息

表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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 系统详细设计

5.1 登录模块

管理员、采购员和销售员在登录界面输入账号+密码,完成验证,点击“登录”按钮,系统在用户数据库表中会对管理员、用户的账号进行匹配,账号+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息,返回到登录的界面,登录界面展示如下图5-1所示。

图5-1 登录界面图

用户登录关键代码如下:

 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.2 用户管理模块

系统用户管理:管理员负责管理系统的用户,包括管理员、采购员和销售员用户的登录、权限分配等操作。他们可以添加、编辑或删除用户账户,并设定相应的权限。界面如下图所示。

图5-2 用户管理界面图

系统用户添加代码:

def Add(self, ctx):

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.3 中心仓库管理模块

中心仓库管理:管理员可以对仓库信息进行管理,管理员需要对仓库的基本信息进行维护,如仓库名称、仓库类型、仓库位置、仓库介绍等,以便于后续的物资管理和查询。中心仓库信息添加界面如下图所示。

图5-3中心仓库信息添加界面图

5.4 物资信息管理模块

物资信息管理:管理员可以对物资信息进行管理,包括添加物资信息、编辑物资信息、删除物资信息等操作。管理员需要对物资的基本信息进行维护,如仓库名称、仓库类型、仓库位置、物资编号、物资名称、物资类型、物资数量、物资规格、物资详情等,以便于后续的库存管理和查询。管理员添加物资信息界面如下图所示。

图5-4管理员添加物资信息界面图

5.5 采购入库管理模块

采购入库管理:采购员可以记录物资的采购信息,包括入库号、物资编号、物资名称、物资类型、物资规格、采购员、采购数量、采购单价、采购金额、入库日期等。他们负责将采购信息录入系统,并确保信息的准确性和完整性,以便后续的库存管理和成本控制。界面如下图所示。

图5-5采购入库界面图

5.6 销售出库管理模块

销售出库管理:销售员可以记录物资的销售出库信息,包括出库号、物资编号、物资名称、物资类型、物资规格、销售员、出库日期、出库数量、存储库单价、销售金额等。他们负责将销售信息录入系统,并确保信息的准确性和完整性,以便后续的销售统计和库存管理。界面如下图所示。

图5-6销售出库界面图

6 系统测试

一个系统设计好后,就会进入测试阶段,测试的目标是检验设计好的网站是否可以正常无误的运行,尽可能的发现网站的问题,已使后期网站投入使用后网站尽少出错。

6.1 测试定义

系统测试主要是判断系统是否可以正常运行,功能模块是否可以实现操作。程序

代码中是否有错误出现。测试程序是开发过程中的一个主要问题。就算系统完成的再好,再进行程序测试时也会也会发现一个重来没有被发现的错误信息。

测试不仅是系统开发的开始,而且应该贯穿整个系统的整个生命周期。评估系统质量的方法不局限于系统编码和过程,应该与软件设计工作和历史需求分析密切相关。系统错误,不一定是代码错误,可能是阶段的设计摘要和设计细节存在问题,问题也可能出现在需求分析阶段。从实际情况来看,最初的问题很可能是一个小错误,根据按钮的原理,按钮后的按钮位错将是所有位错。该系统的原因也同样适用,随着后续的开发工作,误差将越来越严重。因此就应该对系统进行测试,在一开始就发现系统中存在的问题,就能保证以后系统能够正常稳定的运行。在测试系统中,开发人员应该站在客户的角度来处理测试工作,而现在主要的测试方法是黑盒测试。测试的目的可以概括为以下几点:首先,用户界面和客户需求是一致的,设置界面和设计风格统一;第二,创新设计接口规范设计标准,具有独特的审美特征;最后,人类传统的接口以满足审美需求,不能盲目地追求一种独特的,合理的规划布局,符合审美标准。

6.2 测试目的

测试的目的在于要对系统的稳定和可操作性能进行对照检查。对于软件的开发利用最终的目的在最后的测试和试用,这是一个不可缺少的重要环节。对于软件开发者而言,在对每一个单独的功能进行编排时候,都要有单独的测试,并通过测试阶段才可以研发多个功能性软件,这样既缩短了研发时间,也可以在的单个的早期测试中发现问题,以免融合后的软件,在查找问题时就很难快速解决或者急速定位问题。

基于Python的库存管理系统开发设计完成后,需要对其进行系统测试,测试的主要目的就是发现并找出系统中存在的问题,并及时的进行解决,确保系统可以正常稳定的运行下去,在进行系统测试的时候,在一定要非常的认真、仔细,切记不能粗心,不能放过一个漏洞,测试时候一定不要着急,要按照之前指定好的测试步骤一步一步进行,并且将测试的结果进行详细的记录,我们在进行测试的时候做好选择自动化的测试,这样既可以节省时间而且也能确保测试的准确性,如果采用人工测试的方法就不会这么的方便,由于人工测试有很多不确定的因素,在测试过程中很可能会出现一些问题,用机器测试就不会出现任何的问题,而且机器不会疲惫会一直二等工作下去。在测试的时候一定要非常专注,时刻关注着测试的结果,一但发现异常及时进行修改,最后,测试完之后的文档应该保存下来,方便以后测试时用到。系统测试的方法有很多,对于本库存管理系统的测试,我们使用了测试用得最多的黑盒测试方法来对该系统进行测试。

6.3测试方案

对测试计划的把握是测试方案的重中之重。所有的技术难点应该都被包含在这个测试计划之中。而且我们要保证能与目标形成一致性,以至于能够测试出一些主要存在的错误和一些错误的漏洞。可以完美解决这些问题就只有白盒测试或者黑盒测试。

构造测试是白盒测试的另一个名字,了解与分析程序的结构以及性能功用的,从而我们可以得到最终想要的结果并且观察出是不是每一条程序都能得到。

性能测试是黑盒测试别称,程序本身的运作通过程序的进程来观察,主要是看一下程序是不是能够像我们预期的目标那样发展,看一看我们的程序最终能不能完整的得到我们最后想要的功能和储存想得到的数据,到最后看一下我们的这个程序完整性能不能达到要求。

1)模块测试

单元测试就是模块测试,顾名思义就是测试每个模块所承担的功能是否能够实现,这个测试就是为了找出代码在实际的设计运转中某一些小的程序所出现的偏差,很好地改正这些错误,就说明我们模块测试进行很成功过。

2)集成测试:

集成测试就是对系统的测试以及对他子系统的一些性能测试,他检查的事系统的包装程序信息。找出其中的问题。他的优势主要有以下这几点:

软件耗费较少。

可以提前发现端口的错误。

更好的地位系统中错误的位置。

从底部往上面进行的方案针对于偏下层的结构,而中间的结构就采用折中的方法。

3)验收测试:

终于到了结尾性的工作了。就是为了给用户看一下我们的系统功能是否达到了预期的效果。我采用了性能测试也就是黑盒测试对系统进行测试。

其结果是分别是:

有一定的差异在用户的需求。

再者就是结果与之差不了多少。

到了最后了,我们发现的问题都是与用户的需求存在一定的关联。

1、登录测试

 测试点:登录

测试的目标:输入账号密码以及验证码后系统会自动进行验证是否正确。

所用的环境:Windows10和IE浏览器。

输入信息:用户名、密码。

步骤:

1)首先我们打来浏览器,进入该系统的登录界面。

(2)在进入页面登录部分以后可以进行对用户名、密码进行测试,具体测试输入情况如下表6.1所示。

表6.1 登录测试

情况

用户名输入

密码输入

期望结果

(1)

15546219225

1244566

提示用户名或者密码错误,或账号未经审核

(2)

aaaaa

123456

提示用户名或密码错误,或者账号未经审核

(3)

15546219225

hangguowei

登陆成功

6.4系统分析

本库存管理系统设计要求基本都可以达到,此系统具有完整的软件功能,良好的用户界面,能够正确的处理错误信息,而且能够准确的提出错误的种类。但是系统测试时也出现了一些系统的不足和缺陷,所以在今后的日子里我会对其视觉上的不足作出修改,其次系统的代码和数据库出现了非常多的冗余现象,都是因为对编程技术的应用不够熟练,在日后我会加强自己的自身学习和能力,减少这样的冗余现象。

经过对上述的测试结果分析,本库存管理系统无论是在技术方面,还是操作方面,还是经济方面都是完全可以实行的,并且经过测试,该系统操作简单,所有的功能都可以实现,因此该系统可以满足人们的使用需求,值得被推广。

总体说来,软件通过测试。

7 结论

本文研究了基于Python的库存管理系统的设计与实现,在文章开端首先对个研究背景、研究现状和研究内容作了简单的介绍,然后通过系统分析,引申出本系统研究的主要内容。

通过对Python技术和MySQL数据库的简介,从硬件和软件两反面说明了库存管理系统的设计与实现的可行性,本文结论及研究成果如下:实现了Python技术和MySQL数据库相结合构建的库存管理系统,通过本次库存管理系统的设计与实现的研究与实现,我感触到学习一门新技术,最重要的是实践,只有多动手才能尽快掌握它,一个系统的开发,经验是最重要的,经验不足,就难免会有许多考虑不周之处。要想吸引更多的用户,系统的界面必须要美观、有特色、友好,功能要健全。

由于在此之前对于Python知识并不了解,所以从一开始就碰到许多困难,例如一开始的页面显示不规范、数据库连接有问题已经无法实现参数的传递等等,不过通过我不断的查阅相关的资料,以及向老师同学请教,最后出现的所有的问题都得到了解决,通过这次的系统开发,我学到了很多的知识,也明白了自己在哪些方面有不足的地方,尤其是学会如何从大量的信息中筛选出所需有用的信息,同时我更加深刻的体会到了,虽然书本上的大部分知识都是有价值,正确的,但实际上每个人编程的思路和对数据处理的方法、思想都是不同的,这就要求我们一定要通过实践才能找到解决问题的方案。在此次毕业设计活动中,我不断的提高了自己,也得到了宝贵的经验,我相信这些对我以后的发展都会有很大帮助。

通过这次库存管理系统的开发,让我学到了更多的知识,同时通过这次系统的设计也让我明白了自己在哪方面有不足,以后加以学习争取可以开发住更多有用的适用的系统软件,本次系统的设计提高了我的编程水平,为了我今后系统的开发打下了结实的基础。

参考文献

[1]Canyakmaz C ,Özekici S ,Karaesmen F .Risk management through financial hedging in inventory systems with stochastic price processes[J].International Journal of Production Economics,2024,270109189-.

[2]张露.水电厂智慧仓储物资管理研究[J].云南水力发电,2024,40(02):182-184.

[3]Sanjay P M ,D. R R ,R. P K , et al.Inventory management and TQM practices for better firm performance: a systematic and bibliometric review[J].The TQM Journal,2024,36(2):405-430.

[4]李鑫.MG公司仓储管理系统企业应用效果研究[J].价值工程,2024,43(02):79-81.DOI:10.3969/j.issn.1006-4311.2024.02.025.

[5]Sohaib A ,Mustapha H ,Anis M , et al.A memetic based algorithm for simultaneous preventive maintenance scheduling and spare-parts inventory management for manufacturing systems[J].Applied Soft Computing,2024,151111161-.

[6]邓青松,蒲忠.S汽车售后服务备件库存管理系统优化研究[J].中国物流与采购,2023,(23):36-37.DOI:10.16079/j.cnki.issn1671-6663.2023.23.011.

[7]魏越超,史舒婷,范磊等.太原地震监测中心站库存管理系统的设计与实现[J].轻工科技,2023,39(06):137-139.

[8]李方方,孙丽君,张杭.加油站补货管理系统中在途库存的实时转运策略[J/OL].系统管理学报,1-22[2024-03-25].http://kns.cnki.net/kcms/detail/31.1977.N.20231114.1504.002.html.

[9]夏文杰,冀翼.一种库存管理系统的研究与设计[J].中国棉花加工,2023,(03):10-11.

[10]郭鹤楠.基于Django和Python技术的网站设计与实现[J].数字通信世界,2023,(06):60-62.

[11]闫小扬.支持货位优化策略的仓库管理系统设计与实现[D].北京邮电大学,2023.DOI:10.26969/d.cnki.gbydu.2023.001103.

[12]孟宇.企业运营中应用信息化手段提高管理水平探索[J].中外企业文化,2023,(04):85-87.

[13]黄勇强,郑英姿.物流仓储管理系统的设计与实现[J].电脑知识与技术,2023,19(09):28-30+65.DOI:10.14004/j.cnki.ckt.2023.0426.

[14]张丹.库存物资处置数字化管理系统设计与开发[J].行政事业资产与财务,2023,(05):124-126.

[15]李焕梅,吴长安,吴艳玲等.基于MVC框架的元器件库存管理系统的设计与实现[J].电子制作,2023,31(04):61-63+34.DOI:10.16589/j.cnki.cn11-3571/tn.2023.04.009.

[16]Tyson M .Error tracking with Sentry, Python, and Django[J].InfoWorld.com,2022,

[17]王军.基于Django的高校后勤库存管理系统设计实现[J].计算机时代,2022,(07):59-61+65.DOI:10.16644/j.cnki.cn33-1094/tp.2022.07.015.

[18]刘长龙.Python高效开发实战[M].电子工业出版社:202108.521.

[19]刘华锋,苏艳刚,刘跃.生产型企业库存管理系统开发[J].现代工业经济和信息化,2021,11(07):70-71+139.DOI:10.16525/j.cnki.14-1362/n.2021.07.25.

[20]刘加伟,王后伟,石占磊等.Python数据分析工具在工程材料在途数据分析中的应用[J].石油和化工设备,2021,24(07):5-6.

致 谢

本次毕业设计圆满的结束了,通过这次毕业设计我学到了很多的知识,也提高了我软件开发的能力,在系统开发设计的过程中,出现了很多的问题,但是通过老师和同学们的帮助,最后所有的问题都得到了解决,因此我要感谢在此过程中对我帮助的老师和同学们,感谢指导老师帮助我选课题,给我做详细的讲解,给我提供设计所需要的各种设备,也经常询问我进度与成果,再有难点的时候给我解决思路,帮助我顺利完成。没有他的指导,也不会有我今天所展现出的成果。

首先我要感谢我的指导老师,指导老师在教学任务繁忙的情况下,抽出时间帮助我纠正我在设计当中出现的问题,并耐性地为我的论文作校正,是他的定期检查和指导使得我们的毕业设计高质量完成。他在我整个课题开发和设计的过程中,为程序的设计、框架的设计、代码的撰写方面以及论文框架的设计提供了很多宝贵的意见,并且为我推荐了许多有用的资料和文献,他的指导和建议使我受益匪浅,有了指导老师的辅导和指点,我论文才能够顺利完成。老师的认真负责的工作态度和治学严谨之道使我们这些即将踏入社会的毕业生受益匪浅。

然后要感谢我的同学们,感谢大家对我这次毕业设计的帮助, 也感谢大家在大学生活中对我的陪伴,使得我的大学生活过的很快乐。

另外,我还要感谢父母,感谢一直以来对我的支持,让我能够顺利的完成我的学业,没有你们也就没有我的今天,感谢你们无私的付出,未来我一定会报答你们的。

最后,感谢在座的所有参加我论文答辩的老师们,感谢大家的聆听,你们辛苦了。

点赞+收藏+关注  →私信领取本源代码、数据库

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值