摘 要
本研究使用Python开发语言,利用Django技术框架,配合MySQL数据库进行开发了一款功能完善的木材仓库管理系统。该系统主要面向注册用户、卖家用户和管理员,并涵盖了系统用户、木材信息管理、订单信息管理、入库信息管理、出库信息管理、系统管理、公告通知管理、资源管理等核心功能模块。通过对系统需求的分析和设计,采用了合理的数据库结构和前后端技术实现;并借助Django框架的优势,使系统具备良好的代码模块化、可扩展性和易维护性。在系统开发过程中,充分进行了测试和优化,以确保系统的稳定性和性能。同时,注重用户体验,通过友好的界面设计和简单的操作流程,为用户提供购买木材的体验和管理订单的服务。
木材仓库管理系统的设计与实现旨在提供准确且高效的木材仓库管理方式及解决方案,并提供友好且便捷的购买交易木材的渠道,促进木材行业的发展和用户满意度的提升。通过该系统,用户可以方便地浏览和购买各类木材信息,管理自己的订单信息,并进行评论,提高用户之间的沟通交流。同时该系统的开发能够为用户提供了便捷的交易支付和订单管理工具,推动了木材行业的发展,提高了用户的满意度和交易体验。
关键词:木材仓库管理系统;框架;MySQL数据库;Python语言
Abstract
This study developed a fully functional wood warehouse management system using Python development language, Django technology framework, and MySQL database. The system is mainly aimed at registered users, seller users, and administrators, and covers core functional modules such as system users, wood information management, order information management, inbound information management, outbound information management, system management, announcement notification management, and resource management. By analyzing and designing system requirements, a reasonable database structure and front-end and back-end technologies were adopted for implementation; And leveraging the advantages of the Django framework, the system has good code modularity, scalability, and ease of maintenance. During the system development process, sufficient testing and optimization were conducted to ensure the stability and performance of the system. At the same time, we focus on user experience and provide users with the experience of purchasing wood and managing orders through friendly interface design and simple operation processes.
The design and implementation of a timber warehouse management system aims to provide accurate and efficient timber warehouse management methods and solutions, as well as a friendly and convenient channel for purchasing and trading timber, promoting the development of the timber industry and improving user satisfaction. Through this system, users can easily browse and purchase various types of wood information, manage their order information, and leave comments, improving communication and exchange among users. At the same time, the development of the system can provide users with convenient transaction payment and order management tools, promote the development of the timber industry, and improve user satisfaction and transaction experience.
Key words: Wood warehouse management system; Django framework; MySQL database; Python language
目 录
1 绪论
1.1 研究背景与意义
木材仓库管理系统是为了满足木材仓库管理的需求而设计和实现的系统。随着木材市场的不断发展,仓库管理对于木材经销商和仓储商来说变得越来越重要。传统的手动管理方式已经无法满足日益增长的需求,因此开发一个高效、准确的系统就显得尤为重要。
本研究使用Python开发语言,利用Django技术框架,配合MySQL数据库进行开发了一款功能完善的木材仓库管理系统。该系统主要面向注册用户、卖家用户和管理员,并涵盖了系统用户、木材信息管理、订单信息管理、入库信息管理、出库信息管理、系统管理、公告通知管理、资源管理等核心功能模块。通过对系统需求的分析和设计,采用了合理的数据库结构和前后端技术实现;并借助Django框架的优势,使系统具备良好的代码模块化、可扩展性和易维护性。在系统开发过程中,充分进行了测试和优化,以确保系统的稳定性和性能。同时,注重用户体验,通过友好的界面设计和简单的操作流程,为用户提供购买木材的体验和管理订单的服务。
木材仓库管理系统的设计与实现旨在提供准确且高效的木材仓库管理方式及解决方案,并提供友好且便捷的购买交易木材的渠道,促进木材行业的发展和用户满意度的提升。通过该系统,用户可以方便地浏览和购买各类木材信息,管理自己的订单信息,并进行评论,提高用户之间的沟通交流;能够为用户提供了便捷的购物和订单管理工具,推动了木材行业的发展,提高了用户的满意度和购买体验。同时该系统的开发能够为用户提供了便捷的交易支付和订单管理工具,推动了木材行业的发展,提高了用户的满意度和交易体验。 解决传统的手动管理容易出现人为因素导致的错误,保证木材仓库信息的准确性和可靠性,并且可以实时了解木材的仓库库存、出入库情况,合理安排、利用、补充仓储资源。
智能化仓储管理系统是近年来研究的热点之一。国内外学者从不同角度研究如何利用物联网、大数据、机器学习等技术来构建智能仓储管理系统。这些系统可以通过实时监控和自动化控制来提高仓库操作的效率和准确性。在国内,木材仓库管理系统的研究主要集中仓库业务流程优化、智能仓库管理系统、安全管理系统、供应链管理系统集成等方面,同时国外方面,木材仓库管理系统的研究也相对较多,主要关注仓库管理优化、自动化仓库系统、仓库物流优化等方面。
仓储物流是指仓库与物流的有机结合,旨在实现高效的货物流转和仓储管理。国内外研究者在仓储物流管理系统中探索如何优化物流配送路线、减少货物损耗、提高仓库空间利用率等问题,以提升仓库物流管理的效率和经济效益。供应链管理系统是企业管理的重要组成部分,它涵盖了采购、生产、销售和仓储等各个环节。研究者致力于将仓库管理系统与其他环节的管理系统无缝集成,以实现供应链全程的协同管理和信息流畅。另外,随着大数据技术的快速发展,研究者开始关注如何利用仓库中积累的数据进行有效分析和利用。通过数据分析和决策支持系统,可以实现对仓库库存、货物流转等方面的实时监控和优化管理。部分研究关安全管理,注仓储安全是仓库管理中的重要问题,涉及到货物防盗、火灾防控、安全培训等方面。研究者致力于探索如何利用现代技术来建立科学的仓储安全管理系统,提升仓库安全管理的水平。
总体来说,国内外的木材仓库管理系统研究主要关注仓库业务流程优化、智能化技术应用、物流管理、安全管理和供应链集成等方面,旨在提高木材仓库管理的效率、准确性和安全性。在系统设计和实现过程中,需要综合考虑现有研究成果和实践经验,结合本地实际情况进行定制化开发。同时这些研究成果为木材仓库管理系统的设计与实现提供了丰富的理论基础和经验借鉴。
论文将分层次经行编排,除去论文摘要致谢文献参考部分,正文部分还会对网站需求做出分析,以及阐述大体的设计和实现的功能,最后罗列部分调测记录,论文主要架构如下:
第一章:引言。第一章主要介绍了课题研究的背景,研究意义和本文的主要工作。
第二章:系统需求分析。第二章主要从系统的用户、功能等方面进行需求分析。
第三章:系统设计。第三章主要对系统框架、系统功能模块、数据库进行功能设计。
第四章:系统实现。第四章主要介绍了系统框架搭建、系统界面的实现。
第五章:系统测试。第五章主要对系统的部分界面进行测试并对主要功能进行测试
2 木材仓库管理系统系统分析
系统分析是开发一个项目的先决条件,通过系统分析可以很好的了解系统的主体用户的基本需求情况,同时这也是项目的开发的原因。进而对系统开发进行可行性分析,通常包括技术可行性、经济可行性等,可行性分析同时也是从项目整体角度进行的分析。然后就是对项目的具体需求进行分析,分析的手段一般都是通过用户的用例图来实现。下面是详细的介绍。
2.1 可行性分析
在项目上使用的工具大部分都是当下流行开源免费的,所以在开发前期,开发时用于项目的经费将会大大降低,不会让开发该软件在项目启动期受到经费的影响。同时,随着互联网的高速发展,线上搜索和交易变得平民化普,并且用户人数呈上升趋势,当用户人数庞大了,运维成本可以由广告费进行填补,包括开发成本。 所以经济可行性没有问题。
(2)操作可行性:
此次项目设计参考了几个该模式下网站的开发案例,对他们的操作界面分析,将众多案例结合在一起,突出以人为本简化操作具有基本计算机知识的人都会操作本项目。所以操作可行性也没有问题。
(3)技术可行性:
技术可行性指的是对于搭建框架的可行性,以及有更优秀的技术出现时系统的技术更新换代的纳新性如何,开发时间成本费用比如何。现有的Python技术能够迎合大多数电子商务系统的搭建。开发这个木材仓库管理系统的时候我采用了Python和Django框架用以运行整体程序。所以技术可行性也没有问题。
(4)法律可行性:
从开发者角度来看,Python和Django框架是开源且免费的,在知识产权方面不会产生任何法律纠纷。从用户使用角度来看,只要不在系统上贩卖违禁品,对系统做出条约协议,杜绝非法支付即可。所以法律可行性也没有问题。
2.2.1 数据流程
木材仓库管理系统一个主要的目的就是实现对商品的在线购买,图2-1就是系统的数据流图。
图2-1商品购买操作展开图
3.3.2 业务流程
分析完系统的数据流,接下来我们来看系统的业务流程,图2-2就是业务流程图:
图2-2业务流程图
按照木材仓库管理系统的角色需求,可以划分为了注册用户、卖家用户和管理员三大模块。
- 注册登录:游客可以通过注册成为系统用户,使用账号密码可进行登录,使用系统功能。
- 首页:可查看轮播图、公告通知、新闻资讯等信息,并可使用系统其他功能。
- 公告通知:可查看包括关于我们、联系方式、网站介绍等管理员发布的所有公告通知,点击可查看详情。
- 新闻资讯:可查看管理员发布的所有新闻资讯信息,支持局部搜索和下拉(筛选、排序)搜索,热门文章推荐,点击可查看详情,进行点赞、收藏和评论。
- 木材信息:可查看所有木材信息,支持关键字(木材名称、木材类型)搜索和下拉(排序)搜索,点击可查看详情(木材编号、木材名称、木材类型、木材卖家、木材重量、木材数量、木材价格、点赞数、木材详情),进行点赞、收藏和评论,并可点击购买木材操作,填写购买木材信息(购买时间、购买数量、合计总价、购买备注)并提交。
- 我的账户:对个人资料进行管理,包括修改密码和修改资料(头像、昵称、邮箱、用户姓名、用户性别)。
- 个人中心:可对个人首页、订单信息、收藏等信息进行管控。例如,点击“订单信息”,可查看自己的所有订单信息,进行查询操作木材名称、木材类型、支付状态搜索,可点击查看详情,并可点击支付操作;点击“收藏”,可管理所有收藏信息,包括新闻资讯、木材信息等收藏信息,进行查看和删除操作,点击可查看详情。
2、卖家用户模块:
- 注册登录:可以通过注册成为卖家用户,使用账号密码可进行登录,使用系统功能,并可对个人信息和密码进行管控。
- 木材信息管理:可查看所有木材信息,进行增改删查操作,支持木材名称、木材类型搜索,点击可查看详情(木材编号、木材名称、木材类型、木材卖家、木材重量、木材数量、封面图、木材价格、木材详情)和查看评论,并可点击购买木材、入库、出库操作,添加并提交购买木材、入库和出库信息。
- 订单信息管理:可查看所有订单信息,进行查询和删除操作,支持木材名称、木材类型、支付状态搜索,可点击查看详情(木材编号、木材名称、木材类型、木材卖家、木材价格、购买用户、购买时间、购买数量、合计总价、购买备注、支付状态、支付类型),并可点击支付操作,进行修改支付状态。
- 入库信息管理:可查看所有入库信息,进行增改删查操作,支持木材名称、木材类型搜索,可点击查看详情(木材编号、木材名称、木材类型、入库人员、入库时间、入库原因、入库数量、入库备注)。
- 出库信息管理:可查看所有出库信息,进行增改删查操作,支持木材名称、木材类型搜索,可点击查看详情(木材编号、木材名称、木材类型、出库人员、出库时间、出库原因、出库数量、出库备注)。
3、管理员模块:
- 登录:管理员账号密码由系统生成,可使用账号密码可进行登录,使用系统功能,并对个人信息和密码进行管理。
- 系统用户:可对注册用户、卖家用户和管理员进行管控,可点击查看详情。
- 木材信息管理:可查看所有木材信息,进行增改删查操作,支持木材名称、木材类型搜索,点击可查看详情和查看评论,并可点击购买木材、入库、出库操作。
- 订单信息管理:可查看所有订单信息,进行查询和删除操作,支持木材名称、木材类型、支付状态搜索,可点击查看详情,并可点击支付操作,进行修改支付状态。
- 入库信息管理:可查看所有入库信息,进行增改删查操作,支持木材名称、木材类型搜索,可点击查看详情。
- 出库信息管理:可查看所有出库信息,进行增改删查操作,支持木材名称、木材类型搜索,可点击查看详情。
- 系统管理:可对首页的轮播图进行管理,进行增删改查操作,支持标题搜索,可点击查看详情。
- 公告通知管理:可对公告通知进行管理,进行增删改查操作,支持标题搜索,可点击查看详情。
- 资源管理:可对新闻资讯和资讯分类进行管理,进行增删改查操作;其中新闻资讯支持标题、标签、分类搜索,可点击查看详情(封面图、标题、分类、标签、描述、正文)和查看评论;资讯分类支持类型名称搜索,可点击查看详情。
2.3.2 非功能性分析
木材仓库管理系统的非功能性需求比如木材仓库管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:
表3-1木材仓库管理系统非功能需求表
安全性 | 主要指木材仓库管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指木材仓库管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响木材仓库管理系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着木材仓库管理系统的页面展示内容进行操作,就可以了。 |
可维护性 | 木材仓库管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.4 系统用例分析
通过2.3功能的分析,得出了本木材仓库管理系统的用例图:
注册用户角色用例图如下图2-3所示。
图2-3 注册用户角色用例图
卖家用户角色用例图如下图2-4所示。
图2-4卖家用户角色用例图
管理员角色用例图如下图2-5所示。
图2-5管理员角色用例图
2.5 本章小结
本章主要通过对木材仓库管理系统的可行性分析、流程分析、功能需求分析、系统用例分析,确定整个木材仓库管理系统要实现的功能。同时也为木材仓库管理系统的代码实现和测试提供了标准。
本章主要讨论的内容包括木材仓库管理系统的功能模块设计、数据库系统设计。
3.1 系统架构设计
本木材仓库管理系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。
图3-1木材仓库管理系统系统架构设计图
表现层(UI):又称UI层,主要完成本木材仓库管理系统的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本木材仓库管理系统时的舒适度。UI的界面设计也要适应不同版本的木材仓库管理系统以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本木材仓库管理系统的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本木材仓库管理系统的数据是放在服务端的mysql数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本木材仓库管理系统的数据存储和管理功能。
3.2 系统功能模块设计
3.2.1 整体功能模块设计
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本木材仓库管理系统中的用例。那么接下来就要开始对本木材仓库管理系统的架构、主要功能和数据库开始进行设计。木材仓库管理系统根据前面章节的需求分析得出,其总体设计模块图如图3-2所示。
图3-2 木材仓库管理系统功能模块图
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
3.3.1 数据库概念结构设计
下面是整个木材仓库管理系统中主要的数据库表总E-R实体关系图。
图3-3 木材仓库管理系统总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 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | order_information_id | int | 10 | 0 | N | Y | 订单信息ID | |
2 | wood_number | varchar | 64 | 0 | Y | N | 木材编号 | |
3 | wood_name | varchar | 64 | 0 | Y | N | 木材名称 | |
4 | wood_type | varchar | 64 | 0 | Y | N | 木材类型 | |
5 | wood_seller | int | 10 | 0 | Y | N | 0 | 木材卖家 |
6 | wood_prices | varchar | 64 | 0 | Y | N | 木材价格 | |
7 | purchasing_users | int | 10 | 0 | Y | N | 0 | 购买用户 |
8 | purchase_time | datetime | 19 | 0 | Y | N | 购买时间 | |
9 | purchase_quantity | int | 10 | 0 | Y | N | 0 | 购买数量 |
10 | total_price | varchar | 64 | 0 | Y | N | 合计总价 | |
11 | purchase_status | varchar | 64 | 0 | Y | N | 购买状态 | |
12 | purchase_notes | text | 65535 | 0 | Y | N | 购买备注 | |
13 | pay_state | varchar | 16 | 0 | N | N | 未支付 | 支付状态 |
14 | pay_type | varchar | 16 | 0 | Y | N | 支付类型: 微信、支付宝、网银 | |
15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | outbound_information_id | int | 10 | 0 | N | Y | 出库信息ID | |
2 | wood_number | varchar | 64 | 0 | Y | N | 木材编号 | |
3 | wood_name | varchar | 64 | 0 | Y | N | 木材名称 | |
4 | wood_type | varchar | 64 | 0 | Y | N | 木材类型 | |
5 | outbound_personnel | int | 10 | 0 | Y | N | 0 | 出库人员 |
6 | outbound_time | datetime | 19 | 0 | Y | N | 出库时间 | |
7 | reason_for_outbound | varchar | 64 | 0 | Y | N | 出库原因 | |
8 | outbound_quantity | varchar | 64 | 0 | Y | N | 出库数量 | |
9 | outbound_remarks | text | 65535 | 0 | Y | N | 出库备注 | |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表praise (点赞)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_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: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | registered_users_id | int | 10 | 0 | N | Y | 注册用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户名称 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | user_age | int | 10 | 0 | Y | N | 0 | 用户年龄 |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | seller_customers_id | int | 10 | 0 | N | Y | 卖家用户ID | |
2 | seller_name | varchar | 64 | 0 | Y | N | 卖家名称 | |
3 | contact_information | 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 | 更新时间 |
表slides (轮播图)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | storage_information_id | int | 10 | 0 | N | Y | 入库信息ID | |
2 | wood_number | varchar | 64 | 0 | Y | N | 木材编号 | |
3 | wood_name | varchar | 64 | 0 | Y | N | 木材名称 | |
4 | wood_type | varchar | 64 | 0 | Y | N | 木材类型 | |
5 | warehouse_personnel | int | 10 | 0 | Y | N | 0 | 入库人员 |
6 | inventory_quantity | int | 10 | 0 | Y | N | 0 | 入库数量 |
7 | reason_for_storage | varchar | 64 | 0 | Y | N | 入库原因 | |
8 | storage_time | datetime | 19 | 0 | Y | N | 入库时间 | |
9 | storage_remarks | text | 65535 | 0 | Y | N | 入库备注 | |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | 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 | | 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_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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | wood_information_id | int | 10 | 0 | N | Y | 木材信息ID | |
2 | wood_number | varchar | 64 | 0 | Y | N | 木材编号 | |
3 | wood_name | varchar | 64 | 0 | Y | N | 木材名称 | |
4 | wood_type | varchar | 64 | 0 | Y | N | 木材类型 | |
5 | wood_seller | int | 10 | 0 | Y | N | 0 | 木材卖家 |
6 | wood_weight | varchar | 64 | 0 | Y | N | 木材重量 | |
7 | quantity_of_wood | int | 10 | 0 | Y | N | 0 | 木材数量 |
8 | cover_photo | varchar | 255 | 0 | Y | N | 封面图片 | |
9 | wood_prices | int | 10 | 0 | Y | N | 0 | 木材价格 |
10 | wood_details | longtext | 2147483647 | 0 | Y | N | 木材详情 | |
11 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
整个木材仓库管理系统的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。
4 木材仓库管理系统详细设计与实现
木材仓库管理系统的详细设计与实现主要是根据前面的木材仓库管理系统的需求分析和木材仓库管理系统的总体设计来设计页面并实现业务逻辑。主要从木材仓库管理系统界面实现、业务逻辑实现这两部分进行介绍。
4.1 用户功能模块
4.1.1 前台首页界面
当进入木材仓库管理系统的时候,首先映入眼帘的是系统的导航栏,下面是轮播图以及系统内容,其主界面展示如下图4-1所示。
图4-1 前台首页界面图
4.1.2 注册界面
不是木材仓库管理系统中正式用户的是可以在线进行注册的,如果你没有本木材仓库管理系统的账号的话,添加“注册”,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。其用用户注册界面展示如下图4-2所示。
图4-2 前台注册界面图
注册逻辑代码如下:
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))
4.1.3 登录界面
木材仓库管理系统中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到木材仓库管理系统的首页中;否则将会提示相应错误信息,用户登录界面如下图4-3所示。
图4-3登录界面图
登录的逻辑代码如下所示:
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))
可查看所有木材信息,支持关键字(木材名称、木材类型)搜索和下拉(排序)搜索,点击可查看详情(木材编号、木材名称、木材类型、木材卖家、木材重量、木材数量、木材价格、点赞数、木材详情),进行点赞、收藏和评论,并可点击购买木材操作,填写购买木材信息(购买时间、购买数量、合计总价、购买备注)并提交。木材信息界面如下图4-4所示所示。
图4-4木材信息详情界面图
4.1.4 个人中心界面
可对个人首页、订单信息、收藏等信息进行管控。例如,点击“订单信息”,可查看自己的所有订单信息,进行查询操作木材名称、木材类型、支付状态搜索,可点击查看详情,并可点击支付操作;点击“收藏”,可管理所有收藏信息,包括新闻资讯、木材信息等收藏信息,进行查看和删除操作,点击可查看详情买,个人中心界面如下图4-5所示。
图4-5个人中心界面图
4.2.1 管理员木材信息管理界面
可查看所有木材信息,进行增改删查操作,支持木材名称、木材类型搜索,点击可查看详情和查看评论,并可点击购买木材、入库、出库操作;订单信息管理:可查看所有订单信息,进行查询和删除操作,支持木材名称、木材类型、支付状态搜索,可点击查看详情,并可点击支付操作,进行修改支付状态,管理员木材信息管理界面如下图所示。
图4-6 管理员木材信息管理界面图
添加关键代码如下:
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": "已存在"}}
可对首页的轮播图进行管理,进行增删改查操作,支持标题搜索,可点击查看详情,界面如下图所示。
图4-7 管理员系统管理界面图
系统管理关键代码如下:
from hashlib import md5
def md5hash(key):
input_name = md5()
input_name.update(key.encode("utf-8"))
return input_name.hexdigest()
可对公告通知进行管理,进行增删改查操作,支持标题搜索,可点击查看详情。界面如下图所示。
图4-8 管理员公告通知管理界面图
可对新闻资讯和资讯分类进行管理,进行增删改查操作;其中新闻资讯支持标题、标签、分类搜索,可点击查看详情(封面图、标题、分类、标签、描述、正文)和查看评论;资讯分类支持类型名称搜索,可点击查看详情。界面如下图所示。
图4-9 管理员资源管理界面图
4.2.5 买家用户订单信息管理界面
可查看所有订单信息,进行查询和删除操作,支持木材名称、木材类型、支付状态搜索,可点击查看详情(木材编号、木材名称、木材类型、木材卖家、木材价格、购买用户、购买时间、购买数量、合计总价、购买备注、支付状态、支付类型),并可点击支付操作,进行修改支付状态,界面如下图所示。
图4-10 买家用户订单信息管理界面图
4.2.6 买家用户入库信息管理界面
可查看所有入库信息,进行增改删查操作,支持木材名称、木材类型搜索,可点击查看详情(木材编号、木材名称、木材类型、入库人员、入库时间、入库原因、入库数量、入库备注)。界面如下图4-11所示。
可查看所有出库信息,进行增改删查操作,支持木材名称、木材类型搜索,可点击查看详情(木材编号、木材名称、木材类型、出库人员、出库时间、出库原因、出库数量、出库备注)。界面如下图4-11所示。
图4-12买家用户出库信息管理添加界面图
5 系统测试
5.1 系统测试的目的
系统开发到了最后一个阶段那就是系统测试,系统测试对软件的开发其实是非常有必要的。因为没什么系统一经开发出来就可能会尽善尽美,再厉害的系统开发工程师也会在系统开发的时候出现纰漏,系统测试能够较好的改正一些bug,为后期系统的维护性提供很好的支持。通过系统测试,开发人员也可以建立自己对系统的信心,为后期的系统版本的跟新提供支持。
(1)登录测试
登录测试用例如下表所示。
表6-1 登录测试用例
测试用例编号 | YL_01 | |
测试用例名称 | 系统使用者登录 | |
测试用例描述 | 登录者输入用户名、密码和验证码 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
输入正确的用户名、密码和验证码 | 提示“登录成功”,并进入系统 | 预期结果 |
输入错误的用户名、密码和验证码 | 提示“登录失败”,并返回登录界面 | 预期结果 |
不输入用户名、密码和验证码 | 提示“请输入完整” | 预期结果 |
注册测试用例如下表所示。
表6-2 注册测试用例
测试用例编号 | YL_02 | |
测试用例名称 | 系统使用者注册账号 | |
测试用例描述 | 使用者输入用户名、密码以及个人信息进行账号注册 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
输入系统不存在的用户名、密码和个人信息 | 提示“注册成功” | 预期结果 |
输入系统已存在的用户名 | 提示“注册失败”,并返回注册界面 | 预期结果 |
不输入用户名、密码和个人信息 | 提示“请输入完整” | 预期结果 |
(3)添加新闻资讯测试
添加新闻资讯测试用例如下表所示。
表6-3 添加新闻资讯测试用例
测试用例编号 | YL_04 | |
测试用例名称 | 系统使用者进行添加新闻资讯 | |
测试用例描述 | 使用者输入资讯标题、内容等信息 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
输入完整的资讯标题和内容 | 提示“添加成功”,并进入系统 | 预期结果 |
不输入的资讯标题和内容 | 提示“请输入完整” | 预期结果 |
(4)添加木材信息测试
添加木材信息测试用例如下表所示。
表6-4 添加木材信息测试用例
测试用例编号 | YL_04 | |
测试用例名称 | 系统使用者进行添加木材信息 | |
测试用例描述 | 使用者输入信息标题、内容等信息 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
输入完整的信息标题和内容 | 提示“添加成功”,并进入系统 | 预期结果 |
不输入的信息标题和内容 | 提示“请输入完整” | 预期结果 |
通过编写木材仓库管理系统的测试用例,已经检测完毕用户的用户登录、注册、添加信息、添加资讯等测试,在对以上功能得测试过程中,发现了系统中的很多漏送并进行了完善,经过多人在线进行测试,系统完全可以正常运行,并为系统后期推广运营提供了强力的技术支撑,当然在后期的维护中系统将不断完善。
结 论
至此,木材仓库管理系统已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如Web、Python技术、Django框架,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。
当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。
[1]陈丽娜.化学品仓库信息化管理系统设计[J].上海轻工业,2024,(01):102-104.
[2]刘占彬,王迎春,孙宝琛等.基于大数据的装备资源管理系统设计研究[J].网络安全与数据治理,2023,42(S2):144-149.DOI:10.19358/j.issn.2097-1788.2023.S1.067.
[3]魏晓玲,刘红英.基于Python和Django框架的琴房管理系统设计与实现[J].无线互联科技,2023,20(22):51-53.
[4]胡从寅,杨文远,赵鑫等.基于Django+Vue.js的设计作品交易平台的实现[J].软件,2023,44(11):42-46.
[5]陈俊.基于Python的个性化在线学习系统的设计与实现[J].电脑知识与技术,2023,19(28):37-39.DOI:10.14004/j.cnki.ckt.2023.1502.
[6]张桦,邱雄飞,赵润泽.基于物联网技术的后方仓库管理系统建设研究[J].物联网技术,2023,13(08):95-98.DOI:10.16667/j.issn.2095-1302.2023.08.025.
[7]郭鹤楠.基于Django和Python技术的网站设计与实现[J].数字通信世界,2023,(06):60-62.
[8]陈晓莺,许胜飞.智能仓储物流管理系统的设计与应用研究[J].物流研究,2023,(02):64-69.
[9]Hock C .林德仓库管理系统实现物流中心全面数字化改造[J].现代制造,2023,(04):48-49.
[10]黄勇强,郑英姿.物流仓储管理系统的设计与实现[J].电脑知识与技术,2023,19(09):28-30+65.DOI:10.14004/j.cnki.ckt.2023.0426.
[11]林正敏,王淑娥,于小亿等.基于Django的智慧养老系统设计[J].电脑知识与技术,2023,19(02):25-28.DOI:10.14004/j.cnki.ckt.2023.0099.
[12]司小龙.基于Java和SQL Server的仓库管理系统的设计与开发[J].科技创新与生产力,2023,(01):71-74+77.
[13]华厚强,康佳春.基于Python的校园交易平台设计[J].现代计算机,2022,28(15):105-111.
[14]曾午,WMS智慧仓库管理系统软件.江西省,江西省智能产业技术创新研究院,2022-08-01.
[15]贾铁刚.自动化立体仓库管理系统的设计与实现[J].物流工程与管理,2022,44(07):54-57.
[16]王军.基于Django的高校后勤库存管理系统设计实现[J].计算机时代,2022,(07):59-61+65.DOI:10.16644/j.cnki.cn33-1094/tp.2022.07.015.
[17]徐梦娜.大宗商品仓储管理系统的设计与开发[D].东华大学,2022.DOI:10.27012/d.cnki.gdhuu.2022.001062.
[18]李欣雨.智能仓储管理系统的研究及开发[D].山东大学,2022.DOI:10.27272/d.cnki.gshdu.2022.002072.
[19]杜继明.Python语言的Web开发应用分析[J].数字通信世界,2022,(01):76-78.
[20]丁洁.Python脚本语言的Web开发应用探究[J].数字通信世界,2021,(10):163-164.
致 谢
逝者如斯夫,不舍昼夜。转眼间,大学生活便已经接近尾声,人面对着离别与结束,总是充满着不舍与茫然,我亦如此,仍记得那年秋天,我迫不及待的提前一天到了学校,面对学校巍峨的大门,我心里充满了期待:这里,就是我新生活的起点吗?那天,阳光明媚,学校的欢迎仪式很热烈,我面对着一个个对着我微笑的同学,仿佛一缕缕阳光透过胸口照进了我心里,同时,在那天我认识可爱的室友,我们携手共同度过了这难忘的两年。如今,我望着这篇论文的致谢,不禁又要问自己:现在,我们就要说再见了吗?
感慨莫名,不知所言。遥想当初刚来学校的时候,心里总是想着工科学校会过于板正,会缺乏一些柔情,当时心里甚至有一点点排斥,但是随着我对学校的慢慢认识与了解,我才认识到了她的美丽,她的柔情,并且慢慢的喜欢上了这个校园,但是时间太快了,快到我还没有好好体会她的美丽便要离开了,但是她带给我的回忆,永远不会离开我,也许真正离开那天我的眼里会满含泪水,我不是因为难过,我只是想将她的样子映在我的泪水里,刻在我的心里。最后,感谢我的老师们,是你们教授了我们知识与做人的道理;感谢我的室友们,是你们陪伴了我如此之久;感谢每位关心与支持我的人。
少年,追风赶月莫停留,平荒尽处是春山。
免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-