摘要

随着信息技术的飞速发展,基于深度学习的药品管理系统成为了现代药店管理的趋势。为了提升药品管理的效率与准确性,本文提出了一种基于深度学习和Django框架的药品管理系统,旨在解决传统药品库存管理中信息不对称、库存过期、订单配送效率低等问题。系统根据用户角色(顾客用户、管理员、员工)提供不同的功能模块,包括药品信息管理、购物车与订单管理、库存与损坏信息管理、公告信息及行业资讯的发布与管理等。通过深度学习技术对药品数据进行智能化分类、推荐与预测,系统能有效优化药品库存、入库和配送流程,提升顾客购买体验,减少药店运营成本。系统采用Django框架作为后台开发平台,前端与后端进行良好的数据交互,确保了高效的功能实现与操作便捷性。通过该系统的分析与设计,药店的运营流程得到了大幅度的优化,提升了管理效率,具有较好的应用前景。

关键词:药店药品管理系统;Django;Python;MySQL

Abstract

With the rapid development of information technology, drug management systems based on deep learning have become a trend in modern pharmacy management. In order to improve the efficiency and accuracy of drug management, this paper proposes a drug management system based on deep learning and Django framework, aiming to solve the problems of information asymmetry, inventory expiration, and low order delivery efficiency in traditional drug inventory management. The system provides different functional modules based on user roles (customer users, administrators, employees), including drug information management, shopping cart and order management, inventory and damage information management, announcement information, and industry information publishing and management. By using deep learning technology to intelligently classify, recommend, and predict drug data, the system can effectively optimize drug inventory, warehousing, and delivery processes, enhance customer purchasing experience, and reduce pharmacy operating costs. The system adopts Django framework as the backend development platform, with good data interaction between the front-end and back-end, ensuring efficient functional implementation and convenient operation. Through the analysis and design of this system, the operation process of pharmacies has been significantly optimized, improving management efficiency and having good application prospects.

Keywords: Pharmacy drug management system; Django; Python; MySQL

目  录

1 绪论

1.1 研究背景及意义

1.2 国内外研究现状

1.3 主要研究内容

1.4 论文结构与章节安排

2 关键技术介绍

2.1 B/S体系结构

2.2 Django框架

2.3 MySQL数据库

2.4 Python语言

3 系统分析

3.1 可行性分析

3.1.1 技术可行性

3.1.2 经济可行性

3.1.3 操作可行性

3.2 系统功能需求分析

3.3 非功能需求分析

4 系统设计

4.1 系统架构设计

4.2 系统总体流程设计

4.2.1 用户登录流程

4.2.2 添加信息流程

4.2.3 修改信息流程

4.2.4 删除信息流程

4.3 功能模块设计

4.4 数据库设计

4.4.1 概念设计

4.4.2 逻辑设计

5 系统实现

5.1 用户功能模块实现

5.1.1 用户登录界面

5.1.2 行业资讯界面

5.1.3 药品信息界面

5.1.4 我的购物车界面

5.1.5 订单配送界面

5.1.6 个人中心界面

5.2 管理员功能模块实现

5.2.1 后台首页界面

5.2.2 药品分类管理界面

5.2.3 药品库存管理界面

5.2.4 入库信息管理界面

5.2.5 系统用户界面

5.2.6 损坏信息管理界面

5.2.7 商城管理界面

6 系统测试

6.1 测试目的

6.2 测试用例

6.3 测试结果

7 结论

参考文献

致  谢

附 录

系统关键代码

  1. 绪论
    1. 研究背景及意义

随着医药行业的发展,药品的管理变得越来越复杂,尤其是在药品库存管理、配送调度、订单处理等方面。传统的药品管理方式无法满足现代药店对精细化管理的需求,且信息化水平较低,导致库存管理不精准、药品流通效率低下等问题。药店往往面临着库存积压、缺货等问题,这不仅影响了顾客的购买体验,也增加了药店的运营成本。在这样的背景下,药店亟需一种全新的管理方式来优化药品的采购、库存、销售和配送流程。随着信息技术的不断进步,尤其是互联网和移动技术的普及,药店的管理模式逐步向智能化、自动化发展。采用信息化管理手段,借助现代技术工具,能够帮助药店实时掌握库存状况、订单情况,优化商品流通与供应链管理,提升药品管理效率,确保药品及时配送、减少库存积压。

药店的药品管理涉及多个环节,包括药品的采购、入库、库存管理、销售和配送等。合理、科学的药品管理不仅关系到药品的库存情况,还直接影响到顾客的需求满足和药店的运营效益。药店面对着日益复杂的药品种类、不断变化的市场需求和严苛的药品监管要求,传统的人工管理方式已难以应对当前的挑战。采用先进的管理系统,不仅能够实现药品信息的精确管理,还能帮助药店实现库存的动态调控,减少资源浪费,降低库存成本。与此同时,合理的系统管理能够提升顾客体验,确保顾客在需要时能够及时购买到所需药品,提高顾客满意度和忠诚度。通过对药品信息、库存、订单等数据的精确管理,药店能够更好地应对市场波动,提升运营效率,推动药店经营的持续发展。因此,研究和开发一套适用于药店的药品管理系统,具有重要的理论意义和实际应用价值。

    1. 国内外研究现状 

