国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

摜蛋比賽自動(dòng)分組判分系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2017-04-15 11:17:08郭杰
電腦知識(shí)與技術(shù) 2016年34期

郭杰

摘要:摜蛋比賽是深受群眾喜愛(ài)的撲克比賽,傳統(tǒng)手工分組、計(jì)分,十分繁瑣,耗費(fèi)大量人力,且容易出現(xiàn)錯(cuò)誤。該系統(tǒng)是采用Struts2,Spring,Hibernate框架開(kāi)發(fā)的Java Web項(xiàng)目,客戶端無(wú)須安裝,打開(kāi)瀏覽器即可訪問(wèn)。實(shí)現(xiàn)了根據(jù)比賽規(guī)則自動(dòng)分組功能,比賽成績(jī)錄入功能,根據(jù)成績(jī)級(jí)差自動(dòng)判分功能,設(shè)置局?jǐn)?shù)和打印輸出總成績(jī)功能。

關(guān)鍵詞:Java;Web;Struts2;Spring;Hibernate

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)34-0091-02

Abstract: GUAN DAN game is loved by the masses of poker game, the traditional manual grouping, scoring is very tedious, spend a lot of manpower, and easy error. The system is the use of Struts2, Spring, Hibernate framework for the development of the Web Java project, the client does not need to install, open the browser to access. To realize the automatic grouping function according to the rules of the game, race entry function, according to the results of differential automatic judging function, setting function innings and print output total score.

Key words: Java; Web; Struts2; Spring; Hibernate

1 背景

摜蛋是一種起源于江蘇淮安的撲克游戲,群眾基礎(chǔ)廣泛,深受群眾歡迎,年終及工會(huì)活動(dòng)常常舉辦摜蛋比賽,目前缺乏相應(yīng)的比賽專用軟件,傳統(tǒng)方式采用手工登記人員分組、記錄每局成績(jī),換算得分,十分繁瑣,耗費(fèi)大量人力和時(shí)間,且容易出現(xiàn)錯(cuò)誤。本系統(tǒng)采用B/S結(jié)構(gòu),使用Struts2,Spring,Hibernate框架快速開(kāi)發(fā),只需部署服務(wù)器端,客戶端無(wú)須安裝,打開(kāi)瀏覽器即可訪問(wèn)。賽前錄入人員名單進(jìn)行編組,賽中按照比賽規(guī)則多輪分組,現(xiàn)場(chǎng)錄入比賽成績(jī),自動(dòng)判分,并打印輸出各局成績(jī)和分組情況,最終現(xiàn)場(chǎng)公示總成績(jī)。大大提高比賽裁判效率,使得比賽過(guò)程公開(kāi)、透明、公正。

2 技術(shù)基礎(chǔ)

2.1 Spring框架

Spring框架是一個(gè)容器框架,通過(guò)配置文件,在程序運(yùn)行時(shí)動(dòng)態(tài)注入指定的類,從而大大加強(qiáng)了程序的靈活性和可維護(hù)性。通過(guò)Spring框架提供的事務(wù)處理,將業(yè)務(wù)邏輯層的方法統(tǒng)一進(jìn)行事務(wù)處理,保證了業(yè)務(wù)方法的正確性和可靠性。

2.2 Strust2框架

使用Struts2框架將表示層JPS頁(yè)面的調(diào)度進(jìn)行統(tǒng)一控制,將業(yè)務(wù)處理和頁(yè)面展示進(jìn)行解耦,便于項(xiàng)目的維護(hù)。在JSP頁(yè)面的數(shù)據(jù)綁定上,使用Struts2標(biāo)簽代碼更加簡(jiǎn)潔。

2.3 Hibernate框架

模型層采用Hibernate框架自動(dòng)生成實(shí)體類和配置文件,數(shù)據(jù)訪問(wèn)層采用Spring框架的HibernateDaoSupport類實(shí)現(xiàn)增、刪、改、查的操作。

3 系統(tǒng)設(shè)計(jì)

3.1 比賽流程設(shè)計(jì)

系統(tǒng)包括三種角色:管理員、主裁判、裁判助理。賽前管理員新增比賽信息,包括比賽名稱、地點(diǎn)、場(chǎng)次、每場(chǎng)時(shí)間、比賽狀態(tài)。裁判助理從Excel文件中導(dǎo)入比賽選手名單,并打印張貼。

