張劍
關(guān)鍵詞:在線投票;人力資源;二維碼
0 引言
人力資源測(cè)評(píng)是一項(xiàng)常態(tài)化的工作,多年來采用紙質(zhì)投票形式進(jìn)行。在測(cè)評(píng)流程方面,測(cè)評(píng)形式不斷豐富,參與測(cè)評(píng)的人員數(shù)量增多,每一次投票都需要消耗大量的紙張和其他耗材,同時(shí),測(cè)評(píng)結(jié)果相應(yīng)的數(shù)據(jù)量也越來越龐大。在測(cè)評(píng)規(guī)則方面,規(guī)則日益復(fù)雜,具體表現(xiàn)在:一是題型上的多樣化,包括單項(xiàng)選擇、不定項(xiàng)選擇等;二是投票方式包括匿名和實(shí)名兩種;三是根據(jù)崗位劃分投票類型。人力資源測(cè)評(píng)直接關(guān)系到領(lǐng)導(dǎo)班子及干部的綜合能力考核、干部提拔、工作開展成效等,因此必須保證結(jié)果的準(zhǔn)確性。采用紙質(zhì)投票,每次投票都會(huì)出現(xiàn)一定比例的無效票,這會(huì)影響實(shí)際考核成績(jī),且復(fù)雜的測(cè)評(píng)規(guī)則導(dǎo)致計(jì)票工作復(fù)雜、煩瑣且易出錯(cuò),需要多次核對(duì),耗費(fèi)大量人力物力,產(chǎn)生較大的時(shí)間成本。
在線投票系統(tǒng)可以有效解決這些問題,用戶投票后,由服務(wù)器端自動(dòng)進(jìn)行統(tǒng)計(jì)匯總。這種方式快捷、實(shí)時(shí)、高效,尤其能夠減輕工作人員的統(tǒng)計(jì)壓力,提高統(tǒng)計(jì)的正確率。
1 系統(tǒng)需求分析
傳統(tǒng)的人力資源測(cè)評(píng)流程是:主管部門設(shè)計(jì)并發(fā)放測(cè)評(píng)票,投票人員進(jìn)行投票,然后匯總統(tǒng)計(jì)投票結(jié)果得出結(jié)論。
其具體需求場(chǎng)景為,在測(cè)評(píng)前,主管部門設(shè)計(jì)測(cè)評(píng)票的問題、題型及選項(xiàng)。測(cè)評(píng)票根據(jù)投票人員的崗位劃分為四類,分別是A、B、C、D票。測(cè)評(píng)時(shí),對(duì)應(yīng)發(fā)放測(cè)評(píng)票,一人一票,其中A票、B票人員需要實(shí)名投票,C票、D票人員則進(jìn)行匿名投票。測(cè)評(píng)后,進(jìn)行統(tǒng)計(jì),除了所有選票的匯總總表外,還需要針對(duì)四種票型分別進(jìn)行統(tǒng)計(jì),并可查看A票、B票人員提交的測(cè)評(píng)票結(jié)果。
對(duì)第三方投票平臺(tái)的調(diào)研后發(fā)現(xiàn),微信小程序、App、投票網(wǎng)站等平臺(tái)上提供的投票功能單一,不能滿足如此復(fù)雜的測(cè)評(píng)場(chǎng)景的規(guī)則,因此需要開發(fā)一套適配測(cè)評(píng)流程和測(cè)評(píng)規(guī)則的在線投票系統(tǒng)。
2 系統(tǒng)設(shè)計(jì)
2.1 系統(tǒng)總體架構(gòu)
基于B/S模式(瀏覽器/服務(wù)器, Browser/Server) 進(jìn)行開發(fā),采用MVC(Model-View-Control,即模型-視圖-控制)設(shè)計(jì)模式[1]。在該架構(gòu)中,模型為數(shù)據(jù)層,實(shí)現(xiàn)數(shù)據(jù)庫(kù)的集中存儲(chǔ)管理;控制器為業(yè)務(wù)邏輯層,為表現(xiàn)層提供數(shù)據(jù)庫(kù)訪問接口并提供服務(wù);視圖為表現(xiàn)層,通過HTTP向業(yè)務(wù)邏輯層發(fā)送消息。如圖1所示為系統(tǒng)的總體架構(gòu)設(shè)計(jì)。
2.2 系統(tǒng)功能設(shè)計(jì)
系統(tǒng)功能主要包括用戶投票、測(cè)評(píng)票設(shè)計(jì)與維護(hù)、測(cè)評(píng)結(jié)果統(tǒng)計(jì)與打印、后臺(tái)管理以及防止惡意投票和重復(fù)投票等功能。用戶分為后臺(tái)維護(hù)人員(電腦端應(yīng)用)和投票人員(移動(dòng)端應(yīng)用)兩類。
1) 后臺(tái)維護(hù)人員核心功能。系統(tǒng)通過ASP+Java?Script實(shí)現(xiàn)了滿足需求所列復(fù)雜測(cè)評(píng)規(guī)則的設(shè)計(jì),如圖2所示。
① 測(cè)評(píng)票設(shè)計(jì)與維護(hù)。測(cè)評(píng)票分為四種,分別為領(lǐng)導(dǎo)班子及班子成員測(cè)評(píng)、選人用人工作民主評(píng)議、新提拔干部測(cè)評(píng)、黨建工作測(cè)評(píng)。領(lǐng)導(dǎo)班子及班子成員測(cè)評(píng)的題型為評(píng)分,可以規(guī)定評(píng)分的定型標(biāo)準(zhǔn),編輯測(cè)評(píng)題目,分值區(qū)間為0~10分,默認(rèn)為9.0分。選人用人工作民主評(píng)議、新提拔干部測(cè)評(píng)、黨建工作測(cè)評(píng)三類測(cè)評(píng)的題型可根據(jù)題目自選,包括評(píng)分、單選、不定項(xiàng)選擇、手動(dòng)輸入四種。可以根據(jù)題型編輯題目和選項(xiàng)。題目?jī)?nèi)容和數(shù)量、選項(xiàng)內(nèi)容和數(shù)量均可自行定義。更改題目的顯示順序時(shí),不需要重新編輯題目,可通過改變排序值的大小自行設(shè)置,排序值小的排在前面。
② 測(cè)評(píng)結(jié)果統(tǒng)計(jì)與打印。根據(jù)主管部門提供的測(cè)評(píng)匯總表進(jìn)行設(shè)計(jì),用戶投票數(shù)據(jù)發(fā)送至服務(wù)器,由系統(tǒng)進(jìn)行匯總、統(tǒng)計(jì),得出測(cè)評(píng)結(jié)果,可在網(wǎng)頁(yè)上瀏覽或按照測(cè)評(píng)匯總表的格式導(dǎo)出為xls文件。
③ A票、B票人員名單維護(hù)。后臺(tái)維護(hù)人員在測(cè)評(píng)前先行將A票、B票人員名單及其基本信息錄入系統(tǒng)數(shù)據(jù)庫(kù),可根據(jù)人員情況進(jìn)行增加和刪除。領(lǐng)導(dǎo)班子成員測(cè)評(píng)票需根據(jù)錄入的人員名單進(jìn)行設(shè)置。
④ 創(chuàng)建投票二維碼。按照需求,將投票人員分為A、B、C、D四類,根據(jù)每一類投票人員的數(shù)目生成對(duì)應(yīng)的二維碼。每一類測(cè)評(píng)票生成一個(gè)二維碼,每個(gè)人對(duì)應(yīng)四類測(cè)評(píng)票生成四個(gè)二維碼,這四個(gè)二維碼生成在一張圖片中,實(shí)現(xiàn)一人一票和匿名設(shè)計(jì)。創(chuàng)建好所有的二維碼后,自動(dòng)將所有圖片打包,供后臺(tái)維護(hù)人員下載至本地,便于打印。
2) 投票人員核心功能。投票人員無須注冊(cè)。C 票和D票投票人員在掃描二維碼后可以直接進(jìn)行匿名投票,而A票和B票人員須實(shí)名投票,因此在投票時(shí)必須進(jìn)行身份認(rèn)證,只有身份信息完全匹配時(shí),才可投票。
2.3 系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
根據(jù)功能分析,本系統(tǒng)需要建立A票、B票人員表、四類測(cè)評(píng)票的測(cè)評(píng)票表及投票記錄表,以減少表間不必要的耦合并提高數(shù)據(jù)存取效率。本著數(shù)據(jù)庫(kù)設(shè)計(jì)的一致性、安全性和可擴(kuò)展性等要求[2],建立了數(shù)據(jù)庫(kù)模型并進(jìn)行了數(shù)據(jù)庫(kù)設(shè)計(jì),共設(shè)計(jì)了15個(gè)表,包含163個(gè)字段。圖3展示了數(shù)據(jù)庫(kù)的E-R圖,用于表示實(shí)體之間的聯(lián)系和依賴[3]。
1) 每一類測(cè)評(píng)票與用戶之間是一對(duì)多的關(guān)系,即每一類測(cè)評(píng)票都可以被多個(gè)用戶投票。
2) 測(cè)評(píng)票與投票記錄之間是一對(duì)多的關(guān)系,每個(gè)測(cè)評(píng)票都對(duì)應(yīng)多條投票記錄。
3) 用戶與每一類測(cè)評(píng)票對(duì)應(yīng)的投票記錄之間是一對(duì)一的關(guān)系,即每個(gè)用戶對(duì)一類測(cè)評(píng)票只能產(chǎn)生一條投票記錄。
3 關(guān)鍵技術(shù)
3.1 Ajax 技術(shù)
JavaScript是一種已被廣泛應(yīng)用于Web開發(fā)的高級(jí)腳本語言,主要用于為網(wǎng)頁(yè)添加動(dòng)態(tài)功能,提供流暢美觀的瀏覽效果。它通過嵌入HTML中來實(shí)現(xiàn)自身的功能。jQuery是一個(gè)JavaScript框架,它提供了強(qiáng)大的功能,使得JavaScript 腳本更加簡(jiǎn)潔、方便。例如,在傳統(tǒng)的Web開發(fā)中,前端與服務(wù)器的通信每次數(shù)據(jù)更新都需要重新刷新網(wǎng)頁(yè),而jQuery的Ajax()方法則提供了一種新的方式。
Ajax[4]是一種用于創(chuàng)建交互式、快速動(dòng)態(tài)網(wǎng)頁(yè)應(yīng)用的技術(shù),與傳統(tǒng)的B/S開發(fā)技術(shù)相比,其主要區(qū)別在于Ajax可以實(shí)現(xiàn)網(wǎng)頁(yè)的異步更新,在不刷新整個(gè)頁(yè)面的前提下,更新頁(yè)面的某個(gè)部分。
3.2 HTML5技術(shù)
HTML5是構(gòu)建Web內(nèi)容的一種語言描述方式,它是對(duì)以往HTML技術(shù)的改進(jìn)[5]。例如,表單是實(shí)現(xiàn)用戶與頁(yè)面后臺(tái)交互的主要組成部分,HTML5在表單設(shè)計(jì)上的功能更加強(qiáng)大,其類型和屬性的多樣性大大增強(qiáng)了HTML表達(dá)表單的形式,有利于程序員的快速閱讀和開發(fā)。
3.3 二維碼創(chuàng)建并打包下載
這項(xiàng)技術(shù)的難點(diǎn)在于將二維碼批量導(dǎo)出并壓縮到一個(gè)文件夾中。另外,需要注意的一點(diǎn)是,請(qǐng)求圖片資源時(shí)采用的是異步請(qǐng)求[6],必須等到所有圖片請(qǐng)求完成后才能進(jìn)行打包。實(shí)現(xiàn)思路如下:
1) 利用QRCode()方法生成四個(gè)單獨(dú)的二維碼,并將它們作為一組重新繪制在一個(gè)HTML5 Canvas 標(biāo)簽內(nèi)。
2) 通過Base64編碼方式,將Canvas畫布信息轉(zhuǎn)換成一串二進(jìn)制數(shù)據(jù)。
3) 解碼這些編碼,將其轉(zhuǎn)換為PNG格式的圖片,并存放于HTML5的img標(biāo)簽內(nèi),形成測(cè)評(píng)票面。
4) 循環(huán)生成所有測(cè)評(píng)票面的圖片,利用JsZip方法壓縮生成的文件,形成壓縮包。
3.4 安全策略
考慮到系統(tǒng)安全,登錄時(shí)通過正則表達(dá)式限制輸入的文本。如果用戶輸入如“/”“=”等符號(hào),將被視為SQL注入[7],從而無法提交。投票人員的二維碼在投票完成后立即銷毀,這能有效防止重復(fù)投票和暴力破解,從而保障系統(tǒng)安全。
4 應(yīng)用測(cè)試
為了保證系統(tǒng)正式投入應(yīng)用時(shí)的效果,在開發(fā)完成后,對(duì)系統(tǒng)的業(yè)務(wù)流程和功能模塊進(jìn)行了全面測(cè)試,并對(duì)測(cè)試中出現(xiàn)的問題進(jìn)行了及時(shí)的修改和完善。除了進(jìn)行功能測(cè)試(圖4~圖5) ,還利用ApacheJMeter工具進(jìn)行了壓力測(cè)試(圖6) ,對(duì)服務(wù)器、數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)進(jìn)行了負(fù)載模擬。
據(jù)了解,實(shí)際參與測(cè)評(píng)的人數(shù)一般不超過200人,每人掃碼4次,因此在測(cè)試時(shí),設(shè)置線程數(shù)為250個(gè)(相當(dāng)于模擬250個(gè)用戶),啟動(dòng)時(shí)間設(shè)為1秒,循環(huán)次數(shù)設(shè)為4次。測(cè)試能夠順利完成,沒有出現(xiàn)請(qǐng)求錯(cuò)誤,響應(yīng)時(shí)間的中值為431毫秒。
5 結(jié)論
本系統(tǒng)嚴(yán)格遵循軟件開發(fā)流程,進(jìn)行需求分析、系統(tǒng)設(shè)計(jì)與開發(fā),并針對(duì)Ajax技術(shù)、二維碼創(chuàng)建與打包下載、網(wǎng)站安全策略、Apache JMeter性能測(cè)試等關(guān)鍵技術(shù)進(jìn)行了深入研究。此外,完成了主體代碼的編寫、測(cè)試和優(yōu)化。系統(tǒng)功能覆蓋電腦端和手機(jī)端,實(shí)現(xiàn)了電腦端系統(tǒng)的部署和職工手機(jī)端的在線投票,服務(wù)器自動(dòng)計(jì)算并統(tǒng)計(jì)用戶的投票結(jié)果。該系統(tǒng)彌補(bǔ)了傳統(tǒng)紙質(zhì)投票方式的不足,具有界面簡(jiǎn)潔、性能可靠和便捷高效的特點(diǎn),進(jìn)一步提升了信息化技術(shù)水平,并為后續(xù)類似軟件的研發(fā)提供了至關(guān)重要的借鑒。