Python毕业设计基于Django的药房药品管理系统

收藏关注不迷路!!

🌟文末获取源码+数据库🌟

感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

网络的广泛应用给生活带来了十分的便利。所以把药房药品管理与现在网络相结合,利用Django技术建设药房药品管理系统,实现药品的信息化。则对于进一步提高订单信息管理发展,丰富订单信息管理经验能起到不少的促进作用。
 药房药品管理系统能够通过互联网得到广泛的、全面的宣传,让尽可能多的用户了解和熟知药房药品管理系统的便捷高效,不仅为顾客提供了服务,而且也推广了自己,让更多的用户了解自己。对于药房而言,若拥有自己的系统,通过系统得到更好的管理,同时提升了形象。
 本系统设计的现状和趋势,从需求、结构、数据库等方面的设计到系统的实现,分别为管理员、员工和顾客的实现。论文的内容从系统的设计、描述、实现、分析、测试方面来表明开发的过程。本系统根据现实情况来选择一种可行的开发方案,借助Django编程语言和Mysql数据库等实现系统的全部功能,接下来对系统进行测试,测试系统是否有漏洞和测试用户权限来完善系统,最终系统完成达到相关标准。

功能介绍 
将系统权限按管理员、员工和顾客这三类涉及用户划分。
1;管理员功能需求
 管理员登陆后,主要模块包括个人中心、员工管理、顾客管理、药品库存管理、订单信息管理、入库信息管理、药品库存管理、损坏信息管理、反馈信息管理、药品类型管理等功能 
2;员工功能需求
 员工登陆后,主要模块包括个人中心、药品库存管理、订单信息管理、入库信息管理、药品库存管理、损坏信息管理等功能
3;顾客功能需求
 顾客登陆后,主要模块包括个人中心、药品库存管理、订单信息管理、药品库存管理、反馈信息管理等功能

详细视频演示

文章底部名片,联系我看更详细的演示视频

效果图

主要使用技术

环境需要
1.运行环境:python3.7/python3.8。
2.IDE环境:pycharm+mysql5.7;
3.数据库工具:Navicat11
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
技术栈
后端:python+django
前端:vue+CSS+JavaScript+jQuery+elementui

使用说明
使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
使用PyCharm 导入项目,修改配置,运行项目;
将项目中config.ini配置文件中的数据库配置改为自己的配置,然后运行;
运行成功后,在浏览器中输入:http://localhost:8080/项目名 

Vue.js介绍 


Vue.js(简称 Vue)是一个用于构建用户界面的渐进式 JavaScript 框架。它由前 Google 高级软件工程师尤雨溪(Evan You)于 2014 年创建。Vue 以数据驱动视图、轻量级、易学易用、灵活性高等特点受到广泛欢迎,适用于从简单的单页面应用到复杂的大型企业级应用。 

一个典型的 Vue 项目结构可能如下所示:

my-project/
├── node_modules/
├── public/
│   └── index.html
├── src/
│   ├── assets/
│   ├── components/
│   ├── views/
│   ├── App.vue
│   ├── main.js
│   └── ...
├── .gitignore
├── package.json
├── README.md
└── ...

node_modules/:存放 npm 或 yarn 安装的依赖包。
public/:包含静态资源文件,如 index.html。
src/:包含项目的源代码。
assets/:存放静态资源,如图片、样式表等。
components/:存放 Vue 组件。
views/:存放页面级别的 Vue 组件。
App.vue:根组件,作为应用的入口。
main.js:应用的入口文件,用于创建 Vue 实例并挂载到 DOM 上。
.gitignore:指定 Git 忽略跟踪的文件和文件夹。
package.json:定义项目的依赖、脚本等信息。
README.md:项目说明文档。
保持组件的独立性,避免紧密耦合。
使用 props 传递数据,使用 events 进行通信。
利用混入(Mixins)和高阶组件(HOC)复用逻辑。
使用计算属性和 memoization 减少不必要的计算。
使用 v-show 或 v-if 控制组件渲染。
懒加载和代码分割减少初始加载包大小。
合理划分组件和模块,保持清晰的项目结构。
使用 ESLint 和 Prettier 保持代码风格一致。
使用单元测试(如 Jest)和端到端测试(如 Cypress)确保代码质量。
为组件编写测试用例,确保功能正确性。 
 

 Python介绍

Python,作为一种高级编程语言,自1991年首次发布以来,已经迅速成为软件开发、数据分析、人工智能、机器学习、网络爬虫、自动化运维等多个领域的首选语言之一。其简洁的语法、丰富的库支持、强大的社区力量以及跨平台能力,使得Python在全球范围内拥有庞大的用户群体和广泛的应用场景。以下是对Python技术的详细介绍,尽管篇幅限制难以完全覆盖所有方面,但将尽力概述其核心特性和应用。

