經過對如上需求的解讀,我整理出以下需求模型。python
選課系統linux
完成一套可運行的選課管理系統,解決人工管理上下課的難度。git
暫無github
將需求模型繼續進行整理。整理出以下建模設計的內容。數據庫
學校、課程、班級、講師、上課記錄、學員、學習記錄、做業、成績、管理員、架構
人類:屬性有名字、性別、年齡
學生類:繼承人類。屬性有課程、班級、成績
老師類:繼承人類。屬性有課程、班級
學校類:屬性有學校名、城市、地點、
課程類:屬性有課程名稱、價格、週期
班級類:屬性有班級名、教師、開課日期、上課方式
帳號類:屬性有帳號名、密碼、狀態、角色。
學習記錄類:屬性有成績
管理員類:繼承與站帳號類
視圖類:處理管理員、老師、學員的全部視圖上的操做單元測試
│ README.md ├─bin # 執行文件目錄 │ │ scs.py # 執行文件 │ └─ __init__.py │ ├─conf # 配置文件目錄 │ │ settings.py # 配置文件 │ └─ __init__.py │ ├─core # 核心執行文件目錄 │ │ main.py # 主程序文件 | | logger.py # 日誌程序文件 │ └─ __init__.py ├─db # 數據庫目錄 │ ├─accounts # 帳號數據所在目錄 │ └─base # 學校等基礎數據所在目錄 ├─lib # 庫文件目錄 │ │ accounts.py # 帳號類 │ │ classes.py # 班級類 │ │ courses.py # 課程類 │ │ db.py # 數據庫類文件 │ │ persion.py # 人類文件 │ │ schools.py # 學校類文件 │ │ study_record.py # 學習記錄類嗡 │ │ views.py # 視圖類文件 │ │ __init__.py └─log # 日誌文件目錄
具體代碼能夠從github中下載:
SCS學習
因爲做業時間有限,沒有編寫單元測試使用的程序腳本。故直接經過模擬用戶使用的方式來進行測試。測試
執行scs.py文件後進入主頁面:輸入3進入管理員界面。ui
===============歡迎進入老男孩學校=============== 1. 學生登陸通道 2. 教師登陸通道 3. 管理員登陸通道 4. 退出 ================================================ >>:3
進入管理員視圖:管理員能夠進行學校管理,學員管理。也能夠修改本身的密碼。
當進入這些視圖前,若是管理員沒有登陸會進行一次登陸認證。如已經登陸就不會再次認證。
===============歡迎進入管理視圖=============== 1. 學校管理 2. 學員管理 3. 修改密碼 4. 註銷 ============================================== >>:
學校管理視圖:能夠進行學校的建立、課程的建立、講師的建立、和班級的建立。
咱們這裏直接就根據需求:
建立linux , python , go 3個課程,linuxpy在北京開, go 在上海開。
>>:1 Please input username:admin Please input password:admin 2018-04-09 14:18:51,475 - access - INFO - [admin] Login Success! [admin] Login Success! ===============歡迎進入管理視圖=============== 1. 建立學校 2. 建立課程 3. 建立講師 4. 建立班級 5. 返回 ============================================== >>:1 ================建立學校================= Please input name of school:beijing Please input city of school:beijing Please input address of school:beijing Create school success! ===============歡迎進入管理視圖=============== 1. 建立學校 2. 建立課程 3. 建立講師 4. 建立班級 5. 返回 ============================================== >>:1 ================建立學校================= Please input name of school:shanghai Please input city of school:shanghai Please input address of school:shanghai Create school success! ===============歡迎進入管理視圖=============== 1. 建立學校 2. 建立課程 3. 建立講師 4. 建立班級 5. 返回 ============================================== >>:2 ================建立課程================= Please input course name:python Please input price:8000 Please input term:18 Please input associated school:beijing Create course success! ===============歡迎進入管理視圖=============== 1. 建立學校 2. 建立課程 3. 建立講師 4. 建立班級 5. 返回 ============================================== >>:2 ================建立課程================= Please input course name:linux Please input price:8000 Please input term:35 Please input associated school:beijing Create course success! ===============歡迎進入管理視圖=============== 1. 建立學校 2. 建立課程 3. 建立講師 4. 建立班級 5. 返回 ============================================== >>:2 ================建立課程================= Please input course name:go Please input price:10000 Please input term:20 Please input associated school:shanghai Create course success! ===============歡迎進入管理視圖=============== 1. 建立學校 2. 建立課程 3. 建立講師 4. 建立班級 5. 返回 ============================================== >>:3 ================建立老師================= Please input username:alex Please input password:alex123 Please input password confirmation:alex123 Please input associated school:beijing Registry Success! ===============歡迎進入管理視圖=============== 1. 建立學校 2. 建立課程 3. 建立講師 4. 建立班級 5. 返回 ============================================== >>:3 ================建立老師================= Please input username:egon Please input password:egon123 Please input password confirmation:egon123 Please input associated school:beijing Registry Success! ===============歡迎進入管理視圖=============== 1. 建立學校 2. 建立課程 3. 建立講師 4. 建立班級 5. 返回 ============================================== >>:3 ================建立老師================= Please input username:yuanhao Please input password:yuanhao123 Please input password confirmation:yuanhao123 Please input associated school:shanghai Registry Success! ===============歡迎進入管理視圖=============== 1. 建立學校 2. 建立課程 3. 建立講師 4. 建立班級 5. 返回 ============================================== >>:4 ================建立班級================= Please input class name:python18 Please input associated school:beijing Please input associated course:python Please input associated teacher:alex Create class success! ===============歡迎進入管理視圖=============== 1. 建立學校 2. 建立課程 3. 建立講師 4. 建立班級 5. 返回 ============================================== >>:4 ================建立班級================= Please input class name:linux35 Please input associated school:beijing Please input associated course:linux Please input associated teacher:egon Create class success! ===============歡迎進入管理視圖=============== 1. 建立學校 2. 建立課程 3. 建立講師 4. 建立班級 5. 返回 ============================================== >>:4 ================建立班級================= Please input class name:go20 Please input associated school:shanghai Please input associated course:go Please input associated teacher:yuanhao Create class success! ===============歡迎進入管理視圖=============== 1. 建立學校 2. 建立課程 3. 建立講師 4. 建立班級 5. 返回 ============================================== >>:5
學員管理視圖:能夠查看學校的學員狀況,並能夠分配已經報名課程的學員到具體的班級中。咱們已經註冊了一個henry的學生,這個學生報名了python的課程,因此管理員須要將他分配到python18這個班級中。
===============歡迎進入管理視圖=============== 1. 學員信息 2. 分配班級 3. 返回 ============================================== >>:1 Please input school:beijing ==================學生信息================== ID: 027e4180beedb29744413a7ea6b84a42 Account: henry Type: 3 Status: 0 School: beijing Course: python Class: 未分配班級 Teacher: 未分配導師 ============================================ ===============歡迎進入管理視圖=============== 1. 學員信息 2. 分配班級 3. 返回 ============================================== >>:2 ================分配班級================= Please input name of school:beijing Please input account of student:henry Please input name of course:python Please input name of class:python18 Students have bound courses!
學員視圖界面
===============歡迎進入學員視圖=============== 1. 註冊帳號 2. 填寫帳戶信息 3. 查看帳戶信息 4. 選擇課程並付費 5. 查看學習記錄 6. 修改密碼 7. 註銷 ==============================================
學員能夠註冊帳號,也能夠補全本身的我的信息。這些基本功能,這裏就不進行詳細的測試了。主要看一下選課和查看學習記錄。我仍是使用henry學員,henry再報名一個linux課程。來實現報名,因爲henry的成績老師尚未下發分數,因此暫時還看不到成績。
===============歡迎進入學員視圖=============== 1. 註冊帳號 2. 填寫帳戶信息 3. 查看帳戶信息 4. 選擇課程並付費 5. 查看學習記錄 6. 修改密碼 7. 註銷 ============================================== >>:4 Please input username:henry Please input password:henry123 2018-04-09 15:15:01,863 - access - INFO - [henry] Login Success! [henry] Login Success! ================購買課程================= Please choise school:beijing Please choise course:linux Please pay tuition [8000 RMB]:8000 The success of the course purchase! ===============歡迎進入學員視圖=============== 1. 註冊帳號 2. 填寫帳戶信息 3. 查看帳戶信息 4. 選擇課程並付費 5. 查看學習記錄 6. 修改密碼 7. 註銷 ============================================== >>:5 ================學習記錄================= Score: 成績未公佈 =========================================
教師視圖
===============歡迎進入教師視圖=============== 1. 填寫帳戶信息 2. 查看帳戶信息 3. 班級管理 4. 修改密碼 5. 註銷 ==============================================
咱們主要來看一下班級管理功能。班級管理功能能夠查看本身班級的學生、並未學生下發成績
===============歡迎進入教師視圖=============== 1. 填寫帳戶信息 2. 查看帳戶信息 3. 班級管理 4. 修改密碼 5. 註銷 ============================================== >>:3 Please input username:alex Please input password:alex123 2018-04-09 15:17:51,271 - access - INFO - [alex] Login Success! [alex] Login Success! ===============歡迎進入管理視圖=============== 1. 選擇班級 2. 學生列表 3. 批改做業 4. 返回 ============================================== >>:1 Please input name of class:python18 Choice class success! ===============歡迎進入管理視圖=============== 1. 選擇班級 2. 學生列表 3. 批改做業 4. 返回 ============================================== >>:2 ================班級學生列表================= Class: python18 Students: henry ============================================= ===============歡迎進入管理視圖=============== 1. 選擇班級 2. 學生列表 3. 批改做業 4. 返回 ============================================== >>:3 ================做業批改================= Please input name of student:henry Please input score of student:95 Confirm input "yes". Back off input "b":yes [henry] homework to be corrected