大學(xué)畢業(yè)論文--產(chǎn)品手冊(cè)優(yōu)化平臺(tái)的設(shè)計(jì)說(shuō)明書(shū)_第1頁(yè)
大學(xué)畢業(yè)論文--產(chǎn)品手冊(cè)優(yōu)化平臺(tái)的設(shè)計(jì)說(shuō)明書(shū)_第2頁(yè)
大學(xué)畢業(yè)論文--產(chǎn)品手冊(cè)優(yōu)化平臺(tái)的設(shè)計(jì)說(shuō)明書(shū)_第3頁(yè)
大學(xué)畢業(yè)論文--產(chǎn)品手冊(cè)優(yōu)化平臺(tái)的設(shè)計(jì)說(shuō)明書(shū)_第4頁(yè)
大學(xué)畢業(yè)論文--產(chǎn)品手冊(cè)優(yōu)化平臺(tái)的設(shè)計(jì)說(shuō)明書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

設(shè)計(jì)題目:產(chǎn)品手冊(cè)優(yōu)化平臺(tái)的設(shè)計(jì)

ProductmanualoptimizationplatformCollege:ComputerandInformationScienceSpecialtyandGrade:SoftwareEngineering,2008Number:081181063Name:GuangFengLinAdvisor:ChangJiangChenSubmittedTime:May,2012福建農(nóng)林大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū)PAGEPAGEII畢業(yè)設(shè)計(jì)(論文)原創(chuàng)性聲明和使用授權(quán)說(shuō)明原創(chuàng)性聲明本人鄭重承諾:所呈交的畢業(yè)設(shè)計(jì)(論文),是我個(gè)人在指導(dǎo)教師的指導(dǎo)下進(jìn)行的研究工作及取得的成果。盡我所知,除文中特別加以標(biāo)注和致謝的地方外,不包含其他人或組織已經(jīng)發(fā)表或公布過(guò)的研究成果,也不包含我為獲得及其它教育機(jī)構(gòu)的學(xué)位或?qū)W歷而使用過(guò)的材料。對(duì)本研究提供過(guò)幫助和做出過(guò)貢獻(xiàn)的個(gè)人或集體,均已在文中作了明確的說(shuō)明并表示了謝意。作者簽名:日期:指導(dǎo)教師簽名:日期:使用授權(quán)說(shuō)明本人完全了解大學(xué)關(guān)于收集、保存、使用畢業(yè)設(shè)計(jì)(論文)的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版本;學(xué)校有權(quán)保存畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);學(xué)校可以采用影印、縮印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)??梢怨颊撐牡牟糠只蛉?jī)?nèi)容。作者簽名:日期:

目錄TOC\o"1-5"\h\z\u摘要 IAbstract II1 引言 11.1 目的和意義 11.2 主要設(shè)計(jì)內(nèi)容 11.3 預(yù)期設(shè)計(jì)結(jié)果 11.4 擬解決的關(guān)鍵問(wèn)題 21.5 使用術(shù)語(yǔ) 22 開(kāi)發(fā)環(huán)境 32.1 硬件環(huán)境 32.2 軟件環(huán)境 33 需求分析及系統(tǒng)設(shè)計(jì) 43.1 系統(tǒng)需求獲取及總體功能 43.2 各項(xiàng)功能分析 43.2.1 主頁(yè) 43.2.2 瀏覽 53.2.3 登入功能 53.2.4 提交問(wèn)題功能 63.2.5 文檔上傳功能 63.2.6 文檔管理功能 73.2.7 問(wèn)題導(dǎo)出功能 73.2.8 問(wèn)題管理功能 84.數(shù)據(jù)庫(kù)分析及設(shè)計(jì) 94.1 數(shù)據(jù)數(shù)需求分析 94.2 數(shù)據(jù)庫(kù)設(shè)計(jì) 95 技術(shù)要點(diǎn)與難點(diǎn) 115.1 設(shè)計(jì)思想及分層結(jié)構(gòu) 115.2 word轉(zhuǎn)換成html 125.3 抓取word的文檔結(jié)構(gòu) 135.4 數(shù)據(jù)庫(kù)動(dòng)態(tài)配置 136 編碼實(shí)現(xiàn) 186.1 主頁(yè)的實(shí)現(xiàn) 186.2 瀏覽功能的實(shí)現(xiàn) 246.3 登入功能的實(shí)現(xiàn) 276.4 提交問(wèn)題功能的實(shí)現(xiàn) 286.5 文檔上傳功能的實(shí)現(xiàn) 336.6 文檔管理功能的實(shí)現(xiàn) 40參考文獻(xiàn) 50致謝 51PAGEIPAGEII摘要文檔在工作中占有突出的地位,開(kāi)發(fā)和維護(hù)文檔有相當(dāng)?shù)拇蠊ぷ髁?。高效率地管理和維護(hù)文檔對(duì)于轉(zhuǎn)讓?zhuān)兏?,修正,擴(kuò)充和使用文檔,對(duì)于充分發(fā)揮產(chǎn)品的效益有著重要意義。本設(shè)計(jì)提提供對(duì)文檔的上傳,管理,在線(xiàn)瀏覽,找茬管理等功能。系統(tǒng)的功能為文檔手冊(cè)的管理和修正提供的便利。關(guān)鍵詞:文檔手冊(cè);在線(xiàn)瀏覽;文檔升級(jí);

