網上課程管理系統---大致框架(偽代碼)
一、復習繼承
繼承:什么是什么的關系
單繼承:
先抽象再繼承,幾個代碼之間相同的代碼抽象出來,成為父類
子類自己沒有的名字,就可以使用父類的方法和屬性
如果子類自己有,一定先用自己的
在類中使用self的時候,一定要看清楚self指向誰
多繼承:
新式類和經典類:
多繼承尋找名字的順序:新式類廣度優先,經典類深度優先
新式類中有一個類名.mro方法,查看廣度優先的繼承順序
python3中有一個super方法,根據廣度優先的繼承順序查找上一個類
二、網上課程管理系統
系統需求文字類描述:
1、開始登入,判斷身份
2、身份確定后,每個身份對應的需求:
(1)講師:查看課程信息;查看講的班級信息;查看帶的學生信息
(2)學生:選擇班級;查看自己的信息
(3)管理員:創建講師賬號;創建學生賬號;創建課程;創建班級;給講師分配課程;給講師分配班級
3、退出,結束
注意:應當使用軟件規范去寫(在前面的‘包的進階’里面有提到一些大概)
根據軟件規范的幾個文件包,先大概了解一下整個系統大致流程,先用偽代碼來闡述
(1)bin文件里面存有start.py文件,主要是大目錄路徑的導入,方便后續模塊的導入
# 修改sys.path,把學校課程管理系統這個路徑寫到sys.path列表中 # 之后所有的模塊導入,都是基於學校課程管理系統 # 比如調用core里面的main方法 from core import main if __name__ == '__main__': main.main # 調用main模塊里面的main方法
(2)core文件,主函數,程序的入口,里面應當有登入函數以及main函數
# 主函數 程序入口 def login(): ''' 登入函數,應該先到conf.config文件中讀取userinfo文件中的路徑,讀取userinfo文件中的信息, 對用戶名和密碼進行檢驗,登入成功后,查看這個人的身份,來確定進入哪一個試圖 :return: ''' def main(): ''' 打印歡迎信息 login:什么三次登入之類的 得到返回值:用戶的姓名和身份 打印用戶身份對應的功能菜單(功能菜單寫在管理員里面) 如果用戶想要調用任何方法應該通過角色對象調用,跳轉到對應的對象的方法里面,core比如管理員里面的方法都是通過管理員進行調用, :return: '''
除了main函數外,還有有關的幾個身份類也放在core文件中
首先以管理員的身份登入,登入之后,就應該實例化一個對應身份的對象 manage_obj = Manager(name) 管理員對象可以調用所有方法
管理員類:根據前面的系統大概要求可以知道管理員類大致擁有的一些屬性
class Manager: menu = {'創建講師賬號':'','學生賬號':'','創建課程':'','創建班級':'','分配班級和課程':''} def __init__(self,name,): self.name = name def createrTeacher(self): pass def createrStudent(self): pass
具體的管理員類實現的調用方法,用中文先理解,如下:
class Manager: menu = {'創建講師賬號':'','學生賬號':'','創建課程':'','創建班級':'','分配班級和課程':''} def __init__(self,name,): self.name = name def createrTeacher(self): # 輸入講師的姓名 # 輸入講師的密碼 # 將講師的信息寫入userinfo文件 # 輸入: # 講師所在的學校 到這里講師的信息有三個: 用戶名,身份,學校 # 實例化一個講師對象,存儲在講師對應的文件中 pass def createrCourse(self): # 輸入學科名稱 # 價格 # 周期 # 創建一個課程對象,dump進course文件 pass def createrClasses(self): # 創建班級 # 輸入班級名稱,學校 ---屬性 # 綁定一個學科對象,要先調用查看學科方法獲取學科對象,用戶選擇學科,再將對象綁定到班級 # 創建一個屬於這個班級的文件用於存儲學生信息,將文件的路徑存儲到班級對象中 # 創建一個班級對象(名稱 學校 學科對象 講師空列表 學生信息所在文件的路徑) pass def showCourse(self): # 打開文件 # 將文件中的學科對象讀出來,展示 pass def createrStudent(self): # 輸入學生的姓名 # 輸入學生的密碼 # 將學生的信息寫入user info文件中 # 創建一個學生對象(姓名 講師空列表) pass def boundClass(self): # 管理員選擇為老師還是學生指定班級 # 如果是為老師綁定班級: # 找到指定老師和對應的班級(都是通過show的方法查看后選擇) # 給講師對象的班級屬性的列表中加入一個新項,值為班級的對象 # 給班級對象中的講師屬性列表中加入一個新的項,值為講師的對象 # 如果為學生綁定: # 找到指定學生對應的班級 (都是通過show的方法查看后選擇) # 給學生創建新的班級屬性,將屬性的值設置為班級對象 # 將學生對象的信息 根據班級對象中存儲的學生信息存儲路徑 dump入對應文件 pass
老師類:大致擁有的屬性如下,這里就涉及到了前面學過的組合的知識:一個對象的屬性=另一個對象
class Classes: def __init__(self,school,name,kind): self.school = school # 學校 self.name = name # 班級名稱 self.kind = kind # 班級科目 self.student = ['student_obj'] # 應該有學生的所有信息 class Course: def __init__(self,name,period,price): self.name = name self.period = period self.price = price c = Course('python','6 month',19800) class Teacher: def __init__(self,name): self.name = name self.classes = ['classes_obj'] # self.course = c # 組合 self.course相當於復制了course里面的所有屬性, # 這里也可以先不要加course,可以放在后面先將老師實例化 再添加課程 t = Teacher('blue') t.course = c # 組合:對象的屬性=對象 先給老師實例化后,再給老師創建一個屬性
(3)db文件,只要一些重要的數據文件都可以放在db文件里面,比如用戶名,用戶密碼,身份判斷等
# 和文件相關的都放入db里面 用戶名 用戶密碼 身份判斷
(4)conf文件,conf里面存放了用戶相關信息的路徑,這樣可以方便后續登入的時候直接調用路徑就可以查看用戶的相關信息,不用每次都導入一個信息表
# 在這里放入userinfo的文件路徑 userinfo =r'C:\Users\sku1-1\PycharmProjects\untitled\學校課程管理系統\db\userinfo'
