目 录
摘 要
本平台采用Python语言开发,依托Django框架构建,旨在为校医院提供一个全面、高效的药品信息管理系统。平台集成了药品信息、盘点记录、入库出库、采购计划、供应商信息等多方面的管理功能。通过信息化手段,实现了药品信息的快速查询、统计和分析,大大提高了药品管理的效率。同时,系统对药品的入库、出库、盘点等流程进行了规范化管理,确保了药品数据的准确性和一致性。
在自动化方面,平台能够自动生成采购计划、入库单、出库单等文档,减少了人工操作的时间和错误率。安全性方面,系统采用了严格的权限管理机制,确保了药品信息的安全性和保密性。只有经过授权的用户才能访问和操作相关数据,有效防止了数据泄露和滥用。此外,平台还注重易用性设计,界面简洁明了,操作便捷方便。用户无需具备专业的计算机知识,即可轻松上手使用。
综上所述,基于Python和Django框架的校医院药品信息管理平台,以信息化、规范化、自动化、安全性和易用性为特点,为校医院提供了一个全面、高效的药品管理工具,有效提升了药品管理的水平和效率。
关键字:Python语言、Django框架、药品信息、盘点记录、入库出库;
The platform is developed in Python language and built on Django framework, aiming to provide a comprehensive and efficient drug information management system for school hospitals. The platform integrates drug information, inventory records, storage and delivery, procurement plan, supplier information and other management functions. Through information means, the rapid query, statistics and analysis of drug information are realized, and the efficiency of drug management is greatly improved. At the same time, the system has standardized management of the warehousing, storage, inventory and other processes to ensure the accuracy and consistency of drug data.
In terms of automation, the platform can automatically generate documents such as purchase plan, warehousing order, and outbound order, reducing the time and error rate of manual operation. In terms of safety, the system adopts a strict authority management mechanism to ensure the safety and confidentiality of drug information. Only authorized users can access and operate relevant data, effectively preventing data leakage and abuse. In addition, the platform also pays attention to the ease of use design, the interface is simple and clear, convenient to operate. Users need not have professional computer knowledge, it can be easy to use.
To sum up, the school-hospital drug information management platform based on Python and Django framework, characterized by information, standardization, automation, safety and ease of use, provides a comprehensive and efficient drug management tool for the school hospital, and effectively improves the level and efficiency of drug management.
Keywords: Python language, Django framework, drug information, inventory record, storage and storage;
1 绪 论
-
- 研究背景与意义
在当今医疗领域,随着校医院服务范围的扩大和医疗需求的增加,药品管理成为了一项复杂而关键的任务。传统的药品管理方式,如手工记录、纸质文档等,已经难以适应现代医疗体系对效率、准确性和安全性的高要求。校医院作为学校师生健康的重要保障,其药品管理的水平直接影响到医疗服务的质量和患者的满意度。在实际操作中,校医院药品管理面临着诸多挑战。药品种类繁多,数量庞大,管理起来极为繁琐。采购、入库、出库、盘点等环节涉及的信息量大,流程复杂,容易出现错误和疏漏。同时,各部门之间的信息沟通不畅,导致药品管理效率低下,采购计划不合理,库存积压或短缺现象时有发生。
为了解决这些问题,开发一套基于Python和Django框架的校医院药品信息管理平台显得尤为重要。这一平台的出现,将极大地改变传统的药品管理方式,实现药品管理的自动化、智能化和透明化。通过信息化手段,平台能够快速准确地记录、查询和分析药品信息,提高药品管理的效率。同时,平台还能对药品的采购、入库、出库、盘点等环节进行全程监控,确保药品的来源可靠、质量合格、存储条件符合要求,从而有效保障患者的用药安全。
此外,校医院药品信息管理平台的建立还有助于优化药品库存管理。平台能够实时掌握药品库存情况,合理制定采购计划,避免药品积压或缺货现象的发生,降低库存成本。这对于提高校医院的经济效益和运营效率具有重要意义。
总的来说,基于Python的校医院药品信息管理平台的研究不仅是为了解决当前药品管理中存在的问题,更是为了适应现代医疗体系的发展需求,提升校医院药品管理的水平和效率,保障患者的用药安全,提高医疗服务的质量和患者的满意度。这一平台的出现,将为校医院的药品管理带来全新的变革和发展机遇。
随着信息技术的飞速发展,校医院药品信息管理平台的建设在全球范围内日益受到重视。基于Python和Django框架的药品信息管理平台,凭借其强大的功能和灵活的扩展性,成为了众多校医院信息化建设的首选。
在国外,校医院药品信息管理平台的发展起步较早,技术相对成熟。许多发达国家的高校校医院已经建立了完善的药品信息管理系统,实现了药品采购、入库、出库、盘点等全链条的信息化管理。这些系统不仅提高了药品管理的效率,还确保了药品的质量和安全。Django框架作为一款流行的Python Web框架,因其快速开发、安全性高、可维护性强等特点,被广泛应用于国外校医院药品信息管理平台的建设中。
相比之下,国内校医院药品信息管理平台的建设虽然起步较晚,但近年来也取得了显著进展。随着国家对医疗信息化建设的重视和投入增加,越来越多的校医院开始意识到信息化管理的重要性,并积极引入基于Python和Django框架的药品信息管理平台。这些平台不仅涵盖了药品的基本信息管理,还实现了与采购、库存、财务等系统的无缝对接,为校医院提供了全面的信息化管理解决方案。
在国内外校医院药品信息管理平台的建设中,Django框架都发挥了重要作用。它提供了丰富的工具和库,帮助开发者快速构建高效的Web应用。同时,Django框架还支持多种数据库系统,如MySQL、PostgreSQL等,为药品信息管理平台提供了强大的数据存储和查询能力。
此外,随着移动互联网技术的普及,国内外校医院药品信息管理平台也开始向移动端延伸。通过开发移动应用或微信小程序等,校医院可以为师生提供更加便捷的药品信息查询和预约服务。这不仅提高了师生的就医体验,也进一步推动了校医院药品信息管理平台的普及和应用。
综上所述,基于Python和Django框架的校医院药品信息管理平台在国内外均得到了广泛应用和发展。未来,随着技术的不断进步和医疗信息化建设的深入推进,这一平台将在校医院药品管理中发挥更加重要的作用。
1.3 主要研究内容
在开发校医院药品信息管理平台时,后端采用了Python作为编程语言,并利用了Django框架,这使得复杂的业务逻辑和数据操作得以高效完成。与此同时,系统的数据存储和管理通过MySQL数据库实现。结合Vue.js作为前端框架,具有数据绑定和组件化的特点,能够有效地提升用户体验和开发效率。在开发工具的选取上,使用了eclipse,它的强大功能和易用性使得编程工作更为高效;而Navicat作为数据库管理工具,使得数据库操作更为方便和快捷。这样的技术选择,确保了管理系统的开发流程既高效又稳定。本系统主要实现包括系统用户、通知公告管理、供应商信息管理、药品信息管理、盘点记录管理、入库记录管理、出库记录管理、采购计划管理、采购订单管理、权限管理等功能进行管理。
2 相关技术介绍
Python是一种广泛使用的高级编程语言,由Guido van Rossum于1991年首次发布。它是一种解释型语言,意味着代码在运行时被逐行解释执行,而非事先编译成机器码。Python以其简洁、清晰、易读的语法而著称,被誉为“最易学的编程语言”之一[1]。
Python的设计哲学强调代码的可读性和简洁性,鼓励程序员使用清晰的表达方式。这种设计使得Python代码通常比其他语言更短、更易理解。此外,Python拥有丰富的标准库和第三方库,涵盖了从网络编程到文本处理、从数据分析到图形界面开发等多个领域,极大地扩展了其应用范围。
Python是一种动态类型语言,允许变量在运行时改变类型。这种灵活性使得Python在快速原型开发和脚本编写方面非常受欢迎。同时,Python也支持面向对象编程、函数式编程和过程式编程等多种编程范式,为程序员提供了丰富的编程选择[2]。
Python的跨平台性也是其一大亮点。Python代码可以在Windows、Linux、macOS等多种操作系统上无缝运行,无需进行额外的修改。这使得Python成为跨平台应用开发的理想选择。
总之,Python以其简洁的语法、丰富的库资源、强大的跨平台能力以及灵活的编程范式,成为了众多程序员的首选编程语言。无论是初学者还是经验丰富的开发者,都能从Python中找到适合自己的编程乐趣和职业发展机会。
Django是一个用Python编写的高级Web框架,它遵循MVC(Model-View-Controller)设计模式,但更准确地说是MVT(Model-View-Template)模式,其中Template对应于MVC中的Controller的部分职责,专注于页面的渲染。Django的主要目标是让开发者能够用更少的代码,快速构建安全、可维护且功能完备的网站[3]。
Django框架提供了丰富的内置功能,如ORM(对象关系映射)、用户认证、权限管理、会话机制、Admin管理站点等,极大地简化了Web开发的复杂性。其强大的可扩展性和组件化设计,使得开发者可以轻松地添加新的功能或集成第三方插件,满足项目的特定需求[4]。
此外,Django拥有完善的文档和活跃的社区支持,为开发者提供了丰富的资源和帮助。无论是初学者还是经验丰富的开发者,都能通过Django框架快速上手并开发出高质量的Web应用。
Mysql的语言是非结构化的,用户可以在数据上进行工作。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。并且因为Mysql的语言和结构比较简单,但是功能和存储信息量很强大,所以得到了普遍的应用[5]。
Mysql数据库在编程过程中的作用是很广泛的,为用户进行数据查询带来了方便。Mysql数据库的应用因其灵活性强,功能强大,所以在实现某功能时只需要一小段代码,而不像其他程序需要编写大段代码。总体来说,Mysql数据库的语言相对要简洁很多。
数据流程分析主要就是数据存储的储藏室,它是在计算机上进行的,而不是现实中的储藏室。数据的存放是按固定格式,而不是无序的,其定义就是:长期有固定格式,可以共享的存储在计算机存储器上。数据库管理主要是数据存储、修改和增加以及数据表的建立。为了保证系统数据的正常运行,一些有能力的处理者可以进行管理而不需要专业的人来处理。数据表的建立,可以对数据表中的数据进行调整,数据的重新组合及重新构造,保证数据的安全性。介于数据库的功能强大等特点,本系统的开发主要应用了Mysql进行对数据的管理。
3 系统分析
系统分析是对系统开发的可行性进行研究,分析功能需求以确保系统满足用户期望。系统用例设计将明确定义系统与外部用户的交互场景,系统流程规划则细化系统内部功能流程,确保系统各模块协调工作。通过系统分析,可以建立清晰的系统框架,明确系统目标和功能,为系统开发和实施奠定基础。
3.1.1 技术可行性
技术方面,Python语言以其简洁易懂的语法和强大的库支持,成为开发高效应用的首选。Django框架作为Python的Web开发框架,成熟稳定,提供了丰富的开发工具和库,能够快速构建出高效、安全的药品信息管理平台。加之技术社区活跃,遇到问题时可迅速获得技术支持,为平台的顺利开发提供了有力保障。
经济方面,基于Python和Django的开发成本相对较低,且Django框架的开源特性使得软件许可费用大大降低。平台实施后,将极大地提高药品管理的效率,减少人工错误,降低管理成本。长远来看,这将为校医院药品信息管理节省大量的人力物力成本,提高整体经济效益。
社会方面,平台的使用将极大提升校医院药品管理的服务水平和效率,保障师生的用药安全,提高就医满意度。同时,平台的信息化、透明化管理也有助于增强校医院的公信力和形象,促进医患之间的和谐与信任。这将为校医院赢得更好的社会声誉,为师生提供更加优质的医疗服务。
因此,从技术、经济和社会方面来看,构建校医院药品信息管理平台具有较高的可行性,能够为企业带来多方面的益处。
校医院药品信息管理平台通过不同角色的功能模块,实现对校医院药品信息管理服务的全面管理。药剂用户、采购用户和管理员各自的功能模块互相配合,共同构建了一个高效、透明的校医院药品信息管理服务管理体系。通过详细分析这些功能模块,可以帮助企业更好地理解和实施校医院药品信息管理服务管理系统,提高校医院药品信息管理服务管理的效率和准确性。具体功能分析如下:
(1)药剂用户:
登录注册:药剂用户可以注册账号并登录系统,进行后续操作。
后台首页:提供药剂用户操作界面的入口和概览信息。
通知公告管理:查看和管理系统发布的通知公告。
药品信息管理:查询、添加、修改和删除药品信息。
盘点记录管理:记录和管理药品的盘点情况,包括盘点时间和结果。
入库记录管理:记录和管理药品的入库信息,如入库时间、数量等。
出库记录管理:记录和管理药品的出库信息,如出库时间、领用人等。
(2)采购用户:
登录注册:采购用户可以注册账号并登录系统,进行采购相关操作。
后台首页:提供采购用户操作界面的入口和采购相关概览信息。
通知公告管理:查看和管理系统发布的与采购相关的通知公告。
供应商信息管理:查询、添加、修改和删除供应商信息。
药品信息管理:查看药品信息,以便制定采购计划。
采购计划管理:制定、修改和查看采购计划。
采购订单管理:创建、查看和管理采购订单。
(3)管理员:
登录:管理员通过登录系统,获得管理平台的访问权限。
后台首页:提供管理员操作界面的入口和系统概览信息。
系统用户:管理所有系统用户,包括药剂用户、采购用户等,进行增删改查操作。
通知公告管理:发布、修改和删除系统通知公告。
供应商信息管理:全面管理供应商信息,确保采购顺利进行。
药品信息管理:对药品信息进行全面管理,包括添加新品种、更新信息等。
盘点记录管理:监督和管理药品的盘点记录,确保数据准确性。
入库记录管理:查看和管理所有药品的入库记录,确保库存准确。
出库记录管理:查看和管理所有药品的出库记录,追踪药品流向。
采购计划管理:审核、修改和管理采购计划,确保采购合理。
采购订单管理:审核、查看和管理所有采购订单,确保采购流程顺畅。
权限管理:设置和管理不同用户的权限,确保系统安全。
非功能性分析旨在评估系统的非功能需求和性能要求。通过对性能、可靠性、安全性、可用性和扩展性等方面进行评估,确保平台能够满足用户和系统运行的要求。具体如下:
表2-1校医院药品信息管理平台非功能需求表
| 需求类型 | 描述 |
| 性能 | 系统应具有高性能,能够快速响应用户请求,保持稳定的性能水平,支持高并发访问和大规模数据处理。 |
| 可靠性 | 系统应具有高可靠性,确保系统稳定运行,防止系统故障和数据丢失,提供数据备份和恢复机制。 |
| 安全性 | 系统应具有高安全性,保护用户隐私信息和数据安全,采用加密传输技术、访问控制和身份验证机制。 |
| 可用性 | 系统应具有高可用性,保证系统全天候运行,最大限度减少系统故障和维护时间,提供灾备和故障转移功能。 |
| 易用性 | 系统应具有良好的易用性,用户界面设计友好,操作简单直观,提供清晰的指导和帮助文档。 |
| 可维护性 | 系统应具有良好的可维护性,易于维护和升级,提供模块化和结构化代码,方便开发人员进行维护和修改。 |
| 可扩展性 | 系统应具有良好的可扩展性,支持新增功能和模块的集成,具备良好的架构设计和扩展性能。 |
系统用例分析是对系统中各个功能模块的用户需求和行为进行分析,以识别和描述不同的用户用例。通过系统用例分析,可以深入了解用户在平台上的操作流程和交互方式,为系统设计和开发提供指导,并确保平台能够满足用户的需求和期望。
(1)药剂用户角色用例图如下图所示。

