【文章內(nèi)容簡介】
銷用 戶 注 冊瀏 覽 功 能瀏 覽 新 聞發(fā) 布 評 論 圖 前臺系統(tǒng)功能 系統(tǒng)模塊功能結(jié)構(gòu)圖 系統(tǒng)具有三類用戶:游客 ,已登錄用戶,管理員。本系統(tǒng)中他們的權(quán)限依次遞增,已登錄用戶具有游客所有的權(quán)限,管理員具有已登錄用戶所有的權(quán)限,所以在圖中就沒有標(biāo)明每類用戶所有的功能。只是標(biāo)明了該用戶權(quán)限所特有的功能(除了比該用戶權(quán)限低的功能 )。系統(tǒng)模塊功能結(jié)構(gòu)圖如圖 所示。 新 聞 發(fā) 布 系 統(tǒng)游 客已 登 錄 用戶管 理 員瀏 覽 新聞發(fā) 表 評 論新 聞 欄 目管 理用 戶 管 理 評 論 管 理新 聞 管 理登 錄注 冊注 銷 圖 系統(tǒng)模塊功能結(jié)構(gòu)圖 9 總業(yè)務(wù)流程圖 系統(tǒng)的總業(yè)務(wù)流 程圖為:打開頁面,對于每一個能夠登錄到本系統(tǒng)的人都稱之為游客,游客可以瀏覽新聞,但是不能對其進(jìn)行評論,如果需要得到更多的權(quán)限的話,游客必須先登錄, 如果還未注冊,就要先注冊,注冊成功后,再進(jìn)行登錄。登錄成功后系統(tǒng)會自動判斷用戶是否是系統(tǒng)管理員,如果不是管理員, 就 只能瀏覽新聞,發(fā)表評論和注銷的功能,如果是管理員,就 可以對新聞,新聞欄目,用戶以及評論進(jìn)行管理,本系統(tǒng)的業(yè)務(wù)流程圖如圖 所示 。 打 開 主 頁是 否 登 錄是 否 已 注 冊否注 冊瀏 覽 新 聞 , 發(fā) 表 評 論結(jié) 束是 否 是 管 理員否新 聞 , 新 聞 欄 目 ,用 戶 和 評 論 管 理是登 錄 否注 冊 失 敗注 冊 成 功是登 錄 成 功登 錄 成 功瀏 覽 新 聞注 銷 圖 系統(tǒng)業(yè)務(wù)流程圖 系統(tǒng)數(shù)據(jù)庫設(shè)計 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計 根據(jù)功能模塊劃分的結(jié)果。本系統(tǒng)的用戶有三類,系統(tǒng)管理員,已登錄的用戶和游客。不同的用戶的權(quán)限和操作是不同的。游客在本系統(tǒng)中不需要進(jìn)行數(shù)據(jù)記錄,所以 對于新聞發(fā)布系統(tǒng)來說真正意義上只有兩種用戶,所以需要 1 個數(shù)據(jù)實(shí)體 ? 用戶實(shí)體:包括用用戶名,密碼,郵箱,用戶類型標(biāo)志,其中用戶名,密碼,郵箱格式是登錄和注冊時驗(yàn)證所必需的,這些信息都有管理員來維護(hù) 。 除了上面的用戶實(shí)體外,新聞管理還需要對新聞進(jìn)行管理,新聞欄目管理和新聞評論管理還要對新聞欄目和新聞評論進(jìn)行管理 10 ? 新聞實(shí)例:用于記錄新聞的基本信息。包括新聞類型,新聞標(biāo)題,新聞欄目,發(fā)布新聞,新聞的評論 ? 新聞欄目:用于記錄新聞欄目的基本信息。包括新聞欄目名詞,新聞欄目包含的新聞 ? 評論:用于記錄評論的基本信息。包括用 戶信息,新聞,評論內(nèi)容,發(fā)表的評論時間 基于上面的設(shè)計,開始設(shè)計表,表與表相互關(guān)聯(lián),共同存儲著系統(tǒng)所需要的數(shù)據(jù),在設(shè)計數(shù)據(jù)庫表的過程中,一般要遵循以下幾條原則 ? 數(shù)據(jù)庫的一個表最好只存儲一個實(shí)體或?qū)ο蟮南嚓P(guān)信息,不同的實(shí)體最好存儲在不同的數(shù)據(jù)表中,如果實(shí)體還可以再劃分,實(shí)體的劃分原則是,劃分后的實(shí)體比當(dāng)前系統(tǒng)要開發(fā)的實(shí)體的復(fù)雜的小 ? 數(shù)據(jù)表的信息結(jié)構(gòu)一定要合適,表達(dá)字段的數(shù)量一般不要過多 ? 擴(kuò)充信息和動態(tài)變化的信息一定要合適, 表達(dá)字段的數(shù)量一般不要過多 ? 擴(kuò)充信息和動態(tài)變化的信息一定要放在不同的表里 ? 多對多的表關(guān) 系盡量不要出現(xiàn) 設(shè)計數(shù)據(jù)庫表及表間關(guān)系 。數(shù)據(jù)庫表關(guān)系圖如圖 所示 發(fā)表留言新聞新聞留言n e w st yp en e w sT yp e I dn e w sT yp e N a m eT e xtT e xtu se ru se r I du se r N a m eu se r P w du se r E m a i lu se r F l a gT e xtT e xtT e xtT e xtT e xtr e p l a yr e p l a yI dr e p l a yC o n t e n tr e p l a yT i m eT e xtT e xtT e xtn e w sn e w sI dn e w sT i t l en e w sC o n t e n tn e w sT i m eT e xtT e xtT e xtT e xt 圖 數(shù)據(jù)庫表關(guān)系圖 ER 圖 ER 圖如圖 所示 11 圖 ER 圖 數(shù)據(jù)庫表總覽 數(shù)據(jù)庫表總覽 表名 功能說明 newstype 表 存儲新聞欄目信息 news 表 存儲新聞信息 user 表 存儲用戶信息 replay 表 存儲評論信息 數(shù)據(jù)庫表設(shè)計 由數(shù)據(jù)模型利用 MySql 進(jìn)行數(shù)據(jù)庫的詳細(xì)設(shè)計,其基本表的設(shè)計如下: (1) 新聞欄目 (newstype) 中文字段名 英文字段名 字段類型 長度 主鍵 /外 鍵 字段值約束 新聞欄目編號 newsTypeId varchar 32 P NOT NULL 欄目名稱 newsTypeName varchar 32 (2) 新聞 (news) 中文字段名 英文字段名 字段類型 長度 主鍵 /外鍵 字段值約束 新聞編號 newsId varchar 32 P NOT NULL 新聞標(biāo)題 newsTitle varchar 32 新聞內(nèi)容 newsContent varchar 2020 新聞發(fā)布時間 newsTime varchar 32 12 (3) 用戶 信息 (user) 中文字段名 英文字段名 字段類型 長度 主鍵 /外鍵 字段值約束 用戶編號 userId varchar 32 P NOT NULL 用戶名 userName varchar 32 密碼 userPwd varchar 32 用戶類型 userFlag varchar 32 (4) 評論 (replay) 中文字段名 英文字段名 字段類型 長度 主鍵 /外鍵 字段值約束 評論編號 replayId varchar 32 P NOT NULL 評論內(nèi)容 userName varchar 32 評論時間 userPwd varchar 32 13 第四 章 系統(tǒng)的開發(fā)工具 開發(fā)技術(shù) 本 系統(tǒng) 是采用 Struts+Hibernate 技術(shù) 和 Mysql 數(shù)據(jù)庫 來開發(fā)的 。 ? Struts 框架 圖 Structs實(shí)現(xiàn)的 MVC框架 Struts 只是一個 MVC 框架( Framework) ,用于快速開發(fā) Java Web 應(yīng)用。 Struts 將應(yīng)用程序分為 3 個部分:模型 Model,視圖 View,控制器Controller; 模型組件:負(fù)責(zé)業(yè)務(wù)邏輯; 模型包含應(yīng)用程序的核心功能。模型封裝了應(yīng)用程序的狀態(tài)。有時它包含的唯一功能就是狀態(tài)。它對視圖或控制器一無所知。 視圖組件:負(fù)責(zé)表示業(yè)務(wù)范圍的視圖; 視圖提供模型的表示。它是應(yīng)用程序的 外觀。視圖可以訪問模型的讀方法,但不能訪問寫方法。此外,它對控制器一無所知。當(dāng)更改模型時,視圖應(yīng)得到通知。 控制器組件:負(fù)責(zé)控制用戶輸入的流和狀態(tài); 控制器對用戶的輸入作出反應(yīng)。它創(chuàng)建并設(shè)置模型。 Struts,它是使用 servlet 和 JavaServer Pages 技術(shù)的一種 MVC 實(shí)現(xiàn); Struts, Apache 組織的一個項(xiàng)目, MVC 的一種開放源碼實(shí)現(xiàn); ? Hibernate 介紹 Hibernate 是一個開放源代碼的對象關(guān)系映射框架,它對 JDBC 進(jìn)行了輕量級的對象封裝,使 Java 程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。它不僅提供了從 Java 類到數(shù)據(jù)表之間的映射,也提供了數(shù)據(jù)查詢和恢復(fù)機(jī)制。相對于使用 JDBC 和 SQL 來手工操作數(shù)據(jù)庫, Hibernate 可以大 大減少操作數(shù)據(jù)庫的工作量。 另外 Hibernate 可以利用代理模式來簡化載入類的過程,這將大大減少利用 Hibernate QL 從數(shù)據(jù)庫提取數(shù)據(jù)的代碼的 14 編寫量,從而節(jié)約開發(fā)時間和開發(fā)成本 Hibernate 可以和多種 Web 服務(wù)器或者應(yīng)用服務(wù)器良好集成,如今已經(jīng)支持幾乎所有的流行的數(shù)據(jù)庫服務(wù)器。 ? Hibernate 原理 Hibernate 技術(shù)本質(zhì)上是一個提供數(shù)據(jù)庫服務(wù)的中間件。它的架構(gòu)如圖 所示: 圖 Hibernate 的 架構(gòu)圖 它是利用數(shù)據(jù)庫以及其他一些配置文件如 Hibernate .properties , XML Mapping 等來為應(yīng)用程序提供數(shù)據(jù)持久化服務(wù)的。 Hibernate 具有很大的靈活性,但同時它的體系結(jié)構(gòu)比較復(fù)雜,提供了好幾種不同的運(yùn)行方式。在輕型體系中,應(yīng)用程序提供 JDBC 連接,并且自行管理事務(wù),這種方式使用了 Hibernate 的一個最小子集;在全面解決體系中,對于應(yīng)用程序來說,所有底層的 JDBC/JTA API 都被抽象了, Hibernate 會替你照管所有的細(xì)節(jié)。 ? 工廠方法模式 在軟件系統(tǒng)中,經(jīng)常面臨著“某個對象”的創(chuàng)建工作,由于需求的變化,這個 對象的具體實(shí)現(xiàn)經(jīng)常面臨著劇烈的變化,但是它卻擁有比較穩(wěn)定的接口。如何應(yīng)對這種變化?提供一種封裝機(jī)制來隔離出“這個易變對象”的變化,從而保持系統(tǒng)中“其它依賴該對象的對象”不隨著需求的改變而改變?這就是要說的Factory Method 模式了。 定義一個用戶創(chuàng)建對象的接口,讓子類決定實(shí)例化哪一個類。 DAOFactory使一個類的實(shí)例化延遲到其子類。 IDE 的選擇 15 My eclipse: Eclipse 是一個 IDE( Integrated Developing Environment),而這個 IDE 是允許安裝第三方 開發(fā)的插件來使自身的功能得到擴(kuò)展和增強(qiáng)的,而My eclipse 就是其中的一種有名的插件集之一,主要是為 J2EE開發(fā); My Eclipse將開發(fā)者常用到的一些有用的插件都集合起來,提供一種高級編程環(huán)境,可以比較輕松完成 struts, Hibernate, Spring 布局,編寫 。 數(shù)據(jù)庫管理軟件 MySQL: MySQL 是一個開放源碼的小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),目前MySQL 被廣泛地應(yīng)用在 Inter 上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一 特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了 MySQL 作為網(wǎng)站數(shù)據(jù)庫。與其他的大型數(shù)據(jù)庫例如 Oracle、DB SQL Server 等相比, MySQL 自有它的不足之處,如規(guī)模小、功能有限( MySQL 不支持視圖(已經(jīng)被列入 版的開發(fā)計劃)、事件等)等,但是這絲毫也沒有減少它受歡迎的程度。對于一般的個人使用者和中小型企業(yè)來說,MySQL 提供的功能已經(jīng)綽綽有余,而且由于 MySQL 是開放源碼軟件,因此可以大大降低總體擁有成本。 UML 設(shè)計工具 PowerDesigner 是 Sybase 公司的 CASE 工具 集,使用它可以方便地對管理信息系統(tǒng)進(jìn)行分析設(shè)計,它幾乎包括了數(shù)據(jù)庫模型設(shè)計的全過程。利用PowerDesigner 可以制作數(shù)據(jù)流程圖、概念數(shù)據(jù)模型、物理數(shù)據(jù)模型,可以生成多種客戶端開發(fā)工具的應(yīng)用程序,還可為數(shù)據(jù)倉庫制作結(jié)構(gòu)模型,也能對團(tuán)隊(duì)設(shè)計模型進(jìn)行控制。它可與許多流行的數(shù)據(jù)庫設(shè)計軟件,例如: PowerBuilder,Delphi, VB 等相配合使用來縮短開發(fā)時間和使系統(tǒng)設(shè)計更優(yōu)化 。本系統(tǒng)中,我們使用 PowerDesigner 來繪制用例圖等。 另一個工具就是 visio。 版本控制 CVS: CVS 是 Concurrent Version System(并行版本系統(tǒng))的縮寫, 是一個版本控制系統(tǒng) ,使用它管理源代碼在多個開發(fā)人員之間的修改。 日志管理 Log4J: Log4j 是一個開源的日志記錄組件,其產(chǎn)品已經(jīng)相當(dāng)?shù)某墒?,且使用非常的廣泛。在工程中以易用,方便等代替了 System. out 等打印語句。它允許開發(fā)人員以任意的精細(xì)程度控制哪些日志說明被輸出。通過使用外部的配置文 16 件,可以在運(yùn)行時配置它。在本系統(tǒng)中,我們利用 log4j 來記錄網(wǎng)站運(yùn)行時所產(chǎn)生的日志,以幫助技術(shù)人員維護(hù)網(wǎng)站。 17 第五 章 系統(tǒng)詳細(xì)設(shè)計 系統(tǒng)架構(gòu) 設(shè)計 整個系統(tǒng)遵循多層次的架構(gòu)模式 ,從上到下依次為視圖層,控制器層,業(yè)務(wù)層,持久化層,數(shù)據(jù)庫層 。 視 圖 層控 制 層業(yè) 務(wù) 層持 久 化 層數(shù) 據(jù) 庫 層 圖 系統(tǒng)架構(gòu) 層次間的依賴關(guān)系的原則應(yīng)該是自頂向下的,即上層可以依賴下層,而下層應(yīng)盡量減少對上層的依賴。同時層次之間的交互應(yīng)該減少對實(shí)現(xiàn)的依賴,通過接口進(jìn)行交互。在本