AbstractDocumentworkhasaprominentpositionandquiteworkload.Highefficiency,highqualityproduction,distribution,managementandprotectdocumentfortransferdimension,change,fixed,expandedandusedocumentation,togivefullplaytothebenefitoftheproducthasimportantsignificance.Thedesignprovidesthedocumentputupload,management,theon-linebrowsing,findfaultmanagementetc.Function.Thefunctionofthesystemforthemanagementofthemanualandcorrectionofthedocumentprovidesconvenience.Keywords:Documentmanual;Theon-linebrowsing;Documentupgrade;福建農(nóng)林大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū)PAGE47引言目的和意義軟件文檔[1](document)也稱(chēng)文件,通常指的是一些記錄的數(shù)據(jù)和數(shù)據(jù)媒體,它具有固定不變的形式,可被人和計(jì)算機(jī)閱讀.它和計(jì)算機(jī)程序共同構(gòu)成了能完成特定功能的計(jì)算機(jī)軟件(有人把源程序也當(dāng)作文檔的一部分).我們知道,硬件產(chǎn)品和產(chǎn)品資料在整個(gè)生產(chǎn)過(guò)程中都是有形可見(jiàn)的,軟件生產(chǎn)則有很大不同,文檔本身就是軟件產(chǎn)品.沒(méi)有文檔的軟件,不成其為軟件,更談不到軟件產(chǎn)品.軟件文檔的編制(documentation)在軟件開(kāi)發(fā)工作中占有突出的地位和相當(dāng)?shù)墓ぷ髁?高效率,高質(zhì)量地開(kāi)發(fā),分發(fā),管理和維護(hù)文檔對(duì)于轉(zhuǎn)讓,變更,修正,擴(kuò)充和使用文檔,對(duì)于充分發(fā)揮軟件產(chǎn)品的效益有著重要意義.然而,在實(shí)際工作中,文檔在編制和使用中存在著許多問(wèn)題,有待于解決.軟件開(kāi)發(fā)人員中較普遍地存在著對(duì)編制文檔不感興趣的現(xiàn)象.從用戶(hù)方面看,他們又常常抱怨:文檔售價(jià)太高,文檔不夠完整,文檔編寫(xiě)得不好,文檔已經(jīng)陳舊或是文檔太多,難于使用。本系統(tǒng)主要用來(lái)提高文檔的質(zhì)量和加強(qiáng)文檔編寫(xiě)人員和使用人員的交流。方便文檔的優(yōu)化。本系統(tǒng)需求明確、清晰,在開(kāi)發(fā)方面將涉及UI設(shè)計(jì)、MySQL數(shù)據(jù)庫(kù)[2]、格式轉(zhuǎn)換、上傳[3]下載等,從需求及技術(shù)上,本設(shè)計(jì)課題的提出是有意義且可行的。主要設(shè)計(jì)內(nèi)容主頁(yè)模塊:頁(yè)面上展示所有管理員上傳的文檔,提供用戶(hù)進(jìn)行在線(xiàn)瀏覽和查找;瀏覽模塊:用戶(hù)指定查看謀篇文檔,并且支持定位和文檔結(jié)構(gòu)圖功能;登錄模塊:管理員登入模塊;找茬模塊:用戶(hù)通過(guò)該模塊可以提出對(duì)該篇文檔的建議和文檔錯(cuò)誤點(diǎn);文檔上傳模塊:管理員通過(guò)該模塊可以上傳文檔;文檔管理模塊:用管理員通過(guò)該模塊進(jìn)行文檔的管理;問(wèn)題導(dǎo)出模塊:管理員通過(guò)該模塊進(jìn)行文檔導(dǎo)出;問(wèn)題管理模塊:管理員通過(guò)該模塊管理用戶(hù)提出的意見(jiàn);預(yù)期設(shè)計(jì)結(jié)果通過(guò)MyEclipse開(kāi)發(fā)工具,使用Ext作為前臺(tái)的界面設(shè)計(jì)。采用自己封裝的MVC設(shè)計(jì)思想。實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的封裝。使用Ext3.2設(shè)計(jì)出簡(jiǎn)潔易用的界面。清晰明了的使用方法??梢宰層脩?hù)很容易就上手使用該系統(tǒng)。擬解決的關(guān)鍵問(wèn)題頁(yè)面兼容性[4]:瀏覽器兼容性問(wèn)題又被稱(chēng)為網(wǎng)頁(yè)兼容性或網(wǎng)站兼容性問(wèn)題,指網(wǎng)頁(yè)在各種瀏覽器上的顯示效果可能不一致而產(chǎn)生瀏覽器和網(wǎng)頁(yè)間的兼容問(wèn)題。在網(wǎng)站的設(shè)計(jì)和制作中,做好瀏覽器兼容,才能夠讓網(wǎng)站在不同的瀏覽器下都正常顯示。而對(duì)于瀏覽器軟件的開(kāi)發(fā)和設(shè)計(jì),瀏覽器對(duì)標(biāo)準(zhǔn)的更好兼容能夠給用戶(hù)更好的使用體驗(yàn)。文檔上傳問(wèn)題:查找合適的工具實(shí)現(xiàn)文檔的上傳;文檔轉(zhuǎn)換問(wèn)題:為了編寫(xiě)方便,文檔編寫(xiě)人員編寫(xiě)的文檔都是word和excel格式,但是用戶(hù)希望可以通過(guò)html的格式展示出來(lái)。抓取文檔結(jié)構(gòu)圖:為了更加方便的閱讀,word文檔中都有文檔結(jié)構(gòu)圖。同時(shí)頁(yè)面上也有一個(gè)文檔結(jié)構(gòu)圖,方便定位;程序穩(wěn)定性[5]:程序穩(wěn)定性是每個(gè)程序都需要考慮的問(wèn)題,不能因?yàn)槌绦蚰骋荒K出錯(cuò)而造成整個(gè)程序的崩潰,因此需對(duì)程序異常進(jìn)行捕獲處理。使用術(shù)語(yǔ)表1-1使用術(shù)語(yǔ)專(zhuān)業(yè)術(shù)語(yǔ)說(shuō)明jacob它允許在java中調(diào)用com接口自動(dòng)組件,實(shí)現(xiàn)文檔轉(zhuǎn)換SDK由該SDK開(kāi)發(fā)公司提供的已封裝好各項(xiàng)數(shù)據(jù)操作接口或方法的開(kāi)發(fā)包UI人機(jī)交互界面htmlparser超高速解析htmlhtml用于描述網(wǎng)頁(yè)文檔的一種標(biāo)記語(yǔ)言jspSmartUpload可免費(fèi)使用的全功能的文件上傳下載組件文檔軟件開(kāi)發(fā)使用和維護(hù)中的必備資料Poi對(duì)MicrosoftOffice格式檔案讀和寫(xiě)的功能