近年来,随着药品管理的复杂性增加,国内许多研究和企业开始关注药品管理系统的优化。国内一些大型药店和连锁药店在药品管理中逐渐引入信息化手段,采用ERP系统、仓储管理系统等软件来提升库存管理的效率。国内的药品管理研究主要集中在库存管理、订单处理和供应链优化等方面。比如,某些研究探讨了如何通过药品批次管理来确保药品的质量和安全性。通过信息化管理,药店能够有效减少库存积压、缺货和过期药品,提高药品流通效率。在实际应用中,一些国内药店逐步引入了智能化管理系统,能够实时监控库存,自动更新库存数据,保证药品的及时供应。例如,华润医药等大规模企业通过实施智能化药品管理系统,优化了药品的配送流程,减少了药品短缺现象。尽管如此,国内在药品管理系统的研究和应用方面仍存在一些不足,尤其是在系统的集成性和数据互通性方面,仍需进一步加强。

在国际上,药品管理的研究和应用早已进入了信息化、自动化的阶段。许多发达国家的药品管理系统在设计和实施上较为成熟,并且技术不断升级,能够实时监控药品流通全过程。例如,美国的Walgreens和CVS等大型药店通过信息管理系统实现了全程的库存监控和配送管理,药品订单、库存、配送等数据能够实时更新,确保药品能够按时送达顾客。欧洲一些国家也在药品管理中引入了更多的智能化技术,如药品分拣机器人和自动化仓储系统等,显著提高了仓储效率和配送精度。国外在药品管理系统的研发中,特别注重系统的安全性与合规性,确保药品管理符合各国的法律法规要求。除此之外,一些国家还在药品数据的共享与透明化方面做出了积极尝试,通过建立区域性或全球性的药品数据库,使得药品管理能够更加标准化和高效。

综合国内外的研究现状来看,药品管理系统的研究和应用在全球范围内都取得了显著进展,尤其是在信息化、智能化方面的应用。然而,国内的药品管理系统在系统集成、数据共享与互通性方面仍然存在一定的差距。国外的经验表明,智能化和自动化的管理系统能够显著提高药品的流通效率,确保药品的及时供应和质量保障。未来,国内药品管理系统的研究和应用需要加强技术创新,特别是在智能化、系统集成和数据共享方面,需要借鉴国际先进经验,进一步推动药品管理的现代化进程。

    1. 主要研究内容

主要研究内容围绕药品管理系统的功能设计与实现展开,涵盖药品分类、库存、入库、订单、配送、损坏信息处理等关键模块。系统通过用户权限划分,实现管理员、员工与顾客用户的角色分工与操作管理。在功能实现方面,涵盖药品信息录入、库存动态管理、订单状态追踪、药品损坏上报与处理流程等多个环节。用户界面设计注重操作的便捷性和信息展示的清晰性,支持用户查看公告信息、行业资讯、购物车、订单及地址等内容。管理员后台则支持对药品信息、分类、库存、订单、配送、用户及轮播图进行集中管理,同时具备公告发布与资讯管理功能。系统采用现代开发框架进行构建,并结合数据存储与管理工具,实现高效稳定的运行。研究内容聚焦于提升药品流通效率、减少管理成本、增强用户体验,并为药品零售企业提供信息化管理的实践依据。

    1. 论文结构与章节安排

本文的结构按逻辑顺序分为以下几个章节:

第1章绪论,本章节介绍研究背景和意义,回顾当前研究现状,并阐明本文主要组织结构。

第2章系统关键技术,本章节将对基于深度学习的药店药品管理系统的实现关键技术进行简要介绍。

第3章系统分析,本章节基于市场调研,分析基于深度学习的药店药品管理系统的可行性、功能、角色、性能等需求,明确各模块的业务需求。

第4章系统设计,本章节详细阐述系统的整体架构设计,包括前后端结构、数据库设计及功能模块的设计思路。

第5章系统实现,本章节介绍系统各主要模块的具体实现,包括代码示例、业务逻辑及界面设计等。

第6章系统测试,本章节描述系统的测试方法及结果,分析系统的性能、稳定性及用户反馈。

第7章结论,本章节对主要对研究成果进行总结。


  1. 关键技术介绍
    1. B/S体系结构 

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

    1. Django框架

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

    1. MySQL数据库

