基于MVC模式電信IP網(wǎng)計費系統(tǒng)_第1頁
基于MVC模式電信IP網(wǎng)計費系統(tǒng)_第2頁
基于MVC模式電信IP網(wǎng)計費系統(tǒng)_第3頁
基于MVC模式電信IP網(wǎng)計費系統(tǒng)_第4頁
基于MVC模式電信IP網(wǎng)計費系統(tǒng)_第5頁
已閱讀5頁,還剩78頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于MVC模式電信IP網(wǎng)/計費系統(tǒng)(NetCTOSS)摘要運營支撐系統(tǒng)(OperationSupportSystem,縮寫成OSS)已經(jīng)成為電信運營管理不可缺少的組成部分。它是借助IT手段實現(xiàn)對電信網(wǎng)絡(luò)和電信業(yè)務(wù)的管理,以達到支撐運營和改善運營的目標。近幾年OSS得到了業(yè)界的極大關(guān)注,曾被多家主流媒體列為幾大流行技術(shù)之一。本系統(tǒng)采用由亞信公司提供的“電信用戶管理和計費系統(tǒng)NetCTOSS”,該系統(tǒng)已經(jīng)在中國共用互聯(lián)網(wǎng)ChinaNet和上海熱線等多個大型軟件工程中應(yīng)用。該系統(tǒng)是基于B/S模式的MVC架構(gòu),在模塊于模塊之間達到了高內(nèi)聚和低偶合的軟件設(shè)計要求,該系統(tǒng)的另一特點是底層由C++跟Proc實現(xiàn)的C/S模式,這樣可以達到在數(shù)據(jù)根采集和整合上的效率,該系統(tǒng)是一個典型的基于Unix平臺、Oracle數(shù)據(jù)庫、Web界面,融合Java和C++兩種語言實現(xiàn)的大型軟件項目。關(guān)鍵詞:C/S;MVC;Oracle;Java,C++和Proc;NetCTOSS;目錄TOC\o"1-3"\h\u第一章緒論 3第二章開發(fā)環(huán)境及開發(fā)工具的介紹 42.1JDK概述 42.1.1安裝JDK 42.1.2JDK環(huán)境變量的配置 42.2Eclipse概述 52.2.1Eclipse的結(jié)構(gòu)和內(nèi)核 52.3MyEclipse的概述 62.4Tomcat概述 62.4.1安裝和配置Tomcat 72.5Oracle的概述 82.5.1Oracle9i的特性 8第三章完成電信運營支撐系統(tǒng)所用到的技術(shù) 83.1Jsp概述 83.1.1Jsp的功能 83.1.2JSP的特點 93.2Struts概述 103.2.1Struts的體系結(jié)構(gòu) 103.2.2使用Struts的主要優(yōu)點與缺點 113.3Spring概述 113.3.1Spring的簡介 123.3.2Spring的架構(gòu)性的好處 123.4Hibernate概述 123.4.1Hibernate技術(shù) 123.4.2Hibernate的工作方式 13第四章系統(tǒng)需求分析 144.1系統(tǒng)設(shè)計思想 145.2業(yè)務(wù)描述 155.3系統(tǒng)的界面要求分析 155.4系統(tǒng)的角色及功能分析 15第五章系統(tǒng)總體設(shè)計 175.1系統(tǒng)的總體流程 175.2系統(tǒng)的模塊劃分 185.3NetCtoss系統(tǒng)的功能要求 185.4系統(tǒng)實體間的聯(lián)系 195.5NetCtoss系統(tǒng)的數(shù)據(jù)處理 19第五章NetCtoss詳細設(shè)計 215.1數(shù)據(jù)庫設(shè)計 215.2模塊的具體實現(xiàn) 265.3遇到的問題 40結(jié)論與體會 40致謝 41參考文獻 41附錄一:英文資料原文 42附錄二:英語資料譯文 68第一章 緒論 當前.在電信領(lǐng)域,由于電信市場的開放和市場競爭的日益激勵,為了提高電信企業(yè)的服務(wù)水平,降低成本,提高效益和客戶滿意度,電信企業(yè)建設(shè)和投資的重點已經(jīng)從網(wǎng)絡(luò)基礎(chǔ)設(shè)施轉(zhuǎn)向以電信軟件為核心的電信信息基礎(chǔ)設(shè)施,其中電信運營支撐系統(tǒng)(OSS,OperationSupportSystem)是建設(shè)和投資的重中之重。這也吸引拉越來越多的國內(nèi)企業(yè)甚至國際上的專業(yè)公司投入到這個市場上來,帶動拉電信運營支撐系統(tǒng)在技術(shù)上的飛速發(fā)展。 電信運營支撐系統(tǒng)涉及計算機軟件技術(shù)和通信技術(shù)的倆個科學(xué)領(lǐng)域,經(jīng)過國內(nèi)外幾十年的發(fā)展,已經(jīng)形成了自身比較完善的體系結(jié)構(gòu)。目前發(fā)展迅速,應(yīng)用廣泛,技術(shù)更新比較會,用“日新月異”來形容一點都不過分。 其實電信運營支撐系統(tǒng)存在的問題歸納起來是缺乏理論的研究和指導(dǎo),缺乏有效的技術(shù)支持,同時電信義務(wù)支撐本身又是研究的焦點。它需要計算機與通信技術(shù)的集合,需要具有深厚的通信義務(wù)基礎(chǔ)的計算機軟件人才的參加,電信運營支撐系統(tǒng)目前值得深入研究的內(nèi)容很多,重點是在如何將最新的計算機軟件技術(shù)用在電信義務(wù)支撐上。第二章開發(fā)環(huán)境及開發(fā)工具的介紹2.1 JDK概述 JDK中包含了Java開發(fā)中心必需的工具和Java程序運行環(huán)境(JRE)。可以從SUN公司網(wǎng)站免費下載JDK1.4.2。2.1.1安裝JDKJDK的安裝特別簡單,和安裝應(yīng)用程序軟件沒什么區(qū)別,值得注意的是JDK的安裝路徑一定要設(shè)好,方便以后環(huán)境變量的設(shè)置。2.1.2JDK環(huán)境變量的配置安裝好JDK后,還需要在環(huán)境變量中進行對應(yīng)的配置。就以本次畢業(yè)設(shè)計為例。JDK安裝在D:\j2sdk1.4.2。主要進行以下配置:(1)設(shè)置JAVA_HOME環(huán)境變量(2)設(shè)置CLASSPATH環(huán)境變量(3)更新PATH環(huán)境變量的值JAVA_HOME表示Java安裝目錄,其他的應(yīng)用程序如果需要使用Java運行環(huán)境,首先獲得JAVA_HOME變量的信息,然后確定執(zhí)行的路徑。在鼠標右鍵單擊“我的電腦”,在屬性欄的高級選項中可以選擇環(huán)境變量的設(shè)置,新建一個系統(tǒng)變量或者用戶變量,名稱為JAVA_HOME,它的值為D:\j2sdk1.4.2。如圖:圖2.1JAVA_HOME變量設(shè)置然后建立一個CLASSPATH的變量,它表示搜索Java類的路徑,這個路徑可以包含一些Jar歸檔文件,也可以是一個目錄。在應(yīng)用程序執(zhí)行是,往往會動態(tài)地在CLASSPATH中添加一些自己需要的路徑,本機上CLASSPATH的值為“.;d:\j2sdk1.4.2\lib\tools.jar;d:\j2sdk1.4.2\lib\dt.jar;”(.;一定不能少)。圖2.2CLASSPATH變量設(shè)置當以上都配置好了,我們可以測試下Java環(huán)境是否配置成功。我們可以在[運行]中進入[命令提示符cmd]下面。輸入java–version回車,看是否能看到當前JDK的版本。如果看見就配置成功了。2.2Eclipse概述Eclipse是以個集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment)。其前身是IBM的VisualAgeforJava(VA4J),IBM投入了3千萬美元。Eclipse是可擴展的體系結(jié)構(gòu),可以集成不同軟件開發(fā)供應(yīng)商開發(fā)的產(chǎn)品,將他們開發(fā)的工具和組件加入到Eclipse平臺中。

