史雙全
摘 要:棋類比賽評分一般要通過手工對選手分組,手工計算選手分數積分,手工排名次,不利于大規模比賽需要。利用Excel VBA直接調用Excel內置的豐富函數,編寫了象棋比賽評分模板程序。該程序可自動快速編排選手對局,自動計算選手積分及排名。與手工比賽評分相比,該方法精度較高,極大地提高了工作效率。旨在對信息技術的應用推廣,使得在當今信息技術應用普遍的情況下,能夠把信息技術充分利用好,做到靈活運用。
關鍵詞:程序設計;算法;對局;評分
在教育信息技術時代下,信息技術教師作為學校信息教育的技術支持者,有責任做好信息技術的教育應用研究,使信息技術在教育教學工作中效能最大化,同時又從中催生具有教育信息技術時代特色的問題解決方案和教學工作新模式。
一、選題意義
比爾蓋茨說過:VBA已經不再是單純的技術,它正快速地朝著一個標準化的程序開發平臺的目標前進,就好像現在的Windows、internet角色一樣。VBA是即將興起的、很有前途的編程語言,在Office環境下用VBA開發應用軟件,將成為軟件開發人員和計算機應用人員首選的方式。
遺憾的是,在眾多的Office辦公軟件應用人員當中,80%以上的人僅使用軟件極少部分基本功能,真正精彩的潛在部分——VBA編程,沒有被開發和使用。關于Office基本操作的書隨處可見,但關于VBA開發與應用的書很少,偶爾能見到幾本,大多講一些對象、屬性、方法和語言基礎,可供參考的、有實際應用價值的實例很難見到。
現如今,每一位計算機人,不論是計算機專業人員還是非專業人員,大概都要從文字處理和電子表格入手,Office系列軟件確實可以解決我們日常工作、學習和生活中的很多問題,VBA組件編制程序,進行程序設計,在Office基礎上進行二次開發,制作出符合我們特定需要的軟件,實現繁瑣、機械的日常工作自動化,進一步提高工作效率,提高軟件的應用水平。
二、需求分析
象棋淘汰賽選手兩兩對局,勝者再兩兩對局,最后勝出者,即為冠軍。此比賽局數少,但不是十分公平。循環賽每名選手與其他所有對手均對局,最后計算每名選手積分,按積分排名次。此比賽雖然公平,但隨著選手的增多,需要比賽局數呈幾何基數增多,需要時間長,根本無法實現。此系統的比賽采用積分循環制,規則要求如下:
根據比賽參賽選手,第一局,需要排出比賽對局名單;兩人只賽一局,對局后記錄每名選手積分,根據選手積分成績排名,再高手對高手,孬手對孬手,排出下一輪對局;繼續對局、積分、排名,根據高對高,孬對孬,排下一輪對局,直到對局合適輪次,結束比賽,最后排出總名次。
采用以上規則,每輪比賽對局后,按照選手積分排名次,再排下一輪對局,高手之間幾乎都能對一局,高手之間名次充分公平;另外,孬手之間也充分對局,也充分排好了名次。使得比賽時間不是很長,又能展現選手實力,拉開選手比賽成績,實現了競賽排名的要求。
三、概要設計
1.操作數據準備
選手錄入:建立電子表格工作簿,在工作表中,輸入選手序號、名字。選手人數錄入:在工作表對應單元格中輸入比賽選手人數。
2.對局評分過程
(1)首輪對局分配:第一輪以計算機分配對手。在每名選手第一輪列的對手列自動填充選手序號(選手序號首尾對局);并在先后列自動填充先后手(選手序號小的設置為先手,執紅棋先行)。(2)錄入比賽成績:兩人只賽一局,賽后填寫比賽得分,勝方積2分,負方積0分,和局雙方各積1分。(3)對局分配:第二輪起,評分及分配對手過程。將選手目前幾輪比賽得分累加,統計出當前選手總積分,填充到總積分列;按總積分列排名;分配對手,從最高分選手,向下尋找分數最接近,并且未對過局的選手,將對手序號填充到該輪對手列,同時將對手的對手列填上此選手;對比兩選手先后手,后手多的設置為先手,執紅棋先行。(4)比賽過程:重復2和3步驟,直到第7輪或第8輪,比賽結束。(5)排名次:名次按積分降序排列,積分相同的,再按選手對手積分的和降序排列,最后排出總名次。
通過以上實例,可以看到新課標指導下對高中計算機老師提出了更多要求,要求他們對當前高中學生對計算機課程的不同層次,在梳理好Excel VBA技術知識的基礎上,進行VBA使用程序的研究開發,提高工作的信息化和工作效率。在VBA信息技術應用中,發現Excel的宏錄制、半手工半程序化操作、全程序化操作、二次開發、大量應用實例等對信息技術應用的價值。引導學生將計算機技術運用到生活中,對各類問題加以解決,讓使用者看到VBA的應用,將對推進和落實素質教育、發展學生主體性和創造性、培養學生創新精神和實踐能力具有重要意義。
參考文獻:
[1]李政.完美體驗來自Office XP[M].機械工業出版社,2002.
[2]齊治昌.軟件工程[M].高等教育出版社,1997.