MySQL是一种广泛使用的开源关系型数据库管理系统[5](RDBMS),其稳定性、可靠性和卓越性能使其成为众多应用程序的首选数据库。MySQL支持标准SQL语法,并提供丰富的功能和特性,如事务处理、触发器和存储过程等,以满足开发者对数据管理和操作的需求。MySQL具有良好的可扩展性,支持主从复制、分布式架构和集群部署,适用于各种规模和负载的应用场景。作为一个开源项目,MySQL拥有庞大的用户社区和活跃的开发者社区,为用户提供了丰富的文档、教程和支持资源。总之,MySQL是一款可靠、强大且灵活的关系型数据库管理系统[6],通过其卓越性能和可扩展性,帮助开发者高效地管理和操作数据,并得到了广大用户的认可和应用。

    1. Python语言

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


  1. 系统分析
    1. 可行性分析
      1. 技术可行性

从技术角度来看,药品管理系统采用的技术架构结合了Python、Django框架、MySQL数据库等成熟的开发工具,能够有效保证系统的稳定性和高效性。Django框架提供了灵活的Web开发环境,支持后台管理系统的高效实现,MySQL则能保障数据存储的安全性和高效查询性能。同时,系统的功能模块设计合理,数据库结构清晰,能够应对大规模数据存储和实时数据处理需求。结合爬虫技术获取外部数据,系统具备良好的扩展性和灵活性,能够适应药品管理系统的各类需求。

      1. 经济可行性

从经济角度来看,开发和维护药品管理系统的成本相对可控,采用开源技术和现有的开发框架可以大大降低初期投入成本。在系统建设初期,主要的支出将集中在技术开发、服务器配置和数据存储等方面。通过高效的库存管理和自动化的订单处理,系统能够有效降低人力成本和库存管理成本。此外,系统能够提升药品的流通效率,减少过期药品和库存积压,帮助企业实现更高的运营效益。系统实施后,能够减少人工管理的繁琐流程,提升药店的运营效率,从而带来更好的经济回报。

      1. 操作可行性

从操作角度来看,药品管理系统的用户界面友好,操作流程简便,能够满足管理员、员工和顾客用户的不同需求。管理员能够轻松地管理药品信息、库存、订单和用户数据,系统内置的权限管理功能保证了不同角色的操作权限与安全性。员工能够快速录入药品信息、处理入库和损坏信息,确保药品流通的高效性。顾客则能够在平台上方便地浏览药品信息、下单、查看订单及配送状态。系统的设计兼顾了易用性与功能性,经过充分测试,能够满足各类用户的实际操作需求。

    1. 系统功能需求分析

本文将对系统按照角色模块进行需求分析。UML(统一建模语言)用例图是需求分析阶段常用的工具,通过直观的图形方式表示系统的功能需求和参与者。每个用例图包含一系列用例,即系统能够执行的特定功能,以及与之交互的参与者。根据用户分析,本基于深度学习的药店药品管理系统可以划分为顾客用户角色和管理员角色及员工用户,各角色的用例图如下所示。

  1. 顾客用户角色用例

本基于深度学习的药店药品管理系统的顾客用户角色模块主要包含注册登录、首页、公告信息、行业资讯、药品信息、商城管理(我的购物车、我的订单、我的地址)、我的账户、个人中心(个人首页、订单配送、收藏)等功能。顾客用户角色用例图如下图3.1 所示。

图3.1  顾客用户角色用例图

  1. 管理员角色用例

本基于深度学习的药店药品管理系统的管理员角色模块则涵盖了登录、首页、系统用户(管理员、顾客用户、员工用户)、药品分类管理、药品库存管理、入库信息管理、损坏信息管理、系统管理(轮播图管理)、公告信息管理、资源管理(行业资讯、资讯分类)、商城管理(药品信息、分类列表、订单列表、订单配送)等功能。管理员角色用例图如下图3.2 所示。

图3.3  管理员角色用例图

  1. 员工角色用例

本基于深度学习的药店药品管理系统的管理员角色模块则涵盖了登录、首页、药品分类管理、药品库存管理、入库信息管理、损坏信息管理、商城管理(药品信息、分类列表、订单列表、订单配送)等功能。员工角色用例图如下图3.2 所示。

图3.3 员工角色用例图

    1. 非功能需求分析

系统非功能需求指的是性能需求,对一个系统的性能需求进行分析和定义的过程。在进行性能需求分析时,因此基于深度学习的药店药品管理系统设计与实现主要需要考虑以下几个方面的性能需求:

响应时间:响应时间是指系统在接收到请求后,作出响应的时间。根据具体的业务需求和用户体验要求,可以确定系统在不同场景下的响应时间要求。

吞吐量:吞吐量是指系统在一定时间内处理的事务或请求的数量。根据业务需求和用户量的估计,可以确定系统需要支持的最大吞吐量。

并发用户数:并发用户数是指系统在同时使用的用户数量。根据预期的用户量和并发访问需求,可以确定系统需要支持的最大并发用户数。

可扩展性:可扩展性是指系统在面对用户量增加或并发访问需求增加时,能否通过增加硬件资源或调整系统架构来满足需求。根据预期的用户增长和扩展计划,可以确定系统需要具备的可扩展性要求。

