作业 选课系统
本节作业: 选课系统
角色:学校、学员、课程、讲师
要求:
1. 创建北京、上海 2 所学校
2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开
3. 课程包含,周期,价格,通过学校创建课程
4. 通过学校创建班级, 班级关联课程、讲师
5. 创建学员时,选择学校,关联班级
5. 创建讲师角色时要关联学校,
6. 提供两个角色接口
6.1 学员视图, 可以注册, 交学费, 选择班级,
6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩
6.3 管理视图,创建讲师, 创建班级,创建课程
7. 上面的操作产生的数据都通过pickle序列化保存到文件里
这几天烦心事情太多了,没法很好的专注,陆陆续续写了一个周。
我问了下同事,他们说他们初学的时候也就是一天就能写好,很受伤。
目前只有序列化这里没做,但是有思路了,有了实现的方法。写在最后边
1 # coding=utf-8 2 import time 3 import pickle 4 5 6 def log(a): 7 log_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) 8 b = str(log_time) 9 c = str(a) + str(b) + '\n' 10 with open('log.text', 'ab')as s: 11 s.write(pickle.dumps(c)) 12 13 class School(object): 14 def __init__(self, name, addr, city): 15 self.name = name # 这个名字是学校的 16 self.addr = addr # 办学地址 17 self.city = city # 办学城市 18 self.teacher_list = [] # 老师 19 self.student_list = [] # 学生 20 self.courese_list = [] # 开设课程 21 self.grades_list = [] # 班级 22 self.save_stud_id = [] # 储存stduID,不知道以后能不能用的,先创建 23 self.save_stud_pwd = [] 24 self.grades_name = [] 25 self.courese_name = [] 26 self.teacher_name = [] 27 self.student_name = [] 28 29 def creation_techer(self, teacher_obj): 30 a = '为 %s 老师办理上岗' % teacher_obj.name # 这个名字是实力类的 31 print(a) 32 log(a) 33 self.teacher_list.append(teacher_obj) 34 self.teacher_name.append(teacher_obj.name) 35 36 def baocun_studentId(self, obj_stuent): 37 print('为%s 同学办理入学手续' % obj_stuent.name) # 这里的名字也是实例的名字 38 self.student_list.append(obj_stuent) 39 self.student_name.append(obj_stuent.name) 40 self.save_stud_id.append(obj_stuent.stud_id) 41 42 def chuangjian_laoshi(self): 43 pass 44 45 def creation_course(self, course_type, pice, time): # 创建课程 46 a = '创建课程%s' % course_type 47 print(a) 48 self.courese_list.append(Course(course_type, pice, time)) 49 self.courese_name.append(course_type) 50 log(a) 51 52 def creation_grade(self, grade_name): # 创建班级 53 a = '创建班级%s' % grade_name 54 log(a) 55 self.grades_list.append(Grade(grade_name)) # 把类加进去了 56 self.grades_name.append(grade_name) # 保存班级姓名 57 def tell_school(self): #self, name, addr, city): 58 a = (''' 59 ----info of School:%s---- 60 Name:%s 61 Addr:%s 62 City:%s 63 Course:%s 64 Grade:%s 65 ''' % (self.name, self.name, self.addr, self.city,self.courese_name,self.grades_name)) 66 print(a) 67 log(a) 68 69 class School_number(object): 70 def __int__(self, name, age, sex): 71 self.name = name 72 self.age = age 73 self.sex = sex 74 75 76 class Course(): # 课程 77 def __init__(self, type, price, time): 78 self.type = type 79 self.price = price 80 self.time = time 81 82 def tell(self): 83 a = (''' 84 ----info of Course:%s---- 85 Type:%s 86 Price:%s 87 Time:%s 88 ''' % (self.type, self.type, self.price, self.time)) 89 print(a) 90 # f = open('teacher_acount.text', 'ab+') 91 # f.write(pickle.dumps(a)) 92 # f.close() 93 94 95 class Grade(): # 班级 这里再试试 96 def __init__(self, grade_name): 97 # super(Course,self).__int__(type) #班级关联课程跟讲师 98 self.grade_name = grade_name 99 # self.grade_all=[] 100 self.courese_type = [] 101 self.teacher_grade = [] 102 self.student_grade = [] 103 self.student_grade_name=[] #用于老师视图显示班级信息 104 self.teacher_grade_name=[] #用于老师视图显示班级信息 105 106 def add_course(self, obj_course): 107 self.courese_type.append(obj_course.type) 108 print('%s添加课程%s' % (self.grade_name, obj_course.type)) 109 110 def add_student(self, obj_stduent): 111 self.courese_type.append(obj_stduent.courese_class_student) #添加学生选择的课程 112 self.student_grade.append(obj_stduent) 113 self.student_grade_name.append(obj_stduent.name) 114 print('添加%s到班级学生列表' % obj_stduent.name) 115 116 def add_teacher(self, obj_teancher): 117 self.teacher_grade.append(obj_teancher) 118 self.teacher_grade_name.append(obj_teancher.name) 119 print('添加%s到班级老师列表' % obj_teancher.name) 120 121 def tell_student_grade(self): 122 for index, i in enumerate(self.student_grade): 123 print(self.student_grade[index].name,'in garde %s'%self.grade_name) 124 125 def teall_teacher_grade(self): 126 for index, i in enumerate(self.teacher_grade): 127 print(self.teacher_grade[index].name,'in garde %s'%self.grade_name) 128 129 130 class Student(School, Grade, Course): 131 def __init__(self, name, age, sex, stud_id, stud_pwd, money): 132 # Grade.__int__(self,type) 133 # super(Student, self).__init__(courese) # 关联班级 134 self.name = name 135 self.age = age 136 self.sex = sex 137 self.stud_id = stud_id 138 self.stud_pwd = stud_pwd 139 self.money = money 140 self.courese_class_student = [] #学生选的课程 141 self.grade_class_student = [] #学生加入的班级 142 143 def serch_school_and_enroll(self, obj_serch_school, obj_student): # 选择实例学校 144 print('选择学校%s' % obj_serch_school.name) 145 obj_serch_school.save_stud_id.append(self.stud_id) 146 obj_serch_school.save_stud_pwd.append(self.stud_pwd) 147 obj_serch_school.student_list.append(obj_student) 148 obj_serch_school.student_name.append(obj_student.name) 149 print('为%s 同学办理入学手续' % self.name) 150 151 # def zhuc_student(self,obj_school,obj_student): 152 # 153 # print('为%s 同学办理入学手续'%obj_student.name) 154 155 def serh_grade_student(self, obj_student,obj_grade): #这里我改了一下,这里不通顺 156 print('录入班级%s' % obj_grade.grade_name) 157 obj_grade.student_grade_name.append(self.name) # 添加班级名字到班级类文件夹$$$$$$$$$$$$$$$$$$$$$$$ 158 obj_grade.student_grade.append(obj_student) #添加实类到班级,好像没大有用 159 self.grade_class_student.append(obj_grade.grade_name) 160 print('班级%s选择成功,已将班级信息添加到班级类,学生类'%obj_grade.grade_name) 161 162 def serch_courese_student(self, obj_courese): # 这里选择课程也是实例 163 print('%s选择课程%s' % (self.name, obj_courese.type)) 164 print('您选择的课程价格为%s,周期为%s' % (obj_courese.price, obj_courese.time)) 165 self.courese_class_student.append(obj_courese.type) 166 167 def pay_courese_price(self, obj_course): 168 print('正在支付学费%s' % obj_course.price) 169 time.sleep(3) 170 self.money = float(self.money) - float(obj_course.price) 171 print('还剩学费%s' % self.money) 172 173 174 def tell(self): 175 a = (''' 176 ----info of Student:%s---- 177 Name:%s 178 Age:%s 179 Sex:%s 180 Student_ID:%s 181 Money:%s 182 Grade:%s 183 Course:%s 184 ''' % (self.name, self.name, self.age, self.sex, self.stud_id, self.money, self.grade_class_student, 185 self.courese_class_student)) 186 print(a) 187 f = open('student_acount.text', 'wb+') 188 f.write(pickle.dumps(a)) 189 f.close() 190 191 192 class Teacher(School_number, Grade): # 这里不知道对不对,我不继承学校,继承了学校成员,课程,班级 193 def __init__(self, name, age, sex): 194 super(Teacher, self).__int__(name, age, sex) ####我曹,这里是int!!!! 195 self.grade_teacher = [] #老师加入的班级 196 self.courese_teacher = [] #老师教的课程 197 198 def serch_courese_teacher(self, obj_courese): 199 print('%s老师选择课程%s' % (self.name, obj_courese.type)) 200 self.courese_teacher.append(obj_courese.type) 201 202 def serch_grade_teacher(self, obj_garde): 203 print('%s老师选择班级%s' % (self.name, obj_garde.grade_name)) 204 self.grade_teacher.append(obj_garde.grade_name) 205 206 def check_grades(self): 207 print('%s查看班级列表\n%s' % (self.name, self.grade_teacher)) 208 209 def check_student_grade_student(selfs, obj_grades): 210 print('%s查看%s学生列表\n%s' % (selfs.name, obj_grades.grade_name, obj_grades.student_grade)) ##这里不对,一会再屡屡, 211 212 def rec_student_score(self): # 修改分数 213 pass 214 215 def teaching(self, obj_grade,obj_course): 216 a=print('%s选择%s班级,上%s课程' % (self.name, obj_grade.grade_name,obj_course.type)) 217 print(a) 218 log(a) 219 def tell(self): 220 a = (''' 221 ----info of Teacher:%s---- 222 Name:%s 223 Age:%s 224 Sex:%s 225 Course:%s 226 Grade:%s 227 ''' % (self.name, self.name, self.age, self.sex, self.courese_teacher, self.grade_teacher)) 228 print(a) 229 # f = open('teacher_acount.text', 'ab+') 230 # f.write(pickle.dumps(a)) 231 # f.close() 232 233 234 # 创建两所学校 235 school_bj = School('北京python', '海淀', 'beijing') 236 school_sh = School('上海python', '浦东', 'shanghai') 237 # 创建三个课程,其中lunix,python在北京,go在上海 238 school_bj.creation_course('lunix', '5000', '30day') 239 lunix = school_bj.courese_list[0] 240 school_bj.creation_course('python', '15000', '90day') 241 python = school_bj.courese_list[1] 242 school_sh.creation_course('go', '10000', '60day') 243 go = school_sh.courese_list[0] 244 # 创建三位老师,给三个选择擅长课程 245 zhanggavin = Teacher('zhanggavin', '33', 'M') 246 zhanggavin.serch_courese_teacher(lunix) 247 zhanggavin.serch_courese_teacher(python) 248 egbert = Teacher('egbert', '30', 'm') 249 egbert.serch_courese_teacher(lunix) 250 egbert.serch_courese_teacher(python) 251 slem = Teacher('slem', '30', 'w') 252 slem.serch_courese_teacher(go) 253 # 为三位老师注册学校 254 school_bj.creation_techer(zhanggavin) 255 school_bj.creation_techer(egbert) 256 school_sh.creation_techer(slem) 257 # 创建班级三个班级,北方的教python,liunix,南方的教go 258 school_bj.creation_grade('1n1b_python_lunix') 259 yin1b = school_bj.grades_list[0] 260 school_bj.creation_grade('2n1b_lunix') 261 ern1b = school_bj.grades_list[1] 262 school_sh.creation_grade('3n1b_go') 263 sann1b = school_sh.grades_list[0] 264 school_bj.creation_grade('sinianji') #创建一个四年级,为了后边的比对 265 sannianj=school_bj.grades_list[2] 266 # 给三个班级选择老师 267 yin1b.add_course(python) 268 yin1b.add_course(lunix) 269 yin1b.add_teacher(zhanggavin) 270 yin1b.add_teacher(egbert) 271 ern1b.add_course(lunix) 272 ern1b.add_teacher(zhanggavin) 273 ern1b.add_teacher(egbert) 274 sann1b.add_course(go) 275 sann1b.add_teacher(slem) 276 sannianj.add_course(python) 277 # 老师同步班级资料 278 zhanggavin.serch_grade_teacher(yin1b) 279 zhanggavin.serch_grade_teacher(ern1b) 280 egbert.serch_grade_teacher(yin1b) 281 egbert.serch_grade_teacher(ern1b) 282 slem.serch_grade_teacher(sann1b) 283 # 生成几个学生先(self,name,age,sex,stud_id,stud_pwd,money): 284 hanmeimei = Student('韩梅梅', '18', 'w', '0001', '1234', '5000') 285 lilei = Student('李雷', '18', 'm', '0002', '1234', '15000') 286 wangyuyan = Student('王语嫣', '18', 'w', '0003', '1234', '8000') 287 # 注册学校,课程,班级 288 hanmeimei.serch_school_and_enroll(school_bj, hanmeimei) 289 hanmeimei.serch_courese_student(python) 290 hanmeimei.serh_grade_student(hanmeimei,yin1b) #这里不通顺,好气啊 291 lilei.serch_school_and_enroll(school_bj, lilei) 292 lilei.serch_courese_student(python) 293 lilei.serch_courese_student(lunix) 294 lilei.serh_grade_student(lilei,yin1b)#这里不通顺,好气啊 295 lilei.serh_grade_student(lilei,ern1b)#这里不通顺,好气啊 296 wangyuyan.serch_school_and_enroll(school_sh, wangyuyan) 297 wangyuyan.serch_courese_student(go) 298 wangyuyan.serh_grade_student(wangyuyan,sann1b)#这里不通顺,好气啊 299 # 300 # def inupt_grade(a,school,): 301 # global b 302 # for index,i in enumerate(school.grades_name): 303 # if a == i: 304 # a=school.grades_list[index] 305 # # print(a) 306 # # print(a.grade_name) 307 # b=a 308 # # print(a,'333') 309 310 if __name__ == '__main__': 311 big_flag=False 312 while not big_flag: 313 choose_user = input(''' 314 请选择您的角色: 315 1,管理员 316 2,老师 317 3,学生 318 ''') 319 if choose_user == '1': 320 flag = False 321 choose_school = input('请选择学校:1,北京学校 2,上海学校 q,按q返回上一层') 322 323 if choose_school == '1': # 这里是个骚操作 324 a = school_bj 325 326 if choose_school == '2': 327 a = school_sh 328 329 while not flag: 330 print('------显示学校信息如下------') 331 print('现有班级', a.grades_name) 332 print('现有老师', a.teacher_name) 333 print('现有课程', a.courese_name) 334 print('现有学生', a.student_name) 335 choose_fun = input('请选择功能:1,创建班级 2,创建讲师,3,创建课程 q,按q返回上一层') 336 if choose_fun == '1': 337 inpu_gradename = input('班级名称') 338 a.creation_grade(inpu_gradename) 339 for index, i in enumerate(a.grades_name): 340 if inpu_gradename == i: 341 inpu_gradename = a.grades_list[index] 342 # inupt_grade(inpu_gradename,school_bj) #执行找班级类的方法 343 # inupt_grade() 344 while not flag: 345 choose_grade_fuc = input('班级功能如下:1,班级添加学生 2,班级添加老师 q,按q退回上一界面') 346 if choose_grade_fuc == '1': 347 print('可添加的学生列表如下') 348 print(a.student_name) 349 ipt_s_g_st = input('请选择学生') 350 ipt_s_g_st_flage = False 351 for index, i in enumerate(a.student_name): 352 if ipt_s_g_st == i: 353 ipt_s_g_st = a.student_list[index] 354 ipt_s_g_st_flage = True 355 break 356 if ipt_s_g_st_flage is False: 357 print('请输入有效的学生名') 358 inpu_gradename.add_student(ipt_s_g_st) 359 print('当前班级学生列表如下') 360 inpu_gradename.tell_student_grade() 361 if choose_grade_fuc == '2': 362 print('可添加的老师列表如下') 363 print(a.teacher_name) 364 ipt_s_g_te = input('请选择老师') 365 ipt_s_g_te_flage = False 366 for index, i in enumerate(a.teacher_name): 367 if ipt_s_g_te == i: 368 ipt_s_g_te = a.teacher_list[index] 369 ipt_s_g_te_flage = True 370 break 371 if ipt_s_g_te_flage is False: #这里多理解一下 372 print('请输入有效的老师名') 373 inpu_gradename.add_teacher(ipt_s_g_te) # inpu_gradename是个班级实例 374 print('当前班级老师列表如下') 375 inpu_gradename.teall_teacher_grade() 376 if choose_grade_fuc == 'q': 377 break 378 if choose_fun == '2': 379 print('请输入教师信息') 380 ipt_t_name = input('姓名') 381 ipt_t_age = input('年龄') 382 ipt_t_sex = input('性别') 383 ipt_t_courese = input('擅长课程') 384 course_flag = False 385 for index, i in enumerate(a.courese_name): 386 if ipt_t_courese == i: 387 ipt_t_courese = a.courese_list[index] 388 course_flag = True 389 break 390 if course_flag is False: 391 print('你输入的课程不在课程库') 392 ipt_t_grade = input('分配班级') 393 garde_flag = False 394 for index, i in enumerate(a.grades_name): 395 if ipt_t_grade == i: 396 ipt_t_grade = a.grades_list[index] 397 garde_flag = True 398 break 399 if garde_flag is False: 400 print('你输入的班级不存在') 401 if garde_flag is True: 402 ''' 403 这一块相当重要,这里是同步数据的,后边学生模块也能用到类似的 404 ''' 405 ipt_t_name = Teacher(ipt_t_name, ipt_t_age, ipt_t_sex) 406 ipt_t_name.serch_courese_teacher(ipt_t_courese) 407 ipt_t_name.serch_grade_teacher(ipt_t_grade) 408 a.creation_techer(ipt_t_name) 409 ipt_t_grade.add_course(ipt_t_courese) 410 ipt_t_grade.add_teacher(ipt_t_name) 411 ipt_t_name.tell() 412 413 if choose_fun == '3': 414 input_course = input('请输入课程名称') 415 input_price = input('课程价格') 416 input_time = input('课程周期') 417 a.creation_course(input_course, input_price, input_time) 418 for index, i in enumerate(a.courese_name): 419 if input_course == i: 420 input_course = a.courese_list[index] 421 input_course.tell() 422 if choose_fun == 'q': 423 break 424 425 if choose_school == 'q': 426 flag = True 427 428 if choose_user == '2': 429 teacher_fun_flag=False #以后用的到 430 while not teacher_fun_flag: 431 teacher_name = input('请输入姓名以便查找,或者按q返回:::') 432 pwd = input('请输入密码') # 这里假装有个密码 433 teacher_name_flag=False 434 if teacher_name in school_bj.teacher_name and pwd == '1234': # 这里是个骚操作 435 a = school_bj 436 teacher_name_flag=True 437 if teacher_name in school_sh.teacher_name and pwd == '1234': 438 a = school_sh 439 teacher_name_flag= True 440 if teacher_name=='q': 441 break 442 if teacher_name_flag is False: 443 print('该老师不存在') 444 if teacher_name_flag is True: 445 for index, i in enumerate(a.teacher_name): 446 if teacher_name == i: 447 teacher_name = a.teacher_list[index] 448 # teacher_name_school_teacherlist=teacher_name 449 # course_flag = True 450 print('登陆成功,信息如下') 451 teacher_name.tell() # '这里teacher_name 是学校的teacher_list里边的类' 452 453 while not teacher_fun_flag: 454 choose_teacher = input('请选择功能 1,查看班级信息 2,选择班级上课 3,查看班级学员列表 4,修改所管理的学员成绩 q,返回上一菜单') 455 if choose_teacher == '1': 456 input_gardename_fun1=input('请输入要查询的班级名称,名称必须写对') 457 jiuyaoli_falg = False 458 for index,i in enumerate(teacher_name.grade_teacher): #这里teacher_name 是个老师类实例 459 if input_gardename_fun1==i: #输入的名称存在老师类实例里的班级列表里 460 jiuyaoli_falg=True 461 break 462 if jiuyaoli_falg is False: 463 print('请输入有效的班级名称') 464 if jiuyaoli_falg is True: 465 for index,i in enumerate(a.grades_name): #这里a.grades_name 是学校实例的班级名称 466 if input_gardename_fun1==i: 467 input_gardename_fun1=a.grades_list[index] #我怀疑这里变成的学校里边班级列表里的班级实例了 因为只有学校列表里有班级实例 468 # print(input_gardename_fun2.teacher_grade_name) 469 # print(input_gardename_fun2.student_grade_name) 470 # print(input_gardename_fun2) 471 # print(input_gardename_fun2.teacher_grade_name,'老师名字') 472 # print(input_gardename_fun2.teacher_grade,'这个是teachergrade里边放着类') 473 # print(input_gardename_fun2.student_grade,'这应该是类才对') 474 # print(input_gardename_fun2.student_grade_name,'学生名字') 475 print('-----%s学生列表-----'%input_gardename_fun1.grade_name) #这里调用班级实例的方法 476 input_gardename_fun1.tell_student_grade() 477 print('-----%s老师列表-----' % input_gardename_fun1.grade_name) 478 input_gardename_fun1.teall_teacher_grade() 479 print('-----%s课程内容-----' % input_gardename_fun1.grade_name) 480 print(input_gardename_fun1.courese_type) 481 482 if choose_teacher == '2': 483 teacher_name.check_grades() 484 # teacher_name.check_student_grade_student() 485 input_gardename_fun2=input('输入上课的班级名称') 486 inpu_fun_falg_111 = False 487 for i in teacher_name.grade_teacher: 488 if input_gardename_fun2==i: 489 print(i) 490 input_course_fun2 = input('请输入课程') 491 for i in teacher_name.courese_teacher: 492 if input_course_fun2==i: 493 inpu_fun_falg_111 = True 494 if inpu_fun_falg_111 is False: 495 print('请输入正确的班级名称') 496 if inpu_fun_falg_111 is True: 497 a=print('%s在%s班,上%s课程'%(teacher_name.name,input_gardename_fun2,input_course_fun2)) 498 log(a) 499 # 500 # inpu_fun_falg_111=False 501 # inpu_fun_falg_222=False 502 # for index,i in enumerate(teacher_name.grade_teacher): #这里的teacher_name 还是老师的实例类(in school).grade_teacher就是实例类里的班级列表 503 # if input_gardename_fun2 == i: # 504 # input_gardename_fun2 = a.grades_list[index] #这里变成了班级实例类 505 # print(input_gardename_fun2.grades_name,'看看这是什么') 506 # inpu_fun_falg_111 = True 507 # break 508 # if inpu_fun_falg_111 is False: 509 # print('你输入的班级不存在') 510 # if inpu_fun_falg_111 is True: 511 # print(input_gardename_fun2.grade_name, 'kan ,mingzi 这里变成了类') 512 # for index, i in enumerate(teacher_name.courese_teacher): 513 # if input_course_fun2 == i: 514 # input_course_fun2 = a.courese_list[index] #这里变成了课程实例类 515 # print(input_course_fun2.type, '这里应该是个类') 516 # inpu_fun_falg_222 = True 517 # flag = False 518 # if inpu_fun_falg_222 is False: 519 # print('你输入的课程不存在') 520 # if inpu_fun_falg_222 is True: 521 # # print(input_gardename_fun2.courese_type,'班级的课程列表') 522 # teacher_name.teaching(teacher_name,teacher_name) 523 if choose_teacher=='3': 524 teacher_name.check_grades() 525 print('将查询%s名下所有班级的成员'%teacher_name.grade_teacher) 526 #将查询['1n1b_python', '2n1b_lunix']名下所有班级的成员 527 # print(a.grades_name,'eee') 528 #['1n1b_python', '2n1b_lunix', 'sinianji'] eee 529 # for index,i in enumerate(a.grades_name): 530 # if i==a.grades_name[index]: 531 # i=a.grades_list[index] 532 # print(teacher_name.grade_teacher[index]) 533 # print(i.student_grade_name) 534 wusong_flag=False 535 list_i = [] 536 for i in teacher_name.grade_teacher: 537 for index,j in enumerate(a.grades_name): 538 if i ==j: 539 i= a.grades_list[index] 540 list_i.append(i) 541 wusong_flag=True 542 if wusong_flag is False: 543 print('名下没学生') 544 if wusong_flag is True: 545 # print(list_i,'3333') 546 # print(list_i[0].grade_name,'4444') #这里是学校里的班级类实力? 547 for index,i in enumerate(list_i): 548 print(i.grade_name) 549 print(i.student_grade_name) 550 # print(teacher_name.grade_teacher[index]) 551 # print(i.student_grade_name) 552 # inpu_fun_falg_111 = False 553 # for i in teacher_name.grade_teacher: 554 # if input_gardename_fun2 == i: 555 # print(i) 556 # input_course_fun2 = input('请输入课程') 557 # for i in teacher_name.courese_teacher: 558 # if input_course_fun2 == i: 559 # inpu_fun_falg_111 = True 560 # if inpu_fun_falg_111 is False: 561 # print('请输入正确的班级名称') 562 # if inpu_fun_falg_111 is True: 563 # a = print('%s在%s班,上%s课程' % (teacher_name.name, input_gardename_fun2, input_course_fun2)) 564 # log(a) 565 if choose_teacher=='4': 566 print('修改你MB,啥玩意没有改啥') 567 568 if choose_teacher=='q': 569 break 570 if choose_user == '3': 571 stu_falg=False 572 while not stu_falg: 573 print('欢迎学习') 574 print('请先注册你的信息') 575 name_stu=input('请输入你的名字') 576 age_stu=input('请输入你的年龄') 577 sex_stu=input('请输入性别') 578 stuid_stu=input('请输入一个你喜欢的学生编号,反正没用') 579 pwd_stu=input('密码请输入1234') 580 money_stu=input('请玩命充钱,谢谢') 581 stu_class = Student(name_stu,age_stu,sex_stu,stuid_stu,pwd_stu,money_stu) #这里是实类 582 print('根据学校信息选择适合你的学校') 583 print('-----1,北方-----') 584 school_bj.tell_school() 585 print('-----2,南方-----') 586 school_sh.tell_school() 587 zhuce_flag=False 588 choose_stu=input('请选择学校名称的编号') 589 590 if choose_stu =='1': # 这里是个骚操作 591 a = school_bj 592 593 if choose_stu =='2': 594 a = school_sh 595 596 597 stu_class.serch_school_and_enroll(a,stu_class) 598 zhuce_flag=True 599 600 if zhuce_flag is True: 601 print('课程内容如下',a.courese_name) 602 choose_stu_course=input('请选择课程') 603 xuanzekecheng_falg=False 604 for index,i in enumerate(a.courese_name): 605 if choose_stu_course==i: 606 choose_stu_course=a.courese_list[index] 607 #print(choose_stu_course,'应该是个类,应该是学校列表里边的coures实例') 608 print('你选择的课程信息如下') 609 print('课程名称:%s\n价格:%s\n周期:%s\n'%(choose_stu_course.type,choose_stu_course.price,choose_stu_course.time)) 610 yesorno=input('请选择yes or no') 611 if yesorno=='yes': 612 xuanzekecheng_falg=True 613 break 614 if yesorno=='no': 615 print('知识无价,还请好好考虑') 616 xuanzekecheng_falg=False 617 break 618 else: 619 print('你输入的信息不正确,我当你不同意处理') 620 xuanzekecheng_falg = False 621 break 622 # if xuanzekecheng_falg is False: 623 # print('失败了???????????????????????') 624 # break 625 jiagepanduan_flag = False 626 if xuanzekecheng_falg is True: 627 # print(stu_class.money) 628 # print(type(stu_class.money)) 629 # print(choose_stu_course.price) 630 # print(type(choose_stu_course.price)) 631 if float(stu_class.money) > float(choose_stu_course.price): 632 stu_class.serch_courese_student(choose_stu_course) 633 stu_class.pay_courese_price(choose_stu_course) 634 jiagepanduan_flag =True 635 else: 636 print('请继续充钱') 637 if jiagepanduan_flag is True: 638 print('钱都花了,选个班吧') 639 suibian_name_list=[] 640 suibian_calss_list=[] 641 kecheng_name=choose_stu_course.type #提取课程名称 642 for index,i in enumerate(a.grades_list): 643 # print(i.grade_name,'这里应该是班级类的name') 644 # 1n1b_python 这里应该是类的name 645 for j in i.courese_type: #在班级的课程列表里循环 646 if kecheng_name==j: 647 # print(i.grade_name,'这里应该打印含有该课程的班级') 648 suibian_name_list.append(i.grade_name) 649 suibian_calss_list.append(i) 650 print('有以下班级开展%s'%choose_stu_course.type) 651 print(suibian_name_list) 652 choose_grade_stu=input('选择班级') 653 for index,i in enumerate(a.grades_name): 654 if choose_grade_stu == i : 655 choose_grade_stu = a.grades_list[index] 656 stu_class.serh_grade_student(stu_class,choose_grade_stu) 657 print('胜利!') 658 659 660 661 # def serh_grade_student(self, obj_student, obj_grade): # 这里我改了一下,这里不通顺 662 # print('录入班级%s' % obj_grade.grade_name) 663 # obj_grade.student_grade_name.append(self.name) # 添加班级名字到班级类文件夹$$$$$$$$$$$$$$$$$$$$$$$ 664 # obj_grade.student_grade.append(obj_student) # 添加实类到班级,好像没大有用 665 # self.grade_class_student.append(obj_grade.grade_name) 666 # print('班级%s选择成功,已将班级信息添加到班级类,学生类' % obj_grade.grade_name) 667 668 # for index,i in enumerate(a.courese_name): 669 # if choose_stu_course==i: 670 # choose_stu_course=a.courese_list[index] 671 # #print(choose_stu_course,'应该是个类,应该是学校列表里边的coures实例') 672 # print('你选择的课程信息如下') 673 # print('课程名称:%s\n价格:%s\n周期:%s\n'%(choose_stu_course.type,choose_stu_course.price,choose_stu_course.time)) 674 675 676 677 # list_i = [] 678 # for i in teacher_name.grade_teacher: 679 # for index, j in enumerate(a.grades_name): 680 # if i == j: 681 # i = a.grades_list[index] 682 # list_i.append(i) 683 # # print(list_i,'3333') 684 # # print(list_i[0].grade_name,'4444') #这里是学校里的班级类实力? 685 # for index, i in enumerate(list_i): 686 # print(i.grade_name) 687 # print(i.student_grade_name) 688 689 690 # print('北方学校的课程如下') 691 # print(school_bj.courese_name) def serh_grade_student(self, obj_student,obj_grade): 692 # stu_courese=input('请选择课程名称') 693 # for index ,i in school_bj.courese_name: #这里不着急,一会再屡屡 694 # if stu_courese==i: 695 # stu_courese=school_bjdadad 696 697 698 699 700 if choose_user=='q': 701 break 702 703 704 705 706 707 708 # if choose_teacher == '1': 709 # print(a.grades_name) 710 # for index, i in enumerate(a.grades_name): 711 # print(a.grades_name[index]) 712 # print(i,'i') 713 # for index,i in enumerate(a.grades_name) 714 # 715 716 717 # for index, i in enumeratddadadadaddade(a.grades_name): 718 # if b == i: 719 # b = a.grades_list[index] 720 # # ipt_s_g_te_flage = True 721 # if teacher_name i
运行效果
可以创建班级,创建课程
创建老师
查询班级的相关数据都可以实现
学生识图也可以实现。
第7个要求,序列化我想的办法
使用拼接字符串的功能生成多个text文件用来储存各个类的信息,调用的时候input生成a,b两个变量,其中一个变成类,另一个变成字符串,然后调用他的内容。
1 def pickle_dump(a): 2 f=open('data_save.text','ab') 3 pickle.dump(a,f) 4 f.close() 5 def pickle_load(a): 6 f=open('data_save.text','rb') 7 a=pickle.load(f) 8 9 a='school_bj' 10 f=open(a+'.txt','ab') 11 pickle.dump(school_bj,f) 12 f.close() 13 14 f=open(a+'.txt','rb') 15 data=pickle.load(f) 16 data.tell_school()
执行效果
运行过程会有些小bug了,暂时不修了,我的时间不多了,我得抓紧。