python登录面向对象,【python】面向对象方式实现注册、登录、查询功能

实现注册、登录、查询功能

(1)注册

(2)登录

(3)退出登录

首先附上另一个解法:

面向对象与面向过程的区别

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

8c06573f89fa

面向对象

二者的优点与缺点

面向过程

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;

比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。

缺点:没有面向对象易维护、易复用、易扩展

面向对象

优点:易维护、易复用、易扩展,

由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。

缺点:性能比面向过程低

附上代码:

class User:

def __init__(self,username,pwd):

self.username = username

self.pwd = pwd

def __str__(self):

return 'username:{},pwd:{}'.format(self.username,self.pwd)

class DB:

"""

单例模式

"""

instance = None

def __new__(cls, *args, **kwargs):

if DB.instance is None:

DB.instance = super().__new__(cls)

return DB.instance

def __init__(self):

self.__pool = []

def save_user(self,user):

"""

存储数据

:param user:

:return:

"""

self.__pool.append(user)

def find_user_by_username(self,username):

"""

查找数据

:param username:

:return:

"""

for user in self.__pool:

if username == user.username:

return user

return None

def get_all(self):

return self.__pool[:]

DB1 = DB()

# DB2 = DB()

print(id(DB1))

# 面向过程 ===》 模块划分

class View:

def show_info(self,info):

opt = input(info)

return opt

def register_info(self):

"""

读取用户信息

:return:

"""

username = input("请输入您的账号:\n")

pwd = input("请输入您的密码:\n")

# self.judge(username,pwd)

# def judge(self,username,pwd):

if len(username) <6 or len(username) > 9:

return print("此账号不合法,长度区间应该在6至9位!")

return None

if len(pwd) < 6 or len(pwd) > 9:

return print("您的密码不合法!")

return None

return User(username,pwd)

def show_user_list(self,users):

"""

展示用户信息

:param users:

:return:

"""

for user in users:

print(user)

class Service:

def __init__(self):

self.DB1 = DB()

def register(self,user):

# View.judge(user.username,user.pwd)

exist_user = self.DB1.find_user_by_username(user.username)

if exist_user is not None:

return print('该账号已经存在!\n')

self.DB1.save_user(user)

print('用户注册成功!\n')

def login(self,user):

"""

用户注册

:param user:

:return:

"""

# View.judge(user.username, user.pwd)

exist_user = self.DB1.find_user_by_username(user.username)

if exist_user is None:

print("用户账号或密码错误\n")

return None

if exist_user.pwd != user.pwd:

print('用户账号或密码错误\n')

return None

return exist_user

def list(self):

return self.DB1.get_all()

class App:

def __init__(self):

self.v = View()

self.s = Service()

self.cur_user = None

def start(self):

while True:

View_opt = self.v.show_info("请选择要进行的操作: \n (1)注册\n (2)登录\n (3)退出\n")

# v.show_info("请选择要进行的操作: \n (1)查看当前用户信息\n (2)查看用户列表\n(3)退出\n")

if View_opt == "1":

user = self.v.register_info()

self.s.register(user)

if View_opt == "2":

user = self.v.register_info()

# 登录

login_user = self.s.login(user)

if login_user is not None:

self.cur_user = login_user

self.show_home()

if View_opt == "3":

print("退出登录~")

break

def show_home(self):

while True:

user_opt = self.v.show_info("请选择要进行的操作: \n (1)查看当前用户信息\n (2)查看用户列表\n(3)退出\n")

if user_opt == "1":

print(self.cur_user)

if user_opt == "2":

# 查看用户列表

users = self.s.list()

self.v.show_user_list(users)

if user_opt == "3":

break

app = App()

app.start()

执行结果:

请选择要进行的操作:

(1)注册

(2)登录

(3)退出

1

请输入您的账号:

Zurich

请输入您的密码:

123456

用户注册成功!

请选择要进行的操作:

(1)注册

(2)登录

(3)退出

1

请输入您的账号:

Alzacar

请输入您的密码:

234567

用户注册成功!

请选择要进行的操作:

(1)注册

(2)登录

(3)退出

2

请输入您的账号:

Zurich

请输入您的密码:

123456

请选择要进行的操作:

(1)查看当前用户信息

(2)查看用户列表

(3)退出

1

username:Zurich,pwd:123456

请选择要进行的操作:

(1)查看当前用户信息

(2)查看用户列表

(3)退出

2

username:Zurich,pwd:123456

username:Alzacar,pwd:234567

请选择要进行的操作:

(1)查看当前用户信息

(2)查看用户列表

(3)退出

3

请选择要进行的操作:

(1)注册

(2)登录

(3)退出

3

退出登录~

注释:此代码块在登录时,若输入的密码长度不符合(6至9位)会报错@-@

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值