美文网首页
【第26天】python全栈从入门到放弃

【第26天】python全栈从入门到放弃

作者: 36140820cbfd | 来源:发表于2019-08-19 08:15 被阅读0次

    用反射做选课系统的代码

    login

    判断身份 并且根据身份实例化

    根据每个身份对应的类 让用户选择能够做的事情

    代码块
    # 用反射做选课系统的代码
    
     # login
    
    # 判断身份 并且根据身份实例化
    # 根据每个身份对应的类 让用户选择能够做的事情
    
    
    class Manager:
    
        OPERATE_DIC = [
    
            ('创造学生账号', 'create_student'),
    
            ('创建课程','create_course'),
    
            ('查看学生信息','check_student_info'),
    
        ]
    
        def __init__(self,name):
    
            self.name = name
    
        def create_student(self):
    
            print('创建学生账号')
    
        def create_course(self):
    
            print('创建课程')
    
        def check_student_info(self):
    
            print('查看学生信息')
    
    
    
    class Student:
    
        OPERATE_DIC = [
    
            ('查看所有课程', 'check_course'),
    
            ('选择课程', 'choose_course'),
    
            ('查看已选择的课程', 'choosed_course')
    
        ]
    
        def __init__(self,name):
    
            self.name = name
    
        def check_course(self):
    
            print('查看所有课程')
    
        def choose_course(self):
    
            print('选择课程')
    
        def choosed_course(self):
    
            print('查看已选择的课程')
            
            
    
    def login():
    
        username = input('user : ')
    
        password = input('pwd : ')
    
        with open('useinfo') as f:
    
            for line in f:
    
                user,pwd,ident = line.strip().split('|')       # ident = 'Manager'
    
                if user == username and pwd == password:
    
                    print('登录成功')
    
                    return username,ident   #返回用户名和身份
    
    
    import sys
    
    def main():
    
        usr,id = login()   #拿到用户名,和用户的身份
    
        print('user,id :',usr,id)
    
        file = sys.modules['__main__']
    
        cls = getattr(file,id)    #Manager = getattr(当前文件,'Manager')
    
        obj = cls(usr)        #相当于实例化角色
    
        operate_dic = obj.OPERATE_DIC
    
        while True:
    
            for num,i in enumerate(operate_dic,1):   #1表示序号从1开始
    
                print(num,i[0])   #打印每个元组的第一项,比如查看课程
    
            choice = int(input('请输入数字:'))
    
            choice_item = operate_dic[choice-1]   #拿到列表里面的元组
    
            getattr(obj,choice_item[1])()
    
    main()
    
    别跑,点个赞再走

    相关文章

      网友评论

          本文标题:【第26天】python全栈从入门到放弃

          本文链接:https://www.haomeiwen.com/subject/ruujsctx.html