小白学Python(四) 简单的用户管理系统v0.2

论坛 期权论坛 脚本     
匿名技术用户   2021-1-2 06:58   110   0

今天趁着有兴致再来更一篇吧。今天做的是一个弱弱的用户管理系统,具有登录,退出登录,查询登录状态等简单的功能。


为什么是0.2呢,是因为这个东西还有一点小bug#不过应该随手就能改,等本白学会写网络的用户管理以后再发布一个更加完整的版本


bugs:初次使用没有创建文件的过程,加一句检查就行了


好了,废话少说,放码过来!


#user management system
#made by TY L
#PKU EECS

import time
import os
import msvcrt

class User:
 def __init__(self, t_last_time = None, t_name = None, t_password = None):
  self.name = t_name
  self.password = t_password
  self.last_time = t_last_time

 def check(self, t_name, t_password):
  if self.name == t_name and self.password == t_password:
   return True
  else:
   return False

 def updateUserName(self, t_name):
  if t_name != None:
   self.name = t_name
  else:
   print("Name Error!")

 def updateUserPassword(self, t_password):
  if t_password != None:
   self.passworrd = t_password
  else:
   print("Password Error!")

 def __str__(self):
  return self.name + ' ' + self.password + ' ' + repr(self.last_time)

def login(old, new):
 name_ = input("Please enter your name\n>>>")
 pw = input("Please enter your password\n>>>")
 for each in old:
  if name_ == each.name:
   if pw == each.password:
    print("Login successfully!")
    each.last_time = repr(time.ctime())
    time.sleep(1)
    return each, old, new
   else:
    print("Wrong password!")
    time.sleep(1)
    return None, old, new
 for each in new:
  if name_ == each.name:
   if pw == each.password:
    print("Login successfully!")
    each.last_time = repr(time.ctime())
    time.sleep(1)
    return each, old, new
   else:
    print("Wrong password!")
    time.sleep(1)
    return None, old, new
 print("No such user!")
 time.sleep(1)
 return None, old, new

def register(old, new):
 name_ = ''
 while True:
  name_ = input("Please enter a user name\n>>>")
  for each in old:
   if name_ == each.name:
    print("User existed!")
    #time.sleep(1)
    continue
  for each in new:
   if name_ == each.name:
    print("User existed!")
    #time.sleep(1)
    continue
  break
 pw = input("Please enter your password\n>>>")
 time_ = time.ctime()
 newUser = User(time_ ,name_, pw)
 new.append(newUser)
 print("Register successfully!")
 time.sleep(1)
 return new, newUser

def display(a_user):
 print("Name: " + a_user.name)
 print("Last time: " + repr(a_user.last_time))
 print("Press any key to continue...")
 msvcrt.getch()

def mainMenu():
 menu = """
Please select a instruction through the number:
1. Login
2. Register
3. Display
4. Logout
5. Quit
"""

 olduser = []
 newuser = []
 userfile = open("Userfile.txt", "r")
 for eachline in userfile:
  n, p, l = eachline.split(' ', 2)
  olduser.append(User(l, n, p))
 userfile.close()

 user = None
 while True:
  #clear screen
  os.system('cls')
  cmd = input(menu + "\n>>>")
  if cmd == '1':
   tmp, olduser, newuser = login(olduser, newuser)
   if tmp != None:
    user = tmp
  elif cmd == '2':
   newuser, user = register(olduser, newuser)
  elif cmd == '3':
   display(user)
  elif cmd == '4':
   user = None
  elif cmd == '5':
   break
  else:
   print("Invalid option, please try again!")
   time.sleep(1)

 #update data
 olduser.extend(newuser)
 updatedUserfile = open("Userfile.txt", "w")
 for each in olduser:
  updatedUserfile.write(str(each))
  updatedUserfile.write('\n')

def main():
 string = """
PKU EECS
TY L
"""
 print(string)
 mainMenu()

if __name__ == '__main__':
 main()

另外笔者仍然觉得可以写得更简单,希望各位前辈们指教o(* ̄▽ ̄*)ブ


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP