基于java的土地档案管理系统设计(含源文件)
歡迎添加微信互相交流學習哦!
項目源碼:https://gitee.com/oklongmm/biye
摘 ?要
? ? 研究土地檔案管理關系即為實現一個土地檔案管理系統。土地檔案管理系統是將現有的歷史紙質檔案資料進行數字化加工處理,建成標準化的網絡基礎資料數據庫,同時建成一套基于計算機網絡應用的檔案管理軟件系統。不僅要在技術上符合國家關于檔案信息化建設的有關要求,在標準化程度上符合國土行業檔案管理規范的專業性要求,而且還要能夠與當前現有其他業務信息管理系統進行整合,在檔案和業務數據間建立互換和抽取機制,達到信息的順利交換,便于信息的一致性獲取,減少重復勞動工作量。
本文對系統進行了可行性研究、需求分析、前臺界面的設計、后臺數據庫建設以及系統測試等相關工作。基于三層架構的思想,前臺使用jsp技術,后臺使用了Oracle 11g平臺,主要使用Hibernate的設計模式訪問數據庫,采用B/S架構,實現此土地檔案管理系統。
關鍵詞:紙質檔案;數字化;三層架構
?
??? ? Land records management system
Abstract
Land records management system is the existing historical archives data digital processing, built the network database standardization, also built a set based on the archival management software system using computer network. Not only to meet the relevant requirements of the state on the construction of archival information in technology, meet the professional requirements management to standardize land industry archives in the degree of standardization, but also can be integrated with the existing other business information management system, in the archives and business data to establish exchange and extraction mechanism, to smooth exchange of information, consistency is the acquisition of information, reduce duplication workload.
This paper has carried on the system feasibility study, demand analysis, interface design, database construction and system testing and other related work. Three layer architecture based on the idea, the use of JSP technology, the background using the Oracle 11g platform, design mode to access the database using Hibernate, using B/S architecture, the land records management system.
Key words:The paper archives; digital; three layer architecture.
?
?
目錄
摘 ?要?? ?i
Abstract?? ?ii
1 ?緒論?? ?1
1.1 ?可行性研究編寫目的?? ?1
1.2 ?項目背景?? ?1
1.3 ?土地管理現狀?? ?1
1.4 ?土地檔案管理研究方向?? ?2
1.5 ?項目目標?? ?2
1.6 ?項目設計原則?? ?3
1.6.1 ?實用性原則?? ?3
1.6.2 ?經濟性原則?? ?3
1.6.3 ?合法性原則?? ?3
2 ?相關技術介紹?? ?4
2.1 ?三層架構的選擇?? ?4
2.2 ?編程語言的選擇?? ?5
2.3 ?主要技術、框架的選擇?? ?6
2.4 ?數據庫的選擇?? ?7
2.5 ?技術選擇方向?? ?7
3 ?需求分析?? ?9
3.1 ?編寫目的?? ?9
3.2 ?系統需求分析簡述?? ?9
3.3 ?系統需求分析詳細描述?? ?9
3.3.1 ?用戶管理模塊?? ?9
3.3.2 ?文件查找模塊?? ?9
3.3.3 ?文件添加模塊?? ?9
3.3.4 ?文件修改模塊?? ?10
3.3.5 ?文件刪除模塊?? ?10
4 ?總體設計?? ?11
4.1 ?系統功能模塊結構設計?? ?11
4.2 ?數據庫設計?? ?11
5 ?詳細設計?? ?14
5.1 ?登陸模塊設計?? ?14
5.2 ?注冊模塊設計?? ?14
5.3 ?文件查詢模塊設計?? ?14
5.4 ?文件添加模塊設計?? ?15
5.5 ?文件修改模塊設計?? ?15
5.6 ?文件刪除模塊設計?? ?15
6 ?系統實現?? ?16
6.1 ?用戶相關?? ?16
6.1.1 ?登陸界面?? ?16
6.1.2 ?注冊頁面?? ?17
6.2 ?檔案相關?? ?19
6.2.1 ?檔案列舉?? ?19
6.2.2 ?檔案查詢?? ?22
6.2.3 ?檔案修改?? ?24
6.2.4 ?檔案刪除?? ?26
6.2.5 ?檔案添加?? ?27
6.2.6 ?報表功能?? ?30
6.3 ?Service層的實現?? ?30
6.3.1 ?Service層實現介紹?? ?30
6.3.2 ?Service層實現的相關代碼?? ?31
6.4 ?持久層的實現?? ?32
6.4.1 ?持久層功能實現的介紹?? ?32
6.4.2 ?持久層實現的代碼?? ?32
7 ?測試?? ?34
7.1 ?測試目的?? ?34
7.2 ?測試原則?? ?34
7.3 ?測試內容?? ?34
7.4 ?測試過程?? ?35
7.4.1 ?登錄模塊?? ?35
7.4.2 ?查詢模塊?? ?35
7.5 ?測試結果?? ?36
7.5.1 ?功能性?? ?36
7.5.2 ?易用性?? ?36
結 ? ?論?? ?37
參考文獻?? ?39
致 ? ?謝?? ?40
外文原文?? ?41
外文翻譯?? ?47
?
1 ?緒論
1.1 ?可行性研究編寫目的
可行性研究的目的是為了對問題進行研究,以最小的代價在最短的時間內確定問題是否可解。
經過對此項目進行詳細調查研究,初擬系統實驗報告,對軟件開發中將要面臨的問題及解決方案進行初涉設計及合理安排。明確開發風險極其所帶來的經濟效益以及為工作帶來的便利性。本報告合身后,交軟件經理審查。
1.2 ?項目背景
? ? 隨著國土大面積調查工作的全面展開和城鎮地籍管理工作得以日趨細化,各種野外調查數據,不同比例尺圖件資料急劇增加。特別是城市建設的空前發展以及土地有償使用法規的實施,使得地籍變更日益頻繁、地籍信息量也越來越大,對城鎮地籍管理提出了更高的要求。面對如此數量巨大、來源多樣、變更頻繁的信息,傳統的管理方法已經愈來愈不能滿足現代化土地管理的需要。此外,國民經濟的迅猛發展,迫切要求各級國土部門為國家提供準確的數量、質量和土地利用現狀等信息。因此,應用現代先進的科學技術和手段,建立科學的土地管理體系,為合理利用土地資源,進行土地規劃、整治、開發利用、稅收等提供有關基礎資料和科學依據,土地管理信息系統的建立勢在必行。
? ? 現有土地檔案大部分還是傳統的紙質檔案,電子檔案極少,隨著 城市大規模舊城區改造以及城中村改造的面積擴大,一些不適應城市發展的建筑物已經消失 ,土地檔案部門作為城市建設的見證人,社會發展的記錄者,有責任、有義務將城市建設發 展的歷史真實的記錄下來。[2]
? ? 從本質上來講,建立土地管理信息就是用現代化的技術來獲取、分析、處理、管理和利用土地信息,就是要依靠計算機技術和現代化科學理論及數學模型的應用,如地理信息系統、遙感學、計算機科學(包括互聯網技術……)等對土地信息進行管理。其中,土地管理的許多業務工作,如,動態監測、建設用地管理、土地監察、地價評估都必須建立在地籍、土地詳查系統的基礎之上,或者說與其有著千絲萬縷的聯系。因此,土地信息系統的核心問題是建立地籍管理信息系統和土地詳查系統,這是土地管理各項業務工作的基礎,必須先行。
1.3 ?土地管理現狀
? ? 當前社會逐步向信息化社會演變,及時、全面、系統、準確地獲取信息是做好各項工作的前提。檔案利用者對檔案信息的要求也是如此。檔案管理工作者如果繼續沿用低效率的傳統手工管理模式,必將在社會發展的大趨勢面前沒有立足的空間。隨著計算機的應用,電子檔案大量地出現,但與之相適應的管理缺乏經驗。電子檔案本身具有信息與載體的可分離性、信息傳遞的網絡化、信息存儲的高容量及信息的易修改等特點。國土資源檔案的管理工作者更應跟上形勢,努力適應對電子檔案的管理。
? ? 隨著檔案法規的逐步完善,依法治檔的社會環境不斷好轉,檔案管理工作正面臨難得的發展機遇。土地檔案對依法管地、合理開發用地、解決土地糾紛、農村土地承包、制定土地利用總體規劃及繳納土地租金、征繳國有土地使用稅等很多方面都起到了很重要的作用。隨著新的土地管理法的正式實施以來,土地資源管理制度和方式均發生了重大的變化,耕地保護、土地用途管制、國土資源執法、礦產管理等管理職能都得到了增強,基本農田保護、土地開發整理、用地報批、征地實施等各項具體工作都有了新的政策、法規、程序,由此形成的土地資源檔案數量不斷增多。如何開發和利用這部分內容豐富的土地資源檔案成為檔案管理工作的一大難題。
? ? 土地資源檔案管理工作的發展,對土地資源檔案管理工作者的素質提出了更高的要求。新技術的應用使土地資源檔案管理工作者有了施展才能的廣闊空間,但同時也對土地資源檔案管理工作者的素質提出了更高的要求。新時期的土地資源檔案管理工作者,除了要求具有檔案管理本專業的知識外,還要求具有計算機、外語、管理學等基礎知識,尤其是要求具有土地資源管理基礎業務知識。
1.4 ?土地檔案管理研究方向
? ? 一、加強基礎業務建設。按照各地土地檔案管理目標認定的各項業務建設要求,扎扎實實地抓好基礎業務建設。在國土資源管理工作中,檔案的形成要規范化、檔案的整理要系統化、檔案的保護要科學化、檔案的管理要現代化。另一方面要積極探索對電子檔案管理的新辦法,把電子檔案的形成、積累、歸檔、保管和提供利用等各環節納入到檔案管理的范圍,并納入檔案管理部門的監督管理之中。
二、加強信息系統建設。隨著辦公自動化的普及,要加快檔案信息電子化建設進程,充分利用計算機存儲、網絡、計算的功能,加快檔案信息系統建設。建議建立電子影像檔案數據庫,實現對電子影像檔案的管理和維護,同時使其具備和地籍管理系統之間的數據借口,通過土地登記申請材料的掃描,在完成土地登記后,可以直接生成地籍電子影像檔案,同時形成紙質和電子兩套檔案數據。
三、積極采用現代化科學技術,全面提高檔案管理的現代化水平。在抓好檔案基礎工作的前提下,要著重提高檔案管理的科技含量。國土資源檔案管理工作者要主動開發或引進先進的管理軟件,努力學習國內外先進的技術和經驗,及時配置不斷更新檔案現代化管理所必須的計算機、掃描儀、光盤刻錄機等現代化辦公設備,充分利用現代化技術,探索對國土資源檔案進行掃描、光盤存儲管理等新的辦法。在建設新的辦公樓時要科學設計、規劃國土資源檔案管理庫房,有條件的要采用庫房安全的自動化監控、庫房溫濕度的自動控制等先進技術。
? ? 四、加強檔案法制的學習和宣傳,推進依法治檔工作。要利用多種形式,加大對《檔案法》等檔案法規的學習和宣傳。對領導和干部職工的宣傳要有針對性、注重實效;在檔案管理工作中要強調依法治檔,把依法治檔工作真正落實到檔案工作的各個環節。
1.5 ?項目目標
? ? 建立地、市、縣級的土地信息系統,開發以土地登記為核心的地籍信息系統,以土地利用現狀調查為核心的土地資源信息系統,為以服務社會為目標的地、市、縣級數字國土信息系統奠定基礎,從而實現土地管理工作的計算機化,實現土地管理信息的共享;提高土地管理的質量、效率和水平,更好地為上級領導和有關部門提供準確快速的土地信息查詢服務、為土地使用者提供快捷的、全面的服務,為各級政府部門和有關機構的土地管理和決策提供技術支持。
1.6 ?項目設計原則
1.6.1 ?實用性原則
? ? 當前土地檔案管理還是主要停留在流傳千年的傳統紙質檔案管理,這樣的落后的管理方式對檔案的存儲、查閱等相關工作帶來了極大的不便。尤其是是這樣信息化全面發展的時期,舊的落后的系統已經逐步顯現其缺陷。在一線二線城市,信息化相關工作還好,但是再往下級就回歸紙質時代。這樣就呈現出了工作效率的分化。全面的信息化會讓土地檔案管理方面的工作帶來極大便利。
1.6.2 ?經濟性原則
? ? 建立合適的土地檔案管理系統,提供了全面的功能,,數據處理方式靈活且滿足需求,減少了人力物力的過度投入。同時基于web開發的系統,能夠自主對系統進行修改,也節省了運營成本。
1.6.3 ?合法性原則
由于在中國對于版權的保護相關法律并不完善,所以某些軟件使用盜版軟件并不會帶來太大影響,且能減少支出。但是政府機關的軟件都是受到國家監管的,所以軟件正版化這部分的投入不可少,否則后期版權糾紛帶來的影響可能會很大。此外,所有資料都由提出放保管,合同制定確定違約責任。
?
2 ?相關技術介紹
2.1 ?三層架構的選擇
?MVC開始是存在于桌面程序中的,M是指業務模型,V是指用戶界面,C則是控制器,使用MVC的目的是將M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式。比如一批統計數據可以分別用柱狀圖、餅圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。
?模型-視圖-控制器(MVC)是Xerox PARC在二十世紀八十年代為編程語言Smalltalk-80發明的一種軟件設計模式,已被廣泛使用。后來被推薦為Oracle旗下Sun公司Java EE平臺的設計模式,并且受到越來越多的使用ColdFusion和PHP的開發者的歡迎。模型-視圖-控制器模式是一個有用的工具箱,它有很多好處,但也有一些缺點。
?MVC 模式同時提供了對 HTML、CSS 和 JavaScript 的完全控制。
?Model(模型)是應用程序中用于處理應用程序數據邏輯的部分。通常模型對象負責在數據庫中存取數據。
?View(視圖)是應用程序中處理數據顯示的部分。通常視圖是依據模型數據創建的。
?Controller(控制器)是應用程序中處理用戶交互的部分。
通常控制器負責從視圖讀取數據,控制用戶輸入,并向模型發送數據。
? ? MVC 分層有助于管理復雜的應用程序,因為您可以在一個時間內專門關注一個方面。例如,您可以在不依賴業務邏輯的情況下專注于視圖設計。同時也讓應用程序的測試更加容易。
? ? MVC 分層同時也簡化了分組開發。不同的開發人員可同時開發視圖、控制器邏輯和業務邏輯。MVC的層次結構如圖2-1所示。
?
圖2-1 MVC層次圖
2.2 ?編程語言的選擇
? ? 與傳統程序不同,Sun 公司在推出 Java 之際就將其作為一種開放的技術。全球數以萬計的 Java 開發公司被要求所設計的 Java軟件必須相互兼容。“Java 語言靠群體的力量而非公司的力量”是Sun公司的口號之一,并獲得了廣大軟件開發商的認同。這與微軟公司所倡導的注重精英和封閉式的模式完全不同。
? ? Sun 公司對 Java 編程語言的解釋是:Java 編程語言是個簡單、面向對象、分布式、解釋性、健壯、安全與系統無關、可移植、高性能、多線程和動態的語言。
? ? Java 平臺是基于 Java 語言的平臺。這樣的平臺非常流行。因此微軟公司推出了與之競爭的.NET平臺以及模仿Java的C#語言。
? ? Java是功能完善的通用程序設計語言,可以用來開發可靠的、要求嚴格的應用程序。
? ? 選擇JAVA主要是因為其8大優勢:
? ? 1. Java是目前使用最為廣泛的網絡編程語言之一。它具有簡單,面向對象,穩定,與平臺無關,解釋型,多線程,動態等特點。
? ? 2.簡單 Java 語言簡單是指這門語言既易學有好用。不要將簡單誤解為這門語言很干癟。你可能很贊同這樣的觀點 英語要比阿了伯語言容易學。但這并不意味著英語就不能表達豐富的內容和深刻的思想,許多文學若貝爾獎的作品都是英文寫的。如果你學習過 C++語言,你會感覺 Java很眼熟,因為 Java中許多基本語句的語法和 C++一樣,像常用的循環語句,控制語句等和 C++幾乎一樣,但不要誤解為 Java 是 C++的增強版,Java 和 C++是兩種完全不同的語言,他們各有各的優勢,將會長期并存下去,Java 語言和 C++語言已成為軟件開發者應當掌握的語言。如果從語言的簡單性方面看,Java要比 C++簡單,C++中許多容易混淆的概念,或者被Java棄之不用了,或者以一種更清楚更容易理解的方式實現,例如,Java不再有指針的概念。
? ? 3.面向對象 基于對象的編程更符合人的思維模式,使人們更容易編寫程序。在實際生活中,我們每時每刻都與對象在打交道。我們用的鋼筆,騎的自行車,乘的公共汽車等。而我們經常見到的卡車,公共汽車,轎車等都會涉及以下幾個重要的物理量 可乘載的人數,運行速度,發動機的功率,耗油量,自重,輪子數目等。另外,還有幾個重要的功能 加速功能,減速功能,剎車,轉彎功能等。我們也可以把這些功能稱作是他們具有的方法,而物理量是它們的狀態描述。僅僅用物理量或功能不能很好的描述它們。在現實生活中,我們用這些共有的屬性和功能給出一個概念 機動車類。一個具體的轎車就是機動車類的一個實例 對象 .Java 語言與其它面向對象語言一樣,引入了類的概念,類是用來創建對象的模板,它包含被創建的對象的狀態描述和方法的定義。
4.與平臺無關 與平臺無關是 Java 語言最大的優勢。其它語言編寫的程序面臨的一個主要問題是 操作系統的變化,處理器升級以及核心系統資源的變化,都可能導致程序出現錯誤或無法運行。Java的虛擬機成功地解決了這個問題,Java編寫的程序可以在任何安裝了 Java虛擬機 JVM 的計算機上正確的運行,Sun公司實現了自己的目標 “一次寫成,處處運行”。
5.解釋型 我們知道C,C++等語言,都是只能對特定的CPU芯片進行編譯,生成機器代碼,該代碼的運行就和特定的CUP有關。例如,在C語言中,我們都碰到過類似下面的問題 int 型變量的值是10 ,那么下面代碼的輸出結果是什么呢 printf(“%d,%d”,x,x=x+1) 如果上述語句的計算順序是從左到右,結果是 10,11 但是,有些機器會從右到左計算,那么結果就是11,11.Java不像C++,它不針對特定的CPU芯片進行編譯,而是把程序編譯為稱做字節碼的一個“中間代碼”。字節碼是很接近機器碼的文件,可以在提供了 Java 虛擬機 JVM 的任何系統上被解釋執行。Java 被設計成為解釋執行的程序,即翻譯一句,執行一句,不產生整個的機器代碼程序。翻譯過程如果不出現錯誤,就一直進行到完畢,否則將在錯誤處停止執行。同一個程序,如果是解釋執行的,那么它的運行速度通常比編譯為可執行的機器代碼的運行速度慢一些。但是,對Java來說,二者的差別不太大,Java的字節碼經過仔細設計,很容易便能使用JIT 即時編譯方式 編譯技術將字節碼直接轉化成高性能的本地機器碼,Sun 公司在 Java 2發行版中提供了這樣一個字節碼編譯器——JIT(Just In Time),它是Java虛擬機的一部分。Java運行系統在提供JIT的同時仍具有平臺獨立性,因而“高效且跨平臺”對Java來說不再矛盾。如果把 Java 的程序比做“漢語”的話,字節碼就相當于“世界語”,世界語不和具體的“國家”關,只要這個“國家”提供了“翻譯”,就可以再快速地把世界語翻譯成本地語言。
6.多線程 Java 的特點之一就是內置對多線程的支持。多線程允許同時完成多個任務。實際上多線程使人產生多個任務在同時執行的錯覺,因為,目前的計算機的處理器在同一時刻只能執行一個線程,但處理器可以在不同的線程之間快速地切換,由于處理器速度非常快,遠遠超過了人接收信息的速度,所以給人的感覺好象多個任務在同時執行。C++沒有內置的多線程機制,因此必須調用操作系統的多線程功能來進行多線程程序的設計。
? ? 7.安全 當你準備從網絡上下載一個程序時,你最大的擔心是程序中含有惡意的代碼,比如試圖讀取或刪除本地機上的一些重要文件,甚至該程序是一個病毒程序等。當你使用支持Java的瀏覽器時,你可以放心地運行Java的小應用程序 Java Applet ,不必擔心病毒的感染和惡意的企圖,Java小應用程序將限制在 Java運行環境中,不允許它訪問計算機的其它部分。
? ? 8.動態 Java 程序的基本組成單元就是類,有些類是自己編寫的,有一些是從類庫中引入的,而類又是運行時動態裝載的,這就使得 Java 可以在分布環境中動態地維護程序及類庫,而不像 C++那樣,每當其類庫升級之后,相應的程序都必須重新修改,編譯。
2.3 ?主要技術、框架的選擇
首先,Hibernate是數據持久層的一個輕量級框架。主要有以下優點:
? ? 1.使用簡介的hql語句(Hibernate query language)。可以不使用傳統的insert,update等sql語句。比如insert一個對象,原來的做法是:insert into 表名稱 alue(值1,值2,值3,……),而現在的做法是:save(對象)。
? ? 2.使用or映射。對象到關系數據庫之間的映射。是從對象的角度操作數據庫,再次體現了面向對象思想。原來的實體抽取方法:首先有了表,然后表映射實體對象。而現在Hibernate做法是:直接由對象映射到表。
? ? 3.沒有侵入性,移植性比較好。什么是沒有侵入性?就是Hibernate采用了pojo對象。所謂的pojo對象就是沒有繼承Hibernate類或實現Hibernate接口。這樣的話,此類就是一個普通的java類,所以移植性比較好。?
? ? 4.支持透明持久化。透明是針對上層而言的。三層架構的理念是上層對下層的依賴,只是依賴接口不依賴具體實現。而Hibernate中的透明是指對業務邏輯層提供了一個接口session,而其他的都封裝隱藏。持久化是指把內存中的數據存放到磁盤上的文件中。
2.4 ?數據庫的選擇
?ORACLE數據庫系統是美國ORACLE公司(甲骨文)提供的以分布式數據庫為核心的一組軟件產品,是目前最流行的客戶/服務器(CLIENT/SERVER)或B/S體系結構的數據庫之一。比如SilverStream就是基于數據庫的一種中間件。ORACLE數據庫是目前世界上使用最為廣泛的數據庫管理系統,作為一個通用的數據庫系統,它具有完整的數據管理功能;作為一個關系數據庫,它是一個完備關系的產品;作為分布式數據庫它實現了分布式處理功能。但它的所有知識,只要在一種機型上學習了ORACLE知識,便能在各種類型的機器上使用它。
?Oracle數據庫最新版本為Oracle Database 12c。Oracle數據庫12c 引入了一個新的多承租方架構,使用該架構可輕松部署和管理數據庫云。此外,一些創新特性可最大限度地提高資源使用率和靈活性,如Oracle Multitenant可快速整合多個數據庫,而Automatic Data Optimization和Heat Map能以更高的密度壓縮數據和對數據分層。這些獨一無二的技術進步再加上在可用性、安全性和大數據支持方面的主要增強,使得Oracle數據庫12c 成為私有云和公有云部署的理想平臺。
選擇ORACLE,是因為其具備一下優勢:
1、處理速度快,非常快。
?? ?2、安全級別高。支持快閃以及完美的恢復,即使硬件壞了 也可以恢復到故障發前的1s。
?? ?3、幾臺數據庫做負載數據庫,可以做到30s以內故障轉移。
?? ?4、網格控制,以及數據倉庫方面也非常強大。
2.5 ?技術選擇方向
? ? 在日常的實際數據庫操作中,因為數據庫架設在服務器上,而服務器的處理能力遠優于客戶端的處理能力,所以更多地把邏輯放在服務端將成為趨勢,而存儲過程就是其中一個常用的項目。
存儲過程(Stored Procedure)是在大型數據庫系統中,一組為了完成特定功能的SQL 語句集,經編譯后存儲在數據庫中,用戶通過指定存儲過程的名字并給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是數據庫中的一個重要對象,任何一個設計良好的數據庫應用程序都應該用到存儲過程。
在大型數據庫系統中,存儲過程和觸發器具有很重要的作用。無論是存儲過程還是觸發器,都是SQL 語句和流程控制語句的集合。就本質而言,觸發器也是一種存儲過程。存儲過程在運算時生成執行方式,所以,以后對其再運行時其執行速度很快。SQL Server 2005 不僅提供了用戶自定義存儲過程的功能,而且也提供了許多可作為工具使用的系統存儲過程。
同樣,觸發器也是很重要的對象。
? ? 觸發器是一種特殊類型的存儲過程,它不同于我們前面介紹過的存儲過程。觸發器主要是通過事件進行觸發而被執行的,而存儲過程可以通過存儲過程名字而被直接調用。當對某一表進行諸如Update、 Insert、 Delete 這些操作時,SQL Server 就會自動執行觸發器所定義的SQL 語句,從而確保對數據的處理必須符合由這些SQL 語句所定義的規則。
觸發器的主要作用就是其能夠實現由主鍵和外鍵所不能保證的復雜的參照完整性和數據的一致性。除此之外,觸發器還有其它許多不同的功能:
(1) 強化約束(Enforce restriction)
觸發器能夠實現比CHECK 語句更為復雜的約束。
? ? (2) 跟蹤變化Auditing changes
? ? 觸發器可以偵測數據庫內的操作,從而不允許數據庫中未經許可的指定更新和變化。
? ? (3) 級聯運行(Cascaded operation)。
? ? 觸發器可以偵測數據庫內的操作,并自動地級聯影響整個數據庫的各項內容。例如,某個表上的觸發器中包含有對另外一個表的數據操作(如刪除,更新,插入)而該操作又導致該表上觸發器被觸發。
? ? (4) 存儲過程的調用(Stored procedure invocation)。
? ? 為了響應數據庫更新,觸發器可以調用一個或多個存儲過程,甚至可以通過外部過程的調用而在DBMS(數據庫管理系統)本身之外進行操作。
由此可見,觸發器可以解決高級形式的業務規則或復雜行為限制以及實現定制記錄等一些方面的問題。例如,觸發器能夠找出某一表在數據修改前后狀態發生的差異,并根據這種差異執行一定的處理。此外一個表的同一類型(Insert、 Update、 Delete)的多個觸發器能夠對同一種數據操作采取多種不同的處理。
? ? 總體而言,觸發器性能通常比較低。當運行觸發器時,系統處理的大部分時間花費在參照其它表的這一處理上,因為這些表既不在內存中也不在數據庫設備上,而刪除表和插入表總是位于內存中。可見觸發器所參照的其它表的位置決定了操作要花費的時間長短。
?
3 ?需求分析
3.1 ?編寫目的
本土地項目管理系統在可行性研究的基礎上,是為了進一步明確土地項目管理系統的軟件需求,以便安排項目規劃和進度,組織軟件開發和測試,撰寫本文檔。
本文檔供項目經理、設計人員、開發人員參考。
3.2 ?系統需求分析簡述
? ? 土地檔案管理系統是一個復雜龐大的系統,整體需求是要通過信息化的手段完成傳統檔案管理工作向新技術手段的遷移。考慮到土地檔案管理工作的保密性,對此系統應當按照用戶級別進行授權,以及對系統的安全性進行一系列的設計。在具體功能上,要實現的有用戶的管理、檔案的管理、系統的維護等功能。
? ? 但是,這樣的一個龐大系統,并不是以一人之力可為之的。所以現在從龐大的需求中抽離出出最基礎最核心的對檔案的增刪改查,以及其它部分以實現。
3.3 ?系統需求分析詳細描述
3.3.1 ?用戶管理模塊
? ? 若要使用該系統,需注冊用戶登錄系統才可以使用。
? ? 用戶管理模塊主要包括登錄和注冊兩個部分,只是簡單的實現其功能,對權限分配等暫無需求。
? ? 注冊模塊實現用戶注冊功能。
? ? 登陸模塊實現用戶登錄功能。
3.3.2 ?文件查找模塊
? ? 文件查找模塊,是要根據文件號進行文件的查找。
3.3.3 ?文件添加模塊
? ? 在需要向系統中添加文件的時候,通過該模塊手工錄入文件各項詳細信息,完成對文件的錄入。
3.3.4 ?文件修改模塊
根據文件號查找到文件,在能看到該文件信息的情況下,進行文件信息的修改操作,修改完成后進行儲存。
3.3.5 ?文件刪除模塊
通過文件號查找到文件,然后進行文件的刪除操作。
?
4 ?總體設計
本系統是采用B/S體系的三層結構,使用java編程語言,應用Hibernate開發模式。三層結構即Model層、View層和Service層的分離,層次分明的設計結構讓整個系統顯得層次分明,在實現和后期維護等方面將帶來極大的方便。
總體來說,對于土地檔案管理系統主要是實現用戶管理方面即用戶的登錄和注冊功能,以及對于文件檔案的管理工作,即對文件檔案的增刪改查工作。在實現這些基本功能的基礎上,在實現一些其他的功能,諸如頁面的導航顯示。
4.1 ?系統功能模塊結構設計
? ? 本系統主要分為兩大功能模塊,即用戶管理模塊和檔案管理模塊,這兩個模塊下又細分為多個子模塊,本系統的功能模塊結構如圖4-1所示。
?
圖4-1系統總體功能框架圖
4.2 ?數據庫設計
表結構設計:
all_categories表是所有檔案文件表父表信息,本表結構如圖4-2所示。
?
圖4-2檔案父表設計圖
user表是用戶表信息,本表結構如圖4-3所示。
?
圖4-3用戶表設計圖
files表是土地登記表信息,本表結構如圖4-4所示。
?
圖4-4檔案表設計圖
all_categories表是土地類別相關的表,可用于后期的檔案歸屬方面工作的管理,本表的結構如圖4-5所示。
?
?圖4-5土地類別表設計圖
? ? 土地檔案管理系統的數據庫存放應與傳統的存檔方式相似,有兩種方案的選擇:第一種是只有一個父表,也只有一個子表,父表中存放各層父結點,以本表自聯結的方式可查詢,而子表中存放所有最底層目錄的文件,通過主外鍵的方式關聯;第二種是每級目錄都建一張表,多張表將文檔的層次關系明確表示出來。
? ? 鑒于本設計是將該系統的部分功能實現出來,在數據量不夠大的情況下選擇第二種設計方式,以更直觀的展現數據。而實際中將所有數據放在一個Model中的方式更加高效。
?
5 ?詳細設計
5.1 ?登陸模塊設計
Login.java
? ? 接受登錄頁面傳送來的用戶登錄信息,對輸入信息訪問數據庫判定是否允許登陸,允許則調到主頁面,否則跳轉回之前的登錄頁面。
UserServerImpl.java
? ? 繼承IUserServer接口,實現login()方法,開啟數據庫事務,調用dao層方法,實現登錄功能。
UserDaoImpl.java
? ? 繼承IUserDao接口,通過對數據庫的直接操作,將數據傳輸給上層,完成登錄功能。
5.2 ?注冊模塊設計
Register.java
? ? 接受注冊頁面所傳送來的用戶注冊信息,對輸入的信息傳給server層進行邏輯處理。
UserServerImpl.java
? ? 繼承IUserServer接口,實現register()方法,開啟數據庫事務,調用dao層方法,實現注冊功能。
UserDaoImpl.java
? ? 繼承IUserDao接口,通過對數據庫的直接操作,將數據傳輸給上層,完成注冊功能。
5.3 ?文件查詢模塊設計
FindFiles.java
? ? 接受查詢頁面傳來的土地號數據,以土地號信息為依據,調用server層的方法進行處理。
FileServerImpl.java
? ? 繼承IFileServer接口,實現getAllFiles()方法,開啟數據庫事務,調用dao層方法,實現按土地號查詢功能。在接收到dao層傳回的數據后將數據傳給頁面顯示。
UserDaoImpl.java
? ? 繼承IFileDao接口,通過對數據庫的直接操作,將數據傳輸給上層,完成查詢功能。
5.4 ?文件添加模塊設計
AddFiles.java
? ? 接受添加頁面傳來的土地文件信息,調用server層的方法進行處理。
FileServerImpl.java
? ? 繼承IFileServer接口,實現addFile()方法,開啟數據庫事務,調用dao層方法,先驗證數據庫是否有相同信息,在沒有的情況下向數據庫中添加數據。并返回顯示添加成功后的數據庫中存儲的信息。
UserDaoImpl.java
? ? 繼承IFileDao接口,通過對數據庫的直接操作,執行對數據庫的增加操作,完成添加新文件功能。
5.5 ?文件修改模塊設計
UpdateFiles.java
? ? 接受修改頁面傳來的土地文件信息,調用server層的方法進行處理。
FileServerImpl.java
? ? 繼承IFileServer接口,實現addFiles1()方法,開啟數據庫事務,先驗證對象是否為空,在非空的條件下,調用dao層的方法。并返回顯示修改成功后的數據庫中存儲的信息。
UserDaoImpl.java
? ? 繼承IFileDao接口,通過對數據庫的直接操作,把新數據覆蓋原始數據,完成修改文件的功能。
5.6 ?文件刪除模塊設計
DelFiles.java
? ? 接受刪除文件的請求,調用server層的方法進行處理。
FileServerImpl.java
? ? 繼承IFileServer接口,實現delFiles()方法,開啟數據庫事務,先驗證對象是否為空,在非空的條件下,調用dao層的方法。并返回顯示刪除的結果。
UserDaoImpl.java
? ? 繼承IFileDao接口,通過對數據庫的直接操作,把數據刪除。
6 ?系統實現
6.1 ?用戶相關
6.1.1 ?登陸界面
登錄功能介紹:
上面的截圖為登錄頁面的一部分,通過該頁面實現登錄過程。當使用者有一個用戶的時候,可以通過其已擁有的用戶名和密碼來進行登錄,只有在用戶名和密碼都正確的時候才可以成功登陸。如果沒有本系統的賬戶時,可以通過注冊功能注冊一個用戶,然后通過注冊完成的用戶登錄本系統。
? ? 系統登陸界面如圖6-1所示。
?
圖6-1登陸界面
登錄功能核心代碼:
Login.java
package com.ex.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.ex.bean.Users;
import com.ex.common.BeanFactory;
import com.ex.common.exception.UserServiceException;
import com.ex.service.imp.UserServiceImpl;
public class Login extends HttpServlet {
?? ?private static final long serialVersionUID = 1L;
?? ?private ?UserServiceImpl ?service = (UserServiceImpl)BeanFactory.getBean("userService");
? ? public Login() {
? ? ? ? super();
? ? }
?? ?protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
?? ??? ?String name = request.getParameter("username");
?? ??? ?String password = request.getParameter("password");
?? ??? ?try {
?? ??? ??? ?Users users = service.login(name, password);
?? ??? ??? ?HttpSession session = request.getSession();
?? ??? ??? ?session.setAttribute("users", users);
?? ??? ??? ?request.getRequestDispatcher("/host.jsp").forward(request, response);
?? ??? ?} catch (UserServiceException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ??? ?request.setAttribute("message", "<script laguage='JavaScript'> alert('用戶名或密碼錯誤,請重新輸入!') </script>");
?? ??? ??? ?request.getRequestDispatcher("/login.jsp").forward(request, response);
?? ??? ?}
?? ?}
?? ?protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
?? ??? ?doGet(request, response);
?? ?}
}
6.1.2 ?注冊頁面
注冊功能介紹:
? ? 當某人要使用本系統的時候,需要有一個賬戶來進行登錄,登陸之后才可以進行系統的操作。當沒有賬戶時,可以快捷的通過登錄頁面的注冊鏈接進入系統的注冊頁面,輸入一個任意的符合規則的用戶名和密碼,以及一些其他的個人信息。當填寫完信息之后想要對已填寫的信息進行重新編輯,可以點重置按鈕清空已填寫的信息,然后可以重新錄入你個人的注冊信息。注冊成功后則會成功跳轉到登錄頁面使用新注冊的賬戶進行登錄。
? ? 用戶注冊頁面如圖6-2所示。
?
圖6-2注冊頁面
注冊功能核心代碼:
Register.java?
package com.ex.web;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.Session;
import com.ex.bean.Files;
import com.ex.bean.Users;
import com.ex.common.HibernateSessionFactory;
import com.ex.common.exception.UserServiceException;
import com.ex.dao.imp.UserDaoImpl;
import com.ex.service.imp.UserServiceImpl;
public class Register extends HttpServlet {
?? ?private static final long serialVersionUID = 1L;
?? ?private UserServiceImpl service = new UserServiceImpl();
?? ?protected void doGet(HttpServletRequest request,
?? ??? ?HttpServletResponse response) throws ServletException, IOException {
?? ??? ?request.setCharacterEncoding("UTF-8");
?? ??? ?String name = request.getParameter("name");
?? ??? ?String password = request.getParameter("password");
?? ??? ?String email = request.getParameter("email");
?? ??? ?String zip = request.getParameter("zip");
?? ??? ?String address = request.getParameter("address");
?? ??? ?String phonenumber = request.getParameter("phonenumber");
?? ??? ?// System.out.println(name + address + telephone);
?? ??? ?Session session = HibernateSessionFactory.getSession();
?? ??? ?List list = session.createQuery("from Users").list();
?? ??? ?
?? ??? ?Users users = new Users();
?? ??? ?users.setId(list.size()+1);
?? ??? ?users.setAddress(address);
?? ??? ?users.setEmail(email);
?? ??? ?users.setPassword(password);
?? ??? ?users.setName(name);
?? ??? ?users.setZip(zip);
?? ??? ?users.setPhoneNumber(phonenumber);
?? ??? ?try {
?? ??? ??? ?service.register(users);
?? ??? ??? ?request.getRequestDispatcher("/login.jsp").forward(request,
?? ??? ??? ??? ??? ?response);
?? ??? ?} catch (UserServiceException e) {
?? ??? ??? ?request.getRequestDispatcher("/register.jsp").forward(request,
?? ??? ??? ??? ??? ?response);
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ?}
?? ?protected void doPost(HttpServletRequest request,
?? ??? ??? ?HttpServletResponse response) throws ServletException, IOException {
?? ??? ?doGet(request, response);
?? ?}
}
6.2 ?檔案相關
6.2.1 ?檔案列舉
代碼列舉功能的介紹:
? ? 在左側的導航樹中點擊想要查詢的文件檔案分類的模塊,進入其功能的詳細顯示頁面。在這個頁面上將直接顯示本分類下所有文件的基本信息,通過對于本頁面顯示的文件檔案的簡要信息,了解其基本信息之后可以進行后續操作。比如要進行檔案的查詢時需要先知道其土地號,通過土地號來進行土地檔案的查詢。
? ? 檔案列表頁面如圖6-3所示。
?
圖6-3檔案列表
檔案列舉功能核心代碼:
java.sql.Connection sqlCon;?
java.sql.Statement sqlStmt;?
java.sql.ResultSet sqlRst;?
java.lang.String strCon;?
java.lang.String strSQL;?
int intPageSize;?
int intRowCount;
int intPageCount;?
int intPage;?
java.lang.String strPage;
int i;
intPageSize = 5;
strPage = request.getParameter("page");
if(strPage==null){
intPage = 1;
}
else{
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1;
}
java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
strCon = "jdbc:oracle:thin:@localhost:1521:orcl";
sqlCon = java.sql.DriverManager.getConnection(strCon,"dsg","dsg");
sqlStmt=sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
strSQL = "select gnum,squre,type,usedfor,people,location from files";
sqlRst = sqlStmt.executeQuery(strSQL);
sqlRst.last();
intRowCount = sqlRst.getRow();
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
if(intPage>intPageCount) intPage = intPageCount;
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>檔案分頁顯示</title>
</head>
<body>
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<th>土地號</th>
<th>面積(單位:平方米)</th>
<th>土地類型</th>
<th>土地用途</th>
<th>擁有者</th>
<th>地址</th>
</tr>
<% if(intPageCount>0){
sqlRst.absolute((intPage-1) * intPageSize + 1);
i = 0;
while(i<intPageSize && !sqlRst.isAfterLast()){ %>
<tr>
<td width="150" align="center"><%=sqlRst.getString(1)%></td>
<td width="150" align="center"><%=sqlRst.getString(2)%></td>
<td width="150" align="center"><%=sqlRst.getString(3)%></td>
<td width="150" align="center"><%=sqlRst.getString(4)%></td>
<td width="150" align="center"><%=sqlRst.getString(5)%></td>
<td width="150" align="center"><%=sqlRst.getString(6)%></td>
</tr>
<%
sqlRst.next();
i++;}}
%>
</table>
第<%=intPage%>頁 共<%=intPageCount%>頁 <%if(intPage<intPageCount){%><a href="sele.jsp?page=<%=intPage+1%>">下一頁</a><%}%> <%if(intPage>1){%><a href="sele.jsp?page=<%=intPage-1%>">上一頁</a><%}%>
</body>
</html>
總結
以上是生活随笔為你收集整理的基于java的土地档案管理系统设计(含源文件)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL笔记-SQL语句中可以使用单引
- 下一篇: springboot 获取项目路径_怎样