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

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


为什么是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(* ̄▽ ̄*)ブ


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值