个人博客用户模块
OOA:对用户需要的功能,以及功能中要求的限制进行分析,需求分析
用户对象:封装用户数据,处理和用户相关功能
系统对象: 核心功能
展示菜单:函数实现
功能分析——
系统相关的功能:(核心功能)用户注册、登录、退出
用户相关的功能:修改密码、完善资料
OOD:根据分析的结果进行代码结构的设计
User类型
属性(特征):账号username、 密码password 、昵称nickname
性别gender、邮箱email 、手机phone、 用户是否激活is_active
备注remark
行为(方法):修改密码: user_change_password()
完善个人资料: user_perfect_info()
Core类型
属性(特征):所有用户users、 所有文章articles 、当前在线用户online
行为(方法):用户注册: register()
用户登录: login()
用户退出: logout()
存储数据: dump_data()
读取数据: load_data()
OOP: 根据设计的软件结构进行开发
搭建简单项目结构,按照结构完善项目
OOT: 测试功能运行结果
函数中调用函数:流程
对象中的方法调用其他对象的方法:协作
代码如下——
# 引入项目中依赖的模块
import sys
import time
class User:
"""
用户类型
"""
def __init__(self, username, password, nickname):
"""初始化用户数据"""
self.__username = username
self.__password = password
self.__nickname = nickname
self.__gender = "未完善"
self.__age = 0
self.__email = "未完善"
self.__phone = "未完善"
self.__is_active = True
self.__remark = "未完善"
def set_username(self, username):
self.__username = username
def get_username(self):
return self.__username
def set_password(self, password):
self.__password = password
def get_password(self):
return self.__password
def set_nickname(self, nickname):
self.__nickname = nickname
def get_nickname(self):
return self.__nickname
def set_gender(self, gender):
self.__gender = gender
def get_gender(self):
return self.__gender
def set_age(self, age):
self.__age = age
def get_age(self):
return self.__age
def set_email(self, email):
self.__email = email
def get_email(self):
return self.__email
def set_phone(self, phone):
self.__phone = phone
def get_phone(self):
return self.__phone
def set_is_active(self, is_active):
self.__is_active = is_active
def get_is_active(self):
return self.__is_active
def set_remark(self, remark):
self.__remark = remark
def get_remark(self):
return self.__remark
def user_change_password(self):
"""修改用户登录密码"""
# 用户输入旧密码
old_password = input("请输入您的旧密码: ")
if old_password != self.__password:
print("旧密码输入有误")
return self.user_change_password()
# 用户输入新密码
new_password = input("请输入您的新密码: ")
# 确认新密码
confirm_password = input("请确认您的新密码: ")
if new_password == confirm_password:
print("密码修改成功啦!")
# 将新密码保存
self.__password = new_password
# 返回结果
return True
else:
return False
def user_perfect_info(self):
"""完善用户资料"""
gender = input("请输入您的性别: ")
age = input("请输入您的年龄: ")
email = input("请输入您的邮箱: ")
phone = input("请输入您的电话: ")
remark = input("请输入您的备注: ")
# 将资料更新到系统中
self.__gender = gender
self.__age = age
self.__email = email
self.__phone = phone
self.__remark = remark
# 资料完善成功
print("资料完善成功,棒棒哒!")
return True
class Article:
"""文章类型"""
class Core:
"""
系统核心类型
"""
def __init__(self):
# 记录系统中所有的注册用户
self.users = dict()
# 记录系统中所有文章数据
self.articles = dict()
# 记录登录用户
self.online = None
def register(self):
"""用户注册"""
# 提示用户输入注册信息
username = input("请输入你的注册账号: ")
if username in self.users:
print("您注册的账号已存在,请重新注册")
return False
password = input("请创建一个密码: ")
nickname = input("请创建一个专属昵称吧: ")
# 创建并注册对象
user = User(username, password, nickname)
self.users[username] = user
# 注册成功
return True
def login(self):
"""用户登录"""
# 提示用户输入账号和密码
username = input("请输入您的账号: ")
password = input("请输入您的密码: ")
if username in self.users and password == self.users.get(username).get_password():
# 登录成功,记录当前用户
self.online = self.users.get(username)
return True
else:
# 登录失败
print("账号或密码有误,请重新输入")
return self.login()
def look_user_data(self):
"""查看用户资料"""
print("用户名: ", self.online.get_username())
print("密码: ", self.online.get_password())
print("昵称: ", self.online.get_nickname())
print("性别: ", self.online.get_gender())
print("年龄: ", self.online.get_age())
print("邮箱: ", self.online.get_email())
print("电话: ", self.online.get_phone())
print("备注: ", self.online.get_remark())
return True
def logout(self):
"""用户退出"""
print("系统即将退出...")
time.sleep(3)
sys.exit(1)
"""各种函数"""
def show_login():
"""展示登录菜单"""
print("*" * 30)
print("\t\t1.用户登录")
print("\t\t2.用户注册")
print("\t\t3.退出系统")
print("*" * 30)
choice = input("请输入您的选项: ")
if choice == "1":
# 用户登录
res = core.login()
if res:
# 登录成功,展示首页
return show_index()
else:
# 登录失败,重新登录
return show_login()
elif choice == "2":
# 用户注册
return show_register()
elif choice == "3":
# 退出系统
return core.logout()
def show_register():
"""展示注册菜单"""
print("*" * 30)
print("\t\t尊敬的会员")
print("\t\t欢迎您的注册")
print("\t\t根据提示完成注册")
print("*" * 30)
# 用户注册
res = core.register()
if res:
# 注册成功,显示登录页面
return show_login()
else:
# 重新注册
return show_register()
def show_index():
"""展示首页菜单"""
print("*" * 30)
print("\t%s,欢迎光临本系统" % core.online.get_nickname())
print("\t1.修改登录密码")
print("\t2.完善用户资料")
print("\t3.查看用户资料")
print("\t4.返回登录菜单")
print("\t5.退出系统")
choice = input("请输入您的选项: ")
if choice == "1":
# 修改登录密码
res = core.online.user_change_password()
if res:
# 密码修改成功
return show_login()
else:
# 密码修改失败
return core.online.user_change_password()
elif choice == "2":
# 完善用户资料
res = core.online.user_perfect_info()
if res:
return show_index()
else:
return core.online.user_perfect_info()
elif choice == "3":
# 查看用户资料
core.look_user_data()
input("按任意键返回首页")
return show_index()
elif choice == "4":
# 返回登录菜单
return show_login()
elif choice == "5":
# 退出系统
return core.logout()
else:
input("没有这个选项,按任意键返回首页")
return show_index()
# 系统运行全局数据,存储在系统类型中,创建系统对象
core = Core()
def engine():
"""引擎"""
show_login()
# 启动程序
engine()