第一章 緒論
1.1研究背景和意義
現代信息技術的發展,使傳統的國家、民族界限變得日益模糊,使整個世界 變成了一個小小的“地球村”,從而使世界經濟發展呈現出明顯的全球化趨勢。 隨著全球經濟一體化發展的不斷深入和完善,企業的規模增長的越來越迅速,大 型跨國公司越來越多。然而在不斷的擴張背后,國外子公司數量持續攀升,監督 成本不斷上升,信息的缺乏和扭曲成為制約公司發展的一個新的瓶頸。企業管理 人員能否及時了解公司現狀,做出正確的決策成為公司進一步發展的關鍵[1],而正 確決策的取得又是建立在信息實時獲取的基礎上的。“信息是企業的生命”這個 流行說法,表明了的信息巨大的功能,如果能獲得正確及時的信息,管理者做決 策的正確率會大大提高。
信息管理系統,是一個由計算機及其他外圍設備等組成的來對某一具體行業 或者公司的信息進行收集和管理的系統。在目前計算機和網絡廣泛利用的時代, 它能夠最大限度的利用現代計算機和網絡技術加強企業的信息管理,通過對企業 的各種資源包括設備 、人力、成本、技術等資源進行調查了解,并建立起正確的 記錄,通過一定的規則對記錄進行進一步的使之成為對企業管理有用的數據提供 給企業的管理人員,使其能共根據這些記錄做出正確的決策,從而推動了企業管 理水平的提高和經濟效益的提升[2]。此外,管理者通過企業信息管理系統,可以實 時監督和控制企業的資源,不斷改善工作流程和管理質量,為企業的發展創造更 大的效益。
遠洋商貿有限公司原本是一家銷售單一種類汽車零部件的小型公司,公司成 立初期規模有限,其進貨銷售等管理主要由人力來管理。但是隨著市場的不斷拓 展,其供應的產品種類不斷增加,產品的供應商和客戶的數量也在不斷的攀升。 單靠人力來對整個公司的進貨、銷售、庫存、員工管理等進行管理已經不可能滿 足公司成長的需要,不僅經常會出現錯誤,而且各個流通環節之間通常由不同部 門進行管理,經常會出現溝通不及時,整個流程不能統一協調調度的問題。為此, 遠洋商貿有限公司建立以一套適合自己的信息管理系統是十分有必要的。
企業管理信息系統的優勢主要在于能夠用電腦代替人工,完成海量信息的記 錄,準確的對信息進行處理,使企業的各項操作更加方便、數據保存更加完整、 管理更加透明[4]。遠洋商貿有限公司要求商品進貨、銷售、倉儲以及員工的信息管 理等工作為一體,是一項準確性、質量和實時性要求都非常高的項目。因而,企 業信息管理系統成為實現企業管理的首選。具體表現在:
一、 提高企業商品管理質量
在企業中,尤其是像遠洋商貿有限公司這樣有一定規模的企業中,商品貨物 比較多,如果其銷售信息不能及時的傳達到倉儲系統以及進貨系統,則整個企業 的進貨數量就會受到影響。過多的進貨會導致產品的積壓,是企業資金的浪費; 過少的進貨可能會導致產品的脫銷,影響自己的銷售。信息管理系統則可以使企 業對自己的貨物信息進行統一的調度管理,有效的避免了上述情況的出現。
二、 提高企業與其他企業進行合作的質量
企業信息管理系統通過對遠洋商貿有限公司的客戶和供應商進行統一的管 理,為企業選擇客戶和供應商時提供了他們的信用記錄、交易記錄、賒賬記錄等 完整信息,從而為企業的合作選擇、場點分布等提供了客觀的數據支持。
三、 提高企業人力資源的管理質量
通過企業信息管理系統能夠使得上層管理者可以更迅速的查詢到自己所需的 人事信息,如:各部門人事分配,人事調度,年終人事考核等。使企業的管理更 加便捷迅速,各個操作流程也更加的公開透明。大大減少了人力資源部門的工作 量,進一步的提高了企業內部數據的準確性和完整性。
四、 經濟成本低,適應低碳社會需求
相對于傳統人工進行管理的方法,企業信息管理系統能夠提高工作效率,減 少交叉管理中的重復工作量,極大的降低的出錯的概率[5],在為企業減少管理成本 的同時也推動了企業的無紙化辦公,更加的適應社會的低碳需求。
1.2國內外研究現狀
管理信息系統(Management Information Systems,MIS)的概念被提出的很早并 且隨著計算機的不斷普及和計算機應用技術的不斷完善和發展,管理信息系統的 內涵和外延從一定程度上得到拓展。
早在1970年,瓦爾特.肯尼萬(Walter T. Kennevan)就從管理的角度給管理信 息系統下了定義:“在正確的時機下,通過書面的或口頭的方法來給公司的管理 者、公司職員或者其他人員提供企業在過去現在的相關信息,并通過已有的信息 來預測未來幫助企業相關人士做正確決策的系統[6]。”可以從定義中看出,最初的 管理信息系統主要是用來支持企業信息決策的。
隨著科技的不斷進步和技術的不斷發展,在《中國企業管理百科全書》中, 將管理信息系統的定義為:“管理信息系統是一個由管理者、計算機系統并加上 相匹配的其他管理設備等組成的,可以進行對公司過去、現在的所有的信息進行 收集和存儲,并對數據進行加工和維護。通過控制企業的信息來控制企業的行為, 利用現有的數據為管理者提供現在企業信息,并通過此信息預測未來,幫助企業 管理者做出決策[7]。”
在國外,信息管理管理系統已經有四五十年的歷史。美國通用電氣公司在1954 年安裝了第一臺用于信息管理的數據處理計算機,成為企業應用信息管理系統的 先例。但這個系統只支持批處理的方式,在當時只能用來計算單項工資和統計企 業的數據。從此之后各種信息管理系統不斷涌現,出現了將單用戶管理形式過渡 到面向終端的計算機網絡MRP—II系統,具備了為管理者提供更好的決策分析的能 力。它將計算機網絡、數據庫處理和經濟管理數學模型的優化計算結合起來,實 現了企業信息的實時處理,如訂票業務、銀行存取款業務、信息搜索等管理系統。 在九十年代,出現的企業資源管理計劃(ERP系統)又把各方信息,如客戶信息、 制造商信息、倉庫庫存信息、物流信息、市場信息等各有效信息融入了管理系統[8]。 而在ERP系統上發展起來的信息管理系統則更加注重企業管理的整體性,通過統一 規劃的數據庫及功能完善的數據庫管理系統來保證數據共享的一致性和兼容性, 同時減少了數據的冗余性。隨著互聯網技術的不斷發展,如今的信息管理系統更 著重于企業的內部和外部信息的收集[9],為企業管理的重要決策提供預測。在許多 發達國家,完善先進的管理系統體系已經為企業帶來了巨大的經濟效益和社會效 益。
在我國,發展信息管理系統也受到了高度的重視,早在20年前就開始不斷引 進國外發展比較成熟的信息管理系統。但是在國內的實際應用過程中,由于國情、 操作流程不同等原因,引進的系統并沒有達到預期的效果。為了開發出適合中國 的信息管理系統,在80年代末國家就在清華大學成立了 CIMS試驗工程研究中心, 并在全國13個地區建立了工程的應用試點。在1990年11月由機械部北京機械工業 自動化所的溫泳棠教授出版了第一本專門的企業資源管理的專著。在90年代中國 清華大學國家CIMS實驗室所研發的管理系統獲得世界的認可。從此,中國的信息 管理系統的發展與國際接軌。根據國家軟件工業應用現狀統計,如今中國大型企 業有95%以上使用信息管理軟件。所以要想創建一個具有現代管理形式的企業,一 個先進的信息管理系統是必須之物。
由于管理信息系統的功能、目標、特點和服務對象不同,對管理信息系統的 研究從層次上可以分為業務信息系統、管理信息系統和決策支持系統。從系統的 功能和服務對象,可分為國家經濟信息系統、企業管理信息系統、事務型管理信 息系統、行政機關辦公型管理信息系統和專業型管理信息系統等[10]。
1、 國家經濟信息系統
國家經濟信息系統一般指的是一個包含了國家的各方面的信息,包括經濟和 國家統計部門在內的綜合的信息管理系統。通過國家經濟信息系統,國家管理部 門可以橫向了解整個國家的各個經濟方面的信息,縱向可以了解每個省市、地市、 各縣的經濟發展狀況,為政策的實施提供數據支撐。
2、 企業管理信息系統
企業管理信息系統主要是面向與企業的數據統籌。在企業中,需要對生產、 銷售、產品等各個環節進行統一的規劃和管理,并通過過程來為企業的生產監控 提供信息,并在此基礎上為企業提供預測和決策支持的功能。目前,由于企業的 復雜的度不斷的提高,這個管理信息系統提供了較為典型的應用場景和廣闊的發 揮余地,目前企業管理信息系統是應用的最廣泛的信息管理系統。
3、 事務型管理信息系統
事務型管理信息系統的典型應用是企業或者機關的日常事務處理,如醫院的 藥品管理系統、省市的人事管理系統管理系統、學校圖書館圖書管理系統等。由 于各個機關中的功能需求不同,這些管理系統的實現方式差別很大,但其主要功 能還在于管理事業單位中的基本信息,較少用到決策管理的功能,所以事務性管 理信息系統要求有較好的實時性和并發性。
4、 專業型管理信息系統
專業型管理信息系統一般應用于特定行業和領域,如城鎮居民管理系統、國 家房屋信息管理系統等。通常這類信息系統都有很強的專業性,主要功能是儲存 和記錄信息,功能較為單一,在建設過程中所用到的技術也相對簡單。另一類大 家比較熟悉的的管理信息系統如鐵路訂票管理信息系統、股票管理信息系統、通 訊處理信息系統等,這些系統的特點是用戶比較多,用戶的范圍也比較廣泛,而 且系統要處理的邏輯也很復雜,具有很多管理信息系統所具有的特質,所以普遍 被稱為”綜合型”信息系統。
雖然我國管理信息系統應用的較為普遍,但是我國信息管理系統的發展的起 步必經比較晚,發展的還不是很平衡,在我國信息管理系統的發展方向主要是:
1、 管理信息系統環境由單機的應用處理向多臺機器共同參與業務的處理發 展,網絡結構主要從單處理機服務器發展到客戶機/服務器結構然后逐步向到瀏 覽器/服務器模式發展。
2、 由單一的管理系統(人事系統、辦公系統、進貨系統等)向面向整個企業 信息的綜合的管理信息系統發展。
3、 在管理系統的建設中添加了的先進技術,方便了應用。如與手機系統、郵 件系統相連等。
4、 由僅僅用來記錄企業的信息向深入挖掘企業數據向為企業管理者決策提供 企業數據支持發展。
5、 數據庫服務有單一的數據庫服務器向多數據庫服務器發展。
在我國信息管理系統的發展中,也出現了不少的問題:從客觀方面來說,主 要是計算機和硬件的不斷發展使得剛開發出來的系統就已經落后了。再一方面就 是開發工具的簡單化,使得開發效率低下。還有就是多媒體技術、WEB技術的不斷 發展,用戶對于應用系統的相互性要求越來越高,現在主流的信息管理系統的架 構和邏輯已經遠遠的落后于客戶的真正需求。從另一方面來說,主要是現代企業 的管理者對于建設管理信息系統的意義不甚了解,對于建設管理信息系統的熱情 不高。其次是缺乏素質較高的復合型人才,系統分析人員與用戶的交流部夠充分, 用戶需要不明確。最后就是在現代的計算機軟件企業中,標準不統一,代碼的質 量較差,而且存在重復開發的現象。
根據現有信息管理系統的開發經驗,在信息管理系統開發的過程中,要注意 以下幾個原則:第一是更新原則,現在的計算機技術發展突飛猛進,在構建管理 信息系統時要注意運用新技術,是信息管理系統有一定的先進性。 當然,這個也 不是要求我們的技術一定是最先進最頂尖的,但是技術的發展是不斷向前的,較 為新的解決方案相對于較舊的方案來說是有一定的優勢的。但是技術的選擇也要 根據自身公司的需求,有些較新的技術解決方案是較好,但是犧牲了穩定性,對 于公司來說也是不能接受的。第二是需求要明確的原則,企業經過幾百年的發展, 其內部的管理和生產方式是復雜的,而信息管理系統只有幾十年的發展歷史,并 不能很好地完全合理的處理好公司內部的問題,所以要在前期將公司的需求把握 好,才能將管理信息系統建設好。 而且現在很多公司都有自己的信息管理系統, 但是系統跟系統之間差別相對較大。信息管理系統是為企業的管理做基礎的,所 以要以企業的基本業務流程為出發點來建立需求。第三是發展原則,隨著時間的 增長,技術在變化,企業的管理方式也在不斷地變化,信息系統也需要隨著公司 管理和計算機技術的不斷變化而不斷地更新變化。第四是實用性原則,雖然我們 建設系統所用的技術是先進的,但是也不能一味的追求先進,要根據建設的系統 的本身的特點選擇對應的建設架構和技術,使其達到經濟的最合適 [11]。第五要注 意將更加成熟的系統體系結構和不斷發展變化的先進管理思想相結合。信息管理 系統通過技術不斷地成熟能夠進行更大容量的集成,對系統做出更好的優化實現, 再將先進的管理理念融入系統中,使得管理信息系統的組成模塊能夠更加靈活的 組合,更好地為企業服務。最后是要注意系統與其他系統的集成,因為在建設管 理信息系統的企業中,可能會有原先遺留下的系統,通過對遺留系統的改造升級 來進一步的減少管理信息系統減少的工作量,提高了工作效率,為企業節約了建 設成本。另外信息系統是企業管理中較為基礎的系統,很有可能跟辦公系統、日 志系統等其他系統結合,所以在設計系統的時候要盡量考慮到接口的可用性,為 其他系統的調用做好基礎。
1.3主要研究內容與內容安排
本文首先研究了建立企業信息管理系統所需要的各種技術,采用了J2EE作為 系統的開發平臺,然后對遠洋商貿有限公司的現狀進行分析,得出公司的需求; 在需求的基礎上對整個信息管理系統進行了模塊和功能的劃分,并完成了總體設 計;根據總體設計對系統的數據庫設計和詳細設計進行了闡述,并實現了該系統。
本文的內容主要由以下幾個方面組成: 第一章提出問題,分析課題的國內外研究現狀和存在的問題,闡述本文的主 要工作。
第二章技術簡介,介紹了開發系統中主要用到的技術和選擇此種技術的主要 原因。
第三章分析了遠洋商貿有限公司的基本業務和對本系統的業務要求,分析了 系統的性能和非性能需求。并說明了系統開發的環境需求。
第四章討論了系統的總體設計:探討現有信息管理系統以及本系統的特點, 根據對遠洋商貿有限公司的需求分析來并分模塊并分析項目的具體的設計思路。
第五章詳細設計了各個功能模塊的具體實現,并給出系統實現的后臺流程, 最后給出了系統的數據庫設計。
第六章詳述了詳細功能實現:系統中主體部分的功能設計與實現,以及在
MyEclipse中的主要實現代碼數據庫的建立方法及優缺點,并給出本文所使用的數 據庫實現方法。
第七章描述了對整個管理系統的測試。重點以商品模塊為例描述了整個系統 的用例設計和測試過程。
第八章主要為總結與展望。總結了本文所作的工作,并對將來的工作進行了 展望。
1.4本章小結
本節作為文章的首章,主要介紹了本文的研究背景和意義,并介紹了國內外 對本類系統的研究和發展。給出了現在信息管理系統的分類,并借鑒其他信息管 理系統的開發經驗,介紹了信息系統開發原則。最后給出了整個文章的研究內容 和文章的內容安排結構。
第二章 相關技術介紹
2.1平臺介紹
2.1.1J2EE 概述
在1996年,Sun Mircosystems公司推出了Java語言,它是一種純面向對象的語 言。由于Java具有面向對象、可移植性、安全性、并發機制、平臺無光、不依賴于 機器等特點,一經推出,迅速得到廣泛的應用。經過多年的發展,根據應用領域 的不同,Java被劃分為三大平臺[12]:
J2ME――即J ava的微型應用,主要用來開發消費電子產品和嵌入式裝置。
J2SE――即J ava的核心技術,主要提供了編寫桌面/工作站應用程序所必須的 基本功能。
J2EE——即Java的企業應用,主要用來快速的設計、開發、部署企業級應用軟 件。
在現在一個企業合作錯綜復雜的商業模式下,一個優秀的企業級應用軟件應 該可以集成各個合作企業的服務,而J2EE所具備完備的目錄服務支持、高度的安 全服務和溝通各種異構平臺提供了非常方便的手段[13]。基于J2EE來開發的系統在 應用過程中可以完全拋開硬件平臺、操作系統和網絡結構的束縛。只要進行一次 開發就能部署在各種的網絡環境和操作系統之上,大大減少了系統重用的工作量。 除此之外,J2EE還有負載平衡策略,能夠集成多個服務器,并自動優化多個服務 器之間的負載,提高了資源的利用率[14]。
2.1.2J2EE 結構
在早期的企業級應用程序開發時,通常使用的是雙層(C/S)的架構模式,如 圖2-1所示。
在 C/S 的架構模式中基本所有的軟件功能包括圖形界面、數據驗證、業務流 程、數據處理等都會部署在客戶機上,數據統一的存放在數據庫服務器中[15]。它 的優點顯而易見:各種邏輯處理都在同一個進程之中,容易進行開發。并且大多 數的計算工作都由客戶端的PC機來完成,極大的減輕了數據服務器的壓力,客戶
端也能獲得較高的響應速度[16]。
圖2-1 雙層架構模式
但是C/S架構的缺點也是非常明顯的:在客戶端嵌入了大量的代碼,使得客戶 端的功能越來越龐大,從而模塊的之間的耦合度增加,模塊內部的內聚程度逐漸 降低;隨著軟件規模的上升其維護難度也呈指數上升的趨勢,代碼的修改維護變 得困難重重;而且因為所有的程序都安裝在客戶端的PC機器上,一旦要修改程序 中出現的問題,是一件很困難的事情;由于其架構設計是客戶機直接來訪問后臺 數據庫的,沒有任何的安全保障,數據丟失泄露的機會非常的大[17]。
正是因為 C/S 架構的這些局限性,在實際應用中很難有更進一步的發展。因 此在兩層架構的基礎上,對設計思想進行了一定的改進,軟件架構師又提出了三 層架構的概念。其中最重要的改進就是將表現層邏輯和業務層邏輯進行了分離[18]: 將表現層邏輯定位為第一層邏輯,將其部署在客戶端的PC機上;業務層邏輯成為 第二層邏輯,主要部署在一個專用的服務器上;而兩層架構中的數據庫則變為第 三層邏輯。三層架構模式框架如圖2-2所示。
表現層邏輯主要用來為用戶提供圖形交互界面,允許用戶來輸入數據,也可 以將結果展現給用戶;業務層邏輯主要是用來處理業務流程,作為表現層的下層, 業務邏輯層可以用來接收表現層傳來的數據,并對其進行一定的處理,得到計算 結果,同時業務邏輯層作為數據層的上層,能夠從數據庫中取得有效的數據來支 持業務流程的計算,也能夠將用戶的輸入傳送到數據庫中去。數據庫層作為底層 支持,主要還是用來存取數據。
采用了三層架構之后,軟件的性能得到了很大的提高,尤其是在軟件的可復 用方面得到了極大的提高。軟件維護變得方便,安全性也得到了很大的改善。
但是三層架構并非一個最終的優化結果,在三層架構的應用過程中也出現了 很多的問題:軟件的移植性并不十分理想,編程的難度依舊較大,三層架構存在 軟件不兼容的問題等。
由于三層架構這些問題,企業級應用程序的設計思想又慢慢開始向多層架構 進行轉變,基于復雜的分布式網絡應用開始普遍受到人們的歡迎[19]。尤其是在網 絡高速發展的情況下,基于WEB的應用程序因其方便快捷的性能成為人們的新寵。 很多傳統的信息和數據庫系統都被放到互聯網上。基于WEB的多層設計構架如圖 2-3所示。
在多層設計架構中,表示層的客戶端只是用來接收用戶的輸入和輸出結果, web服務層用Servlet等技術來為前端所要顯示的數據做準備。應用服務層顯示了應 用程序整體業務流程的控制,并提供分布式環境的代碼支撐,使應用程序可以跨 平臺進行操作。數據層主要就是提供數據庫的支撐,提供數據的查詢、刪除、修 改等功能。
J2EE便是采用分布式的多層體系架構并通過各個封裝的功能組件來形成程序 的功能劃分。J2EE架構由四部分組成:客戶表示層、WEB應用組件層、企業組件層 和企業信息系統層。一個J 2EE的客戶表示層可以是基于web的,也可以是基于應用 的。都無需安裝多余的軟件即可以進行使用。WEB應用組件層主要是通過JSP和 Servlet來提供相應的服務。其可以動態的顯示數據,具有很好的事務控制和流程控 制的能力,能夠靈活的處理業務流程。企業組件層能夠對業務邏輯進行封裝[20], 從而進一步控制企業的業務流。J2EE企業信息系統層的特點是有數據庫系統的支 持,其所具有的應用組件可以通過數據庫連接來訪問企業信息系統。
圖2-3 多層架構模式
相比于目前主流的集中開發平臺,J2EE的差異性主要是體現在開放性和可移 植性兩方面:
1、 開放性:由于J2EE只是一個平臺的規范,并不涉及實際的產品,所以很多 廠商都可以開發自己的符合J2EE規范的產品來兼容J 2EE。
2、 可移植性:J2EE通過java虛擬機的功能實現了程序的跨平臺操作性,幾乎 任何操作系統都能支持J2EE。尤其在程序要跨用unix或者linux操作系統的時候[21], 都只能選擇J 2EE作為自己的開發平臺。
鑒于以上兩方面,本文采用J 2EE作為系統的開發平臺。
2.2框架介紹
隨著軟件的數量增長,怎樣控制軟件的質量成為人們考慮的問題,而軟件復 用成為軟件質量提高的的一個重要部分,目前人們已經建立了一部分軟件復用的 只是,并且將其不斷發展。現在的軟件復用已經從單純的類庫復用逐漸向面向領 域的企業級應用框架來轉換。Gartner Group認為:“到2003年,會有70%的軟件 建立在類庫或者又類庫所搭建起來的框架等架構的基礎之上來建立的[22] 。”他的話 已經得到了驗證,現在企業級的應用一般都會建立在框架之上。框架,即 framework,就是一組協同工作的類,它們為特定類型的軟件構筑了一個可復用的 設計,這其實就是某種應用的半成品,就是一組組件,通過這些半成品或者組件 可以更加方便、快捷的完成系統。框架是一種特殊的軟件,為軟件開發帶來了高 度的復用性。
目前基于J2EE架構上已開發出許多框架,這大大減輕了開發人員的負擔。現 在對于J2EE的標準已經基本從EJB的重量級框架脫離出來,取而代之的是更加容 易設計、開發、部署和維護的輕量級框架。考慮到系統應用、開發效率、需求變 更、框架的成熟度以及市場的評價等因素,系統采用SSH框架作為系統的基礎框 架。下面對于SSH框架做相應的介紹。
2.2.1MVC 模式
MVC即Model-View-Controller的設計模式,即通過MVC的模式把一個應用 按照輸入流程、控制流程和輸出的流程進行分離成三個層次一一模型層、視圖層、 控制層。
視圖層(View):用戶界面層。其提供了用戶可視化的界面來接受用戶數據并 顯示處理結果,但是本身并沒有邏輯處理的功能。
模型層(Model):業務邏輯層。其封裝的業務邏輯能夠接受視圖層的業務數 據并能夠返回相應的處理結果。這是MVC模式應用的關鍵所在。
控制層(Controller):其用來將視圖和模型進行匹配,使二者協調完成用戶的 請求。
MVC的三層架構通過控制層的協調匹配使得表現和邏輯分離,使一個模型可 以同時為多個視圖提供服務,在提高了程序的重用型和可移植性的同時還使得程 序的維護變得更加方便簡單。MVC的工作原理圖如圖2-4所示。
圖2-4 MVC的工作原理圖
MVC模式也有它的不足之處,因為其三層非常緊密的聯系,視圖和模型缺少 了控制器之后的應用就有限了,在一定程序上削弱了程序的獨立的可重用性[23]。 同時對于比較簡單的應用,如果用 MVC 這種比較復雜的架構反而降低了開發效 率。
2.2.2Struts 框架
Struts架框架是完全按照MVC的模式設計出來的-Struts各個組件在中心控制 器的作用下各司其職,從而流程化的完成各個業務請求,其流程如圖2-5所示。
圖2-5 Struts流程圖
1、 Struts 啟動的同時會調用配置文件 Web.xml 來自動加載程序控制組件 ActionServlet,ActionServlet 則會從 struts 的配置文件 struts-config.xml 中獲得業務 配置信息,并根據配置對ActionMapping進行實例化[24]。
2、 當用戶界面層向業務邏輯層提出請求之后,FilterDispatcher能夠過濾用戶 的請求,如果用戶請求是以.action結尾的,則轉入struts框架來匹配相應的action, 并將請求信息發送給相應的Actiono
3、 Action接到請求之后會調用自身的excute()方法,對業務進行處理,并返 回一個ActionForward對象來指向JSP組件,同時生成動態網頁來顯示給用戶。
Struts除了能夠支持JSP作為自己的前臺開發語言之外,還提供了豐富的標簽 庫,通過對 JSP 的標簽庫進行擴展,不僅能夠能大大提高開發效率,還能方便的 從一個項目中移植到其他的項目來,增強了系統的重用性[25]。
Struts 不僅完全實現了 MVC 的設計模式,而且其作為開源框架,使得開發者 能夠深入細致的了解其內部實現原理。用Strust作為應用程序開發框架,使開發者 不再過多的關注程序結構,從而投入更多的經歷到業務流程的開發中來。
2.2.3Hibernate 框架
隨著面向對象的思想廣泛被接受,越來越多的企業采取面向對象的開發方式。 然而現在所用的大多數數據庫還停留在關系型數據庫階段,不能很好的支持面向 對象的數據存儲,從而成為面向對象編程應用發展的一個瓶頸。而Hibernate技術 能夠使面向對象下編寫的程序很平滑的轉變為存儲在數據庫中的關系數據,很好 的解決的了面向對象數據和關系型數據的轉化問題。
Hibernate是一個開放源代碼的ORM (對象關系映射)工具,是一個獨立的對 象持久層的框架。Hibernate將JDBC做了輕量級的封裝,可以很簡單的應用到任 何涉及到JDBC的開發的環境中。
雖然Hibernate的執行過程依舊依賴SQL語言和JDBC編程接口,但是他已經 將這二者進行了做了很好的封裝并對外提供統一的對象數據接口[26],使得開發人 員可以很容易的進行操作。
Hibernate 一共有 5 個核心接口,分別為:Session、SessionFactory、Transaction、
Query 和 Configurationo Hibernate 的體系結構如圖 2-6 所示:
圖2-6 Hibernate體系結構
1、 Session接口:對象持久化操作,是Hibernate中用的最多的一個接口,主 要能夠完成與數據庫的交流:數據的查詢,插入、刪除、修改。雖然在實際應用 中會建立很多的Session來對數據庫操作,但是Session接口作為一個輕量級的類, 創建和刪除的過程并不會消耗很多的資源。
2、 SessionFactory 接口:主要來完成 Hibernate 的初始化過程和創建 Session 對象。但是SessionFactory是重量級的,創建和刪除都非常耗費資源,所以一般在 一個應用程序中只建立一個SessionFactory,但是如果程序需要同時訪問多個數據 庫,則每個數據庫都要建立一個SessionFactory的實例。
3、 Transaction接口:主要用來實現數據庫操作中的事務性操作。但是也可以 用自己的寫的事務處理來取代這個接口的功能。
4、 Query接口:主要用來實際控制查詢的過程。它包含了一個HQL (Hibernate Query Language)來進行查詢,對于不熟悉SQL語言的程序來說這提供了很大的 方便。另一方便,HQL語言是由SQL語言提取出來的,更加適應Hibernate的構 架,提高了 Hibernate的健壯性。
5、 Configuration 接口:主要用來配置 Hibernate,創建 SessionFactory 對象。 當Hibernate啟動時,Configuration類就會啟動并讀取配置文件,然后創建 SessionFactory 對象。
在Hibernate3中,為了盡量減少性能上的開銷,Hibernate設計了延遲加載的 機制。主要是用在多對一和多對多的關系映射中,在調用Load方法的時候,并不 會立即發出sql語句,而是只加載一個代理對象,當程序執行真正調用的時候,再 來創建實際對象。但是延遲加載的有效期是一個Session,當Session關閉時,就會 報錯。所以在設計Hibernate時,在相應的實體映射配置文件中將要延遲加載的實 體對象的延遲加載屬性設置為falseo
2.2.4Spring 框架
在J2EE應用初期,文件配置工作非常繁重,在開發設計中要嚴格遵守上層的 各種不同類型的應用接口,使得開發工作變得很枯燥,而人員的工作效率十分低 下,Spring的出現則解決這個問題。
Spring 框架采用了分層架構的體系,用戶可以根據自己的需要選擇對應的組 件。它能夠以一個統一高效的方式來組織整個應用程序,將各個分散的框架糅合 在一起,形成一個更加完備的系統框架,其主要有 7 個核心模塊組成,分別為: 核心容器部分、上下文部分、數據存取對象部分、對象關系映射部分、AOP支持 部分、WEB部分、WEB MVC部分[27]。Spring模塊構成如圖2-7所示。
1、 核心容器部分(Spring Core):這個是Spring框架的核心內容。它通過工 廠模式實現了一個BeanFactory。BeanFactory定義了控制反轉(IOC)最基本的 服務和最基本的約束規范。
2、 上下文部分(SpringContex):主要來負責回應給向自己發送請求的服務的 信息,Spring上下文包括企業服務,例如電子郵件、JNDI、EJB、國際化、調度 和校驗功能。
S ip mi ng Core Supporting utlilies
B«a-| con lamer
圖2-7 Spring模塊構成
3、 數據存取對象部分(Spring DAO): JDBC DAO是將不同對象包裝為不同 的對象類,在請求的時候可以一起將其請求返回。通過這個層次信息,可以很清 楚的分離不同數據庫供應商的錯誤信息,從而大量簡化為發現異常解決異常而編 寫的大量代碼,為解決異常問題提供了極大方便。
4、 對象關系映射部分(Spring ORM): Spring通過復用了很多持久化的請求 框架,從而可以很好地處理很多數據請求,其中包括jdbc請求、Hibernate數據持 久化請求和iBatis的數據持久化請求。這些所有的持久化請求都是建立在Spring 的事務處理功能和數據持久化層的異常情況處理機制來做的。開發人員可以很 方便的來將這些映射和其他的功能配合使用。
5、 AOP支持部分(Spring AOP):主要能夠通過邏輯上的分層來使自己本身 的代碼受到污染。通過配置管理特性,Spring AOP模塊中面向方面的編程功能將 能夠很容易的表達、展現和擴展自己想要表達的功能含義。尤其在異常處理的過 程中,AOP通過錯誤代碼的不同信息來攔截不同的異常,從而進行智能分類處理。
6、 WEB部分(Spring Web):由圖可以看出Web部分是處在上下文部分的之 上面,她的作用就是可以將上下文模塊中收到或者處理的請求發送給 Web 的應用 程序,同事也將 Web 的應用程序的的請求和用戶所提供的請求來發送給上下文部 分,讓上下文部分來調用其他的相對應的部分進行進一步的處理。在進行信息傳 遞的過程中Web模塊能夠自動簡化許多部分請求的處理和自動進行參數綁定到域 對象的工作的處理。此外,Spring框架也是通過這個模塊來與其他的框架進行協 同的。
7、WEB MVC部分(Spring WEB MVC):主要用來實現構件大型的MVC框 架程序的框架支持。MVC框架通過Spring提供的策略接口。MVC容納了大量視 圖技術,其中包括 JSP、Velocity、Tiles、iText 和 POI。成功將 Domain 和 webForm 進行了分離,極大的簡化了開發者的工作量。
Spring的核心就是它的輕量級控制反轉容器的功能。一個或者多個容器的實例 將應用程序和框架對象配置并裝配到一起,而且通常情況下只需按照Java接口或 者抽象的超類來管理相關的對象,并不用考慮對象是如何實現的。這一切都只需 要Spring框架中的IoC容器將他們聯系在一起。
通俗的講,反轉控制就是不在用傳統的程序代碼來直接控制實例的生成,而 是由容器控制程序間的關系和實例的生成。控制權從程序代碼的內部轉到了轉到 了外部的容器,也就是控制權“反轉”到程序外部。這也被稱作“依賴注注入 (Dependency Injection)",即組件的關系由容器在運行期間決定,容器動態的將某 種依賴關系注入到組件之中。
將注入的依賴關系放到組件中的主要目的是想讓程序員通過這種方式提升組 件的可被重用率并以此來提高系統的可擴展性。在通常情況下,依賴注入的方式 有三種:
1、 接口注入:在使用接口注入作為依賴注入的基本方式時,首先要實現一個 借特定的接口,這個接口可以自動匹配所需要的基本組件。
2、 設值注入(Setter):這種方式是將一個實現類作為一個參數來在當前的類中 進行調用,在調用之前用setter方法將其注入即可。這種方式實現比較簡單,在項 目工程中是比較常用的方法。
3、 構造子注入(Constructor):通過早構造函數中將實現類所需要的各種類注入, 并在實現類中直接調用即可。
2.3數據庫介紹
Oracle數據庫是關系型數據庫的典型代表。其第一版誕生于1979年,之后經 過多次的修改完善,在2010年發布了 Oracle。如今,Oracle數據庫無論是在基于 Linux還是基于windows的數據庫平臺應用中,始終處于領先地位,其市場份額超 過82%。
Oracle 是作為世界上最優秀的數據庫軟件之一,能夠在所有的主流平臺上運 行,支持所有的工業標準并且獲得最高級別的ISO標準認證。不僅應用廣泛,Oracle 公司還為各個行業提供了全面的數據庫解決方案,提供整個數據庫開發應用流程 的相關工具的技術支持〔絢。
Oracle 10g做為第一個為企業級網格計算而設計的數據庫。除了具有執行企業 級網格計算所需的靈活性,降低了企業的建設成本外,同時還極大地降低了管理 負擔,為企業的管理提供了更加方便的操作。
Oracle 10g相比于其他數據庫的優點是:
一、 使IT能夠更好地響應不斷變化的業務環境,以及以更低的成本、更高的 可伸縮性、可預測性和最高可用性降低風險。
二、 Oracle 10g提供基于低成本、可伸縮數據倉庫的快速、可靠和安全的報表 編制、分析和數據挖掘功能。
三、 提供數據集成和加載分析:通過將大表分區,提高數據倉庫的性能、可 用性和可管理性;
因此,數據存儲量大比較適合作為大型企業的信息管理系統的數據服務器。 而我們構建的系統本身所需要存儲的數據量就比較大,而且我們需要通過對數據 進行深入的挖掘來為管理層提供數據支持。所以,在數據庫的選擇上,我們選擇 Oracle 10go
2.4其他開發工具
1、 系統服務器
系統服務器采用tomcato 一是因為tomcat是完全免費的,應用的范圍比較廣 泛;二是因為tomcat體積小,安裝和部署都很方便;三是因為tomcat是開源的, 不僅能夠支持最近的標準而且可以根據實際情況來添加或修改功能;四是 tomcat 支持跨平臺操作,更加實用。
2、 開發環境
采用MyEclipse作為開發環境°MyEclipse集成了很多常用的框架使得編寫java 程序更加方便快捷;具有可無限擴展的強大插件功能;可以為J2EE平臺提供良好 的支持。
3、 系統架構 對于系統的構架,根據對項目的開發目的和運行結果的考慮,決定采用基于
B/S的開發模式。
B/S (Browser/Server)結構即瀏覽器和服務器結構,是用戶通過瀏覽器訪問服 務器而得到所需數據。在B/S架構中,大部分業務都由服務器端(Server)來進行 處理,極少部分的數據由前端(Browser )實現。這樣就可以大大節省軟件開發、 維護與升級的費用。B/S對于前臺客戶機的要求不高,可以減少硬件盲目升級帶來 的浪費。對于遠洋商貿這樣有多個網點的公司來說,銷售人員只要有支持網絡的 瀏覽器,則可以在任何時間、任何地點、任何瀏覽器來訪問系統,使用B/S終端, 為用戶提供了極大的方便。
B/S結構的另一優勢在于,其數據都存放在總部的數據庫服務器中,在客戶端 中不會保留任何業務數據,所以能夠在保證數據安全的同時,還保證了數據的同 步性,每筆業務都直接存放在中央數據庫中,保證了數據的一致性。
此外,B/S模式具有更好的系統集成性,B/S模式改變了零散的功能單一的多 系統模式,各種企業的服務問題得到很好的解決,更好的提高了企業的工作效率。
2.5本章小結
本章主要介紹了系統在建設過程中用的技術知識。介紹了 J2EE平臺,介紹了 在J2EE平臺上構建本系統所用到的Struts> Spring和Hibernate框架的基本原理。 本章還介紹了系統中所用Oracle數據庫的基本情況,最后介紹了系統所用到的其 他開發工具。為系統的建設提供理論支撐。
第三章 系統需求分析
3.1需求分析
需求分析的基本任務是準確地回答“系統必須做什么”這個問題。而只有對 用戶需求有真正的明確,對要解決的問題有徹底的理解才能夠回答好這個問題。 需求分析所要做的工作就是充分和客戶進行交流溝通,了解客戶究竟想要什么。
通過系統的需求分析能夠使得開發人員與使用人員進行進一步的交流,來規 定系統軟件所應該具有的外部行為。開發者通過需求分析能夠了解使用者的工作 流程,從而設計出系統實現方法以及界面原型等,通過這些設計讓用戶更加了解 系統,在此基礎上用戶可以提出更多的建議和意見,設計者可以不斷的對系統進 行完善。
對于企業信息管理系統來說,在管理過程中涉及的方面很多,各個方面的管 理雖然不同但是又相互聯系。這就要求對整個企業的信息進行全面的分析,整體 的進行規劃,才能使得系統能夠條理清楚的為企業的發展做貢獻。
遠洋商貿有限公司的信息管理系統的整體需求為:建立一個使用方便、流程 規范、系統安全的先進的信息管理系統:通過與聯網實現企業內部的信息共享; 對于不同的工作人員提供不同的模塊使用權限和功能;管理者能夠都過系統所記 錄的數據進行規劃分析進行統籌決策。
3.2系統功能性需求
功能性需求是指開發人員在開發過程中必須實現的軟件功能,使得用戶能夠 利用這些功能來完成工作流程。
首先企業要求系統能夠詳細記錄企業的中的基本信息,其中最重要的就是企 業所銷售的商品信息,包括商品的價格,商品的用途,商品的進貨商等等。雖然 商品都是汽車的零部件等,但是也分為許多的種類,所以還應該對商品的種類進 行一定的管理。
遠洋商貿有限公司是一個只做產品批量銷售的公司,所以其供應商和客戶都 是比較大型的,較零散的客戶較少,所以遠洋商貿有限公司還要求系統能夠記錄
選企業所有的供應商信息、企業的客戶信息,方便以后企業與供應商和企業的聯 系。同時,系統應該能夠對企業的供應商信息和客戶信息有一定的歸納和整理的 作用,讓企業的管理者能夠對各個供應商和客戶有一定的宏觀的比較。
由于遠洋商貿有限公司的發展較為迅速,現在已經有了多個倉庫來儲存貨物, 所以倉庫的管理也是一個很重要的部分。系統能夠并發的、實時的記錄各個倉庫 的進貨和出貨的情況。除了提供每個倉庫的進出貨情況,對于有權限的用戶,系 統還能夠提供多個倉庫的所有的貨物的進出情況,提供管理者統籌管理的數據。
企業除了要求基本信息的管理之外,還要求有對動態信息的管理。遠洋商貿 公司每天都會產生很多批的采購信息和售出信息貿易單。這就要求系統能夠實時 的記錄下這些訂單信息,并且等訂單完成之后還能夠支持內容的打印和導出功能, 作為進貨和出貨的憑證信息。整個商品管理、倉庫管理采購信息管理和供應信息 管理的流程圖如圖3-1所示。
倉庫信息
圖3-1系統進出貨情況流程圖
根據以上的流程圖我們可以設計出庫存模塊的整體用例圖,如圖 3-2所示。系
統管理員可以查詢整個庫存狀況,并且對庫存、入庫單和出庫單進行管理。管理
員即倉庫管理員則具有入庫管理、入庫單查詢已經按月備份查看庫存的權限,而
銷售人員則可以對個人的出庫單進行查詢和管理。
圖3-3 庫存信息管理用例圖
對于企業的員工,因為員工的工作地比較分散,也要對員工進行記錄。首先 要記錄每個員工的基本信息,并且能夠允許員工自己對自己的基本信息進行維護。 除了員工的基本信息之外,還應該有明確的權限分類,上級管理者能夠看到下級 的基本信息,并能夠對下級的信息進行管理。不同的員工對于系統的操作權限也 不同,有詳細的劃分。員工信息管理的用例圖如圖3-3所示。
圖3-3 員工信息管理用例圖
此外,遠洋商貿有限公司的信息管理系統也跟大多數信息管理系統一樣需要 有系統管理功能。系統管理員能夠定期對系統中的垃圾數據進行清除,還要負責 系統的維護方面的工作,如商品種類的添加,公司部門的添加等。
根據以上系統功能的分析,在劃分系統功能模塊時盡量將功能相似或者相近 的功能安排到一個模塊,盡可能的細化每個模塊,但同時要保證每個功能模塊的 獨立運行 。模塊彼此之間通過接口相互連接,實現數據的共享和傳輸。
3.3系統性能需求
系統的性能需求是系統的運行時間、服務效率、服務水平等系統運行所必須 遵行的契約。雖性能要求不能直接的影響到系統的各種功能的實現,但是他對于 系統的易用性和用戶對軟件的認可度等的影響是十分巨大的。
1、 實用性要求 系統首先應該滿足用戶管理上的要求,保證系統功能的正確性,在保證正確
性的基礎上要支持友好的用戶界面和靈活的功能調度。同時還應該考慮到軟件以 后的業務上和性能上的擴展的可能。盡可能的使業務更靈活,更好的滿足用戶現 在和未來可能的需求。
2、 系統性要求
在開發過程中要十分注重其功能的完整性、數據的整體性和管理的系統性。 同時要盡可能的提高系統的運行速度。因為隨著軟件運行時間的增加,用戶數據 的積累,系統的執行速度會慢慢被拖垮,所以在可能會對系統有較大影響的地方 應該及早做性能優化處理。
3、符合軟件工程規范的要求 信息系統的開發是一項復雜的應用軟件工程,只有按軟件工程的理論、方法 和規范去組織與實施才能保證系統的質量。
4、安全性要求
由于系統采用 B/S 架構,一個個的網頁都是獨立的,不能僅靠在系統入口處 的安全檢查來保證系統的安全,所以在整個系統中都要加強安全性檢查。對于系 統中的每個頁面都要設置相應的權限,使其與用戶的使用權限一一對應。在配置 WEB 服務器的時候也設置權限來限制用戶操作頁面的方式。在 WEB 應用程序中 還應設置輸入驗證來防止SQL注入和緩沖區溢出等其他輸入的攻擊。
5、 可擴展性的要求 企業的規模不會一直不變,這就要求系統必須能夠根據企業的規模和業務方
向的改變來對功能進行相應的調整。在調整的同時能夠方便的進行模塊的插入和 修改,而不影響到企業的使用。
6、 靈活性的要求 當外部環境如操作方式、運行環境、精度等要求發生改變的時候系統應該可
以靈活的根據這些改變做出相應的調整,有較高的適應能力。
3.4系統開發環境需求
因為本系統的開發是由J2EE作為平臺的Web應用開發,所以在開發時主要需 要具備開發傳統J2EE應用程序的環境。本系統開發時的系統的實現環境如下所示:
一、軟件配置
>操作系統:Windows XP Professionnal
>數據庫:Oracle 10g
>JAVA 編譯器:JDK1.6
>開發包:Struts2.0, Hibernate3.0, Spring 2.0
>開發工具:PLSQL, MyEclipse 7.5
>WEB 服務器:Apache-tomcat-6.0.14
其中,MyEclipse是用來開發J2EE服務器端程序的集成開發環境,利用該IDE, 可以方便而高效的對應用進行調試及部署。
二、硬件配置
>Intel Core(TM)2 Duo CPU 2.93GHz
>4G DDR3
>320G HardDisk
>主板集成聲卡顯卡
3.5本章小結
本章主要分析了遠洋商貿有限公司對系統的整體需求,首先分析了遠洋商貿 有限公司的信息管理系統的功能性需求,然后根據遠洋商貿有限公司的信息系統 所要運行的環境提出了信息系統的性能需求和環境需求,為后面系統設計和建設 提出要求。
第四章 系統總體設計
4.1總體設計思路
對于該系統的設計始終將用戶的易用性作為中心,為遠洋商貿有限公司的企 業經營提供解決方案:建立實時的、科學的企業管理機制;通過對企業的各個環 節進行流程化的管理,降低管理成本,提高企業工作效率;滿足企業管理層對決 策數據的需求;對企業的整體管理和商品流通提供必要的支持。
對于系統的開發,采用結構化的開發方式,因為結構化的開發方式強調了開 發工程的整體性和全局性,更加適合信息管理系統這種大型系統。結構化開發方 式采用自頂向下的方式將系統分為若干個子系統,然后再將子系統細化為幾個模 塊,分別來進行開發。進行開發的時自底向上的逐步實施,每個模塊都有其明確 的任務和目標,通過確定模塊里程碑任務來對模塊開發的進度和開發范圍進行控 制。在模塊開發完畢之后按照系統設計的結構,將模塊一個個進行拼接調試,逐 步形成整個系統。
4.2總體結構設計
企業信息管理系統的開發是一個復雜的系統工程,它要受到多方面條件的制 約。本信息管理系統從企業的實際管理過程出發功能齊全,調度靈活等各方面的 考慮,由以下幾個模塊組成。具體模塊圖如圖4-1所示。
企業信息管理系統
圖4-1系統功能模塊圖
1、商品管理功能 主要是對商品的基本信息進行管理:能夠對商品的進行增、刪、改、查等操 作。由于公司的產品種類較多,所以系統也應具備對商品的類別進行統一管理的 功能。在使得管理者對于公司的商品基本情況有所了解的同時也能對商品的銷售 情況有個宏觀的認識。
2、 供應商管理功能 對供應商進行統一的管理,收集供應商的基本信息,對于有長期供應關系的
供應商建立采購協議。在一定時期內,通過對不同的供應的供貨價格和供貨質量 進行評定,為供應商的選擇提供依據。也可以通過對其所在地區和供貨價格的對 比,可以為企業的門店分布和采購等提供有利的數據。
3、 客戶管理功能 對客戶尤其是長期合作的客戶進行統一的管理,記錄客戶的個人信息、交易
時間、交易數量等基本信息。還可以記錄賒賬記錄和還款期限等,為客戶的信用 等級進行評定。為以后的客戶選擇和合作提供依據。
4、 采購信息及銷售信息的管理功能 主要是對發票的管理,收到供應商的采購發票以后,能夠從計算機上查出此
供應商的所有未開發票的入庫單,找出此發票所對應的進貨單。將進貨單跟發票 單進行綁定,一起交與財務處進行處理。
5、 庫存信息管理功能 對倉庫中的物品進行統一的出庫和入庫管理,不僅能夠減少對庫存進行管理
的時間,還能加快貨物流通的速度,進而提高了企業的工作效率。庫存管理能夠 準確記錄入庫和出庫的時間、數量等基本信息,并能夠對于倉庫所有資產進行統 計查詢。
6、 企業員工信息管理功能
主要包括員工的個人信息管理,通過對員工的個人信息、所在部門信息、薪 資信息、職位信息等進行統一管理。能夠對員工數量、公司技術構成,月工資金 額等情況進行宏觀統計,為管理者進行人事調整、工資變革、員工培訓方式等提 供相應的數據。從而能作為員工績效等數據進行分析,產生了組織的設計、機制 的變革、激勵、工作計劃、個人與團隊的協作、文化等的管理報告。
7、 系統管理功能
在企業管理網站中,網站的安全性是十分重要的一件事情,對于非法的用戶, 系統必須能夠將其擋在系統入口的大門外,從而減少非法用戶給公司帶來的損失。 而對于合法的用戶,系統應該能夠識別,同時給予相應的權限,使用戶只能操控 自己所有權利管理的那部分資源。
4.3系統架構設計
所謂架構設計就是需要將系統劃分為具有相互關聯的若干組成部分,如何使 各個部分有機的組織起來、相互作用,以及對系統中邏輯、物理、系統等關聯作 出明確定義 [29]。
好的架構設計是需要架構設計時充分的了解系統的作用和目標,在將系統的 層次劃分清楚的基礎上使系統的每一部分功能清晰。團隊在此架構上進行開發的 時候便于進行管理和分配任務 [30]。
架構設計的另外一個目標就是要將系統設計為可以擴展的系統,因為隨著業 務和技術的不斷發展,系統的擴展是必不可少的,所以在系統設計過程中,系統 架構設計目標可以概括為以下幾點[31]:
1、 合理性:系統在設計過程中,要根據具體的業務需求和環境需求來有針對 性的確定架構。不能一味的追求最先進最流行的框架,要根據系統的作用和目標 來有針對性的指定架構
2、 重用性:通過軟件復用或者重用。重用包括組件重用和設計模式使用等多 個方面,比如類庫的重用,框架的重用還有組件的重用等。目前軟件的類庫和框 架的重用的應用已經比較廣泛。
3、 簡潔性:在設計架構時,要遵循“高內聚、低耦合”的設計思想,將操作 復雜或者聯系較為緊密的模塊放到一起,只是將方法的借口給暴露出來,增強代 碼的可維護性。
4、 可擴展性和可移植性:任何系統隨著用戶需求的不斷改變也是需要不斷變 化的,這就對系統的可擴展性提出了很高的要求,在系統的設計的時候就要充分 考慮到系統以后可能會發生的變化。
5、 性能:性能是在系統設計時候首要考慮的因素,但是由于現在框架的不斷 發展和完善,一個合理、成熟的框架技術和組織形式,是完全可以保證系統性能 的。
6、 安全性:隨著網絡技術的發展,通過網絡來入侵系統獲得數據等手段也原 來越多,所以及早引入安全機制是必須的。
系統結構設計在充分考慮遠洋商貿有限公司的功能需求和性能需求后,將遠 洋商貿有限公司的管理信息系統劃分為以下五個層:客戶層、表示層、業務層、 數據持久層和數據庫層。
1、 客戶層:主要用來跟用戶進行交互,將用戶的請求傳給后臺,并將后臺的 處理結果展現給用戶。在本系統中主要是各個用JSP寫的頁面。
2、 表示層:主要是提供前臺頁面和后臺業務的之間的數據傳輸工作。在本系 統中由struts框架來控制整個頁面的請求到后臺action的轉發。
3、 業務層:系統中業務層主要由在Spring框架技術開發完成。用來處理整個 系統的主要邏輯,其中主要用了 spring 的控制反轉的功能。主要是對這個業務邏 輯的處理并將相應的結果返回給表示層,由表示層與客戶端交互。
4、 數據持久層:系統中持久層主要使用 Spring 框架和 Hibernate 框架共同開 發完成。其中 Spring 框架主要就是提供其控制反轉的功能,將實現類所必須引用 的其他類注入,同時,hibernate提供數據的持久化支持,存取數據庫中的數據。
5、 數據庫層:數據庫層主要使用 Oracle 10g 來完成數據的存儲功能,通過 Hibernate 系統和數據庫進行連接,為系統的使用服務。
Sping、 Struts、 Hibernate 做為整個系統的核心技術,這三種技術相融合的最大 優點是最大程度的增加了軟件的復用程度,減少了項目的管理成本,節約了項目 的開發成本[32]。在本系統中,這三者之間的架構如圖4-2所示。
圖4-2 SSH架構圖
基于 web 的應用面向用戶的部分就是表示層,該主要是通過 Struts 框架來實 現的。在 Struts 中,系統通過配置 Struts-config.Xml 文件來過濾前臺傳過來的請 求類型,并將請求轉發到相應的Action中。而Action類主要是來接受前臺的數據 請求,并調用后臺進行業務處理,最后將處理結果返回給前臺。
在本系統中,表示層Struts的主要作用是:第一、接受前臺傳來的數據,并根 據用戶的不同的請求作出不同的相應。第二、通過控制器來調用相關業務邏輯。 第三、提供信息管理系統的業務模型數據。第四、為信息管理系統的頁面中信息 的輸入提供驗證功能。
業務層主要是由 Spring 框架來實現的。程序在運行過程中,首先通過調用 Spring 配置文件 ApplicationContext.Xml 通過 Spring 的依賴注入功能把具體的業 務邏輯實現注入到實際的調用動作模塊之中。當一個方法請求調用另一個對象中 的方法時,并不是直接將該對象實例化,而是通過set bean方法來將對象進行注入, 當程序加載并解析配置文件后會將自動調用被系統所實例化的beano
在本系統中,業務層的具體作用是:第一、業務層處理遠洋商貿有限公司信 息管理系統的業務邏輯、第二、業務層負責系統中的事務管理,加強系統的可靠 性。第三、業務層管理在業務處理過程中對象之間的依賴。第四、提供信息管理 系統的后臺的具體的業務實現類。
持久層是與數據庫直接發生關系的層。數據持久層主要是對數據庫進行刪除、 插入、修改和讀取的操作。除此之外,數據持久層還要考慮從數據庫中存取數據 時的系統性能問題。
在本系統中,數據持久層的具體作用是:第一、實現對數據庫中數據的插入、 刪除、修改和取讀。第二、通過在系統中建立持久化類來與數據庫的數據表進行 一一的對應,方便數據的取讀。第三、建立于數據庫之間的連接,并且管理數據 庫連接池。
4.4本章小結
本章主要對系統的總體進行了設計和劃分,根據系統的需求設計出了系統的 基本模塊,確定了各個模塊之間的區別和聯系。對系統設計的基本原理進行了闡 述,并且根據系統設計的基本原理和系統的基本需求設計了系統的架構。
第五章 系統的詳細設計
由于企業信息管理系統所涉及的方面比較多,但是各個方面之間都有聯系, 可以將較為相似的模塊整合為整體模塊進行設計和實現。
5.1基本信息模塊詳細設計
本系統中有幾個模塊的功能比較相似,即客戶管理功能模塊、供應商管理功 能模塊和商品管理功能模塊。他們是系統中的基礎模塊,幾乎其他所有的模塊都 要圍繞這幾個模塊來進行操作,但是這幾個模塊又比較簡單,只是有幾個插入、 刪除修改等基本操作,其實現上基本類似,所以將客戶管理功能模塊、供應商管 理功能模塊和商品管理功能模塊作為企業信息管理系統的基本模塊主要用來記錄 企業的基本信息。基本信息管理模塊的模塊功能圖如圖5-1所示。
基本信息管理模塊
圖5-1 基本信息管理模塊功能圖
在客戶管理中,主要能夠記錄客戶的基本信息,方便以后進行聯系合作。除 了客戶個人或者企業的基本信息之外,還提供客戶整體的統計信息如客戶所在地 的統計、客戶購買喜好的統計等,通過這些來幫助遠洋商貿來對客戶進行一定的
甄別,為以后的銷售工作提供數據支持。在客戶管理功能中,不設置客戶信息的 刪除功能,因為客戶及時購買過一次或者購買的頻率很少,但是也具有很好的分 析和利用的價值。可以通過整體的客戶信息來讓企業的管理者更加的了解市場, 更好地做出決策,所以不再設有客戶的刪除功能。只有系統管理員可以定期的對 時間較久之前,參考價值不高的客戶進行刪除。
在供應商管理中,主要用來記錄供應商的基本信息,通過記錄和修改供應商 的基本信息來方便企業可以進行聯系和合作。此外,對于供應商也有與客戶類似 的統計信息管理,統計供應商的基本信息為公司日后發展提供技術支持。和客戶 管理類似,供應商管理同樣不設置刪除供應商的功能,來幫助企業更全面的掌握 客戶和供應商的信息。
在商品管理功能中,主要用來記錄商品的基本信息,能夠對添加、刪除、修 改和查看等操作,來幫助企業管理人員了解商品的基本情況。
5.2業務管理模塊詳細設計
業務管理模塊主要來完成對采購、銷售、庫存、客戶信用度評價等動態信息 進行管理。其在系統中的作用十分重要,因為他不僅能夠對日常的生產活動提供 服務,還能夠為分析和統計數據提供支持,其功能模塊圖如圖5-2所示。
采購信息管理主要是用來動態記錄遠洋商貿公司每天的采購情況。當公司采 購一批商品的時候,便將采購的具體情況如采購時間、采購人、采購商品、采購 費用、采購數量等信息記錄進系統,當采購信息比如采購的數量、費用等有所修 改時通過修改采購信息來對已經生成的采購信息進行修改。查看采購信息主要能 夠允許用戶通過多個角度來了解采購的情況,比如通過查看對某一供應商的采購 信息來了解對某一供貨商的供貨情況,縱向來了解供應商的供應情況。也可以通 過查看對某一商品的采購情況來比較幾個供應商對同一個商品的供應情況,橫向 比較幾個供應商。在添加采購信息之前,如果采購的商品或者供應商的信息并沒 有在系統中有記錄,則需要先將商品信息或者供應商的信息添加到系統中后,再 來進行記錄采購信息。
銷售信息管理主要是用來動態記錄遠洋商貿公司每天的銷售情況。當公司賣 出一批商品的時候便將具體的銷售記錄存進系統。其基本流程同采購信息,也是 能夠使企業多角度的來了解銷售情況。在添加銷售情況之前也需要提前對商品和 客戶的信息錄入系統。
庫存信息管理主要是用來記錄遠洋商貿公司的庫存情況。當有新商品被運輸 到倉庫是,便要對商品的數量、入庫時間、接收人等進行記錄。同樣當商品出庫 時同時需要進行記錄,記錄出庫的時間數量等基本信息。倉庫的基本信息允許進 行修改,來對商品的庫藏信息進行一定的修改。庫存信息管理還提供查看的功能, 這個功能也是提供橫向和縱向兩個方面的查看:可以橫向的分別對比各個倉庫的 商品出庫和入庫情況,來進一步宏觀把握公司的進貨和出貨機制;也可以縱向的 查看某一個倉庫的進出貨情況,以對某個倉庫的貨物情況進行了解。
5.3人事管理模塊詳細設計
因為系統的管理功能主要是為系統的權限來做服務,而系統的權限設置又是 由公司的職位信息等決定的。所以講企業員工的基本信息跟系統的管理功能進行 合并為人事模塊單獨作為一個模塊來進行介紹。其中人事管理模塊又細分為員工 信息管理和系統維護兩大模塊。員工信息主要記錄公司的員工的基本信息,系統 維護模塊主要是開放給系統管理員的后臺,通過這個模塊,管理員可以修改職務 的基本信息和部門的基本信息。人事管理模塊的功能模塊圖如圖5-3所示。
員工信息主要是用來管理遠洋商貿有限公司中所有的職工信息。在系統建設 初期所有的員工信息是由系統管理員來負責建立的。等系統正式運行之后,每個 員工可以根據自己的員工ID登錄進系統,并對自己的基本信息進行維護。之后, 再有新的員工進入遠洋時,就可以有招入此員工的部門或者管理者來在系統中建
立此員工的基本信息,并且在基本信息建立完成之后交由員工自己來維護自己的 信息。
圖5-3 業務管理模塊功能圖
由于企業中的部門和職務一般都是固定的,很少有改動過,而職務和部門的 信息又與對系統的權限緊密相連。所以這個交由系統管理員來進行維護和管理。 在每個職務和部門建立時,便要選擇他所擁有的對系統的操作權限。當某一個員 工升職或者降職時,只要這個職位是系統里的職位,只要在其基本信息中修改器 職位和部門信息,就不需要再次改動其操作權限。剛某個職位或者部門的工作內 容發生變化時,則要修改部門和職位的信息,為了就是修改其相應的權限信息。 管理員也可以將某個職位或者部門刪除,但是刪除之前系統會自動確認應經沒有 人在這個部門了或者是這個職位了,否則系統會給出提示,表示不能夠刪除此部 門或者職務信息。
5.4后臺實現流程設計
整個信息管理系統的流程都是按照一定的模式來運行的,所以下面就以用戶 信息類來作為例子詳細分析一下系統的后臺實現流程,其他操作與用戶信息類的 操作類似,這里不再贅述。
根據系統的多層技術架構以及 Spring 的實現方式,用戶的管理主要提取為 5
個類:userAction、userService、userServicelmpel、userDao 和 userDaoImpel、 userAction是后臺暴露給前臺的數據接口,是前臺客戶請求和后臺業務處理之間的 橋梁,負責對各種操作請求進行重新定向。userService是實現邏輯業務的接口, userServiceImpl是接口的實現,負責各種業務的具體實現。userDao是實現用戶的 數據處理業務的接口,userDaoImpel是接口業務的直接實現,userEntity是數據傳 輸實體,處理業務請求時首先將前臺表單中的各項數據復制到Entity中,這樣在業 務處理的時候就可以將不同數據組合為對象來進行處理。userDaoImpel能夠借助 userEntity在Hibernate的控制下直接操縱數據庫,完成數據處理的任務。用戶類的 后臺實現流程如圖5-4所示:
5.5數據庫的設計
數據庫就像是系統的地基一樣,其性能的好壞能夠直接影響到系統的好壞。 而且前期數據設計的工作做得越多,后面程序實現的時候做得工作就越少。一個 好的數據庫應該能夠清楚的表達系統的需求并且易于后期維護。
數據庫的概要設計如圖5-5所示,因為每個實體含有的屬性較多,所以在 E-R 圖中沒有詳細列出每個實體的具體屬性,詳情可以參照下面的表設計的具體字段:
通過概要設計大體了解了系統所需要的表信息,以及表和表之間的關系,為 了防止表之間的依賴過于復雜,我們在數據庫中不再設有表之間的外鍵約束,外 鍵約束通過程序的邏輯訪問來進行控制,下面是每張表的具體設計。
(1)商品表:主要用來記錄商品的編號、名稱、進價售價等基本信息,各字 段具體信息如表5-1所示。
表5-1 商品表
字段名稱 數據類型 字段
大小 說明 字段名稱 數據類型 字段大
小 說明
goodsid VARCHAR2 32 商品ID號 goodsSP NUMBER 9,4 售價
goodsNam
e VARCHAR2 50 商品名稱 goodsAmou
nt NUMBER 9 庫存
typeId VARCHAR2 32 商品類別
ID goodsCom ment VARCHA
R 50 備注
typeUnit VARCHAR2 10 商品單位 goodsPCP NUMBER 9,4 進價
(2)商品類別表:作為商品表中商品類別的一個參照,主要是記錄商品類別
的基本信息,各字段具體信息如表5-2所示。
表5-2 商品類別表
字段名稱 數據類型 字段 大小 說明 字段名稱 數據類 型 字段 大小 說明
typeId VARCHAR2 32 商品類別ID typeName VARC
HAR2 32 商品類別 名稱
(3)客戶資料表:記錄了客戶的基本信息,其中客戶信用度用來記錄客戶的
信用等級,每次按時付款信用度加一,反之則減一,各字段具體信息如表5-3所示。
表5-3客戶資料表
字段名稱 數據類型 字段
大小 說明 字段名稱 數據類 型 字段 大小 說明
cId VARCHAR2 32 客戶ID cMail VARCH
AR2 50 客戶
E-M AIL
cName VARCHAR2 50 客戶名稱 cAddress VARCH
AR2 50 客戶地址
cContacter VARCHAR2 50 聯系人 cCredit NUMB
ER 9 客戶信用
cTel VARCHAR2 20 客戶電話
(4)供應商資料表:記錄了客戶的基本信息,其中供應商信用度用來記錄供 應商的信用等級,每次按時交貨信用度加一,反之則減一,各字段具體信息如表 5-4所示。
表5-4 供應商資料表
字段名稱 數據類型 字段 大小 說明 字段名 稱 數據類 型 字段 大小 說明
pId VARCHAR2 32 供應
商ID pMail VARCH
AR2 50 供應商
E-MAIL
pName VARCHAR2 50 供應商名
稱 pAddress VARCH
AR2 50 供應商地
址
pContacter VARCHAR2 50 聯系人 pCredit NUMBE
R 9 供應商信 用
pTel VARCHAR2 20 供應商電
話
(5)采購信息表:主要用來記錄公司的采購的時間、總價等信息,具體設計 表如表5-5所示。
表5-5 采購信息表
字段名稱 數據類型 字段 大小 說明 字段名稱 數據類 型 字段 大小 說明
bld VARCHAR2 32 采購ID bTotalprice NUMBE
R 9,4 總價
pId VARCHAR2 50 供應商ID bBuyer VARCH
AR2 50 采購人
bdate Date 50 采購時間
(6)采購明細表:用于記錄具體的采購信息,主要字段是明細表ID、商品類 型、單價、數量等,具體設計如表5-6所示。
表5-6 采購明細表
字段名稱 數據類型 字段
大小 說明 字段名稱 數據 類型 字段 大小 說明
sId VARCHAR2 32 明細表ID sAmount NUM
BER 9 商品數量
bId VARCHAR2 32 采購ID sPrice NUM
BER 9,4 單價
typeId VARCHAR2 32 商品類型 sTotalprice NUM
BER 9,4 總價
(7)銷售信息表:主要用來記錄公司的銷售信息,包括銷售ID、客戶ID、
銷售人、總價等,具體設計如表5-7所示。
表5-7 銷售信息表
字段名稱 數據類型 字段
大小 說明 字段名稱 數據
類型 字段大
小 說明
eId VARCHAR2 32 銷售ID eTotalprice NUM
BER 9,4 總價
cId VARCHAR2 50 客戶ID eBuyer VARC
HAR2 50 銷售人
edate Date 50 銷售時間
(8)銷售明細表:用于記錄商品銷售的具體信息,主要字段為明細表ID,銷售 ID,商品數量、商品類型等,具體設計如表5-8所示。
表5-8 銷售明細表
字段名 稱 數據類型 字段 大小 說明 字段名稱 數據類型 字段 大小 說明
mId VARCHAR2 32 明細表ID mAmount NUMBER 9 商品數量
eId VARCHAR2 32 銷售ID mPrice NUMBER 9,4 單價
typeId VARCHAR2 32 商品類型 mTotalprice NUMBER 9,4 總價
(9)部門信息表:記錄了公司的部門或者分廠的編號、名稱和地址等信息 各字段具體信息如表5-9所示。
表5-9 部門信息表
字段名稱 數據類型 字段 大小 說明 字段名稱 數據類 型 字段 大小 說明
department
Id VARCHAR
2 32 部門或分
店ID department
Address VARC
HAR2 50 部門或
分店ID
department
Name VARCHAR
2 50 部門或分 店名稱
(10)職工信息表:主要記錄了員工的ID、姓名、性別、出生日期等基本信 息,各字段具體信息如表5-10所示。
表5-10 職工信息表
字段名稱 數據類型 字段 大小 說明 字段名稱 數據類 型 字段 大小 說明
impId VARCHAR2 32 員工ID impSalary NUMB
ER 9,2 員工薪 金
impName VARCHAR2 50 員工姓名 impTel VARC
HAR2 20 員工電
話
impGender CHAR 2 員工性別 ImpImage BLOB 員工圖 片
impBirth DATE 7 出生日期 impState NUMB
ER 1 是否在 職
departmentId VARCHAR2 32 部門或分 廠編號 impBio CLOB 簡歷
impRoll VARCHAR2 50 員工職位
(11)職務信息表:記錄了職務類型的編號,每個編號所對應的職務名稱和 職務備注,各字段具體信息如表5-11所示。
表5-11 職務信息表
字段名稱 數據類型 字段 大小 說明 字段名稱 數據類 型 字段 大小 說明
roleId VARCHAR2 32 職務編號 roleComment VARCH
AR2 200 職務備 注
roleName VARCHAR2 20 開始時間
(12)員工系統信息表:主要是用來記錄員工登錄系統時的用戶名、密碼和
其所有的權限,具體字段信息如表5-12所示。
表5-12 員工系統信息表
字段名稱 數據類型 字段 大小 說明 字段名稱 數據類 型 字段大
小 說明
userId VARCHAR2 20 員工登錄名 userPower
Id NUMB
ER 2 權限
userPwd VARCHAR2 20 登錄密碼
13)員工權限表:記錄員工的各種權限,包括對系統中各個模塊的查看和
操作權限和對員工信息和部門信息的查看和操作權限,具體字段信息如表5-13所 示。
表5-13 員工權限表
字段名稱 數據類型 字段 大小 說明 字段名稱 數據類 型 字段 大小 說 明
MoudleId NUMBER 2 權限類別 編號 ModuleComme
nts VARCH
AR2 200 備 注
ModuleNam
e VARCHAR2 20 權限名稱
5.6本章小結
本章主要對系統進行了詳細設計。首先對系統的各個基本功能模塊的詳細功 能進行了介紹,然后對整個系統的后臺實現流程進行了設計,最后對系統的數據 庫進行了設計,為系統實現打下基礎。
第六章 系統實現
6.1系統功能的實現
6.1.1系統總體結構介紹
該項目的目錄結構如圖6-1所示。src目錄用于存放項目后臺處理功能的源文 件,所有的JAVA源文件都定義在這個文件夾下。其中Struts> Spring和Hibernate 的配置文件也放置在這個目錄中。WebRoot下的WEB-INF目錄用于存放系統配置 文件。其余的,如JRE System Libraries等內容則為我們在進行開發過程中所引用 的庫文件。
xml F; 1 O— 1 1 —S _t-^l 1 : 27 tii ti ema-t e - p工-op ex- ties 曰 1 LI— 1 1 —Ei
1 o ^=4:ji - p'i~ op t i e: s S 1 O— 1 1 —F; l~ *=±F± s trxit. s . semi S ].口一 1 1 — F; l~1 1 : iZ:T css
上《■ m 1_ ;p
i m 丑ge
J三
r.iETj^—urF 三h^z~ m
WEB—I1TF
圖6-1 目錄結構圖
6.1.2系統流程的實現
本文第二章綜合分析了 Struts、Spring、與Hibemate各自的體系結構以及優缺 點。本系統將這三個架構有效的整合在一起:由于Struts框架有成熟的標簽庫,所 以表現層主要由Struts框架來實現;而Spring框架同Struts框架能夠完美的結合, 并且在事務管理和依賴注射方面有著獨到之處,因此主要用于業務邏輯層;在數 據持久層方面主要采用Hibernate實現。0/R Mapping,對JDBC進行了輕量級的對 象封裝,建立Java對象模型的持久對象。
下面便通過員工登錄驗證的系統流程來詳細介紹數據持久層的、業務層和表 現層的具體實現。
員工登錄以及員工基本信息查詢的類圖如圖6-2所示。
圖6-2 員工登錄及基本信息查詢類圖
1、Struts 表現層的實現
首先用戶看到的是JSP所顯示的界面,其界面代碼如下:
<head>
<titl e> 系統登錄 </title>
</head>
<body>
<form action="login.action" method="post">
<table width="373" border="1">
<caption >用戶登錄 </caption>
<tr>
<td width="92" align="center"> 登錄名 </td>
<td width="265"><input type="text" name="username"/></td>
</tr>
<tr>
<td align="center"> 密碼 </td>
<td><input type="text" name="password"/></td>
</tr>
</table>
根據前面所講的Struts的運行機制可知,在前臺界面提出邏輯請求之后,請求 首先由Struts-Config.xml來進行定向,在Struts-Config.xml員工登錄的定向配置如 下所示:
<action name="login" class="org.action.loginaction">
<result name="succss">/usermain.jsp</result> <result name="error">/login.jsp</result>
</action>
通過轉向,系統轉而調用LoginAction里面的excute方法來對前臺的邏輯進行 處理,其代碼如下:
public String excute()throws Exception{
User user = userService.find(username); if(user!=null){
if(user.getPassword().equals(password.trim())){
Map session=(Map)ActionContext.getContext().getSession(); session.put("user", user);
return "succss";
}
else
return "error";
}
2、Spring的業務層表現
通過查看 LoginAction 的代碼我們發現,在 LoginAction 對前臺邏輯進行處理 時調了 userService中的類進行處理,其調用流程則是由Spring來實現的,Spring 的配置代碼如下所示:
<bean id="UserService" class="org.service.UserService"> <property name="userDao"><ref local="UserDao"/></property>
</bean>
在Service層中要向下調用Dao層中接口的方法,故在調用前要先對要使用的 Dao層的類進行聲明,具體如下:
private UserDao userDao = null;
public void setUserDao(UserDao userDao) { this. userDao = userDao;
}
此時Spring像Service中注入userDao成功,在Service中可以直接調用UserDao 中的數據上一章已經敘述過Service和Dao的調用情況這里就不再贅述。
3、Hibernate的數據持久層實現 業務層的邏輯處理需要得到后臺數據庫的支持,在數據庫中用戶表有 username,password,id等列名,則該表映射在系統總的User對象為:
private String id;
private String username;
private String password;
public String getId() {
return this.id;
}
public void setId(String id) { this.id = id;
}
數據庫中的 user 表與系統中的 User 對象是通過 Hibernate 的映射文件 User.hbm.xml來實現映射關系的。
User.hbm.xml的代碼如下:
<hibernate-mapping>
<class name="org.Entity.User" table="User" schema="dbo" >
<id name="id" type="java.lang.String"> <column name="id" length="10" /> <generator class="assigned" />
</id>
<property name="name" type="java.lang.String"> <column name="name" length="8" />
</property>
最后Hibernate與數據庫連接的配置如下所示:
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property> <property name="connection.url">jdbc:jtds:sqlserver://localhost:1433;DatabaseName=yysm</pro perty>
<property name="connection.username">sa</property>
<property name="connection.password">os123</property> <property
name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
<property name="myeclipse.connection.profile">yysm</property> <property name="show_sql">true</property>
<mapping resource="org/model/User.hbm.xml"/>
6.1.3系統關鍵功能的實現
在系統的基本信息管理模塊、業務管理模塊和人事管理模塊中,對于基本信 息的管理一般都是增加、刪除、修改和查詢。因此對于基本信息管理模塊的設計 基本都是圍繞這四個功能來設計的,所以在系統實現時則可以將這幾個基本的數 據庫操作功能提煉成一個基本類,供其他類調用。
public void saveOrUpdate(T entity) throws Exception {
try {
getSession().saveOrUpdate(entity);
} catch (HibernateException e) {
System.out.println(e.getMessage());
log.error(e); throw new Exception(e);
}
}
/**
*刪除對象
*/
public void delete(T entity) throws Exception {
try { getSession().delete(entity);
} catch (HibernateException e) { System.out.println(e.getMessage()); log.error(e);
throw new Exception(e);
}
}
/**
*批量刪除
*/
public void deleteByIdList(List<String> idList) throws Exception { try {
for (Iterator iter = idList.iterator(); iter.hasNext();) { delete((Serializable) iter.next());
}
} catch (HibernateException e) { System.out.println(e.getMessage()); log.error(e);
throw new Exception(e);
}
}
/**
*以SQL方式執行語句
*/
public void executeUpdate(String sql, Object... values) throws Exception {
try {
SQLQuery query = getSQLQuery(sql); if (Validate.arrayNotNull(values)) { for (int i = 0; i < values.length; i++) { query.setParameter(i, values[i]);
}
}
query.executeUpdate();
} catch (HibernateException e) { System.out.println(e.getMessage()); log.error(e);
throw new Exception(e);
}
}
對于業務管理模塊和基本信息管理模塊來說,都會遇到分頁問題。在分頁的 解決辦法中常用的有兩種:前臺分頁和后臺分頁。前臺分頁是將所有需要的信息 都查出來,將數據交給前臺,前臺來選擇要顯示的數據范圍,并將數據呈現給用 戶;后臺分頁則是得到前臺所要顯示數據的范圍,然后根據這個范圍查詢數據庫 并返回結果。兩種方式各有利弊:前臺分頁是一次性訪問數據庫,一次耗時,但 是之后的翻頁等查詢都十分迅速。但是如果一次性查詢的數據非常多得時候,一 次查詢所消耗的時間非常大。所以前臺分頁不適合大規模數據查詢,實時性不高; 后臺分頁這種分頁方式,實時性比較好,查詢速度也較快。但是其高實時性也可 能為用戶帶來困擾:比如,一個頁面能夠顯示20 條數據,第一個用戶翻到第一頁 時第21 條數據在第二頁,但是在第一個用戶翻到第二頁之前,第二個用戶刪除了 前二十條數據中的一條數據,結果第一個用戶翻到第二頁的時,第 21條數據被系 統認為成第20條數據而不在第二頁顯示,則第一個用戶就漏過了第21條數據。
根據對本遠洋商貿有限公司的實際情況進行分析,其商品種類非常多,高實 時性引起的問題出現的幾率較低,且在其可承受的范圍內,所以本系統采用后臺 分頁的方式,具體代碼如下所示:
Query query = createQuery(hql + orderBy, values);
// 設置分頁參數
query.setFirstResult(PageHelper.getFirstRow(page.getCurrPage(),
page.getPageSize()));
query.setMaxResults(page.getPageSize());
Query countQuery = createQuery("SELECT COUNT(id) " + hql, values);
query.setCacheable(true);
countQuery.setCacheable(true);
int rowCount = ((Long) countQuery.uniqueResult()).intValue();
page.setRowCount(rowCount);
page.setList(query.list());
page.setMaxPage(PageHelper.getMaxPage(rowCount,
page.getPageSize()));
// 返回分頁類
return page;
按照面向對象的思想,通過此分頁方法得到的分頁數據,返回時應該封裝 在一個類中,此分頁類的具體代碼如下所示:
private List<T> allResult; // 所有結果 private List<T> list; // 數據結果 private int pageSize = 10; // 每頁行數 private int currPage = 1; // 當前頁數 private int maxPage; // 最大頁數 private int rowCount; // 總行數 private String formId; //表單id private String url; // 分頁方法地址
public int getRowCount() {
return rowCount;
}
public void setRowCount(int rowCount) { this.rowCount = rowCount;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) { this.list = list;
}
在員工的基本信息表中有員工的頭像信息,所以在添加職工和修改職工
信息時涉及到了文件上傳問題,下面是通過struts2來實現文件上傳的代碼:
public static void saveImg(File file,String fileName,String type) throws Exception{
// 首先獲得上傳的文件夾的路徑
String filePath = getPath();
File imgFile = new File(filePath+"/images/"+type+"/"+fileName);
// 如果存在同名的文件就將其刪除
if(imgFile.exists()){
imgFile.delete();
}
copyFile(file,imgFile);
}
/**
*文件拷貝:將源文件拷貝到目的文件
*@param srcFile
*@param disFile
*/
public static void copyFile(File srcFile,File disFile) throws Exception{
BufferedInputStream bis = new BufferedInputStream(new
FileInputStream(srcFile),BUFFERE_SIZE);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(disFile),BUFFERE_SIZE);
byte buffer[] = new byte[BUFFERE_SIZE];
int len = 0;
while((len=bis.read(buffer))>0){ bos.write(buffer,0,len);
}
bos.close();
bis.close();
}
public static List<String> saveImg(List<File> upload,List<String> uploadFileName,List<String> uploadContentType,String type){
List<String> fileNameList = new ArrayList<String>();
if(Validate.collectionNotNull(upload)&&Validate.collectionNotNull(uploadFileNa me)
&&(upload.size()==uploadFileName.size())){
// 得到上傳目錄的絕對路徑
String filePath = getPath();
for(int i=0;i<upload.size();i++){
String fileName = uploadFileName.get(i);
String suffixName = getSuffixName(fileName);
// 如果文件的擴展名為空,則跳過此文件
if("".equals(suffixName))
continue;
String newFileName = IDHelper.uuid()+suffixName;
// 首先創建新文件
File f = new File(filePath+"/images/"+type+"/"+newFileName);
// 將上傳的文件拷貝到目標文件夾中
try { copyFile(upload.get(i),f);
} catch (Exception e) {
e.printStackTrace();
// 如果保存失敗,將文件名設置為 ERROR fileNameList.add("ERROR"); continue;
}
// 將新文件名放入List返回
fileNameList.add(newFileName);
}
}
return fileNameList;
系統管理在系統運行初始會對用戶進行賬戶設置、權限設置。對于系統安全 的基本防線,權限管理的作用不言而喻。
權限管理的類圖如圖6-3所示。每個用戶屬于某個組,即有某種職務,而對于 擁有不同職務的用戶來說是不同的角色,對于不同的角色來說他可以操作的系統 模塊是不同的。
圖6-3 權限設計類圖
本系統中權限的設置的具體代碼如下所示:
public class RoleActionOperateService implements IService {
private BaseDao<RoleActionOperateInfo> roleActionOperateDAO = null; private BaseDao<ActionOperateInfo> actionOperateDAO = null;
@Autowired
public void setSessionFactory(SessionFactory sessionFactory) { roleActionOperateDAO = new
BaseDao<RoleActionOperateInfo>(sessionFactory,RoleActionOperateInfo.class);
actionOperateDAO = new
BaseDao<ActionOperateInfo>(sessionFactory,ActionOperateInfo.class);
}
//更新角色
public void update(List<String> idList,String flag,String roldId) throws
Exception{
for(String id : idList){
//首先判斷有沒有該條數據
String hql = "from RoleActionOperateInfo raoi where raoi.actionOperate.id = ? and raoi.role.id=?";
List<RoleActionOperateInfo> list =
roleActionOperateDAO.find(hql,id,roldId);
//啟用 if("T".equals(flag)){
//首先判斷有沒有,有則更新,沒有則新建 if(list.size()>0){
RoleActionOperateInfo raoi = list.get(0); raoi.setState("T");
roleActionOperateDAO.update(raoi);
}else {
RoleActionOperateInfo raoi = new RoleActionOperateInfo();
ActionOperateInfo aoi = actionOperateDAO.get(id); RoleInfo ri = new RoleInfo(); ri.setId(roldId);
raoi.setActionOperate(aoi);
raoi.setRole(ri); raoi.setWebId(aoi.getWebId()); raoi.setState("T");
roleActionOperateDAO.save(raoi);
}
}else if("F".equals(flag)){
if(list.size()>0){
RoleActionOperateInfo raoi = list.get(0); raoi.setState("F");
roleActionOperateDAO.update(raoi);
6.2系統界面的實現
6.2.1基本信息管理模塊的界面實現
在基本信息管理模塊的界面實現中,四個基本信息的管理相似,都主要是實
現了基本信息的查看、刪除、添加和修改。商品基本信息管理界面如圖6-4所示。
•/衛進商貿有限公司
VD遠洋商貿有限公司管理系統
▼匕基本信息管理 商品基本信息管理
商品信息管理 添加商品
u商品種類管理 口客戶信息管理
□供應商信息管理 » 口業務管理 »口人爭信息管理 A □系統維護 ]擺索
商品名稱 類別 進價 售價 單位 庫存數量
19 5備胎 汽車竹炭坐墊 汽車用品
汽車用品 200
70 250
95 條
亍 300
300 查看」修改刪除 查看'修改刪除
上頁 1 下頁
圖6-4 商品信息界面
點擊商品信息管理時出現商品的信息列表,在列表中列出了商品的名稱、類 型、進價、售價、庫存信息和單位等信息。通過這些信息的羅列可以很清楚的查 看商品的基本信息。
由于企業規模比較大,商品的種類的增多,想要迅速從列表中找到某一商品 也是非常困難的。所有設立了搜索按鈕。在搜索的文本框里可以輸入商品的編號 或者商品的名稱,點擊搜索,便會顯示所有符合搜索條件的商品列表,方便了用 戶的尋找。
如果想進一步獲得商品的信息可以點擊查看按鈕來進一步了解商品的基本信 息。如果某一個商品的信息需要有所改動時,在權限允許的情況下,用戶可以點 擊修改按鈕,在修改界面上對基本信息進行修改后,進行保存。保存成功后 ,修 改后的商品信息就會在界面上反應出來。在此頁面中也可以對某個商品信息進行
刪除,想要刪除某件產品可以點擊本商品右邊的刪除按鈕,對本商品進行刪除。
因為商品刪除后無法進行恢復,所以要慎重使用刪除按鈕。
在商品基本信息管理界面中也可以點擊添加信息來添加新的商品信息。因為 查看和修改商品信息和添加新商品信息界面較為相似,所以以添加新的商品信息 為例來介紹查看、修改和添加新信息的界面情況。添加新商品信息界面如圖 6-5 所示:
J遠洋商貿有限公司
詢遠洋商貿有限公司管理敘 ▼□基本信息管理
□商品信息管理 u商品種類管理
L]客戶信息管理
U供應商信息管理 山業務管理 »口人事信息管理
系麴護
I提交11取消I
圖6-5 添加商品信息界面
依次在頁面中填寫商品的基本信息,填寫完成之后點擊提交,系統便將此商 品的基本信息保存到數據庫中。如果不想保存此商品的信息,則點擊取消,取消 此次的新建商品信息,返回商品列表顯示的主界面。
客戶信息管理和供應商信息管理基本類似,這里通過介紹客戶信息管理界面 來展示客戶信息管理和供應商信息管理。客戶信息管理的界面如圖6-6所示。
圖6-6 客戶信息管理的界面
在列表中展現了客戶名稱、聯系方式、郵箱等基本常用的信息,其他的不常 用的信息在這個頁面不予展示,如果需要查看更加詳細的信息需要點擊查看按鈕 來進一步的查看基本信息。在界面上除了客戶的基本信息之外,還有這個客戶的 主要業務負責人。當這個客戶有需求或者在供應上出現問題是,通過查看此客戶 的業務負責人,可以很方便的找到與客戶有聯系的負責人,迅速的解決出現的問 題。除了這些,界面上還顯示了客戶的累積交易額度和信用評級。通過累積交易 額度可以很清楚明了的知道用戶對于企業的重要性,為企業業務的進一步開展提 供數據支持,而通過信息評級可以了解客戶在以前的交易中信用狀況,為客戶的 選擇提供支持。
6.2.2公司業務管理界面的實現
業務管理界面的風格與基本信息管理界面的風格基本一致,其中采購管理跟 銷售管理界面更是相似,下面以采購界面為例來介紹銷售和采購界面的實現。
點擊業務管理進入業務管理模塊,再點擊采購管理進入采購管理界面,在采 購管理界面可以對已經采購的商品進行查詢、添加、修改和刪除,同時也可以為 采購的商品添加詳細信息,記錄此貨物供應商的信用等。采購管理的界面如圖6-7 所示。
•上遁茫商貿有限公司
T匕遠洋商貿有限公司管理系統
»口基本信息管理
▼匕業務管理 業務管理
添加采購
| □采購管理 [搜索
~Ej銷售管理
□倉庫管理 » 口人事信息管理 表單號 供應商 商品名稱 采購日期 總價 采購人
10001
100012 北京汽車用品
車主之家 任我游導僦儀 汽車警報器 2011-8-16
2011-8-15 300000.0
20000.0 胡志明
郭采潔 查看臃改 刪除 添期明細 查看腕改 刪除 添加明細
A □系兢維護
上頁 1 下貢
圖 6-7 采購界面
倉庫管理主要是顯示倉庫中商品的品種和數量。其中的搜索功能除了可以通 過商品編號和商品名稱來對倉庫中信息進行檢索外,由于查看倉庫中商品主要是 為進一步進貨等來做準備,所以外加了一個通過庫存數量來檢索的功能。通過這 個檢索功能,可以很方便的看出哪些產品需要再次進貨。
6.2.3企業內部管理模塊界面的實現
在人事管理系統中,上級有權限查看下級員工的基本信息和所管轄部門的基 本信息。部門信息和員工信息的界面相似,下面就以查看員工信息的界面為例來 說明具體功能。
上級可以通過部門、職工編號、職工姓名的任意一種或者三者的組合來查詢 員工的具體信息。也允許上級在自己所管轄的部門中創建新的員工。在員工的列 表中,可以查看員工更相信的信息,如照片、簡歷、薪資等。上級可以刪除自己 所管轄的員工,但是因為遠洋貿易公司規模并不是很大,數據庫足可以支持此公 司員工數量的增長,因此刪除操作只會在數據庫中將員工的狀態設為離職狀態, 而非真正刪除員工的基本信息,方便公司以后對員工數據的查詢。員工信息界面 如圖 6-8所示。
•/遠洋商貿有限公司
▼巴遠洋商貿有限公司管理系統
A CJ基本信息管理
ACJ業務■管理
▼已人事信息管理 人事倍息管理
部門: 職工編號:| | 職工姓名:| |搜索 添加員工
□員工信息管理 |編號 姓名 性別 所J1部門 職務 電話
匕部門信息管理
U于人信息管理
ACJ系統錐護 2009120304
2010010309 王亮
李新 男 銷售部 人事部 員工
員工 18795595464
18795337676 詳細信息 編輯 刪除
詳細信息 編輯 刪除
上頁 1 下頁
圖 6-8 員工信息界面
對于新員工的添加,可以由部門管理人員來添加新員工,此員工的管理權限 屬于添加此員工的部門管理人員。也可以由員工自己在登錄界面進行注冊,此時 員工的管理權限自動被賦予員工注冊所屬部門的管理人員。員工注冊界面,基本 與員工信息修改界面和信息查看界面一致,員工注冊界面如圖 6-9所示。
遠洋商貿有限公司
▼ □遠洋商貿有限公司管理系統
• CJ基本信息管理
2業務管理
▼ £?人爭信息管理
□員工信息管理
口部門信息管理
□亍人信息管理
2系頸維護
圖 6-9 員工注冊界面
6.3本章小結
本章主要介紹了遠洋商貿有限公司的信息管理系統的實現。介紹了整個系統 的建設結構,然后介紹了系統的表現層、邏輯層和數據持久層的詳細實現流程。 本章還介紹了在系統實現過程中的關鍵技術。最后給出了系統的實現界面。
第七章 系統的測試
經過上面一章內容的介紹,大家對整個系統的已經有一個較為清晰的了解, 下面來說一下系統的測試。通過測試我們可以很大程度的保證程序的穩定運行。
7.1對系統功能的測試
眾所周知,功能的測試就是指的對系統的各個功能進行測試,看一下得到的 結果是否跟預期的結果相同,一般來說這一測試都是非透明的測試,也就是所謂 的黑盒測試。
本系統是有很多的小的功能模塊組合成,所以要進行測試的話就必須先從小 的功能模塊進行測試。在每個小功能點開發完成之后,會寫單元測試來保證每個 方法的邏輯是正確可靠的。在每個模塊開發完成之后我們會首先在 team 中進行 codeReview,首先通過程序員的經驗和對業務的理解在第一時間發現系統中存在 的問題。然后我們采用了“白盒測試”的方法,找一些與系統開發無關的人員, 隨機的生成很多的數據,來對系統的各個小的功能模塊進行測試。在測試的過程 中,如果有紕漏的話自然而然的就會被發現,從而我們就可以對系統進行更好的 改進了。
經過一系列系統的測試,可以發現系統中存在的大量缺陷,這樣就可以很好 的幫助開發人員更加清楚的理解各種業務,提高系統的質量。
7.1.1模塊測試用例
測試用例的編寫應該以盡可能的覆蓋到整個邏輯為目標,所以測試用例需要 很詳細的列出每個功能點可能出現的情況。因為商品模塊基本涵蓋了對數據庫的 插入、刪除、修改、查詢等主要功能,所以礙于篇幅,我們以商品測試模塊為代 表來說明一下系統的模塊測試用例。商品測試模塊測試表如下表7-1所示。
表7-1 商品測試模塊測試表
測試項目: 商品管理模塊
測試對象: 商品管理的各項功能
測試: 測試的主要內 容 測試詳細步驟 測試的結果
1 沒有商品管理 權限人員添加 商品 無商品管理權限的人員(財務測 試賬號01)登錄進入系統,點擊 添加商品。 系統提示用戶沒有權限添
加商品。
2 有商品管理權 限人員添加商 品 登錄系統,點擊添加商品汽車遮 陽罩遮陽擋,在頁面總填入必要 的商品信息(編號:7784250, 名稱卡努奇商品汽車遮陽罩遮 陽擋,單位卡努奇供銷公司,類 別其他車貼,進價18,售價60, 備注無),點擊保存。 系統正確保存改商品的詳 細信息,并可以在商品查 看頁查看到該商品的信 息。
3 商品添加頁填 寫錯誤的商品 信息 登錄系統,點擊添加商品,在商 品詳情頁面填入錯誤的信息, (編號:改用中文編號,名稱卡 努奇商品汽車遮陽罩遮陽擋,單 位卡努奇供銷公司,類別其他車 貼,進價18,售價60,備注無), 點擊保存。 系統不予保存,并在編號 字段提示信息填寫錯誤。
4 商品添加頁有 些字段沒有填 寫 登錄系統,點擊添加商品,在商 品詳情頁填寫信息,但是有幾個 必填字段沒有填寫(編號: 7788250,名稱卡努奇商品汽車 遮陽罩遮陽擋,單位卡努奇供銷 公司,類別其他車貼,進價,售 價60,備注無)點擊保存。 系統不予保存,并提示用 戶進價字段沒有填寫,讓 用戶進行填寫。
5 有商品管理權 限人員刪除商 品 系統管理員登錄系統,點擊進入 商品展示頁面,刪除某個商品的 信息。 系統提示用戶是否確定要 刪除此商品,用戶點擊確 定刪除此商品的所有信 息,用戶點擊取消不做任 何操作。
6 有商品管理權
限的人員修改
商品信息 登錄系統,點擊進入商品展示頁 面,點擊某個需要修改的商品右 邊的修改鏈接,出現此商品的詳 情填寫頁,在頁面上對此商品進 行修改。將2步保存的商品詳情 售價改為57,并點擊保存。 系統將此商品的詳細信息 改為修改后的信息,并且 不能多插入一條數據。
7 搜索存在商品
功能 用戶登錄系統,點擊進入商品展 示頁面,輸入某個商品編號 (7788250),點擊搜索。 系統正確查詢出編號為 7788250商品的詳細信息。 無多余商品信息出現
8 搜索不存在功
能 用戶登錄系統 ,點擊進入商品 展示頁面,輸入一個系統不存在 的商品編號(7788678),點擊搜 系統查出 0 條相關的商品 信息。
索。
9 輸入錯誤的搜 索條件 用戶登錄系統,點擊進入商品展 示頁面,在搜索欄中輸入太陽 擋,點擊搜索。 提示用戶輸入搜索的商品 編號有誤,請用戶重新輸 入。
10 搜索條件為空 用戶輸入正確的商品編號,查詢 出記錄后,將搜索內容置為空, 點擊搜索 將搜索出全部的商品信
息。
7.2系統非功能性需求測試
主要針對的是系統的非功能性需求,看系統是否可以達到各種非功能性的要 求,比如:容錯性要求,可靠性要求等等。主要包括的測試有:對異常情況的測 試,對性能的測試以及對健壯性的測試等等。經過系統的非功能性需求測試后便 可以確保本系統沒有明顯的異常,具有良好的健壯性,保證了系統的需求分析中 的各種非功能性要求。
下面的表7-2給出了系統分功能性測試的相關情況。
表7-2 系統非功能性測試表
測試項目 測試內容 測試結果 效果
容錯性 輸入錯誤命令 系統可以有效的檢測出 良好
可靠性 使用一些破譯工具 系統可以有效的抵抗 良好
健壯性 輸入一些極端的情況 系統可以有效的處理 良好
高效性 輸入復雜的命令 系統可以再規定時間內完成 良好
在測試的過程進行系統的改進是一項長期的重要的工作,通過對系統的功能 測試,有效地保證了系統中的各個功能模塊,同時也為進一步對需求的理解提供 了良好的依據。
7.3本章小結
本章主要對系統的功能測試和性能測試進行了描述,通過功能測試我們保證
了系統的業務流程的正確性,并對系統的邏輯業務有了更進一步的認識。通過對 非功能性需求的測試我們保證了系統的健壯性、容錯性等性能。
第八章 結論
本文根據遠洋商貿有限公司的實際需求,采用了采用面向對象的軟件工程開 發技術,完成了遠洋商貿有限公司的信息管理信息系統的需求分析、架構設計、 詳細設計和最終的實現。本文利用J2EE平臺和SSH框架實現了。該系統將公司內 部很多繁雜的管理工作集中到一個系統中,利用網絡的快捷優勢節約了公司的管 理成本,既提高了企業員工的工作效率,又為員工的工作帶來了方便。系統的架 構在充分考慮到客戶的需求的基礎上也充分考慮了軟件的復用和系統以后的擴 充,使軟件的可用性得到極大的增強。
畢業論文是一次非常難得的理論與實際想結合的機會,通過這次比較完整的 對一個實際應用系統設計和實現,我擺脫了單純的理論學習狀態,和實際設計的 結合鍛煉了我的綜合運用所學的專業知識,解決實際問題的能力,同時也提高我 查閱文獻資料、設計手冊、設計規范等其他專業能力水平,而且通過對整體的掌 控,對局部的取舍,以及對細節的斟酌處理,都使得我的能力得到鍛煉,經驗得 到豐富,并且意志品質力抗壓能力以及耐力都得到極大的提升。
雖然系統已經完成,論文也已經寫完,但是由于這是我實際開發的第一個項目, 在開發的過程中肯定還會有很多遺漏的疏忽。而且在設計的時候考慮的不全面和 在實現的時候技術的不成熟都使得整個項目在開發過程中走了不少彎路。但是在 錯誤中的成長也是很迅速的,在這次開發當中,學習到了很多課本之外的知識, 同時通過實際開發中問題的處理方式又加深了對很多課本知識的理解,對我以及 今后的工作和學習有非常重要的意義。
同時,系統已經交付給用戶,隨著用戶的使用以及時間的推移,可能會有更多 地需求和發現系統中更多地不足之處,要及時響應用戶提出的問題并對項目作進 一步的改進,不斷完善系統。
順利如期完成本次畢業論文的設計和實現給了我很大的信心,讓我了解專業知 識的同時也對本專業的發展前景充滿信心。
首先衷心感謝我的導師李發根老師對我學術上的指導和幫助。在這篇碩士學位 論文的寫作過程中,李老師從論文題目的確定、開題報告的修改、論文的編寫和 修改等各個方面都給我提出了很多的建議,給予了我很多的幫助,正是有了李老 師的指導和幫助我才能最終完成這篇論文的撰寫。在寫論文的過程中,李老師的 嚴謹治學的態度和淵博學都讓我折服,也從老師身上學到了很多治學和做人的道 理。
此外,我還要感謝給我授課的其他老師,正是因為他們的教導我才能夠掌握足 夠的知識來完成這篇碩士學位論文。
在這次論文寫作的過程中,學到了很多,只有扎實的專業知識本領、嚴謹的態 度、獨立的思考和分析能力才能夠高質量的完成論文的撰寫。
參考文獻
[1]張海藩.軟件工程導論.北京:清華大學出版社出版.2003,1-173
[2]薩師煊.數據庫系統概論(第二版).北京:高等教育出版社.1991,8-40
[3]施伯樂,丁寶康,汪衛.數據庫系統教程.北京:高等教育出版社.2002,1-202
[4]趙守香,姜同強, 王雯.企業信息化.北京清華大學出版社,2008,89-90
[5]陳建斌.IT能力與企業信息化.北京:電子工業出版社,2010,78-90
[6]Shalloway,Alan,Trott,James.Design patterns explained:flow perspective
on object一oriented design.北京: China Machine Press, 2006
[7]唐桂華,夏暉•我國的MIS開發現狀及發展趨勢•電子科技大學學報(社科版),2002,4(2),
32-35
[8]信息管理系統.http://wiki.mbalib.com/wiki/MIS
[9]David.M.Kroenke.管理信息系統.北京:機械工業出版社,2010, 12-21
[10]工業和信息化部中小企業司.國外中小企業政策對比研究.北京:機械工業出版社,2010,
77-84
[11]劉俊娥.制造型企業信息化建設方案設計及實施指南.北京:機械工業出版社,2010,63-69
[12]W.Crawford,J.Kaplan.J2EE Design Patterns.America:Wrox.2003 ,41一49
[13]企業檔案信息化戰略研究課題組.企業檔案信息化戰略之選. 廣東:廣東省出版集團,廣東
人民出版社,2010,22-24
[14]HIBERNATE-Relational Persistence for Idiomatic Java.
http://www.hibernate.org/hib-docs/reference/html
[15]Bruce Eckel,候捷譯.Java編程思想.北京:機械工業出版社,2002,177-179
[16]Struts 官方網站.http: //Jakarta, apache, org / struts
[17]陳宗嬌•基于Struts+Spring+Hibernate多層框架的Web應用系統與實現:]碩士學位論文].
遼寧:遼寧工程技術大學,2006
[18]Rod Johnson.Introducing the Spring Framework.
http://www.springframework.org/docs/reference/beans.html#beans-factory-class
[19]高劍.通用企業應用平臺的交互控制層的設計與實現:[ 碩士學位論文].遼寧:東北大
學,2004
[20]Erie Annstrongetal.The J2EE 1.4 Tutorial.SUN 公司,2005
[21]Johnson RE.Frameworks-(Components+Pattern).Communications of the ACM,1997,39-42
[22]James Holmes.Struts:The Complete Reference.Mcgraw-Hill Osborne Media,2004,44-56
[23]Steven Holzner.Struts:Essential Skills.McGraw—HilI/OsborneMedia,2004,6-7
[24]劉瑜,王立福,張世琨.軟件框架開發過程研究.計算機工程與應用,2004,2(3),26-30
[25]邢漢發,許禮林,雷瑩.基于角色和用戶組的擴展訪問控制模型.計算機應用研
究,2009,1(3),32-36
[26]Thomas Risberg.Spring live.http://jroller.com/page/raible,2004,10
[27]李婷.基于角色的權限管理策略在企業信息系統中的應用.電腦知識與技
術,2008,35(4),78-82
[28]裴容生,楊勇.WEB應用程序安全控制的實現.成都大學學報(自然科版),2006,25(3),32-36
[29]Hibernate:Object/Relational Mapping and Object Persistence for
Java.http://hibemate.bluemars.net/,2003
[30]高洪巖.基于基于Struts2+Hibernate+Spring實用開發指南.北京:化學工業出版社,2010,
54-55
[31]吳亞峰,索依娜.30天學通Java Web項目案例開發.北京:電子工業出版社,2009, 40-42
[32]馬曉玉,孫巖.Oracle 10g數據庫管理 應用與開發.北京:清華大學出版社,2007,64-78
[33]李燁.別具光芒CSS屬性、瀏覽器兼容與網頁布局.北京:人民郵電出版社,2008,56-66