




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
問卷調(diào)查系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)PAGE―PAGEI―摘要電子問卷調(diào)查方式已經(jīng)成為一種流行并且便捷的調(diào)查方式,它具有調(diào)查范圍廣,信息量大,可挑選余地大,保密效果好,費(fèi)用低等優(yōu)勢。因此,電子問卷調(diào)查勢必成為社會發(fā)展不可缺少的一部分。本系統(tǒng)采用JAVA語言開發(fā),主要采用Struts,Hibernate,Spring三大框架技術(shù)。其主要功能包括電子問卷設(shè)計(jì)和問卷活動的信息采集、問卷反饋信息記錄、并支持權(quán)限的控制以及強(qiáng)大的系統(tǒng)管理員的功能等等。本文闡述了在線調(diào)查方式的優(yōu)勢,并對所做軟件的需求、設(shè)計(jì)及實(shí)現(xiàn)過程做了詳細(xì)介紹。【關(guān)鍵詞】問卷調(diào)查在線JAVA
DesignandImplementationofQuestionnaireDesignSystem【Abstract】Electronicquestionnairehasbecomeapopularandconvenientmethodofinvestigation,ithasinvestigatedawiderangeoflargeamountofinformationcanberoomforalargeselection,confidentiality,effectiveandlowcostadvantages.Therefore,theelectronicsurveywillbecomeanindispensablepartofsocialdevelopment.ThesystemisdevelopedbyJAVAlanguage,mainlyinStruts,Hibernate,Springframeworkofthethreetechnologies.Itsmainfeaturesincludeelectronicquestionnairedesignandsurveyactivities,informationcollection,questionnairefeedbackrecord,andsupporttherightsofcontrolandpowerfulfeaturesforsystemadministratorsandsoon.Thispaperdescribestheadvantagesofonlinesurveymethods,andthedemandmadebythesoftware,designandimplementationprocessdescribedindetail.【Keywords】questionnaire,Online,JAVA
目錄TOC\o"1-2"\h\z\u摘要 I第一章緒論 11.1課題來源 11.2國內(nèi)現(xiàn)狀 1第二章需求分析 52.1系統(tǒng)定義 52.2功能需求 52.3數(shù)據(jù)需求 6第三章數(shù)據(jù)庫設(shè)計(jì) 73.1數(shù)據(jù)庫的概念 73.2數(shù)據(jù)庫的選擇 73.3數(shù)據(jù)庫表的描述 7第四章技術(shù)介紹 224.1JAVA開發(fā)語言的選擇 224.2MVC設(shè)計(jì)模式 244.3Struts,Hibernate,Spring技術(shù) 254.4SQL語言 274.5開發(fā)環(huán)境 27第五章系統(tǒng)實(shí)現(xiàn) 295.1總體架構(gòu)及實(shí)現(xiàn) 295.2查看問卷信息 315.3發(fā)送通知 345.4問卷導(dǎo)入導(dǎo)出功能 365.5問卷查看 395.6問卷分析代碼實(shí)現(xiàn) 46結(jié)論 52致謝 53參考文獻(xiàn) 54―PAGE49―緒論1.1課題來源問卷調(diào)查的目的,是要通過問卷上的封閉式問題和開放式問題了解調(diào)查對象:市場調(diào)查的目的是為了收集足夠的、真實(shí)的和有效的信息為企事業(yè)單位等的其他活動和策略所服務(wù),為管理部門提供參考依據(jù)。利用市場調(diào)查的部門可以是企業(yè)、公司、團(tuán)體以及任何一切企事業(yè)單位的管理決策層或個人。市場調(diào)查的目的可能是為了制定長遠(yuǎn)性的戰(zhàn)略性規(guī)劃,也可能是為制定某階段或針對某問題的具體政策或策略,提供參考依據(jù)。研究可以是學(xué)術(shù)性的,也可以是實(shí)用性的。1.2國內(nèi)現(xiàn)狀市場調(diào)查的目的在于從零散的市場信息中收集、整理和提煉出有價值的信息和數(shù)據(jù)。問卷調(diào)查是市場調(diào)查的一種形式、問卷調(diào)查相對而言得到的回答會更加準(zhǔn)確。基于軟件的調(diào)查,是整合企業(yè)業(yè)務(wù)部門的相關(guān)需求,有針對性的對相關(guān)人員進(jìn)行問卷調(diào)查。這樣能夠更好的是企業(yè)對于所期望調(diào)查的人員,部門,以及有針對性的對已限定范圍進(jìn)行期望回饋。網(wǎng)上市場調(diào)查的優(yōu)勢有:1、便捷性和低費(fèi)用(1)網(wǎng)上市場調(diào)查可節(jié)省傳統(tǒng)的市場調(diào)查中所耗費(fèi)的大量人力和物力。(2)在網(wǎng)絡(luò)上進(jìn)行調(diào)查,只需要一臺能上網(wǎng)的計(jì)算機(jī)即可。(3)調(diào)查者在企業(yè)站點(diǎn)上發(fā)出電子調(diào)查問卷,網(wǎng)民自愿填寫,然后通過統(tǒng)計(jì)分析軟件對訪問者反饋回來的信息進(jìn)行整理和分析。(4)網(wǎng)上市場調(diào)查在收集過程中不需要派出調(diào)查人員,不受天氣和距離的限制,不需要印刷調(diào)查問卷,調(diào)查過程中最繁重、最關(guān)鍵的信息收集和錄入工作將分布到眾多網(wǎng)上用戶的終端上完成。(5)線上調(diào)查可以是無人值守和不間接地接受調(diào)查填表,信息檢驗(yàn)和信息處理工作均由計(jì)算機(jī)自動完成。2、交互性和充分性網(wǎng)絡(luò)的最大優(yōu)勢是交互性。這種交互性在網(wǎng)上市場調(diào)研中體現(xiàn)在如下兩點(diǎn):(1)在網(wǎng)上調(diào)查時,被訪問者可以及時就問卷相關(guān)的問題提出自己的看法和建議,可減少因問卷設(shè)計(jì)不合理而導(dǎo)致的調(diào)查結(jié)論出現(xiàn)偏差等問題。(2)被訪問者可以自由地在網(wǎng)上發(fā)表自己的看法,同時沒有時間的限制。而傳統(tǒng)的市場調(diào)研是不可能做到這些的,例如,面談法中的路上攔截調(diào)查,它的調(diào)查時間較短,不能超過10分鐘,否則被調(diào)查者肯定會不耐煩,因而對訪問調(diào)查員的要求非常高。3、調(diào)查結(jié)果的可靠性和客觀性由于企業(yè)站點(diǎn)的訪問者一般都對企業(yè)產(chǎn)品有一定的興趣,所以這種基于顧客和潛在顧客的市場調(diào)研結(jié)果是客觀和真實(shí)的,它在很大程度上反映了消費(fèi)者的消費(fèi)心態(tài)和市場發(fā)展(1)被調(diào)查者在完全自愿的原則下參與調(diào)查,調(diào)查的針對性更強(qiáng)。而傳統(tǒng)的市場調(diào)查中的面談法中的攔截詢問法,實(shí)質(zhì)上是帶有一定的“強(qiáng)制性”的。(2)調(diào)查問卷的填寫是自愿的,不是傳統(tǒng)調(diào)查中的“強(qiáng)迫式”,填寫者一般對調(diào)查內(nèi)容有一定的興趣,回答問題相對認(rèn)真,所以問卷填寫可靠性高。(3)網(wǎng)上市場調(diào)查可以避免傳統(tǒng)市場調(diào)研中人為因素所導(dǎo)致的調(diào)查結(jié)論的偏差,被訪問者是在完全獨(dú)立思考的環(huán)境中接受調(diào)查的,能最大限度地保證調(diào)查結(jié)果的客觀性。4、無時空和地域的限制網(wǎng)上市場調(diào)查可以24小時全天候進(jìn)行,這與受區(qū)域和時間制約的傳統(tǒng)的市場調(diào)查方式有很大的不同。5、可檢驗(yàn)性和可控制性利用Internet進(jìn)行網(wǎng)上調(diào)查收集信息,可以有效地對采集信息的質(zhì)量實(shí)施系統(tǒng)的檢驗(yàn)和控制。(1)網(wǎng)上市場調(diào)查問卷可以附加全面規(guī)范的指標(biāo)解釋,有利于消除因?qū)χ笜?biāo)理解不清或調(diào)查員解釋口徑不一而造成的調(diào)查偏差。(2)問卷的復(fù)核檢驗(yàn)由計(jì)算機(jī)依據(jù)設(shè)定的檢驗(yàn)條件和控制措施自動實(shí)施,可以有效地保證對調(diào)查問卷的100%的復(fù)核檢驗(yàn),保證檢驗(yàn)與控制的客觀公正性。(3)通過對被調(diào)查者的身份驗(yàn)證技術(shù)可以有效地防止信息采集過程中的舞弊行為。1.3研究意義問卷調(diào)查調(diào)查的范圍很廣,任何一種社會現(xiàn)象都可以作為我們研究性學(xué)習(xí)的內(nèi)容。然而,社會調(diào)查報告還是有著一定的程式。一般來說,社會調(diào)查報告應(yīng)該包含以下一些內(nèi)容:調(diào)查的目的、調(diào)查的方法、調(diào)查的時間、樣本的情況、調(diào)查的內(nèi)容、調(diào)查表的分析、分析結(jié)果、提出自己的看法等等。問卷調(diào)查有如下意義(1)調(diào)查環(huán)境,適應(yīng)快速。即通過對市場環(huán)境的調(diào)查,達(dá)到快速適應(yīng)環(huán)境,快速順利地開拓新市場的目的。(2)調(diào)查對手,勝之一籌。即通過對競爭對手的調(diào)查,達(dá)到了解對手情況,制定出措施、辦法、制度勝過競爭地手一籌的目的。(3)調(diào)查客戶,刺激需求。即通過對現(xiàn)有客戶和潛在客戶的調(diào)查,達(dá)到了解在客戶心目中的形象,制定出相應(yīng)對策,刺激客戶對產(chǎn)品。需求分析2.1系統(tǒng)定義問卷調(diào)查的目的,是要通過問卷上的封閉式問題和開放式問題了解調(diào)查對象:市場調(diào)查的目的是為了收集足夠的、真實(shí)的和有效的信息為企事業(yè)單位等的其他活動和策略所服務(wù),為管理部門提供參考依據(jù)。利用市場調(diào)查的部門可以是企業(yè)、公司、團(tuán)體以及任何一切企事業(yè)單位的管理決策層或個人。市場調(diào)查的目的可能是為了制定長遠(yuǎn)性的戰(zhàn)略性規(guī)劃,也可能是為制定某階段或針對某問題的具體政策或策略,提供參考依據(jù)。研究可以是學(xué)術(shù)性的,也可以是實(shí)用性的。1)調(diào)查環(huán)境,適應(yīng)快速。即通過對市場環(huán)境的調(diào)查,達(dá)到快速適應(yīng)環(huán)境,快速順利地開拓新市場的目的。2)調(diào)查對手,勝之一籌。即通過對競爭對手的調(diào)查,達(dá)到了解對手情況,制定出措施、辦法、制度勝過競爭地手一籌的目的。3)調(diào)查客戶,刺激需求。即通過對現(xiàn)有客戶和潛在客戶的調(diào)查,達(dá)到了解在客戶心目中的形象,制定出相應(yīng)對策,刺激客戶對產(chǎn)品需求的目的。2.2功能需求問卷調(diào)查的一個主要目的就是為企業(yè)的抉擇者和相關(guān)管理人員通過調(diào)查的形式來統(tǒng)計(jì)相關(guān),企業(yè)所希望統(tǒng)計(jì)的相關(guān)信息,通過與預(yù)期的期望進(jìn)行比對從而得出最終的決策方案或?qū)嵤┺k法。基于ERP系統(tǒng)通過問卷調(diào)查的方式可以統(tǒng)計(jì)企業(yè)中相關(guān)人員的意愿以及針對企業(yè)中相關(guān)人士進(jìn)行全面的信息收集。基于ERP系統(tǒng)的問卷調(diào)查可以大大的提高企業(yè)中人力資源部門統(tǒng)計(jì)相關(guān)調(diào)查信息的效率,節(jié)省委托外部公司介入企業(yè)調(diào)查的相關(guān)環(huán)節(jié),并能繼承系統(tǒng)辦公和系統(tǒng)調(diào)查于一體,方便管理層得使用。從信息需求的角度分析針對以上方針,要設(shè)計(jì)一個公司內(nèi)部基于ERP系統(tǒng)的問卷調(diào)查系統(tǒng)。首先要確定公司中問卷調(diào)查是存在實(shí)名制,和匿名制。即公司根據(jù)調(diào)查項(xiàng)目的不同,以及調(diào)查范圍的不同可以針對不同的人員開展相關(guān)實(shí)名調(diào)查以及匿名調(diào)查以確保調(diào)查信息的貼真性。從用戶的角度分析統(tǒng)計(jì)者或相關(guān)管理人員應(yīng)該可以通過企業(yè)的ERP系統(tǒng)制作相關(guān)的電子問卷,并能夠向相關(guān)從屬人員進(jìn)行調(diào)查。被調(diào)查者,即企業(yè)員工應(yīng)通過點(diǎn)擊郵件鏈接、登錄企業(yè)系統(tǒng)查看調(diào)查信息,或登錄自助系統(tǒng)接收系統(tǒng)消息查看并根據(jù)相關(guān)提示進(jìn)入調(diào)查問卷的界面填寫問卷。2.3數(shù)據(jù)需求問卷設(shè)計(jì)必備的信息對于基于ERP設(shè)計(jì)的一份電子問卷,需要系統(tǒng)當(dāng)前操作員給出必輸項(xiàng)目為問卷的調(diào)查日期,調(diào)查范圍,調(diào)查方式(實(shí)名、匿名)。企業(yè)中對應(yīng)的部門、人員類別、人員編碼、所屬公司。應(yīng)根據(jù)軟件的具體要求而設(shè)定。調(diào)查用戶所需提供信息對于實(shí)名調(diào)查而言用戶需要提供用用戶名、密碼來進(jìn)行實(shí)名問卷調(diào)查。對于匿名調(diào)查中用戶僅需根據(jù)提供的調(diào)查地址填寫問卷中的必填項(xiàng)目即可通知方式企業(yè)通過ERP軟件對下屬員工通知的方式,可以為系統(tǒng)通知,書面通知,人事傳達(dá),部門通知等,對于本軟件由于對當(dāng)前用戶未作限定,所以本軟件僅通過系統(tǒng)通知、郵件通知、自助消息等相關(guān)ERP基礎(chǔ)功能以實(shí)現(xiàn)。
數(shù)據(jù)庫設(shè)計(jì)3.1數(shù)據(jù)庫的概念當(dāng)人們從不同的角度來描述這一概念時就有不同的定義。例如,稱數(shù)據(jù)庫是一個“記錄保存系統(tǒng)”(該定義強(qiáng)調(diào)了數(shù)據(jù)庫是若干記錄的集合)。又如稱數(shù)據(jù)庫是“人們?yōu)榻鉀Q特定的任務(wù),以一定的組織方式存儲在一起的相關(guān)的數(shù)據(jù)的集合”(該定義側(cè)重于數(shù)據(jù)的組織)。更有甚者稱數(shù)據(jù)庫是“一個數(shù)據(jù)倉庫”。當(dāng)然,這種說法雖然形象,但并不嚴(yán)謹(jǐn)。嚴(yán)格地說,數(shù)據(jù)庫是“按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫”。本軟件使用的數(shù)據(jù)庫模型將一直以來使用都最為廣泛的關(guān)系模型作為數(shù)據(jù)庫的建設(shè)依據(jù)。關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是以二維表的形式實(shí)現(xiàn)多對多、多對一、一對多等表關(guān)系實(shí)現(xiàn)方式,一個關(guān)系對應(yīng)通常說的一張表,并且關(guān)系的每一個分量必須是一個不可分的數(shù)據(jù)項(xiàng)。而一個基于關(guān)系模型的數(shù)據(jù)庫則是由若干個二維表組成的。對于一些大型和中型的數(shù)據(jù)庫,如Oracle11G,SQLServer2008等都屬于關(guān)系型數(shù)據(jù)庫,同時它們所帶有的數(shù)據(jù)庫管理工具是其他小型數(shù)據(jù)庫所沒有的,而同時這些工具又為管理員的工作節(jié)省了很多的時間和財(cái)力。3.2數(shù)據(jù)庫的選擇本軟件兼容Oracle10G/Oracle11g、Sql2005/Sql2008、DB2等多種數(shù)據(jù)庫,可選擇NC中間件(用友公司平臺研制,Tomcat代理)、weblogic、websphere等多種中間件實(shí)現(xiàn)軟件管控。對于中小型企業(yè),通常會根據(jù)客戶需要使用SQL2005進(jìn)行數(shù)據(jù)庫搭配,而對于一些大中型企業(yè),數(shù)據(jù)庫對應(yīng)信息過萬的的大庫存量,通常會采取ORACLE數(shù)據(jù)庫,ORACLE數(shù)據(jù)庫具有安全性強(qiáng),兼容性好,數(shù)據(jù)承受能力好的特點(diǎn)。演示產(chǎn)品對應(yīng)數(shù)據(jù)量較小,故本軟件演示平臺所加數(shù)據(jù)源為SQL2008數(shù)據(jù)庫。3.3數(shù)據(jù)庫表的描述概念模型是對信息世界建模,其表示方法有很多,其中最為常用的是實(shí)體-聯(lián)系模型,即E-R模型,它是用E-R圖來描述現(xiàn)實(shí)世界的概念模型。E-R圖中用矩形表示實(shí)體;用橢圓表示屬性;用菱形表示聯(lián)系。為了清楚簡便的描述出實(shí)體與其屬性之間的關(guān)系,用VISIO軟件生成了一張包含實(shí)體屬性的完整E-R圖,見圖3—1。圖3—1E-R圖使用PowerDesigner生成的數(shù)據(jù)庫關(guān)系圖,見圖3—2圖3—23.3.1調(diào)查結(jié)果(hrqs_met)該表主要定義了頭信息的主鍵,調(diào)查結(jié)果的主鍵以及為頭信息取值設(shè)定表項(xiàng)。見表3-1。標(biāo)識符數(shù)據(jù)類型長度非空描述主鍵外鍵說明pk_meta_resultChar20Y主鍵pk_resultChar20N調(diào)查結(jié)果主鍵YY自增pk_inv_metaChar20N頭信息主鍵Y自增meta_infoChar20N取值表3—13.3.2調(diào)查問卷頭信息項(xiàng)(hrqs_inv_meta)該表主要實(shí)現(xiàn)功能為存儲頭信息項(xiàng)目,具體實(shí)現(xiàn)方法繼承基類而實(shí)現(xiàn)。見表3-2。標(biāo)識符數(shù)據(jù)類型長度非空描述主鍵外鍵說明pk_inv_metaChar20Y主鍵Y自增pk_invVarchar20Y所屬調(diào)查活動Ypk_metaVarchar20Y頭信息項(xiàng)表3—23.3.3調(diào)查結(jié)果(hrqs_result)該表主要完成對于員工的調(diào)查問卷狀態(tài)、提交日期等調(diào)查結(jié)果的記錄。見表3-3。標(biāo)識符數(shù)據(jù)類型長度非空描述主鍵外鍵說明pk_resultChar20Y主鍵Ypk_invChar20N調(diào)查活動Y自增pk_ownerVarchar20N調(diào)查對象主鍵owner_infoVarchar20N調(diào)查對象信息form_statusSmallint100N問卷狀態(tài)0,1,2表示,0編寫中,1已提交,3結(jié)束submit_dateChar19N提交日期表3—33.3.4調(diào)查范圍(hrqs_inv_scope)該表主要完成公司調(diào)查活動對應(yīng)的對象,實(shí)現(xiàn)一對多的對應(yīng)。見表3-4。標(biāo)識符數(shù)據(jù)類型長度非空描述主鍵外鍵說明pk_inv_scopeChar20Y主鍵Y自增pk_invChar20N所屬調(diào)查活動Ypk_ownerChar20N調(diào)查對象主鍵表3—43.3.5調(diào)查結(jié)果_問卷明細(xì)(hrqs_result_form)該表主要用來保存調(diào)查問卷中的問卷對應(yīng)答案相關(guān)數(shù)據(jù),如數(shù)字值,字符值(文字?jǐn)⑹鲱})等。見表3-5。標(biāo)識符數(shù)據(jù)類型長度非空描述主鍵外鍵說明pk_result_formChar20Y主鍵Ypk_resultChar20N調(diào)查結(jié)果Y自增pk_topic_optionChar20N題目選項(xiàng)Ystr_valueVarchar1000N字符值dbl_valuedcimal(12,4)12N數(shù)字值pk_topicChar20N題目主鍵表3—53.3.6調(diào)查活動(hrqs_inv)該表主要記錄問卷活動中調(diào)查范圍,調(diào)查時間,調(diào)查問卷,調(diào)查名稱等一系列關(guān)聯(lián)信息。在此表中定義了10個字段來進(jìn)行信息存儲。見表3-6。標(biāo)識符數(shù)據(jù)類型長度非空描述主鍵外鍵說明pk_invChar20Y主鍵Yinv_namVarchar100Y調(diào)查名稱Y自增pk_formChar20Y關(guān)聯(lián)問卷Ypk_corpChar4N所屬公司PeriodChar4N所屬年度anonymousChar1N是否匿名調(diào)查begin_dateChar19N調(diào)查開始日期end_dateChar19N調(diào)查截止日期intendedInt自動N預(yù)期問卷數(shù)量invstatussmallint自動N狀態(tài)object_typesmallint自動Y調(diào)查范圍對象類型表3—63.3.7問卷題目(hrqs_topic)該表主要功能是記錄問卷設(shè)計(jì)的相關(guān)信息,并記錄問卷內(nèi)容相關(guān)信息以便進(jìn)行問卷展現(xiàn)時進(jìn)行調(diào)用,以及問卷導(dǎo)出時進(jìn)行調(diào)用。此表中定義了12個字段進(jìn)行信息存儲,以外鍵題目分類來進(jìn)行聯(lián)結(jié)表與表之間的關(guān)系,實(shí)現(xiàn)問卷分類與問卷一對多關(guān)系。見表3-7。標(biāo)識符數(shù)據(jù)類型長度非空描述主鍵外鍵說明pk_topicChar20Y主鍵Y自增pk_topic_typeChar20N題目分類Ytopic_descVarchar500N題目描述sort_orderIntN序號directionSmallintN排列方式topic_styleSmallintN題型scaleSmallintN精度max_valuedecimal(12,4)12N最大值最大四位min_valuedecimal(12,4)12N最小值最大四位font_familyVarchar500N字體font_sizeIntN字體大小font_styleIntN字體樣式font_colorInt30N字體顏色表3—73.3.8問卷題目選項(xiàng)(hrqs_topic_option)該表的主要功能是記錄問卷設(shè)計(jì)(內(nèi)容選項(xiàng))的相關(guān)信息,并記錄問卷內(nèi)容的相關(guān)信息以便進(jìn)行問卷展現(xiàn)時進(jìn)行調(diào)用以及問卷導(dǎo)出時進(jìn)行調(diào)用。在此表中定義了12個字段來進(jìn)行信息存儲,以外鍵題目分類來進(jìn)行聯(lián)結(jié)表與表之間的關(guān)系,實(shí)現(xiàn)問卷分類與問卷一對多的關(guān)系。見表3-8。標(biāo)識符數(shù)據(jù)類型長度非空描述主鍵外鍵說明pk_topic_optionChar20Y主鍵Ypk_topicChar20N所屬題目Yoption_descVarchar500N選項(xiàng)描述edit_flagChar1N是否編輯scoredecimal(124)12N分值sort_orderIntN序號font_sizeIntN字體大小font_familyVarchar500N字體font_styleIntN字體樣式font_colorIntN字體顏色表3—83.3.9問卷(hrqs_form)該表的主要功能是記錄問卷概覽的相關(guān)信息,用于公司的私有調(diào)用以及問卷維護(hù)使用。在此表中定義了10個字段來進(jìn)行信息存儲,實(shí)現(xiàn)問卷調(diào)用的數(shù)據(jù)存儲表。標(biāo)識符數(shù)據(jù)類型長度非空描述主鍵外鍵說明pk_formChar20Y主鍵Yform_typeChar20N問卷分類pk_corpChar4N所屬公司form_codeVarchar40N問卷編碼form_nameVarchar80N問卷名稱page_sizeSmallintN每頁題目數(shù)量issue_flagChar1N是否發(fā)布memoVarchar1000N備注page_headerVarchar4000N頁眉page_footerVarchar4000N頁腳form_classSmallintN類型表3—93.3.10問卷題目分類(hrqs_topic_type)該表的主要功能是記錄問卷分類概覽的相關(guān)信息,用于公司的私有調(diào)用以及問卷分類維護(hù)使用。在此表中定義了8個字段來進(jìn)行信息存儲。以外鍵題目分類來進(jìn)行聯(lián)結(jié)表與表之間的關(guān)系,實(shí)現(xiàn)問卷分類與問卷一對多的關(guān)系。標(biāo)識符數(shù)據(jù)類型長度非空描述主鍵外鍵說明pk_topic_typeChar20Y主鍵pk_formChar20N所屬問卷Ysort_orderIntN序號type_nameVarchar80N分類名稱type_descVarchar500N分類描述font_familyVarchar500N字體font_sizeIntN字體大小font_styleIntN字體樣式font_colorIntN字體顏色表3—103.3.11問卷自定義檔案列表(hrqs_doclist)該表為基礎(chǔ)數(shù)據(jù)附加表,基于標(biāo)準(zhǔn)版本V57系列擴(kuò)充表,該表主要對問卷序號問卷頭信息關(guān)聯(lián)進(jìn)行維護(hù),實(shí)現(xiàn)表中頭信息與表的存儲。調(diào)用時采用繼承基類方式進(jìn)行調(diào)用。標(biāo)識符數(shù)據(jù)類型長度非空描述主鍵外鍵說明pk_doclistChar20Y主鍵關(guān)聯(lián)自定義檔案中創(chuàng)立該表(基礎(chǔ)表)pk_defdoclistChar20N所屬問卷Ysystem_flagInt1N序號表3—11
技術(shù)介紹4.1JAVA開發(fā)語言的選擇現(xiàn)在,市場上的應(yīng)用開發(fā)產(chǎn)品很多,流行的也有數(shù)十種。目前在我國市場上最為流行,使用最多,最為先進(jìn)的可用作企業(yè)級開發(fā)語言的產(chǎn)品有:SUN公司的JavaMicrosoft公司的VisualBasicMicrosoft公司的VisualCBorland公司的DelphiPowersoft公司的PowerBulider在目前市場上這些眾多的程序開發(fā)工具中,有些強(qiáng)調(diào)語言的彈性與執(zhí)行效率;有些偏重于可視化程序開發(fā)工具所帶來的便利性與效率的提高,各有各的優(yōu)點(diǎn)和特色,也滿足了不同用戶的不同需求。我的網(wǎng)站選擇Java語言開發(fā),其原因基于以下幾點(diǎn):Java是一種簡單的、面向?qū)ο蟮?、分布式的、健壯的、安全的、結(jié)構(gòu)中立的、可移植的、性能很優(yōu)異的、多線程的、動態(tài)的語言。簡單Java的風(fēng)格類似于C++,并且摒棄了C++中容易引發(fā)程序錯誤的地方,如指針和內(nèi)存管理。此外Java提供了豐富的類庫。面向?qū)ο竺嫦驅(qū)ο罂梢哉f是Java最重要的特性。Java語言的設(shè)計(jì)完全是面向?qū)ο蟮?。Java支持靜態(tài)和動態(tài)風(fēng)格的代碼繼承及重用。分布式Java包括一個支持HTTP和FTP等基于TCP/IP協(xié)議的子庫。因此,Java應(yīng)用程序可憑借URL打開并訪問網(wǎng)絡(luò)上的對象,其訪問方式與訪問本地文件系統(tǒng)幾乎完全相同。健壯Java致力于檢查程序在編譯和運(yùn)行時的錯誤。Java自己操縱內(nèi)存減少了內(nèi)存出錯的可能性。Java提供Null指針檢測數(shù)組邊界、檢測異常出口、字節(jié)代碼校驗(yàn)。安全Java的安全性可從兩個方面得到保證。一方面,在Java語言里,像指針和釋放內(nèi)存等C++功能被刪除,避免了非法內(nèi)存操作。另一方面,當(dāng)Java用來創(chuàng)建瀏覽器時,語言功能和瀏覽器本身提供的功能結(jié)合起來,使它更安全。結(jié)構(gòu)中立為了建立Java作為網(wǎng)絡(luò)的一個整體,Java將它的程序編譯成一種結(jié)構(gòu)中立的中間文件格式。只要有Java運(yùn)行系統(tǒng)的機(jī)器都能執(zhí)行這種中間代碼。Java源程序被編譯成一種高層次的與機(jī)器無關(guān)的byte-code格式語言,這種語言被設(shè)計(jì)在虛擬機(jī)上運(yùn)行,由機(jī)器相關(guān)的運(yùn)行調(diào)試器實(shí)現(xiàn)執(zhí)行。可移植的Java的可移植性一直是Java程序設(shè)計(jì)師們的精神指標(biāo),也是Java之所以能夠受到程序設(shè)計(jì)師們喜愛的原因之一,最大的功臣就是JVM的技術(shù)。JAVA編譯器產(chǎn)生的目標(biāo)代碼(J-Code)是針對一種并不存在的CPU--JAVA虛擬機(jī)(JAVAVirtualMachine),而不是某一實(shí)際的CPU。JAVA虛擬機(jī)能掩蓋不同CPU之間的差別,使J-Code能運(yùn)行于任何具有JAVA虛擬機(jī)的機(jī)器上。高性能Java可以在運(yùn)行時直接將目標(biāo)代碼翻譯成機(jī)器指令。Sun用直接解釋器一秒鐘內(nèi)可調(diào)用300,000個過程。翻譯目標(biāo)代碼的速度與C/C++的性能沒什么區(qū)別。多線程Java支持多線程,多線程功能使得在一個程序里可同時執(zhí)行多個小任務(wù)。線程,有時也稱小進(jìn)程,是一個大進(jìn)程里分出來的小的獨(dú)立的進(jìn)程。動態(tài)Java的動態(tài)特性是其面向?qū)ο笤O(shè)計(jì)方法的發(fā)展。它允許程序動態(tài)地裝入運(yùn)行過程中所需要的類,這是C++語言進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)所無法實(shí)現(xiàn)的。Java編譯器不是將對實(shí)例變量和成員函數(shù)的引用編譯為數(shù)值引用,而是將符號引用信息在字節(jié)碼中保存下傳遞給解釋器,再由解釋器在完成動態(tài)連接類后,將符號引用信息轉(zhuǎn)換為數(shù)值偏移量。4.2MVC設(shè)計(jì)模式MVC是Model-View-Controller的簡稱,它是一種設(shè)計(jì)模式,它把應(yīng)用程序分成三個核心模塊:模型、視圖、控制器,它們各自處理自己的任務(wù)。視圖是用戶看到并與之交互的界面,作用包括向用戶顯示相關(guān)的數(shù)據(jù)、接受用戶的輸入、向模型查詢業(yè)務(wù)狀態(tài)、接受模型發(fā)出的數(shù)據(jù)更新事件,從而對用戶界面進(jìn)行同步更新。模型表示業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯,是應(yīng)用程序的主體部分。一個模型能為多個視圖提供數(shù)據(jù),因此提高了代碼的可重用性。控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。當(dāng)Web用戶單擊Web頁面中的遞交按鈕來發(fā)送HTML表單時,控制器本身不輸出任何東西和做任何處理。控制器接收請求并決定調(diào)用哪個模型組件去處理請求,然后決定調(diào)用哪個視圖來顯示模型處理返回的數(shù)據(jù)。MVC的優(yōu)點(diǎn)表現(xiàn)在如下幾個方面:首先,最重要的一點(diǎn)是多個視圖能共享一個模型。同一個模型可以被不同的視圖重用,大大提高了代碼的可重用性。由于MVC的三個模塊相互獨(dú)立,改變其中一個不會影響其他兩個,所以依據(jù)這種設(shè)計(jì)思想能構(gòu)造良好的松偶合的構(gòu)件。此外,控制器提高了應(yīng)用程序的靈活性和可配置性??刂破骺梢杂脕砺?lián)接不同的模型和視圖去完成用戶的需求,這樣控制器可以為構(gòu)造應(yīng)用程序提供強(qiáng)有力的手段。MVC處理過程的結(jié)構(gòu)圖,見圖4-1。圖4—14.3Struts,Hibernate,Spring技術(shù)4.3.1StrutsStruts是目前Java
Web
MVC框架中不爭的王者。Struts由一組相互協(xié)作的類(組件)、Serlvet以及jsp
tag
lib組成。由于Struts實(shí)質(zhì)上就是在JSPModel2的基礎(chǔ)上實(shí)現(xiàn)的一個MVC框架,所以基于struts構(gòu)架的web應(yīng)用程序基本上符合JSP
Model2即MVC的設(shè)計(jì)標(biāo)準(zhǔn)。其中的模型是JavaBean,控制器是ActionServlet、Action,視圖是JSP、Struts客戶化標(biāo)簽。Struts控制器組件主要包括:充當(dāng)Struts框架的中央控制器的ActionServlet組件、充當(dāng)每個子應(yīng)用模塊的請求處理器的RequestProcessor組件、負(fù)責(zé)處理一項(xiàng)具體的業(yè)務(wù)的Action組件。其工作流程如圖4-2。圖4—2Struts
的另一特點(diǎn)是使用ActionFormBean,ActionFormBean也是一種JavaBean,除了具有一些JavaBean的常規(guī)方法,還包含一些特殊的方法,用于驗(yàn)證HTML表單數(shù)據(jù)以及將其屬性重新設(shè)置為默認(rèn)值。Struts框架利用ActionFormBean來進(jìn)行View組件和Controller組件之間表單數(shù)據(jù)的傳遞。JSP文件使用Struts標(biāo)簽讀取修改后的ActionFormBean的信息,重新設(shè)置HTML表單。4.3.2HibernateHibernate是連接Java應(yīng)用程序和關(guān)系數(shù)據(jù)庫的中間件,它封裝了JDBC,實(shí)現(xiàn)了Java對象的持久化;封裝了所有數(shù)據(jù)訪問細(xì)節(jié),使業(yè)務(wù)邏輯層專注于業(yè)務(wù)邏輯。并且通過對象關(guān)系映射(ObjectRelationalMapping,簡稱ORM)解決了面向?qū)ο笈c關(guān)系數(shù)據(jù)庫之間存在的互不匹配的現(xiàn)象。如圖4-3所示。4.3.3SpringSpring是為了降低企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring只使用基本的JavaBeans就能完成以前必須通過EJB來完成的事情,而與EJB是相比,Spring的核心是個輕量級的容器,它是實(shí)現(xiàn)IoC(InversionofControl-控制反轉(zhuǎn))容器,是非侵入性的框架,并提供AOP(Aspect-orientedprogramming-面向方面編程)概念的實(shí)現(xiàn)方式,提供對持久層和事務(wù)的支持,提供MVCWeb框架的實(shí)現(xiàn),并對一些常用的企業(yè)服務(wù)API提供一致的模型封裝,是一個全方位的應(yīng)用程序框架。圖4—34.4SQL語言SQL(StructureQueryLanguage結(jié)構(gòu)化查詢語言)自1974年被提出,至今已經(jīng)是世界上最流行的關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。SQL語言的分類一、DDL(DataDefinitionLanguage)數(shù)據(jù)定義語言,其作用包括創(chuàng)建數(shù)據(jù)庫對象、刪除數(shù)據(jù)庫對象、修改數(shù)據(jù)庫對象(create、drop、alter)。二、DML(DataManipulationLanguage)數(shù)據(jù)操縱語言,其作用包括查找數(shù)據(jù)信息、插入數(shù)據(jù)信息、刪除數(shù)據(jù)信息、更改數(shù)據(jù)信息(select、insert、delete、update)。三、DCL(DataControlLanguage)數(shù)據(jù)控制語言,作用主要對是授權(quán)數(shù)據(jù)庫對象(grant,revoke)。4.5開發(fā)環(huán)境操作系統(tǒng):WINDOWSXP;運(yùn)行工具:IE7.0開發(fā)工具:MyEclipse5.1.0(附加組件MVC)數(shù)據(jù)庫管理軟件:AquaDataStudio數(shù)據(jù)庫:ORACLE9.0、SQL2008、DB2服務(wù)器:Tomcat6.0輔助工具:DJJavaDecompilerver.1,DoradoV1.0.8
系統(tǒng)實(shí)現(xiàn)5.1總體架構(gòu)及實(shí)現(xiàn)5.1.1系統(tǒng)總體結(jié)構(gòu)圖圖5—15.1.2用戶首頁界面風(fēng)格圖5—2問卷調(diào)查使用的調(diào)查界面為企業(yè)的系統(tǒng)界面,根據(jù)權(quán)限進(jìn)行分類,企業(yè)的系統(tǒng)業(yè)務(wù)管理的管理員進(jìn)入界面后可查看到相關(guān)問卷活動信息,以及問卷與員工相同,可以接受到調(diào)查信息。如圖5-2。使用用戶登陸自助系統(tǒng)可以接受到來自系統(tǒng)管理員發(fā)來的相關(guān)問卷調(diào)查信息。如圖5-3。圖5—35.2查看問卷信息5.2.1功能描述問卷管理人員在登錄之后可根據(jù)當(dāng)前的權(quán)限進(jìn)行問卷查詢,在此對查看問卷信息作出的查詢條件是僅能查詢當(dāng)前公司下的問卷。數(shù)據(jù)庫的查詢方式按照PK_CORP(公司pk)來進(jìn)行查詢。如圖5-4。5.2.2模塊流程圖圖5—45.2.3界面風(fēng)格圖5—55.2.4實(shí)現(xiàn)算法publicvoidexecute()throwsException{ FormVOform=(FormVO)getSelection(getMainPanel()).getParentVO(); form=(FormVO)PubDelegator.getIPersistenceRetrieve().retrieveByPk(null,FormVO.class,form.getPk_form()); if(form==null){ thrownewBusinessException("問卷不存在,請查詢后重試!"); } StringbaseUrl=RuntimeEnv.getInstance().getProperty("SERVICEDISPATCH_URL"); URLurl=newURL(baseUrl.substring(0,baseUrl.indexOf("/",10)) +"/hrss/qs/Form.jsp?pk_form="+form.getPk_form()+"&preview=Y"); ClientAssistant.showDocument(url,"_blank");}5.3發(fā)送通知5.3.1功能描述問卷調(diào)查活動中實(shí)現(xiàn)了問卷調(diào)查活動制作,問卷調(diào)查活動開啟。但是如果調(diào)查信息不能告知被調(diào)查的員工,則問卷調(diào)查活動意義則不能體現(xiàn)。所以問卷調(diào)查活動節(jié)點(diǎn)中添加了發(fā)送通知功能,具體實(shí)現(xiàn)的界面如圖5-7。5.3.2模塊流程圖圖5—65.3.3界面風(fēng)格圖5—75.3.4實(shí)現(xiàn)算法發(fā)送通知校驗(yàn)publicvoidexecute()throwsException{ HRAggVOvo=getSelection(getMainPanel()); InvActiveVOinv=(InvActiveVO)vo.getParentVO(); if(newUFDate().after(inv.getEnd_date())&& MessageDialog.showYesNoDlg(getFrameUI(),null,"該活動已經(jīng)超出調(diào)查日期之內(nèi),您確定要發(fā)送通知么?")!=UIDialog.ID_YES){ return; } Listlist=null; if("1".equals(inv.getObject_type())){ //按部門范圍 list=HRQSDelegator.getIInvActive().getDeptScopeEmail( Global.getCorpPK(),inv.getPk_inv(),Global.getUserID(), inv.getAnonymous().booleanValue()); }else{ //按人員范圍 list=HRQSDelegator.getIInvActive().getPsnScopeEmail(inv.getPk_inv()); }5.4問卷導(dǎo)入導(dǎo)出功能5.4.1描述如圖5-9所示,問卷制作之后為了方便問卷保存以及問卷電子檔案遷移,必要的需要實(shí)現(xiàn)問卷資料的導(dǎo)入導(dǎo)出以便實(shí)現(xiàn)數(shù)據(jù)遷移,本系統(tǒng)中為了實(shí)現(xiàn)此方法實(shí)現(xiàn)的功能為EXCEL方式數(shù)據(jù)導(dǎo)出、導(dǎo)入。當(dāng)問卷設(shè)計(jì)結(jié)束之后可通過導(dǎo)入、導(dǎo)出向?qū)ζ鋯柧淼碾娮訑?shù)據(jù)進(jìn)行導(dǎo)入導(dǎo)出。實(shí)現(xiàn)的導(dǎo)出數(shù)據(jù)可以保證問卷設(shè)計(jì)的完整導(dǎo)出。同樣為了保證問卷在公司與公司間共享,問卷導(dǎo)入系統(tǒng)支持修改問卷編碼,問卷名稱等問卷相關(guān)信息。5.4.2模塊流程圖圖5—85.4.3界面風(fēng)格見圖5-9,5-10。5.4.4實(shí)現(xiàn)算法導(dǎo)入框架方法publicFormDataImportAction(FrameUIframeUI1){super(frameUI1);//按公司com對象在求職表查詢向他投簡歷的求職者導(dǎo)出重寫內(nèi)容publicList<WizardStep>getSteps(){ List<WizardStep>steps=newArrayList<WizardStep>(); //第一步 WizardStepstepone=newDataIOWizardFirstStep(getWizardModel()); //第二步 WizardStepsteptwo=newDataIOWizardSecondStep(getWizardModel()); //對第二步的表格進(jìn)行特殊處理 SelectableBillScrollPanestep2Table=(SelectableBillScrollPane)steptwo.getComp(); step2Table.hideTableCol("excel_field_name"); step2Table.hideTableCol("default_value"); //第三步 WizardStepstepthree=newDataIOWizardThirdStep(getWizardModel()); //放到List中 steps=Arrays.asList(newWizardStep[]{stepone,steptwo,stepthree}); returnsteps; }圖5—9圖5—105.5問卷查看5.5.1描述為了實(shí)現(xiàn)統(tǒng)計(jì)人員以及管理員對問卷調(diào)查結(jié)果的查看或者進(jìn)行數(shù)據(jù)抽查,問卷查看節(jié)點(diǎn)可針對員工填寫的問卷進(jìn)行問卷查看,以及實(shí)際文字信息填寫內(nèi)容進(jìn)行查看。并且可根據(jù)問卷調(diào)查狀態(tài)對問卷調(diào)查活動進(jìn)行過濾查看。5.5.2模塊流程圖圖5—105.5.3界面風(fēng)格圖5—115.5.4實(shí)現(xiàn)算法調(diào)用方法,根據(jù)字符串中封裝的vo數(shù)據(jù)進(jìn)行數(shù)據(jù)調(diào)用,簡單的循環(huán)算法的出數(shù)據(jù)中datas的值的長度,并賦值給maxValue,取得數(shù)據(jù)時候由于平臺采用數(shù)據(jù)分割,為了實(shí)現(xiàn)數(shù)據(jù)與分隔符脫離,使用strLable.replaceAll("\\$","#####&&&&&&&&&####");使數(shù)據(jù)實(shí)體分離 publicHrQueryDialoggetQueryDialog(){ StringpkInv=((ResultViewTopPanel)getTopPanel()).getPkInv(); if(queryDlgHash.get(pkInv)!=null){ returnqueryDlgHash.get(pkInv); } HrQueryDialogqueryDialog=newHrQueryDialog(this,getNormalPanel(pkInv),getTemplateInfo()){ publicStringgetWhereSQL(){ QueryTreetree=(QueryTree)getQryCondEditor().getCurrentCriteriaEditor().getCriteria().getCriteriaObject(); QueryTreeNoderoot=(QueryTreeNode)tree.getRoot(); Enumerationenu=root.preorderEnumeration(); //排除根節(jié)點(diǎn) enu.nextElement(); while(enu.hasMoreElements()){ QueryTreeNodenode=(QueryTreeNode)enu.nextElement(); if(!node.isLeaf()){ continue; } if(!(node.getUserObject()instanceofDefaultFilter) ||!((DefaultFilter)node.getUserObject()).getFilterMeta().getFieldCode().equals("hrqs_result.submit_date")){ continue; } DefaultFilterfilter=(DefaultFilter)node.getUserObject(); if(filter.getOperator()instanceofEqOperator){ //等于 filter.setOperator(newEqOperator(){ publicStringgetSQLString(FilterMetameta,IFieldValuevalue){ if(value==null||value.getFieldValues()==null||value.getFieldValues().size()<1 ||value.getFieldValues().get(0)==null){ returnnull; } StringvalueString=value.getFieldValues().get(0).getSqlString(); returnmeta.getSQLFieldCode()+">='"+valueString+"00:00:00'and"+meta.getSQLFieldCode()+"<='" +valueString+"23:59:59'"; } }); }elseif(filter.getOperator()instanceofBetweenOperator){ //介于 filter.setOperator(newBetweenOperator(){ publicStringgetSQLString(FilterMetameta,IFieldValuevalue){ if(value==null||value.getFieldValues()==null||value.getFieldValues().size()<1){ returnnull; } Stringresult=null; if(value.getFieldValues().size()==1&&value.getFieldValues().get(0)!=null){ result=meta.getFieldCode()+">='"+value.getFieldValues().get(0).getSqlString()+"00:00:00'"; }elseif(value.getFieldValues().size()>1&&value.getFieldValues().get(0)!=null &&value.getFieldValues().get(1)==null){ result=meta.getFieldCode()+">='"+value.getFieldValues().get(0).getSqlString()+"00:00:00'"; }elseif(value.getFieldValues().size()>1&&value.getFieldValues().get(0)==null &&value.getFieldValues().get(1)!=null){ result=meta.getFieldCode()+"<='"+value.getFieldValues().get(1).getSqlString()+"23:59:59'"; }elseif(value.getFieldValues().size()>1&&value.getFieldValues().get(0)!=null &&value.getFieldValues().get(1)!=null){ result="("+meta.getFieldCode()+">='"+value.getFieldValues().get(0).getSqlString()+"00:00:00'" +"and"+meta.getFieldCode()+"<='"+value.getFieldValues().get(1).getSqlString()+"23:59:59'" +")"; } returnresult; } }); }elseif(filter.getOperator()instanceofGtOperator){ //大于 filter.setOperator(newGtOperator(){ publicStringgetSQLString(FilterMetameta,IFieldValuevalue){ if(value==null||value.getFieldValues()==null||value.getFieldValues().size()<1 ||value.getFieldValues().get(0)==null){ returnnull; } StringvalueString=value.getFieldValues().get(0).getSqlString(); returnmeta.getFieldCode()+""+getOperatorCode()+"'"+valueString+"00:00:00'"; } }); }elseif(filter.getOperator()instanceofGetOperator){ //大于等于 filter.setOperator(newGetOperator(){ publicStringgetSQLString(FilterMetameta,IFieldValuevalue){ if(value==null||value.getFieldValues()==null||value.getFieldValues().size()<1 ||value.getFieldValues().get(0)==null){ returnnull; } StringvalueString=value.getFieldValues().get(0).getSqlString(); returnmeta.getFieldCode()+""+getOperatorCode()+"'"+valueString+"00:00:00'"; } }); }elseif(filter.getOperator()instanceofLtOperator){ //小于 filter.setOperator(newLtOperator(){ publicStringgetSQLString(FilterMetameta,IFieldValuevalue){ if(value==null||value.getFieldValues()==null||value.getFieldValues().size()<1 ||value.getFieldValues().get(0)==null){ returnnull; } StringvalueString=value.getFieldValues().get(0).getSqlString(); returnmeta.getFieldCode()+""+getOperatorCode()+"'"+valueString+"23:59:59'"; } }); }elseif(filter.getOperator()instanceofLetOperator){ //小于等于 filter.setOperator(newLetOperator(){ publicStringgetSQLString(FilterMetameta,IFieldValuevalue){ if(value==null||value.getFieldValues()==null||value.getFieldValues().size()<1 ||value.getFieldValues().get(0)==null){ returnnull; } StringvalueString=value.getFieldValues().get(0).getSqlString(); returnmeta.getFieldCode()+""+getOperatorCode()+"'"+valueString+"23:59:59'"; } }); } } returnsuper.getWhereSQL(); } };5.6問卷分析代碼實(shí)現(xiàn)publicabstractChartViewercreateChartViewer(GeneralVO[]generalvos); /** *得到最大值 *@paramdatas *@returndouble */ protecteddoublegetMaxValue(double[]datas){ doublemaxValue=0; for(inti=0;datas!=null&&i<datas.length;i++){ if(datas[i]>maxValue){ maxValue=datas[i]; } } returnMath.ceil(maxValue); } /** *取得圖形展示數(shù)據(jù) *@paramgeneralvos *@return */ protecteddouble[]getdatas(GeneralVO[]generalvos){ double[]dbldatas=newdouble[generalvos.length]; intintCnt=0; for(GeneralVOdatainfo:generalvos){ if(datainfo.getAttributeValue(getStrDateKey())==null){ dbldatas[intCnt]=0; }else{ Strings=datainfo.getAttributeValue(getStrDateKey()).toString(); dbldatas[intCnt]=newUFDouble(s).setScale(2,UFDouble.ROUND_HALF_UP).doubleValue(); } intCnt++; } returndbldatas; } /** *取得圖形展示項(xiàng)目 *@paramgeneralvos *@return */ protectedString[]getLabels(GeneralVO[]generalvos){ String[]strlabels=newString[generalvos.length]; intintCnt=0; for(GeneralVOdatainfo:generalvos){ StringstrLable=datainfo.getAttributeValue(getStrItemKey()).toString(); if(strLable.length()>8){ strLable=strLable.substring(0,8)+".."; } strlabels[intCnt]=strLable; intCnt++; } returnstrlabels; } /** *取得圖形展示項(xiàng)目 *@paramgeneralvos *@return *//**getAllNameLabels(GeneralVO[]String)得到姓名列表*/ protectedString[]getAllNameLabels(GeneralVO[]generalvos){ String[]strlabels=newString[generalvos.length]; intintCnt=0; for(GeneralVOdatainfo:generalvos){ StringstrLable=datainfo.getAttributeValue(getStrItemKey()).toString(); if(!StringUtils.isEmpty(strLable)&&strLable.indexOf("$")!=-1) { strLable=strLable.replaceAll("\\$","#####&&&&&&&&&####"); } strlabels[intCnt]=strLable; intCnt++; } returnstrlabels; } 5.6.1顯示控件控件分四種,其中餅狀圖,柱狀圖,塔狀圖為swing控件繼承修改。如圖5-12,如圖5-13,如圖5-14所示:圖5—12圖5—13圖5—14
結(jié)論在前面幾章中,我對問卷調(diào)查的制作過程從需求分析、設(shè)計(jì)、實(shí)現(xiàn)等階段分別做了介紹。本軟件的問卷調(diào)查模塊實(shí)現(xiàn)了從企業(yè)管理者的問卷設(shè)計(jì),設(shè)定調(diào)查范圍,問卷活動發(fā)布,至下屬員工通過ERP自助系統(tǒng)進(jìn)行電子問卷填寫,至用戶管理者、企業(yè)相關(guān)信息統(tǒng)計(jì)人員對用戶回饋問卷的分析等一些流流程的實(shí)現(xiàn)。而本文對所選擇的開發(fā)語言做了介紹,本網(wǎng)站在開發(fā)過程中采用Struts、Hibernate、Spring三大框架相結(jié)合,利用Spring的聲明式事務(wù)管理,不同于以往開發(fā)過程中所使用的編程式事務(wù)管理,在這一點(diǎn)上,本文也做了詳細(xì)的介紹。此外,在項(xiàng)目的開發(fā)過程中采用規(guī)范的軟件工程的開發(fā)流程,因此在需求分析及數(shù)據(jù)庫設(shè)計(jì)部分做了大量的工作,這些對本模塊后期的編碼過程起到了指導(dǎo)作用,在本文中也有所體現(xiàn)。本軟件對應(yīng)此功能現(xiàn)已于年初發(fā)行,正在各個合作公司中實(shí)施使用中。
致謝
參考文獻(xiàn)[1](美)MartyHall,LarryBrown.Servlet與JSP核心編程.第二版.趙學(xué)良譯.北京:清華大學(xué)出版社,2004.06[2]林上杰,林康司.JSP2.0技術(shù)手冊.北京:電子工業(yè)出版社,2005.04[3]孫衛(wèi)琴.精通Struts:基于MVC的JavaWeb設(shè)計(jì)與開發(fā).北京:電子工業(yè)出版社,2004.08[4]孫衛(wèi)琴.精通Hibernate.北京:電子工業(yè)出版社,2006.09[5]林信良.Spring技術(shù)手冊.北京:電子工業(yè)出版社,2006.06[6]張孝祥.Java就業(yè)培訓(xùn)教程.北京:清華大學(xué)出版社,2003.09[7]林信良.JavaJDK6學(xué)習(xí)筆記.北京:清華大學(xué)出版社,2007.04:P2-9[8]BruceEckel.ThinkinginJava.ThirdEdition.January,2004[9]薩師煊,王珊.數(shù)據(jù)庫系統(tǒng)概論.第三版.北京:高等教育出版社,2000.02[10]劉佳音.我國人力資源信息網(wǎng)站的現(xiàn)狀與發(fā)展——基于人才招聘網(wǎng)站的調(diào)查分析.情報科學(xué).2004(6):24-25[11]方小明.基于Struts的JavaWeb應(yīng)用開發(fā)(一).軟件報,2006.04.10[12]史濟(jì)民,顧春華,李昌武等.軟件工程——原理、方法與應(yīng)用.第二版.北京:高等教育出版社,2002.12基于C8051F單片機(jī)直流電動機(jī)反饋控制系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測試儀的研制基于單片機(jī)的自動找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗(yàn)臺控制器的研制基于單片機(jī)的軟起動器的研究和設(shè)計(jì)基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實(shí)時內(nèi)核設(shè)計(jì)及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機(jī)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)場轉(zhuǎn)讓合同協(xié)議書模板
- 校園數(shù)字文化塑造實(shí)施路徑及策略
- 養(yǎng)老護(hù)理培訓(xùn)公司創(chuàng)業(yè)計(jì)劃書
- 2025年天然植物纖維及人造纖維編織工藝品項(xiàng)目可行性研究報告
- 費(fèi)用補(bǔ)償合同協(xié)議書模板
- 委托他人采購合同協(xié)議書
- 辦卡合同協(xié)議書怎么寫
- 承包分揀合同協(xié)議書模板
- 工作勞務(wù)合同協(xié)議書模板
- 培訓(xùn)行業(yè)創(chuàng)辦一家職業(yè)技能培訓(xùn)學(xué)校的商業(yè)計(jì)劃書
- 煙臺汽車工程職業(yè)學(xué)院《藥理學(xué)實(shí)驗(yàn)方法學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年上海市安全員-B證(項(xiàng)目負(fù)責(zé)人)考試題及答案
- 2025-2030瀝青市場投資前景分析及供需格局研究研究報告
- 智能財(cái)務(wù)導(dǎo)論 課件全套 陳俊 第1-12章 智能財(cái)務(wù)的發(fā)展 -數(shù)智時代的會計(jì)倫理
- 招聘輔導(dǎo)員能力測評題目試題及答案
- 2025年中國閃光燈泡市場調(diào)查研究報告
- 以愛為筆書寫班級管理篇章 課件-2024-2025學(xué)年下學(xué)期班主任工作經(jīng)驗(yàn)分享
- DB44-T 2607.4-2025 濱海藍(lán)碳碳匯能力調(diào)查與核算技術(shù)指南 第4部分:鹽沼
- 關(guān)于健康管理師
- PCBA生產(chǎn)與質(zhì)量管理
- 超星爾雅學(xué)習(xí)通《美學(xué)原理(北京大學(xué))》2025章節(jié)測試附答案
評論
0/150
提交評論