開(kāi)發(fā)環(huán)境硬件環(huán)境表2-1硬件環(huán)境硬件名稱(chēng)說(shuō)明ThinkpadT410iIntel(R)core(TM)2CPUT52001.6GHz3.0G內(nèi)存提供程序開(kāi)發(fā)的硬件支持軟件環(huán)境表2-2軟件環(huán)境軟件名稱(chēng)說(shuō)明MyEclipse6.5提供程序開(kāi)發(fā)的IDE環(huán)境MySQL數(shù)據(jù)庫(kù)NavicatforMySQLMySQL數(shù)據(jù)庫(kù)的圖形化管理工具IE,Firefox測(cè)試瀏覽器

需求分析及系統(tǒng)設(shè)計(jì)系統(tǒng)需求獲取及總體功能系統(tǒng)需求獲取可從以下幾個(gè)方面入手:1)用戶(hù)查看文檔;2)管理員上傳和管理文檔;3)用戶(hù)提出bug。圖3-1系統(tǒng)總體功能圖各項(xiàng)功能分析主頁(yè)圖3-2用戶(hù)瀏覽網(wǎng)頁(yè)表3-2用戶(hù)瀏覽網(wǎng)頁(yè)說(shuō)明模塊名稱(chēng)功能說(shuō)明主頁(yè)模塊[7]用戶(hù)訪(fǎng)問(wèn)網(wǎng)站后進(jìn)入網(wǎng)頁(yè)主界面。加載主頁(yè)面必要的信息。界面上分頁(yè)顯示可以瀏覽的文檔。瀏覽圖3-3用戶(hù)瀏覽表3-3用戶(hù)瀏覽功能說(shuō)明模塊名稱(chēng)功能說(shuō)明用戶(hù)瀏覽模塊用戶(hù)查找到要瀏覽的文檔后點(diǎn)擊跳轉(zhuǎn)到新的頁(yè)面單獨(dú)加載該文檔并且提供對(duì)該文檔的文檔結(jié)構(gòu)圖可以對(duì)該文檔提出問(wèn)題登入功能圖3-4登入功能示意圖表3-4登入功能說(shuō)明模塊名稱(chēng)功能說(shuō)明登入功能管理員登入,進(jìn)行文檔管理提交問(wèn)題功能圖3-5找茬功能示意圖表3-5找茬功能示說(shuō)明模塊名稱(chēng)功能說(shuō)明提交問(wèn)題功能用戶(hù)點(diǎn)擊找茬按鈕后跳出找茬框填寫(xiě)必要的找茬信息,后可以點(diǎn)擊提交保存提示保存成功還是失敗后太保存茬信息,相應(yīng)處理文檔上傳功能圖3-6文檔上傳功能示意圖表3-6文檔上傳功能說(shuō)明模塊名稱(chēng)功能說(shuō)明文檔上傳功能管理員選擇要上傳的文檔,并且選擇和填寫(xiě)必要的信息點(diǎn)擊上傳后天進(jìn)行進(jìn)行保存并解析前臺(tái)提示是否上傳成功文檔管理功能圖3-7問(wèn)題管理功能示意圖表3-7文檔管理功能說(shuō)明模塊名稱(chēng)功能說(shuō)明文檔管理功能點(diǎn)擊進(jìn)入文檔管理分頁(yè)顯示部分文檔管理員通過(guò)查詢(xún)找到文檔可以對(duì)文檔進(jìn)行更新,刪除等操作問(wèn)題導(dǎo)出功能圖3-8問(wèn)題導(dǎo)出功能示意圖表3-8問(wèn)題導(dǎo)出表功能說(shuō)明模塊名稱(chēng)功能說(shuō)明問(wèn)題導(dǎo)出管理員通過(guò)查詢(xún)條件,查找到想要到問(wèn)題點(diǎn)擊導(dǎo)出,可以導(dǎo)出問(wèn)題問(wèn)題管理功能圖3-9問(wèn)題管理功能示意圖表3-9問(wèn)題管理功能說(shuō)明模塊名稱(chēng)功能說(shuō)明問(wèn)題管理功能可以對(duì)問(wèn)題進(jìn)行管理對(duì)問(wèn)題進(jìn)行歸類(lèi)。問(wèn)題處理后可以對(duì)問(wèn)題進(jìn)行標(biāo)記,標(biāo)記為已處理等

