- 相關(guān)推薦
免費網(wǎng)上戰友錄的設計與實(shí)現(一)
摘要
戰友錄系統是一個(gè)與通訊系統,通過(guò)使用網(wǎng)上戰友錄,他們可以和多年的戰友通過(guò)留言平臺來(lái)交流,就好比現在很流行的QQ或MSN等通訊系統。通過(guò)使用網(wǎng)上戰友錄,戰友們可以很方便的進(jìn)行彼此交流。
本文介紹了網(wǎng)上戰友錄的設計與實(shí)現。整個(gè)系統分為三大模塊:用戶(hù)模塊,管理員模塊,和注冊模塊。主要實(shí)現用戶(hù)對資料的查看,修改,用戶(hù)上傳照片,戰友查詢(xún)及留言,創(chuàng )建部隊和加入部隊、戰友社區。管理員對用戶(hù)的資料查看,添加刪除用戶(hù),部隊管理,查看和回復申請,戰友留言管理及嘉賓留言管理功能。
在技術(shù)上,該系統選擇了三層的網(wǎng)絡(luò )體系結構?蛻(hù)端技術(shù)綜合采用HTML、VBScript等技術(shù)提供用戶(hù)界面;應用服務(wù)器端使用IIS,并采用ASP動(dòng)態(tài)網(wǎng)頁(yè)編程技術(shù)實(shí)現業(yè)務(wù)邏輯;數據庫服務(wù)器采用SQL Server 2000關(guān)系數據庫。應用服務(wù)器利用ADO技術(shù)與數據庫服務(wù)器進(jìn)行透明的數據傳輸。
關(guān)鍵字:戰友錄;數據庫;圖片上傳;留言; asp
目 錄
論文總頁(yè)數:24頁(yè)
1 引言 1
1.1 開(kāi)發(fā)背景及現狀 1
1.2 系統設計方法 1
1.3 ASP簡(jiǎn)述 1
1.4 VBScript簡(jiǎn)介 2
1.5 開(kāi)發(fā)工具dreamweaver簡(jiǎn)介 2
2 系統需求分析 2
2.1 系統初步調查 2
2.2 可行性分析 3
2.3 技術(shù)可行性 3
3 系統總體設計 3
3.1 系統流程分析 3
3.2 數據流圖 4
3.3 系統功能模塊設計 5
3.4 系統功能模塊圖 5
3.5 功能模塊具體分析 6
3.5.1 用戶(hù)模塊具體分析 6
3.5.2 管理員模塊分析 7
4 戰友錄系統的數據庫設計與邏輯實(shí)現 7
4.1 數據庫簡(jiǎn)介 7
4.2 系統E-R圖 8
4.3 數據庫的表結構設計 8
5 戰友錄系統的實(shí)現 10
5.1 數據庫的連接 10
5.1.1 設置數據庫的身份驗證模式 10
5.1.2 設置數據源 11
5.1.3 編寫(xiě)代碼 11
5.2 普通用戶(hù)模塊 11
5.2.1 用戶(hù)登陸模塊 11
5.2.2 創(chuàng )建部隊 13
5.2.3 用戶(hù)更新 13
5.2.4 戰友社區 14
5.2.5 加入部隊 15
5.2.6 戰友留言 15
5.2.7 上傳圖片 17
5.3 管理員模塊 18
5.3.1 查看用戶(hù)資料 18
5.3.2 刪除用戶(hù) 19
5.3.3 部隊管理 20
5.3.4 留言薄管理 20
6 難點(diǎn)及解決方法 21
6.1 圖片上傳功能的實(shí)現 21
6.2 代碼中要實(shí)現的方法 21
結 論 21
參考文獻 22
致 謝 23
聲 明 24
引言
開(kāi)發(fā)背景及現狀
當代社會(huì ),隨著(zhù)社會(huì )、科技、文化和經(jīng)濟的發(fā)展,特別是計算機網(wǎng)絡(luò )技術(shù)和通信技術(shù)的發(fā)展,人們隨時(shí)隨地,都可以知道遠在千里的信息。但是,現在許多退役后的戰友都失去了聯(lián)系,如果遠在千里之外的戰友想找到對方的聯(lián)系方式,則很困難。因此在這種狀況下,提供一種網(wǎng)絡(luò )管理系統讓?xiě)鹩褌兌加幸粋(gè)統一的交流平臺。
系統設計方法
系統采用的是B/S模式開(kāi)發(fā),界面簡(jiǎn)單實(shí)用,沒(méi)有冗余頁(yè)面。此系統既可以在網(wǎng)站上用,也可以在局域網(wǎng)上使用。
本系統用的是ASP+VBScript +SQL 和少量的語(yǔ)句就用 java script來(lái)開(kāi)發(fā),采用的服務(wù)器是IIS。系統有非常簡(jiǎn)潔的界面,給用戶(hù)帶來(lái)了方便。這樣用戶(hù)就可以更加方便的人性化的交流。
ASP簡(jiǎn)述
ASP是Active Server Page的縮寫(xiě),意為“活動(dòng)服務(wù)器網(wǎng)頁(yè)”。ASP是微軟公司開(kāi)發(fā)的代替CGI腳本程序的一種應用,它可以與數據庫和其它程序進(jìn)行交互,是一種簡(jiǎn)單、方便的編程工具。ASP的網(wǎng)頁(yè)文件的格式是.asp,現在常用于各種動(dòng)態(tài)網(wǎng)站中。 ASP是一種服務(wù)器端腳本編寫(xiě)環(huán)境,可以用來(lái)創(chuàng )建和運行動(dòng)態(tài)網(wǎng)頁(yè)或web應用程序。ASP網(wǎng)頁(yè)可以包含HTML標記、普通文本、腳本命令以及COM組件等。利用ASP可以向網(wǎng)頁(yè)中添加交互式內容(如在線(xiàn)表單),也可以創(chuàng )建使用HTML網(wǎng)頁(yè)作為用戶(hù)界面的web應用程序。 與HTML相比,ASP網(wǎng)頁(yè)具有以下特點(diǎn):
(1)利用ASP可以實(shí)現突破靜態(tài)網(wǎng)頁(yè)的一些功能限制,實(shí)現動(dòng)態(tài)網(wǎng)頁(yè)技;
(2)ASP文件是包含在HTML代碼所組成的文件中的,易于修改和測試;
(3)服務(wù)器上的ASP解釋程序會(huì )在服務(wù)器端制定ASP程序,并將結果以HTML格式傳送到客戶(hù)端瀏覽器上,因此使用各種瀏覽器都可以正常瀏覽ASP所產(chǎn)生的網(wǎng)頁(yè);
(4)ASP提供了一些內置對象,使用這些對象可以使服務(wù)器端腳本功能更強。例如可以從web瀏覽器中獲取用戶(hù)通過(guò)HTML表單提交的信息,并在腳本中對這些信息進(jìn)行處理,然后向web瀏覽器發(fā)送信息;
(5)ASP可以使用服務(wù)器端ActiveX組件來(lái)執行各種各樣的任務(wù),例如存取數據庫、發(fā)Email或訪(fǎng)問(wèn)文件系統等;
(6)由于服務(wù)器是將ASP程序執行的結果以HTML格式傳回客戶(hù)端瀏覽器,因此使用者不會(huì )看到ASP所編寫(xiě)的原始程序代碼,可防止ASP程序代碼被竊取。
ASP有幾大內置對象:
Response對象:向瀏覽器端傳送數據,Request對象:服務(wù)器讀取瀏覽器端數據,Server對象:提供了服務(wù)器端的最基本的屬性及方法Session和Application對象記錄瀏覽器端變量。
VBScript簡(jiǎn)介
VBScript是Visual Basic Script的簡(jiǎn)稱(chēng),即 Visual Basic 描述語(yǔ)言,有時(shí)也被縮寫(xiě)為VBS。VBScript是微軟開(kāi)發(fā)的一種腳本語(yǔ)言,可以看作是VB語(yǔ)言的簡(jiǎn)化版,與VBA的關(guān)系也非常密切。它具有原語(yǔ)言容易學(xué)習的特性。目前這種語(yǔ)言廣
開(kāi)發(fā)工具dreamweaver簡(jiǎn)介
對于一般的動(dòng)態(tài)網(wǎng)頁(yè)我們將用Macromedia公司的Dreamweaver網(wǎng)頁(yè)開(kāi)發(fā)軟件。Dreamweaver MX主要負責網(wǎng)頁(yè)的版式設計,網(wǎng)頁(yè)編輯制作。它是一套“所見(jiàn)所得”的網(wǎng)頁(yè)制作編輯軟件。它提供了文字的設置、圖像編輯、表格制作、布局定位、層與動(dòng)畫(huà)、表單對象、框架結構等用途。
這里我用到層、表單、表格和框架來(lái)讓我們的界面更加友好、華麗及讓我們的用戶(hù)一目了然我們要實(shí)現什么功能。比如系統中就用到框架這一功能,它就讓我們的操作更加方便,讓我們對系統要實(shí)現的功能一目了然。用Dreamweaver來(lái)對我們寫(xiě)的程序進(jìn)行調試也是一個(gè)很好的選擇。文字的設置 :在制作前臺網(wǎng)頁(yè)的時(shí)候就可以發(fā)揮它的特定的功能,讓設計人員可以更好的發(fā)揮自己的設計靈感,不必要寫(xiě)很多程序代碼。表單:表單的設計就可以讓設計人員更直觀(guān)的操作界面。表格:表格是整個(gè)網(wǎng)頁(yè)設計中的核心網(wǎng)頁(yè)中的位置概念是通過(guò)字節來(lái)定位,圖片文本等元素的位置為了可以以像素的方式控制,就只有通過(guò)表格和層來(lái)實(shí)現。
系統需求分析
系統初步調查
在整個(gè)系統的分析階段我們認真調查了現在用戶(hù)對戰友錄的各種要求,經(jīng)過(guò)認真的整理我們收集到了相應的業(yè)務(wù)流程。具體如下:
(1)戰友錄提供給用戶(hù)的基本服務(wù)
(2)每項功能應具有的流程
(3)用戶(hù)可以查看和修改自己的資料
(4)用戶(hù)可以創(chuàng )建和加入部隊
(5)用戶(hù)可以在社區里發(fā)表帖子
(6)用戶(hù)可以在系統進(jìn)行留言
(7)用戶(hù)可以上傳自己的圖片
(8)系統管理員所具有的功能
可行性分析
在明確系統目標和環(huán)境的基礎上,需要進(jìn)一步對系統的可行性進(jìn)行研究。此活動(dòng)的主要目標是進(jìn)一步明確系統的目標、規模與功能,對系統開(kāi)發(fā)背景、必要性和意義進(jìn)行調查分析并根據需要和可能提出擬開(kāi)發(fā)系統的初步方案與計劃?尚行匝芯渴轻槍ο到y進(jìn)行全面、概要的分析。
技術(shù)可行性
從用戶(hù)應用角度來(lái)看,可把應用程序系統的組成部分分成數據存儲層(DAO)、業(yè)務(wù)處理層(SERVICE)和界面表示層(WEB)3個(gè)層次,而應用程序結構可歸納為:集中式應用程序結構、單用戶(hù)應用程序結構、多層服務(wù)器應用程序結構、瀏覽器/服務(wù)器應用程序結構、客戶(hù)機/服務(wù)器應用程序結構等5種類(lèi)型。
戰友錄系統就采用的是瀏覽器/服務(wù)器應用程序結構(即B/S結構)。此時(shí),瀏覽器發(fā)出請求(request),服務(wù)器對瀏覽器的請求做出回應(response)。通過(guò)對服務(wù)功能的分布實(shí)現了分工服務(wù)。這樣使整個(gè)系統具有較好的性能并且使瀏覽器端能夠快速的運行和顯示,而服務(wù)器可以并行地處理瀏覽器端發(fā)送的請求降低了瀏覽器的負荷。
系統總體設計
數據流圖
數據流圖DFD(Data Flow Diagram)是用于分析系統數據流程的圖形,意在讓用戶(hù)理解系統的功能、輸入、輸出和數據存儲等。DFD是組織中信息運動(dòng)的抽象,是管理信息系統邏輯模型的主要形式。它是采用自頂向下逐層擴展的方法,從邏輯上精確地描述系統具有的數據加工、數據存儲、數據輸入、輸出及數據來(lái)源和去向等功能。這個(gè)模型不涉及硬件、軟件、數據結構與文件組織,它與對系統的物理描述無(wú)關(guān),所描述的內容是面向用戶(hù)的,是系統設計的主要依據之一。
圖3-1系統數據流程圖
圖3-1展示了整個(gè)系統的數據流圖,展示了登陸資料的數據流存取和留言資料數據流向。通過(guò)數據流圖可以清楚的了解到整個(gè)系統的數據結構。
系統功能模塊設計
從系統目標的內容可以看出,系統有以下幾個(gè)模塊。用戶(hù)級別分為普通用戶(hù)和管理員用戶(hù),用戶(hù)可以注冊帳號、留言、還可以進(jìn)行戰友查詢(xún)。普通用戶(hù)可以實(shí)現以下功能:查看個(gè)人資料、修改個(gè)人資料、上傳圖片、留言、創(chuàng )建部隊和加入部隊、戰友社區。管理員擁有下列功能:查看用戶(hù)資料、查看和回復申請、用戶(hù)刪除、添加用戶(hù)、部隊管理、和留言薄管理。
注冊模塊、個(gè)人資料查看、戰友查詢(xún)和修改個(gè)人資料模塊這三個(gè)功能模塊的算法都差不多。主要步驟有2步:
(1) 在表單頁(yè)面提示用戶(hù)輸入數據
(2) 在處理頁(yè)面獲取用戶(hù)的輸入數據,按照用戶(hù)的要求對數據庫進(jìn)行操作
系統功能模塊圖
圖3-2前臺模塊圖
功能模塊具體分析
用戶(hù)模塊具體分析
說(shuō)明:只有用戶(hù)成功注冊后方可登陸系統進(jìn)行用戶(hù)權限內的操作。在前臺功能模塊中,主要包括了:
查看個(gè)人資料模塊:用戶(hù)注冊后可以查看自己的資料。(個(gè)人資料管理)
修改個(gè)人資料模塊:用戶(hù)如果想修改自己密碼之類(lèi)的可以在這里進(jìn)行修改。(個(gè)人資料管理)
創(chuàng )建部隊:用戶(hù)可以創(chuàng )建一個(gè)部隊以便其他戰友加入。
加入部隊:用戶(hù)在向管理員提出申請后,經(jīng)管理員同意就可加入部隊。
戰友查詢(xún):用戶(hù)可以通過(guò)戰友名字和所在部隊兩個(gè)字段進(jìn)行查詢(xún)。
戰友留言:用戶(hù)可以在此發(fā)表自己的意見(jiàn),和其他戰友進(jìn)行交流。
上傳圖片:用戶(hù)可以把自己的照片上傳到數據庫中,并顯示出來(lái)。
戰友社區:戰友可以在社區里發(fā)表帖子,還可以對帖子進(jìn)行回復。
管理員模塊分析
說(shuō)明:只有具有管理員權限的管理員在登陸系統后才能對系統的各個(gè)模塊信息進(jìn)行管理。后臺功能模塊包括了:
查看用戶(hù)資料:管理員輸入部隊名稱(chēng)后可以查看該部隊所有成員的信息。
用戶(hù)添加:管理員可以添加任意用戶(hù)。(用戶(hù)管理)
用戶(hù)刪除:如果某個(gè)用戶(hù)已經(jīng)沒(méi)有權限登陸系統,管理員就可以把他從登陸表中刪除。(用戶(hù)管理)
查看申請:用戶(hù)提出加入部隊申請后,管理員經(jīng)過(guò)審核后,可以批準用戶(hù)加入該部隊。
部隊管理:管理員可以對那些很久沒(méi)有成員加入的部隊進(jìn)行刪除。
留言管理:管理員可以對那些不良留言或過(guò)時(shí)留言進(jìn)行刪除。
戰友錄系統的數據庫設計與邏輯實(shí)現
數據庫簡(jiǎn)介
Microsoft SQL server 2000是目前使用最為廣泛的數據庫,它與Windows網(wǎng)絡(luò )操作系統的無(wú)縫繼承,智能化的內容管理,強大的功能,使它得到大量用戶(hù)的喜愛(ài)。DBS功能有:
(1) DBMS提供數據定義語(yǔ)言(Data Definition Language,DDL),用戶(hù)通過(guò)它可以方便地對數據庫中的數據對象進(jìn)行定義。
(2) DBMS提供數據操縱語(yǔ)言(Data Manipulation Language, DML),用戶(hù)可以使用DML操縱數據實(shí)現對數據的基本操作如查詢(xún)、插入、刪除和修改。
數據庫在建立、運用和維護時(shí)由數據庫管理系統統一管理、統一控制,以保證數據的安全性、完整性、多用戶(hù)對數據的開(kāi)發(fā)使用已經(jīng)發(fā)生故障后的系統恢復。
數據庫的建立和維護功能 。它包括數據庫初始數據的輸入、轉換功能,數據庫的轉儲、恢復功能,數據庫的重組織、重構造功能和性能分析、監視功能等等.這些功能常常由一些使用程序完成的。
SQL語(yǔ)言是一種非過(guò)程化語(yǔ)言,它一次處理一個(gè)記錄集合,對數據提供自動(dòng)導航。SQL語(yǔ)言不要求用戶(hù)指定數據的存取方法,而是使用查詢(xún)優(yōu)化器,由系統決定對指定數據存取的最快速手段。當設計者在關(guān)系表上定義了索引時(shí),系統會(huì )自動(dòng)利用索引進(jìn)行快速檢索,用戶(hù)不需知道表上是否有索引或者有什么類(lèi)型的索引等細節。SQL語(yǔ)言功能如下:
(1) 查詢(xún)數據
(2) 在數據庫表格中插入、修改和刪除記錄
(3) 建立、修改和刪除數據對象
(4) 控制對數據和數據對象的存取
(5) 確保數據庫的一致性和完整性等
系統E-R圖
用戶(hù)實(shí)體可以發(fā)表多個(gè)帖子是1對N的關(guān)系,同樣一個(gè)用戶(hù)可以發(fā)表幾條留言,具體細節可參看系統E-R圖。
圖4-1系統E-R
數據庫的表結構設計
普通用戶(hù)登錄表“denglu”結構如表4-1所示:
表4-1登錄表“denglu”
字段名 字段類(lèi)型 字段是否為空 長(cháng)度
username varchar 否 10
userid varchar 否 16
zhenjianid varchar 否 10
管理員登錄表“guanliyuan”結構如表4-2:
表4-2管理員情況表
字段名 字段類(lèi)型 字段是否為空 長(cháng)度
mima varchar 否 16
name varchar 否 10
由于管理員的權限比較大,所以管理員的個(gè)數應該比較少。而且也只需要這兩個(gè)屬性。
作為用戶(hù)可以在系統上創(chuàng )建部隊 ,并且用戶(hù)可以通過(guò)該表向管理員申請加入該部隊表結構為表4-3:
表4-3部隊表
字段名 字段類(lèi)型 字段是否為空 長(cháng)度
name varchar 否 10
nid int 否 10
id int 否 10
luoji varchar 否 2
shenqing varchar 否 50
當用戶(hù)登錄系統后就可以查看自己的資料,修改資料。所以我們還要創(chuàng )建一個(gè)資料表來(lái)存放更為齊全的資料結構為表4-4所示:
表4-4資料表
字段名 字段類(lèi)型 字段是否為空 長(cháng)度
name varchar 否 10
mima varchar 否 16
sex varchar 否 2
zhenjianid varchar 否 10
mail varchar 否 20
dianhua varchar 否 10
由于我們要用到留言功能,所以我們還要創(chuàng )建一個(gè)戰友留言表和一個(gè)嘉賓留言表來(lái)分別存儲戰友留言和嘉賓留言以便我們在系統中顯示我們的留言。戰友留言表如表4-5所示:
表4-5戰友留言表
字段名 字段類(lèi)型 字段是否為空 長(cháng)度
name varchar 否 10
zhuti varchar 否 20
shijian datetime 否 8
neirong varchar 否 50
在這里我們是用表把用戶(hù)的名字,主題,時(shí)間,和留言的內容放在了表中,并且把時(shí)間和內容的類(lèi)型分別設為datatime 和text 類(lèi)型。
為了把上傳的圖片用數據庫中我們就創(chuàng )建一個(gè)表來(lái)存儲圖片,結構如表4-6所示。
表4-6圖片表結構
字段名 字段類(lèi)型 字段是否為空 長(cháng)度
id int 否 10
pic image 否 50
name varchar 否 20
為了記錄論壇中的帖子還需要建立個(gè)tiezi表結構如表4-7所示。
表4-7帖子表結構
字段名 字段類(lèi)型 字段是否為空 長(cháng)度
id int 否 4
zuozhe varchar 否 10
neirong varchar 否 50
zhuti varchar 是 20
shijian datetime 是 8
tiezihuifu表:記錄用戶(hù)對論壇帖子回復的文章如表4-8所示。
表4-8tiezihuifu表結構
字段名 字段類(lèi)型 字段是否為空 長(cháng)度
id int 否 4
rid int 否 4
zuozhe varchar 否 10
neirong varchar 否 50
zhuti varchar 是 20
shijian datetime 是 8
戰友錄系統的實(shí)現
數據庫的連接
設置數據庫的身份驗證模式
步驟為;打開(kāi)sql企業(yè)管理器→右鍵單擊控制臺→選擇屬性→單擊安全性→選擇sql身份驗證;另外還要新建一個(gè)登陸用戶(hù),這里直接用的系統帳號sa。
設置數據源
打開(kāi)控制面板→選擇管理工具→打開(kāi)選擇數據源→選擇系統dsn→點(diǎn)擊添加→選擇server sql→設置數據源名(這里是dd)和設置服務(wù)器為(local) →在下一步中→選擇使用用戶(hù)輸入登陸ID和密碼的 SQL身份驗證在下面輸入登陸ID和密碼→在下一步中選擇更改默認數據庫,選擇你要連接的數據庫(dd)→最后單擊完成。你可以單擊測試,如果顯示測試成功,表明你已經(jīng)建好了數據源,否則表示你在建的過(guò)程中設置錯了值。
編寫(xiě)代碼
這一步主要是在需要使用數據庫的頁(yè)面在程序頭部編寫(xiě)連接代碼,具體代碼如下:
<%set conn=server.createobject("adodb.connection")
conn.open "dsn=dd;uid=sa;pwd=sa"%>
普通用戶(hù)模塊
用戶(hù)登陸模塊
當我們點(diǎn)擊“用戶(hù)登錄”并輸入你的登錄信息如圖5-1所示
圖5-1用戶(hù)登陸界面
點(diǎn)擊提交后 后臺將進(jìn)入驗證登錄信息的“yanzhen.asp”程序進(jìn)行驗證主要代碼:
<% userid=request("mima")
username=request("name")
zhenjianid=request("zenjianid")
session("zenjianid")=request("zenjianid")
set con=server.createobject("adodb.connection")
con.open "dsn=dd;uid=aa;pwd=aa"rs="select * from denglu where username='"&username&"'and userid='"&userid&"'and zhenjianid='"&zhenjianid&"'"
set s=con.execute(rs)
if s.eof then
response.write" 對不起! 用戶(hù)名 或 密碼錯誤 或者 你沒(méi)有登錄權限! 若你還沒(méi)有注冊請先注冊!"
elseif username=""or userid=""or zhenjianid="" then
response.write"對不起! 你還沒(méi)有輸入你的資料"
else
response.redirect"all.htm"
end if %>
這里用到了 ASP的request對象和response對象,VBSCRIPT的條件語(yǔ)句。當輸入的資料在表“denglu”中存在就驗證成功導向all.html 網(wǎng)頁(yè)。進(jìn)入到此界面我們就可以看到作為一個(gè)普通用戶(hù)有哪些權限。首先我們在普通用戶(hù)中可以查看個(gè)人資料如圖5-2
圖5-2資料查看界面
在圖4-2中就可以看到顯示的信息與我們剛剛輸入的信息是一致的。
因為在上面驗證資料的時(shí)候我們用到session對象,比如“session("zenjianid")” 在這里我們就不用request對象來(lái)接收獲取。我們就可以直接用session繼承下來(lái)的值做變量來(lái)查詢(xún)。主要代碼如下:
<%s="select * from "&denglu&" where zhenjianid='"&session("zenjianid")&"'"
set rs=con.execute(s) %>
<td><%=rs("banji")%> </td>
創(chuàng )建部隊
當用戶(hù)登陸進(jìn)去后可以創(chuàng )建一個(gè)部隊,當你輸入所在部隊的名稱(chēng)就可以創(chuàng )建一個(gè)部隊并且可以讓其他用戶(hù)加入:
圖5-3創(chuàng )建部隊
點(diǎn)擊“創(chuàng )建”后就會(huì )顯示成功。在這里創(chuàng )建一個(gè)部隊是一個(gè)表的形式存在
因此必須在數據庫創(chuàng )建一個(gè)表創(chuàng )建表的SQL代碼是:
set objj=con.Execute("create table "&bname&"(id char(10),name char(10) ,email varchar(50),dianhua varchar(50),time varchar(50))")
set objs=con.execute("insert into banji values('"&bname&"','"&id&"','0','')")
用戶(hù)更新
點(diǎn)擊修改個(gè)人資料,可以修改自己的注冊信息注冊成功后如下圖:
圖5-4更新界面
你就會(huì )看到顯示的信息跟你剛才輸入的信息完全一致說(shuō)明修改成功。在這里我們是對數據庫中的兩張表進(jìn)行了更新。即“denglu”表和資料表。這樣我們就既完成了對自己登錄系統的資料做了修改 ,也對存儲的個(gè)人信息做了修改。主要部分代碼如下:
<% dname=request("dengluming")
sex=request("sex")
email=request("email")
----連接到數據庫后就對所涉及的表做更新操作--------
set obj=con.execute("update denglu set username='"&dname&"',userid='"&password&"',zhenjianid='"&zjid&"'where zhenjianid='"&session("zenjianid")&"'") set obj=con.execute("update ziliao set name='"&xingming&"',mima='"&password&"',sex='"&sex&"',zhenjianid='"&zjid&"',email='"&email&"',dianhua='"&dianhua&"'where zhenjianid='"&session("zenjianid")&"'")
顯示更新部分代碼和上面類(lèi)似。
戰友社區
論壇模塊重點(diǎn)主要是顯示頁(yè)面的實(shí)現如圖5-5:
圖5-5戰友社區圖
可以看到顯示的重點(diǎn)將帖子和回復的帖子顯示在一起,這里實(shí)現的方式,主要是將帖子和回復的帖子分別存在tiezi和tiezihuifu表中,其中tiezi表有一個(gè)字段id對應tiezihuifu表中的字段rid。這樣,就可以先顯示tiezi里的帖子,然后再顯示tiezihuifu里rid字段與顯示的帖子的id 字段相同的回復帖子就可以了。具體代碼如下:
<% id=Request("id") %>
<%
dim rs
dim sql
set rs = server.createobject("adodb.recordset")
sql = "select*from teizihuifu where rid="&id&" order by shijian desc"
rs.Open sql,conn,1
rs.pagesize=2
a=cint(request.querystring("a"))
if a=0 then
a=1
else
rs.absolutepage=a
end if%>
第一行就是獲取原帖的id號,然后定義SQL語(yǔ)句sql = "select*from tiezihuifu where rid="&id&" order by shijian desc"是就是查找滿(mǎn)足rid=id的記錄。
加入部隊
當你想加入某個(gè)部隊時(shí),先向管理員填好申請并且點(diǎn)擊申請如圖:
圖5-6加入部隊界面
戰友留言
在這里我們還采用了分頁(yè)顯示的方式顯示,和頁(yè)面在規定的時(shí)間內自動(dòng)刷新。這樣的好處就是讓用戶(hù)在第一時(shí)間看到在線(xiàn)的用戶(hù)的留言,以方便互相討論。而且還設置了作者名字和主題的長(cháng)度。還有就是讓程序自動(dòng)獲取系統的時(shí)間,用的是vbscript 的now()函數。點(diǎn)擊上傳后就會(huì )看到留言如圖5-7所示
圖5-7留言界面
顯示留言部分主要代碼為:
<meta http-equiv="refresh" content="10";url=xianshiliuyan.asp>
<% *------省略連接數據庫代碼
set rs=server.createobject("adodb.recordset")
rs.open"select * from liuyan ORDER BY shijian desc ",con,3
rs.pagesize=5 (設置每頁(yè)顯示行數)
a=cint(request.querystring("a"))
if a=0 then a=1
else rs.absolutepage=a %> <%end if %>
<tr><td><a href="xianshiliuyan.asp? a=1 ">第一頁(yè)</a> </div></td>
<%If a> 1 Then %>
<a href="xianshiliuyan.asp?a=<%=a-1%> ">上一頁(yè)</a> </div>
<% end if%>
<%If a <rs.PageCount Then %>
<A HREF="xianshiliuyan.asp?a=<%=a+1%>">下一頁(yè)</A>
<%End If %>
---顯示表頭部分與前面的一樣---------略
<% For a =1 To rs.Pagesize %> (循環(huán)顯示內容條件)
*----------顯示內容與前面的一樣 ---------略------------
這里的第一行代碼就是自動(dòng)刷新網(wǎng)頁(yè)功能的代碼。中間部分就是要實(shí)現分頁(yè)顯示功能的代碼。Pagesize是確定每頁(yè)要顯示的行數 cint()是把字符變?yōu)閿底,absolutepage為當前頁(yè)PageCount為分頁(yè)總數。For……next就是循環(huán)顯示數據。
上傳圖片
下面我們把圖片上傳到數據庫并顯示出來(lái),如圖5-8所示
圖5-8上傳圖片界面
主要代碼為:<%*-----------設置數據庫鏈接后
<% Set obj = Server.CreateObject("LyfUpload.UploadFile")(創(chuàng )建圖片上傳外掛對象)
obj.extname="gif"
rs.AddNew
rs("pic").AppendChunk obj.DBContent (用AppendChunk方法對pic字段賦值)
rs.Update
rs.movelast
session("ID")=rs("ID")
*---關(guān)閉連接--------略--
<a href="pictest.asp?ID=<%=session("ID")%>">點(diǎn)擊此處查看上傳后數據庫中的GIF文件!</a>
<pictest.asp>
<%*------------'設置數據庫鏈接省略
contentType = contentType
nFieldSize = field.ActualSize
bytes = field.GetChunk(nFieldSize) (獲取圖片數據)
Session("Bytes") = bytes
Session("Type") = contentType
set rs=server.CreateObject("adodb.recordset")
rs.Open "SELECT * FROM product",con,2,2
SetForDisplay rs("pic"), "image/gif" '"image/gif" 為MIME類(lèi)型 %>
<img src="theImg.asp">
<%response.write(Session("Type"))%>
<-theimg.asp->
<%response.Expires = 0
response.Buffer = True
response.Clear
response.contentType = Session("Type")
response.BinaryWrite Session("Bytes") (獲取圖片并顯示出來(lái))
Session("Type") = ""
Session("Bytes") = ""
response.End %>
管理員模塊
同普通用戶(hù)一樣在這里我門(mén)首先將進(jìn)行身份驗證。這樣它就到guanliyuan表中去查詢(xún)若有與輸入的資料匹配就成功進(jìn)入界面這里我們將用到了request對象和session對象和response對象及其方法response.write()及respense.redirect()方法vbscript的條件語(yǔ)句和sql的select語(yǔ)句。
圖5-9管理員界面
查看用戶(hù)資料
作為管理員有權限對用戶(hù)資料進(jìn)行查看,以便管理。當輸入某個(gè)部隊的名字提交后就可以看到這個(gè)部隊所有戰友資料。如:輸入海軍就可以看到如圖5-10所示的結果:
圖5-10查看用戶(hù)資料
刪除用戶(hù)
當然作為管理員也得有刪除用戶(hù)的權限。如某些用戶(hù)的 登錄權限過(guò)期,管理員就的得刪除他們的一切資料。如圖5-11所示
圖5-11刪除用戶(hù)界面
當我們以證件號和所在部隊為關(guān)鍵字來(lái)刪除資料。這里也要涉及到denglu 表和海軍表。按“刪除”后我們就可以從表中看到 我們剛剛輸入的資料所在的行就被刪除了。這樣就達到了控制使用系統的權限的功能。
主要程序為:
<% zjid=request("zhenjianid")
banji=request("banji")
*---- 省略連接到數據庫*--------
*----刪除部分代碼為:
set objs=con.execute("delete from denglu where zhenjianid='"&zjid&"'")
set obj=con.execute("delete from "&banji&" where zhenjianid='"&zjid&"'")
%> 這里我們也做了判斷若denglu表中沒(méi)有這資料是要報錯的。
部隊管理
若某個(gè)部隊已經(jīng)不存在管理員就得刪除其部隊表,界面如圖5-12所示
圖5-12班級管理界面
執行表操作代碼為:
set objs=con.execute("delete from banji where name='"&bname&"'")
set objj=con.Execute("drop table "&bname&"")
刪除表時(shí)就用到了drop table語(yǔ)句來(lái)刪除表中所有的內容。
留言薄管理
留言薄作為本系統的主體功能就一定要特別的管理。當然也只有管理員來(lái)管理。對于留言薄是傳輸信息的主要部分,戰友主要討論的信息也是顯示在留言薄上所以為了防止不良信息在上面散播,作為管理員就要對那些不良信息進(jìn)行刪除操作。如圖4-13所示:
圖5-13留言管理界面
這樣當我們點(diǎn)擊留言薄管理時(shí),界面上就顯示了所有的留言。當管理員覺(jué)得某些留言不良就可以直接點(diǎn)擊右邊的刪除就可以刪除掉與所選內容相同的所有記錄都會(huì )被刪除。而且界面也用到了自動(dòng)刷新的功能讓管理員在第一時(shí)間了解到留言記錄方便管理。
主要代碼為:
<meta http-equiv="refresh"content="10";url=jialiuyanguanli.asp>此句為設置自動(dòng)刷新。
其中<td><a href="deletenei1.asp?neirong=<%=rs("neirong")%>">刪除</a></td>就是當我們點(diǎn)擊刪除時(shí)可以直接的刪除的關(guān)鍵句子。當我們點(diǎn)擊時(shí)就導向deletenei1.asp程序。
<% neirong=request("neirong")
set con=server.createobject("adodb.connection")
con.open "dsn=dd;uid=aa;pwd=aa"
con.execute"delete from jiabinliuyan where neirong='"&neirong&"'"
response.redirect("jialiuyanguanli.asp")%>
這里就是在對后臺數據庫的操作,刪除與點(diǎn)擊的內容相同的所有記錄成功后直接導向前面的網(wǎng)頁(yè)重新顯示留言。嘉賓留言的管理與普通用戶(hù)相同。
難點(diǎn)及解決方法
圖片上傳功能的實(shí)現
實(shí)現圖片上傳有以下關(guān)鍵步驟:1注冊一個(gè)上傳圖片組件,把 LyfUpload.dll這個(gè)組件復制到程序盤(pán)后,在cmd下運行regsvr32 "C:\LyfUpload.dll"運行成功后就可以在程序中使用這個(gè)組件。2用AppendChunk方法對圖片字段賦值把圖片上傳到數據庫中。3獲取圖片并在瀏覽器端顯示出來(lái)。
代碼中要實(shí)現的方法
圖片文件要保存到數據庫中的時(shí)候, 不可以直接使用Insert語(yǔ)句對數據庫進(jìn)行操作,而是要使用ADO的 AppendChunk方法,同樣的,讀出數據庫中的圖片數據要使用GetChunk方法。最后用BinaryWrite獲取圖片并在瀏覽器端顯示出來(lái)。
結 論
本文簡(jiǎn)要介紹了典型的B/S體系結構戰友錄系統功能模塊,重點(diǎn)討論了系統的數據庫建設,系統流程圖和功能模塊的代碼分析。目前此系統基本可以實(shí)現其功能,在對整個(gè)工程進(jìn)行全面的測試,以不同用戶(hù)登陸,選擇不同的權限的操作,得到正確報錯提示。權限控制成功。經(jīng)測試系統已完成既定的功能但系統仍然有一些不完善的地方例如:比如系統界面不夠友好,還有就是論壇的版塊太少沒(méi)有給戰友提供更加豐富的內容。這些功能都有待在日后的工作中進(jìn)一步的完善。
參考文獻
[1]鄧文淵,陳蕙貞.Asp與網(wǎng)絡(luò )數據庫技術(shù)[M].北京:中國鐵道出版社,2005。
[2]方睿,刁仁宏,吳四九.網(wǎng)絡(luò )數據庫原理及應用[M].四川:四川大學(xué)出版社,2005。
[3]李浩,馮永毅.DreamweaverMX應用培訓教程[M].北京:冶金工業(yè)出版社,2003。
[4]金林樵.網(wǎng)絡(luò )數據庫技術(shù)及應用[M].北京:機械工業(yè)出版社,2002。
[5]程亮,何力勤.Asp網(wǎng)絡(luò )編程實(shí)例[M].北京:人民郵電出版社,2001。
[6]楊得新.SQL SEVER數據庫系統[M].北京:機械工業(yè)出版社,2004。
[7]溫明等.ASP網(wǎng)站建設實(shí)錄[M]. 北京:紅旗出版社,2005。
【免費網(wǎng)上戰友錄的設計與實(shí)現(一)】相關(guān)文章:
探析網(wǎng)上交談工具的設計與實(shí)現03-18
基于A(yíng)SP的網(wǎng)上銀行的設計與實(shí)現ASP+SQL03-08
免費vc++網(wǎng)上尋呼QICQ源代碼(附帶論文)(一)11-22
用ASP實(shí)現科技成果的網(wǎng)上查詢(xún)及管理03-20