劉思云,吳煒?lè)?/p>
(嶺南師范學(xué)院信息工程學(xué)院,湛江 524048)
大學(xué)生電子設(shè)計(jì)競(jìng)賽從1994年舉辦第一屆至今一直受到教育部的大力倡導(dǎo),競(jìng)賽有效促進(jìn)了我國(guó)高等學(xué)校及高職院校信息與電子類學(xué)科課程體系和內(nèi)容的教學(xué)改革。隨著競(jìng)賽舉辦次數(shù)的增加,每屆參賽人數(shù)也隨之大增。在如此龐大的競(jìng)賽信息面前,如果仍然延用原來(lái)的信息獲取方式,無(wú)論是從效率還是便捷性等角度,都已遠(yuǎn)遠(yuǎn)不能滿足主辦方和參賽單位的實(shí)際需求。為了能讓主辦方和參賽單位更加高效快速地查詢相關(guān)競(jìng)賽信息,需要建立一個(gè)功能較完善的電子設(shè)計(jì)競(jìng)賽查詢系統(tǒng)。
本電子設(shè)計(jì)競(jìng)賽查詢系統(tǒng),可以使主辦單位查詢、管理和分析競(jìng)賽數(shù)據(jù)等相關(guān)工作變得更加系統(tǒng)化,大大提高工作效率。參賽學(xué)校也能在賽前通過(guò)查詢系統(tǒng)了解相關(guān)競(jìng)賽參與信息,分析歷屆得失,提前做好充分準(zhǔn)備,還能在賽后快速和準(zhǔn)確查詢相應(yīng)的競(jìng)賽結(jié)果。
系統(tǒng)使用Python語(yǔ)言,采用Layered pattern分層架構(gòu)模式,把數(shù)據(jù)提取、操作界面、業(yè)務(wù)邏輯進(jìn)行層次拆解,每個(gè)獨(dú)立的層次為其上層抽象提供服務(wù)。
本系統(tǒng)分為四個(gè)層次,分別為表示層、應(yīng)用層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層。表示層為用戶提供整個(gè)系統(tǒng)查詢界面,負(fù)責(zé)與用戶互動(dòng);數(shù)據(jù)訪問(wèn)層由數(shù)據(jù)庫(kù)構(gòu)成,能保存和提供數(shù)據(jù)。用戶向表示層發(fā)起操作請(qǐng)求,轉(zhuǎn)經(jīng)應(yīng)用層后繼續(xù)傳遞到業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層將根據(jù)請(qǐng)求信息發(fā)起新的請(qǐng)求并傳遞給數(shù)據(jù)訪問(wèn)層,最后數(shù)據(jù)訪問(wèn)層處理請(qǐng)求后會(huì)返回一個(gè)結(jié)果集,結(jié)果集傳遞給用戶,整個(gè)流程如圖1所示。
圖1 系統(tǒng)架構(gòu)
本系統(tǒng)分為用戶管理、競(jìng)賽章程查詢、競(jìng)賽數(shù)據(jù)和競(jìng)賽分析等多個(gè)功能模塊,此外可以根據(jù)需要添加或補(bǔ)充其他功能模塊。系統(tǒng)功能如圖2所示。
圖2 系統(tǒng)功能
(1)用戶管理。本系統(tǒng)的用戶登錄身份分為參賽學(xué)校和主辦單位,參賽學(xué)校的登錄賬號(hào)設(shè)置為對(duì)應(yīng)參賽編號(hào),初始密碼統(tǒng)一為123456,而主辦方登錄的賬號(hào)和密碼是唯一的。當(dāng)用戶身份被成功識(shí)別后,系統(tǒng)會(huì)根據(jù)識(shí)別結(jié)果授予用戶不同的功能權(quán)限。用戶登錄成功后可以修改自己的登錄密碼。
(2)競(jìng)賽章程。競(jìng)賽章程一般是指由競(jìng)賽主辦單位在賽前根據(jù)競(jìng)賽計(jì)劃而擬定的相關(guān)競(jìng)賽政策和規(guī)則。本系統(tǒng)的競(jìng)賽章程模塊包括六個(gè)方面,分別是:組織與贊助、競(jìng)賽內(nèi)容、競(jìng)賽規(guī)則、競(jìng)賽流程、競(jìng)賽形式和競(jìng)賽評(píng)獎(jiǎng),如圖3所示。
圖3 競(jìng)賽章程組成
(3)競(jìng)賽錄入。該模塊主要負(fù)責(zé)幫助主辦單位賽后錄入相關(guān)競(jìng)賽數(shù)據(jù),并可以及時(shí)更新,還可以用來(lái)幫助主辦單位補(bǔ)錄相關(guān)數(shù)據(jù),有效避免系統(tǒng)漏錄個(gè)別參賽單位競(jìng)賽結(jié)果的情況出現(xiàn)。只有主辦單位有此功能操作權(quán)限。
(4)競(jìng)賽查詢。該部分是整個(gè)競(jìng)賽查詢系統(tǒng)的主體,主要指用戶通過(guò)輸入和篩選相關(guān)信息來(lái)查詢自己想要獲取的數(shù)據(jù)。本系統(tǒng)數(shù)據(jù)以浙江省電子競(jìng)賽數(shù)據(jù)為基礎(chǔ),包括2016—2020年獲獎(jiǎng)名單和對(duì)應(yīng)項(xiàng)目,名單包括參賽隊(duì)伍編號(hào)、獲獎(jiǎng)項(xiàng)目、參賽隊(duì)員名單、參賽學(xué)校、指導(dǎo)教師、獲獎(jiǎng)獎(jiǎng)次和組別(本科或高職高專,獲獎(jiǎng)項(xiàng)目即參賽題目。本系統(tǒng)授予主辦單位和參賽學(xué)校有不同的查詢權(quán)限,其中主辦單位查詢功能如圖4所示。
圖4 主辦單位競(jìng)賽查詢功能
(5)競(jìng)賽分析。主要是指對(duì)競(jìng)賽數(shù)據(jù)進(jìn)行科學(xué)統(tǒng)計(jì)分析,分為總體競(jìng)賽分析和參賽單位競(jìng)賽分析兩部分。主辦單位可以進(jìn)行總體獲獎(jiǎng)數(shù)量分析、參賽總?cè)藬?shù)分析和各參賽單位獲獎(jiǎng)率分析。參賽學(xué)??梢詫?duì)本單位本屆和歷屆競(jìng)賽情況進(jìn)行分析,其功能如圖5所示。
圖5 參賽學(xué)校競(jìng)賽分析功能
系統(tǒng)能使用戶從賽前了解競(jìng)賽辦法,到賽后查詢競(jìng)賽結(jié)果和數(shù)據(jù)分析等信息。系統(tǒng)授予用戶不同的功能權(quán)限,分為參賽方和主辦方。參賽方成功登錄本系統(tǒng)后,可以查詢競(jìng)賽章程、本單位當(dāng)年和歷年競(jìng)賽數(shù)據(jù),還可以對(duì)本單位競(jìng)賽數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析。主辦方成功登錄后,除了具備參賽單位所具備的功能權(quán)限外,還可以錄入、修改或者刪除相關(guān)競(jìng)賽數(shù)據(jù),也可對(duì)所有競(jìng)賽數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析。
數(shù)據(jù)庫(kù)表的設(shè)計(jì)是指圍繞系統(tǒng)需求在某一數(shù)據(jù)庫(kù)上設(shè)計(jì)數(shù)據(jù)表結(jié)構(gòu)的過(guò)程,以下對(duì)主要數(shù)據(jù)庫(kù)表進(jìn)行設(shè)計(jì)。
(1)參賽單位登錄賬戶管理表。此表主要用于保存參賽單位登錄賬號(hào)信息,具體如表1所示。
表1 參賽單位賬戶管理
(2)競(jìng)賽結(jié)果數(shù)據(jù)表。此表主要用于保存2016—2020年競(jìng)賽獲獎(jiǎng)名單及項(xiàng)目等信息,如表2所示。
表2 競(jìng)賽數(shù)據(jù)
系統(tǒng)使用Wxpython的GUI圖形庫(kù)創(chuàng)建桌面應(yīng)用程序,采用MySQL關(guān)系型數(shù)據(jù)庫(kù),查詢速度快。以下闡述幾個(gè)主要功能模塊的實(shí)現(xiàn)。
用戶登錄時(shí),會(huì)根據(jù)登錄身份來(lái)賦予相應(yīng)功能權(quán)限,登錄界面如圖6所示。
圖6 系統(tǒng)登錄界面
系統(tǒng)登錄界面密碼下方有兩個(gè)單選框,分別代表主辦方和參賽單位。先勾選對(duì)應(yīng)單選框,然后輸入相應(yīng)的賬號(hào)和密碼,點(diǎn)擊登錄按鈕后界面會(huì)自動(dòng)將用戶身份信息反饋給系統(tǒng)。參賽登錄成功后進(jìn)入查詢系統(tǒng)。
此模塊界面左邊面板有六個(gè)不同按鈕,分別代表“組織與贊助”“競(jìng)賽規(guī)則”“競(jìng)賽內(nèi)容”“競(jìng)賽流程”“競(jìng)賽形式”和“競(jìng)賽評(píng)獎(jiǎng)”。用戶可以通過(guò)點(diǎn)擊不同按鈕,在右邊面板查看自己想要獲取的競(jìng)賽信息,如圖7所示。主辦單位和參賽學(xué)校,都具對(duì)此功能模塊有一定的使用權(quán)限。
圖7 競(jìng)賽章程查詢界面效果
此功能主要指賽后主辦單位對(duì)競(jìng)賽數(shù)據(jù)的實(shí)時(shí)更新及補(bǔ)錄個(gè)別參賽單位的競(jìng)賽數(shù)據(jù),只要在錄入界面輸入競(jìng)賽數(shù)據(jù),錄完點(diǎn)擊保存按鈕,彈出顯示“更新成功!”的對(duì)話框,即表明已成功完成一次競(jìng)賽數(shù)據(jù)的錄入操作,效果如圖8所示。競(jìng)賽數(shù)據(jù)錄入關(guān)鍵代碼如下所示。
圖8 競(jìng)賽數(shù)據(jù)錄入界面效果
此模塊分為參賽學(xué)校競(jìng)賽數(shù)據(jù)查詢和主辦單位競(jìng)賽數(shù)據(jù)查詢兩部分。
查詢參賽單位數(shù)據(jù)時(shí),用戶先勾選相應(yīng)競(jìng)賽年份,再輸入相應(yīng)參賽編號(hào)或參賽單位名稱,點(diǎn)擊查詢按鈕就可以查看相應(yīng)結(jié)果,如圖9和圖10所示。查詢競(jìng)賽總體數(shù)據(jù)時(shí),系統(tǒng)會(huì)先識(shí)別用戶輸入的競(jìng)賽年份和獲獎(jiǎng)獎(jiǎng)次信息,然后在界面下方顯示所有符合查詢條件的結(jié)果。界面右上方有個(gè)統(tǒng)計(jì)結(jié)果功能按鈕,方便用戶每一次查詢操作結(jié)束后查看具體數(shù)據(jù),如圖11所示。
圖9 參賽單位查詢界面效果
圖10 參賽單位競(jìng)賽查詢效果
圖11 主辦單位競(jìng)賽數(shù)據(jù)查詢效果
本系統(tǒng)的競(jìng)賽數(shù)據(jù)分析模塊分為兩部分,分別為參賽單位競(jìng)賽數(shù)據(jù)分析和主辦方競(jìng)賽數(shù)據(jù)分析。參賽學(xué)校登錄后可以查詢本單位數(shù)據(jù)分析,而主辦單位登錄后可以查詢競(jìng)賽數(shù)據(jù)總體分析和各參賽單位數(shù)據(jù)分析。通過(guò)調(diào)用Matplotlib庫(kù),生成不同的折線圖來(lái)直觀顯示各種競(jìng)賽分析情況。總體獲獎(jiǎng)數(shù)量數(shù)據(jù)分析效果如圖12。參賽單位獲獎(jiǎng)次數(shù)數(shù)據(jù)分析效果如圖13所示。
圖12 總體獲獎(jiǎng)數(shù)量分析效果
圖13 參賽單位獲獎(jiǎng)次數(shù)分析效果
該電子設(shè)計(jì)競(jìng)賽查詢系統(tǒng)能使主辦單位和參賽學(xué)校能快速充分掌握歷屆競(jìng)賽情況,以便總結(jié)以往賽事經(jīng)驗(yàn),并以此為依托,因地制宜,能更好地舉辦或準(zhǔn)備下一次比賽,不斷提高工作效率和擴(kuò)大工作成果。