4.數(shù)據(jù)庫(kù)分析及設(shè)計(jì)數(shù)據(jù)數(shù)需求分析文檔管理中需要保存的數(shù)據(jù)量并不大,要保存每次上傳的文檔信息,用戶(hù)信息,管理員信息,問(wèn)題信息,系統(tǒng)配置信息。數(shù)據(jù)庫(kù)設(shè)計(jì)該系統(tǒng)采用的是MySQl數(shù)據(jù)庫(kù)。MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi)。這樣就增加了速度并提高了靈活性。MySQL的SQL“結(jié)構(gòu)化查詢(xún)”。SQL是用于訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MySQL軟件采用了GPL。由于其體積小、速度快、總體擁有成本低。對(duì)數(shù)據(jù)庫(kù)的設(shè)計(jì)表結(jié)構(gòu)如下:表4-1admin管理員表字段名字段說(shuō)明類(lèi)型長(zhǎng)度是否可以為空ididlong18(主鍵)否name用戶(hù)名varchar36否password密碼varchar36否type管理員類(lèi)型varchar36否表4-2config_doc文檔信息字段名字段說(shuō)明類(lèi)型長(zhǎng)度是否可以為空idIdlong18(主鍵)否name用戶(hù)名varchar36否href顯示頁(yè)面varchar36否count點(diǎn)擊次數(shù)varchar36否rate找茬次數(shù)varchar36否Property文檔屬性varchart36否type文檔類(lèi)型varchart36否size文檔大小varchart36否down下載路徑varchart36否preview文檔簡(jiǎn)介varchart360否表4-3document文檔具體信息字段名字段說(shuō)明類(lèi)型長(zhǎng)度是否可以為空ididlong18(主鍵)否doc_id文檔目錄idvarchar10否text葉子文本varchar100否href錨機(jī)鏈接varchar100否isleaf是否是葉子varchart100否parent_id父親idvarchart10否表4-4user用戶(hù)信息字段名字段說(shuō)明類(lèi)型長(zhǎng)度是否可以為空ididlong18(主鍵)否name用戶(hù)名varchar30否email電子郵箱varchar100否time注冊(cè)時(shí)間time100否count找出的茬數(shù)int10否表4-5user用戶(hù)信息字段名字段說(shuō)明類(lèi)型長(zhǎng)度是否可以為空ididlong18(主鍵)否name用戶(hù)名varchar30否email電子郵箱varchar100否time注冊(cè)時(shí)間time100否count找出的茬數(shù)int10否表4-6systemdata系統(tǒng)信息字段名字段說(shuō)明類(lèi)型長(zhǎng)度是否可以為空ididlong18(主鍵)否name名稱(chēng)varchar30否value名稱(chēng)對(duì)應(yīng)值varchar100否type類(lèi)型time100否表4-7find_fault錯(cuò)誤表字段名字段說(shuō)明類(lèi)型長(zhǎng)度是否可以為空ididlong18(主鍵)否admin_id處理管理員idint10否user_id提出問(wèn)題用戶(hù)idint10否document_id文檔idint10否product_series產(chǎn)品類(lèi)型varchart100否error_type問(wèn)題類(lèi)型varchart100否status問(wèn)題狀態(tài)varchart100否time提出時(shí)間time30否accept是否接受varchart10否solve_time解決時(shí)間time10是remarks標(biāo)記varchart100是技術(shù)要點(diǎn)與難點(diǎn)設(shè)計(jì)思想及分層結(jié)構(gòu)本項(xiàng)目開(kāi)發(fā)采用的是MVC的分層結(jié)構(gòu)方法。MVC模式是一種復(fù)合設(shè)計(jì)模式,一種在特定場(chǎng)合用于解決某種實(shí)際問(wèn)題來(lái)得出的可以反復(fù)實(shí)踐的解決方案。巧合的是他也有三個(gè)事物組成,于是乎人們就有了一種想當(dāng)然的對(duì)應(yīng)關(guān)系:展示層-View;業(yè)務(wù)邏輯層-Control;持久層-Model。首先MVC中的三個(gè)事物之間并不存在明顯的層次結(jié)構(gòu),沒(méi)有明顯的向下依賴(lài)關(guān)系,相反的,View和Model往往是比較獨(dú)立的,而Control是連接兩者的橋梁,他們更像是橫向的切分。這樣一來(lái)就出現(xiàn)一個(gè)結(jié)果,MVC中每個(gè)塊都是可以獨(dú)立測(cè)試的,而三層結(jié)構(gòu)中,上層模塊的運(yùn)行測(cè)試勢(shì)必要提供下層代碼或者提供相同接口的樁。相對(duì)來(lái)說(shuō),MVC復(fù)雜得多,但是結(jié)構(gòu)更清晰,耦合性更低。。圖5-1代碼結(jié)構(gòu)分層主要分層的介紹:DB對(duì)鏈接數(shù)據(jù)庫(kù)的封裝,主要實(shí)現(xiàn)數(shù)據(jù)庫(kù)的鏈接和釋放。filter過(guò)濾器,主要進(jìn)行權(quán)限管理。json主要是進(jìn)行對(duì)象封裝成json或json轉(zhuǎn)換成對(duì)象pojo表對(duì)應(yīng)的對(duì)象,有助于封裝數(shù)據(jù)庫(kù)。SystemData系統(tǒng)初始化數(shù)據(jù)的獲取,封裝了界面上選項(xiàng)的動(dòng)態(tài)配置Tool工具層,提供各種工具類(lèi)??梢赃M(jìn)行快速開(kāi)發(fā),減少重復(fù)代碼。dao 對(duì)象數(shù)據(jù)操作層word轉(zhuǎn)換成html把word轉(zhuǎn)換成html,在轉(zhuǎn)換的過(guò)程中很容易造成格式發(fā)生變化的問(wèn)題。我們看到word會(huì)看到word另存為中有轉(zhuǎn)換成html的選項(xiàng)。因此最好是可以通過(guò)代碼調(diào)動(dòng)系統(tǒng)的word轉(zhuǎn)換html的實(shí)現(xiàn)的方法??梢员WC轉(zhuǎn)換的結(jié)果是簡(jiǎn)潔的,不會(huì)有格式上的問(wèn)題。上網(wǎng)查找,發(fā)現(xiàn)Jacob可能符合該要求。JACOBisaJAVA-COMBridge上面官網(wǎng)介紹可知,jacob調(diào)用的就是本地安裝的word,這樣就要求服務(wù)器也要安裝word,否則系統(tǒng)無(wú)法正常運(yùn)行。抓取word的文檔結(jié)構(gòu)在瀏覽的時(shí)候用戶(hù)肯定希望有文檔的結(jié)構(gòu)圖,可以方便定位??赡芟氲降姆桨妇蛢蓚€(gè):直接解析word,獲得文檔結(jié)構(gòu)圖。解析轉(zhuǎn)換成html后的文件,在獲得文檔結(jié)構(gòu)圖。在方案2中就需要對(duì)html進(jìn)行解析的工具,網(wǎng)上提供的開(kāi)源工具主要有一下幾個(gè),到時(shí)候可以根據(jù)需求進(jìn)行篩選:1.htmlparser:HTMLParserisaJavalibraryusedtoparseHTMLineitheralinearornestedfashion.Primarilyusedfortransformationorextraction,itfeaturesfilters,visitors,customtagsandeasytouseJavaBeans.Itisafast,robustandwelltestedpackage.2.html4j:

