【正文】
下開發(fā)??尚行苑治鍪窃谡{(diào)查分析的基礎(chǔ)上,針對(duì)新系統(tǒng)的開發(fā)是否具有實(shí)用性和可能性,對(duì)新系統(tǒng)的開發(fā)從經(jīng)濟(jì)、技術(shù)、社會(huì)環(huán)境和人等發(fā)面進(jìn)行分析和研究。聯(lián)想集團(tuán)領(lǐng)導(dǎo)人柳傳志 [2021]曾說(shuō):“沒(méi)錢賺的事我們不干;有錢賺但投不起錢的事不干;有錢賺也投的起錢但沒(méi)有可靠的人選,這樣的事也不干。 ( 1)、技術(shù)可行性 技術(shù)上的可行性分析主要指在現(xiàn)有可用的技術(shù)基礎(chǔ)上,是否能夠順利完成新系統(tǒng)的開發(fā)工作。容量越來(lái)越大,性能越來(lái)越強(qiáng),而價(jià)錢卻越來(lái)越低。從軟件方面來(lái)看,該 BBS 論壇采用了流行的動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì)技術(shù)( JSP)和當(dāng)前流行的 B/S(瀏覽器 /服務(wù)器)設(shè)計(jì)模式進(jìn)行開發(fā)。先進(jìn)的 Inter/Intra(國(guó)際互聯(lián)網(wǎng)/企業(yè)內(nèi)部互聯(lián)網(wǎng))技術(shù),保證了 B/S 結(jié)構(gòu)的強(qiáng)有力態(tài)勢(shì),將 B/S 結(jié)構(gòu)的應(yīng)用轉(zhuǎn)變成為一種特定時(shí)代條件下的大勢(shì)所趨。數(shù)據(jù)庫(kù)服務(wù)器選用的是 MySQL 版本,是目前運(yùn)行速度最快的 SQL 語(yǔ)言數(shù)據(jù)庫(kù),能夠同時(shí)處理大量數(shù)據(jù),并保證數(shù)據(jù)的完整性。 ( 2)、經(jīng)濟(jì)可行性 7 經(jīng)濟(jì)可行性所作的工作主要是對(duì)項(xiàng)目整體的經(jīng)濟(jì)效益進(jìn)行評(píng)估,本系統(tǒng)的目的是模擬一個(gè)網(wǎng)上交流的平臺(tái),供用戶在社區(qū)交流經(jīng)驗(yàn)、探討問(wèn)題。 ( 3)、社會(huì)可行 性 隨著 Inter 技術(shù)的迅猛發(fā)展, BBS 論壇已成為越來(lái)越多網(wǎng)民彼此交流,獲取信息的重要途徑。通過(guò) BBS 論壇獲取信息及發(fā)表主題已成為一種時(shí)尚的生活方式。 8 3 系統(tǒng)總體設(shè)計(jì) 系統(tǒng)目標(biāo) 基于 BBS 論壇在現(xiàn)實(shí)生活的實(shí)際應(yīng)用,本系統(tǒng)的系統(tǒng)目標(biāo)是提供一個(gè)以現(xiàn)實(shí)環(huán)境為基礎(chǔ)的網(wǎng)上模擬交流平臺(tái),通過(guò)它 ,人們可以不必拘泥于空間和時(shí)間上的限制,方便交流,暢所欲言,同時(shí)也能夠更加便利的看到周圍人的想法,觀點(diǎn),最大化的豐富人們的視野和生活,讓人隨時(shí)都能身在其中,隨時(shí)也能置身事外。如果用戶為非注冊(cè)用戶,則其可以進(jìn)行注冊(cè)以獲得一個(gè)登錄身份。 前臺(tái)系統(tǒng)流程圖具體如下: 9 論 壇 首 頁(yè)匿 名 身 份 登錄是 注 冊(cè) 用 戶 嗎 ?用 戶 登 錄 用 戶 注 冊(cè)NY登 錄 成 功N注 冊(cè) 成 功N論 壇 首 頁(yè)YY圖 32 前臺(tái)系統(tǒng)流程圖 此時(shí),用戶已經(jīng)具有了一種身份,此后用戶可以以此種身份執(zhí)行諸如發(fā)表新主題、查看主題、搜索主題、回復(fù)主題等操作。 10 后臺(tái)系統(tǒng)流程圖如下:論 壇 首 頁(yè)匿 名 身 份 登錄是 管 理 員 嗎 ?管 理 員 登 錄Y登 錄 成 功NN論 壇 首 頁(yè)Y 圖 33 后臺(tái)系統(tǒng)流程圖 系統(tǒng)開發(fā)環(huán)境 開發(fā)環(huán)境 在建立工程前,需要首先搭建開發(fā)環(huán)境。 C/S 結(jié)構(gòu),即大家熟知的客戶端 /服務(wù)器結(jié)構(gòu),是一種應(yīng)用較早,相對(duì)傳統(tǒng)的開發(fā)模式。 B/S 結(jié)構(gòu),即瀏覽器 /服務(wù)器結(jié)構(gòu),是隨著 Inter 的興起,對(duì) C/S 結(jié)構(gòu)的一種變化或者改進(jìn)。在這種模式下,一部分事務(wù)邏輯在前段實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),大大簡(jiǎn)化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級(jí)的成本,從而降低了用戶的整體成本。而 B/S 結(jié)構(gòu),是一次性到位的開發(fā),應(yīng)用此模式開發(fā)的系統(tǒng),不同人員,在不同地點(diǎn),以不同的接入方式(比如 LAN、 WAN 等)訪問(wèn)并操作共同的數(shù)據(jù)庫(kù),能有效地保護(hù)數(shù)據(jù)平臺(tái)和管理訪問(wèn)權(quán)限,服務(wù)器的數(shù)據(jù)庫(kù)也很安全??梢哉f(shuō), B/S 是乘著 Inter 興起的風(fēng)而楊風(fēng)遠(yuǎn)航的,是適應(yīng)時(shí)代的產(chǎn)物。綜合考慮,本系統(tǒng)還是考慮 使用 當(dāng)下流行的 B/S 結(jié)構(gòu)作為系統(tǒng)的開發(fā)模式。作為 一種編程語(yǔ)言,其出現(xiàn)的使命就是為了適合動(dòng)態(tài)網(wǎng)頁(yè)制作的需要,頗具工具色彩。可以說(shuō), JavaScript 是專門為制作 Web 網(wǎng)頁(yè)而量身定做的一種簡(jiǎn)單的編程語(yǔ)言。其特有的工具色彩讓其在動(dòng)態(tài)網(wǎng)頁(yè)的開發(fā)中找到了用武之地。 JSP 是類似 12 ASP 的一種技術(shù),在傳統(tǒng)的靜態(tài)網(wǎng)頁(yè) HTML 文件插入 Java 程序段和 JSP 標(biāo)記,就形成了JSP 文件。 在更換系統(tǒng)時(shí) ,代碼不需要做任何修改?;旧峡梢栽谒衅脚_(tái)上的任意環(huán)境下開發(fā),在任意環(huán)境中進(jìn)行系統(tǒng)部署,在任意環(huán)境中擴(kuò)展。通過(guò)小小的 jar 文件運(yùn) 行 servlet/JSP,到由多臺(tái)服務(wù)器進(jìn)行集群和負(fù)載均衡,到多臺(tái) Application 進(jìn)行事務(wù)處理,一臺(tái)服務(wù)器到無(wú)數(shù)臺(tái)服務(wù)器,JSP 表現(xiàn)了強(qiáng)大的可伸縮性。 MySQL MySQL 可以稱得上是目前運(yùn)行速度最快的 SQL 語(yǔ)言數(shù)據(jù)庫(kù),除了具有許多其他數(shù)據(jù)庫(kù)所不具備的功能和選擇外, MySQL 數(shù)據(jù)庫(kù)是一種完全免費(fèi)的產(chǎn)品,用戶可以直接從網(wǎng)上下載數(shù)據(jù)庫(kù),用于個(gè)人和商業(yè)用途,而不必支付任何費(fèi)用。不管使用何種技術(shù),都離不開 JDBC 技術(shù)的支持。其定義了用來(lái)訪問(wèn)數(shù)據(jù)庫(kù)源的標(biāo)準(zhǔn) Java 類庫(kù),通過(guò)它使用一種標(biāo)準(zhǔn)方法,就能夠方便的訪問(wèn)數(shù)據(jù)庫(kù)資源。 有了 JDBC,向各種數(shù)據(jù)庫(kù)發(fā)送 SQL 語(yǔ)句就是一件再簡(jiǎn)單不過(guò)的事了。所以, JDBC 為 Java 應(yīng)用程序與各種不同數(shù)據(jù)庫(kù)之間進(jìn)行對(duì)話提供了一個(gè)標(biāo)準(zhǔn)的方法,這也是 Java 語(yǔ)言“一次編寫,到處運(yùn)行”的優(yōu)勢(shì)。一個(gè)合理、有效的數(shù)據(jù)庫(kù)設(shè)計(jì)不僅是做好系統(tǒng)的保證,也能降低 程序的復(fù)雜性, 使 程序的開發(fā)過(guò)程變得更加容易。 MySQl 是一個(gè)中小關(guān)系型數(shù)據(jù)管理系統(tǒng),最初由 MySQL AB 公司發(fā)布。 MySQL 可以稱得上是目前運(yùn)行速度最快的 SQL 語(yǔ)言數(shù)據(jù)庫(kù),此外, MySQL 數(shù)據(jù)庫(kù)是一種完全免費(fèi)的產(chǎn)品,用戶可以直 接從網(wǎng)上下載數(shù)據(jù)庫(kù),用于個(gè)人和商業(yè)用途,而不必支付任何費(fèi)用。其組成部分主要包括實(shí)體、聯(lián)系和屬性。 ER 模型是設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)經(jīng)常使用到的方法。 下面劃分出本系統(tǒng)所使用的數(shù)據(jù)庫(kù)實(shí)體,它們分別為用戶( User)和帖子 (Article)以及管理員( admin)。 用戶表( User) 下面是對(duì)表 User 的具體設(shè)計(jì) 表 41 user 字段名 屬性 約束 意義 1 userName varchar(30) primary key 用戶名 2 password varchar(25) 無(wú) 密碼 3 rePassword varchar(25) 無(wú) 確認(rèn)密碼 4 mainUrl varchar(50) 無(wú) 郵箱地址 5 loginTime datetime 無(wú) 注冊(cè)時(shí)間 6 gradeNo int Foreign key 用戶等級(jí) 說(shuō)明: *userName 是注冊(cè)用戶的用戶名,為 User 表的主鍵。 *rePassword 是確認(rèn)密碼,與用戶密碼對(duì)應(yīng)。 *loginTime 表示用戶注冊(cè)的時(shí)間。共分為四個(gè)等級(jí):菜鳥、列兵、星級(jí)標(biāo)兵和士官。 管理員表( admin) 表 42 admin 字段名 屬性 約束 意義 1 adminId int primary key 管理員編號(hào) 2 adminName varchar(25) 無(wú) 管理員姓名 3 password varchar(25) 無(wú) 密碼 4 adminTime datetime 無(wú) 創(chuàng)建時(shí)間 帖子表( Article) 下面是對(duì)表 Article 的具體設(shè)計(jì) 表 43 article 字段名 屬性 約束 意義 1 id int primary key 帖子 id 2 pid int 無(wú) 父親 id 3 rootid int 無(wú) 根 id 4 editNo Int 無(wú) 所屬版塊 5 title varchar(30) 無(wú) 標(biāo)題 6 cont text 無(wú) 內(nèi)容 7 pdate datetime 無(wú) 發(fā)帖時(shí)間 8 writer varchar(30) foreign key 作者 9 viewCount int 無(wú) 帖子查看量 10 replyCount int 無(wú) 帖子回復(fù) 量 11 isleaf int 無(wú) 判斷帖子是否 為葉子節(jié)點(diǎn) 12 isEssence int 無(wú) 判斷帖子是否為精華帖 說(shuō)明: *id 是帖子的編號(hào),為本表的主鍵。 *rootid 表示根貼的 id 號(hào),表示最初發(fā)起主題的帖子 id 號(hào)。 *title 表示帖子的主題。 *pdate 表示發(fā)帖的具體時(shí)間。 *viewCount 表示帖子的查看量。 *isLeaf 判斷帖子是否為葉子節(jié)點(diǎn),值為 1 時(shí)表示為非葉子節(jié)點(diǎn);為 0 時(shí)表示為葉子節(jié)點(diǎn)。 用戶 等級(jí) 表( grade) 圖 44 grade 字段名 屬性 約束 意義 1 gradeId int primary key 等級(jí)編號(hào) 2 gradeCont varchar(25) 無(wú) 等級(jí)內(nèi)容 版塊類別表( edit) 圖 45 edit 字段名 屬性 約束 意義 1 edited int primary key 版塊編號(hào) 2 editName varchar(25) 無(wú) 版塊內(nèi)容 18 a r t i c l eP K i d p i d r o o t i d e d i t N o t i t l e c o n t p d a t e v i e w C o u n t r e p l y C o u n t w r i t e r i s E s s e n c e i s L e a fu s e rP K u s e r N a m e p a s s w o r d r e P a s s w o r d l o g i n T i m e g r a d e N og r a d eP K g r a d e I d g r a d e C o n te d i tP K e d i t I d e d i t N a m e 圖 45 數(shù)據(jù)庫(kù)模型圖 19 5 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 前臺(tái)設(shè)計(jì) 系統(tǒng)的前臺(tái), 即 是直接面向用戶的所有頁(yè)面。 前臺(tái)頁(yè)面設(shè)計(jì)與實(shí)現(xiàn) 本系統(tǒng)的所有頁(yè)面都采用了 統(tǒng)一的簡(jiǎn)化頁(yè)面框架,包括頁(yè)頭和內(nèi)容顯示區(qū)。 下面主要介紹前臺(tái)首頁(yè)面 的具體實(shí)現(xiàn)。部分主要代碼如下: % ListArticle articles = new ArrayListArticle()。 //創(chuàng)建與數(shù)據(jù)庫(kù)的連結(jié) Statement stmt = (conn)。 ResultSet rs = (stmt, sql )。 (rs)。 } //記錄總查看量 int totalViewNum=0。 /*查詢出帖子的總查看量 */ for (IteratorArticle it = ()。) { Article a = ()。 } /*查詢出帖子的總回復(fù)量 */ String sql1=select count(id) from article where pid=0。 ()。 /*查詢出最 后的發(fā)帖作者 */ String sql2=select * from article order by pdate desc。 while (()) { Article a = new Article()。 (a)。 Article a1=()。 (rs2)。 (rs)。 (conn)。這些都是對(duì)整個(gè)板塊的總體統(tǒng)計(jì),是對(duì)板塊信息的最直觀的展現(xiàn)。 DDA class=jiveacclogin href= /A /DD DDA class=jiveacclogin href= /A /DD A class=jiveacclogin href= /A 1用戶注冊(cè) 用戶注冊(cè)的網(wǎng)頁(yè)文件對(duì)應(yīng)的是“ ”文件,在此頁(yè)面下,非注冊(cè)用戶可以進(jìn)行注冊(cè)的操作。之后,會(huì)出現(xiàn)一個(gè)用戶信息確認(rèn)頁(yè)面,以最終完成用戶的注冊(cè)。 在用戶注冊(cè)的時(shí)候,如果用戶輸入的密碼和重復(fù)密碼不一致,會(huì)出現(xiàn)“密碼和重復(fù)密碼不一致”的錯(cuò)誤信息提示,然后頁(yè)面返回到注冊(cè)頁(yè)面。 以下是用戶信息確認(rèn)頁(yè)面 的展示圖 : 22 圖 52 用戶信息確認(rèn)頁(yè)面 1 用戶登錄 用戶完成注冊(cè)后,就可以進(jìn)行用戶登錄的操作,用戶登陸頁(yè)面如下: 圖 53 用戶登錄界面 23 在用戶登錄時(shí),如果用戶名或密碼 輸入有誤,則會(huì)出現(xiàn)“ invalid username or password”的錯(cuò)誤信息提示, 然后頁(yè)面返回到登陸頁(yè)面供用戶修正輸入繼續(xù)登錄。在論壇首頁(yè),通過(guò)鏈接版塊鏈接,進(jìn)入到特定版塊的特定頁(yè)面。分頁(yè)技術(shù)實(shí)現(xiàn)的關(guān)鍵點(diǎn)依賴于一條重要的sql 語(yǔ)句,具體如下: Select * from Table order by 參數(shù) 1 limit startPage+” ,” endPage。 24 執(zhí)行的