Python毕业设计基于django的办公耗材采购管理系统(源码+系统+mysql数据库+Lw文档)

文末获取资源,收藏关注不迷路

一、项目介绍

本办公耗材采购是针对目前学校的实际需求,从实际工作出发,对过去的办公耗材采购系统存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。
本系统结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用Python语言,结合django框架与Vue框架以及MYSQL数据库设计并实现的。

  1. 采购计划:查清楚缺什么办公耗材,列出清单,加入购物车,提交给学校领导审批采购单子是否合适,订单审批是当用户点击提交订单时,该订单状态设置为已提交状态,等待对应的审批流定义的审批人审批,最终结果是不能超过审批限额,则直接转向已审核。
  2. 审批流管理:创建修改查询审批流,成本中心管理员进行
  3. 成本中心管理和用户管理:成本中心和用户的增删改查,以及成本中心成员修改。
  4. 合约管理功能:包括合约的增删改查和生成订单合同。
  5. 订单管理功能:需要有购买记录,会根据供货商生成订单,不同的供货商生成不同的订单
  6. 供应商功能:A物品需要a供应商,b物品需要b供应商,希望供应商不是太少数量,A和c可以是同一供货商,但是希望供货商不要太单一化,丰富系统的内容。
  7. 货物入库功能:货物到达以后清点入库
  8. 出库功能:某物品出库以后需要登记时间和姓名,和此物品的供货商,并可以查到还剩多少某物品,最好加一个功能,就是说可以打印取走的单子
  9. 统计数据功能:可以随时查取准确的货物数量,以及按照成本中心商品类别以及产品明细三个方面进行统计。
  10. 库管理员:取走单子的时候可以记录是哪个库管理员
  11. 访问控制功能:合法用户可以访问非法用户,不能访问用户,访问时显示对应身份仓库管理员可以访问
  12. 用户管理功能:供应商,系统管理员,数据库层,用户管理员
  13. 商品管理功能:分别为类别管理,商品管理,购物车管理和收藏夹管理。
  14. 公告栏:对公告的增删改查,实现机制为对数据库相应表的增删改查。

二、主要使用技术

环境需要
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/项目名

三、研究内容

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、核心代码

# 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实习课题研究的主要内容与方法 办公自动化是新时期政府部门的一项重要基础性建设,是国民经济信息化在政府部门的具体体现之一,对推进政府管理现代化、决策科学化、运作高效化起着积极和重要的作用。办公自动化系统主要是为机关工作人员处理政务提供一个办公辅助手段。政府办公活动就是对各类办公信息(数据、文字、声音、图象、图形)进行采集、存储、处理、传送和输出的过程。办公自动化(Office Automation,OA),是利用先进的科学技术(主要是计算机、软件、网络技术),使办公室部分工作逐步物化于各种现代化设备和软件系统中,由办公室人员、设备和软件共同构成服务于某种目标的人机信息处理系统,包括自动办公辅助、报文审批、公文流转及内部交流系统等。其目的是尽可能充分利用现代技术资源与信息资源,提高政府部门行政管理工作效率和质量,辅助决策,以取得更好的工作效果。办公自动化系统是电子政务的基础,主要是辅助解决办公室事务的时间管理、成本管理、质量管理等三个管理要素。 特别应提出的是办公系统不单是公文管理,而是对包括业务数据资源在内的办公资源进行全面规范和利用以及提供协同办公的辅助手段。 本模块属于《国税总局综合办公平台》的“办公用品管理”子模块。本系统的总体结构图如下: 使用的主要技术: 技术:Java Swing编程,web技术; 开发工具:Jbuilder 数据库:Oracle 9i 数据访问方式:JDBC oracle thin 模式 参考设计模式:单态、工厂、DAO、MVC等 具体实现的功能及模块划分如下表: 功能类别 子功能 功能描述 办公用品使用 浏览办公用品 用户根据自己的权限,浏览可以申请的办公用品,可以查看要领用物品的详细信息及剩余数量 申请办公用品 填写办公用品申领单,提交申请后,即可根据该用品设定的申请流程进行申请流转 查看申领单 申请办公用品的用户可以看到自己的申请是否审批通过,没有申请通过的单子可以撤销或重新申请 查询办公用品 用户可以根据类别、办公用品名称、购入时间、使用者等进行查询 办公用品审批、签发 审批办公用品 具有审批权限的用户,核实申请单后,可以对申领单进行审批通过或驳回申领单 申请人可以看到自己申请单的状态。 查询审批单 具有审批权限的用户可以根据申请人名称查询到审批单,并按时间倒排序 签发办公用品 具有签发权限的用户可以看到审批通过的申领单,根据申领单的内容和审批意见签发办公用品,对已经签发的办公用品添上使用者和签发时间; 查询签发单 具有签发权限的用户可以查询到未签发的审批单; 可以根据使用者查询到已签发的审批单; 可以根据签发时间查询到已签发的审批单; 办公用品管理 设置办公用品类别 可以添加、删除、修改、查询办公用品的类别(不同的办公用品类别,拥有不同的属性) 分类办公用品 根据办公用品的用途、属性等,将办公用品归类,例如可分为文具类、计算机类、耗材类、外设类等 登记入库 根据办公用品类别的不同,选择不同的属性登记页面,并设置安全存储量(默认可以是0,表示不需要设置该值)进行登记入库 统计办公用品 根据使用者统计办公用品申领列表 存量提醒 对设置了安全存量数量的办公用品,当剩余数量小于安全存量值的时候,提示管理员该物品存量不足,并可以查看该物品的详细信息 权限管理 设置权限 可以添加、删除、修改一个权限 设置用户 可以添加、删除、修改一个用户 分配权限 对指定用户分配权限,也可以重新分配权限

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值