基于Python+Web+Django+sqlite的资产管理系统设计与实现

目录
第一章 绪 论 2
1.1 研究工作的背景与意义 2
1.2 本文的主要贡献与创新 2
1.3 本论文的结构安排 2
2.1 需求分析 3
2.2 ER图 3
2.2.1 设计局部E-R模式 3
2.2.2 设计全局ER图 9
2.4 ER模型向数据模型的转换 9
2.5 数据字典 10
2.6 数据库的逻辑设计 14
第三章 网站的后台设计 17
3.1 后台框架的选择 17
3.2 框架概述 17
3.3 请求的响应 17
3.3.1 域名的解析 17
3.3.2 视图的返回 18
3.3 与数据库的连接 18
第四章 网站的整体设计 20
4.1 网站首页 20
4.2 登录和注册 25
4.2.1 注册系统 25
4.2.2 登录界面 31
4.2.3 密码在数据库中的存储 33
4.3 部门及权限管理 35
4.3.1 部门及权限管理界面 35
4.3.2 权限管理的实现 37
4.4 邀请码机制 38
4.4.1 邀请码系统的界面和功能 38
4.4.2 邀请码的实现 41
4.5 员工管理系统 41
4.6 资产管理部分 43
4.6.1 资产列表 43
4.6.2 资产登记管理系统 45
4.6.3 资产申领管理系统 48
4.6.4 资产维修管理系统 50
4.6.5 折旧管理系统 51
4.6.6折旧记录回滚和恢复机制 54
4.7 系统功能整体框 56
第四章 全文总结与展望 57
4.1 全文总结 57
4.2 后续工作展望 57
致 谢 57
参考文献 57
第二章 数据库模型的设计
2.1 需求分析
本系统的基本要求是实现如下功能或模块:
(1)资产登记管理模块:增删改查资产信息;
(2)资产领用管理模块:增删改查资产领用记录;
(3)资产折旧管理模块:根据不同的折旧方法计算资产的折旧金额和残值;
(4)维修管理模块:增删改查维修记录信息
(5)员工和部门管理模块:可以添加删除员工和部门
(6)权限管理模块:记录员工和部门的权限信息
(7)登陆注册模块:实现用户的登陆和注册
(8)邀请码模块:邀请码种包含权限信息,用户使用邀请码注册后可以自动获得对应模块的权限信息
(9)利用GUI或网站设计,实现人机友好交互界面
所以在本系统重要管理的信息主要有:资产信息,资产领用信息,资产折旧信息,维修记录信息等。因此存储此部分信息需要如下4个表:资产信息表,资产领用记录表,资产折旧记录表与维修记录表。为了达到第三范式,我们需要消除依赖,因此我们额外增加了资产种类表。
此为了实现多用户的登录与管理,还需要对用户帐号,权限及部门等信息进行管理,因此,数据库中还包括员工信息表,部门信息表,用户信息表,权限信息表。
为了实现邀请码功能,添加了表用来存储邀请码信息。

# coding=utf-8
from django.shortcuts import render, render_to_response
from django.http import HttpResponse
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.models import Group
from django.views.decorators.csrf import csrf_protect
from django.contrib.auth.hashers import make_password
from django.contrib import messages
from django.template import loader
import urllib.request
import sys

sys.path.append('G:\Database-APP\DatabaseAPP')
from assets.models import Staff, InviteCode


# Create your views here.

class UserForm(forms.Form):
    username = forms.CharField(label='用户名', max_length=50)
    password = forms.CharField(label='密码', widget=forms.PasswordInput())
    password_repeat = forms.CharField(label='重复密码', widget=forms.PasswordInput())
    last_name = forms.CharField(label='姓')
    first_name = forms.CharField(label='名')
    email = forms.EmailField(label='邮箱')
    invite_code = forms.CharField(label='邀请码(选填)', max_length=100, required=False)
    # first_name = forms.CharField(label='名')
    # last_name = forms.CharField(label='姓')


@csrf_protect
def regist(request):
    ticket = request.GET.get('ticket')
    randstr = request.GET.get('randstr')
    ip = request.GET.get('ip')
    if randstr:
        textmod = {
    
    'aid': '2036447301', 'AppSecretKey': '0CQuV8SIDluGCVpMcfAPwgA**', 'Ticket': ticket, 'UserIP': ip,
                   'Randstr': randstr}
        textmod = urllib.parse.urlencode(textmod)
        req = urllib.request.Request(url='%s%s%s' % ("https://ssl.captcha.qq.com/ticket/verify", '?', textmod))
        res = urllib.request.urlopen(req)
        print(res.read())
        res.close()

    if request.method == 'POST':
        userform = UserForm(request.POST)
        print(userform)
        if userform.is_valid():
            username = userform.cleaned_data['username']
            if User.objects.filter(username=username):
                messages.error(request, '用户已存在!')
                return render(request, "regist.html", {
    
    'userform': userform})

            password = userform.cleaned_data['password']
            password_repeat = userform.cleaned_data['password_repeat']
            if password != password_repeat:
                messages.error(request, '两次输入的密码不同!')
                return render(request, "regist.html", {
    
    'userform': userform})
            email = userform.cleaned_data['email']
            password = make_password(password, None, 'pbkdf2_sha256')

            invite_code = userform.cleaned_data['invite_code']
            first_name = userform.cleaned_data['first_name']
            last_name = userform.cleaned_data['last_name']

            user = User.objects.create(username=username, password=password, email=email, is_staff=True,
                                       first_name=first_name,
                                       last_name=last_name)
            # User.save()
            if invite_code:
                import base64
                invite_code=str.encode(invite_code)
                try:
                    invite_code_id = int(base64.b64decode(invite_code).decode().split()[0])
                except:
                    messages.error(request, '邀请码错误!')
                    return render(request, "regist.html", {
    
    'userform': userform})
                code_obj=InviteCode.objects.get(id=invite_code_id)
                if code_obj.key == invite_code.decode():
                    if code_obj.times:
                        Staff.objects.create(staff_name=last_name + first_name, staff_user=user, staff_dep= code_obj.dept)
                        user.groups.add(code_obj.dept.dep_permmison)
                        code_obj.times -= 1
                        code_obj.save()
                else:
                    messages.error(request, '邀请码错误或失效!')
                    return render(request, "regist.html", {
    
    'userform': userform})

            else:
                Staff.objects.create(staff_name=last_name + first_name, staff_user=user)
            messages.success(request, "注册成功")
    else:
        userform = UserForm()

    # return render_to_response('regist.html', {'userform': userform})
    return render(request, "regist.html", {
    
    'userform': userform})


def index(request):
    # template = loader.get_template('register/index.html')
    # return HttpResponse(template.render(request))
    return render(request, "index_home.html", {
    
    })

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

猜你喜欢

转载自blog.csdn.net/newlw/article/details/132893926