python初學——面向對象編程做業:學校選課系統

做業需求

  1. 建立北京、上海 2 所學校
  2. 建立linux , python , go 3個課程,linuxpy在北京開, go 在上海開
  3. 課程包含,週期,價格,經過學校建立課程
  4. 經過學校建立班級,班級關聯課程、講師
  5. 建立學員時,選擇學校,關聯班級
  6. 建立講師角色時要關聯學校,
  7. 提供兩個角色接口
    7.1. 學員視圖,能夠註冊,交學費,選擇班級,
    7.2. 講師視圖,講師可管理本身的班級,上課時選擇班級,查看班級學員列表,修改所管理的學員的成績
    7.3. 管理視圖,建立講師,建立班級,建立課程
  8. 上面的操做產生的數據都經過pickle序列化保存到文件裏

需求模型

經過對如上需求的解讀,我整理出以下需求模型。python

用例名

選課系統linux

場景

  • when:任意時間
  • where:老男孩
  • who:學生、講師、管理員

用例描述

  • 管理員能夠建立學校。學校包含:名字、城市、地址。如:上海、北京、等(管理員本身建立其餘地方的學校)
  • 管理員建立的課程。課程包含:名稱、週期、價格、大綱。如:python,go,linux(課程與學校關聯)
  • 管理員建立班級。班級包含:名稱、上課方式(脫產、週末、線上)、課程、講師、開課日期、學員列表。如:python週末18期,python脫產7期,linux架構35期(班級與課程、講師關聯)
  • 管理員建立講師。講師包含:名字、性別、年齡、學校。如:alex,egon,wupeiqi,yuanhao(講師關聯學校)
  • 管理員建立學員。
  • 講師查看學員列表。(學員列表與班級關聯)
  • 講師修改管理的學員的成績。
  • 學員註冊。包含:名字、性別、年齡、等
  • 學員查詢可上課程
  • 學員選課,選擇學校、課程,並付款。
  • 學員查詢本身學習記錄。學習記錄包含:成績

用戶價值

完成一套可運行的選課管理系統,解決人工管理上下課的難度。git

約束

暫無github

建模設計

將需求模型繼續進行整理。整理出以下建模設計的內容。數據庫

關鍵字

學校、課程、班級、講師、上課記錄、學員、學習記錄、做業、成績、管理員、架構

關鍵字分析

人類:屬性有名字、性別、年齡
學生類:繼承人類。屬性有課程、班級、成績
老師類:繼承人類。屬性有課程、班級
學校類:屬性有學校名、城市、地點、
課程類:屬性有課程名稱、價格、週期
班級類:屬性有班級名、教師、開課日期、上課方式
帳號類:屬性有帳號名、密碼、狀態、角色。
學習記錄類:屬性有成績
管理員類:繼承與站帳號類
視圖類:處理管理員、老師、學員的全部視圖上的操做單元測試

UML流程圖

圖片描述

目錄結構

│  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學習

單元測試

因爲做業時間有限,沒有編寫單元測試使用的程序腳本。故直接經過模擬用戶使用的方式來進行測試。測試

1、管理員功能測試

執行scs.py文件後進入主頁面:輸入3進入管理員界面。ui

===============歡迎進入老男孩學校===============

                1. 學生登陸通道
                2. 教師登陸通道
                3. 管理員登陸通道
                4. 退出
                
================================================
        
>>:3

進入管理員視圖:管理員能夠進行學校管理,學員管理。也能夠修改本身的密碼。
當進入這些視圖前,若是管理員沒有登陸會進行一次登陸認證。如已經登陸就不會再次認證。

===============歡迎進入管理視圖===============

               1. 學校管理
               2. 學員管理
               3. 修改密碼
               4. 註銷
               
==============================================
        
>>:

學校管理視圖:能夠進行學校的建立、課程的建立、講師的建立、和班級的建立。
咱們這裏直接就根據需求:

  1. 建立beijing和shanghai兩所學校。
  2. 建立linux , python , go 3個課程,linuxpy在北京開, go 在上海開。

    • linux課程價格8000,週期35
    • python課程價格8000,週期18
    • go課程價格10000,週期20
  3. 建立講師alex、egon屬於北京校區,yuanhao屬於上海校區。
  4. 建立分別爲3個課程建立班級 alex爲python班級的講師、egon爲linux班級的講師、yuanhao爲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!

2、學員功能測試

學員視圖界面

===============歡迎進入學員視圖===============

               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:  成績未公佈

=========================================

3、教師功能測試

教師視圖

===============歡迎進入教師視圖===============

               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
相關文章
相關標籤/搜索