學生選課系統思路講解


第7章 作業,選課系統

當你看到這的時候,恭喜你,Python重要的基礎課程已經學習完畢。而面向對象部分則是基礎課程中的一個重要轉折點。從面向對象開始,你要試着從面向對象的思想出發,來編寫程序,尤其是將來開發一些功能復雜的系統。而本章的系統則是精心設計而成的。我們學過的內容都能在該系統中體現。所以,要用心完成本系統。

在完成系統的時候,請務必回顧之前章節所學,讓我們在實現系統的過程中更加得心應手。

7.1 功能概述

“學生選課系統”,顧名思義,本系統必須實現的需求就是選課。

7.2 需求分析

既然我們主要實現的功能是“選課”,那么我們要實現的核心邏輯都要圍着選課展開。

7.2.1 角色設計

首先我們來思考:學生選課,那么學生由誰來創建?課程由誰來創建?學生能否創建課程?很明顯,從我們現實角度來說,學生只能選擇課程而不能創建課程!那么,課程應該由那個“誰”來創建。而學生也不能是憑空而來的。這里我們也讓那個“誰”來創建學生。所以,我們在這里可以確定三個角色:

  • 可以選擇課程的——學生
  • 可供學生選擇的——課程
  • 可以創建學生和課程的那個“誰”——管理員

7.2.2 功能設計

這里考慮到大家都是初學者,所以,盡量的選擇一些簡單的功能實現。

  • 登錄,管理員和學生都可以登錄,並且登錄后可以自動區分身份。

  • 選課,學生可以自由的瀏覽課程信息,並挑選課程。

  • 信息的創建,無論是學生信息還是課程信息,或是其他的信息,都由管理員創建。

  • 查看選課情況,學生可以查看自己的選課情況,而管理員可以查看所有的學生信息(包括選課情況)。

7.2.3 流程設計

有了角色和基本的功能,那么整個系統該是怎么樣的一個呈現?先干什么后干什么?就是我們要考慮的事情了。

這個系統的流程可以是這樣的:

  • 登錄,用戶輸入用戶名和密碼。
  • 判斷身份,在登錄成功的時候,就應該可以直接判斷出登錄用戶的身份,是學生還是管理員。

對於學生用戶來說,登錄之后有四個功能選項:

  • 查看所有課程
  • 選擇課程
  • 查看所選擇的課程
  • 退出程序

對於管理員用戶來說,管理員除了要是實現基本的查看功能,還有很多創建工作要做。

  • 創建課程

  • 創建學生信息(創建學生賬號)

  • 查看所有課程信息

  • 查看所有學生

  • 查看所有學生的選課情況

  • 退出程序

7.2.4 程序設計

對於相對的復雜的功能實現,我們優先選擇使用面向對象編程,而選擇面向對象編程之后,就要時刻思考如何設計類和對象的關系,讓程序結構更加清晰明朗。

前面的分析中,我們需要實現三個角色。那么可以對應用三個類來實現。根據角色的不同,我們有針對性的為類設計屬性和方法。

  • 課程類,課程類並沒有什么動作,只有一些必要的屬性。

    屬性:課程名稱、價格、周期。

    方法:暫無

  • 學生,學生就要有必要的屬性和方法了。

    屬性:姓名、所選課程。

    方法:查看所有課程、選擇課程、查看選擇的課程、退出程序。

  • 管理員,管理員的屬性可以僅有一個姓名就好了,其他的就是方法設計了。

    屬性:姓名。

    方法:創建課程、創建學生信息(創建學生賬號)、查看所有課程、查看所有學生、查看所有學生的選課情況、退出程序。

這里需要說明的是,課程屬性缺少一個任教老師屬性,但仔細分析你會發現,老師也是一個角色,為了不增加難度,這里課程屬性這里,不再添加老師屬性,但你可以當成一個升級功能來拓展實現。

7.2.5 流程圖

根據上述分析,我們將主要功能匯總成流程圖。

上述流程圖,清晰的展示了程序的執行流程及具體的功能。所以,為了更方便系統的實現,請畫出你的流程圖。

7.2.6 數據庫設計

現在,不得不考慮一個尷尬的事情了,當我們創建完學生或課程信息之后,存在哪?是的,目前我們沒有學習數據庫。所以,暫時我們只能想辦法把數據存儲到普通文件中。那么該怎么構建文件呢,我們在后面會詳細說明。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM