面向对象案例——个人博客开发

个人博客用户模块

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()


你可能感兴趣的:(面向对象案例——个人博客开发)