图3-1 药剂用户角色用例图
(2)采购用户角色用例图如下图所示。

图3-2 采购用户角色用例图
(3)管理员角色用例图如下图所示。

图3-3 管理员角色用例图
本章重点在对系统进行了可行性、功能需求、系统用例以及系统流程分析,旨在明确平台的功能要求。这些分析为系统的开发和测试提供了指导和标准,确保系统设计和实施符合用户需求。通过详细的分析,可以有效规划平台功能的实现方式,提供清晰的指引。同时,这些分析也有助于确保代码实现的质量和系统的稳定性,为系统的顺利上线和运行奠定基础。
4 系统总体设计
系统总体设计包括系统架构、数据库设计、用户界面设计等方面。通过三层架构模式,确保系统的可靠性和可扩展性。设计规范化的数据库结构,以存储和管理用户数据等信息。同时,注重用户界面的友好性和易用性,提供便捷的功能操作和良好的用户体验。总体设计的目标是实现一个稳定、安全、高效的系统,满足用户的需求。
在系统架构设计中,我将确定系统的整体结构和组件之间的关系。这包括选择适当的架构风格,划分系统的层次结构,并定义各个模块的职责和交互方式。架构图如下图所示。

图4-1系统架构设计图
表示层(Presentation Layer):负责与用户进行交互,将系统的功能和数据以易于理解和操作的方式展示给用户。通常包括用户界面、页面设计和用户输入验证等。
业务逻辑层(Business Logic Layer):处理系统的核心业务逻辑,包括对用户请求的处理、业务规则的执行以及数据的处理和转换。它独立于表现层和数据层,实现了业务逻辑的封装和复用。
数据层(Data Layer):负责数据的存储、访问和管理,包括数据库和持久化机制。数据层提供了对数据的增删改查操作,并与业务逻辑层进行交互,使系统能够有效地存储和检索数据。
这三个层次相互独立,通过明确的接口和协议进行通信,实现了系统的模块化和可扩展性。表现层负责将用户的请求传递给业务逻辑层,业务逻辑层处理请求并返回结果,最后数据层负责与数据库交互并提供数据支持。这种分层架构有助于实现系统的可维护性、灵活性和可测试性。
通过整体功能模块设计,我将根据需求分析的结果,将系统的功能划分为不同的模块。每个模块负责实现特定的功能,并与其他模块进行协作。我们将详细定义每个模块的输入、输出、处理逻辑和相互依赖关系。具体的功能模块图如图4-2所示。