隨Java應(yīng)用的廣泛,各大主要軟件供應(yīng)商都參與到Eclipse架構(gòu)開發(fā)中,使得Eclipse插件數(shù)量與日增加。其中,IBM的WebSphereStudioWorkbench是突出的例子。Eclipse平臺的免費,架構(gòu)的成熟,行業(yè)協(xié)會Eclipse基金會的支持,使得很多的Java開發(fā)采用了Eclipse架構(gòu)。如今,IBM通過起附屬的研發(fā)機構(gòu)ObjectTechnologiesInternational(OTI),繼續(xù)引領(lǐng)Eclipse開發(fā)。2.2.1Eclipse的結(jié)構(gòu)和內(nèi)核

插件(plug-in)是遵循一定規(guī)范的應(yīng)用程序結(jié)構(gòu)編寫出來的程序,也成為擴展,不同于組件。Eclipse正是一個精心設(shè)計的、可擴展的核心結(jié)構(gòu)。通過插件的形式,將根據(jù)自己需要選擇的擴展開發(fā)工具集成到Eclipse平臺核心。因此使得可以避免因過去不兼容工具帶來的麻煩,降低開發(fā)出成本,大幅度提高工作效率。

Eclipse本身作為一個開放源碼的軟件項目,它主要包含3個子項目:①平臺子項目,②Java開發(fā)工具(JDT-java)子項目,③插件開發(fā)環(huán)境(PDE-plug-in)子項目。其中,Java開發(fā)工具JDT為開發(fā)人員提供大量的集成工具集,主要為Java應(yīng)用程序提供編程接口(API)。Eclipse軟件開發(fā)工具箱(SDK)是主要有Eclipse本身的項目軟件和其他一些開發(fā)源嗎的第三方軟件組成。次者,插件開發(fā)環(huán)境(JDT)則為插件開發(fā)和測試提供相應(yīng)的環(huán)境,如:創(chuàng)建插件清單文件、定義擴展點等。

其他的Java集成開發(fā)環(huán)境有Jbuilder、WebSpherStudio、NetBeans。然而Eclipse以其強大的可擴展性和開放性脫穎而出,擁有為數(shù)眾多的支持者,也被許多大的企業(yè)所青睞。2.3MyEclipse的概述MyEclipse企業(yè)級工作平臺(MyEclipseEnterpriseWorkbench,簡稱MyEclipse)是對EclipseIDE的擴展,利用它我們可以在數(shù)據(jù)庫和J2EE的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的J2EE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。

在結(jié)構(gòu)上,MyEclipse的特征可以被分為7類:

1.J2EE模型

2.WEB開發(fā)工具

3.EJB開發(fā)工具

4.應(yīng)用程序服務(wù)器的連接器

5.J2EE項目部署服務(wù)

6.數(shù)據(jù)庫服務(wù)

7.MyEclipse整合幫助

對于以上每一種功能上的類別,在Eclipse中都有相應(yīng)的功能部件,并通過一系列的插件來實現(xiàn)它們。MyEclipse結(jié)構(gòu)上的這種模塊化,可以讓我們在不影響其他模塊的情況下,對任一模塊進行單獨的擴展和升級。

簡單而言,MyEclipse是Eclipse的插件,也是一款功能強大的J2EE集成開發(fā)環(huán)境,支持代碼編寫、配置、測試以及除錯。2.4 Tomcat概述Tomcat服務(wù)器是當今使用最廣泛的Servlet/JSP服務(wù)器。它運行穩(wěn)定,性能可靠,是學(xué)習(xí)和中小企業(yè)的最佳選擇,而且是開源程序,下載免費,大大降低系統(tǒng)的開發(fā)成本。我們可以從/tomcat下載Tomcat5.0服務(wù)器。2.4.1安裝和配置TomcatTomcat安裝也很方便。跟其他的安裝軟件差不多,主要是Tomcat環(huán)境的配置,本次設(shè)計Tomcat安裝目錄是D:\Tomcat。安裝完成以后,把Tomcat里面的類包(*.jar文件)包含到環(huán)境變量的CLASSPATH里面。這些Jar文件都在D:\Tomcat\common\lib目錄下。然后運行Tomcat程序,啟動Tomcat。在IE中,輸入:8080或者http://localhost:8080。如果出現(xiàn)Tomcat的歡迎頁面,就表示Tomcat的安裝和配置是正確的。測試Tomcat是否安裝成功當Tomcat配置成功以后,就要在%Tomcat%目錄下的webapps下面建立一個虛擬目錄,來方便將來程序的開發(fā)。本次設(shè)計是電信運營支撐系統(tǒng),所以我們在webapps下面新建立一個叫Netctoss的文件夾,然后使用TomcatAdministratortools來建立關(guān)于netctoss的虛擬目錄。這樣以后我們的程序就可以在netctoss文件夾下面進行,當設(shè)計完成以后,只要在IE里面輸入http://localhost:8080/Netctoss就可以看到你所設(shè)計的系統(tǒng)程序的實現(xiàn)了[3]。圖2.4TomcatAdministratortool頁面和hospital的虛擬目錄2.5Oracle的概述ORACLE9i是以高級結(jié)構(gòu)化查詢語言(SQL)為基礎(chǔ)的大型關(guān)系數(shù)據(jù)庫,通俗地講它是用方便邏輯管理的語言操縱大量有規(guī)律數(shù)據(jù)的集合。是目前最流行的客戶/服務(wù)器(CLIENT/SERVER)體系結(jié)構(gòu)的數(shù)據(jù)庫之一。2.5.1Oracle9i的特性

ORACLE9i作為第一套完整、簡單的軟件基層結(jié)構(gòu),展現(xiàn)了前所未有的可擴展性、高性能和應(yīng)用程序所需要的穩(wěn)定性,是專門為因特網(wǎng)系統(tǒng)提供的新一代智能型集成應(yīng)用軟件。

ORACLE9i增強了ORACLE的能力,使之在低檔軟硬件平臺上用較少的資源就可以支持更多的用戶,而在高檔平臺上可以支持成百上千個用戶。它提供了基于角色(ROLE)分工的安全保密管理。在數(shù)據(jù)庫管理功能、完整性檢查、安全性、一致性方面都有良好的表現(xiàn)。支持大量多媒體數(shù)據(jù),如二進制圖形、聲音、動畫以及多維數(shù)據(jù)結(jié)構(gòu)等。提供了與第三代高級語言的接口軟件PRO*系列,能在C,C++等主語言中嵌入SQL語句及過程化(PL/SQL)語句,對數(shù)據(jù)庫中的數(shù)據(jù)進行操縱。加上它有許多優(yōu)秀的前臺開發(fā)工具如POWERBUILD、SQL*FORMS、VISIABASIC等,可以快速開發(fā)生成基于客戶端PC平臺的應(yīng)用程序,并具有良好的移植性。

ORACLE9i數(shù)據(jù)庫在物理上是存儲于硬盤的各種文件。它是活動的,可擴充的,隨著數(shù)據(jù)的添加和應(yīng)用程序的增大而變化。在邏輯上是由許多表空間構(gòu)成。主要分為系統(tǒng)表空間和非系統(tǒng)表空間。非系統(tǒng)表空間內(nèi)存儲著各項應(yīng)用的數(shù)據(jù)、索引、程序等相關(guān)信息。第三章完成電信運營支撐系統(tǒng)所用到的技術(shù)3.1Jsp概述JSP(IAVASERVERPAGES)是由Sun公司在java語言上開發(fā)出來的一種動態(tài)網(wǎng)頁制作技術(shù),其可使您可以將網(wǎng)頁中的動態(tài)部分和靜態(tài)的HTML相分離。您可以使用平常得心應(yīng)手的工具并按照平常的方式來書寫HTML語句。然后,將動態(tài)部分用特殊的標記嵌入即可,這些標記常常以“<%”開始并以“%>”結(jié)束3.1.1Jsp的功能JSP技術(shù)是由Servlet技術(shù)發(fā)展起來的,自從有了JSP后,在Java服務(wù)器端編程中普遍采用的就是JSP,而不是Servlet。因為JSP在編寫表示頁面時遠遠比Servlet簡單,并且不需要手工編譯,目前Servlet主要用于做視圖控制器,處理后臺應(yīng)用等。由于JSP構(gòu)建在Servlet上。所以它有Servlet所有強大的功能。在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標記,就構(gòu)成了JSP網(wǎng)頁(*.jsp)。JSP基于強大的Java語言,具有良好的伸縮性,與JavaEnterpriseAPI緊密地集成在一起,在網(wǎng)絡(luò)數(shù)據(jù)庫應(yīng)用開發(fā)領(lǐng)域具有得天獨厚的優(yōu)勢,基于Java平臺構(gòu)建網(wǎng)絡(luò)程序已經(jīng)被越來越多的人認為是未來最有發(fā)展前途的技術(shù)。從JSP這幾年的發(fā)展來看,JSP已經(jīng)獲得了巨大的成功,它通過和EJB等J2EE組件進行集成,可以編寫出處理具有大的伸縮性,高負載的企業(yè)級應(yīng)用。JSP技術(shù)在多個方面加速了動態(tài)Web頁面的開發(fā)。3.1.2JSP的特點(1)將內(nèi)容的生成和顯示進行分離使用JSP技術(shù),Web頁面開發(fā)人員可以使用HTML或者XML標識來設(shè)計和格式化最終頁面。使用JSP標識或者小腳本來生成頁面上的動態(tài)內(nèi)容。生成內(nèi)容的邏輯被封裝在標識和JavaBean組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運行。如果核心邏輯被封裝在標識和Bean中,那么其他人,如Web管理人員和頁面設(shè)計者,能夠編輯和使用JSP頁面,而不影響內(nèi)容的生成。在服務(wù)器端,JSP引擎解釋JSP標識和小腳本中,生成所請求的內(nèi)容,并且將結(jié)果以HTML頁面的形式發(fā)送回瀏覽器。這有助于作者保護自己的代碼,而又保護任何基于HTML的Web瀏覽器的完全可用性。(2)生成可重用的組件絕大多數(shù)JSP頁面依賴于可重用的,跨平臺的組件來執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。開發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,或者使用這些組件為更多的使用者或者客戶團體所使用?;诮M件的方法加速了總體開發(fā)過程,并且使得各種組織在他們現(xiàn)有的技能和優(yōu)化結(jié)果的開發(fā)努力中得到平衡。(3)采用標識簡化頁面開發(fā)Web頁面開發(fā)人員不一定都熟悉腳本語言的編程人員。JavaServerPage技術(shù)封裝了許多功能,這些功能是在易用的,與JSP相關(guān)的XML標識中進行動態(tài)內(nèi)容生成是所需要的。標準的JSP標識能夠訪問和實例化JavaBean組件,設(shè)置或者檢索組件屬性,下載Applet,以及執(zhí)行同其他方法更難于編碼或耗時的功能。通過開發(fā)定制標識庫。這使得Web頁面開發(fā)人員能夠使用熟悉的工具和如同標識一樣執(zhí)行特定功能的構(gòu)件來工作。(4)JSP能提供所有的Servlets功能與Servlet相比,JSP能提供所有的Servlets功能,它比用Println書寫和修改HTML更加方便。此外,您可以更明確地進行分工,Web頁面設(shè)計人員編寫HTML,只需要留出空間讓Servlets程序員插入動態(tài)部分即可。(5)健壯的存儲管理和安全性由于JSP頁面內(nèi)置腳本語言是基于Java編程語言的,而且所有的JSP頁面都被編譯成為JavaServlet,JSP頁面就具有Java技術(shù)的所有優(yōu)點,包括健壯的存儲管理和安全性。(6)一次編寫,隨處運行作為Java平臺的一部分,JSP擁有Java編程語言“一次編寫,隨處運行”的特點。隨著越來越多的供應(yīng)商將JSP支持添加到他們的產(chǎn)品中,您可以使用自己所選擇的服務(wù)器和工具,但并不影響當前的應(yīng)用。(7)JSP的平臺適應(yīng)性更廣這是JSP與ASP的優(yōu)越之處。幾乎所有的平臺都支持Java,JSP+Beans,它們可以在任何平臺下通行無阻。WindowsNT下的IIS通過一個插件就能支持JSP,例如JRUN或者ServletExec,著名的Web服務(wù)器Apache已經(jīng)能夠支持JSP。由于Apache廣泛應(yīng)用在WindowsNT,UNIX和Linux上,因此JSP有更廣泛的運行平臺。從一個平臺移植到另一個平臺,JSP和JavaBeans甚至不用重新編譯,因為Java字節(jié)碼都是標準的字節(jié)碼,與平臺無關(guān)。(8)簡單易學(xué)隨著JSP2.0中標簽語言的出現(xiàn),即使不懂Java的程序員也能編寫出功能完善的JSP應(yīng)用。3.2Struts概述Struts就是在JSPModel2的基礎(chǔ)實現(xiàn)了MVC設(shè)計模式的WEBFramework?;赟truts構(gòu)架的WEB應(yīng)用程序基本上符合JSPModel2的設(shè)計標準,可以說是MVC設(shè)計模式的一種變化類型。整個Struts大約有15包,近200個類所組成。

Struts這個名字來源于在建筑和舊式飛機中使用的支持金屬架。它的目的是為了幫助你減少在運用MVC設(shè)計模型來開發(fā)Web應(yīng)用的時間。你仍然需要學(xué)習(xí)和應(yīng)用該架構(gòu),不過它將可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的優(yōu)點來建立可擴展的應(yīng)用,Struts是一個不錯的選擇。3.2.1Struts的體系結(jié)構(gòu)

Struts有其自己的控制器(Controller),同時整合了其他的一些技術(shù)去實現(xiàn)模型層(Model)和視圖層(View)。在模型層,Struts可以很容易的與數(shù)據(jù)訪問技術(shù)相結(jié)合,包括EJB,JDBC和ObjectRelationBridge。在視圖層,Struts能夠與JSP,VelocityTemplates,XSL等等這些表示層組件想結(jié)合。

Strutsframework是MVC模式的體現(xiàn),下面我們就從分別從模型、視圖、控制來看看struts的體系結(jié)構(gòu)(Architecture)。下圖顯示了strutsframework的體系結(jié)構(gòu)響應(yīng)客戶請求時候,各個部分工作的原理。1:從視圖角度(View)

主要由JSP建立,struts自身包含了一組可擴展的自定義標簽庫(TagLib),可以簡化創(chuàng)建用戶界面的過程。目前包括:BeanTags,HTMLTags,LogicTags,NestedTags,TemplateTags這幾個Taglib。有關(guān)它們的詳細資料請參考struts用戶手冊.2:從模型角度(Model)

模型主要是表示一個系統(tǒng)的狀態(tài)(有時候,改變系統(tǒng)狀態(tài)的業(yè)務(wù)邏輯操作也也劃分到模型中)。在Struts中,系統(tǒng)的狀態(tài)主要有ActiomFormBean體現(xiàn),一般情況下,這些狀態(tài)是非持久性的。如果需要將這些狀態(tài)轉(zhuǎn)化為持久性數(shù)據(jù)存儲,Struts本身也提供了Utitle包,可以方便的與數(shù)據(jù)庫操作.3:從控制器角度(Controller)