药品分类能力:系统对故障的处理能力是指在出现错误或故障时,系统能够快速、准确地识别、定位并处理故障的能力。根据业务的重要性和对药品分类的要求,可以确定系统需要具备的药品分类能力。

安全性:系统在性能需求分析中,也需考虑安全方面的需求,如数据的保密性、完整性和可用性等。根据具体的安全需求和合规要求,可以确定系统需要满足的安全性需求。

通过对这些性能需求进行详细分析和定义,可以为基于深度学习的药店药品管理系统的设计和开发提供指导,确保系统在满足预期的性能需求的同时,具备良好的性能和可靠性。

  1. 系统设计
    1. 系统架构设计

从技术角度来看,基于深度学习的药店药品管理系统的架构设计至关重要。我们将采用MVC架构,包括表现层、业务逻辑层和数据访问层。表现层负责用户界面展示,业务逻辑层处理核心功能逻辑,数据访问层负责数据库交互。通过三层架构模式,确保系统的可靠性和可扩展性。系统架构图如图4-1所示。

图4-1 系统架构图

    1.  系统总体流程设计
      1.  用户登录流程

用户输入用户名和密码后,系统先检查输入是否为空,再验证用户名是否存在,若存在则通过用户名获取密码并校验。若密码正确则登录成功,否则提示密码错误。若用户名不存在或无法登录,提示用户操作无效。如图4-2所示。

图4-2 登录流程图

      1.  添加信息流程

管理员可以添加信息,用户添加可以自己权限内的信息,输入信息后,要想利用这个软件来进行系统的安全管理,首先需要登录到该软件中。添加信息流程如图4.3所示。

图4-3  添加信息流程图

      1.  修改信息流程

用户首先选择需要修改的记录,输入修改后的数据,系统判断输入数据是否合法。若数据不合法,提示重新输入;若数据合法,则将修改后的数据写入数据库,完成操作后流程结束。修改信息流程图如图4.4所示。

图4-4  修改信息流程图

      1.  删除信息流程

用户选择需要删除的记录后,系统判断是否确认删除。若未确认,返回选择环节;若确认删除,则更新数据库,删除对应记录,完成操作后流程结束。删除信息流程图如图4.5所示。

图4-5  删除信息流程图

    1. 功能模块设计

功能模块设计根据系统需求进行划分,主要包括用户管理、药品管理、订单管理、公告信息、资源管理等模块。用户管理模块支持管理员、员工和顾客用户的权限分配与操作控制,确保系统安全性和数据隔离。药品管理模块涵盖药品信息录入、分类管理、库存监控等功能,确保药品信息准确更新。订单管理模块实现订单的创建、查询、配送等流程,提升购物体验。公告和资源管理模块则负责及时发布平台通知与行业资讯,保障信息流畅传递。各模块通过清晰的功能分配和权限控制确保系统的高效运行。系统总体功能模块图如下图所示。

图4-2 系统功能模块图

    1. 数据库设计
      1. 概念设计

借助先进的系统,E-R图使其他用户可以快速轻松地了解系统的功能以及他们之间的关系。根据基于深度学习的药店药品管理系统分析结果,系统总体E-R图如下图所示。

图4-3 系统总体E-R图

      1. 逻辑设计

所有系统的应用数据相互区分。一旦在相应的系统中实现,它们将与自己相应的网络和服务器通信。所以这个系统可以连接这些数据。当我们选择桥梁截面时,以下将简要介绍如何建立系统。在单击上一个按键的时候,就会自动在对话框中弹出数据源的名字,之后再单击下一个按键时,就在填写相对应的身份验证和登录信息。按照系统功能设计的特点与职能模块的分类,基于深度学习的药店药品管理系统的总体设计和实施过程一共涉及到了几个资料表格。

根据E-R图,建立各个实体的数据表。由于本系统数据库数据表数量较多,所以只选取部分表单作为案列,如下所示:

表 4-1-cart(购物车)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

cart_id

int

购物车ID

2

title

varchar

64

标题

3

img

varchar

255

图片

4

user_id

int

用户ID

5

create_time

timestamp

创建时间

6

update_time

timestamp

更新时间

7

state

int

状态

8

price

double

单价

9

price_ago

double

原价

10

price_count

double

总价

11

num

int

数量

12

goods_id

mediumint

商品id

13

type

varchar

64

商品分类

14

description

varchar

255

描述

表 4-2-classification_of_drugs(药品分类)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

classification_of_drugs_id

int

药品分类ID

2

employee_user

int

员工用户

3

drug_category

varchar

64

药品类别

4

create_time

datetime

创建时间

5

update_time

timestamp

更新时间

表 4-3-customer_user(顾客用户)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

customer_user_id

int

顾客用户ID

2

customer_name

varchar

64

顾客姓名

3

customer_gender

varchar

64

顾客性别

4

customers_mobile_phone

varchar

16

顾客手机

