基于python的企业固定资产管理系统的设计与实现

本文详细介绍了使用Python开发的企业固定资产管理系统,包括项目介绍、功能模块(如用户管理、资产信息管理等)、开发环境(Python、Django等)以及项目展示。着重讨论了如何通过Python提高固定资产管理的效率和规范化。
摘要由CSDN通过智能技术生成

大家可以帮忙点赞、收藏、关注、评论啦

精彩专栏推荐订阅:在 下方专栏

JAVA实战项目

一、项目介绍

随着企业规模的扩大和管理的复杂化,固定资产管理成为了企业管理中不可或缺的一部分。固定资产是企业的重要资源,对于企业的正常运营和持续发展具有至关重要的作用。然而,许多企业在固定资产管理方面存在诸多问题,如管理不规范、信息不透明、盘点困难等。因此,开发一款适合企业使用的固定资产管理系统变得尤为重要。

Python作为一种流行的编程语言,具有易学易用、跨平台等特点,被广泛应用于企业信息化建设中。本论文旨在探讨如何使用Python编程语言开发一款企业固定资产管理系统,以提高固定资产管理的效率和规范化程度,为企业的发展提供有力支持。

本论文从企业固定资产管理系统的选题背景和研究意义出发,分析了当前企业在固定资产管理方面存在的问题和需求,阐述了Python编程语言在企业管理中的应用价值,并探讨了基于Python的企业固定资产管理系统的功能模块和实现方法。

二、功能介绍

一、个人中心

在个人中心,用户可以查看和编辑自己的个人信息,包括用户名、密码、联系方式等。此外,个人中心还提供了系统消息、待办事项等功能,方便用户及时了解系统通知和进行任务处理。

二、用户管理

用户管理模块可以对企业固定资产系统的使用用户进行管理,包括用户的新增、删除、修改等操作。同时,该模块还支持对用户权限的管理,不同权限的用户在系统中拥有不同的操作权限。

三、资产分类管理

资产分类管理模块可根据企业固定资产的属性或类别进行分类管理,使不同类别的资产可以归类到不同的类别下面,方便查询和管理。该模块支持资产类别的添加、修改和删除等操作。

四、资产信息管理

资产信息管理模块支持对企业固定资产的增加、修改和删除等操作。用户可以在该模块中添加新的固定资产信息,对已有的固定资产信息进行修改或删除。同时,该模块还支持对固定资产的查询和筛选,方便用户快速找到所需资产。

五、资产借出管理

资产借出管理模块记录了企业固定资产的借出情况,包括借出时间、借出人、借用资产等信息。在该模块中,用户可以进行资产的借出申请和审批,同时还可以查看资产的借出历史记录。

六、资产归还管理

资产归还管理模块记录了企业固定资产的归还情况,包括归还时间、归还人等信息。在该模块中,用户可以进行资产的归还申请和审批,同时还可以查看资产的归还历史记录。

七、资产维修管理

资产维修管理模块记录了企业固定资产的维修情况,包括维修时间、维修内容等信息。在该模块中,用户可以提交资产的维修申请和审批,同时还可以查看资产的维修历史记录。此外,该模块还支持对维修记录的统计和分析,帮助企业更好地了解资产的状况和维护情况。

三、开发环境

  • 开发语言:Python
  • 数据库:MySQL
  • 系统架构:B/S
  • 后端:Django
  • 前端:Vue+HTML+CSS+JavaScript+jQuery
  • 工具:PyCharm

四、项目展示

登录页面:
在这里插入图片描述
管理员模块:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用户模块:
在这里插入图片描述
在这里插入图片描述

五、代码展示

from __future__ import absolute_import

import json
from functools import wraps
from typing import Dict, Any

import jwt
import tornado.web
from tornado.escape import xhtml_escape as xss_escape

from common import session
from models import AdminLog


