大家可以帮忙点赞、收藏、关注、评论啦
精彩专栏推荐订阅:在 下方专栏
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框架的深入了解和分析,为企业固定资产管理系统提供了全面的解决方案。