5

home_address

varchar

64

家庭住址

6

examine_state

varchar

16

审核状态

7

user_id

int

用户ID

8

create_time

datetime

创建时间

9

update_time

timestamp

更新时间

表 4-4-drug_information(药品信息)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

drug_information_id

int

药品信息ID

2

employee_user

int

员工用户

3

drug_name

varchar

64

药品名称

4

production_date

date

生产日期

5

shelf_life

varchar

64

保质期限

6

name_of_manufacturer

varchar

64

厂家名称

7

collect_len

int

收藏数

8

comment_len

int

评论数

9

cart_title

varchar

125

标题

10

cart_img

text

65535

封面图

11

cart_description

varchar

255

描述

12

cart_price_ago

double

原价

13

cart_price

double

卖价

14

cart_inventory

int

商品库存

15

cart_type

varchar

64

商品分类

16

cart_content

longtext

4294967295

正文

17

cart_img_1

text

65535

主图1

18

cart_img_2

text

65535

主图2

19

cart_img_3

text

65535

主图3

20

cart_img_4

text

65535

主图4

21

cart_img_5

text

65535

主图5

22

cart_integral

int

积分

23

create_time

datetime

创建时间

24

update_time

timestamp

更新时间

表 4-5-employee_user(员工用户)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

employee_user_id

int

员工用户ID

2

employee_no

varchar

64

员工工号

3

employee_name

varchar

64

员工姓名

4

employee_gender

varchar

64

员工性别

5

home_address

varchar

64

家庭住址

6

employee_phone

varchar

16

员工电话

7

id_number

varchar

90

身份证号

8

examine_state

varchar

16

审核状态

9

user_id

int

用户ID

10

create_time

datetime

创建时间

11

update_time

timestamp

更新时间

表 4-6-order(订单)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

order_id

int

订单ID

2

order_number

varchar

64

订单号

3

goods_id

mediumint

商品ID

4

title

varchar

255

商品标题

5

img

varchar

255

商品图片

6

price

double

价格

7

price_ago

double

原价

8

num

int

数量

9

price_count

double

总价

10

norms

varchar

255

规格

11

type

varchar

64

商品分类

12

contact_name

varchar

32

联系人姓名

13

contact_email

varchar

125

联系人邮箱

14

contact_phone

varchar

11

联系人手机

15

contact_address

varchar

255

收件地址

16

postal_code

varchar

9

邮政编码

17

user_id

int

买家ID

18

merchant_id

mediumint

商家ID

19

create_time

timestamp

创建时间

20

update_time

timestamp

更新时间

21

description

varchar

255

描述

22

state

varchar

16

订单状态

23

remark

text

65535

订单备注

24

delivery_state

varchar

16

发货状态

25

vip_discount

double

折扣

26

integral

int

积分

27

buy_type

tinyint

1-全额购买,2-积分兑换,3-钱包购买


  1. 系统实现
    1. 用户功能模块实现
      1. 用户登录界面

用户登录模块为前台用户提供安全快捷的访问方式。登录页面设计简洁明了,用户只需输入用户名及密码即可完成身份验证。登录成功后,用户将被重定向至系统首页页面。对于忘记密码的用户,提供了找回密码功能,通过邮箱或手机号接收重置链接,保障账户安全。用户登录界面如下图所示。

图5-1 用户登录界面    

      1. 行业资讯界面

行业资讯模块提供了药品相关的新闻、研究成果、市场趋势等信息,顾客可以在此获取最新的行业动态,了解新药发布、药品政策变化等重要新闻,帮助顾客在购买药品时做出更加专业的选择,提升其对药品市场的认知度。行业资讯界面如下图所示。

图5-2 行业资讯界面

      1. 药品信息界面

药品信息模块展示了平台上所有药品的详细资料,包括药品名称、成分、适应症、使用说明、价格及库存情况等,顾客可以根据需求进行筛选、搜索,并查看药品的详细描述与用户评价,方便选择和购买符合自己需求的药品。药品信息界面如下图所示。

图5-3药品信息界面

      1. 我的购物车界面

购物车功能允许顾客将心仪的药品添加到购物车中,方便进行统一结算,顾客可以随时查看购物车中的商品、修改商品数量、删除不需要的商品等,确保在购物过程中更加高效、便捷地管理选购商品,提升购物体验。我的购物车界面如下图所示。

图5-4我的购物车界面

      1. 订单配送界面

订单配送功能提供了顾客已购买药品的配送进度跟踪,顾客可以查看每个订单的当前配送状态,包括物流信息、预计送达时间等,确保顾客随时了解药品的配送进展,提升顾客对服务的满意度和信任感。订单配送界面如下图所示。

图5-5 订单配送界面

      1. 个人中心界面