def authorize(power: str, log: bool = False, verify_token=False):
    def decorator(func):
        def func_verify_token(handler):
            ret = {"success": True, "msg": "", "payload": {}}
            # JWT 认证
            auth = handler.request.headers.get('Authorization')
            if not auth:
                ret.update({"success": False, "msg": "Missing authorization"})
                return ret
            parts = auth.split()
            if parts[0].lower() != 'bearer' or len(parts) == 1 or len(parts) > 2:
                ret.update({"success": False, "msg": "invalid header authorization"})
                return ret
            token = parts[1]
            payload, error = handler.get_payload(token=token)
            if error:
                ret.update({"success": False, "msg": error})
                return ret
            ret['payload'] = payload
            return ret

        # @tornado.web.authenticated
        @wraps(func)
        def wrapper(*args, **kwargs):
            handler = args[0]
            request = handler.request

            # jwt token verify >>>
            # 不验证token的情况下, 需要验证用户登录
            if not verify_token and not handler.current_user:
                return handler.jsonify(success=False, msg="需要登录!")
            if verify_token:
                ret_verify = func_verify_token(handler)
                if not ret_verify.get('success'):
                    return handler.jsonify(**ret_verify)
                # print(ret_verify.get('payload'))
                login_user_id = ret_verify.get('payload', {}).get('user_id', '')
                handler.jwt_login_user_id = str(login_user_id)
            # JWT <<<

            user_powers = handler.get_current_user_power()
            # TODO: 暂不添加权限验证
            user_powers.append(power)

            if not power in user_powers:
                if log:
                    handler.admin_log(request=request, uid=handler.get_current_user(), is_access=False)
                if request.method == 'GET':
                    raise tornado.web.HTTPError(403)
                else:
                    return handler.jsonify(success=False, msg="权限不足!")
            if log:
                handler.admin_log(request=request, uid=handler.get_current_user(), is_access=True)
            return func(*args, **kwargs)

        return wrapper

    return decorator

class HttpHelper(tornado.web.RequestHandler):
    def jsonify(self, *args, **kwargs):
        self.set_header("Content-Type", "text/json")
        indent = None
        separators = (",", ":")
        # if debug:  # 获取全局debug配置
        #     indent = 2
        #     separators = (", ", ": ")

        if args and kwargs:
            raise TypeError("jsonify() behavior undefined when passed both args and kwargs")
        elif len(args) == 1:  # single args are passed directly to dumps()
            data = args[0]
        else:
            data = args or kwargs
        self.write(json.dumps(data, indent=indent, separators=separators))

    def write_to_json(self, code=0, msg="", count=0, data=None):
        data = data if data else []
        ret = {"code": code, "msg": msg, "count": count if count else len(data), "data": data}
        self.write(json.dumps(ret))

    def success_api(self, msg: str = "成功"):
        """ 成功响应 默认值”成功“ """
        return self.jsonify(success=True, msg=msg)

    def fail_api(self, msg: str = "失败"):
        """ 失败响应 默认值“失败” """
        return self.jsonify(success=False, msg=msg)

    def table_api(self, msg: str = "", count=0, data=None, limit=10):
        """ 动态表格渲染响应 """
        res = {
            'msg': msg,
            'code': 0,
            'data': data,
            'count': count,
            'limit': limit
        }
        return self.jsonify(res)

    # def authorize(self, code=None):
    #     return authorize(code=code)

    def url_for(self, file_path=None, filename=None):
        if file_path == "static":
            # self.application.static_path
            filename = filename[1:] if filename[:1] == '/' else filename
            return self.static_url(filename)

    def get_template_namespace(self) -> Dict[str, Any]:
        namespace = super().get_template_namespace()
        # namespace.update({"url_for": self.url_for, "authorize": self.authorize})
        namespace.update({"url_for": self.url_for, "authorize": authorize})
        return namespace

    def login_log(self, uid, is_access):
        info = {
            'method': self.request.method,
            'url': self.request.path,
            'ip': self.request.remote_ip,
            'user_agent': xss_escape(self.request.headers.get('User-Agent')),
            # 'desc': xss_escape(request.get_argument('username', '')),
            'uid': uid,
            'success': int(is_access)
        }
        log = AdminLog(**info)
        session.add(log)
        session.flush()
        session.commit()
        return log.id

    def admin_log(self, request, uid, is_access):
        info = {
            'method': request.method,
            'url': request.path,
            'ip': request.remote_ip,
            'user_agent': xss_escape(request.headers.get('User-Agent')),
            'desc': request.body,
            'uid': uid,
            'success': int(is_access)
        }

六、项目总结

本文旨在探讨利用Python编程语言开发一款针对企业固定资产管理系统的解决方案。通过对固定资产管理系统的深入研究,旨在提高企业固定资产管理的效率和规范化程度,为企业的发展提供有力支持。

在本文中,我们首先明确了研究的目的和问题,即如何设计和实现一个功能全面、性能高效、易用性强的固定资产管理系统。为解决这一问题,我们通过对Python编程语言和Django框架的深入了解和分析,为企业固定资产管理系统提供了全面的解决方案。

大家点赞、收藏、关注、有问题都可留言交流👇🏻👇🏻👇🏻

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值