在Strutsframework中,Controller主要是ActionServlet,但是對于業(yè)務(wù)邏輯的操作則主要由Action、ActionMapping、ActionForward這幾個組件協(xié)調(diào)完成(也許這幾個組件,應(yīng)該劃分到模型中的業(yè)務(wù)邏輯一塊)。其中,Action扮演了真正的業(yè)務(wù)邏輯的實現(xiàn)者,而ActionMapping和ActionForward則指定了不同業(yè)務(wù)邏輯或流程的運行方向。3.2.2使用Struts的主要優(yōu)點與缺點優(yōu)點Struts跟Tomcat、Turbine等諸多Apache項目一樣,是開源軟件,這是它的一大優(yōu)點。使開發(fā)者能更深入的了解其內(nèi)部實現(xiàn)機制。除此之外,Struts的優(yōu)點主要集中體現(xiàn)在兩個方面:Taglib和頁面導(dǎo)航。Taglib是Struts的標記庫,靈活動用,能大大提高開發(fā)效率。另外,就目前國內(nèi)的JSP開發(fā)者而言,除了使用JSP自帶的常用標記外,很少開發(fā)自己的標記,或許Struts是一個很好的起點。關(guān)于頁面導(dǎo)航使系統(tǒng)的脈絡(luò)更加清晰。通過一個配置文件,即可把握整個系統(tǒng)各部分之間的聯(lián)系,這對于后期的維護有著莫大的好處。尤其是當另一批開發(fā)者接手這個項目時,這種優(yōu)勢體現(xiàn)得更加明顯。缺點Taglib是Struts的一大優(yōu)勢,但對于初學(xué)者而言,卻需要一個持續(xù)學(xué)習(xí)的過程,甚至還會打亂網(wǎng)頁編寫的習(xí)慣,但是當你習(xí)慣了它時,你會覺得它真的很棒;Struts將MVC的Controller一分為三,在獲得結(jié)構(gòu)更加清晰的同時,也增加了系統(tǒng)的復(fù)雜度;它對類和一些屬性、參數(shù)的命名顯得有些隨意,給使用帶來一些不便;3.3Spring概述Spring的核心是個輕量級容器(container),實現(xiàn)了IoC(InversionofControl)模式的容器,Spring的目標是實現(xiàn)一個全方位的整合框架,在Spring框架下實現(xiàn)多個子框架的組合,這些子框架之間彼此可以獨立,也可以使用其它的框架方案加以替代,Spring希望提供one-stopshop的框架整合方案。3.3.1Spring的簡介Spring定位的領(lǐng)域是許多其他流行的framework沒有的。Spring關(guān)注提供一種方法管理你的業(yè)務(wù)對象。.Spring是全面的和模塊化的。Spring有分層的體系結(jié)構(gòu),這意味著你能選擇使用它孤立的任何部分,它的架構(gòu)仍然是內(nèi)在穩(wěn)定的。因此從你的學(xué)習(xí)中,你可得到最大的價值。例如,你可能選擇僅僅使用Spring來簡單化JDBC的使用,或用來管理所有的業(yè)務(wù)對象。.它的設(shè)計從底部幫助你編寫易于測試的代碼。Spring是用于測試驅(qū)動工程的理想的framework。Spring對你的工程來說,它不需要一個以上的framework。Spring是潛在地一站式解決方案,定位于與典型應(yīng)用相關(guān)的大部分基礎(chǔ)結(jié)構(gòu)。它也涉及到其他framework沒有考慮到的內(nèi)容。盡管它僅僅是一個從2003年2月才開始的開源工程,但Spring有較長的歷史根基。這個開源工程是起源自我在2002年后期出版的《ExpertOne-on-OneJ2EE設(shè)計與開發(fā)》書中的基礎(chǔ)代碼。這本書展示了Spring背后的基礎(chǔ)架構(gòu)。然而,這個基礎(chǔ)架構(gòu)的概念要追溯到2000年的早些時候,并且反映了我為一系列成功的商業(yè)工程開發(fā)基礎(chǔ)結(jié)構(gòu)的經(jīng)驗。從2003年1月,Spring已經(jīng)落戶于SourceForge上。現(xiàn)在有10個開發(fā)人員,其中6是高度投入的積極分子。3.3.2Spring的架構(gòu)性的好處Spring能有效地組織你的中間層對象,無論你是否選擇使用了EJB。如果你僅僅使用了Struts或其他的包含了J2EE特有APIs的framework,你會發(fā)現(xiàn)Spring關(guān)注了遺留下的問題。Spring能消除在許多工程上對Singleton的過多使用。根據(jù)我的經(jīng)驗,這是一個主要的問題,它減少了系統(tǒng)的可測試性和面向?qū)ο筇匦浴pring能消除使用各種各樣格式的屬性定制文件的需要,在整個應(yīng)用和工程中,可通過一種一致的方法來進行配置。曾經(jīng)感到迷惑,一個特定類要查找迷幻般的屬性關(guān)鍵字或系統(tǒng)屬性,為此不得不讀Javadoc乃至源編碼嗎?有了Spring,你可很簡單地看到類的JavaBean屬性。倒置控制的使用(在下面討論)幫助完成這種簡化。Spring能通過接口而不是類促進好的編程習(xí)慣,減少編程代價到幾乎為零。Spring被設(shè)計為讓使用它創(chuàng)建的應(yīng)用盡可能少的依賴于他的APIs。在Spring應(yīng)用中的大多數(shù)業(yè)務(wù)對象沒有依賴于Spring。使用Spring構(gòu)建的應(yīng)用程序易于單元測試。Spring能使EJB的使用成為一個實現(xiàn)選擇,而不是應(yīng)用架構(gòu)的必然選擇。你能選擇用POJOs或localEJBs來實現(xiàn)業(yè)務(wù)接口,卻不會影響調(diào)用代碼。Spring幫助你解決許多問題而無需使用EJB。Spring能提供一種EJB的替換物,它們適于許多web應(yīng)用。例如,Spring能使用AOP提供聲明性事務(wù)而不通過使用EJB容器,如果你僅僅需要與單個的數(shù)據(jù)庫打交道,甚至不需要JTA實現(xiàn).Spring為數(shù)據(jù)存取提供了一致的框架,不論是使用JDBC或O/Rmapping產(chǎn)品(如Hibernate)。Spring確實使你能通過最簡單可行的解決辦法解決你的問題。這些特性是有很大價值的。3.4Hibernate概述Hibernate在對象和關(guān)系型之間建立起一座橋梁,使得開發(fā)人員可以方便、快捷地進行持久化開發(fā)。Hibernate的第一個正式版本發(fā)布于2001年末;2003年6月Hibernate2發(fā)布,這一版本提供了對大多數(shù)數(shù)據(jù)庫的支持;2003年末Hibernate被JBoss吸納;2005年3月Hibernate3正式發(fā)布,至此,Hibernate獲得了巨大的成功。Hibernate使用起來非常簡單,這也是Hibernate作者GavinKing的一貫思想。3.4.1Hibernate技術(shù)大多數(shù)應(yīng)用程序都需要處理數(shù)據(jù)。Java應(yīng)用程序運行時,往往把數(shù)據(jù)封裝為相互連接的對象網(wǎng)絡(luò),但是當程序結(jié)束時,這些對象就會消失在一團邏輯中,所以需要有一些保存它們的方法。有時候,甚至在編寫應(yīng)用程序之前,數(shù)據(jù)就已經(jīng)存在了,所以需要有讀入它們和將其表示為對象的方法。手動編寫代碼來執(zhí)行這些任務(wù)不僅單調(diào)乏味、易于出錯,而且會占用整個應(yīng)用程序的很大一部分開發(fā)工作量。優(yōu)秀的面向?qū)ο箝_發(fā)人員厭倦了這種重復(fù)性的勞動,他們開始采用通常的“積極”偷懶做法,即,創(chuàng)建工具,使整個過程自動化。對于關(guān)系數(shù)據(jù)庫來說,這種努力的最大成果就是對象/關(guān)系映射(ORM)工具。這類工具有很多,從昂貴的商業(yè)產(chǎn)品到內(nèi)置于J2EE中的EJB標準。然而,在很多情況下,這些工具具有自身的復(fù)雜性,使得開發(fā)人員必須學(xué)習(xí)使用它們的詳細規(guī)則,并修改組成應(yīng)用程序的類以滿足映射系統(tǒng)的需要。由于這些工具為應(yīng)付更加嚴格和復(fù)雜的企業(yè)需求而不斷發(fā)展,于是在比較簡單和常見的場景中,使用它們所面臨的復(fù)雜性反而蓋過了所能獲得的好處。這引起了一場革命,促進了輕量級解決方案的出現(xiàn),而Hibernate就是這樣的一個例子。