用户个人中心功能提供了一个集成平台,顾客可以在此查看和编辑个人信息、管理订单状态、修改收货地址、查看收藏的药品等,确保用户能够方便快捷地进行账户管理和购物操作,同时提供了订单配送的实时跟踪和历史记录查询,提升了用户的个性化体验,使用户能够随时掌握自己的购物动态和账户信息,增强了平台的用户粘性和满意度。个人中心界面如下图所示。

图5-6 个人中心界面

    1. 管理员功能模块实现
      1. 后台首页界面

后台首页为管理员和员工提供了系统的整体视图,展示关键数据和操作入口,管理员可以在首页查看系统运行状态、药品销售情况、库存数据等信息,帮助进行及时决策与调整。员工则通过首页快速访问日常操作,如药品分类管理和订单配送等功能,确保工作效率。后台首页界面如下图所示。

图5-7 后台首页界面

      1. 药品分类管理界面

药品分类管理功能帮助管理员和员工管理药品的分类信息,确保药品在平台上按类型进行有效归类。管理员可以创建、修改和删除药品分类,员工则主要负责对药品进行分类编辑和维护,确保药品信息准确,便于用户快速查找和购买。药品分类管理界面如下图所示。

图5-8药品分类管理界面

      1. 药品库存管理界面

药品库存管理功能使管理员和员工能够实时跟踪药品的库存情况,包括库存数量、入库日期和销售状态。管理员可以对库存数据进行批量更新和调整,确保库存数据的准确性;员工则主要负责日常的库存检查、入库操作,并根据需求更新库存信息。药品库存管理界面如下图所示。

图5-9药品库存管理界面

      1. 入库信息管理界面

入库信息管理功能允许管理员和员工记录和管理药品入库的详细信息,包括供应商、入库数量、入库日期等,确保药品的来源清晰可追溯。管理员可以对入库信息进行审核和统计,员工则负责实际操作入库记录,确保库存信息的准确无误。入库信息管理界面如下图所示。

图5-10入库信息管理界面

      1. 系统用户界面

系统用户管理功能允许管理员对系统中的所有用户进行权限管理,包括管理员、顾客用户和员工用户的创建、编辑和删除。管理员可以为不同角色设置相应的访问权限,确保系统安全运行并保障数据的保密性和完整性,员工则无法直接操作用户权限,专注于药品管理和订单处理。系统用户界面如下图所示。

图5-11 系统用户界面

      1. 损坏信息管理界面

损坏信息管理功能为管理员和员工提供了对损坏药品的记录和处理方式,确保及时更新损坏药品的数据并进行相应的处理。管理员可以查看和审查损坏信息,决定是否进行赔偿或调整库存,员工则负责实际记录药品损坏情况并提交损坏报告。损坏信息管理界面如下图所示。

图5-12损坏信息管理界面

      1. 商城管理界面

商城管理功能允许管理员和员工对药品信息、药品分类、订单列表和配送状态进行全面管理。管理员可以修改药品的详细信息、删除不合格药品,并管理所有订单的状态。员工则主要负责药品信息的维护、分类列表更新以及订单的处理与配送,确保顾客体验流畅。商城管理界面如下图所示。

图5-13商城管理界面

  1. 系统测试
    1. 测试目的

测试是为了验证系统在功能、性能、安全性和用户体验等方面的表现。通过测试,可以发现并修复潜在的问题和缺陷,确保系统的正常运行和稳定性。功能验证确保各项功能按设计要求运行;性能评估评估系统的响应时间和并发处理能力;安全检测确保系统的身份认证和数据传输安全;用户体验评估提升界面友好性和操作流程;兼容性测试确保系统在不同设备和浏览器上的兼容性。通过全面的测试,系统将更可靠地支持用户需求,并提供优质的用户体验。

    1. 测试用例

对以下系统功能进行测试,具体测试功能如下表所示。

6-1 系统功能测试表

功能模块

测试内容

测试结果

用户管理模块

检查用户注册、登录、权限分配是否正常,用户信息是否正确保存

功能正常,用户信息保存无误

药品信息管理模块

验证药品信息的录入、编辑、删除、查询功能是否有效

功能正常,数据更新及时准确

药品库存管理模块

检查库存数量更新、库存报警、库存查询功能是否正常工作

库存信息实时更新,查询功能正常

订单管理模块

测试订单创建、支付、配送状态更新是否正常

订单创建和状态更新无异常

购物车管理模块

检查购物车的添加、删除、修改商品数量是否有效

购物车操作正常,商品信息准确

收货地址管理模块

测试添加、删除、修改收货地址功能是否正常

地址修改、删除功能正常

公告信息管理模块

验证公告信息的发布、编辑、删除、查看功能是否正常

公告功能正常,内容发布无误

资源管理模块

测试行业资讯、资讯分类的添加、编辑、删除、查询功能

资讯管理正常,分类设置准确

系统权限管理模块

检查管理员、员工、顾客不同权限的访问控制是否正确

权限管理正常,不同角色权限正确

订单配送模块

测试订单配送状态更新,查询配送进度是否准确及时

配送状态更新正常,配送信息准确

    1. 测试结果

