今天趁着有兴致再来更一篇吧。今天做的是一个弱弱的用户管理系统,具有登录,退出登录,查询登录状态等简单的功能。
为什么是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(* ̄▽ ̄*)ブ