面向对象

一、
创建一个父类Schoolmember,代表学校成员
创建一个老师的子类Teacher继承父类,实例化时候赋予老师姓名(name)、年龄(age)、和薪水(salary)
创建一个学生的子类Student继承父类,实例化时候赋予学生姓名(name)、年龄(age)、和性别(sex)
Teacher类有一个方法打印出老师的姓名和年龄还有薪水
Student类有一个方法打印出学生的姓名和年龄还有性别

请用继承的思想来写出实例化的代码逻辑和方法的代码逻辑
(提示:相同的部分可以提出来放在父类里面,不同的部分在子类完成)

二、
1、定义一个用户类,定义注册用户的方法。执行方法,让用户输入用户名和密码
如果文件中存在该用户,提示用户已存在,继续让用户输入
如果用户不存在,则生成如下格式的字典,保存在文件里面
例如{ "用户名":{"密码":"123",'状态':False,'锁定时间': 9:38:10} }
{
    "egon":{"password":"123",'status':False,'timeout':0},
}
每注册一个人在字典里面添加多一个用户字典。状态默认为False,锁定时间默认为0
{
    "egon":{"password":"123",'status':False,'timeout':0},
    "alex":{"password":"456",'status':False,'timeout':0},
}
然后把字典信息写入文本中(利用json)

2、定义一个对象的方法db,例如 执行obj.db(把方法当做属性调用)可以拿到用户数据结构

3、定义一个登录方法, 用户输入用户名和密码,如果用户名和密码都正确,登录成功,将该用户状态(status)修改为True,
  如果用户名错误一直让该用户输入。 
  如果用户名正确,密码错误,则继续输入,直到密码错误次数达到三次将为该用户设置锁定时间(锁定时间为20s,即20s之内不允许登录,提示锁定状态。  20s之后才能登录).

-----------------------答案-------------------------------

一、
class SchoolMember():
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def get_info(self):
        print(self.name, self.age)

class Teacher(SchoolMember):

    def __init__(self, name, age, salary):
        super().__init__(name, age)
        self.salary = salary

    def get_info(self):
        super().get_info()
        print(self.salary)

class Student(SchoolMember):

    def __init__(self, name, age, sex):
        super().__init__(name, age)
        self.sex = sex

    def get_info(self):
        super().get_info()
        print(self.sex)

t = Teacher('ben', 20, 7000)
t.get_info()

二、
import json,time
class User():
    def register(self):
        data = self.db
        while 1:
            username = input('请输入用户名>>:')
            password = input('请输入密码>>:')
            if username in data:
                print('用户名已存在')
            else:
                data[username] = {'password':password, 'status':False, 'timeout':0}
                self.write_data(data)
                print('注册成功')
                break
    @property
    def db(self):

        with open('a.txt', 'r') as f:
            data = f.read()
            if data:
                data = json.loads(data)
            else:
                data = {}

            return data

    def write_data(self, data):
        with open('a.txt', 'w') as f:
            json.dump(data, f)

    def login(self):
        num = 0
        while 1:
            username = input('请输入用户名>>:')
            password = input('请输入密码>>:')
            data = self.db
            if username in data:
                if time.time() - data[username]['timeout'] > 20:
                    if data[username]['password'] == password:
                        print('登录成功!')
                        data[username]['status'] = True
                        self.write_data(data)
                        break
                    else:
                        num += 1
                        if num == 3:
                            print('密码次数以达到3次,锁定20s')
                            data[username]['timeout'] = time.time()
                            self.write_data(data)
                            break
                        else:
                            print('密码错误%s次'%num)
                else:
                    print('用户在锁定状态中,20s之后再登录')
                    break
            else:
                print('用户名错误')
u = User()
# print(u.db)
# u.register()
u.login()

 

posted @ 2018-12-26 22:10  菜鸟SSS  阅读(147)  评论(0编辑  收藏  举报