系统功能测试结果表明,所有功能模块均按预期正常运行。用户管理模块能够顺利实现用户注册、登录及权限控制,且用户信息能够准确保存。药品信息管理和库存管理功能均能实时更新数据,确保库存信息的准确性。订单管理模块的创建、支付及配送状态更新操作无误,购物车、收货地址管理功能也能稳定运行。公告信息和资源管理模块能够正确发布和管理内容,且资讯分类设置无误。系统权限管理和订单配送模块的测试结果表明,权限分配精准,配送进度及时更新,整体系统功能稳定且高效。

  1. 结论

基于深度学习的药店药品管理系统,通过Django框架实现了药品的分类、库存管理、订单处理、用户管理等多项功能。Django作为后端开发框架,提供了高效的开发环境,确保了系统的稳定性和可扩展性。系统的核心功能包括药品信息的动态管理,顾客订单的实时跟踪以及库存的自动更新等,采用现代数据库技术支持数据的高效存储和查询。同时,通过深度学习算法的集成,系统能够更加智能地分析药品的需求趋势,优化库存管理和订单配送,从而提高药店运营效率。

在系统实施过程中,深度学习模型能够通过历史销售数据和顾客购买行为进行训练,自动调整库存策略,预测药品需求,减少库存积压和缺货现象。Django框架的强大支持使得系统架构清晰,功能模块独立,便于后续扩展和维护。通过这种系统化的管理方式,药店不仅能够提升药品的流通效率,还能为顾客提供更加便捷的购物体验。未来,随着深度学习技术的进一步发展,系统将能够实现更精细化的药品管理,推动药店业务的持续增长。

参考文献

  1. 黄维.基于B/S模式的虚拟网络实验室安全管理体系分析[J].信息系统工程,2024,(05):4-7.
  2. 张宇薇.HTML5在Web前端开发中的应用[J].集成电路应用,2024,41(04):274-276.
  3. 邱红丽,张舒雅.基于Django框架的web项目开发研究[J].科学技术创新,2021,(27):97-98.
  4. 段艺,涂伟忠.Django开发从入门到实践[M].机械工业出版社:202211.635.
  5. 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
  6. 肖睿,李鲲程,范效亮,等.MySQL数据库应用技术及实践[M].人民邮电出版社:202206.228.
  7. 明日科技.快速上手Python[M].化学工业出版社:202211.337.
  8. 明日科技.Python Web开发手册[M].化学工业出版社:202201.411.
  9. 曾浩.基于深度学习的图像识别算法优化与应用研究[J].家电维修,2025,(05):71-73.
  10. 戴英.基于深度学习的高中数学探究式教学实施策略[J].中学课程辅导,2025,(13):57-59.
  11. Bilal H ,Muhammad Y ,Ullah I , et al.Identification and diagnosis of chronic heart disease: A deep learning-based hybrid approach[J].Alexandria Engineering Journal,2025,124470-483.
  12. Saumyaranjan S .Blockchain-enabled traceability systems for supply chain quality management: empirical insights from pharmaceutical manufacturers[J].International Journal of Quality & Reliability Management,2025,42(5):1381-1410.
  13. Bayram F ,Akici A ,Apari M A , et al.Analysis of Adverse Events Associated With Dental Local Anaesthetics Using Food and Drug Administration Adverse Event Reporting System Data.[J].International dental journal,2025,75(3):1705-1712.
  14. 刘子荣,朱洪,颜俊.实验室信息管理系统在药品标准物质管理中的应用[J].中国药物经济学,2025,20(02):108-110+115.
  15. 徐建军,雷铃伟,王丽,等.高校实验室药品管理系统的开发与应用[J].湖北工程学院学报,2024,44(06):47-49.
  16. 张睿.实验室信息化管理系统在药品检验中的应用探讨[J].实验室检测,2024,2(01):83-87.
  17. 林杰茹,常惠礼,冯汨,等.移动药师协同管理系统在住院药品调剂中的应用研究[J].今日药学,2024,34(01):67-73.
  18. 谭康康,胡支滨,韩阳,等.药店药品信息管理系统的设计及优化[J].华北理工大学学报(自然科学版),2023,45(02):104-109.
  19. 赵艳霞,马克民,周维利,等.实验室信息管理系统在药品标准管理中的应用[J].中国药业,2022,31(11):14-16.
  20. 张宇,胡丽娜,游海鸿.药品管理系统升级中的经验与体会[J].中国新通信,2022,24(09):46-48.

 


致  谢

大学生活即将结束,我怀着满心的感激之情,向那些在我的学习和成长过程中给予支持和帮助的每一位表达衷心的感谢。特别要感谢我的导师,在选题阶段为我提供了宝贵的意见,在毕业设计期间给予我悉心的指导和建议,让我能够顺利完成论文。导师严谨的学术态度和不懈的努力深深地启发了我,使我受益匪浅。