图4-2 系统功能模块图
数据库设计是系统开发中至关重要的一环,它涉及到数据的组织、存储和管理。在数据库设计中,我将根据系统的需求设计数据库的概念结构和逻辑结构,包括定义实体、属性、关系和约束等[6]。
顶层数据流是指系统与外部实体之间的数据流动,描述了系统的整体数据流。在校医院药品信息管理平台中,顶层数据流涵盖用户信息录入、数据上传、系统处理分析、结果反馈、以及数据存档与追溯,确保信息流通高效且安全。
系统的顶层数据流图如下图所示。

图4-3系统数据流图(顶层)
底层数据流程图是对顶层数据流程图的细化,系统的底层数据流图如下图所示。

图4-4系统数据流图(底层)
4.3.2 数据库概念结构设计
数据库概念结构设计主要涉及数据库的实体和实体之间的关系。通过实体-关系模型或者其他适当的模型,我将定义系统中涉及的各个实体以及它们之间的联系。下面我将罗列主要的实体属性图和系统E-R图。
- 药剂用户实体属性如下图所示。

图4-5 药剂用户实体属性图
- 采购用户实体属性如下图所示。

图4-6 采购用户实体属性图
- 药品信息管理实体属性如下图所示。

图4-7 药品信息管理实体属性图
- 盘点记录实体属性如下图所示。

