zoukankan      html  css  js  c++  java
  • 选课系统

    作业要求:

    1. 创建北京、上海 2 所学校
    2. 创建linux , python , go 3个课程 , linuxpy 在北京开, go 在上海开
    3. 课程包含,周期,价格,通过学校创建课程 
    4. 通过学校创建班级, 班级关联课程、讲师
    5. 创建学员时,选择学校,关联班级
    5. 创建讲师角色时要关联学校, 
    6. 提供两个角色接口
    6.1 学员视图, 可以注册, 交学费, 选择班级,
    6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩 
    6.3 管理视图,创建讲师, 创建班级,创建课程

    7. 上面的操作产生的数据都通过pickle序列化保存到文件里

      1 import pickle
      2 
      3 class School(object):
      4     def __init__(self, addr):
      5         self.addr = addr
      6 
      7     def hire_teacher(self):
      8         '''
      9         保存老师信息
     10         :return:
     11         '''
     12         teacher_dict = pickle.load(open('teacher', 'rb'))
     13         T = 0
     14         while T>=0:
     15             name = input('请输入老师名')
     16             for key in teacher_dict:
     17                 if key == name:
     18                     print('此老师已存在,请重新输入')
     19                     T+=1
     20             T-=1
     21         age = input('请输入年龄')
     22         print('创建成功')
     23         teacher = Teacher(name, age, self.addr)
     24         teacher_dict[name] = teacher
     25         pickle.dump(teacher_dict, open('teacher', 'wb'))
     26 
     27     def create_course(self):
     28         '''
     29         保存课程信息
     30         :return:
     31         '''
     32         course_dict = pickle.load(open('course', 'rb'))
     33         name = input('请输入课程名')
     34         money = input('请输入课程价钱')
     35         cycle = input('请输入课程周期')
     36         course_dict[name] = Course(name, money, cycle)
     37         pickle.dump(course_dict, open('course', 'wb'))
     38 
     39     def create_class(self):
     40         '''
     41         创造班级,关联老师和课程
     42         :return:
     43         '''
     44         teacher_dict = pickle.load(open('teacher', 'rb'))
     45         course_dict = pickle.load(open('course', 'rb'))
     46         class_dict = pickle.load(open('class', 'rb'))
     47 
     48         name = input('请输入班级名:')
     49         for key in teacher_dict:
     50             print(key)
     51         teacher = input('请选择上课老师')
     52         for key in course_dict:
     53             print(key)
     54         course = input('请输入对应课程')
     55         if teacher in class_dict:
     56             class_dict [teacher].append(Classroom(name, course_dict[course], teacher_dict[teacher]))
     57         else:
     58             class_dict [teacher] = [Classroom(name, course_dict[course], teacher_dict[teacher])]
     59         print('创建成功')
     60         pickle.dump(class_dict, open('class', 'wb'))
     61 
     62 
     63 class Course (object):
     64     def __init__(self, course, money, cycle):
     65         self.course = course
     66         self.money = money
     67         self.cycle = cycle
     68 
     69     def show_course(self):
     70         print('课程名:%s; 价钱: %s; 上课周期:%s' % (self.course, self.money, self.cycle))
     71 
     72 class Classroom(object):
     73     def __init__(self, name, course, teacher):
     74         self.name = name
     75         self.course = course
     76         self.student = []
     77         self.teacher = teacher
     78 
     79     def show_classroom(self):
     80         self.teacher.show_teacher()
     81         print ('班级名: %s' %  self.name)
     82         self.course.show_course()
     83 
     84 
     85 class Student(object):
     86     def __init__(self, name):
     87         self.name = name
     88         self.account = 0
     89         self.sorce = 0
     90         self.course = []
     91 
     92 
     93 
     94 class Teacher(object):
     95     def __init__(self, name, age, addr):
     96         self.name = name
     97         self.age = age
     98         self.addr = addr
     99 
    100     def show_teacher(self):
    101         print('''老师姓名:%s 
    老师年龄: %s
    老师所在学校:%s''' % (self.name, self.age,self.addr))
    102 
    103 
    104 def set_student():
    105     '''
    106     学生登陆或注册,选课
    107     :return:
    108     '''
    109     class_dict = pickle.load(open('class', 'rb'))
    110     student_dict = pickle.load(open('student', 'rb'))
    111     name = input('请输入学生姓名').capitalize()
    112     obj = Student(name)
    113     if name in student_dict:
    114         print ('欢迎 %s' % name)
    115     else:
    116         print('注册成功')
    117     while True:
    118         for key in class_dict:
    119             a = class_dict[key]
    120             a[-1].show_classroom()
    121             print('*' *30)
    122         while True:
    123             b = input('请选择课程对应的老师').capitalize()
    124             if b in class_dict:
    125                 c = class_dict[b][-1]
    126                 break
    127             else:
    128                 print('没有该老师,请重新选择')
    129         k = input('请确认付费,y = yes, 其他键 = 返回, q = 退出').lower()
    130         if k == 'y':
    131             while True:
    132                 if obj.account >= int(c.course.money):
    133                     obj.account -= int(c.course.money)
    134                     print('扣费成功')
    135                     obj.course.append(c)
    136                     c.student.append(Student(name))
    137                     y = input('请选择:1 继续选课, 其他键 = 退出')
    138                     if y == '1':
    139                         break
    140                     else:
    141                         obj.course.append(c)
    142                         student_dict[name] = obj
    143                         pickle.dump(class_dict, open('class', 'wb'))
    144                         pickle.dump(student_dict, open('student', 'wb'))
    145                         exit()
    146                 else:
    147                     charge = input('余额不足,y = 充值,q = 退出, 其他键返回').lower()
    148                     if charge == 'y':
    149                         mk = input('请输入充值金额')
    150                         obj.account += int(mk)
    151                     elif charge == 'q':
    152                         exit()
    153                     else:
    154                         break
    155         elif k == 'q':
    156             exit()
    157         else:
    158             continue
    159 
    160 def check_student(name):
    161     '''
    162     老师上课,查看学生,或修改成绩
    163     :param name:
    164     :return:
    165     '''
    166 
    167     class_dict = pickle.load(open('class', 'rb'))
    168     a = class_dict[name]
    169 
    170     for k, i in enumerate(a,1):
    171         print(k)
    172         print('班级名:%s
    课程:%s'% (i.name, i.course.course))
    173         print ("*" * 60)
    174     c = input('请选择班级对应的数字')
    175     while True:
    176         if int(c)>0 and int(c)<=len(a):
    177             e = input('请选择:1 上课; 2 查看班级成员,3 修改学员成绩,其他键 = 退出')
    178             if e == '1':
    179                 print ('开始上课...')
    180             elif e == '2':
    181                 d = a[int(c)-1].student
    182                 for o in d:
    183                     print ('学生姓名 %s' % o.name)
    184             elif e == '3':
    185                 d = a[int(c)-1].student
    186                 for n, j in enumerate(d, 1):
    187                     print ('%s. 学生姓名 %s, 分数 %s' % (n, j.name, j.sorce))
    188                 f = input('请选择学生的对应数字')
    189                 if int(f)>0 and int(f)<=len(d):
    190                     sorce = input('修改的分数为')
    191                     d[int(f)-1].sorce = sorce
    192                     pickle.dump(class_dict,open('class', 'wb'))
    193         else:
    194             print ('输入有误')
    195 
    196 def manage():
    197     '''
    198     管理员菜单
    199     :return:
    200     '''
    201     while True:
    202         b = input('输入学校地址: 北京; 上海')
    203         if b == '北京' or b =='上海':
    204             obj = School(b)
    205             break
    206         else:
    207             print('没有这地址')
    208             continue
    209     while True:
    210         a = input('请选择: 1 创建老师, 2 创建课程, 3 创建班级, 4 返回')
    211         if a == '1':
    212             obj.hire_teacher()
    213         elif a == '2':
    214             obj.create_course()
    215         elif a == '3':
    216             obj.create_class()
    217         elif a=='4':
    218             break
    219         else:
    220             print ('输入有误')
    221 
    222 def main():
    223     '''
    224     主菜单
    225     :return:
    226     '''
    227     while True:
    228         a = input('请选择: 1 学生; 2 老师, 3 管理员, 其他键 退出')
    229         if a == '1':
    230             set_student()
    231         elif a == '2':
    232             name = input('请输入老师姓名').capitalize()
    233             teacher_dict = pickle.load(open('teacher', 'rb'))
    234             if name in teacher_dict:
    235                 check_student(name)
    236             else:
    237                 print ('不是我们学校的老师,请重新输入')
    238         elif a == '3':
    239             manage()
    240         else:
    241             exit()
    242 
    243 
    244 
    245 main()
  • 相关阅读:
    微信 token ticket jsapi_ticket access_token 获取 getAccessToken get_jsapi_ticket方法
    PHP 日志 记录 函数 支持 数组 对象 新浪 sae 环境 去掉 空格 换行 格式化 输出 数组转字符串
    原生 原始 PHP连接MySQL 代码 参考mysqli pdo
    PHP 数字金额转换成中文大写金额的函数 数字转中文
    使用PHPMailer发送带附件并支持HTML内容的邮件
    设置输出编码格式 header 重定向 执行时间 set_time_limit 错误 报告 级别 error_reporting
    html5 bootstrap pannel table 协议 公告 声明 文书 模板
    指向指针的指针
    二级指针
    c语言:当指针成为参数后
  • 原文地址:https://www.cnblogs.com/nikitapp/p/6336697.html
Copyright © 2011-2022 走看看