四年来,老师们的教诲让我收获了丰富的知识和智慧,他们耐心细致的教学风格让我对专业知识有了更深的理解。感谢所有曾经给予我支持的学者和朋友们,正是他们的研究成果和无私帮助,才让我能够顺利地进行研究并完成论文。在此过程中,同学们也给予了我很多帮助,不论是论文写作还是排版方面,他们的支持让我在完成任务时更加顺利。每一位曾在大学里与我并肩前行的人,都为我留下了深刻的回忆。最后,我要特别感谢我的父母,感谢他们的无私支持与鼓励,以及辅导员、班长和室友们的理解与关怀,他们让我始终保持积极乐观的心态,勇敢面对未来。尽管我的论文仍有不足之处,但我会继续努力完善,并期待得到各位老师和同学的宝贵建议。


附 录

系统关键代码

登录代码如下:

 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))

注册代码如下:

    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))

找回密码代码如下:

 def Forget_password(self, ctx):

        print("===================修改密码=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "用户信息不能没有"

            }

        }

        body = ctx.body

        if not body["code"]:

            return {

                "error": {

                    "code": 70000,

                    "message": "验证码不存在或者错误"

                }

            }

        obj = service_select("user").Get_obj(

            {"username": body["username"]}, {"like": False}

        )

        if not obj:

            return {

                "error": {

                    "code": 70000,

                    "message": "用户名不存在或者错误"

                }

            }

        password = md5hash(body["password"])

        if not password:

            return {

                "error": {

                    "code": 70000,

                    "message": "密码不存在或者错误"

                }

            }

        bl = service_select("user").Set({"user_id": obj["user_id"]}, {"password": password})

        if bl:

            ret = {"result": {"bl": True, "message": "修改成功"}}

        else:

            ret = {

                "error": {

                    "code": 70000,

                    "message": "修改失败",

                }

            }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

修改密码代码如下:

 def Change_password(self, ctx):

        print("===================修改密码=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "账号未登录",

            }

        }

        request = ctx.request

        headers = request.headers

        if ("x-auth-token" in headers) and headers["x-auth-token"]:

            token = headers["x-auth-token"]

            user_id = tokenGetUserId(token, request)

            userService = service_select("user")

            body = ctx.body

            password = md5hash(body["o_password"])

            obj = userService.Get_obj({"user_id": user_id, "password": password}, {"like": False})

            if obj:

                password = md5hash(body["password"])

                bl = userService.Set({"user_id": user_id}, {"password": password})

                if bl:

                    ret = {"result": {"bl": True, "message": "修改成功"}}

                else:

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "修改失败",

                        }

                    }

            else:

                ret = {

                    "error": {

                        "code": 70000,

                        "message": "密码错误",

                    }

                }

        else:

            ret = {

                "error": {

                    "code": 70000,

                    "message": "账户未登录",

                }

            }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

增删查改代码如下:

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": "已存在"}}

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}

def Set(self, ctx):

error = self.Set_before(ctx)

if error["code"]:

return {"error": error}

error = self.Events("set_before", ctx, None)

if error["code"]:

return {"error": error}

query = ctx.query

if 'page' in query.keys():

del ctx.query['page']

if 'size' in query.keys():

del ctx.query['size']

if 'orderby' in query.keys():

del ctx.query['orderby']

result = self.service.Set(ctx.query, ctx.body, self.config)

if self.service.error:

return {"error": self.service.error}

res = self.Set_after(ctx, result)

if res:

result = res

res = self.Events("set_after", ctx, result)

if res:

result = res

return {"result": result}

查多条数据:

def Get_list(self, ctx):

query = dict(ctx.query)

config_plus = {}

if "field" in query:

field = query.pop("field")

config_plus["field"] = field

if "page" in query:

config_plus["page"] = query.pop("page")

if "size" in query:

config_plus["size"] = query.pop("size")

if "orderby" in query:

config_plus["orderby"] = query.pop("orderby")

if "like" in query:

config_plus["like"] = query.pop("like")

if "groupby" in query:

config_plus["groupby"] = query.pop("groupby")

count = self.service.Count(query)

lst = []

if self.service.error:

return {"error": self.service.error}

elif count:

lst = self.service.Get_list(query,

obj_update(self.config, config_plus))

if self.service.error:

return {"error": self.service.error}

self.interact_list(ctx, lst)

return {"result": {"list": lst, "count": count}}

查一条数据:

def Get_obj(self, ctx):

query = dict(ctx.query)

config_plus = {}

if "field" in query:

field = query.pop("field")

config_plus["field"] = field

obj = self.service.Get_obj(query, obj_update(self.config, config_plus))

if self.service.error:

return {"error": self.service.error}

if obj:

self.interact_obj(ctx, obj)

return {"result": {"obj": obj}}

【关注博主 →免费赠送完整源码+数据库】

【关注博主 →免费赠送完整源码+数据库】

【关注博主 →免费赠送完整源码+数据库】

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