图4-8 盘点记录实体属性图
- 出库记录实体属性如下图所示。

图4-9 出库记录实体属性图
下面是整个校医院药品信息管理平台中主要的数据库表总E-R实体关系图。

图4-10 系统总E-R关系图
数据库表设计基于实体设计,将抽象的实体映射为具体的表结构。设计过程中,为每个实体定义表名、字段名及数据类型 。根据业务需求,合理定义主键、外键及约束条件,确保表之间的关联性,例如通过外键建立用户表和角色表之间的关系。表设计时注重数据存储的完整性、一致性,并通过索引优化查询效率,最终确保数据库结构能够支持系统的功能需求[7]。以下是系统的数据库表设计展示。
表 4-1-access_token(登陆访问时长)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | token_id | int | 是 | 是 | 临时访问牌ID | |
| 2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
| 3 | info | text | 65535 | 否 | 否 | 信息 |
| 4 | maxage | int | 是 | 否 | 最大寿命:默认2小时 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | user_id | int | 是 | 否 | 用户编号 |
表 4-2-auth(用户权限管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | auth_id | int | 是 | 是 | 授权ID | |
| 2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
| 3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
| 4 | table_name | varchar | 64 | 否 | 否 | 表名 |
| 5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
| 6 | path | varchar | 255 | 否 | 否 | 路由路径 |
| 7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
| 8 | parent_sort | int | 是 | 否 | 父级菜单排序 | |
| 9 | position | varchar | 32 | 否 | 否 | 位置 |
| 10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
| 11 | add | tinyint | 是 | 否 | 是否可增加 | |
| 12 | del | tinyint | 是 | 否 | 是否可删除 | |
| 13 | set | tinyint | 是 | 否 | 是否可修改 | |
| 14 | get | tinyint | 是 | 否 | 是否可查看 | |
| 15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
| 16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
| 17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
| 18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
| 19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
| 20 | option | text | 65535 | 否 | 否 | 配置 |
| 21 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-3-code_token(验证码)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | code_token_id | int | 是 | 是 | 验证码ID | |
| 2 | token | varchar | 255 | 否 | 否 | 令牌 |
| 3 | code | varchar | 255 | 否 | 否 | 验证码 |
| 4 | expire_time | timestamp | 是 | 否 | 失效时间 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-4-drug_information(药品信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | drug_information_id | int | 是 | 是 | 药品信息ID | |
| 2 | drug_number | varchar | 64 | 是 | 是 | 药品编号 |
| 3 | drug_name | varchar | 64 | 否 | 否 | 药品名称 |
| 4 | drug_specifications | varchar | 64 | 否 | 否 | 药品规格 |
| 5 | drug_dosage_form | varchar | 64 | 否 | 否 | 药品剂型 |
| 6 | drug_inventory | double | 否 | 否 | 药品库存 | |
| 7 | purchase_price | double | 否 | 否 | 采购价格 | |
| 8 | wholesale_price | double | 否 | 否 | 零售价格 | |
| 9 | drug_batch | varchar | 64 | 否 | 否 | 药品批次 |
| 10 | manufacturer | varchar | 64 | 否 | 否 | 生产厂家 |
| 11 | date_of_manufacture | date | 否 | 否 | 生产日期 | |
| 12 | validity_period | varchar | 64 | 否 | 否 | 有效期限 |
| 13 | drug_efficacy | varchar | 64 | 否 | 否 | 药品功效 |
| 14 | drug_introduction | text | 65535 | 否 | 否 | 药品简介 |
| 15 | inventory_records_limit_times | int | 是 | 否 | 盘点限制次数 | |
| 16 | storage_record_limit_times | int | 是 | 否 | 入库限制次数 | |
| 17 | outbound_record_limit_times | int | 是 | 否 | 出库限制次数 | |
| 18 | procurement_plan_limit_times | int | 是 | 否 | 计划限制次数 | |
| 19 | purchase_order_limit_times | int | 是 | 否 | 采购限制次数 | |
| 20 | create_time | datetime | 是 | 否 | 创建时间 | |
| 21 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-5-hits(用户点击)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | hits_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 否 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID |
表 4-6-inventory_records(盘点记录)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | inventory_records_id | int | 是 | 是 | 盘点记录ID | |
| 2 | drug_number | varchar | 64 | 否 | 否 | 药品编号 |
| 3 | drug_name | varchar | 64 | 否 | 否 | 药品名称 |
| 4 | drug_specifications | varchar | 64 | 否 | 否 | 药品规格 |
| 5 | drug_dosage_form | varchar | 64 | 否 | 否 | 药品剂型 |
| 6 | drug_batch | varchar | 64 | 否 | 否 | 药品批次 |
| 7 | drug_inventory | double | 否 | 否 | 药品库存 | |
| 8 | pharmaceutical_users | int | 否 | 否 | 药剂用户 | |
| 9 | pharmaceutical_worker_number | varchar | 64 | 否 | 否 | 药剂工号 |
| 10 | inventory_date | date | 否 | 否 | 盘点日期 | |
| 11 | physical_inventory | double | 否 | 否 | 盘点数量 | |
| 12 | reasons_for_differences | text | 65535 | 否 | 否 | 差异原因 |
| 13 | processing_status | varchar | 64 | 否 | 否 | 处理状态 |
| 14 | processing_results | text | 65535 | 否 | 否 | 处理结果 |
| 15 | create_time | datetime | 是 | 否 | 创建时间 | |
| 16 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 17 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 18 | source_id | int | 否 | 否 | 来源ID | |
| 19 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-7-notice_announcement(通知公告)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | notice_announcement_id | int | 是 | 是 | 通知公告ID | |
| 2 | announcement_number | varchar | 64 | 否 | 否 | 公告编号 |
| 3 | announcement_title | varchar | 64 | 否 | 否 | 公告标题 |
| 4 | announcement_date | date | 否 | 否 | 公告日期 | |
| 5 | announcement_image | varchar | 255 | 否 | 否 | 公告图片 |
| 6 | announcement_content | text | 65535 | 否 | 否 | 公告内容 |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-8-outbound_record(出库记录)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | outbound_record_id | int | 是 | 是 | 出库记录ID | |
| 2 | drug_number | varchar | 64 | 否 | 否 | 药品编号 |
| 3 | drug_name | varchar | 64 | 否 | 否 | 药品名称 |
| 4 | drug_specifications | varchar | 64 | 否 | 否 | 药品规格 |
| 5 | drug_dosage_form | varchar | 64 | 否 | 否 | 药品剂型 |
| 6 | drug_batch | varchar | 64 | 否 | 否 | 药品批次 |
| 7 | manufacturer | varchar | 64 | 否 | 否 | 生产厂家 |
| 8 | pharmaceutical_users | int | 否 | 否 | 药剂用户 | |
| 9 | pharmaceutical_worker_number | varchar | 64 | 否 | 否 | 药剂工号 |
| 10 | outbound_date | date | 否 | 否 | 出库日期 | |
| 11 | outbound_quantity | double | 否 | 否 | 出库数量 | |
| 12 | reason_for_outbound_shipment | text | 65535 | 否 | 否 | 出库原因 |
| 13 | create_time | datetime | 是 | 否 | 创建时间 | |
| 14 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 15 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 16 | source_id | int | 否 | 否 | 来源ID | |
| 17 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-9-pharmaceutical_users(药剂用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | pharmaceutical_users_id | int | 是 | 是 | 药剂用户ID | |
| 2 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 3 | user_gender | varchar | 64 | 否 | 否 | 用户性别 |
| 4 | contact_number | varchar | 16 | 否 | 否 | 联系电话 |
| 5 | pharmaceutical_worker_number | varchar | 64 | 是 | 是 | 药剂工号 |
| 6 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 7 | user_id | int | 是 | 否 | 用户ID | |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-10-procurement_plan(采购计划)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | procurement_plan_id | int | 是 | 是 | 采购计划ID | |
| 2 | plan_title | varchar | 64 | 否 | 否 | 计划标题 |
| 3 | drug_number | varchar | 64 | 否 | 否 | 药品编号 |
| 4 | drug_name | varchar | 64 | 否 | 否 | 药品名称 |
| 5 | drug_specifications | varchar | 64 | 否 | 否 | 药品规格 |
| 6 | purchasing_users | int | 否 | 否 | 采购用户 | |
| 7 | procurement_job_number | varchar | 64 | 否 | 否 | 采购工号 |
| 8 | planned_date | date | 否 | 否 | 计划日期 | |
| 9 | purchase_quantity | double | 否 | 否 | 采购数量 | |
| 10 | plan_content | text | 65535 | 否 | 否 | 计划内容 |
| 11 | create_time | datetime | 是 | 否 | 创建时间 | |
| 12 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 13 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 14 | source_id | int | 否 | 否 | 来源ID | |
| 15 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-11-purchase_order(采购订单)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | purchase_order_id | int | 是 | 是 | 采购订单ID | |
| 2 | order_number | varchar | 64 | 否 | 否 | 订单编号 |
| 3 | drug_number | varchar | 64 | 否 | 否 | 药品编号 |
| 4 | drug_name | varchar | 64 | 否 | 否 | 药品名称 |
| 5 | drug_specifications | varchar | 64 | 否 | 否 | 药品规格 |
| 6 | drug_dosage_form | varchar | 64 | 否 | 否 | 药品剂型 |
| 7 | purchase_price | double | 否 | 否 | 采购价格 | |
| 8 | purchasing_users | int | 否 | 否 | 采购用户 | |
| 9 | procurement_job_number | varchar | 64 | 否 | 否 | 采购工号 |
| 10 | supplier_name | varchar | 64 | 否 | 否 | 供应商名称 |
| 11 | purchase_quantity | double | 否 | 否 | 采购数量 | |
| 12 | total_order_price | double | 否 | 否 | 订单总价 | |
| 13 | delivery_date | date | 否 | 否 | 交货日期 | |
| 14 | order_status | varchar | 64 | 否 | 否 | 订单状态 |
| 15 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 16 | examine_reply | varchar | 16 | 否 | 否 | 审核回复 |
| 17 | create_time | datetime | 是 | 否 | 创建时间 | |
| 18 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 19 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 20 | source_id | int | 否 | 否 | 来源ID | |
| 21 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-12-purchasing_users(采购用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | purchasing_users_id | int | 是 | 是 | 采购用户ID | |
| 2 | purchase_name | varchar | 64 | 否 | 否 | 采购姓名 |
| 3 | purchasing_gender | varchar | 64 | 否 | 否 | 采购性别 |
| 4 | procurement_phone_number | varchar | 16 | 否 | 否 | 采购电话 |
| 5 | procurement_job_number | varchar | 64 | 是 | 是 | 采购工号 |
| 6 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 7 | user_id | int | 是 | 否 | 用户ID | |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-13-schedule(日程管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | schedule_id | smallint | 是 | 是 | 日程ID | |
| 2 | content | varchar | 255 | 否 | 否 | 日程内容 |
| 3 | scheduled_time | datetime | 否 | 否 | 计划时间 | |
| 4 | user_id | int | 是 | 否 | 用户ID | |
| 5 | create_time | datetime | 否 | 否 | 创建时间 | |
| 6 | update_time | datetime | 否 | 否 | 更新时间 |
表 4-14-score(评分)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | score_id | int | 是 | 是 | 评分ID | |
| 2 | user_id | int | 是 | 否 | 评分人 | |
| 3 | nickname | varchar | 64 | 否 | 否 | 昵称 |
| 4 | score_num | double | 是 | 否 | 评分 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 8 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 9 | source_id | int | 是 | 否 | 来源ID |
表 4-15-storage_record(入库记录)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | storage_record_id | int | 是 | 是 | 入库记录ID | |
| 2 | drug_number | varchar | 64 | 否 | 否 | 药品编号 |
| 3 | drug_name | varchar | 64 | 否 | 否 | 药品名称 |
| 4 | drug_specifications | varchar | 64 | 否 | 否 | 药品规格 |
| 5 | drug_dosage_form | varchar | 64 | 否 | 否 | 药品剂型 |
| 6 | drug_batch | varchar | 64 | 否 | 否 | 药品批次 |
| 7 | manufacturer | varchar | 64 | 否 | 否 | 生产厂家 |
| 8 | pharmaceutical_users | int | 否 | 否 | 药剂用户 | |
| 9 | pharmaceutical_worker_number | varchar | 64 | 否 | 否 | 药剂工号 |
| 10 | storage_date | date | 否 | 否 | 入库日期 | |
| 11 | inventory_quantity | double | 否 | 否 | 入库数量 | |
| 12 | reason_for_storage | text | 65535 | 否 | 否 | 入库原因 |
| 13 | create_time | datetime | 是 | 否 | 创建时间 | |
| 14 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 15 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 16 | source_id | int | 否 | 否 | 来源ID | |
| 17 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-16-supplier_information(供应商信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | supplier_information_id | int | 是 | 是 | 供应商信息ID | |
| 2 | supplier_name | varchar | 64 | 否 | 否 | 供应商名称 |
| 3 | suppliers_phone_number | varchar | 64 | 否 | 否 | 供应商电话 |
| 4 | supplier_address | varchar | 64 | 否 | 否 | 供应商地址 |
| 5 | supply_of_drugs | text | 65535 | 否 | 否 | 供应药品 |
| 6 | supplier_description | text | 65535 | 否 | 否 | 供应商描述 |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-17-upload(文件上传)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | upload_id | int | 是 | 是 | 上传ID | |
| 2 | name | varchar | 64 | 否 | 否 | 文件名 |
| 3 | path | varchar | 255 | 否 | 否 | 访问路径 |
| 4 | file | varchar | 255 | 否 | 否 | 文件路径 |
| 5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
| 6 | father_id | int | 否 | 否 | 父级ID | |
| 7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
| 8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-18-user(用户账户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | user_id | int | 是 | 是 | 用户ID | |
| 2 | state | smallint | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) | |
| 3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
| 4 | login_time | timestamp | 是 | 否 | 上次登录时间 | |
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
| 6 | phone_state | smallint | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) | |
| 7 | username | varchar | 16 | 是 | 否 | 用户名 |
| 8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 9 | password | varchar | 64 | 是 | 否 | 密码 |
| 10 | | varchar | 64 | 否 | 否 | 邮箱 |
| 11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) | |
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
| 14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-19-user_group(用户组)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | group_id | mediumint | 是 | 是 | 用户组ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 名称 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | register | smallint | 否 | 否 | 注册位置 | |
| 9 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
数据库设计是系统开发中的关键步骤,通过识别实体、建立关系、设计表结构、选择主键和索引等方式,确保数据存储和管理的有效性和一致性。同时,考虑安全性和性能优化,采用合适的规范化和反规范化技术,以提高系统的响应速度和用户体验。综合以上因素,数据库设计为系统的稳定运行和高效管理提供了基础支持。
5 系统详细设计与实现
系统关键模块设计与实现是系统开发中的核心任务。通过分析需求,设计和实现关键模块,确保系统功能的完整性和稳定性。在设计过程中,需要考虑模块之间的交互和数据流动,合理选择技术和框架,并进行测试和优化,以确保关键模块的高效运行和用户满意度。
5.1 药剂用户功能模块
5.1.1 用户后台首页界面
药剂用户登录后,会进入后台首页,这里提供了各种药品管理功能的快捷入口,以及药品库存、通知公告等概览信息。主界面展示如下图所示。

图5-1 用户后台首页界面图
用户注册功能允许新用户创建账户,系统会收集基本信息如用户名、密码、邮箱和角色(药剂用户、维护用户或管理员)。注册过程包括填写表单、验证邮箱、设置初始密码和分配角色。管理员可以审核和激活新账户,确保用户信息的准确性和系统安全性。其界面展示如下图所示。

图5-2 用户注册界面图
注册代码如下:
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-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))
5.1.4 通知公告管理界面
药剂用户可以查看系统发布的通知公告,了解医院或药房的最新动态,也可以参与公告的讨论或回复。其界面如下图所示。

图5-4通知公告管理界面图
药剂用户可以记录和管理药品的出库信息,包括出库时间、领用人员、出库数量等,方便追踪药品的流向和使用情况。其界面如下图所示。

图5-5出库记录管理界面图
药剂用户可以查询、添加、修改和删除药品信息,包括药品名称、规格、剂量、生产厂家、有效期等详细信息,确保药品信息的准确性和完整性。其界面如下图所示。

图5-6药品信息管理详情界面图
采购用户可以查询、添加、修改和删除供应商信息,包括供应商名称、联系方式、资质证明等,确保供应商信息的准确性和可靠性。主界面展示如下图所示。

图5-7供应商信息管理界面图
采购用户可以查看药品信息,了解药品的库存情况、价格变动等,以便制定合理的采购计划。其界面展示如下图所示。
药品信息管理

图5-8 药品信息管理界面图
采购用户可以创建、查看和管理采购订单,包括订单状态、订单金额、供应商信息等,方便追踪采购订单的执行情况。其界面如下图所示。

图5-9采购订单管理界面图
管理员管理用户信息、权限和行为。用户管理包括用户注册、登录、身份验证、权限控制、用户信息修改等操作。管理员可以查看和编辑用户信息,重置密码,激活或停用账户等。通过用户管理,系统可以确保数据安全性和用户身份真实性,同时实现个性化服务和定制化推荐。良好的用户管理设计能够简化用户操作流程,提高系统安全性和用户满意度,同时为系统运营提供有效支持。其界面如下图所示。

图5-10管理员系统用户界面图
增删查改代码如下:
增
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}
管理员可以对药品信息进行全面管理,包括添加新品种、更新药品信息、设置药品价格等,确保药品信息的准确性和完整性。其界面如下图所示。

图5-11药品信息管理界面图
管理员可以查看和管理所有药品的出库记录,包括出库时间、领用人员、出库数量等,方便追踪药品的流向和使用情况,防止药品流失或滥用。其界面如下图所示。

图5-12出库记录管理界面图
管理员可以审核、查看和管理所有采购订单,包括订单状态、订单金额、供应商信息等,确保采购订单的执行情况和合规性。其界面如下图所示。

图5-13采购订单管理界面图
管理员可以发布、修改和删除系统通知公告,确保医院或药房的最新动态能够及时传达给所有用户。其界面如下图所示。

图5-14通知公告管理界面图
6 系统测试
校医院药品信息管理平台测试的主要目的是确保系统功能正常、性能稳定、安全可靠。测试旨在验证系统各项功能是否按照需求规格书要求正常工作,检查系统的易用性和用户体验,确保用户能够顺利完成各项操作。此外,系统测试还旨在评估系统的性能指标,包括响应时间、并发能力等,以保证系统在高负载情况下仍能正常运行[8]。另外,安全测试也是重要的一部分,确保系统能够有效防范各类安全威胁和攻击。通过全面的系统测试,可以保障校医院药品信息管理平台的稳定性、可靠性和安全性。
系统测试旨在检验系统功能是否正常工作。通过功能测试用例的执行,可以有效评估系统功能的正确性、完整性和稳定性,帮助发现和解决潜在的功能缺陷,确保系统能够按照预期功能正常运行。功能测试用例包括用户注册、用户登录、药品信息管理录入、药品信息管理搜索、查看等。
| 测试用例编号 | 功能模块 | 测试用例描述 | 预期结果 |
| TC001 | 用户注册 | 输入有效的用户名、密码、邮箱和角色信息 | 注册成功,用户账户创建并收到验证邮件 |
| TC002 | 用户注册 | 输入已有用户名 | 注册失败,提示用户名已存在 |
表6-1 注册功能测试用例
| 测试用例编号 | 功能模块 | 测试用例描述 | 预期结果 |
| TC003 | 用户登录 | 输入正确的用户名和密码 | 登录成功,进入用户后台首页 |
| TC004 | 用户登录 | 输入错误的用户名或密码 | 登录失败,提示用户名或密码错误 |
| TC005 | 用户登录 | 输入注册邮箱,使用忘记密码功能 | 提示发送重置密码链接到邮箱 |
表6-2 登录功能测试用例
| 测试用例编号 | 功能模块 | 测试用例描述 | 预期结果 |
| TC006 | 药品信息管理录入 | 采购用户填写完整的药品信息管理信息录入 | 药品信息管理录入成功,生成唯一药品信息管理ID |
| TC007 | 药品信息管理录入 | 采购用户录入药品信息管理时缺少必要信息 | 药品信息管理录入失败,提示补充必要信息 |
表6-3 药品信息管理录入功能测试用例
| 测试用例编号 | 功能模块 | 测试用例描述 | 预期结果 |
| TC008 | 药品信息管理搜索 | 药剂用户选择所需药品信息管理并填写搜索信息 | 搜索提交成功,生成搜索记录并通知采购用户审核 |
| TC009 | 药品信息管理搜索 | 药剂用户提交搜索时缺少必要搜索信息 | 搜索提交失败,提示补充搜索信息 |
表6-4 药品信息管理搜索功能测试用例
| 测试用例编号 | 功能模块 | 测试用例描述 | 预期结果 |
| TC010 | 查看 | 采购用户查看搜索详情并批准药品信息管理搜索 | 审核成功,搜索状态更新为已批准 |
| TC011 | 查看 | 采购用户查看搜索详情并拒绝药品信息管理搜索 | 审核成功,搜索状态更新为已拒绝 |
表6-5 查看功能测试用例
6.3 测试结果
在本次测试中,系统对用户注册、用户登录、药品信息管理录入、药品信息管理搜索和查看等功能进行了详细测试。测试结果显示,用户注册功能在输入有效信息时能够成功创建账户并发送验证邮件,而在输入已有用户名时则提示用户名已存在。用户登录功能在输入正确凭据时能成功登录,在输入错误凭据时会提示错误信息。药品信息管理录入功能在填写完整信息时能够成功录入药品信息管理,而在缺少必要信息时则提示补充信息。药品信息管理搜索功能能够生成搜索记录并通知采购用户审核。查看功能能正确更新搜索状态,确保药品信息管理流程的正常运作。总体而言,所有测试用例均达到预期效果,系统功能表现稳定。
该平台有效提升了校医院药品管理的效率和准确性。通过Django框架的MVC设计模式,实现了药品信息的结构化存储和高效检索。平台集成了药品的入库、出库、库存查询、过期预警等功能,使得药品管理工作更加规范化和自动化。
在开发过程中,充分利用了Django框架的ORM技术,简化了数据库操作,提高了开发效率。同时,Django自带的admin后台管理系统为平台提供了强大的数据管理和维护功能,方便管理人员进行日常操作。
此外,平台还注重用户体验,设计了简洁明了的用户界面,使得操作人员能够快速上手。通过权限控制机制,确保了药品信息的安全性和保密性。
综上所述,基于Python和Django框架的校医院药品信息管理平台不仅提高了药品管理的效率,还增强了数据的安全性和可靠性,为校医院的药品管理工作提供了有力的技术支持。未来,该平台还可根据实际需求进行功能拓展和优化,以更好地服务于校医院的药品管理工作。
- 郭慧.基于Python的关键路径算法实现[J].山西电子技术,2025,(01):76-79.
- 罗艾滢.Python语言在教学中的应用实践——以“鸡兔同笼”为例[J].第二课堂(D),2024,(09):10-11.
- 兰琳琳.基于MySQL-Django-Vue的在线考试系统[J].电脑知识与技术,2024,20(33):51-54.DOI:10.14004/j.cnki.ckt.2024.1702.
- 张锦贤,吴晓玲.基于Django框架技术的网站设计[J].电脑知识与技术,2024,20(10):71-73.DOI:10.14004/j.cnki.ckt.2024.0565.
- 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
- 周晓玉,崔文超.基于Web技术的数据库应用系统设计[J].信息与电脑(理论版),2023,35(09):189-191.
- 马艳艳,吴晓光.计算机软件与数据库的设计策略分析[J].电子技术,2024,53(05):104-105.
- 李俊萌.计算机软件测试技术与开发应用策略分析[J].信息记录材料,2023,24(03):50-52.
- Gawai A .EPH237 Vedolizumab Induced Cachexia: A Novel Signal Identified Through US Food and Drug Administration Adverse Event Reporting System (FAERS) Database[J].Value in Health,2024,27(12S):S265-S265.
- 黄艳华.医院药品结算内部控制信息软件的开发研究[J].财经界,2024,(27):72-74.DOI:10.19887/j.cnki.cn11-4098/f.2024.27.024.
- Sanderson T .A web tool for exploring the usage of medicines in hospitals in England.[J].Wellcome open research,2024,9147.
- Surian V S ,Joshua P ,Shahrul K , et al.A comprehensive validation framework addressing utility parameter validation for application in small and medium enterprises (SMEs):A case study in pharmaceutical industry[J].Cogent Engineering,2023,10(1):
- 谭康康,胡支滨,韩阳,等.药店药品信息管理系统的设计及优化[J].华北理工大学学报(自然科学版),2023,45(02):104-109.
- 吴伊如.药品和供应商资质管理系统的开发与应用分析——以公立医院为例[J].科技视界,2023,(10):114-117.
- MHE C ,RA V ,WG G , et al.HPR156 Payment and Reimbursement Models for Innovative High-Priced Hospital Drugs in the Netherlands: A Survey of Stakeholder's Attitudes and Experiences[J].Value in Health,2022,25(12S):S261-S261.
- 张贝贝,李成伟,肖辉.基于SPD供采平台的院内药品物流延伸服务实践[J].中国卫生信息管理杂志,2022,19(05):724-727+744.
- 李思睿,郑大翔,李志芳.医院药房管理系统前端工程化设计与实现[J].软件工程,2022,25(09):18-21+4.DOI:10.19644/j.cnki.issn2096-1472.2022.009.005.
- 宋子君.数据挖掘分析技术在审计线索发现中的应用研究[D].首都经济贸易大学,2022.DOI:10.27338/d.cnki.gsjmu.2022.001230.
- 宗佳惠.基于RFID的医院药品物资条码库房管理系统[J].自动化技术与应用,2022,41(06):68-72.DOI:10.20033/j.1003-7241.(2022)06-0068-05.
- 代云飞,向瑾,郭雨娇,等.基于医院信息系统建立GCP药房的设计与应用探讨[J].中国数字医学,2022,17(06):41-45.
- 张爽,石乐民,刘传志,等.高校生物实验室仪器药品信息管理平台设计[J].现代信息科技,2022,6(05):34-37.DOI:10.19850/j.cnki.2096-4706.2022.05.009.
- 王颖瑞.药房信息管理系统的设计与实现[D].北京邮电大学,2020.DOI:10.26969/d.cnki.gbydu.2020.001363.
首先,我要感谢我的论文指导老师。在论文完成的整个过程中,指导老师始终给予我无微不至的关爱与指导。在论文写作的过程中,导师那耐心细致的指导,以及提出的具有建设性的意见,都给予了我极大的帮助,让我受益匪浅。导师严谨的治学态度、敬业精神以及高水平的教学能力,都给我树立了追求卓越的典范,这对我以后的人生道路和学业成就都产生了极大的积极影响。
此外,我还要感谢我班的同学们,他们既是我的同窗好友,又是我的良师益友。正是由于你们的支持和关怀,使得我在大学期间的学习和生活都变得异常充实。感谢那些在大学期间给予我帮助的所有老师和同学们,是你们给予了我在学业道路上的前进动力。
当然,我也不能忘记我的父母,是他们用无私的爱抚养我成人。你们的养育之恩我将永生难忘,将来我一定会用我的成绩回报你们。在成长的道路上,我会不断努力,不负众望,用实际行动来回报你们对我的期望。
总之,在这篇论文中,我要感谢所有给予我帮助的人,包括指导老师、同学们、家人和朋友们。是你们的支持与关爱,让我在学术和个人生活中取得了优异的成绩。我会珍惜这份感恩之情,将这份力量用于学习和未来的生活中,不断追求卓越,成为一个更加优秀的人。
点赞+收藏+关注 →私信领取本源代码、数据库
关注博主下篇更精彩
一键三连!!!
一键三连!!!
一键三连!!!
感谢一键三连!!!

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



