利用组合和继承的知识实现选课系统

需求:
1.可以创建学员或者老师
2.学校关联课程
3.课程关联老师
4.学生创建时要选择学校并选择班级
5.学生和老师的实例要储存起来,以后还能调用出来(要求不同学生分开名字储存)

import hashlib
import pickle
import time
import os


class Filename:#利用时间戳完成命名
    def Name(self):
        file_name = hashlib.md5()
        file_name.update(str(time.time()).encode("utf8"))
        return file_name.hexdigest()


class All_File:#文件的写操作
    def save(self, file_name):
        pickle.dump(self, open(file_name, "wb"))


class School:
    def __init__(self, name):
        self.name = name
        self.cls = []


class Student(All_File, Filename):
    def __init__(self, name, school, cls):
        self.name = name
        self.school = school
        self.cls = cls

    def change_dir(self):
        os.chdir("学员")


class Course:
    def __init__(self, name, addr, price, period):
        self.name = name
        self.addr = addr
        self.price = price
        self.school = period


class Teacher(All_File, Filename):
    def __init__(self, name, school):
        self.name = name
        self.school = school

    def change_dir(self):
        os.chdir("教师")


class Cla:
    def __init__(self, name, course):
        self.name = name
        self.course = course
        self.teacher = []


S_Beijing = School("Beijing_School")
S_Shanghai = School("Shanghai_School")

C_Linux = Course("Linux", S_Beijing, 10000, "1 year")
C_Python1 = Course("Python", S_Beijing, 8000, "8 month")
C_Go1 = Course("Go", S_Shanghai, 7000, "1.2 year")

C_Python2 = Cla("Python班", C_Python1)
C_Linux = Cla("Linux班", C_Linux)
C_Go2 = Cla("Go班", C_Go1)

S_Beijing.cls.append(C_Python2)
S_Beijing.cls.append(C_Linux)
S_Shanghai.cls.append(C_Go2)

while True:
    Choice = input("创建学员或者老师-->")
    if Choice == "学员":
        name = input("您的名字-->")
        menu = {"1": "北京校区",
                "2": "上海校区"}
        print(menu)
        school = menu[input("您的校区-->")]
        if school == "北京校区":
            cls_list = []
            school = S_Beijing
            for cls in S_Beijing.cls:
                cls_list.append(cls.name)
            L = range(0, len(cls_list))
            for i in L:
                print({str(i): cls_list[i]})
            clas = S_Beijing.cls[int(input("您的班级-->"))]
        if school == "上海校区":
            school = S_Shanghai
            for cls in S_Shanghai.cls:
                print(cls.name)
            clas = S_Shanghai.cls[int(input("您的班级-->"))]

        student = Student(name, school, clas)
        print("您的名字是%s 学校是%s 班级是%s" % (student.name, student.school.name, student.cls.name))
        student.change_dir()
        student.save(student.Name())
    elif Choice == "教师":
        name = input("您的名字-->")
        menu = {"1": "北京校区",
                "2": "上海校区"}
        print(menu)
        school = menu[input("您的校区-->")]
        if school == "北京校区":
            school = S_Beijing
        elif school == "上海校区":
            school = S_Shanghai
        teacher = Teacher(name,school)
        print("您的名字是%s 学校是%s " % (teacher.name, teacher.school.name))
        teacher.change_dir()
        teacher.save(teacher.Name())
    else:
        print("输入有误,重新输入")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值