3.4.2Hibernate的工作方式Hibernate不會對您造成妨礙,也不會強迫您修改對象的行為方式。它們不需要實現(xiàn)任何不可思議的接口以便能夠持續(xù)存在。惟一需要做的就是創(chuàng)建一份XML“映射文檔”,告訴Hibernate您希望能夠保存在數(shù)據(jù)庫中的類,以及它們?nèi)绾侮P(guān)聯(lián)到該數(shù)據(jù)庫中的表和列,然后就可以要求它以對象的形式獲取數(shù)據(jù),或者把對象保存為數(shù)據(jù)。與其他解決方案相比,它幾乎已經(jīng)很完美了。它實際上相當直觀。應(yīng)用程序?qū)ο笾械膶傩砸砸环N簡單而自然的方式與正確的數(shù)據(jù)庫結(jié)構(gòu)相關(guān)聯(lián)。運行時,Hibernate讀取映射文檔,然后動態(tài)構(gòu)建Java類,以便管理數(shù)據(jù)庫與Java之間的轉(zhuǎn)換。在Hibernate中有一個簡單而直觀的API,用于對數(shù)據(jù)庫所表示的對象執(zhí)行查詢。要修改這些對象,(一般情況下)只需在程序中與它們進行交互,然后告訴Hibernate保存修改即可。類似地,創(chuàng)建新對象也很簡單;只需以常規(guī)方式創(chuàng)建它們,然后告訴Hibernate有關(guān)它們的信息,這樣就能在數(shù)據(jù)庫中保存它們。HibernateAPI學(xué)習(xí)起來很簡單,而且它與程序流的交互相當自然。在適當?shù)奈恢谜{(diào)用它,就可以達成目的。它帶來了很多自動化和代碼節(jié)省方面的好處,所以花一點時間學(xué)習(xí)它是值得的。而且還可以獲得另一個好處,即代碼不用關(guān)心要使用的數(shù)據(jù)庫種類(否則的話甚至必須知道)。有的公司就曾有過在開發(fā)過程后期被迫更換數(shù)據(jù)庫廠商的經(jīng)歷。這會造成巨大的災(zāi)難,但是借助于Hibernate,只需要簡單地修改Hibernate配置文件即可。

這里的討論假定您已經(jīng)通過創(chuàng)建Hibernate映射文檔,建立了一個關(guān)系數(shù)據(jù)庫,并且擁有要映射的Java類。有一個Hibernate“工具集”可在編譯時使用,以支持不同的工作流。例如,如果您已經(jīng)擁有Java類和映射文檔,Hibernate可以為您創(chuàng)建(或更新)必需的數(shù)據(jù)庫表?;蛘撸瑑H僅從映射文檔開始,Hibernate也能夠生成數(shù)據(jù)類?;蛘?,它可以反向設(shè)計您的數(shù)據(jù)庫和類,從而擬定映射文檔。還有一些用于Eclipse的alpha插件,它們可以在IDE中提供智能的編輯支持以及對這些工具的圖形訪問。

如果您使用的是Hibernate2環(huán)境,這些工具鮮有提供,但是存在可用的第三方工具。第四章系統(tǒng)需求分析4.1系統(tǒng)設(shè)計思想《電信運營計費系統(tǒng)-NetCtoss》是利用J2EE平臺下的WEB技術(shù)設(shè)計和運行.通過利用C++跟PL/SQL從AAA服務(wù)器上采集數(shù)據(jù)然后整和到中央數(shù)據(jù)庫里,供用戶和管理員進行大量的查詢帳單和帳戶.其中持久層采用封裝JDBC的Hibernate框架,數(shù)據(jù)庫采用Oracle9i,并用Struts作為控制器,頁面顯示需要JSP技術(shù),并且用Spring框架整和,完成企業(yè)級應(yīng)用.系統(tǒng)業(yè)務(wù)模型如下:配置信息配置信息Web管理因特網(wǎng)加工處理計費信息loginname&passwordLogFileWeb管理因特網(wǎng)加工處理計費信息loginname&passwordLogFileMIBMIBWeb查詢Web查詢IP網(wǎng)用戶AAAAAAWeb查詢統(tǒng)計信息Web查詢統(tǒng)計信息WebWeb管理根據(jù)業(yè)務(wù)模型圖我們可以清楚的了解整個系統(tǒng)的流程:客戶通過網(wǎng)絡(luò)登陸到服務(wù)器。服務(wù)器中含有一個配置文件,這個配置文件中包含用戶的姓名和密碼。然后服務(wù)器根據(jù)這個配置文件來驗證用戶的姓名和密碼,每次用戶登陸的時候,服務(wù)器就會自動在配置文件中查找,看有沒有匹配的。如果有,則讓其登入,沒有則不受理這個請求。與此同時,服務(wù)器中還有一個文件,是用來記錄用戶的登陸和退出的時間,和當前登陸的是哪個用戶,以便后來在采集數(shù)據(jù)中使用。當用戶登陸到出租的服務(wù)器后,用戶就可以進行服務(wù)器所提供相應(yīng)的操作了。5.2 業(yè)務(wù)描述業(yè)務(wù)模型描述(3P模型):Products(產(chǎn)品)OpenLab在線試驗室出租業(yè)務(wù)Pricing(定價)定價一:OpenLab月租費:30元,使用費:3元/小時定價二:OpenLab月租費:50元,使用費:2元/小時定價三:。。。。Promotion(促銷)例如:一次性購買2年服務(wù),OpenLab月租費和使用費打八折OpenLab月租費:24元OpenLab使用費:2.4元/小時5.3系統(tǒng)的界面要求分析 系統(tǒng)必須給出一個初始的管理員帳號跟密碼,然后管理員在為其他的用戶分配帳號跟密碼,然后用戶就可以登錄系統(tǒng),進入各自的操作界面,因此系統(tǒng)主頁面應(yīng)該能自動進行身份判別,按照訪問者的身份自動進入其相應(yīng)的操作界面。所以系統(tǒng)的登錄截面應(yīng)該提供最少倆種身份:普通用戶管理員 5.4 系統(tǒng)的角色及功能分析 1.netct_oss系統(tǒng)應(yīng)具有三個角色:(1).管理員(2).用戶2.netct_oss系統(tǒng)角色的功能分析1、超級管理員應(yīng)該具有的功能1)管理員開通管理:管理用戶登陸NetCTOSS的帳號,包括帳號開通、暫停(加鎖)、恢復(fù)、刪除。2)管理員資料管理:管理管理員資料,包括姓名、身份證號碼、住址等。3)管理員權(quán)限管理:改變管理員的各類權(quán)限。2、普通管理員具有的功能增、刪、改、查自己的信息,2)查看自己的權(quán)限,并且根據(jù)所具有的權(quán)限管理有關(guān)內(nèi)容。3、用戶應(yīng)該具有的功能增、刪、改、查用戶信息第五章系統(tǒng)總體設(shè)計5.1系統(tǒng)的總體流程總體流程圖:T_Detail_xT_Detail_xT_dayT_dayT_day_xT_day_xT_month_xOpenlab1Openlab3Openlab4Openlab6serverclient采集系統(tǒng)T_yearT_monthPL/SQLT_UsersT_Adm驗證驗證刪除修改查詢添加刪除修改查詢添加管理員T_user_services1*T_Pricing*1刪除修改查詢添加1T_month_xOpenlab1Openlab3Openlab4Openlab6serverclient采集系統(tǒng)T_yearT_monthPL/SQLT_UsersT_Adm驗證驗證刪除修改查詢添加刪除修改查詢添加管理員T_user_services1*T_Pricing*1刪除修改查詢添加1T_year_xT_year_x**系統(tǒng)的模塊劃分電信運營支撐系統(tǒng)電信運營支撐系統(tǒng)賬務(wù)管理模塊賬務(wù)管理模塊用戶管理模塊用戶自服務(wù)模塊管理員管理模塊資費模塊帳單管理模塊數(shù)據(jù)采集數(shù)據(jù)整合用戶管理模塊用戶自服務(wù)模塊管理員管理模塊資費模塊帳單管理模塊數(shù)據(jù)采集數(shù)據(jù)整合5.3NetCtoss系統(tǒng)的功能要求1>采集系統(tǒng):功能描述:該系統(tǒng)主要功能是將電信服務(wù)器上的計費文件中所有用戶的消費記錄采集并且整理出來,然后插入到數(shù)據(jù)庫中。從功能上講,該系統(tǒng)共分為六個模塊,分別是采集模塊,入庫模塊,配置模塊,日志模塊,備份模塊和網(wǎng)絡(luò)模塊。從部署運行方面講該采集系統(tǒng)分為客戶端和服務(wù)器端兩個部分??蛻舳瞬渴鹪陔娦欧?wù)器上,用于采集和整理計費文件中的原始記錄并把結(jié)果發(fā)送到服務(wù)器端。服務(wù)器端用于接收從客戶端發(fā)送過來的數(shù)據(jù),并持久化到數(shù)據(jù)庫中相應(yīng)的表中。2>整和系統(tǒng):功能描述:該系統(tǒng)負責(zé)將數(shù)據(jù)庫中的用戶原始的消費數(shù)據(jù)進行整合形成可供用戶和管理查詢的帳單,如日清單,月報表,年報表,以及僅供管理員查詢的帳務(wù)清單,主要用于考察電信服務(wù)器的運行情況。3>WEB系統(tǒng):該系統(tǒng)可供用戶和管理員查詢相關(guān)內(nèi)容。通過登錄該系統(tǒng),用戶可以完成查詢帳單,修改個人信息,瀏覽電信運營商提供的各種資費服務(wù)。管理員可以完成查詢所有用戶帳單,修改管理員信息,對用戶進行管理(開通,關(guān)閉,刪除用戶帳號),對管理員進行管理(開通,關(guān)閉,刪除管理員帳號),修改資費項目,查看電信服務(wù)器運行情況。根據(jù)以上功能,該系統(tǒng)可分為六個模塊,用戶管理模塊,管理員管理模塊,用戶自服務(wù)模塊,帳單管理模塊,資費管理模塊,帳務(wù)管理模塊。5.4 系統(tǒng)實體間的聯(lián)系 系統(tǒng)的實聯(lián)系圖為: 5.5NetCtoss系統(tǒng)的數(shù)據(jù)處理1:采集與整合數(shù)據(jù)采集:資料信息:用戶信息、管理員信息、資費信息、URL信息數(shù)據(jù)存儲:計費數(shù)據(jù)、故障數(shù)據(jù)、統(tǒng)計數(shù)據(jù)明細:、日表、月表、年表整合:按小時合并清單表t_detail_X生成所有用戶記費數(shù)據(jù)日表t_day_X;按天合并日表t_day_X生成所有用戶記費數(shù)據(jù)月表t_month_X;按月合并月表t_month_X生成所有用戶記費數(shù)據(jù)年表t_year_X;按小時合并清單表t_detail_X生成所有Lab_IP數(shù)據(jù)日表t_day;按天合并日表t_day生成所有Lab_IP數(shù)據(jù)月表t_month;按月合并月表t_month生成所有Lab_IP數(shù)據(jù)年表t_year;2:用戶帳務(wù)信息自查詢(1)用戶標識信息:帳單ID,姓名、帳號、狀態(tài)(正常/暫停/關(guān)閉)、開通日期。(2)帳務(wù)信息:日期、登錄時長、本月費用(3)服務(wù)信息,各種服務(wù)信息查詢(4)服務(wù)幫助,提供一個親切的服務(wù)界面(5)帳單明細:登錄時間 退出時間 時長3:用戶開通管理:(1)管理用戶登陸OpenLab的帳號,包括帳號開通、暫停(加鎖)、恢復(fù)、刪除。(2)用戶資料管理:管理用戶資料,包括姓名(單位)、身份證號碼、住址及資費信息等4:管理員管理:(1)管理員開通管理:管理用戶登陸NetCTOSS的帳號,包括帳號開通、暫停(加鎖)、恢復(fù)、刪除。(2)管理員資料管理:管理管理員資料,包括姓名、身份證號碼、住址等。(3)管理員權(quán)限管理:改變管理員的各類權(quán)限。5:用戶自服務(wù)管理用戶標識信息:帳單ID,姓名、帳號、狀態(tài)(正常/暫停/關(guān)閉)、開通日帳務(wù)信息:日期、登錄時長、本月費用服務(wù)信息,各種服務(wù)信息查詢服務(wù)幫助,提供一個親切的服務(wù)界面帳單明細:登錄時間 退出時間 時長6:帳單管理整合系統(tǒng)按月生成用戶月帳單。用戶標識信息:帳單ID,姓名、帳號、狀態(tài)(正常/暫停/關(guān)閉)、聯(lián)系電話、Email、開通日期.帳務(wù)信息:帳號、日期、登錄時長、本月費用帳單明細:登錄時間 退出時間 時長第五章NetCtoss詳細設(shè)計(管理員管理模塊,帳單管理模塊)5.1數(shù)據(jù)庫設(shè)計由于電信運營支撐系統(tǒng)功能非常復(fù)雜,并且要存取的數(shù)據(jù)較多,因此簡單地使用文件來存儲數(shù)據(jù)庫和管理顯然是不合適的。所以本系統(tǒng)使用ORACLE數(shù)據(jù)庫來存儲數(shù)據(jù)。根據(jù)系統(tǒng)需求分析需要創(chuàng)建以下的數(shù)據(jù)表來存儲數(shù)據(jù)。t_adm表用于保存管理員的信息設(shè)計出的表如下所示:(t_adm表)NameNull?TypeIDNOTNULLNUMBERNAME

