• python 学习分享-实战篇选课系统


    # 角色:学校、学员、课程、讲师
    # 要求:
    # 1. 创建北京、上海 2 所学校
    # 2. 创建linux , python , go 3个课程 , linuxpy 在北京开, go 在上海开
    # 3. 课程包含,周期,价格,通过学校创建课程
    # 4. 通过学校创建班级, 班级关联课程、讲师
    # 5. 创建学员时,选择学校,关联班级
    # 5. 创建讲师角色时要关联学校,
    # 6. 提供两个角色接口
    # 6.1 学员视图, 可以注册, 交学费, 选择班级,
    # 6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩
    # 6.3 管理视图,创建讲师, 创建班级,创建课程
    
    import pickle
    import os
    
    BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    db_path = BASE_PATH + '/db'
    admin_path  = db_path + '/admin'
    classes_path = db_path + '/classes'
    course_path = db_path + '/course'
    school_path = db_path + '/school'
    student_path = db_path + '/student'
    teacher_path = db_path + '/teacher'
    
    # with open(classes_path + '/1','r') as f:
    #     for line in f:
    #         print(line)
    
    class Admin_base(object):
        def __init__(self):
            pass
        #创建类方法,本身就是类的功能,不需要进行实例化,分别为存入和取出数据
        @staticmethod
        def save_pickle(save_dict,save_path):
            pickle.dump(save_dict,open(save_path,'wb'))
        @staticmethod
        def read_pickle(save_path):
            read_dict = pickle.load(open(save_path,'rb'))
            return read_dict
        #创建学校的方法
        @staticmethod
        def create_school():
            school_name = input('请输入学校名称:').strip()
            school_add = input('请输入学校地址:').strip()
            school_classes = input('请输入学校班级:').strip()
            school_course = input('请输入学校课程:').strip()
            school_teacher = input('请输入老师姓名:').strip()
            save_dict = {}
            save_dict['name'] = school_name
            save_dict['address'] = school_add
            save_dict['classes'] = school_classes
            save_dict['course'] = school_course
            save_dict['teacher'] = school_teacher
            save_path = school_path + '/%s%s'%(school_name,school_add)
            Admin_base.save_pickle(save_dict,save_path)
            #创建班级的方法
    
        @staticmethod
        def create_classes():
            classes_name = input('请输入班级名称:').strip()
            classes_course = input('请输入班级课程:').strip()
            save_dict = {}
            save_dict['name'] = classes_name
            save_dict['course'] = classes_course
            save_path = classes_path + '/%s'%(classes_name)
            Admin_base.save_pickle(save_dict, save_path)
            #创建老师
    
        @staticmethod
        def create_teacher():
            teacher_name = input('请输入老师名称:').strip()
            teacher_course = input('请输入课程名称:').strip()
            save_dict = {}
            save_dict['name'] = teacher_name
            save_dict['course'] = teacher_course
            save_path = teacher_path + '/%s' % (teacher_name)
            Admin_base.save_pickle(save_dict, save_path)
            #创建课程
    
        @staticmethod
        def create_course():
            course_name = input('请输入课程名称:').strip()
            course_teacher = input('请输入老师名称:').strip()
            save_dict = {}
            save_dict['name'] = course_name
            save_dict['course'] = course_teacher
            save_path = course_path + '/%s' % (course_name)
            Admin_base.save_pickle(save_dict, save_path)
            # 创建学生
    
        @staticmethod
        def create_student():
            student_name = input('请输入学生名称:').strip()
            student_course = input('请输入课程名称:').strip()
            save_dict = {}
            save_dict['name'] = student_name
            save_dict['course'] = student_course
            save_dict['school'] = 'None'
            save_path = student_path + '/%s' % (student_name)
            Admin_base.save_pickle(save_dict, save_path)
    
    class Student(Admin_base):
        def __init__(self):
            Admin_base.__init__(self)
        @staticmethod
        def student_option():
            username = input('请输入您的姓名:').strip()
            school_all = os.listdir(school_path)
            school_name_list = []
            for school_name in school_all:
                school_dict = Admin_base.read_pickle(school_path + '/%s'%(school_name))
                school_name_list.append(school_dict['name'])
            course_all = os.listdir(course_path)
            print('可选的学校如下:',school_name_list)
            school_option = input('请输入您选择的学校:').strip()
            print('可选的课程如下:',course_all)
            course_option = input('请输入您选择的课程:').strip()
            save_dict = {}
            save_dict['name'] = username
            save_dict['course'] = course_option
            save_dict['school'] = school_option
            save_path = classes_path + '/%s' % (username)
            Admin_base.save_pickle(save_dict, save_path)
    
    class Teacher(Admin_base):
        def __init__(self):
            Admin_base.__init__(self)
        @staticmethod
        def check_course():
            course_all = os.listdir(course_path)
            print('课程如下:',course_all)
            course_option = input('请选择您的课程:').strip()
            student_all = os.listdir(student_path)
            student_now_course = []
            for student_one in student_all:
                save_path = student_path + '/%s'%(student_one)
                save_dict = Admin_base.read_pickle(save_path)
                if  save_dict['course'] == course_option:
                    student_now_course.append(save_dict['name'])
                else:
                    pass
            print('您的学生列表:',student_now_course)
    
    
    
    
    
    def login_read():
        while 1:
            option = input('请选择您要进行的操作:'
                           '1.管理'
                           '2.学生'
                           '3.老师'
                           '4.退出')
            a = True
            while a:
                if option == '1':
                    username = input('请输入用户名:')
                    password = input('请输入密码:')
                    username_path = admin_path + '/%s'%(username)
                    if os.path.exists(username_path):
                        admin_dict = Admin_base.read_pickle(username_path)
                        if password == admin_dict['password']:
                            print('登录成功!')
                            option_next = input('请选择您要进行的操作:'
                                                '1.新建学校'
                                                '2.新建班级'
                                                '3.新建课程'
                                                '4.新建老师'
                                                '5.新建学生'
                                                '6.返回')
                            if option_next == '1':
                                Admin_base.create_school()
                                break
                            if option_next == '2':
                                Admin_base.create_classes()
                                break
                            if option_next == '3':
                                Admin_base.create_course()
                                break
                            if option_next == '4':
                                Admin_base.create_teacher()
                                break
                            if option_next == '5':
                                Admin_base.create_student()
                                break
                            if option_next == '6':
                                a = False
                            else:
                                print('输入有误!')
                                break
                        else:
                            print('密码错误!')
                            break
                    else:
                        print('用户名错误!')
                        break
                if option == '2':
                    Student.student_option()
                    break
                if option == '3':
                    Teacher.check_course()
                    break
                if option == '4':
                    exit()
                else:
                    print('输入错误!')
                    break
    
    
    # a = pickle.load(open(school_path + '/老男孩北京','rb'))
    # print(a)
    
    # a =  os.listdir(admin_path)
    # print(a)
    if __name__ == '__main__':
        login_read()
    
    # login_read()
    # save_dict = {'username':'admin','password':'admin'}
    # save_path = admin_path + '/admin'
    # Admin_base.save_pickle(save_dict,save_path)
  • 相关阅读:
    【沟通的艺术】你能勾住你的听众么?
    java环境变量配置
    20140613故障处理纪要
    FBReaderJ源代码编译配置
    怎样加入� android private libraries 中的包的源码
    petshop4.0 具体解释之中的一个(系统架构设计)
    java推断字符串是否为乱码
    php递归无限极分类
    SIP入门(二):建立SIPserver
    线程间的通信
  • 原文地址:https://www.cnblogs.com/laay/p/7266931.html
Copyright © 2020-2023  润新知