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