VARCHAR2(32)LOGIN_NAMENOTNULLVARCHAR2(10)LOGIN_PASSWORD

VARCHAR2(32)PHONE

VARCHAR2(32)EMAIL

VARCHAR2(32)ENROLL_DATE

DATECLOSE_DATE

DATE對應(yīng)的數(shù)據(jù)庫建表語句為:droptablet_adm;createtablet_adm(idnumberprimarykey,--管理員編碼namevarchar2(32),--管理員姓名login_namevarchar2(10)uniquenotnull,--登錄名login_passwordvarchar2(32),--登錄密碼phonevarchar2(32),--聯(lián)系電話emailvarchar2(32),--E-Mailenroll_datedate,--注冊日期close_datedate--(不用字段));2.t_module模塊表(用于保存模塊信息)并對應(yīng)于管理員的權(quán)限.設(shè)計的表如下所示:NameNull?TypeIDNOTNULLNUMBERNAME

VARCHAR2(32)USER_FLAG

CHAR(1)對應(yīng)的數(shù)據(jù)庫建表語句為:droptablet_module;createtablet_module(idnumberprimarykey,--模塊編號namevarchar2(32),--模塊名稱user_flagchar--使用者標記:0—管理員;1—用戶;)3.t_adm_rights管理員權(quán)限表(用于保存管理員對模塊的訪問權(quán)限)設(shè)計的表如下所示:NameNull?TypeADM_IDNOTNULLNUMBERMODULE_IDNOTNULLNUMBER對應(yīng)的數(shù)據(jù)庫建表語句為:droptablet_adm_rights;createtablet_adm_rights(adm_idnumberreferencest_adm(id),--管理員編碼module_idnumberreferencest_module(id),--模塊編號primarykey(adm_id,module_id));4.t_users用戶表(用于保存用戶賬務(wù)帳號信息及個人信息)設(shè)計的表如下所示:NameNull?TypeIDNOTNULLNUMBER(32)NAMENOTNULLVARCHAR2(32)LOGIN_NAME

VARCHAR2(10)LOGIN_PASSWORDNOTNULLVARCHAR2(32)STATUSNOTNULLNUMBER(2)PHONE

VARCHAR2(32)EMAIL

VARCHAR2(32)ENROLL_DATE

DATECLOSE_DATE

DATEPAYMENT_STYLE

NUMBER(2)CAREER

VARCHAR2(32)NATIONALITY

VARCHAR2(32)GENDER

VARCHAR2(8)COMPANY

