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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

1.J2EE模型

2.WEB開(kāi)發(fā)工具

3.EJB開(kāi)發(fā)工具

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

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

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

7.MyEclipse整合幫助

對(duì)于以上每一種功能上的類別,在Eclipse中都有相應(yīng)的功能部件,并通過(guò)一系列的插件來(lái)實(shí)現(xiàn)它們。MyEclipse結(jié)構(gòu)上的這種模塊化,可以讓我們?cè)诓挥绊懫渌K的情況下,對(duì)任一模塊進(jìn)行單獨(dú)的擴(kuò)展和升級(jí)。

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

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

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

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

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

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

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

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

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

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

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

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

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

VARCHAR2(32)LOGIN_NAMENOTNULLVARCHAR2(10)LOGIN_PASSWORD

VARCHAR2(32)PHONE

VARCHAR2(32)EMAIL

VARCHAR2(32)ENROLL_DATE

DATECLOSE_DATE

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

VARCHAR2(32)USER_FLAG

CHAR(1)對(duì)應(yīng)的數(shù)據(jù)庫(kù)建表語(yǔ)句為:droptablet_module;createtablet_module(idnumberprimarykey,--模塊編號(hào)namevarchar2(32),--模塊名稱user_flagchar--使用者標(biāo)記:0—管理員;1—用戶;)3.t_adm_rights管理員權(quán)限表(用于保存管理員對(duì)模塊的訪問(wèn)權(quán)限)設(shè)計(jì)的表如下所示:NameNull?TypeADM_IDNOTNULLNUMBERMODULE_IDNOTNULLNUMBER對(duì)應(yīng)的數(shù)據(jù)庫(kù)建表語(yǔ)句為:droptablet_adm_rights;createtablet_adm_rights(adm_idnumberreferencest_adm(id),--管理員編碼module_idnumberreferencest_module(id),--模塊編號(hào)primarykey(adm_id,module_id));4.t_users用戶表(用于保存用戶賬務(wù)帳號(hào)信息及個(gè)人信息)設(shè)計(jì)的表如下所示: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)對(duì)應(yīng)的數(shù)據(jù)庫(kù)建表語(yǔ)句為:createtablet_users(//用戶表(用于保存用戶賬務(wù)帳號(hào)信息及個(gè)人信息)idnumber(32) primarykey,--主鍵編碼namevarchar2(32)notnull,--用戶姓名login_namevarchar2(10)unique,--用戶賬務(wù)帳號(hào)(對(duì)應(yīng)多個(gè)業(yè)務(wù)帳號(hào))login_passwordvarchar2(32)notnull,--用戶賬務(wù)帳號(hào)密碼statusnumber(2)notnull,--賬務(wù)帳號(hào)狀態(tài)(0:開(kāi)通;1:暫停;2:刪除)phonevarchar2(32),--聯(lián)系電話emailvarchar2(32),--emailenroll_datedate,--開(kāi)通日期close_datedate,--暫停日期payment_stylenumber(2),--付款方式(0:現(xiàn)金;1:銀行轉(zhuǎn)帳;2:郵局匯款;3:其他)careervarchar2(32),--職業(yè)nationalityvarchar2(32),--國(guó)籍(系統(tǒng)中在本字段記錄省份)gendervarchar2(8),--性別companyvarchar2(32),--公司名稱addressvarchar2(32),--地址post_codevarchar2(16)--郵編);5.用戶業(yè)務(wù)帳號(hào)表(用于保存用戶業(yè)務(wù)帳號(hào)信息)設(shè)計(jì)的表如下所示: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對(duì)應(yīng)的數(shù)據(jù)庫(kù)建表語(yǔ)句為:createtablet_user_services(idnumber(32)primarykey,--主鍵編碼user_idnumber(32)referencest_users(id),--用戶表主鍵編碼lab_login_namevarchar2(10),--用戶業(yè)務(wù)帳號(hào)lab_login_passwordvarchar2(32),--用戶業(yè)務(wù)帳號(hào)密碼lab_ipvarchar2(32)notnull,--服務(wù)器編碼user_statusnumber(2),--業(yè)務(wù)帳號(hào)狀態(tài)(0:正常;1:暫停;2:刪除)pricing_idnumberreferencest_pricing(pricing_id),--資費(fèi)編碼enroll_datedate,--開(kāi)通日期close_datedate--暫停日期);5.t_pricing資費(fèi)表設(shè)計(jì)的表如下所示:NameNull?TypePRICING_IDNOTNULLNUMBER(10)PRICING_NAME

VARCHAR2(255CHAR)BASE_FEE

FLOAT(126)RATE_FEE

FLOAT(126)PRICING_DESC

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

VARCHAR2(10)LOGIN_IP

VARCHAR2(32)LOGIN_DATE

DATELOGOUT_DATE

DATELAB_IP

VARCHAR2(32)TIME_DURATION

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

VARCHAR2(32)LOGOUT_DATENOTNULLDATELAB_IPNOTNULLVARCHAR2(32)TIME_DURATION

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

VARCHAR2(32)LOGOUT_DATENOTNULLDATELAB_IPNOTNULLVARCHAR2(32)TIME_DURATION

NUMBER(10)對(duì)應(yīng)的數(shù)據(jù)庫(kù)建表語(yǔ)句為:Createtablet_month_x(login_namevarchar2(10),--用戶名login_ipvarchar2(32),--用戶登錄iplogout_datedate,--統(tǒng)計(jì)日期(格式:YYYY-MM--DD00:00:00)lab_ipvarchar2(32),--服務(wù)器iptime_durationnumber(10),--時(shí)長(zhǎng)primarykey(login_name,lab_ip,logout_date));5.2模塊的具體實(shí)現(xiàn)(1)管理員管理模塊用例圖用例描述用例名稱查詢所有管理員(管理員列表)描述超級(jí)管理員可以查看所有管理員信息用例參與者超級(jí)管理員前置條件超級(jí)管理員已經(jīng)登錄成功基本事件流登錄成功后,管理員進(jìn)入系統(tǒng)主頁(yè)面,在主頁(yè)面的導(dǎo)航菜單中點(diǎn)擊[管理員管理]鏈接,頁(yè)面就顯示出系統(tǒng)中所有管理員的信息其他事件流登錄成功后,管理員進(jìn)入系統(tǒng)主頁(yè)面,在主頁(yè)面的導(dǎo)航菜單中點(diǎn)擊[管理員管理]鏈接,進(jìn)入管理員列表里可以進(jìn)入添加管理員、管理員信息修改和修改自己的信息的頁(yè)面,在這三個(gè)頁(yè)面中點(diǎn)擊[管理員列表]鏈接,可以到管理員列表頁(yè)面異常事件流無(wú)后置條件無(wú)用例名稱增加管理員描述超級(jí)管理員增加管理員用例參與者超級(jí)管理員前置條件超級(jí)管理員已經(jīng)登錄成功基本事件流登錄成功后,管理員進(jìn)入系統(tǒng)主頁(yè)面,在主頁(yè)面的導(dǎo)航菜單中點(diǎn)擊[管理員管理]鏈接,頁(yè)面就顯示出系統(tǒng)中所有管理員的信息,在管理員列表頁(yè)面中點(diǎn)擊[增加管理員]鏈接,會(huì)跳轉(zhuǎn)到添加管理員頁(yè)面,在本頁(yè)面中填好必要的信息點(diǎn)擊提交按鈕通過(guò)驗(yàn)證后,來(lái)完成添加管理員,操作完成到管理員列表頁(yè)面其他事件流在修改頁(yè)面也可以點(diǎn)擊[增加管理員],跳轉(zhuǎn)到添加管理員頁(yè)面也能完成添加管理員功能異常事件流如果驗(yàn)證未通過(guò)會(huì)提示信息,添加的管理員沒(méi)保存到系統(tǒng)中后置條件剛添加的管理員信息就保存到本系統(tǒng)中用例名稱刪除管理員描述超級(jí)管理員刪除管理員用例參與者超級(jí)管理員前置條件超級(jí)管理員已經(jīng)登錄成功基本事件流登錄成功后,管理員進(jìn)入系統(tǒng)主頁(yè)面,在主頁(yè)面的導(dǎo)航菜單中點(diǎn)擊[管理員管理]鏈接,頁(yè)面就顯示出系統(tǒng)中所有管理員的信息,選中要?jiǎng)h除的管理員前面的復(fù)選框,點(diǎn)擊刪除按鈕進(jìn)行刪除,一次可以刪除多個(gè)管理員,操作完成到管理員列表頁(yè)面其他事件流無(wú)異常事件流無(wú)后置條件刪除完成以后此管理員就從系統(tǒng)里被刪掉了,下回就不能用這個(gè)管理員進(jìn)行登錄管理了用例名稱修改管理員信息描述超級(jí)管理員修改管理員信息用例參與者超級(jí)管理員前置條件超級(jí)管理員已經(jīng)登錄成功基本事件流登錄成功后,管理員進(jìn)入系統(tǒng)主頁(yè)面,在主頁(yè)面的導(dǎo)航菜單中點(diǎn)擊[管理員管理]鏈接,頁(yè)面就顯示出系統(tǒng)中所有管理員的信息,在每個(gè)管理員信息的最后一列里都會(huì)有一個(gè)[修改]的鏈接,要想修改某個(gè)管理員就直接點(diǎn)擊轉(zhuǎn)到修改頁(yè)面,在修改頁(yè)面直接對(duì)想修改的信息進(jìn)行修改,最后點(diǎn)擊修改按鈕通過(guò)驗(yàn)證就修改完成,操作完成到管理員列表頁(yè)面其他事件流無(wú)異常事件流如果驗(yàn)證未通過(guò)會(huì)提示信息,修改后的信息不會(huì)被保存后置條件修改信息以后修改的信息會(huì)保存到系統(tǒng)中用例名稱修改本管理員信息描述超級(jí)管理員修改本管理員信息用例參與者超級(jí)管理員前置條件超級(jí)管理員已經(jīng)登錄成功基本事件流登錄成功后,管理員進(jìn)入系統(tǒng)主頁(yè)面,在主頁(yè)面的導(dǎo)航菜單中點(diǎn)擊[管理員管理]鏈接,頁(yè)面就顯示出系統(tǒng)中所有管理員的信息,修改自己的信息就點(diǎn)擊[私人信息]就直接點(diǎn)擊轉(zhuǎn)到修改頁(yè)面,在修改頁(yè)面直接對(duì)想修改的信息進(jìn)行修改,最后點(diǎn)擊修改按鈕通過(guò)驗(yàn)證就修改完成,操作完成到管理員列表頁(yè)面其他事件流還可在列表中找到自己信息那行點(diǎn)擊[修改],也能完成此功能異常事件流如果驗(yàn)證未通過(guò)會(huì)提示信息,修改后的信息不會(huì)被保存后置條件修改信息以后修改的信息會(huì)保存到系統(tǒng)中類圖:時(shí)序圖:組件圖管理員管理模塊的界面如下所示:登陸界面:這個(gè)是登錄界面,用戶在這個(gè)上面可以選擇管理員登錄和用戶登錄,這個(gè)是登錄系統(tǒng)的前提條件,用戶只有在輸入正確的帳號(hào)后,才能進(jìn)入主界面,執(zhí)行相應(yīng)的操作。主界面:主界面中包括:帳戶管理,帳單管理,帳務(wù)管理,資費(fèi)管理,管理員管理。添加管理員界面:該界面為填寫相關(guān)注冊(cè)信息,如果必填信息沒(méi)有填寫,則會(huì)出現(xiàn)提示信息。相關(guān)出錯(cuò)見(jiàn)上圖。添加成功,將顯示成功信息.主要實(shí)現(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"); } }管理員顯示的界面:這個(gè)界面顯示了所有的管理員,左邊的復(fù)選框是刪除一個(gè)或多個(gè)管理員,上面的一個(gè)文本框是根據(jù)帳號(hào)查詢,或刪除 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"); } }更改管理員界面:查詢管理員界面:(包括查詢成功或者不成功)成功不成功私人信息界面:這個(gè)界面將顯示管理員的一些基本信息:并對(duì)其進(jìn)行修改:對(duì)應(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)帳單管理模塊用例圖用例描述用例名稱查詢?cè)聨蚊枋龉芾韱T可以進(jìn)行月賬單查詢用例參與者管理員前置條件管理員已經(jīng)登錄成功基本事件流登錄成功后,管理員進(jìn)入系統(tǒng)主頁(yè)面,在主頁(yè)面的導(dǎo)航菜單中點(diǎn)擊[帳單管理]鏈接,頁(yè)面就顯示出系統(tǒng)中所有帳務(wù)帳號(hào)在上月的總的費(fèi)用的列表基本事件流登錄成功后,管理員進(jìn)入系統(tǒng)主頁(yè)面,在主頁(yè)面的導(dǎo)航菜單中點(diǎn)擊[帳單管理]鏈接,頁(yè)面就顯示出系統(tǒng)中所有帳務(wù)帳號(hào)在某年某月總的費(fèi)用的列表,因?yàn)閹?wù)帳號(hào)很多,不利于查看,在此頁(yè)面上有分頁(yè)的功能,在列表下方有上一頁(yè)和下一頁(yè)的鏈接和選擇頁(yè)碼的拉列表框,可以直接點(diǎn)擊這兩個(gè)鏈接或直接在列表框里選擇頁(yè)碼來(lái)跳轉(zhuǎn)到帳單列表頁(yè)面,顯示指定頁(yè)面的信息基本事件流登錄成功后,管理員進(jìn)入系統(tǒng)主頁(yè)面,在主頁(yè)面的導(dǎo)航菜單中點(diǎn)擊[帳單管理]鏈接,操作流程是,在頁(yè)面上方有文本提示寫著帳務(wù)帳號(hào),后邊有一個(gè)文本框,在里面填寫你要查詢的帳務(wù)帳號(hào)名,后邊還有兩個(gè)下拉列表框,后邊文本提示分別寫著年、月,在這兩個(gè)下拉列表框里分別選中你要查詢的年和月,然后點(diǎn)擊查詢按鈕完成操作,如果輸入的帳務(wù)帳號(hào)存在,就會(huì)在列表頁(yè)面顯示此帳務(wù)帳號(hào)在某年某月總的費(fèi)用,如果在帳務(wù)帳號(hào)文本框里沒(méi)有輸入會(huì)查某年某月所有帳號(hào)總的費(fèi)用其他事件流無(wú)異常事件流如果查詢不到任何結(jié)果,則顯示沒(méi)有查詢到任何記錄。后置條件無(wú)用例名稱查詢?cè)聨蚊骷?xì)描述管理員可以進(jìn)行月賬單明細(xì)進(jìn)行查詢用例參與者管理員前置條件管理員已經(jīng)登錄成功基本事件流登錄成功后,管理員

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論