引言
親愛的同學們,當你們打開這篇作業的時候,恭喜你們,python的基礎課程你們已經學完一半了。面向對象是大家在學習過程中的一個重要轉折,從這里開始,你們需要切換成另外一種思維來編寫程序,這將非常有利於你們未來開發功能復雜的項目,所以請大家一定要用心來完成這部分的作業。
從這部分開始,我們的作業說明也變得更加復雜,因為所有的程序開發都是從核心功能出發的,所以我們在開發的時候首先要完成的總是最主要的功能,以后大家還要慢慢學會自己提取“核心的功能”、進行“需求分析”,“程序設計”等工作來保證你們能夠順利成長為一個優秀的程序員。但是由於各位是初學者,所以先由我們來替你們完成這些基礎工作,你們只管寫代碼就好了。
核心功能
功能概述
學生選課
需求分析
從“學生選課系統” 這幾個字就可以看出來,我們最核心的功能其實只有 選課。
角色
學生、管理員
功能
登陸 : 管理員和學生都可以登陸,且登陸之后可以自動區分身份
選課 : 學生可以自由的為自己選擇課程
創建用戶 : 選課系統是面向本校學生的,因此所有的用戶都應該由管理員完成
查看選課情況 :每個學生可以查看自己的選課情況,而管理員應該可以查看所有學生的信息
工作流程
登陸 :用戶輸入用戶名和密碼
判斷身份 :在登陸成果的時候應該可以直接判斷出用戶的身份 是學生還是管理員
學生用戶 :對於學生用戶來說,登陸之后有三個功能
1、查看所有課程
2、選擇課程
3、查看所選課程
4、退出程序
管理員用戶:管理員用戶除了可以做一些查看功能之外,還有很多創建工作
1、創建課程
2、創建學生學生賬號
3、查看所有課程
4、查看所有學生
5、查看所有學生的選課情況
6、退出程序
程序設計
對於復雜的功能,我們首先就應該想到面向對象編程。而要想將面向對象的程序開發好,就應該做好類和對象的分析工作。
選課系統簡單的划分其實只有兩個角色:管理員和學生。
仔細思考,你會發現有很多想不通的地方,比如學生選課,課從哪里來?
這樣一想就會發現,其實課程應該可以由管理員創造出來,那么課程又會有很多屬性:價格、周期、課程名、授課老師等等
那么課程也應該是一個類。
綜上,本程序最基礎的分析已經完畢。接下來我們要把所有的類以及其中的屬性、方法設計出來
課程
屬性:課程名、價格、周期、老師
*課程並沒有什么動作,所以我們只設計屬性不設計方法。其實這里還可以設計很多屬性,比如課程的開始時間、結束時間、教室等等,只要你需要,這些都可以記錄下來,但是這里我們為了簡化代碼,就先不設計這些了。
學生
屬性:姓名、所選課程
方法:查看可選課程、選擇課程、查看所選課程、退出程序
管理員
屬性:姓名
方法:創建課程、創建學生學生賬號、查看所有課程、查看所有學生、查看所有學生的選課情況、退出程序
流程圖

采分點
1.類的創建和規划 30分
2.登陸自動識別身份 10分
3.管理員創建各種信息 20分
4.學生選課 20分
5.將內存中的數據保存到文件中 10分
6.代碼簡潔、調理清晰10分