1. 简洁易读的语法

Python的设计哲学强调代码的可读性和简洁性,通过减少不必要的语法和符号,使得开发者能够用更少的代码完成相同的功能。例如,Python中的缩进用于表示代码块,而不是像其他语言那样使用大括号或关键字,这一特性使得Python代码结构清晰,易于理解和维护。

2. 丰富的标准库和第三方库

Python拥有庞大的标准库,覆盖了从基础数据结构到高级网络编程的各个方面。此外,Python社区还提供了成千上万的第三方库,这些库几乎涵盖了开发者可能遇到的所有问题,如数据分析(Pandas、NumPy)、科学计算(SciPy)、Web开发(Django、Flask)、机器学习(scikit-learn、TensorFlow、PyTorch)等。这些库的存在极大地提高了开发效率,降低了学习成本。

3. 动态类型系统

Python是一种动态类型语言,这意味着在编写代码时不需要显式声明变量的类型。Python解释器会在运行时自动处理类型检查和转换,这种灵活性使得Python在快速原型开发和探索性编程中非常有用。然而,这也意味着在某些情况下,Python程序的性能可能不如静态类型语言,但通过优化和使用现代Python解释器(如PyPy),可以显著提高性能。

4. 跨平台兼容性

Python是一种跨平台的编程语言,可以在Windows、Linux、macOS等多种操作系统上运行。Python代码一旦编写完成,几乎不需要修改就可以在不同的平台上运行,这极大地简化了跨平台应用程序的开发和部署过程。

5. 强大的社区支持

Python拥有庞大的开发者社区,这个社区不仅提供了丰富的资源和文档,还积极参与问题的解答和技术的讨论。无论是初学者还是资深开发者,都可以在这个社区中找到帮助和支持。此外,Python社区还定期举办各种会议和研讨会,促进知识的交流和技术的创新。

6. 广泛的应用领域

Python的应用领域非常广泛,几乎涵盖了所有需要编程的领域。在Web开发方面,Python提供了Django、Flask等框架,使得构建网站和Web应用变得简单快捷;在数据分析领域,Python凭借其强大的数据处理和可视化能力,成为数据科学家的首选工具;在人工智能和机器学习领域,Python的易用性和丰富的库支持使得构建复杂的模型变得可能。

总之,Python以其简洁的语法、丰富的库支持、动态类型系统、跨平台兼容性、强大的社区支持以及广泛的应用领域,成为了当今最受欢迎的编程语言之一。随着技术的不断发展,Python的潜力和影响力还将继续扩大。

核心代码

# coding:utf-8
__author__ = "ila"

from django.http import JsonResponse

from .users_model import users
from util.codes import *
from util.auth import Auth
import util.message as mes


def users_login(request):
    if request.method in ["POST", "GET"]:
        msg = {'code': normal_code, "msg": mes.normal_code}
        req_dict = request.session.get("req_dict")
        if req_dict.get('role')!=None:
            del req_dict['role']
        datas = users.getbyparams(users, users, req_dict)
        if not datas:
            msg['code'] = password_error_code
            msg['msg'] = mes.password_error_code
            return JsonResponse(msg)

        req_dict['id'] = datas[0].get('id')
        return Auth.authenticate(Auth, users, req_dict)


def users_register(request):
    if request.method in ["POST", "GET"]:
        msg = {'code': normal_code, "msg": mes.normal_code}
        req_dict = request.session.get("req_dict")

        error = users.createbyreq(users, users, req_dict)
        if error != None:
            msg['code'] = crud_error_code
            msg['msg'] = error
        return JsonResponse(msg)


def users_session(request):
    '''
    '''
    if request.method in ["POST", "GET"]:
        msg = {"code": normal_code,"msg":mes.normal_code, "data": {}}

        req_dict = {"id": request.session.get('params').get("id")}
        msg['data'] = users.getbyparams(users, users, req_dict)[0]

        return JsonResponse(msg)


def users_logout(request):
    if request.method in ["POST", "GET"]:
        msg = {
            "msg": "退出成功",
            "code": 0
        }

        return JsonResponse(msg)


def users_page(request):
    '''
    '''
    if request.method in ["POST", "GET"]:
        msg = {"code": normal_code, "msg": mes.normal_code,
               "data": {"currPage": 1, "totalPage": 1, "total": 1, "pageSize": 10, "list": []}}
        req_dict = request.session.get("req_dict")
        tablename = request.session.get("tablename")
        try:
            __hasMessage__ = users.__hasMessage__
        except:
            __hasMessage__ = None
        if __hasMessage__ and __hasMessage__ != "否":

            if tablename != "users":
                req_dict["userid"] = request.session.get("params").get("id")
        if tablename == "users":
            msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
            msg['data']['pageSize'] = users.page(users, users, req_dict)
        else:
            msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
            msg['data']['pageSize'] = [],1,0,0,10

        return JsonResponse(msg)