HTMLDoc

isanencapsulationofanHTMLdocument,withasimplepermissiveparserwhichcanhandleevenmostofthebad,non-compliantHTMLdocumentsoftherealworld.數(shù)據(jù)庫(kù)動(dòng)態(tài)配置為了方便對(duì)數(shù)據(jù)庫(kù)的管理,把鏈接數(shù)據(jù)庫(kù)的必要信息全部都寫(xiě)到配置文件中,后期對(duì)項(xiàng)目的發(fā)布有重大意義。可以方便管理員修改數(shù)據(jù)庫(kù)的密碼。packagecom.ruijie.DB;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.InputStream;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Properties;publicclassDBMessage{ privatestaticStringJDBC="com.mysql.jdbc.Driver"; privatestaticStringurl="jdbc:mysql://localhost:3306/documentoptimization"; privatestaticStringuser="root"; privatestaticStringpassword="root"; /** * privatestaticStringJDBC; privatestaticStringurl; privatestaticStringuser; privatestaticStringpassword; */ static{ System.out.println("類(lèi)初始化"); InputStreamin=DBMessage.class.getClassLoader().getResourceAsStream("perties"); Propertiespro=newProperties(); try{ pro.load(in); JDBC=pro.getProperty("JDBC"); url=pro.getProperty("url"); user=pro.getProperty("user"); password=pro.getProperty("password"); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } } publicstaticStringgetMessage(Stringkey){ System.out.println("key="+key); Stringvalue=null; InputStreamin=DBMessage.class.getClassLoader().getResourceAsStream("perties"); Propertiespro=newProperties(); try{ pro.load(in); value=pro.getProperty(key); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } returnvalue.trim(); } publicstaticStringgetUser() { if(DBMessage.user==null){ DBMessage.user=getMessage("user"); } returnDBMessage.user; } publicstaticStringgetPassword() { if(DBMessage.password==null){ DBMessage.password=getMessage("password"); } returnDBMessage.password; } publicstaticStringgetJDBC() { if(DBMessage.password==null){ DBMessage.JDBC=getMessage("JDBC"); } returnDBMessage.JDBC; } publicstaticStringgetUrl() { if(DBMessage.url==null){ DBMessage.url=getMessage("url"); } returnDBMessage.url; } publicstaticConnectiongetConnection() { Connectionconnection=null; try{ Class.forName(getJDBC()).newInstance(); connection=DriverManager.getConnection(getUrl(),getUser(),getPassword()); }catch(Exceptione){ connection=null; e.printStackTrace(); } returnconnection; } /** *關(guān)閉數(shù)據(jù)庫(kù) *@paramconnection *@paramrreparedStatement *@paramresultSet */ publicstaticvoidcloseAll(Connectionconnection,PreparedStatementrreparedStatement,ResultSetresultSet) { try { if(resultSet!=null) { resultSet.close(); resultSet=null; } if(rreparedStatement!=null) { rreparedStatement.close(); rreparedStatement=null; } if(connection!=null) { connection.close(); connection=null; } }catch(SQLExceptione) { e.printStackTrace(); } } /** *關(guān)閉數(shù)據(jù)庫(kù) *@paramconnection *@paramrreparedStatement *@paramresultSet */ publicstaticvoidcloseAll(Connectionconnection,Statementstatement,ResultSetresultSet) { try { if(resultSet!=null) { resultSet.close(); resultSet=null; } if(statement!=null) { statement.close(); statement=null; } if(connection!=null) { connection.close(); connection=null; } }catch(SQLExceptione) { e.printStackTrace(); } } publicstaticvoidmain(String[]args){ InputStreamin=DBMessage.class.getClassLoader().getResourceAsStream("perties"); }}每次修改數(shù)據(jù)庫(kù)的密碼,只要對(duì)應(yīng)修改配置文件perties就可以。而且對(duì)數(shù)據(jù)庫(kù)的鏈接和釋放都進(jìn)行了必要的封裝。編碼實(shí)現(xiàn)主頁(yè)的實(shí)現(xiàn)圖6-1主頁(yè)的實(shí)現(xiàn)效果圖主要源代碼:/*!*ExtJSLibrary3.2.1*定義主頁(yè)整體布局*/FeedViewer={};Ext.onReady(function(){Ext.QuickTips.init();//針對(duì)應(yīng)用程序配置默認(rèn)的stateproviderExt.state.Manager.setProvider(newExt.state.SessionProvider({state:Ext.appState})); //傳入一個(gè)元素的值的參數(shù),用于創(chuàng)建模板,( vartpl=Ext.Template.from('preview-tpl',{//預(yù)覽功能定義模板compiled:true,getBody:function(v,all){// 剝?nèi)ニ心_本()標(biāo)簽returnExt.util.Format.stripScripts(v||all.description);}});FeedViewer.getTemplate=function(){returntpl;} FeedViewer.LinkInterceptor={ render:function(p){ p.body.on({ 'mousedown':function(e,t){//trytointercepttheeasyway t.target='_blank'; }, 'click':function(e,t){//iftheytab+enteralink,needtodoitoldfashionedway if(String(t.target).toLowerCase()!='_blank'){ e.stopEvent(); window.open(t.href); } }, delegate:'a' }); } }; /** *初始化導(dǎo)航和中間部分的面板 *并且為導(dǎo)航面板綁定feedselect事件 */varfeeds=newFeedPanel(); //主頁(yè)左側(cè)分類(lèi)導(dǎo)航,在文件FeedPanel.js中定義varmainPanel=newMainPanel();//主頁(yè)中間兩個(gè)表格部分,在文件MainPanel.js中定義//feedselect定義于FeedPanel.js,傳遞的參數(shù)是feeds.on('feedselect',function(nodeAttributes){//為主頁(yè)左側(cè)導(dǎo)航選擇綁定打開(kāi)新標(biāo)簽頁(yè)事件mainPanel.openTab(nodeAttributes);});/***viewport對(duì)整個(gè)頁(yè)面的整體布局*采用border的布局方式*north 北 隱藏 無(wú)作用?*west 西 feeds 分類(lèi)導(dǎo)航* 中間 mainPanel 中間一大塊面板*east 東 公告和捷徑*/varviewport=newExt.Viewport({//主頁(yè)整體框架layout:'border',items:[// 上半部分的窗口,進(jìn)行隱藏,并無(wú)太大作用newExt.BoxComponent({//rawelement// 北region:'north',//該組件的Ext.Element元素對(duì)象el:'header',hidden:true,height:47}),//西feeds,//分類(lèi)導(dǎo)航mainPanel,//中間表格部分newExt.Panel({//主頁(yè)右側(cè)部分// 東 region:'east', layout:'vbox', width:220, margins:'0550', border:false, // minSize:175, // maxSize:400, header:false, cmargins:'0555', collapsible:true, items:[{ // frame:false, // width:220, // bodyStyle:"width:100%", xtype:'panel', // width:200, // autoWidth:false, layout:'fit', flex:1, title:'正在進(jìn)行', //html:'<htmllang="en"xmlns:ext="/docs"><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"></head><body><divid="news"><p>本網(wǎng)站由研究院文檔組維護(hù),為您呈現(xiàn)優(yōu)化后的產(chǎn)品手冊(cè),歡迎查閱!文檔組致力于改善產(chǎn)品手冊(cè)的可用性,非常需要您的支持與幫助。您的任何意見(jiàn)和建議,都可以通過(guò)頁(yè)面右上角的“意見(jiàn)反饋”發(fā)給我們?;蛘甙l(fā)郵件到lanjinjiao@</p></div></body></html>' //直接嵌入htm文檔 // autoLoad:{url:'ShowMessage/LatestAnnouncement.html'} html:'<iframescrolling="auto"frameborder="0"width="100%"height="100%"src="ShowMessage/LatestAnnouncement.html"></iframe>' },{ width:220, xtype:'panel', layout:'fit', flex:1, // title:'正在進(jìn)行', //html:'<htmllang="en"xmlns:ext="/docs"><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"></head><body><divid="news"><p>本網(wǎng)站由研究院文檔組維護(hù),為您呈現(xiàn)優(yōu)化后的產(chǎn)品手冊(cè),歡迎查閱!文檔組致力于改善產(chǎn)品手冊(cè)的可用性,非常需要您的支持與幫助。您的任何意見(jiàn)和建議,都可以通過(guò)頁(yè)面右上角的“意見(jiàn)反饋”發(fā)給我們?;蛘甙l(fā)郵件到lanjinjiao@</p></div></body></html>' //直接嵌入htm文檔 // autoLoad:{url:'ShowMessage/LatestAnnouncement.html'} items:[heroPanel] }/** ,{ xtype:'grid', store:documentType_store, flex:1, title:'"找茬"英雄榜', frame:true, bbar:[{ } ], columns:[ newExt.grid.RowNumberer(), { header:'英雄名', sortable:false, dataIndex:'userId' //renderer:gridUserNameShow },{ header:"找茬個(gè)數(shù)", sortable:false, dataIndex:'groupName' }], sm:newExt.grid.RowSelectionModel({singleSelect:true}), viewConfig:{ forceFit:true } }*/ ]})]});//通過(guò)異步請(qǐng)求獲得文檔類(lèi)型節(jié)點(diǎn)生成樹(shù)結(jié)構(gòu)// 文檔類(lèi)型Ext.Ajax.request({ url:'getSystemData.do', method:'post', params:{ type:"documentType" },//遍歷返回的數(shù)據(jù) success:function(response) { vardatas=Ext.decode(response.responseText); for(dataindatas) { vari=0; Ext.each(datas[data],function(items) { Ext.each(items,function(item){ if(!="顯示全部") { varnadeName="module0_"+i; feeds.addNode( { //定義節(jié)點(diǎn)的部分參數(shù) nodeName:nadeName, text:, pageIndex:i }, feeds.module[0],//定義父節(jié)點(diǎn) true ); } i+=1; }); }); } } });// 特性列表 Ext.Ajax.request({ url:'getSystemData.do', method:'post', params:{ type:"propertiesList" },//遍歷返回的數(shù)據(jù) success:function(response) { vardatas=Ext.decode(response.responseText); for(dataindatas) { vari=0; Ext.each(datas[data],function(items) { Ext.each(items,function(item){ if(!="顯示全部") { varnadeName="module1_"+i; feeds.addNode( { //定義節(jié)點(diǎn)的部分參數(shù) nodeName:nadeName, text:, pageIndex:i }, feeds.module[1],//定義父節(jié)點(diǎn) true ); } i+=1; }); }); } } }); /***未發(fā)現(xiàn)任何作用*/Ext.get('header').on('click',function(){// 試著將焦點(diǎn)放到此項(xiàng)。viewport.focus();});feeds.focus();//Ext.onReady結(jié)束});瀏覽功能的實(shí)現(xiàn)圖6-2瀏覽功能的實(shí)現(xiàn)效果圖主要源代碼:varwestTreePanel=newApiPanel();vardocumentTypevareastPanel=newExt.Panel({ region:'east',//layout:'fit', title:'待開(kāi)發(fā)區(qū)域', closable:true,autoScroll:true,margins:'0055', autoWidth:false});Ext.EventManager.onWindowResize(function(w,h){ varshowWidth;if(documentType=="excel"){ showWidth=1270;}else{ showWidth=950;} eastPanel.setWidth(document.body.offsetWidth-showWidth);},this,true);Ext.onReady(function(){Ext.QuickTips.init();documentType=Ext.get("showWidth").dom.value;varshowWidth;if(documentType=="excel"){ showWidth=1270;}else{ showWidth=950;} eastPanel.setWidth(document.body.offsetWidth-showWidth); //數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)目錄樹(shù)的信息Ext.Ajax.request({ url:'createDocTree.do', method:'post', params:{ config_id:Ext.get("documentID").dom.value }, success:function(response) {// varresultEval=eval(response.responseText);//返回json數(shù)據(jù),存在Docs.context數(shù)組中 varresult=Ext.util.JSON.decode(response.responseText); vartitle=result[0].text; document.title=title; varurl="<iframeid='frame'src='"+result[0].href+"'frameborder='0'width='100%'height='100%'name='DocShow'></iframe>"; mainPanel.body.update(url); mainPanel.setTitle("<center>"+title+"</center>"); } });westTreePanel.on('click',function(node,e){//綁定點(diǎn)擊事件 if(node.attributes.id) { e.stopEvent(); // mainPanel.ShowDocTreePanel(node);//調(diào)用ShowDocTreePanel,加載節(jié)點(diǎn)的href屬性// alert(node.href); window.open(node.attributes.href,'DocShow'); }});varviewport=newExt.Viewport({layout:'border',items:[ westTreePanel, mainPanel, eastPanel]});//展開(kāi)指定的路徑 westTreePanel.expandPath('/root');viewport.doLayout(); setTimeout(function() {Ext.get('loading').remove();Ext.get('loading-mask').fadeOut({remove:true});},250);});varmainPanel=newExt.Panel({closable:true,autoScroll:true,width:200,autoWidth:false,region:'center',layout:'fit',title:'',//工具欄上添加相應(yīng)內(nèi)部定位功能按鈕 tbar:[ '->',{ text:'<spanstyle="font-weight:900;color:#27408B">找茬</span>',//background-colorfont-weight:900font-size:14px handler:function() { findFault(); }, // iconCls:'icon-event' iconCls:'icon-fav' },'-', { text:'返回主頁(yè)', iconCls:'icon-homePage', handler:this.homeLink//調(diào)用此函數(shù),返回主頁(yè),函數(shù)在上面定義好了 },'-', { text:'本節(jié)下載', handler:function() { window.open("chmDownload.do?documentID="+Ext.get("documentID").dom.value);// document.location.href="chmDownload.do?documentID="+Ext.get("documentID").dom.value;// window.open(); }, iconCls:'icon-download' } ]});/***找茬窗口*/functionfindFault(){ if(documentType=='word'){ findWordFaultwin.show(); }elseif(documentType=='excel'){ findExcelFaultwin.show();//彈出意見(jiàn)反饋窗口 }else{ alert("無(wú)法識(shí)別當(dāng)前頁(yè)面的文檔類(lèi)型"); }}/***返回主頁(yè)的按鈕實(shí)現(xiàn)*/functionhomeLink(){ document.location.href="index.html";};登入功能的實(shí)現(xiàn)圖6-3登入功能的實(shí)現(xiàn)效果圖主要源代碼:$(function(){ varisEnter=$("#isEnterID").val(); if(isEnter=="false") { alert("錯(cuò)誤,無(wú)法登入"); } $("#enterID").click(function(){ varisFullData=true; varuserName=$("#userNameID").val(); varpassword=$("#passwordID").val(); if($.trim(userName)=="") { isFullData=false; alert("請(qǐng)輸入用戶(hù)名"); } if($.trim(password)=="") { isFullData=false; alert("請(qǐng)輸入密碼"); } if(isFullData) { document.adminEnterFrom.submit(); } });});提交問(wèn)題功能的實(shí)現(xiàn)圖6-4提交問(wèn)題功能的實(shí)現(xiàn)效果圖主要源代碼:/***定義選擇模式*/varsmExcel=newExt.grid.CheckboxSelectionModel({ checkOnly:true, singleSelect:false, handleMouseDown:Ext.emptyFn});/***分頁(yè)控件*/varpagingExcel=newExt.PagingToolbar({ pageSize:limitValue,//每頁(yè)的顯示的條數(shù) store:excelStore, displayInfo:true, firstText:'首頁(yè)', prevText:'上一頁(yè)', nextText:'下一頁(yè)', lastText:'末頁(yè)', refreshText:'刷新', displayMsg:'顯示第{0}條到{1}條記錄,一共{2}條', emptyMsg:"沒(méi)有記錄!"});/***茬狀態(tài)*/varfaultExcelcropStatusComb=newExt.form.ComboBox({ mode: 'local', triggerAction: 'all', forceSelection: true, editable: false, displayField: 'name', valueField: 'value', store: cropStatusStore, listeners:{ 'select':function(combo){ updateCropStatus(combo); } }});/***茬是否接受*/varfaultExcelcropAcceptComb=newExt.form.ComboBox({ mode: 'local', triggerAction: 'all', forceSelection: true, editable: false, displayField: 'name', valueField: 'value', store: cropAcceptStore});/***問(wèn)題歸類(lèi)*/varfaultExcelClassificationComb=newExt.form.ComboBox({ width: 120, mode: 'local', triggerAction: 'all', forceSelection: true, editable: false, displayField: 'name', valueField: 'value', store: classificationStore});/***茬類(lèi)型*/varfaultExcelCropTypeComb=newExt.form.ComboBox({ mode: 'local', triggerAction: 'all', forceSelection: true, editable: false, displayField: 'name', valueField: 'value', store: cropTypeStore});/***意見(jiàn)狀態(tài)*/varfaultExcelSuggestionStatusComb=newExt.form.ComboBox({ mode: 'local', triggerAction: 'all', forceSelection: true, editable: false, displayField: 'name', valueField: 'value', store: suggestionStatusStore});/***處理人*/varfaultExceladminNameComb=newExt.form.ComboBox({ mode: 'local', triggerAction: 'all', forceSelection: true, editable: false, displayField: 'name', valueField: 'id', store: adminNameStore});varfaultExcelsolveTimeForm=newExt.form.DateField({format:dateFormat});/***列信息*/varcmExcel=[ newExt.grid.RowNumberer(), { header:"建議ID", sortable:true, dataIndex:'id', width:60, renderer:qtipsfun, hidden:true}, { header:"文檔類(lèi)型", sortable:true, dataIndex:'documentType', width:100, renderer:qtipsfun}, { header:"文檔特性", sortable:true, dataIndex:'docuemntProperty', width:100, renderer:qtipsfun}, { header:"文檔名稱(chēng)", sortable:true, dataIndex:'documentName', width:200, renderer:qtipsfun}, { header:"命令", sortable:true, dataIndex:'errorCmd', width:300, renderer:qtipsfun}, { header:"產(chǎn)品系列", sortable:true, dataIndex:'productSeries', width:300, renderer:qtipsfun}, { header:"錯(cuò)誤類(lèi)型", sortable:true, dataIndex:'errorType', width:300, renderer:qtipsfun}, { header:"意見(jiàn)或建議", sortable:true, dataIndex:'suggestion', width:300, renderer:qtipsfun}, { header:"意見(jiàn)提交人(昵稱(chēng))",sortable:true, dataIndex:'userName', width:100, renderer:qtipsfun}, { header:"郵箱", sortable:true, dataIndex:'userEmail', width:150, renderer:qtipsfun}, { header:"意見(jiàn)提交時(shí)間", sortable:true, dataIndex:'submitTime', width:150, renderer:qtipsfun}, { header:"是否接受", sortable:true, dataIndex:'accept', width:60, renderer:qtipsfun, editor:faultExcelcropAcceptComb}, { header:"問(wèn)題歸類(lèi)", sortable:true, dataIndex:'classificationType', width:100, renderer:qtipsfun, editor:faultExcelClassificationComb}, { header:"類(lèi)型", sortable:true, dataIndex:'type', width:100, renderer:qtipsfun, editor:faultExcelCropTypeComb}, { header:"意見(jiàn)狀態(tài)", sortable:true, dataIndex:'status', width:100, renderer:qtipsfun, editor:faultExcelSuggestionStatusComb}, { header:"解決時(shí)間", sortable:true, dataIndex:'solveTime', width:100, renderer:getDateFormat, editor:faultExcelsolveTimeForm}, { header:"處理人", sortable:true, dataIndex:'adminId', width:100, renderer:showAdminName, editor:faultExceladminNameComb}, { header:"分配時(shí)間", sortable:true, dataIndex:'allocationTime', width:100, renderer:qtipsfun, editor:newExt.form.TextField()}, { header:"茬狀態(tài)",

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論