面向对象实现简单的学生课程选择

大家在学校一定都使用学校的选课系统,那么一个选课的流程是怎么实现的呢?下面给大家分享一个在python中使用面向对象初步实现选课情况.

 1 class Student(object):   #首先我们定义一个学生类
 2     def __init__(self,sno,sname):
 3         self.sno = sno
 4         self.sname = sname
 5         self.cour_lst = []   #学生的选课我们假设让他选择3门,定义一个空列表
 6     def  cheke_course(self):   #查看课程
 7         for c in self.cour_lst:
 8             print(f'{self.sname}选了{c.cname}')
 9     def add_course(self,cour):  #添加课程
10         self.cour_lst.append(cour)
11 class Course(object):         #定义课程类
12     def __init__(self,cno,cname,teacher = None):  #在课程中,我们的课程老师暂时定义为空
13         self.cno = cno
14         self.cname = cname
15         self.teacher = teacher
16     def cheke_course(self):    #同样查看课程的信息,此时要加入一个课程的讲师
17         print(f'{self.cno},{self.cname},{self.teacher.tname}')
18     def setting(self,teacher):   #给课程进行老师的设置,只添加姓名
19         self.teacher = teacher
20 class Teacher(object):      #定义一个教师类
21     def __init__(self,tno,tname,tphone):
22         self.tno = tno
23         self.tname = tname
24         self.tphone = tphone
25 import random     #为了增加趣味性,我们使用随机模块创建30个学生,给他们每人随机选择3门课
26 c1 = Course("01", "语文")
27 c2 = Course("02", "数学")
28 c3 = Course("03", "地理")
29 c4 = Course("04", "化学")  #这里我们首先创造6个课程对象
30 c5 = Course("05", "历史")
31 c6 = Course("06", "英语")
32 
33 t1 = Teacher("01", "唐伯虎", "13301122001")
34 t2 = Teacher("02", "祝枝山", "13301122002")
35 t3 = Teacher("03", "文征明", "13301122003")  #同样创建6个讲师
36 t4 = Teacher("04", "李白", "13301122004")
37 t5 = Teacher("05", "黄冠", "13301122005")
38 t6 = Teacher("06", "谢晋", "13301122006")
39 
40 c1.setting(t1)  #这里我们先给给课程添加上老师
41 c2.setting(t2)
42 c3.setting(t3)
43 c4.setting(t4)
44 c5.setting(t5)
45 c6.setting(t6)
46 c_lst = [c1,c2,c3,c4,c5,c6]   #将课程打包成一个列表,利用索引
47 stu_lst = []      #将30个学生放到一个列表中
48 for i in range(1,31):    #30次循环创建30个学生
49     stu = Student(i,'学生' + str(i)) 
50     s = set()
51     while len(s) < 3:
52         s.add(random.randint(0,5))   #使用随机数配合集合的去重功能来给每个学生选三门课
53     for n in s:
54         stu.cour_lst.append(c_lst[n])
55     stu_lst.append(stu)
56 for el in stu_lst:    #大功告成,打印一下看效果吧
57     print(f'学生编号:{el.sno},学生姓名:{el.sname}')
58     for e in stu.cour_lst:
59         print(f'	课程编号:{e.cno},课程名称{e.cname},任课老师电话{e.teacher.tphone}')

本案例中的内容比较简单,只是一个非常粗略的使用面向对象的简单嵌套来添加一些简单的信息,希望能一起学习!

原文地址:https://www.cnblogs.com/Godisgirl/p/10165597.html