脱产班第二次大作业-用户登陆注册程序

  • 启动程序,首页面应该显示成如下格式:
欢迎来到博客园首页
1:请登录
2:请注册
3:文章页面
4:日记页面
5:评论页面
6:收藏页面
7:退出程序
  • 用户输入选项,3~6选项必须在用户登录成功之后,才能访问成功。
  • 用户选择登录,用户名密码从register文件中读取验证,三次机会,
  • 没成功则结束整个程序运行,成功之后,可以选择访问3~6项,访问页面之前,
  • 必须要在log文件中写入日志,日志格式为-->用户:xx 在xx年xx月xx日 执行了 %s函数,
  • 访问页面时,页面内容为:欢迎xx用户访问评论(文章,日记,收藏)页面
  • 如果用户没有注册,则可以选择注册,注册成功之后,完成登录,然后进入首页选择。

Low Ver

#!/usr/bin/env python
# encoding: utf-8
# Author: MeiMeiLong <[email protected]>
# Create Date: 2019-03-16 15:23:23
# Last Modified: 2019-03-17 09:24:09
# Description:
import os,time
#register file
if not os.path.isfile('register'):
    with open('register',mode='w',encoding='utf-8') as f:
        f.write('long 123\n')

MenuDict = {
1:'请登录',
2:'请注册',
3:'文章页面',
4:'日记页面',
5:'评论页面',
6:'收藏页面',
7:'退出程序'}

def Menu_Stat(login_stat=0):
    print('欢迎来到博客园首页')
    if login_stat == 0:
        for key in MenuDict:
            print(f'{key}:{MenuDict[key]}')
    else:
        for key in range(3,7):
            print(f'{key}:{MenuDict[key]}')
        else:
            print(f'q:退出登陆')

#没成功则结束整个程序运行,成功之后,可以选择访问3~6项,访问页面之前,
def UserDict():
    with open('register',mode='r',encoding='utf-8') as f:
        UserDict = dict()
        for line in f:
            UserDict[line.split()[0]] = line.strip().split()[1]
        else:
            return UserDict

def UserLogin():
    userdict = UserDict()
    #用户选择登录,用户名密码从register文件中读取验证,三次机会,
    for Num in range(3):
        UserName = input('UserName:').strip()
        PassWord = input('PassWord:').strip()
        if userdict.get(UserName,False):
            if userdict[UserName] == PassWord:
                print('用户登陆成功')
                time.sleep(3)
                return 1,UserName,True
        elif Num == 2:
            return 0,0,None
        else:
            print('用户输入的账户或密码有误')

def UserReg():
    UserName = input('注册用户:').strip()
    PassWord = input('注册密码:').strip()
    userdict = UserDict()
    if userdict.get(UserName):
        print('账户已经存在')
        time.sleep(3)
    else:
        with open('register',mode='a',encoding='utf-8') as f:
            f.write(UserName+' '+PassWord +'\n')
        print('用户注册成功.')
        time.sleep(3)


if __name__ == '__main__':
    exit_flag = True
    login_stat = 0
    while exit_flag:
        Menu_Stat(login_stat)
        #用户输入选项,3~6选项必须在用户登录成功之后,才能访问成功。
        Select = input('>>>').strip()
        if Select.isdigit():Select = int(Select)

        if Select == 1:
            login_stat,login_user,exit_flag = UserLogin()
        elif Select == 2:
            UserReg()
        elif Select in range(3,7):
            print('请登陆你的账号和密码。')
            login_stat,login_user,exit_flag = UserLogin()
            if login_stat == 0:
                if input('您没有注册账户是否跳转到注册账户?(Y/N)').strip().upper() == 'Y':
                    UserReg()

        elif Select == 7 or Select.upper() == 'Q':
            break
        else:
            print('输入正确的数字.')
        os.system('clear')

        while login_stat == 1:
            with open('log',mode='a',encoding='utf-8') as f:
                Menu_Stat(login_stat)
                Select = input('>>>').strip()
                if Select.isdigit():
                    Select = int(Select)
                    if Select in range(3,7):
                        Year,Mon,Day = time.localtime()[:3]
                        f.write(f'用户:{login_user} 在{Year}年{Mon}月{Day}日 访问了 {MenuDict[Select]}\n')
                        print(f'欢迎{login_user}用户访问{MenuDict[Select]}')
                    else:
                        print('请输入正确的数值.')
                elif Select.upper() == 'Q':
                    login_stat = 0
                else:
                    print('请输入正确的数值.')

猜你喜欢

转载自www.cnblogs.com/meilong/p/tuo-chan-ban-di-er-ci-da-zuo-yeyong-hu-deng-lu-zhu.html