zoukankan      html  css  js  c++  java
  • 〖Demo〗-- 选课系统

    【选课系统】

    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()
  • 相关阅读:
    列表、元组、字典练习
    周总结04
    站立会议07
    人月神话阅读笔记01
    站立会议06
    站立会议05
    站立会议04
    典型用户需求分析第一期
    站立会议03
    站立会议02
  • 原文地址:https://www.cnblogs.com/SHENGXIN/p/7616496.html
Copyright © 2011-2022 走看看