比賽過(guò)程中,主裁判宣布比賽規(guī)則,宣布選手分組名單表,參賽選手記住自己的組號(hào)。主裁判進(jìn)行比賽分組并公示,首輪比賽隨機(jī)分組,確保同一部門(mén)兩組選手不會(huì)分在同一桌。參賽選手查看分組情況,到指定牌桌就位。主裁判開(kāi)始倒計(jì)時(shí),比賽正式開(kāi)始。同一桌兩組選手在規(guī)定時(shí)間內(nèi)一組打過(guò)A則該桌比賽結(jié)束,裁判助理記錄該桌成績(jī)并將成績(jī)錄入至系統(tǒng)中,根據(jù)分差自動(dòng)計(jì)算為每局積分。

主裁判根據(jù)第一輪比賽積分排名,進(jìn)行第二輪分組,第一名和第二名分在第一桌,第三名和第四名分在第二桌,依次類推。第二輪之后的每一輪保證打過(guò)的兩組選手不再碰面。

每輪比賽結(jié)束后,裁判助理導(dǎo)出成績(jī)排名至Excel文件,打印并張貼。最后一輪比賽結(jié)束后,主裁判公示比賽名次。

3.2 功能設(shè)計(jì)

系統(tǒng)總體功能設(shè)計(jì)如下圖所示。

3.3 架構(gòu)設(shè)計(jì)

本系統(tǒng)采用B/S分層架構(gòu)開(kāi)發(fā),包括:模型層、業(yè)務(wù)邏輯層、表示層、數(shù)據(jù)訪問(wèn)層、控制層、通用層。

3.3.1 模型層(Java Bean)

該層為簡(jiǎn)單的POJO(Plain Ordinary Java Object)類,包含與數(shù)據(jù)庫(kù)表相對(duì)應(yīng)的實(shí)體類,由于各層都需要使用該項(xiàng)目中的類,我們可以將該項(xiàng)目獨(dú)立出來(lái),稱為“模型層”,實(shí)體類是各層數(shù)據(jù)傳遞的載體。

3.3.2 表示層(JSP)

表示層包括各個(gè)JSP頁(yè)面,在瀏覽器中輸入網(wǎng)址和文件名就可以進(jìn)入相應(yīng)的頁(yè)面,提供所有與用戶進(jìn)行交互的界面,從而完成各個(gè)功能,JSP頁(yè)面使用DIV、CSS進(jìn)行布局,利用Struts2標(biāo)簽綁定數(shù)據(jù),表示層的跳轉(zhuǎn)和數(shù)據(jù)綁定統(tǒng)一由控制層進(jìn)行處理。

3.3.3 控制層(Action)

控制層采用Struts2框架,是表示層和業(yè)務(wù)邏輯層進(jìn)行交互的橋梁,表示層錄入的數(shù)據(jù),封裝為模型層實(shí)體類的對(duì)象,然后傳遞給業(yè)務(wù)邏輯層進(jìn)行處理,返回的數(shù)據(jù)轉(zhuǎn)換為json格式或?qū)嶓w類的對(duì)象,跳轉(zhuǎn)到相應(yīng)的頁(yè)面并顯示。

3.3.4 業(yè)務(wù)邏輯層(Service)

業(yè)務(wù)邏輯層負(fù)責(zé)處理比賽分組的算法,以及在控制層和數(shù)據(jù)訪問(wèn)層之間傳遞數(shù)據(jù)。

3.3.5 數(shù)據(jù)訪問(wèn)層(DAO)

數(shù)據(jù)訪問(wèn)層對(duì)數(shù)據(jù)進(jìn)行持久化,負(fù)責(zé)增、刪、改、查的基本操作。根據(jù)業(yè)務(wù)邏輯層傳來(lái)的數(shù)據(jù)請(qǐng)求信息,調(diào)用相關(guān)的方法,將數(shù)據(jù)反饋給業(yè)務(wù)邏輯層,最終顯示到頁(yè)面。

3.4 數(shù)據(jù)庫(kù)設(shè)計(jì)

系統(tǒng)分為配置表,用戶表,類別表,計(jì)時(shí)表,比賽表,選手表。采用MySQL數(shù)據(jù)庫(kù)建表加約束,復(fù)雜的查詢采用視圖進(jìn)行操作。使用Hibernate框架對(duì)底層數(shù)據(jù)庫(kù)的連接進(jìn)行了封裝,通過(guò)自動(dòng)生成的XML配置文件將數(shù)據(jù)庫(kù)表與實(shí)體類建立一一對(duì)應(yīng)的關(guān)系,再進(jìn)行數(shù)據(jù)持久化操作。