VARCHAR2(32)ADDRESS

VARCHAR2(32)POST_CODE

VARCHAR2(16)對應(yīng)的數(shù)據(jù)庫建表語句為:createtablet_users(//用戶表(用于保存用戶賬務(wù)帳號信息及個人信息)idnumber(32) primarykey,--主鍵編碼namevarchar2(32)notnull,--用戶姓名login_namevarchar2(10)unique,--用戶賬務(wù)帳號(對應(yīng)多個業(yè)務(wù)帳號)login_passwordvarchar2(32)notnull,--用戶賬務(wù)帳號密碼statusnumber(2)notnull,--賬務(wù)帳號狀態(tài)(0:開通;1:暫停;2:刪除)phonevarchar2(32),--聯(lián)系電話emailvarchar2(32),--emailenroll_datedate,--開通日期close_datedate,--暫停日期payment_stylenumber(2),--付款方式(0:現(xiàn)金;1:銀行轉(zhuǎn)帳;2:郵局匯款;3:其他)careervarchar2(32),--職業(yè)nationalityvarchar2(32),--國籍(系統(tǒng)中在本字段記錄省份)gendervarchar2(8),--性別companyvarchar2(32),--公司名稱addressvarchar2(32),--地址post_codevarchar2(16)--郵編);5.用戶業(yè)務(wù)帳號表(用于保存用戶業(yè)務(wù)帳號信息)設(shè)計的表如下所示:NameNull?TypeIDNOTNULLNUMBER(32)USER_ID

NUMBER(32)LAB_LOGIN_NAME

VARCHAR2(10)LAB_LOGIN_PASSWORD

VARCHAR2(32)LAB_IPNOTNULLVARCHAR2(32)USER_STATUS

NUMBER(2)PRICING_ID

NUMBERENROLL_DATE

DATECLOSE_DATE

DATE對應(yīng)的數(shù)據(jù)庫建表語句為:createtablet_user_services(idnumber(32)primarykey,--主鍵編碼user_idnumber(32)referencest_users(id),--用戶表主鍵編碼lab_login_namevarchar2(10),--用戶業(yè)務(wù)帳號lab_login_passwordvarchar2(32),--用戶業(yè)務(wù)帳號密碼lab_ipvarchar2(32)notnull,--服務(wù)器編碼user_statusnumber(2),--業(yè)務(wù)帳號狀態(tài)(0:正常;1:暫停;2:刪除)pricing_idnumberreferencest_pricing(pricing_id),--資費編碼enroll_datedate,--開通日期close_datedate--暫停日期);5.t_pricing資費表設(shè)計的表如下所示:NameNull?TypePRICING_IDNOTNULLNUMBER(10)PRICING_NAME

VARCHAR2(255CHAR)BASE_FEE

FLOAT(126)RATE_FEE

FLOAT(126)PRICING_DESC

VARCHAR2(255CHAR)對應(yīng)的數(shù)據(jù)庫建表語句為:createtablet_pricing(pricing_idnumberprimarykey, --資費編碼(pk)pricing_namevarchar2(32)notnullunique,--資費名稱base_feenumber(5,2),--月租費rate_feenumber(4,2), --每小時費用pricing_descvarchar2(64) --資費描述);6t_detail_x(x:月中的第幾天,取值范圍:1~31)設(shè)計的表如下所示:NameNull?TypeLOGIN_NAME

VARCHAR2(10)LOGIN_IP

VARCHAR2(32)LOGIN_DATE

DATELOGOUT_DATE

DATELAB_IP

VARCHAR2(32)TIME_DURATION

NUMBER(10)對應(yīng)的數(shù)據(jù)庫建表語句為:Createtablet_detail_x(login_namevarchar2(10),--用戶名login_ipvarchar2(32),--用戶登錄iplogin_datedate,--登錄時間logout_datedate,--退出時間lab_ipvarchar2(32),--服務(wù)器iptime_durationnumber(10)--時長);t_day_x(x:月中的第幾天,取值范圍:1~31)用戶計費數(shù)據(jù)日表(統(tǒng)計當天每小時每個服務(wù)器上的每個用戶的總時長)每條數(shù)據(jù)記錄的是:一個服務(wù)器上的一個用戶某一小時的總時長對于一個服務(wù)器上的一個用戶,最多有24條記錄.設(shè)計的表如下所示:NameNull?TypeLOGIN_NAMENOTNULLVARCHAR2(10)LOGIN_IP

VARCHAR2(32)LOGOUT_DATENOTNULLDATELAB_IPNOTNULLVARCHAR2(32)TIME_DURATION

NUMBER(10)對應(yīng)的數(shù)據(jù)庫建表語句為:Createtablet_day_x(login_namevarchar2(10),--用戶名login_ipvarchar2(32),--用戶登錄iplogout_datedate,--統(tǒng)計時間(格式:YYYY-MM-DDHH24:00:00)lab_ipvarchar2(32),--服務(wù)器iptime_durationnumber(10),--時長primarykey(login_name,lab_ip,logout_date));8t_month_x(x:月份,取值范圍:1~12)用戶計費數(shù)據(jù)月表(統(tǒng)計當月每天每個服務(wù)器上的每個用戶的總時長)每條數(shù)據(jù)記錄的是:一個服務(wù)器上的一個用戶某一天的總對于一個服務(wù)器上的一個用戶,最多有31條記錄.設(shè)計的表如下所示:NameNull?TypeLOGIN_NAMENOTNULLVARCHAR2(10)LOGIN_IP

VARCHAR2(32)LOGOUT_DATENOTNULLDATELAB_IPNOTNULLVARCHAR2(32)TIME_DURATION

NUMBER(10)對應(yīng)的數(shù)據(jù)庫建表語句為:Createtablet_month_x(login_namevarchar2(10),--用戶名login_ipvarchar2(32),--用戶登錄iplogout_datedate,--統(tǒng)計日期(格式:YYYY-MM--DD00:00:00)lab_ipvarchar2(32),--服務(wù)器iptime_durationnumber(10),--時長primarykey(login_name,lab_ip,logout_date));5.2模塊的具體實現(xiàn)(1)管理員管理模塊用例圖用例描述用例名稱查詢所有管理員(管理員列表)描述超級管理員可以查看所有管理員信息用例參與者超級管理員前置條件超級管理員已經(jīng)登錄成功基本事件流登錄成功后,管理員進入系統(tǒng)主頁面,在主頁面的導(dǎo)航菜單中點擊[管理員管理]鏈接,頁面就顯示出系統(tǒng)中所有管理員的信息其他事件流登錄成功后,管理員進入系統(tǒng)主頁面,在主頁面的導(dǎo)航菜單中點擊[管理員管理]鏈接,進入管理員列表里可以進入添加管理員、管理員信息修改和修改自己的信息的頁面,在這三個頁面中點擊[管理員列表]鏈接,可以到管理員列表頁面異常事件流無后置條件無用例名稱增加管理員描述超級管理員增加管理員用例參與者超級管理員前置條件超級管理員已經(jīng)登錄成功基本事件流登錄成功后,管理員進入系統(tǒng)主頁面,在主頁面的導(dǎo)航菜單中點擊[管理員管理]鏈接,頁面就顯示出系統(tǒng)中所有管理員的信息,在管理員列表頁面中點擊[增加管理員]鏈接,會跳轉(zhuǎn)到添加管理員頁面,在本頁面中填好必要的信息點擊提交按鈕通過驗證后,來完成添加管理員,操作完成到管理員列表頁面其他事件流在修改頁面也可以點擊[增加管理員],跳轉(zhuǎn)到添加管理員頁面也能完成添加管理員功能異常事件流如果驗證未通過會提示信息,添加的管理員沒保存到系統(tǒng)中后置條件剛添加的管理員信息就保存到本系統(tǒng)中用例名稱刪除管理員描述超級管理員刪除管理員用例參與者超級管理員前置條件超級管理員已經(jīng)登錄成功基本事件流登錄成功后,管理員進入系統(tǒng)主頁面,在主頁面的導(dǎo)航菜單中點擊[管理員管理]鏈接,頁面就顯示出系統(tǒng)中所有管理員的信息,選中要刪除的管理員前面的復(fù)選框,點擊刪除按鈕進行刪除,一次可以刪除多個管理員,操作完成到管理員列表頁面其他事件流無異常事件流無后置條件刪除完成以后此管理員就從系統(tǒng)里被刪掉了,下回就不能用這個管理員進行登錄管理了用例名稱修改管理員信息描述超級管理員修改管理員信息用例參與者超級管理員前置條件超級管理員已經(jīng)登錄成功基本事件流登錄成功后,管理員進入系統(tǒng)主頁面,在主頁面的導(dǎo)航菜單中點擊[管理員管理]鏈接,頁面就顯示出系統(tǒng)中所有管理員的信息,在每個管理員信息的最后一列里都會有一個[修改]的鏈接,要想修改某個管理員就直接點擊轉(zhuǎn)到修改頁面,在修改頁面直接對想修改的信息進行修改,最后點擊修改按鈕通過驗證就修改完成,操作完成到管理員列表頁面其他事件流無異常事件流如果驗證未通過會提示信息,修改后的信息不會被保存后置條件修改信息以后修改的信息會保存到系統(tǒng)中用例名稱修改本管理員信息描述超級管理員修改本管理員信息用例參與者超級管理員前置條件超級管理員已經(jīng)登錄成功基本事件流登錄成功后,管理員進入系統(tǒng)主頁面,在主頁面的導(dǎo)航菜單中點擊[管理員管理]鏈接,頁面就顯示出系統(tǒng)中所有管理員的信息,修改自己的信息就點擊[私人信息]就直接點擊轉(zhuǎn)到修改頁面,在修改頁面直接對想修改的信息進行修改,最后點擊修改按鈕通過驗證就修改完成,操作完成到管理員列表頁面其他事件流還可在列表中找到自己信息那行點擊[修改],也能完成此功能異常事件流如果驗證未通過會提示信息,修改后的信息不會被保存后置條件修改信息以后修改的信息會保存到系統(tǒng)中類圖:時序圖:組件圖管理員管理模塊的界面如下所示:登陸界面:這個是登錄界面,用戶在這個上面可以選擇管理員登錄和用戶登錄,這個是登錄系統(tǒng)的前提條件,用戶只有在輸入正確的帳號后,才能進入主界面,執(zhí)行相應(yīng)的操作。主界面:主界面中包括:帳戶管理,帳單管理,帳務(wù)管理,資費管理,管理員管理。添加管理員界面:該界面為填寫相關(guān)注冊信息,如果必填信息沒有填寫,則會出現(xiàn)提示信息。相關(guān)出錯見上圖。添加成功,將顯示成功信息.主要實現(xiàn)代碼:publicActionForwardexecute( ActionMappingmapping, ActionFormform, HttpServletRequestrequest, HttpServletResponseresponse){ AdminFormadminForm=(AdminForm)form; TAdmdto=AdminAssemble.createAdmDto(adminForm); dto.setAdmStatus(newInteger(0)); dto.setEnrollDate(newDate((Calendar.getInstance()).getTimeInMillis())); ActionErrorserrors=newActionErrors(); try{ //IServicedelegate=ModelDelegate.newInstance(); delegate.addAdmin(dto); errors.add("msg.action.addadm",newActionError("msg.action.addadm",dto.getLoginName())); saveErrors(request,errors); returnmapping.findForward("success"); }catch(Exceptione){ errors.add("error.action.addadm",newActionError("error.action.addadm")); saveErrors(request,errors); e.printStackTrace(); returnmapping.findForward("failure"); } }管理員顯示的界面:這個界面顯示了所有的管理員,左邊的復(fù)選框是刪除一個或多個管理員,上面的一個文本框是根據(jù)帳號查詢,或刪除 publicActionForwardexecute( ActionMappingmapping, ActionFormform, HttpServletRequestrequest, HttpServletResponseresponse){ ActionErrorserrors=newActionErrors(); try{ //IServicedelegate=ModelDelegate.newInstance(); Integer[]admId=((DeleteAdminForm)form).getAdmId(); delegate.deleteAdmin(admId); errors.add("msg.action.deleteadmin",newActionError("msg.action.deleteadmin")); saveErrors(request,errors); returnmapping.findForward("success"); }catch(Exceptione){ errors.add("error.action.deleteadmin",newActionError("error.action.deleteadmin")); saveErrors(request,errors); e.printStackTrace(); returnmapping.findForward("failure"); } }publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ ActionErrorserrors=newActionErrors(); IntegeradmId=newInteger(request.getParameter("admId")); try{ //IServicedelegate=ModelDelegate.newInstance(); TAdmdto=delegate.findAdmin(admId); if(dto==null) thrownewException(); request.setAttribute("AdminForm",AdminAssemble .createAdminForm(dto)); returnmapping.findForward("success"); }catch(Exceptione){ e.printStackTrace(); errors.add("error.action.findadmin",newActionError( "error.action.findadmin",admId.toString())); saveErrors(request,errors); returnmapping.findForward("failure"); } }更改管理員界面:查詢管理員界面:(包括查詢成功或者不成功)成功不成功私人信息界面:這個界面將顯示管理員的一些基本信息:并對其進行修改:對應(yīng)代碼如下:publicActionForwardexecute( ActionMappingmapping, ActionFormform, HttpServletRequestrequest, HttpServletResponseresponse){ AdminFormadminForm=(AdminForm)form; TAdmdto=AdminAssemble.createAdmDto(adminForm); ActionErrorserrors=newActionErrors(); try{ //IServicedelegate=ModelDelegate.newInstance(); delegate.updateAdmin(dto); errors.add("msg.action.updateadm",newActionError("msg.action.updateadm",dto.getLoginName())); saveErrors(request,errors); returnmapping.findForward("success"); }catch(Exceptione){ errors.add("error.action.updateadm",newActionError("error.action.updateadm")); saveErrors(request,errors); e.printStackTrace(); returnmapping.findForward("failure"); } }(2)帳單管理模塊用例圖用例描述用例名稱查詢月帳單描述管理員可以進行月賬單查詢用例參與者管理員前置條件管理員已經(jīng)登錄成功基本事件流登錄成功后,管理員進入系統(tǒng)主頁面,在主頁面的導(dǎo)航菜單中點擊[帳單管理]鏈接,頁面就顯示出系統(tǒng)中所有帳務(wù)帳號在上月的總的費用的列表基本事件流登錄成功后,管理員進入系統(tǒng)主頁面,在主頁面的導(dǎo)航菜單中點擊[帳單管理]鏈接,頁面就顯示出系統(tǒng)中所有帳務(wù)帳號在某年某月總的費用的列表,因為帳務(wù)帳號很多,不利于查看,在此頁面上有分頁的功能,在列表下方有上一頁和下一頁的鏈接和選擇頁碼的拉列表框,可以直接點擊這兩個鏈接或直接在列表框里選擇頁碼來跳轉(zhuǎn)到帳單列表頁面,顯示指定頁面的信息基本事件流登錄成功后,管理員進入系統(tǒng)主頁面,在主頁面的導(dǎo)航菜單中點擊[帳單管理]鏈接,操作流程是,在頁面上方有文本提示寫著帳務(wù)帳號,后邊有一個文本框,在里面填寫你要查詢的帳務(wù)帳號名,后邊還有兩個下拉列表框,后邊文本提示分別寫著年、月,在這兩個下拉列表框里分別選中你要查詢的年和月,然后點擊查詢按鈕完成操作,如果輸入的帳務(wù)帳號存在,就會在列表頁面顯示此帳務(wù)帳號在某年某月總的費用,如果在帳務(wù)帳號文本框里沒有輸入會查某年某月所有帳號總的費用其他事件流無異常事件流如果查詢不到任何結(jié)果,則顯示沒有查詢到任何記錄。后置條件無用例名稱查詢月帳單明細描述管理員可以進行月賬單明細進行查詢用例參與者管理員前置條件管理員已經(jīng)登錄成功基本事件流登錄成功后,管理員

溫馨提示

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

評論

0/150

提交評論