使用函数完成用户登录和注册功能

先让用户选择,是登陆还是注册

选择序号完毕之后,运行相应的程序,
验证成功之后,可以让其继续选择,登陆还是注册,还可以选择退出。


  1 import time,os
  2  
  3 #文件名
  4 file_name = 'user_list.txt'
  5  
  6  
  7 def file_exists(*args,**kwargs):
  8     '''
  9     # 判断用户列表文件是否存在
 10     :return: True 存在 False 不存在
 11     '''
 12     # 判断文件是否存在
 13     if os.path.exists(file_name):
 14         return True
 15     else:
 16         with open(file_name, encoding='utf-8', mode='w') as mk:
 17             mk.write('张三    123')
 18             return False
 19  
 20  
 21 def registered_username(username):
 22     '''
 23     #判断注册用户名是否可用
 24     :param username: 用户名
 25     :return: True 可用(用户不存在) False 不可用(用户已存在)
 26     '''
 27     # 纯用户名列表,不包含密码
 28     user_list = []
 29     with open(file_name, encoding='utf-8') as f1:
 30         for i in f1:
 31             # 去空格,以空格切割,转换为列表
 32             li = i.strip().split()  # [张三,123]
 33             # 将用户名追加到列表中
 34             user_list.append(li[0])
 35         # 判断用户名是否存在列表中
 36         if username in user_list:
 37             # 返回False
 38             return False
 39         else:
 40             return True
 41  
 42  
 43 def write_file(username,password):
 44     '''
 45     #写入用户列表文件
 46     :param username: 用户名
 47     :param password: 密码
 48     :return: True 写入成功 False 写入失败
 49     '''
 50     with open(file_name, encoding='utf-8', mode='a') as f2:
 51         f2.write('\n{}    {}'.format(username, password))
 52         return True
 53  
 54  
 55 def username_password(username,password):
 56     '''
 57     #判断用户名和密码是否匹配
 58     :param username: 用户名
 59     :param password: 密码
 60     :return: True 匹配成功 False 匹配失败
 61     '''
 62     # print(username,password)
 63     with open(file_name, encoding='utf-8', mode='r') as f3:
 64         for i in f3:
 65             # print(i)
 66             # 去空格,以空格切割,转换为列表
 67             li = i.strip().split()  # [张三,123]
 68             # 判断用户名和密码是否匹配
 69             if username == li[0] and password == li[1]:
 70                 result = True
 71                 # 当找到匹配时,跳出循环
 72                 break
 73             else:
 74                 result = False
 75         # 当整个用户列表遍历完成之后,再return
 76         return result
 77  
 78  
 79 def register(*args,**kwargs):
 80     '''
 81     注册逻辑
 82     :return:
 83     '''
 84     while True:
 85         username = input('请输入注册的用户名,或输入q返回菜单:').strip()
 86         if username == '':
 87             print('用户名为空,请重新输入!')
 88         elif username.upper() == 'Q':
 89             break
 90         else:
 91             # 执行判断用户名函数
 92             result = registered_username(username)
 93             if result:
 94                 password = input('请输入您的注册的密码:').strip()
 95                 # 判断密码
 96                 if password == '':
 97                     print('密码为空,请重新输入!')
 98                 else:
 99                     # 执行写入用户列表文件函数
100                     result = write_file(username, password)
101                     if result:
102                         print('注册成功!,您的用户名为: {}\n倒计时2秒返回菜单!'.format(username))
103                         time.sleep(2)
104                         user_menu()
105                     else:
106                         print('注册失败!请重试')
107             else:
108                 print('用户名已经存在,请重新输入!')
109  
110  
111 def login(count=0,max=3):
112     '''
113     登录逻辑
114     :param count: 初始失败次数
115     :param max: 最大失败次数
116     :return:
117     '''
118     while count < max:
119         count += 1
120         username = input('请输入用户名:').strip()
121         password = input('请输入密码:').strip()
122         # 执行验证用户名和密码函数
123         result = username_password(username,password)
124         if result:
125             print('登陆成功\n倒计时1秒返回菜单!')
126             time.sleep(1)
127             user_menu()
128             break
129         else:
130             print('用户名或密码错误,还剩余{}次机会!'.format(max - count))
131  
132     # 返回主菜单
133     user_menu()
134  
135  
136 def user_menu(*args,**kwargs):
137     '''
138     # 用户菜单
139     '''
140     # 判断文件是否存在,不存在创建文件
141     file_exists()
142     # 循环
143     while True:
144         # 打印菜单
145         menu = ['注册', '登录', '退出']
146         print('bbs系统'.center(25, '#'))
147         for i in range(len(menu)):
148             print('{}\t{}'.format(i + 1, menu[i]))
149         print(''.center(27, '#'))
150         number = input('请选择序号: ').strip()
151         if number == '1':
152             # 执行注册程序
153             register()
154         elif number == '2':
155             # 执行登录程序
156             login()
157         elif number == '3':
158             exit()
159         else:
160             print('输入错误,请重新输入!')
161  
162  
163 # 执行菜单
164 user_menu()

 

posted @ 2018-09-17 16:15  北三环的雪  阅读(683)  评论(0编辑  收藏  举报