3.5 界面設(shè)計(jì)

表示層與用戶交互的界面采用JSP頁(yè)面,采用DIV、CSS進(jìn)行布局。數(shù)據(jù)顯示采用EasyUI組件。EasyUI是基于jQuery的用戶界面插件集合,只需要使用簡(jiǎn)單的HTML標(biāo)記即可以定義用戶界面。綁定的數(shù)據(jù)是由控制層返回的JSON格式的輕量級(jí)數(shù)據(jù),傳輸數(shù)據(jù)量小、效率高。EasyUI采用了Ajax異步刷新的方式顯示分頁(yè)數(shù)據(jù),數(shù)據(jù)顯示速度快,實(shí)現(xiàn)了良好的用戶體驗(yàn)。

4 關(guān)鍵技術(shù)

4.1 分組算法

首輪分組采用折半隨機(jī)算法,將參數(shù)選手順序編組,所有組數(shù)分為對(duì)等的兩部分,兩個(gè)部分的選手部門(mén)不出現(xiàn)重復(fù)。兩個(gè)部分的組數(shù)隨機(jī)混淆,然后每?jī)山M進(jìn)行匹配。

第二輪分組根據(jù)首輪比賽得分情況進(jìn)行排序,得分由高到低,兩兩編組,確保積分相近的選手分在同一桌。

其他輪分組按照第二輪分組算法,加上打過(guò)不重復(fù)原則。即第一組、第二組打過(guò),則第一組和第三組分在同一桌。

4.2 積分算法

規(guī)定時(shí)間內(nèi)最先打過(guò)A一方獲勝,一方獲勝本輪比賽即結(jié)束。計(jì)時(shí)結(jié)束雙方均未打過(guò)A,則記錄當(dāng)前各自正在打的等級(jí)。積分算法是根據(jù)雙方最終的級(jí)差數(shù)值來(lái)?yè)Q算相應(yīng)的積分,具體級(jí)差積分如下表所示。例如:甲方打2(數(shù)值為2),乙方打過(guò)A(數(shù)值為15),則甲方乙方的級(jí)差為13分,乙方勝得26分,甲方負(fù)得0分。若甲乙雙方均打到A,則級(jí)差為0,各積13分。如遇對(duì)手棄權(quán),勝方按16分計(jì),棄權(quán)方按0分計(jì)。若兩方同時(shí)棄權(quán),則均按0分計(jì)。

5 結(jié)束語(yǔ)

本文深入研究了摜蛋比賽自動(dòng)分組判分系統(tǒng)的技術(shù)基礎(chǔ)、系統(tǒng)架構(gòu)、業(yè)務(wù)流程設(shè)計(jì)、功能設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、界面設(shè)計(jì)以及關(guān)鍵算法。提出了Java平臺(tái)利用SSH框架搭建分層開(kāi)發(fā)模式解決實(shí)際問(wèn)題的方案。理清了摜蛋比賽的業(yè)務(wù)流程,實(shí)現(xiàn)了關(guān)鍵的分組和積分算法。該系統(tǒng)連續(xù)兩年在工會(huì)牌藝比賽中得到應(yīng)用,真正實(shí)現(xiàn)了現(xiàn)場(chǎng)高效分組、計(jì)時(shí)、錄入成績(jī)、公布名次,受到參賽選手和主辦方的普遍好評(píng)。

參考文獻(xiàn):

[1] 夏玉敏, 華中. 基于Ajax技術(shù)的摜蛋比賽自動(dòng)裁判系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 內(nèi)江科技, 2012(7): 150-151.

鲁山县| 泽库县| 枝江市| 大港区| 石柱| 新和县| 望谟县| 岳池县| 茌平县| 古交市| 施甸县| 尉犁县| 白山市| 长沙县| 施秉县| 辽宁省| 淄博市| 城固县| 阿克陶县| 家居| 山东| 宜君县| 屯门区| 万山特区| 陇川县| 巴塘县| 通山县| 五寨县| 乐山市| 公安县| 宝坻区| 勐海县| 临桂县| 蓬莱市| 怀来县| 湟源县| 溆浦县| 勐海县| 丰原市| 墨玉县| 化德县|