版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計(jì)(論文)</b></p><p> 題 目: 資產(chǎn)管理系統(tǒng) </p><p> 年級專業(yè): <
2、/p><p> 學(xué)生姓名: </p><p> 學(xué) 號: </p><p> 指導(dǎo)教師: </p>
3、<p> 職 稱: 講師 </p><p> 論文完成時(shí)間: 2011 年 4 月 21 日</p><p><b> 摘要</b></p><p> 【摘要】現(xiàn)代企業(yè)管理越來越強(qiáng)調(diào)利用有形資產(chǎn)來提供優(yōu)質(zhì)服務(wù)的能力,即
4、通過資產(chǎn)管理來確保有形資產(chǎn)物盡其用、安全運(yùn)行,在希望的時(shí)間和地點(diǎn)提供需要的設(shè)備,同時(shí)盡可能地降低運(yùn)行和維護(hù)成本。資產(chǎn)管理系統(tǒng)為企業(yè)提供全面、迅速的資產(chǎn)信息,方便管理者了解和操作企業(yè)內(nèi)部的資產(chǎn)管理。</p><p> 本系統(tǒng)是基于B/S的多層Web應(yīng)用,在windows 7操作系統(tǒng)下,本系統(tǒng)選擇了Myeclipse8.6開發(fā)環(huán)境、Mysql數(shù)據(jù)庫和JSP、Struts、Spring、Hibernate、AJAX技
5、術(shù),利用MVC設(shè)計(jì)模式將業(yè)務(wù)邏輯和表示邏輯分離,在表示邏輯層利用JSP技術(shù)實(shí)現(xiàn)了頁面制作、利用AJAX實(shí)現(xiàn)無刷新技術(shù),在業(yè)務(wù)邏輯層,利用Struts、Spring技術(shù)實(shí)現(xiàn)了系統(tǒng)設(shè)置、資產(chǎn)管理以及分類統(tǒng)計(jì)三個(gè)主要模塊的開發(fā),后臺使用Mysql進(jìn)行數(shù)據(jù)庫的開發(fā),并利用Hibernate技術(shù)完成對數(shù)據(jù)庫的封裝映射,實(shí)現(xiàn)了數(shù)據(jù)查詢、修改、增加、刪除等功能。</p><p> 【關(guān)鍵詞】資產(chǎn)管理,JSP,SSH,MySQ
6、L,設(shè)計(jì)模式</p><p><b> 目錄</b></p><p> 畢業(yè)設(shè)計(jì)(論文)1</p><p><b> 第一章 緒論4</b></p><p><b> 1.1選題背景4</b></p><p> 1.2問題的提出4<
7、;/p><p> 1.3系統(tǒng)的開發(fā)目標(biāo)4</p><p> 第二章 系統(tǒng)概要設(shè)計(jì)5</p><p><b> 2.1系統(tǒng)分析5</b></p><p> 2.2系統(tǒng)的可行性分析5</p><p> 2.2.1技術(shù)可行性5</p><p> 2.2.2經(jīng)濟(jì)
8、可行性5</p><p> 2.2.3管理可行性6</p><p> 2.2.4系統(tǒng)功能結(jié)構(gòu)圖6</p><p> 第三章 開發(fā)環(huán)境的說明與安裝6</p><p> 3.1開發(fā)語言的選擇6</p><p> 3.2數(shù)據(jù)庫的選擇7</p><p> 3.3開發(fā)工具的選擇
9、8</p><p> 3.4系統(tǒng)所涉及的關(guān)鍵技術(shù)9</p><p> 第四章 系統(tǒng)設(shè)計(jì)11</p><p> 第五章 數(shù)據(jù)庫設(shè)計(jì)17</p><p> 5.1 資產(chǎn)管理系統(tǒng)數(shù)據(jù)庫表結(jié)構(gòu)說明17</p><p> 第六章 主要編碼實(shí)現(xiàn)19</p><p> 6.1 公共類設(shè)
10、計(jì)19</p><p> 6.2 系統(tǒng)的實(shí)現(xiàn)21</p><p> 第七章 參考文獻(xiàn)30</p><p><b> 第八章 致謝30</b></p><p><b> 第一章 緒論</b></p><p><b> 1.1選題背景</b>
11、;</p><p> 隨著internet技術(shù)的不斷發(fā)展,應(yīng)用軟件迅速普及,大到廠礦校企,小到圖書、餐</p><p> 飲行業(yè),無不應(yīng)用了信息技術(shù),實(shí)現(xiàn)了現(xiàn)代化管理。目前我國中小企業(yè)運(yùn)用信息化等手段,開展現(xiàn)代化治理已經(jīng)具備良好的基礎(chǔ)。但是發(fā)展不平衡,從企業(yè)規(guī)模看,大型企業(yè)的信息化水平遠(yuǎn)遠(yuǎn)高于小型企業(yè),尤其是采購、生產(chǎn)、庫存和銷售的信息化程度這四項(xiàng)指標(biāo)尤為突出,中小企業(yè)的差距也最為明顯
12、,因此加快信息化建設(shè),實(shí)現(xiàn)現(xiàn)代化管理是中小企業(yè)的必然選擇。</p><p> 企業(yè)資產(chǎn)管理的著眼點(diǎn)是幫助企業(yè)管理好有形資產(chǎn),使之物盡其用,而且要使企業(yè)資產(chǎn)的投資回報(bào)最大化。原始的企業(yè)資產(chǎn)管理體制,采用人力管理浪費(fèi)大量的時(shí)間、人力和物力,并且數(shù)據(jù)準(zhǔn)確性低,數(shù)據(jù)匯總速度慢。企業(yè)資產(chǎn)管理之所以非常重要,是因?yàn)榱己玫馁Y產(chǎn)管理能夠減少設(shè)備的故障率,縮短維修響應(yīng)和維修工作時(shí)間,延長設(shè)備壽命,提高倉庫備件儲存水平的合理性,提
13、高采購的科學(xué)性。</p><p><b> 1.2問題的提出</b></p><p> 現(xiàn)代企業(yè)管理越來越強(qiáng)調(diào)利用有形資產(chǎn)來提供優(yōu)質(zhì)服務(wù)的能力,即通過資產(chǎn)管理來確保有形資產(chǎn)物盡其用、安全運(yùn)行,在希望的時(shí)間和地點(diǎn)提供需要的設(shè)備,同時(shí)盡可能地降低運(yùn)行和維護(hù)成本。資產(chǎn)管理系統(tǒng)為企業(yè)提供全面、迅速的資產(chǎn)信息,方便管理者了解和操作企業(yè)內(nèi)部的資產(chǎn)管理。</p>
14、<h3> 1.3系統(tǒng)的開發(fā)目標(biāo)</h2><p> 開發(fā)資產(chǎn)管理系統(tǒng)目的在于解決企業(yè)資產(chǎn)管理過程中不必要的人力、物力的浪費(fèi),提高數(shù)據(jù)匯總速度,從而提高資產(chǎn)管理的合理性和科學(xué)性。</p><p> 資產(chǎn)管理系統(tǒng)具有三大功能:</p><p> 系統(tǒng)設(shè)置:可以對資產(chǎn)管理系統(tǒng)的管理員,用戶,部門,類別以及個(gè)人信息設(shè)置,即增刪、改、查的操作。</p
15、><p> 資產(chǎn)管理:企業(yè)的資產(chǎn)的增加,資產(chǎn)信息、使用人員及部門的修改,資產(chǎn)的送修,資產(chǎn)的刪除等管理操作。</p><p> 分類統(tǒng)計(jì):按照指定的日期區(qū)間查找出指定的資產(chǎn)進(jìn)行操作。</p><h2> 第二章 系統(tǒng)概要設(shè)計(jì)</h2><p><b> 2.1系統(tǒng)分析</b></p><p>
16、 為了保證系統(tǒng)能夠長期、安全、穩(wěn)定、可靠、高效的運(yùn)行,系統(tǒng)應(yīng)該滿足以下的性能需求:</p><p> 1、 系統(tǒng)處理的準(zhǔn)確性和及時(shí)性:系統(tǒng)處理的準(zhǔn)確性和及時(shí)性是系統(tǒng)的必要性能。在系統(tǒng)設(shè)計(jì)和開發(fā)過程中,要充分考慮系統(tǒng)當(dāng)前和將來可能承受的工作量,使系統(tǒng)的處理能力和響應(yīng)時(shí)間能夠滿足教師的操作以及和學(xué)生之間的快速交互的需求。</p><p> 2、 系統(tǒng)的開放性和系統(tǒng)的可擴(kuò)充性:系統(tǒng)在開發(fā)過
17、程中,應(yīng)該充分考慮以后的可擴(kuò)充性。例如數(shù)據(jù)表中用戶選擇字段方式的改變,用戶查詢的需求也會不斷的更新和完善。所有這些,都要求系統(tǒng)提供足夠的手段進(jìn)行功能的調(diào)整和擴(kuò)充。而要實(shí)現(xiàn)這一點(diǎn),應(yīng)通過系統(tǒng)的開放性來完成,既系統(tǒng)應(yīng)是一個(gè)開放系統(tǒng),只要符合一定的規(guī)范,可以簡單的加入和減少系統(tǒng)的模塊,配置系統(tǒng)的硬件。通過軟件的修補(bǔ)、替換完成系統(tǒng)的升級和更新?lián)Q代。</p><p> 3、 系統(tǒng)的易用性和易維護(hù)性:要實(shí)現(xiàn)這一點(diǎn),就要求系
18、統(tǒng)應(yīng)該盡量使用用戶熟悉的術(shù)語和中文信息的界面;針對用戶可能出現(xiàn)的使用問題,要提供足夠的在線幫助,縮短用戶對系統(tǒng)熟悉的過程。</p><p> 4、 系統(tǒng)的數(shù)據(jù)要求:1.數(shù)據(jù)錄入和處理的準(zhǔn)確性和實(shí)時(shí)性。2.數(shù)據(jù)的一致性與完整性。3.數(shù)據(jù)的共享與獨(dú)立性。4.對于系統(tǒng)中一些不予以公布的系統(tǒng),系統(tǒng)每個(gè)用戶有保密的權(quán)利。</p><h3> 2.2系統(tǒng)的可行性分析</h2><
19、;h4> 2.2.1技術(shù)可行性</h2><p> 運(yùn)用Sun公司開發(fā)的J2EE體系結(jié)構(gòu),采用MVC三層架構(gòu)的模式,在設(shè)計(jì)模式上,使用當(dāng)前流行的SSH框架,采用Hibernate作為ORM框架,J2EE是一種利用Java 2平臺來簡化企業(yè)解決方案的開發(fā)、部署和管理相關(guān)的復(fù)雜問題的體系結(jié)構(gòu)。J2EE技術(shù)的基礎(chǔ)就是核心Java平臺,J2EE不僅鞏固了標(biāo)準(zhǔn)版中的許多優(yōu)點(diǎn),同時(shí)還提供了對 Java Servle
20、t API、JSP(Java Server Pages)以及XML技術(shù)的全面支持。</p><p> 開發(fā)過程中運(yùn)用MyEclipse8.6開發(fā)工具,該開發(fā)工具是Eclipse的一個(gè)插件,Eclipse本身就是一個(gè)功能非常強(qiáng)大的開發(fā)工具,而MyEclipse在功能上與Tomcat進(jìn)行了集成,并且能做到自動打包,并將包自動部署到服務(wù)器上。這從很大程度上提高了開發(fā)的效率,節(jié)約了開發(fā)的時(shí)間。</p>&
21、lt;h4> 2.2.2經(jīng)濟(jì)可行性</h2><p> 系統(tǒng)在硬件和軟件方面需求都不是很大,數(shù)據(jù)庫目前采用mysql數(shù)據(jù)庫,在維護(hù)方面非常便捷,如果以后數(shù)據(jù)量很大的情況下,可以轉(zhuǎn)移為Oracle數(shù)據(jù)庫替代mysql,系統(tǒng)只需設(shè)置一個(gè)服務(wù)器,使用者通過IE瀏覽器登陸系統(tǒng),操作賦予自己的系統(tǒng)操作功能,總體上經(jīng)濟(jì)不會超過5000元,所以說在經(jīng)濟(jì)上本系統(tǒng)完全可行。</p><h4>
22、2.2.3管理可行性</h2><p> 本系統(tǒng)只有2個(gè)角色可以登錄進(jìn)行操作:管理員與超級管理員。</p><p> 系統(tǒng)中有用戶這個(gè)角色,此角色不能登錄到系統(tǒng),僅僅作為資產(chǎn)擁有者而存在,用戶的信息由管理員錄入。</p><p> 管理員可以管理用戶、部門、類別、資產(chǎn)。</p><p> 超級管理員除了擁有管理員的權(quán)限外,還可以管理管
23、理員。</p><h4> 2.2.4系統(tǒng)功能結(jié)構(gòu)圖</h2><h2> 第三章 開發(fā)環(huán)境的說明與安裝</h2><h3> 3.1開發(fā)語言的選擇</h2><p> Java是一種簡單的,面向?qū)ο蟮模植际降?,解釋型的,健壯安全的,結(jié)構(gòu)中立的,可移植的,性能優(yōu)異、多線程的動態(tài)語言。</p><p> 1
24、、Java語言是簡單的。Java語言的語法與C語言和C++語言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用Java。另一方面,Java丟棄了C++ 中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強(qiáng)制類型轉(zhuǎn)換。特別地,Java語言不使用指針,并提供了自動的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂。 2、Java語言是一個(gè)面向?qū)ο蟮?。Java語言提供類、接口和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持
25、接口之間的多繼承,并支持類與接口之間的實(shí)現(xiàn)機(jī)制(關(guān)鍵字為implements)。Java語言全面支持動態(tài)綁定,而C++ 語言只對虛函數(shù)使用動態(tài)綁定。總之,Java語言是一個(gè)純的面向?qū)ο蟪绦蛟O(shè)計(jì)語言?!?、Java語言是分布式的。Java語言支持Internet應(yīng)用的開發(fā),在基本的Java應(yīng)用編程接口中有一個(gè)網(wǎng)絡(luò)應(yīng)用編程接口(java.net),它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類庫,包括URL、 URLConnection、Socket、 S
26、erverSocket等。Java的RMI(遠(yuǎn)程方法激活)機(jī)制也是開發(fā)分布式應(yīng)用的重要手段?!?、Java語言是健壯</p><p> 本系采用Java語言,結(jié)合當(dāng)今比較主流的SSH(struts2、hibernate3、spring.5)框架、Ajax、jQuery、JavaScript、CSS、spring2.5注解、dwr等技術(shù)。開發(fā)語言采用JSP語言。</p><p><
27、b> 3.2數(shù)據(jù)庫的選擇</b></p><p> 本系統(tǒng)采用MySQL小型數(shù)據(jù)庫,如果以后系統(tǒng)數(shù)據(jù)量大以及需要大量維護(hù),可以轉(zhuǎn)移到Oracle大型數(shù)據(jù)庫上。</p><p> MySQL是一個(gè)真正的多用戶、多線程SQL數(shù)據(jù)庫服務(wù)器。SQL(結(jié)構(gòu)化查詢語言)是世界上最流行的和標(biāo)準(zhǔn)化的數(shù)據(jù)庫語言。MySQL是以一個(gè)客戶機(jī)/服務(wù)器結(jié)構(gòu)的實(shí)現(xiàn),它由一個(gè)服務(wù)器守護(hù)程序mys
28、qld和很多不同的客戶程序和庫組成?! QL是一種標(biāo)準(zhǔn)化的語言,它使得存儲、更新和存取信息更容易。例如,你能用SQL語言為一個(gè)網(wǎng)站檢索產(chǎn)品信息及存儲顧客信息,同時(shí)MySQL也足夠快和靈活以允許你存儲記錄文件和圖像?! ySQL 主要目標(biāo)是快速、健壯和易用。最初是因?yàn)槲覀冃枰@樣一個(gè)SQL服務(wù)器,它能處理與任何可不昂貴硬件平臺上提供數(shù)據(jù)庫的廠家在一個(gè)數(shù)量級上的大型數(shù)據(jù)庫,但速度更快,MySQL就開發(fā)出來。自1996年以來,我們一直
29、都在使用MySQL,其環(huán)境有超過 40 個(gè)數(shù)據(jù)庫,包含 10,000個(gè)表,其中500多個(gè)表超過7百萬行,這大約有100 個(gè)吉字節(jié)(GB)的關(guān)鍵應(yīng)用數(shù)據(jù)?! ySQL建立的基礎(chǔ)是業(yè)已用在高要求的生產(chǎn)環(huán)境多年的一套實(shí)用例程。盡管MySQL仍在開發(fā)中,但它已經(jīng)提供一個(gè)豐富和極其有用的功能集。</p><p> 接下來我將對兩個(gè)數(shù)據(jù)庫作簡單的比較:</p><p> 1、安全性:不管是My
30、SQL,還是MySQL,在外部網(wǎng)絡(luò)中,都受到相當(dāng)大的威脅。相比而言,MySQL受到的威脅甚至要更大些,最近2年來,MySQL暴露出了多個(gè)遠(yuǎn)程溢出漏洞。如果配置的比較好的話,我認(rèn)為,Oracle要比MySQL安全一些,因?yàn)殡S時(shí)會爆發(fā)的新溢出漏洞是防不勝防的,而且能夠執(zhí)行系統(tǒng)命令的sql注入攻擊也非??膳隆?2、易用性:毫無疑問,Oracle和MySQL的易用性比較差,入門的門檻高了點(diǎn),特別是Oracle;MySQL相對比較容易,微軟
31、的東西不管性能怎么樣,易用性都做得不錯。 3、開發(fā)環(huán)境:Eclipse和Tomcat本身對數(shù)據(jù)庫都沒有什么要求,只要你有JDBC驅(qū)動,連接都差不多,穩(wěn)定性和性能也沒多大區(qū)別。從開發(fā)的角度來講,中小型項(xiàng)目Oracle和MySQL都是不錯的選擇。</p><h3> 3.3開發(fā)工具的選擇</h2><p> IDE工具:MyEclipse8.6</p><p>
32、; MyEclipse是在IBM開發(fā)的IDE工具Eclipse基礎(chǔ)上集合了一系列插件的代碼編寫工具,利用它我們可以在數(shù)據(jù)庫和J2EE的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的J2EE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。</p><p> 數(shù)據(jù)庫可視化
33、操作工具:SQLyog Enterprise</p><p> SQLyog是業(yè)界著名的Webyog公司出品的一款簡潔高效、功能強(qiáng)大的圖形化MySQL數(shù)據(jù)庫管理工具。使用SQLyog可以快速直觀地讓您從世界的任何角落通過網(wǎng)絡(luò)來維護(hù)遠(yuǎn)端的MySQL數(shù)據(jù)庫。它具有易用的數(shù)據(jù)庫、數(shù)據(jù)表備份與還原功能,支持導(dǎo)入與導(dǎo)出XML、HTML、CSV等多種格式的數(shù)據(jù),直接運(yùn)行批量SQL腳本文件,速度極快等優(yōu)點(diǎn)。</p>
34、;<p> WEB容器:Tomcat6.0</p><p> Tomcat 服務(wù)器是一個(gè)免費(fèi)的開放源代碼的Web 應(yīng)用服務(wù)器,也是一個(gè)小型的輕量級應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試JSP 程序的首選。對于一個(gè)初學(xué)者來說,可以這樣認(rèn)為,當(dāng)在一臺機(jī)器上配置好Apache 服務(wù)器,可利用它響應(yīng)對HTML 頁面的訪問請求。實(shí)際上Tomcat 部分是Apache
35、 服務(wù)器的擴(kuò)展,但它是獨(dú)立運(yùn)行的,所以當(dāng)你運(yùn)行tomcat 時(shí),它實(shí)際上作為一個(gè)與Apache 獨(dú)立的進(jìn)程單獨(dú)運(yùn)行的。</p><h3> 3.4系統(tǒng)所涉及的關(guān)鍵技術(shù)</h2><p> MVC(Model-View-Controller,“模式-視圖-控制器”)模式的結(jié)構(gòu)由以下三種部分組</p><p> 成:模型(Model)、視圖(View)和控制器(C
36、ontroller)。如下圖所示:</p><p> 通知變化狀態(tài)變化</p><p><b> 通知變化</b></p><p><b> 用戶請求</b></p><p><b> 查看變化</b></p><p> MVC模式的功能示
37、意圖</p><p> 模型層中的模型就是指業(yè)務(wù)邏輯模型和數(shù)據(jù)模型。模型接收視圖請求的數(shù)據(jù),并返</p><p> 回最終的處理結(jié)果。這里只所以把模型層單獨(dú)抽取出來,是為了應(yīng)對業(yè)務(wù)規(guī)則的變化,</p><p> 也是判斷開發(fā)人員是否優(yōu)秀的設(shè)計(jì)依據(jù)。MVC并沒有提供模型的設(shè)計(jì)方法,而只告</p><p> 訴開發(fā)人員應(yīng)該組織管理這些模型
38、,以便于模型的重構(gòu)和提高重用性。</p><p> 視圖層主要是用來展現(xiàn)用戶所需要的數(shù)據(jù),它是用戶和系統(tǒng)進(jìn)行交互的界面,</p><p> 可以采用HTML、XML、Servlet等技術(shù)。一般來說,視圖只接收來自模型的數(shù)據(jù)并顯</p><p> 示給用戶,以及將用戶界面的輸入數(shù)據(jù)和請求傳遞給控制和模型[6,7]。MVC設(shè)計(jì)模式對</p><
39、p> 于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請求,而不包括在視圖上業(yè)</p><p> 務(wù)流程的處理,業(yè)務(wù)流程的處理和狀態(tài)的改變則交給模型層處理。視圖部分的大致處理</p><p> 流程是:頁面模板定義頁面布局,頁面配置文件定義視圖標(biāo)簽的具體內(nèi)容,由頁面布局</p><p> 策略類初始化并加載頁面,每個(gè)用戶部件根據(jù)自己的配置進(jìn)行初始化
40、,加載校驗(yàn)器并設(shè)</p><p> 置參數(shù),以及事件的委托等,用戶提交后,通過了表示層的校驗(yàn),用戶部件把數(shù)據(jù)自動</p><p> 提交給業(yè)務(wù)實(shí)體即模型。</p><p> 控制層就像一個(gè)中轉(zhuǎn)站,它從用戶那里接收請求,并根據(jù)用戶的請求,將模型與視</p><p> 圖匹配在一起,共同完成用戶的請求。在實(shí)現(xiàn)上,為了能夠控制和協(xié)調(diào)每個(gè)用戶
41、跨越多個(gè)請求的處理,控制機(jī)制應(yīng)該以集中的方式進(jìn)行管理[8]。用戶提交一個(gè)表單或者單擊一個(gè)鏈接,控制層接收請求后,它本身并不處理業(yè)務(wù)信息,而是根據(jù)用戶的請求類型,把用戶的信息傳遞給相對應(yīng)的模型,告訴模型做什么,等模型處理完畢后,再把模型處理后的數(shù)據(jù)選擇符合要求的視圖返回給用戶。</p><p> 通過將模型、視圖和控制器分離,使得一個(gè)模型可以對應(yīng)多個(gè)視圖,一個(gè)視圖可能</p><p>
42、對應(yīng)多個(gè)模型。如果用戶通過某個(gè)視圖的控制改變了模型的數(shù)據(jù),所有其他依賴于這些</p><p> 數(shù)據(jù)的視圖都反映到這些變化。因此,無論何時(shí)發(fā)生了何種數(shù)據(jù)變化,控制器都會將變</p><p> 化通知多有的視圖,導(dǎo)致顯示的更新。</p><p> Struts是一個(gè)MVC框架(Framework),能夠?qū)崿F(xiàn)JavaWeb應(yīng)用的快速開發(fā)。Struts實(shí)現(xiàn)的重點(diǎn)在C
43、(Controller),包括 ActionServlet/RequestProcessor和我們定制的Action,也為V(View)提供了一系列定制標(biāo)簽 (CustomTag)。但Struts幾乎沒有涉及M(Model),所以Struts可以采用JAVA實(shí)現(xiàn)的任何形式的商業(yè)邏輯。Spring是一個(gè)輕型容器(light-weightcontainer),其核心是Bean工廠(BeanFactory),用以構(gòu)造我們所需要 的M(Mode
44、l)。在此基礎(chǔ)之上,Spring提供了AOP(Aspect-OrientedProgramming,面向?qū)用娴木幊蹋┑膶?shí)現(xiàn),用它來提供非管理環(huán)境下申明方式的事務(wù)、安全等服務(wù);對Bean工廠的擴(kuò)展ApplicationContext更加方便我們實(shí)現(xiàn)J2EE的應(yīng)用;WebMVC和SpringWeb提供了JavaWeb應(yīng)用的框架或與其他流行的Web框架進(jìn)行集成。就是說可將兩者一起使用,達(dá)到將兩者自身的特點(diǎn)進(jìn)行互補(bǔ)。</p>&l
45、t;p> Hibernate是一個(gè)和JDBC密切關(guān)聯(lián)的框架,是JDBC的輕量級的對象封裝,所以Hibernate的兼容性和JDBC驅(qū)動,和數(shù)據(jù)庫都有一定的關(guān)系,但是和使用它的Java程序,和App Server沒有任何關(guān)系,也不存在兼容性問題。Hibernate是一個(gè)獨(dú)立的對象持久層框架,和App Server,和EJB沒有什么必然的聯(lián)系。Hibernate可以用在任何JDBC可以使用的場合,例如Java應(yīng)用程序的數(shù)據(jù)庫訪問代碼
46、,DAO接口的實(shí)現(xiàn)類,甚至可以是BMP里面的訪問數(shù)據(jù)庫的代碼。從這個(gè)意義上來說,Hibernate和EB不是一個(gè)范疇的東西,也不存在非此即彼的關(guān)系。</p><p> 本系統(tǒng)的設(shè)計(jì)方案采用MVC設(shè)計(jì)模式下的Struts+Spring+Hibernate的架構(gòu)。SSH架構(gòu)是典型的J2EE三層結(jié)構(gòu),分為表現(xiàn)層、業(yè)務(wù)邏輯層和數(shù)據(jù)持久層。三層體系將業(yè)務(wù)規(guī)則、數(shù)據(jù)訪問及合法性校驗(yàn)等工作放在中間層處理??蛻舳瞬恢苯优c數(shù)據(jù)庫
47、交互,而是通過組件與中間層建立連接,再由中間層與數(shù)據(jù)庫交互。具體架構(gòu)如圖3.2所示:</p><p> Service locatorDAO</p><p><b> SSH架構(gòu)圖</b></p><p><b> 第四章 系統(tǒng)設(shè)計(jì)</b></p><p><b> 4.1部分
48、序列圖</b></p><p><b> 登錄</b></p><p> 用戶在登陸界面輸入賬號、密碼,選擇角色登陸成功跳轉(zhuǎn)到主頁面(home.jsp)登錄則返回index.jsp頁面。</p><p><b> 個(gè)人設(shè)置</b></p><p> 管理員登錄成功之后可以修改個(gè)人
49、詳細(xì)信息以及密碼信息。頁面通過AJAX顯示服務(wù)器傳遞回來的信息。</p><p><b> 添加用戶</b></p><p> 管理員登錄成功之后可以添加用戶。用戶只是資產(chǎn)的擁有者,并不具有登錄系統(tǒng)的權(quán)限。</p><p><b> 修改用戶</b></p><p> 管理員登錄成功之后可以
50、對用戶詳細(xì)信息修改,如Email,聯(lián)系方式,部門等。</p><p><b> 部門添加</b></p><p> 管理員登錄成功之后添加部門。</p><p><b> 部門信息修改</b></p><p> 管理員登錄成功之后可以修改部門信息,如部門名,部門描述等。</p>
51、<p><b> 資產(chǎn)添加</b></p><p> 管理員登錄成功之后可以添加資產(chǎn),管理員可以填寫資產(chǎn)編號,資產(chǎn)名,資產(chǎn)類別,生產(chǎn)日期,購買日期是否折舊等。系統(tǒng)根據(jù)管理員選擇的使用情況選項(xiàng)自動增加或刪除使用部門與使用人員兩項(xiàng)。</p><p><b> 資產(chǎn)查詢</b></p><p> 管理員登錄成
52、功之后可以查詢資產(chǎn),查詢完畢之后可以對資產(chǎn)進(jìn)行修改、刪除、送修操作,也可以點(diǎn)擊資產(chǎn)名查看資產(chǎn)的詳細(xì)信息。</p><p><b> 資產(chǎn)送修</b></p><p> 管理員登錄成功之后可以對需要送修的資產(chǎn)進(jìn)行送修操作,管理員需要填寫送修日期,花費(fèi),送修人員等信息。</p><p><b> 資產(chǎn)修改</b><
53、/p><p> 管理員登錄成功之后可以修改資產(chǎn)的詳細(xì)信息以及使用人員。</p><p><b> 分類統(tǒng)計(jì)</b></p><p> 管理員登錄成功之后可以按照日期區(qū)間來查詢資產(chǎn)。</p><p><b> 第五章 數(shù)據(jù)庫設(shè)計(jì)</b></p><h4> 5.1 資產(chǎn)管
54、理系統(tǒng)數(shù)據(jù)庫表結(jié)構(gòu)說明</h2><p> Assets(資產(chǎn))</p><p> admin(管理員)</p><p> bsend(送修記錄)</p><p><b> User(用戶)</b></p><p> department(部門)</p><p>
55、<b> Type(類別)</b></p><h2> 第六章 主要編碼實(shí)現(xiàn)</h2><p><b> 6.1 公共類設(shè)計(jì)</b></p><p> 6.1.1 數(shù)據(jù)庫操作工具類 HibernateUtil.java</p><p> @Service @Transactional<
56、;/p><p> public class HibernateUtil {</p><p> @Resource private SessionFactory sessionFactory;</p><p> //獲取Session</p><p> public Session getSession(){</p><
57、p> return sessionFactory.openSession();</p><p><b> }</b></p><p><b> //添加一條數(shù)據(jù)</b></p><p> public void add(Object obj){</p><p> sessionFac
58、tory.getCurrentSession().save(obj);</p><p><b> }</b></p><p><b> //更新一條數(shù)據(jù)</b></p><p> public void update(Object obj){</p><p> sessionFactory.
59、getCurrentSession().update(obj);</p><p><b> }</b></p><p><b> //刪除多個(gè)數(shù)據(jù)</b></p><p> public void delete(Object... objs){</p><p> for(Object obj
60、 : objs)</p><p> sessionFactory.getCurrentSession().delete(obj);</p><p><b> }</b></p><p> //根據(jù)ID獲取一條數(shù)據(jù)</p><p> @Transactional(propagation=Propagation.NO
61、T_SUPPORTED)</p><p> public Object get(Class clazz, Serializable id){</p><p> return sessionFactory.openSession().get(clazz, id);</p><p><b> }</b></p><p>
62、;<b> //獲取Query</b></p><p> public Query getQuery(String hql){</p><p> return sessionFactory.openSession().createQuery(hql);</p><p><b> }</b></p>&
63、lt;p><b> }</b></p><p> 6.1.2 Struts攔截器,驗(yàn)證是否登錄CheckLoginInterceptor.java</p><p> @Controller</p><p> public class CheckLoginInterceptor extends AbstractInterceptor
64、 {</p><p> private static final long serialVersionUID = 1L;</p><p> @SuppressWarnings("unchecked")</p><p> public String intercept(ActionInvocation ai) throws Exception
65、 {</p><p> Object action = ai.getAction();</p><p> //如果是loginAction,則攔截器不生效</p><p> if (action instanceof LoginAction) {</p><p> return ai.invoke();</p><
66、p><b> }</b></p><p> Map session = ai.getInvocationContext().getSession();</p><p> Object admin = session.get("admin");</p><p> //如果用戶沒有登錄,則返回到登錄界面</p
67、><p> if(admin != null){</p><p> return ai.invoke();</p><p><b> }</b></p><p><b> else{</b></p><p> return "login";</
68、p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 6.1.3 Struts攔截器,驗(yàn)證權(quán)限CheckPermissionInterceptor.java</p><p>
69、 @Controller</p><p> public class CheckPermissionInterceptor extends AbstractInterceptor {</p><p> private static final long serialVersionUID = 1L;</p><p> @SuppressWarnings(&quo
70、t;unchecked")</p><p> public String intercept(ActionInvocation ai) throws Exception {</p><p> Map session = ai.getInvocationContext().getSession();</p><p> if(session.get(&q
71、uot;admin") == null)</p><p> return "login";</p><p> Admin admin = (Admin)session.get("admin");</p><p> if(admin.getPermission() == 0){</p><p&
72、gt; return ai.invoke();</p><p><b> }</b></p><p><b> else{</b></p><p> return "permission";</p><p><b> }</b></p>
73、<p><b> }</b></p><p><b> }</b></p><p><b> 6.2 系統(tǒng)的實(shí)現(xiàn)</b></p><p> 6.2.1 登錄 LoginDao.java</p><p><b> @Service</b&g
74、t;</p><p> public class LoginDao {</p><p> @Resource private HibernateUtil util;</p><p> public Admin login(Admin admin){</p><p> Session session = util.getSession(
75、);</p><p> Criteria criteria = session.createCriteria(Admin.class);</p><p> criteria.add(Restrictions.eq("username", admin.getUsername()));</p><p> criteria.add(Restric
76、tions.eq("password", admin.getPassword()));</p><p> Admin u = (Admin) criteria.uniqueResult();</p><p><b> return u;</b></p><p><b> }</b></p&g
77、t;<p> //設(shè)置登錄次數(shù)以及最后登錄時(shí)間</p><p> public void update(Admin admin){</p><p> admin.setLogincount(admin.getLogincount() + 1);</p><p> admin.setLasttime(new Timestamp(System.cu
78、rrentTimeMillis()));</p><p> util.update(admin);</p><p><b> }</b></p><p><b> }</b></p><p> 6.2.2 個(gè)人設(shè)置 PersonDao.java</p><p><
79、;b> @Service</b></p><p> public class PersonDao {</p><p> @Resource private HibernateUtil util;</p><p><b> //修改密碼</b></p><p> public void upda
80、te(Admin admin){</p><p> util.update(admin);</p><p><b> }</b></p><p><b> //修改個(gè)人信息</b></p><p> public Admin update(Integer dp, String email,
81、String wp, String mp, Admin admin){</p><p> admin.setEmail(email);</p><p> admin.setWorkphone(wp);</p><p> admin.setMobilephone(mp);</p><p> Department depart = (De
82、partment)util.get(Department.class, dp);</p><p> admin.setDepartment(depart);</p><p> util.update(admin);</p><p> return admin;</p><p><b> }</b></p&g
83、t;<p><b> }</b></p><p> 6.2.3 部門設(shè)置DepartmentDao.java</p><p><b> @Service</b></p><p> public class DepartmentDao {</p><p> @Resource
84、private HibernateUtil util;</p><p><b> //添加新部門</b></p><p> public void add(Department dp){</p><p> util.add(dp);</p><p><b> }</b></p>
85、<p><b> //刪除部門</b></p><p> public void delete(Integer id){</p><p> util.delete(util.get(Department.class, id));</p><p><b> }</b></p><p&g
86、t;<b> //修改部門</b></p><p> public void update(Department dp){</p><p> util.update(dp);</p><p><b> }</b></p><p><b> //查詢部門</b><
87、/p><p> @SuppressWarnings("unchecked")</p><p> public List search(String str){</p><p> String hql = "from Department d where d.dpname like ?";</p><p&g
88、t; Session session = util.getSession();</p><p> Query query = session.createQuery(hql);</p><p> query.setString(0, "%"+str+"%");</p><p> return query.list();
89、</p><p><b> }</b></p><p><b> }</b></p><p> 6.2.4 類別設(shè)置TypeDao.java</p><p><b> @Service</b></p><p> public class Typ
90、eDao {</p><p> @Resource private HibernateUtil util;</p><p><b> //增加類別</b></p><p> public void add(Type tp){</p><p> util.add(tp);</p><p>&
91、lt;b> }</b></p><p><b> //刪除類別</b></p><p> public void delete(Integer id){</p><p> util.delete(util.get(Type.class, id));</p><p><b> }<
92、;/b></p><p><b> //修改類別</b></p><p> public void update(Type tp){</p><p> util.update(tp);</p><p><b> }</b></p><p><b>
93、//查詢類別</b></p><p> @SuppressWarnings("unchecked")</p><p> public List search(String str){</p><p> String hql = "from Type t where t.typename like ?";<
94、;/p><p> Session session = util.getSession();</p><p> Query query = session.createQuery(hql);</p><p> query.setString(0, "%"+str+"%");</p><p> retu
95、rn query.list();</p><p><b> }</b></p><p><b> }</b></p><p> 6.2.5 用戶設(shè)置UserDao.java</p><p><b> @Service</b></p><p>
96、public class UserDao {</p><p> @Resource private HibernateUtil util;</p><p><b> //添加用戶</b></p><p> public void add(User user, Integer did){</p><p> user
97、.setDepartment((Department)util.get(Department.class, did));</p><p> util.add(user);</p><p><b> }</b></p><p><b> //刪除用戶</b></p><p> public v
98、oid delete(Integer id){</p><p> util.delete(util.get(User.class, id));</p><p><b> }</b></p><p><b> //修改用戶</b></p><p> public void update(Use
99、r user, Integer did){</p><p> user.setDepartment((Department)util.get(Department.class, did));</p><p> util.update(user);</p><p><b> }</b></p><p> @Supp
100、ressWarnings("unchecked")</p><p><b> //按姓名查找用戶</b></p><p> public List searchByName(String str1, String str2){</p><p> String hql = "from User u where
101、u.name like ? and u.department=?";</p><p> if(str2 == null || str2.equals("") || str2.equals("0"))</p><p> hql = "from User u where u.name like ?";</p>
102、<p> return this.search(hql, str1, str2);</p><p><b> }</b></p><p> @SuppressWarnings("unchecked")</p><p> //按姓名郵箱地址用戶</p><p> public L
103、ist searchByEmail(String str1, String str2){</p><p> String hql = "from User u where u.email like ? and u.department=?";</p><p> if(str2 == null || str2.equals("") || str2.
104、equals("0"))</p><p> hql = "from User u where u.email like ?";</p><p> return this.search(hql, str1, str2);</p><p><b> }</b></p><p>
105、 @SuppressWarnings("unchecked")</p><p> public List search(String hql, String str1, String str2){</p><p> Session session = util.getSession();</p><p> Query query = ses
106、sion.createQuery(hql);</p><p> query.setString(0, "%"+str1+"%");</p><p> if(hql.split("[?]").length > 1)</p><p> query.setInteger(1, Integer.valu
107、eOf(str2));</p><p> return query.list();</p><p><b> }</b></p><p><b> }</b></p><p> 6.2.6 管理員設(shè)置AdminDao.java</p><p><b> @
108、Service</b></p><p> public class AdminDao {</p><p> @Resource private HibernateUtil util;</p><p><b> //添加管理員</b></p><p> public void add(Admin adm
109、in, Integer did){</p><p> admin.setDepartment((Department)util.get(Department.class, did));</p><p> util.add(admin);</p><p><b> }</b></p><p><b> /
110、/刪除管理員</b></p><p> public void delete(Integer id){</p><p> util.delete(util.get(Admin.class, id));</p><p><b> }</b></p><p> //按姓名查找管理員</p>
111、<p> @SuppressWarnings("unchecked")</p><p> public List searchByName(String str1, String str2){</p><p> String hql = "from Admin a where a.name like ? and a.department=?&q
112、uot;;</p><p> if(str2 == null || str2.equals("") || str2.equals("0"))</p><p> hql = "from Admin a where a.name like ?";</p><p> return this.search(h
113、ql, str1, str2);</p><p><b> }</b></p><p> //按郵箱地址查找管理員</p><p> @SuppressWarnings("unchecked")</p><p> public List searchByEmail(String str1, S
114、tring str2){</p><p> String hql = "from Admin a where a.email like ? and a.department=?";</p><p> if(str2 == null || str2.equals("") || str2.equals("0"))</p>
115、;<p> hql = "from Admin a where a.email like ?";</p><p> return this.search(hql, str1, str2);</p><p><b> }</b></p><p> @SuppressWarnings("unche
116、cked")</p><p> public List search(String hql, String str1, String str2){</p><p> Session session = util.getSession();</p><p> Query query = session.createQuery(hql);</p&g
117、t;<p> query.setString(0, "%"+str1+"%");</p><p> if(hql.split("[?]").length > 1)</p><p> query.setInteger(1, Integer.valueOf(str2));</p><p&g
118、t; return query.list();</p><p><b> }</b></p><p><b> }</b></p><p> 6.2.7 資產(chǎn)設(shè)置AssetDao.java</p><p><b> @Service</b></p>&l
119、t;p> public class AssetDao {</p><p> @Resource private HibernateUtil util;</p><p><b> //按id獲取資產(chǎn)</b></p><p> public Assets get(Integer id){</p><p> r
120、eturn (Assets)util.get(Assets.class, id);</p><p><b> }</b></p><p><b> //資產(chǎn)送修</b></p><p> public void bsend(Integer id, Bsend bsend, Integer uid){</p>
121、;<p> Assets asset = (Assets)util.get(Assets.class, id);</p><p> bsend.setAssets(asset);</p><p> bsend.setBsendperson(uid);</p><p> bsend.setState(1);</p><p>
122、; asset.setUsestate(3);</p><p> util.update(asset);</p><p> util.add(bsend);</p><p><b> }</b></p><p><b> //刪除一個(gè)資產(chǎn)</b></p><p>
123、 public void delete(Integer id){</p><p> util.delete(util.get(Assets.class, id));</p><p><b> }</b></p><p><b> //送修完畢</b></p><p> @SuppressWa
124、rnings("unchecked")</p><p> public void sxwb(Integer id){</p><p> Session session = util.getSession();</p><p> Assets asset = (Assets) util.get(Assets.class, id);</p
125、><p> Query query = session.createQuery("from Bsend b where b.assets=?");</p><p> query.setEntity(0, asset);</p><p> List list = query.list();</p><p> Bsend
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 固定資產(chǎn)管理系統(tǒng)畢業(yè)論文
- 固定資產(chǎn)管理系統(tǒng)畢業(yè)論文
- 固定資產(chǎn)管理系統(tǒng)畢業(yè)論文
- 固定資產(chǎn)管理系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 企業(yè)固定資產(chǎn)管理系統(tǒng)畢業(yè)論文
- 畢業(yè)論文范文——固定資產(chǎn)管理系統(tǒng)
- 公司資產(chǎn)管理研究畢業(yè)論文
- 畢業(yè)論文——畢業(yè)論文管理系統(tǒng)
- 畢業(yè)論文范文——高校固定資產(chǎn)管理系統(tǒng)
- 畢業(yè)論文——固定資產(chǎn)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文范文——企業(yè)固定資產(chǎn)管理系統(tǒng)
- 畢業(yè)論文——畢業(yè)論文管理系統(tǒng) (2)
- 畢業(yè)論文——畢業(yè)論文管理系統(tǒng) (2)
- 畢業(yè)論文——畢業(yè)論文管理系統(tǒng) (2)
- 企業(yè)固定資產(chǎn)管理系統(tǒng)畢業(yè)論文(含外文翻譯)
- 畢業(yè)論文管理系統(tǒng)
- 畢業(yè)論文管理系統(tǒng)
- 足球俱樂部資產(chǎn)管理問題研究[畢業(yè)論文]
- 學(xué)生成績管理系統(tǒng)畢業(yè)論文畢業(yè)論文
- 畢業(yè)論文(設(shè)計(jì))基于.net畢業(yè)論文管理系統(tǒng)
評論
0/150
提交評論