def users_info(request, id_):
    '''
    '''
    if request.method in ["POST", "GET"]:
        msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}

        data = users.getbyid(users, users, int(id_))
        if len(data) > 0:
            msg['data'] = data[0]
        # 浏览点击次数
        try:
            __browseClick__ = users.__browseClick__
        except:
            __browseClick__ = None

        if __browseClick__ and "clicknum" in users.getallcolumn(users, users):
            click_dict = {"id": int(id_), "clicknum": str(int(data[0].get("clicknum", 0)) + 1)}
            ret = users.updatebyparams(users, users, click_dict)
            if ret != None:
                msg['code'] = crud_error_code
                msg['msg'] = ret
        return JsonResponse(msg)


def users_save(request):
    '''
    '''
    if request.method in ["POST", "GET"]:
        msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
        req_dict = request.session.get("req_dict")
        req_dict['role'] = '管理员'
        error = users.createbyreq(users, users, req_dict)
        if error != None:
            msg['code'] = crud_error_code
            msg['msg'] = error
        return JsonResponse(msg)


def users_update(request):
    '''
    '''
    if request.method in ["POST", "GET"]:
        msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
        req_dict = request.session.get("req_dict")
        if req_dict.get("mima") and req_dict.get("password"):
            if "mima" not in users.getallcolumn(users,users):
                del req_dict["mima"]
            if "password" not in users.getallcolumn(users,users):
                del req_dict["password"]
        try:
            del req_dict["clicknum"]
        except:
            pass
        error = users.updatebyparams(users, users, req_dict)
        if error != None:
            msg['code'] = crud_error_code
            msg['msg'] = error
        return JsonResponse(msg)


def users_delete(request):
    '''
    '''
    if request.method in ["POST", "GET"]:
        msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
        req_dict = request.session.get("req_dict")

        error = users.deletes(users,
            users,
            req_dict.get("ids")
        )
        if error != None:
            msg['code'] = crud_error_code
            msg['msg'] = error
        return JsonResponse(msg)

文章目录

1系统概述 1
1.1 研究背景 1
1.2研究目的 1
1.3系统设计思想 1
2相关技术 3
2.1 MYSQL数据库 3
2.2 B/S结构 3
2.3 Djangot框架简介 4
2.4 VUE框架 4
3系统分析 5
3.1可行性分析 5
3.1.1技术可行性 5
3.1.2经济可行性 5
3.1.3操作可行性 5
3.2系统性能分析 6
3.2.1 系统安全性 6
3.2.2 数据完整性 6
3.3系统界面分析 6
3.4系统流程和逻辑 8
4系统概要设计 9
4.1概述 9
4.2系统结构 10
4.3.数据库设计 11
4.3.1数据库实体 11
4.3.2数据库设计表 13
5系统详细实现 17
5.1 管理员模块的实现 17
5.2用户模块的实现 19
6系统测试 21
6.1概念和意义 21
6.2特性 22
6.3重要性 22
6.4测试方法 23
6.5 功能测试 23
6.6可用性测试 24
6.7性能测试 24
6.8测试分析 24
6.9测试结果分析 25
结论 25
致谢语 26
参考文献 26
 

源码获取

下方名片联系我即可!!

大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
包含数据库,导入可用;包括管理员和用户两个模块; 其中管理员模块的主要功能有: (1)登录:管理员可通过该模块进入系统。 (2)搜索订单:管理员可以通过下单人、预订房间的类型、住店时间、离店时间进行单条件或任意组合的多条件查询订单。 (3)处理订单:管理员可对订单做出处理。例如有客人预订的资源,可以将订单处理为成功预订。 (4)搜索会员:管理员可以通过会员名、手机号进行单条件查询或组合多条件查询会员。 (5)查看会员信息:管理员可以查看会员的详细信息但不能修改。 (6)查看房间信息:管理员可以查看房间的状态以及描述等详细信息。 (7)修改房间信息:管理员可以修改房间状态、修改房间的价格等详细信息。 会员模块的主要功能包括: (1)注册登录:游客可以进行注册升级为会员便于登录系统预订房间。 (2)修改信息:登录后会员可以修改自己的基本信息,例如联系方式、邮箱、昵称等,同时还可以修改登录密码。 (3)浏览预订房间:会员登录后可以浏览房间信息,查看房间的类型及、描述以及价格并根据自己的需要下订单。 (4)查看订单处理结果:会员登录后可以查看自己已提交订单的处理情况。 (5)查看历史订单:会员登录后可以查看过去的订单的详细信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值