面向物件實現簡單的學生課程選擇
阿新 • • 發佈:2018-12-23
大家在學校一定都使用學校的選課系統,那麼一個選課的流程是怎麼實現的呢?下面給大家分享一個在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 = cno14 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'\t課程編號:{e.cno},課程名稱{e.cname},任課老師電話{e.teacher.tphone}')
本案例中的內容比較簡單,只是一個非常粗略的使用面向物件的簡單巢狀來新增一些簡單的資訊,希望能一起學習!