课后练习 第一阶段:Python开发基础 day25 面向对象相关练习

day 25 作业

1.组合,多态和多态性,封装 整理出来

第一阶段:Python开发基础 day25 面向对对象三大特性之多态和封装、组合

2.统计对象name属性被查看了多少次

代码如下:

class Person:  # 定义一个类
    def __init__(self,name):  
        self.__name = name   # 设置一个name 属性用于接收传递过来的name值
        self.count = 0       # 定义一个count属性用于计数
    def get_name(self):
        self.count += 1      # get_name方法被执行一次计数加一
        print(self.__name)   # 打印name属性
        return f'name属性被查看了{self.count}次'

test = Person('foever')     # 实例化一个对象
for i in range(10):         # 设置一个循环
    print(test.get_name())  # 打印效果

3.统计一下类被实例化了多少次

class Person:  # 定义一个类
    count = 0  # 定义一个count属性用于计数
    def __init__(self,name):
        self.__name = name   # 设置一个name 属性用于接收传递过来的name值
        Person.count += 1    # 被实例化一次就会计数一次

for i in range(10):            # 设置一个循环
    str = Person('forever')    # 实例化类
print(Person.count)            #  打印实例化次数

4.通过property写一个计算圆形面积的类中有个area

import cmath  # 导入cmath 包 这样就可以使用pi
class Circle:  # 定义一个圆类
    def __init__(self,r):
        self.r = r    # 定义一个半径属性
    @property
    def get_area(self):  # 定义一个获得圆面积的方法
        return cmath.pi * self.r * self.r   # 返回圆的面积

r = int(input('请输入圆的半径:'))    # 接收用户输入进来圆的半径
circle = Circle(r)                    # 实例化一个圆的对象
area = circle.get_area                # 获取计算后的圆的面积
print(f'圆的面积是:{area:.2f}')      # 打印圆面积

5.选课系统的管理员注册,登录功能写完

文件目录结构:

settings.py

import os
FILE_PATH = os.path.dirname(os.path.dirname(__file__))
DB_PATH = os.path.join(FILE_PATH,'db')

admin.py

from interface import admin_interface
def register():
    print('欢迎来到管理员注册页面')
    username = input('请输入你的用户名:').strip()
    password = input('请输入你要注册账号的密码:').strip()
    msg = admin_interface.reg_interface(username,password)
    print(msg)
def login():
    print('欢迎来到管理员登陆页面')
    username = input('请输入你的用户名:').strip()
    password = input('请输入你的密码:').strip()
    flag,msg = admin_interface.login_interface(username,password)
    if flag:
        print(msg)
    else:
        print(msg)
def create_school():
    print('欢迎来到创建校区页面')

def create_teacher():
    print('欢迎来到创建讲师页面')

def create_course():
    print('欢迎来到创建课程页面')


func_dic = {
    '1':register ,
    '2':login ,
    '3':create_school,
    '4':create_teacher,
    '5':create_course,
}
msg = '''
1. 管理员注册
2. 管理员登录
3. 创建学校
4. 创建老师
5. 创建课程
q. 退出
'''

def run():
    while True:
        print(msg)
        choice = input('请做出你的选择:')
        if choice == 'q':
            print('已为你退出管理员界面')
            break
        if choice in '1,2,3,4,5':
            func_dic[choice]()
        else:
            print('你的选择有误,请重新选择')

src.py

from core import admin_view
def admin():
    print('欢迎来到管理员视图界面')
    admin_view.run()

def teacher():
    print('欢迎来到教师视图界面')

def student():
    print('欢迎来到学生视图界面')

func_dic = {
    '1':admin ,
    '2':teacher ,
    '3':student,
    'q':exit
}

msg = '''
    1.管理员界面
    2.教师界面
    3.学生界面
    q.退出
'''
while True:
    print(msg)
    choice = input('请选择你的操作:')
    if choice in '1,2,3,q':
        func_dic[choice]()
    else:
        print('你的输入有误,请重新输入')

db_handler.py

from conf import settings
import os
import pickle

def save_info(object):   # 定义一个保存信息的类
    file_dir = os.path.join(settings.DB_PATH, object.__class__.__name__.lower())  # 找到注册的那个类
    username = object.username # 传递过来的管理员的用户名
    file_path = os.path.join(file_dir,f'{username}')
    # print(admin_file_path)
    with open(file_path,'wb') as fw:
        pickle.dump(object,fw)

def read_info(username,file_dir):
    file_path = os.path.join(settings.DB_PATH,file_dir,username)
    if not os.path.exists(file_path):
        return False
    with open(file_path, 'rb') as fr:
        data = pickle.load(fr)
    return data

model.py

from db import db_handler


class Admin:
    def __init__(self, username, password):
        self.username = username
        self.password = password
        self.save()
    def save(self):
        db_handler.save_info(self)

admin_interface.py

from db import model,db_handler
def reg_interface(username,password):
    model.Admin(username,password)
    return '恭喜你注册成功'

def login_interface(username,password,file_dir =  'admin'):
    data = db_handler.read_info(username,file_dir)
    if not data :
        return False,'用户名不存在'
    if password == data.password :
        return True,'登陆成功'
    else:
        return False,'密码错误'

博客地址

https://www.cnblogs.com/foreversun92

posted @ 2019-08-28 20:33  foreversun92  阅读(207)  评论(0编辑  收藏  举报