摘要:為了解決寧波經貿學校計算機專業項目化課程中學生個性化選課需求與教師資源有限之間的矛盾,文章基于Python語言,運用random和os標準庫開發并實現了搖號選課程序。該程序通過模擬搖號機制,確保了學生在選課過程中的公平性。
關鍵詞:Python編程;程序開發;搖號選課;中職計算機;CSV文件;數據結構
中圖分類號:TP311" " " 文獻標識碼:A
文章編號:1009-3044(2025)08-0042-03
開放科學(資源服務) 標識碼(OSID)
0 引言
寧波經貿學校計算機專業為滿足學生對專業知識和技能的個性化需求,開設了一批項目化課程。然而,由于每位教師能夠指導的學生數有限,且學生的興趣與需求各不相同,如何公平地分配有限的資源成為亟待解決的問題。為此,本文設計了一款基于Python的搖號選課程序,旨在克服現有選課平臺的局限性,為學生提供一個透明、公正、高效的選課環境。
1 問題分析
研究者分析了市場上幾款流行的選課平臺:智慧選課系統、喜鵲兒和超星學習通。這些平臺主要基于移動互聯網技術構建,以手機App為操作終端。學生在選課前需要下載并安裝相應的手機App,注冊賬號并綁定個人信息,確保手機網絡穩定、電量充足等,這一系列準備工作對于學生而言顯得過于煩瑣,增加了選課的負擔與復雜度。此外,選課結果往往與學生操作速度密切相關,即反應迅速者更易搶先選到心儀的課程,這在一定程度上影響了選課的公平性和公正性。最后,中小學校園內讓學生使用手機進行選課與教育部2021年印發的《關于加強中小學生手機管理工作的通知》[1]中提到的“中小學生原則上不得將個人手機帶入校園”要求不符。
為解決上述問題,本文設計并實現了搖號選課程序。該程序基于Python語言開發,運行于電腦端,打破了學生必須依賴手機進行選課的局限性,有助于學校營造良好的學習環境,減少手機對學生成長的潛在干擾。此外,程序操作流程規范有序,學生只須按照提示進行簡單操作即可完成選課,無須具備專業的計算機操作技能,顯著降低了學生選課的復雜性。
2 相關技術介紹
本研究選擇Python作為開發選課程序的語言,Python得益于其簡潔的語法結構和龐大的功能庫[2],在敏捷開發中具有顯著優勢,非常適合快速開發教育領域的軟件。它的設計哲學強調代碼的可讀性和簡潔性,使得開發者能夠用更少的代碼行數實現復雜的功能。在搖號選課程序開發中,Python的os標準庫可用于文件操作,方便學生信息的讀取和選課結果的導出。random標準庫提供了隨機算法[3],為搖號選課的實現提供了有力的支持;此外,Python的字典數據結構在數據管理方面表現出色,能夠方便地存儲教師和參與選課的學生信息。
3 程序需求分析
研究對象為搖號選課程序,旨在解決寧波經貿學校計算機專業學生個性化選課需求與教師資源有限之間的矛盾。經過與相關人員的溝通與確認,選課程序的功能模塊需求如下。
3.1 教師信息管理
教師信息僅包括每位授課教師的姓名以及他們所能指導的學生數量上限。此外,每位教師所能指導的學生數量上限是相同的。在搖號選課的過程中,每位教師剩余可指導的學生數量需要能夠實時更新。
3.2 學生信息管理
學生信息僅包含姓名一項。此外,程序應提供用戶管理學生信息的功能接口,包括修改和刪除選課學生姓名的選項,并確保每位學生的個人信息都能準確無誤地輸入系統。
3.3 學生搖號選課操作
實現一個搖號算法,對所有參與選課的學生進行公平排序,并在搖號過程中實時記錄每位學生的選課結果。
3.4 生成選課結果
在所有學生按照搖號順序完成選課后,須將選課結果進行公示。為了確保選課結果能夠在不同的計算機、操作系統和軟件之間無縫傳輸和共享,方便展示,最終選課結果需采用CSV文件的格式來進行存儲,CSV文件內部數據結構如圖1所示,每一行的第一個數據表示指導教師,剩余數據表示選擇該名教師課程的學生。以第一行為例,潘家樂、許客、黃昶皓等同學選擇了徐老師的課程。
4 程序功能設計與實現
根據需求分析,設計的搖號選課程序流程圖如圖2所示。該流程圖詳細闡述了搖號選課程序的核心步驟和運行邏輯:程序首先導入學生信息,隨后利用隨機排序算法確定學生選課的順序。由于隨機排序算法的不可預測性,它確保了所有學生都能以一種公平的方式參與選課。接著,學生按順序依次選課的同時記錄下每位學生的選課結果。待所有學生完成選課流程后,程序生成選課結果CSV文件。打開CSV文件即可查看選課結果。
4.1 教師信息管理模塊的設計與實現
為提升程序編寫的便捷性并優化搖號選課結果的導出流程,本搖號程序采用圖3所示的Python字典變量來存儲和管理選課信息。字典的每個鍵(Key) 對應每位教師的選課編號,例如1、2、3、4等,這些編號用于標識每位授課教師,因此每位教師的選課編號不能重復。每個鍵關聯的值(Value) 是一個列表(List) ,該列表只有兩個數據元素:第一個數據元素為任課教師的姓名,如徐老師、蘇老師、張老師等,教師的姓名以字符串(String) 的形式表示,便于識別和檢索;第二個數據元素是一個用于存儲學生姓名的空列表,用于在選課過程中動態記錄選擇該教師課程的所有學生姓名,從而實現對學生選擇的追蹤和管理。
此種設計方法的優勢在于,它不僅簡化了數據的組織和訪問,還極大地方便了開發過程中的一系列操作,如:
1) 信息檢索與更新:通過選課編號可以快速檢索特定教師的課程信息,以及更新學生名單。
2) 數據關聯:輕松關聯教師姓名和對應的學生名單,便于管理和維護。
3) 結果導出:使用字典這個數據結構來存儲管理選課信息不僅便于在程序中操作,在選課結束后,還可以便捷地從字典中提取數據,生成報告或導出至其他格式,如CSV文件、Excel文件或JSON文件等便于進一步的數據分析和記錄保存。
4) 動態管理:在選課流程中,字典內每個鍵(key) 關聯的學生列表將實時進行更新。此外,通過執行len(學生列表) 代碼,程序也能夠即時了解特定教師目前指導的學生數目。
4.2 導出選課結果模塊設計與實現
選課信息字典中每一個值(Value) 的第一個數據元素為教師姓名,第二個數據元素為選擇該名教師課程的學生名字列表。按照需求分析,需要使用CSV文件的形式來存儲選課結果。CSV以純文本的形式存儲數據,每一條數據記錄以換行符作分隔,每條記錄的字段之間以逗號分隔[4]。
因此,設計該模塊的流程如圖4所示。生成的選課結果CSV文件,用戶可以使用電子表格等軟件輕松打開并查看。
4.3 學生信息管理模塊的設計與實現
本設計避免了使用復雜的MySQL等傳統數據庫系統進行數據存儲,而是選擇使用更為簡單直觀的CSV文件格式來保存學生姓名。用戶可通過Excel等軟件創建一個CSV文件,CSV文件內每一行的第一個數據輸入學生姓名,具體格式參見圖5。
按照選課程序流程圖,程序運行后首先需要讀取學生信息CSV文件。研究者借助Python自帶的os模塊找到當前目錄下學生信息CSV文件并在終端窗口中呈現,隨后利用傳統的input與print交互,讓用戶選擇正確的CSV文件。最后再使用open函數讀取CSV文件內容,進而構建一個包含所有學生姓名的搖號池。運行效果見圖6所示。
4.4 搖號算法模塊的設計與實現
搖號算法模塊是本搖號選課程序的核心功能之一,其設計主旨是通過隨機排序的方式模擬真實的搖號過程。為了達成這一目標,程序借助random標準庫中的shuffle方法,該方法能夠高效地打亂學生在搖號池中的順序,確保每位學生在搖號池中任意位置出現的概率均等,以此保障每位學生享有平等的選課機會[5]。具體實現步驟如下。
1) 初始化搖號池:將所有學生姓名添加到一個列表中,形成初始的搖號池。
2) 調用random.shuffle方法:對搖號池列表進行隨機排序,打亂學生姓名的順序。
3) 生成搖號順序:隨機排序后的列表即為學生的搖號順序,系統將按照這個順序依次讓學生進行選課操作。
4.5 學生選課操作模塊設計與實現
在通過搖號確定學生的選課順序之后,學生依次進行選課,屏幕上會顯示選課編號、教師姓名和該教師目前剩余可指導學生數量。當前學生確認完成選課后,對應教師剩余名額減一,隨后下一位學生開始選課,直至所有學生選課結束。
由于每位教師可指導的學生數量有限,故在選課過程中,若某教師剩余可指導學生數量變為0,則表示該教師開班人數已滿,程序將隱藏該名教師信息,同時該教師課程變為不可選狀態。對于確定教師可指導學生的剩余名額,僅需統計選修該課程的學生人數,并與學生人數上限進行對比即可完成。
以圖7展示的程序運行過程為例,根據搖號順序,當舒旭東同學選擇1號徐老師后,徐老師剩余可指導學生數由原本的1變為0,意味著徐老師開班人數已滿,不可再選,程序隱藏徐老師的相關信息,因此下一位同學夏超,以及后續所有同學在選課的過程中無法再選擇徐老師的課程。
5 結束語
本文設計并實現了基于Python的搖號選課程序,為寧波經貿學校計算機專業項目化課程選課難題提供了解決方案。程序以隨機排序算法確保公平,滿足了學生個性化需求與教師資源合理分配。目前該程序已在校內投入使用并取得預期效果,但仍有完善空間。例如,在用戶界面設計和功能擴展等方面,程序仍有待提升。未來的研究可以進一步優化用戶界面,使其更加友好和美觀;同時,探索將程序應用于其他教育場景的可能性,如課程安排、活動報名等,以拓展其應用范圍和價值。
參考文獻:
[1] 嚴艷霞,吳維煊.藏手機神器:藏住了什么,露出了什么[J].教育家,2024(42):32-33.
[2] 陸潔.淺析初中信息技術Python編程教學策略[J].新課程導學,2024(27):45-48.
[3] 崔賽英.Python語言random庫經典案例教學[J].電腦編程技巧與維護,2024(5):19-21,44.
[4] 吳慶晨,周偉,孫江艷,等.基于條件選擇的CSV文件數據挖掘算法研究[J].電腦編程技巧與維護,2017(11):54-56,60.
[5] 張鑫.網上選課的隨機抽簽算法改進分析[J].信息與電腦(理論版),2011(24):185-186.
【通聯編輯:謝媛媛】