设为首页 加入收藏

TOP

python用户管理系统(一)
2017-12-23 06:06:48 】 浏览:386
Tags:python 用户 管理系统

 

学Python这么久了,第一次写一个这么多的代码(我承认只有300多行,重复的代码挺多的,我承认我确实垃圾),但是也挺不容易的

自定义函数+装饰器,每一个模块写的一个函数

很多地方能用装饰器(逻辑跟不上,有的地方没用),包括双层装饰器(不会),很多地方需要优化,重复代码太多

我还是把我的流程图拿出来吧,虽然看着比上次的垃圾,但是我也做了一个小时,不容易!

 

好像是挺丑的(表示不会画,但我下次一定努力)

 用户文件:

文件名为:user.txt

1代表管理员用户

2代表普通用户

smelond|admin|xx@qq.com|1
admin|admin|qweqwe@qq.com|2
qwe|qweasd|qwe@qq.com|2

 

代码(感觉这个程序还有很多bug):

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# File_type:用户管理程序,装饰器版本,多功能
# Filename:user_manage_program.py
# Author:smelond

import os

os.system("cls")  # windows中的清屏

COUNT = 0  # 计数器
WHETHER_LOGIN = {"is_login": "error"}  # 用于判断是否有用户登录
USER_LIST = []  # 当前用户信息存放的列表


def register_function():  # 注册函数 (所有注册都来调用这个函数)
    count = 3  # 计数器,做到了一个提示用户的作用
    for i in range(3):  # 循环3次
        print("用户注册【你只有3次机会】,你还有【%s】次机会".center(80, "=") % count)  # 输出提示
        count -= 1  # 每次减1
        username = input("请输入用户名:")
        while True:
            passwd = input("请输入密码:")
            if len(passwd) >= 5:
                break
            else:  # 如果输入的密码小于5,位数,向下操作
                print("请输入大于5位数的密码")
                input_passwd = input("【1:继续输入;2:返回上一步】")
                if input_passwd == "1":
                    pass
                else:
                    main()
        while True:
            email = input("请输入邮箱:")
            email_count = email.count("@")  # 查看输入的邮箱是否带@,
            # print(email_count)  # 返回1代表有一个@
            if email_count == 1:
                break  # 如果有一个@符号,代表邮箱输入正确,跳出当前循环
            else:
                print("请输入正确的邮箱")
                input_email = input("【1:继续输入;2:返回上一步】")
                if input_email == "1":
                    pass
                else:
                    main()

        register_user = [username, passwd, email, "2"]  # 将我们输入的用户名密码以及邮箱放到一个列表中,普通用户,所以加上了一个2
        with open("user.txt", "r") as user:
            for line in user:
                f_user_list = line.strip("\n").split("|")
                if register_user[0] == f_user_list[0]:
                    print("用户名已被注册")
                    break
                if register_user[2] == f_user_list[2]:  # 判断我们输入得的邮箱和用户名是否以及存在
                    print("邮箱已被注册")
                    break
            else:  # 接下来是通过了上面的筛选,开始把我们的注册信息写进数据库(总感觉上面有bug)
                user_write = "|".join(register_user)  # 用join方法将这个列表转换为以|分隔
                # open_user = open("user.txt", "a")  # a 以追加方式写入文件
                # open_user.write("\n" + user_write)
                # open_user.close()  # 记得关闭
                with open("user.txt", "a") as f:
                    f.write("\n" + user_write)  # 跟上面一样的方法,这种不用关闭文件
                print("注册成功")
                user_write = """用户名:【%s】;密码:【%s】;邮箱:【%s】""" \
                             % (register_user[0], register_user[1], register_user[2])  # 注册成功的提示信息
                return user_write  # 返回提示信息


def outer(func):  # 装饰器,用于管理接口
    def inner(*args, **kwargs):
        if WHETHER_LOGIN["is_login"] == "success" and USER_LIST[3] == "1":  # 为什么要加上引号,因为在列表中存储的是字符串,而不是整形
            r = func()  # 执行我们传入的函数
            return r  # 返回
        elif WHETHER_LOGIN["is_login"] == "success" and USER_LIST[3] == "2":  # 如果为普通用户,提示没有足够权限并且返回到main函数
            print("\n当前用户为普通用户【%s】,没有足够的权限" % USER_LIST[0])
            main()
        else:
            print("\n当前没有用户登录,请登录后再试。。。")  # 否者就是没有登录了
            main()

    return inner


def user_login(func):  # 检测用户是否登录的装饰器
    def inner(*args, **kwargs):
        if WHETHER_LOGIN["is_login"] == "success":  # 判断是否登录
            r = func()
            return r  # 如果已经登录,返回到原本的函数
        else:
            user_no = input("请登录后再试【1:用户登录;2:返回】:")
            if user_no == "1":
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇机器学习实践之决策树算法学习 下一篇进程管理工具Supervisor(一)简介..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目