【正文】
腳本語(yǔ)言。 J2EE 1. J2EE介紹 J2EE(Java 2 Platform, Enterprise Edition)是 SUN公司定義的一個(gè)開放式企業(yè)級(jí)應(yīng)用規(guī)范 ,他提供了一個(gè)多層次的分布式應(yīng)用模型和一系列開發(fā)技術(shù)規(guī)范 ,多層次分布式應(yīng)用模型是根據(jù)功能把應(yīng)用邏輯分成多個(gè)層次 ,每個(gè)層次支持相應(yīng)的服務(wù)器和組件 .組件在分布式服務(wù)器的組件容器中運(yùn)行 ,如 Servlet組件在 Servlet容器上運(yùn)行 ,EJB組件在 EJB容器上運(yùn)行 ,容器間通過(guò)相關(guān)的協(xié)議進(jìn)行通訊 ,實(shí)現(xiàn)組件的相互調(diào)用。 2. 構(gòu)建本系統(tǒng) J2EE開發(fā)工具 Java虛擬機(jī): ; Java開發(fā)工具: ; WEB服務(wù)器采用: Tomcat 。在 J2EE ProjectWeb Project,并在 Web Project中 Add Struts和 。在 MVC設(shè)計(jì)模式中,客戶端WEB瀏覽器會(huì)提交各種不同的用戶請(qǐng)求,這些請(qǐng)求由控制器進(jìn)行處理,控制器根據(jù)時(shí)間的類型來(lái)改變 模型或視圖,視圖也可以接受模型層發(fā)出的數(shù)據(jù)更新通知,依據(jù)數(shù)據(jù)更新的結(jié)果調(diào)整視圖效果,并呈現(xiàn)給用戶。 JavaScript 技術(shù) JavaScript語(yǔ)言的前身是 LiveScript語(yǔ)言 [5]。艾克( Brendan Eich)為即將在 1995年發(fā)布的 Navigator 瀏覽器的應(yīng)用而開發(fā)的腳本語(yǔ)言。 本系統(tǒng)主要用JavaScript小程序代碼做一些客戶端的登陸驗(yàn)證和頁(yè)面的選擇控制。 操 作 員管 理 員超 級(jí) 管 理 員授 權(quán) 管 理操 作 員 檔 案 管 理權(quán) 限 設(shè) 置系 統(tǒng) 設(shè) 置檔 案 管 理出 場(chǎng) 管 理入 場(chǎng) 管 理收 費(fèi) 管 理數(shù) 據(jù) 管 理停 車 場(chǎng) 管 理 系 統(tǒng) 圖 21 停車場(chǎng)管理系統(tǒng)用例圖 如圖 21所示,該系統(tǒng)主要有超級(jí)管理員、管理員和操作員三種角色,不同角色的基本任務(wù)如下所述。超級(jí)管理員授權(quán)給管理員賦予管理員應(yīng)有的權(quán)限。進(jìn)行系統(tǒng)的設(shè)置,權(quán)限設(shè)置,數(shù)據(jù)管理,操作員檔案的管理。 根據(jù)用例圖 得到的部分類圖,如圖 22 + a c c r e d i t ( )+ n a m e : S t r i n g+ p a s s w o r d : S t r i n ga d m i n i s t r a t o r+ s e t t i n g ( ) n a m e : S t r i n g p a s s w o r d : S t r i n ga d m i n+ c h a r g e ( ) n a m e : S t r i n g p a s s w o r d : S t r i n g a g e : i n t o p e r a t o r _ n o : s t r i n go p e r a t o r 圖 22 類圖 系統(tǒng)流程分析 停車場(chǎng)管理系統(tǒng)分為入場(chǎng)停車和出場(chǎng)取車兩部分。 數(shù) 據(jù) 中 心入 場(chǎng) 卡 審 核 停 車收 費(fèi)出 場(chǎng)出 場(chǎng) 審 核 圖 23 系統(tǒng)流 程 圖 ( 1)入場(chǎng) 根據(jù)系統(tǒng)提示的停車場(chǎng)的現(xiàn)有信息控制車輛的入場(chǎng),停車場(chǎng)在有車位的情況下方能停車。 ( 3)停車 指定停車位置提示給用戶 ( 1)出場(chǎng)審核 卡審核,卡與車輛的匹配審核。 ( 3)出場(chǎng) 交費(fèi)之后在出場(chǎng)的相關(guān)信息提示下完成停車管理過(guò)程。 ? 模型層 模型層主要包括數(shù)據(jù)邏輯 和業(yè)務(wù)邏輯。 ? 視圖層 系統(tǒng)采用 JSP實(shí)現(xiàn)視圖層。 系統(tǒng)數(shù)據(jù)模型層的分析與設(shè)計(jì) MVC設(shè)計(jì)模式中的 M( Model),主要包括了數(shù)據(jù)邏輯與業(yè)務(wù)邏輯。 Hibernate提供了強(qiáng)大、高性能的對(duì)象到關(guān)系型數(shù)據(jù)庫(kù)的持久化服務(wù)。 在本系統(tǒng)中對(duì)數(shù)據(jù)庫(kù)的增加、修改、刪除、查詢的操作都通過(guò) Hibernate對(duì)數(shù)據(jù)表進(jìn)行相對(duì)應(yīng)的操作。 ( 1)管理應(yīng)用的業(yè)務(wù)邏輯和業(yè)務(wù)校驗(yàn)。 ( 2)管理業(yè)務(wù)級(jí)對(duì)象之間的依賴性。 ( 4)事物代理。 ( 5)錯(cuò)誤管理。本系統(tǒng)所有的頁(yè)面都是通過(guò)此技術(shù)來(lái)實(shí)現(xiàn)的??刂茖有枰?fù)責(zé)以下功能: ( 1) 接受來(lái)自客戶端的 HTTP 請(qǐng)求。 ( 3) 獲得 M 層業(yè)務(wù)邏輯的處理結(jié)果。 第三章 系統(tǒng)總體設(shè)計(jì) 系統(tǒng)設(shè)計(jì) 總體設(shè)計(jì) 首先判斷登錄的身份,進(jìn)入相應(yīng)的操作頁(yè)面 通過(guò)需要的操作,最終完成目的操作的功能 。 他們?cè)趦?nèi)在關(guān)系由數(shù)據(jù)庫(kù)和程序來(lái)控制。 工作人員首先登陸系統(tǒng),經(jīng)過(guò)一系列的身份驗(yàn)證,登陸成功之后進(jìn)入相應(yīng) 的操作界面,實(shí)現(xiàn)各自的管理功能。如圖 32業(yè)務(wù)流程 圖 管 理 員 登 錄登 錄 成 功N權(quán) 限 判 斷Y 管 理 員超 級(jí) 管 理 員操 作 員授權(quán)管理系統(tǒng)設(shè)置權(quán)限管理數(shù)據(jù)管理入場(chǎng)管理檔案管理收費(fèi)管理出場(chǎng)管理 圖 32 業(yè)務(wù)流程 圖 其中各模塊有對(duì)應(yīng)的添加、修改及刪除功能。 (2)系統(tǒng)設(shè)置 由超級(jí)管理員 授權(quán)的管理員行使 該功能,主要是對(duì)停車場(chǎng)的參數(shù)進(jìn)行設(shè)置。 (4)數(shù)據(jù)管理模塊 該模塊顯示了停車場(chǎng)日常運(yùn)行所產(chǎn)生的 數(shù)據(jù),場(chǎng)內(nèi)車輛,進(jìn)出數(shù)據(jù),收費(fèi)金額以及交班記錄的相關(guān)信息。他們都有自己的添加、刪改、修改的功能。 (7)出場(chǎng)管理 汽車離場(chǎng)之前對(duì)其進(jìn)行的離場(chǎng)驗(yàn)證和停車時(shí)間的數(shù)據(jù)收集,為下一收費(fèi)模塊提供數(shù)據(jù)。 數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn) 數(shù)據(jù)庫(kù)的需求分析 數(shù)據(jù)庫(kù)設(shè)計(jì)的 ER圖。停車場(chǎng)的顧客用戶有唯一的一條卡信息與自己 的車信息綁定。收費(fèi)的根據(jù)時(shí)入場(chǎng)時(shí)的信息和出場(chǎng)時(shí)的信息以及收費(fèi)標(biāo)準(zhǔn)的綜合得出。 卡 表?yè)?有1車 表用 戶 表入 場(chǎng) 表出 場(chǎng) 表收 費(fèi) 標(biāo) 準(zhǔn) 表次 收 費(fèi) 表 時(shí) 收 費(fèi) 表交 班 表員 工 表車 位 表 收 費(fèi) 表停 車 場(chǎng) 參數(shù) 表屬 于n擁 有 111 1存 放n 1包 含入 場(chǎng) 1 11 1簽 名記 錄上 班計(jì) 費(fèi)計(jì) 費(fèi)出 場(chǎng)包 含包 含包 含1 11 1 n 11 n n 1 1 11 n n 1 1 1 圖 34 系統(tǒng)數(shù)據(jù)庫(kù) ER 圖 根據(jù)系統(tǒng)需求,本系統(tǒng)需要設(shè)計(jì) 13 張表。 ( 2) 停車場(chǎng)參數(shù)表:存放停車場(chǎng)的基本參數(shù)。 ( 4) 車信息表:存放車的基本信息。 ( 6) 時(shí)收費(fèi)表:存放按時(shí)收費(fèi)的時(shí)間段。 ( 8) 入場(chǎng)表:存放入場(chǎng)時(shí)候的一些信息。 ( 10) 交班表:存放操作員交接班的相關(guān)信息。 ( 12) 車位表:用于存放每一個(gè)車位上的停車狀態(tài)。 數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì) 下面給出各個(gè)表的詳細(xì)結(jié)構(gòu)。 登陸時(shí)進(jìn)行驗(yàn)證,首先進(jìn)行頁(yè)面級(jí)的驗(yàn)證輸入的信息,用戶名和密碼不能為空。當(dāng)同一個(gè)用戶已經(jīng)登錄時(shí),使用 同一賬號(hào)和密碼將不能登陸該系統(tǒng),在一定程度上提高了系統(tǒng)的安全性。 登 錄管 理 員 身 份 認(rèn) 證 管 理 子 模 塊用 戶 名密 碼登 錄 類 型合 法非 法 圖 42 登錄模塊數(shù)據(jù)流程圖 程序描述 提供登錄用戶名、密碼和登陸類型三個(gè)屬性。 try{ byte[] buffer=(ISO88591)。 } catch(UnsupportedEncodingException e) {()。 if(bool){ if((1))//判斷時(shí)哪個(gè)權(quán)限類型的登錄 超級(jí)管理員 {PlublicStr=administratorsuccess。 } else if((3))//操作員 { PlublicStr=operatorsuccess。 ().setAttribute(errors,賬號(hào)不存在 ,或沒(méi)有該 登陸權(quán)限! )。} return (PlublicStr)。所有的管理員級(jí)別的用戶都有該超級(jí)管理員進(jìn)行授權(quán)產(chǎn)生。 添加管理員的信息 的前提 是保證數(shù)據(jù)庫(kù)中沒(méi)有該管理員的信息, 所以在添加的時(shí)候 首先要對(duì)添加的 管理員在管理員表中 進(jìn)行檢查,如果存在 則提示不能添加該管理員的信息。刪除的時(shí)候可以選擇多項(xiàng)和選擇所有的管理員進(jìn)行刪除 。數(shù)據(jù)流圖 46 操 作管 理 員 設(shè) 置 停 車 場(chǎng) 參 數(shù) 圖 46 停車場(chǎng)參數(shù)數(shù)據(jù)流圖 程序功能描述 主要是根據(jù) 管理員輸入的停車場(chǎng)的參數(shù), 這些參數(shù)是由管理員對(duì)停車場(chǎng)的參數(shù)進(jìn)行初始化,通過(guò)查詢停車場(chǎng)參數(shù) 顯示停車場(chǎng)的參數(shù)信息。 Parkparameter pp = new Parkparameter()。 (())。 ((()))。 (())。 ParkparameterDAO ppDao = new ParkparameterDAO()。 try{(pp)。 操作員檔案管理模塊 圖 47 操作員檔案管理界面 功能說(shuō)明 管理員進(jìn)入該界面,查詢操作員的權(quán)限檔案信息,并可以進(jìn)行添加刪除修改。 選 擇 操 作管 理 員查 詢 操 作 員 信 息編 輯 操 作 員 信 息 圖 48 操作員檔案管理數(shù)據(jù)流程圖 程序功能描述 管理員進(jìn)入該模塊之后可以查詢操作員的信 息,并可以進(jìn)行操作員信息的編輯,主要的編輯是添加、刪除和修改。修改操作員的信息,作了一個(gè)人為的規(guī)定,即操作員的 ID 號(hào)時(shí)不允許修改的,其他的項(xiàng)目可以修改,修改之前要在復(fù)選框中選中,利用 JavaScript 代碼控制只能選擇一個(gè)操作員的信息進(jìn)行修改。 數(shù)據(jù)管理模塊 圖 49 數(shù)據(jù)管理 交班記錄 界面 功能說(shuō)明 數(shù)據(jù)管理頁(yè)面主要是對(duì)停車場(chǎng)的數(shù)據(jù)進(jìn)行管理,場(chǎng)內(nèi)車輛管理信息的查詢,進(jìn)出場(chǎng)數(shù)據(jù)的查詢,操作員收費(fèi)金額信息的查詢,以及操作員交班記錄的查詢。 由于這些記錄可能會(huì)出現(xiàn)很多,所以在頁(yè)面進(jìn)行了分頁(yè)顯示。 圖 410 數(shù)據(jù)管理流程圖。綜合這些數(shù)據(jù)信息便于管理者進(jìn)行必要的商業(yè)決策和人事管理等。 //分頁(yè)顯示查詢的記錄 int intPageSize。//記錄總數(shù) int intPageCount。//待顯示頁(yè)碼 String strPage。 int j=1。//設(shè)置一頁(yè)顯示的記錄數(shù) int len=intPageSize。 strPage=(page)。 } else//將字符串轉(zhuǎn)換成整型 { intPage = (strPage)。 } //獲取記錄總數(shù) intRowCount = ()。 //調(diào)整待顯示的頁(yè)碼 if(intPage intPageCount) intPage = intPageCount。 ((intPage1)*intPageSize)。 //顯示數(shù)據(jù) } m=0。amp。 len++。 % tr td width=116%=() %/td td width=116%=() %/td td width=116%=() %/td td width=116%=() %/td td width=116%=() %/td td width=116%=() %/td /tr %} % /table p align=center class=STYLE5 font color=red共 %=intRowCount%個(gè)記錄 ,分 %=intPageCount%頁(yè)顯示 ,您所在的頁(yè)面是 :第%=strPage %頁(yè) /font %for(。j++) {( a href=39。+j+/a)。檔案管理數(shù)據(jù)流程圖 412。用戶管理小模塊是長(zhǎng)期卡用戶進(jìn)行的管理, 在整個(gè)系統(tǒng)中,長(zhǎng)期卡與車牌號(hào)以及用戶即持卡人是一一對(duì)應(yīng)的關(guān)系。 入場(chǎng)管理模塊 圖 413 入場(chǎng)管理模塊界面 功能說(shuō)明 如果有車入場(chǎng),首先要檢測(cè)一下是否還有空閑的車位,如果沒(méi)有空閑車位,入場(chǎng)不成功。 入場(chǎng)管理需要 手動(dòng) 輸入 一些信息,提交之后要進(jìn)行必要的判斷之后按照指定車位進(jìn)入停車場(chǎng) ,在指定車位的時(shí)候是根據(jù)車位在車位表中的順序來(lái)進(jìn)行指定的 。 圖 414 是 入場(chǎng)模塊的數(shù)據(jù)流程圖 。長(zhǎng)期卡如果有效直接按指定車位停車。車輛入場(chǎng)后總車位數(shù)減 1,該車位的狀態(tài)由先前的有車狀態(tài)標(biāo)記為無(wú)車狀態(tài) 。圖416 是 出場(chǎng)管理數(shù)據(jù)流程圖。 根據(jù)入場(chǎng)表中的卡類型,車類型,入場(chǎng)時(shí)間,收費(fèi)類型和出場(chǎng)時(shí)的時(shí)間,計(jì)算出收費(fèi)的金額, 調(diào) 用收費(fèi)模塊, 將入場(chǎng)表中的與該車相關(guān)的入場(chǎng)數(shù)據(jù)從數(shù)據(jù)表中刪除,并將出入場(chǎng)相關(guān)的數(shù)據(jù)記錄到出入場(chǎng)記錄表中。 收費(fèi)管理模塊 圖 417 收費(fèi)清單界面 圖 418 收費(fèi)標(biāo)準(zhǔn)設(shè)置界面 功能說(shuō)明 收費(fèi)管理是停車場(chǎng) 管理系統(tǒng)最重要的功能之一,綜合以上入場(chǎng)時(shí)提供的信息,根據(jù)設(shè)置的計(jì)費(fèi)標(biāo)準(zhǔn)計(jì)算出收費(fèi)金額,并打印出收費(fèi)清單。收費(fèi)標(biāo)準(zhǔn)的設(shè)置有時(shí)收費(fèi)和次收費(fèi),時(shí)收費(fèi)以時(shí)段為系統(tǒng)收費(fèi)提供依據(jù)。次收費(fèi)按次收費(fèi),在指定的時(shí)間段內(nèi)設(shè)置每次停車的收費(fèi)金額。最大金額設(shè)置收費(fèi)最大的額度