1 簡介
早期的動態(tài)網(wǎng)頁主要采用CGI技術(shù),由于編程難度大、效率低、修改復(fù)雜,一直是專業(yè)程序員的專利。
ASP的出現(xiàn)改變了這種狀況。 Active Server Pages,即ASP,是由微軟開發(fā)的HTML(超文本標記語言)、Script(腳本)和CGI(通用網(wǎng)關(guān)接口)的組合。自從ASP問世以來,每天都有成千上萬的ASP網(wǎng)站在互聯(lián)網(wǎng)上誕生。它簡單易學,但功能強大。被越來越多的人所喜愛。
本次畢業(yè)設(shè)計我選擇的題目是:利用ASP設(shè)計學校網(wǎng)站設(shè)計-南方縣府湖中學網(wǎng)站,目的是通過網(wǎng)站的策劃設(shè)計,為人們提供一個了解我校的平臺,并帶來教育與社會之間的距離越來越近。讓人們足不出戶,輕松快捷地獲取各類學校信息,盡顯學校和師資風采。同時,學??梢酝ㄟ^該平臺及時了解社會對我校的建議和意見,以便我校在今后的工作中及時進行整改。
網(wǎng)站的規(guī)劃設(shè)計,從系統(tǒng)的研究、系統(tǒng)的分析、系統(tǒng)的設(shè)計到系統(tǒng)的實現(xiàn),以軟件工程的思想為指導(dǎo),開發(fā)了這個完整的系統(tǒng),完善了專業(yè)知識與實踐相結(jié)合的能力。
2.系統(tǒng)設(shè)計
2.1 開發(fā)設(shè)計思路
本系統(tǒng)的開發(fā)設(shè)計思路:
盡量利用學?,F(xiàn)有的軟硬件環(huán)境,以及先進的網(wǎng)站制作系統(tǒng)開發(fā)方案,以達到充分利用學校現(xiàn)有資源,提高系統(tǒng)開發(fā)水平和應(yīng)用效果的目的。
系統(tǒng)采用模塊化編程方式,既便于系統(tǒng)功能的各種組合,也便于未參與開發(fā)的技術(shù)維護人員進行補充和維護。
系統(tǒng)應(yīng)具有數(shù)據(jù)庫維護功能,根據(jù)學校信息需要,及時進行數(shù)據(jù)的增刪改查等操作。
2.2 開發(fā)運行環(huán)境選擇
開發(fā)工具:FLASH5.0、Adobe Photoshop 6.0、Dreamweaver UltraDev 4。
服務(wù)器端運行環(huán)境:Windows2000+IIS。
客戶端運行環(huán)境:Windows9x、Windows2000。
2.3 系統(tǒng)功能分析
系統(tǒng)功能分析是在系統(tǒng)開發(fā)總體任務(wù)的基礎(chǔ)上進行的。本站需要完成的功能主要包括:
新聞文章發(fā)布:學校新聞介紹、教育科研、名校名師、學生園地、招生信息等。
留言系統(tǒng):為來訪者提供在線留言,使學校及時得到社會的反饋,與社會溝通交流。
在線調(diào)查系統(tǒng):本站提供教育和學校熱點問題在線調(diào)查欄目。參觀者可以通過在線問卷調(diào)查的方式對熱點問題進行自主投票。
流量統(tǒng)計系統(tǒng):本站可以從多方面統(tǒng)計流量。包括開站天數(shù)、總訪問次數(shù)、當日總訪問次數(shù)、前一天總訪問次數(shù)、本月總訪問次數(shù)、上次總訪問次數(shù)月和平均訪問總數(shù)。
2.4 系統(tǒng)功能模塊設(shè)計
在系統(tǒng)功能分析的基礎(chǔ)上,得到如圖所示的系統(tǒng)功能模塊圖。
南部縣府湖中學網(wǎng)站前臺
新聞文章專欄互動專欄在線調(diào)查流量統(tǒng)計
前臺新聞專欄
瀏覽校訊、瀏覽教育科研、瀏覽名師、瀏覽學生園地、瀏覽招生信息
此外,為了進一步實現(xiàn)家校聯(lián)動,還專門設(shè)計了家長頻道和學生頻道。
在家長頻道中,設(shè)計了教學公告、在校記錄、家長留言、家長預(yù)約、家庭教育等子欄目。
在學生頻道中,設(shè)計了高新招聘信息、高考選題、高考題庫、開學報告、學生提問、學生意見等子欄目。
家長頻道的家長留言、學生頻道的學生提問、學生意見三個子欄目是體現(xiàn)家長、學生、學校三方互動、及時溝通的欄目。更方便學生和家長發(fā)表對教育資源的意見。
為方便家長、學生、老師等來訪者獲取學校的教育資源,還設(shè)計了資源下載專欄。資源下載欄目包括:軟件下載、試卷下載、教案下載、表格下載4個小板塊。
新聞文章后臺管理
新聞后臺管理教育后臺管理名師后臺管理學生后臺管理招生后臺管理
系統(tǒng)功能結(jié)構(gòu)圖
下面我將對各個模塊的總體設(shè)計進行簡要說明。
1.新聞文章模塊
新聞文章是該站點的重點。作為一種媒介,網(wǎng)站應(yīng)該能夠提供足夠多的用戶感興趣的信息。南方縣府湖中學網(wǎng)站作為學校的窗口,為滿足社會了解學校信息的愿望,本站新聞報道主要設(shè)置五個欄目。分別是:學校新聞、教育科研、名校名師、學生園地、招生信息等。新聞文章模塊整體設(shè)計分為前臺瀏覽和后臺管理兩個子模塊。訪客可以通過點擊前臺瀏覽本網(wǎng)站的新聞文章等各種信息。這些信息包括:學校新聞快訊、教育科研信息、各類名校名師信息、學園信息、學校招生相關(guān)信息等。該后臺管理子模塊完成添加信息、編輯等操作校報文章發(fā)布子模塊中的五個欄目,刪除只有后臺管理員可以操作的信息。以上欄目的設(shè)置是為了滿足任何網(wǎng)站訪問者的需要。為了滿足家長和學生這兩類特定的訪問者,特開設(shè)了家長頻道和學生頻道。家長頻道的欄目信息是根據(jù)家長的需求而定。欄目包括教學公告、學校記錄、家長留言、家長預(yù)約、家庭教育。其中,教學公告包括作業(yè)公告、考試公告等子欄目。家長留言是一個互動欄目,這個欄目專門針對家長
,對學校政策,教學進度的詢問,意見等。學生頻道欄目實現(xiàn)信息主要都是與學生緊密相關(guān)的欄目,比如高招信息,高考題庫等。2.留言模塊
來訪者中有不少人對學校的發(fā)展和現(xiàn)狀有很多建議和觀點需要對學校提出,作為學校的窗口,所以本站需要提供讓來訪者發(fā)言的平臺,正是由于這個原因,所以本網(wǎng)站設(shè)計和規(guī)劃有留言模塊,本模塊又分為瀏覽著前臺發(fā)言和瀏覽子模塊以及后臺管理員刪除修改發(fā)言子模塊。
3.在線調(diào)查模塊
本網(wǎng)站對一些社會熱點提供在線調(diào)查的欄目,來訪者可以對網(wǎng)站上的社會熱點問題投上代表自己觀點的一票。這樣就可以綜合民意得到教育等熱點從而決定以后的發(fā)展方向。
4.流量統(tǒng)計模塊
作為管理員應(yīng)該實時知道本網(wǎng)站的流量。流量統(tǒng)計的數(shù)據(jù)包括:網(wǎng)站開站的天數(shù),瀏覽的總數(shù),當日的瀏覽數(shù),昨日的瀏覽數(shù),本月的瀏覽數(shù),上月的瀏覽數(shù),平均來訪數(shù)等。一個網(wǎng)站如果沒有流量,那么就說明了這個網(wǎng)站開設(shè)的欄目沒有吸引力。作為管理員就學校可以通過流量及時知道網(wǎng)站開設(shè)新欄目后流量是否有變化等。
5.資源下載模塊
一個學校網(wǎng)站,如果可以提供瀏覽著獲得學校信息資源,可以提供家,校,師,生互動交流這些欄目還不夠,學校的各種考試試卷等教育資源,也是來訪者非常想獲得的,所以,設(shè)計了教育資源下載模塊。下載的資源包括教案,試卷,其它軟件等。
3、后臺數(shù)據(jù)庫的設(shè)計
通過以上功能模塊的分析和設(shè)計可以知道,本網(wǎng)站設(shè)計需要涉及到后臺數(shù)據(jù)庫的設(shè)計。
在數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)過程中,數(shù)據(jù)庫的結(jié)構(gòu)設(shè)計是一個非常重要的問題。數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的好壞將直接對應(yīng)用系統(tǒng)的效率以及實現(xiàn)的效果產(chǎn)生影響,好的數(shù)據(jù)庫結(jié)構(gòu)會減小數(shù)據(jù)庫的存儲量,數(shù)據(jù)的完整性和一致性比較高,系統(tǒng)具有較快的響應(yīng)速度,簡化基于此數(shù)據(jù)庫的應(yīng)用程序的實現(xiàn)等。
在數(shù)據(jù)庫系統(tǒng)開始設(shè)計的時候應(yīng)該盡量考慮全面,尤其應(yīng)該仔細考慮用戶的各種需求,避免浪費不必要的人力和物力。
3.1 數(shù)據(jù)庫需求分析
數(shù)據(jù)庫需求分析是數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的第一個階段,是非常重要的一個階段。在這個階段主要是收集基本數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)以及確定數(shù)據(jù)處理的流程,組成一個詳盡的數(shù)據(jù)字典,為以后進一步設(shè)計打下基礎(chǔ)。
在仔細調(diào)查本站運作過程的基礎(chǔ)上,我們得到本網(wǎng)站所處理的數(shù)據(jù)流程如圖所示。
管理員
登錄
輸入登錄信息 來訪者登錄網(wǎng)站
網(wǎng)站后臺管理 DB 數(shù)據(jù)庫 各種信息的瀏覽
管理方向 各種信息后臺管理
密碼管理
通過以上數(shù)據(jù)流程可以看出:管理員通過登錄網(wǎng)站,輸入正確的用戶名和密碼可以進行網(wǎng)站管理。進入管理狀態(tài)后可以選擇管理的項目,可以是對包括對管理員密碼在內(nèi)的系統(tǒng)設(shè)置信息的修改,也可以是對本網(wǎng)站的各種數(shù)據(jù)庫中其它的信息進行后臺管理,包括對學校概況,學校新聞,教育科研,名校名師,學生園地,招生信息,招聘信息等管理。管理的內(nèi)容分為:對信息的添加,修改,刪除,審核等操作。
來訪者可以在瀏覽器中輸入學校網(wǎng)址登錄網(wǎng)站,通過點擊網(wǎng)站的鏈接瀏覽各種相關(guān)信息。這些信息是通過調(diào)用后臺數(shù)據(jù)庫中相關(guān)信息在前臺顯示的。
針對本網(wǎng)站的數(shù)據(jù)結(jié)構(gòu),可以通過對以上對本站數(shù)據(jù)流程的內(nèi)容和數(shù)據(jù)關(guān)系分析,得出以下的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)如下:
● 新聞信息:新聞類別號,標題,所屬專欄,文章來源,文章作者,內(nèi)容,發(fā)布時間,點擊次數(shù),關(guān)鍵字, 狀態(tài)等。
● 新聞類別:類別號、類別名。
● 新聞所屬欄目:欄目號,類別號,欄目名。
● 管理員信息:用戶名,密碼等。
● 留言信息:用戶名,電子郵箱地址,來自地區(qū),主頁地址,OICQ號,ICQ號,頭像,留言內(nèi)容等。
● 留言后臺管理員信息:用戶名,密碼等。
● 在線調(diào)查信息:調(diào)查的主題編號,主題名稱,主要觀點1,主要觀點2,主要觀點3,主要觀點4,觀點1的票數(shù),觀點2的票數(shù),觀點3的票數(shù),觀點4的票數(shù)。
● 流量統(tǒng)計信息:總流量,今日流量,昨日流量,本月流量,上月流量,開站日期,最后訪問IP。
● 資源信息:每條資源信息包括文字介紹信息和資源存放信息2個方面,文字介紹信息和新聞信息一樣,作為新聞信息的一種,所以這里重點研究資源存放信息,資源上傳后存放信息包括:資源編號,信息編號,存放路徑3個屬性項。信息編號對應(yīng)該資源文字信息在新聞信息中的編號。存放路徑存放資源上傳后的存放的路徑和文件名。
有了上面的數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)項和數(shù)據(jù)流程,就能進行下面的數(shù)據(jù)庫設(shè)計。
3.2 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計
這一設(shè)計階段是在需求分析的基礎(chǔ)上,設(shè)計出能夠滿足網(wǎng)站設(shè)計需求的各種實體,以及確定它們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計打下基礎(chǔ)。本網(wǎng)站根據(jù)上面的設(shè)計規(guī)劃出的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)得出的實體有新聞實體,新聞類別實體,新聞欄目實體,管理員實體,留言信息實體,在線調(diào)查信息實體,流量統(tǒng)計實體等。
下面詳細介紹本系統(tǒng)主要的實體以及主要實體之間的關(guān)系。
1:信息實體E-R圖:
信息信息實體
信息編號 主題
類別號 ……. 欄目號
2:信息類別實體E-R圖:
信息類別實體
類別編號 類別名稱
3:信息欄目實體E-R圖:
信息欄目實體
欄目編號 類別編號 欄目名稱
4:管理員實體E-R圖:
管理員實體
用戶編號 用戶名 用戶密碼
5:資源實體屬性圖
資源實體
資源編號 信息編號 資源路徑
6:主要的實體和實體之間的關(guān)系E-R圖如圖所示。
信息實體 1 屬于 1 類別實體
屬于 管理 管理
欄目實體 管理 管理員實體
3.3 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計
我們需要將上面的數(shù)據(jù)庫概念結(jié)構(gòu)轉(zhuǎn)化為ACCESS2000數(shù)據(jù)庫系統(tǒng)所支持的實際數(shù)據(jù)模型,也就是數(shù)據(jù)庫的邏輯結(jié)構(gòu)。
在上面的實體以及實體之間關(guān)系的基礎(chǔ)上,我們就可以形成數(shù)據(jù)庫中的表格以及各個表格之間的關(guān)系。
根據(jù)分析階段得出的的結(jié)論,結(jié)合本網(wǎng)站對有關(guān)數(shù)據(jù)的存儲的需要,更加方便實現(xiàn)該網(wǎng)站預(yù)期的所有功能,現(xiàn)將本系統(tǒng)設(shè)計成5個數(shù)據(jù)庫表,每個表的字段名、類型、寬度設(shè)計如下:
數(shù)據(jù)庫中各個表格的設(shè)計結(jié)果如表3-1到表3-2所示。每個表格對應(yīng)在數(shù)據(jù)庫中的一個表。
表3-1為新聞信息表。
該表用來記錄存儲本網(wǎng)站新聞信息相關(guān)的各種信息:
字段名 類型 寬度 說明
newsid 自動編號 長整型 新聞編號
typeid 數(shù)字 小數(shù) 類別編號
borderid 數(shù)字 小數(shù) 欄目編號
topic 文本 80 主題
content 備注 備注 新聞內(nèi)容
ntime 日期 8 發(fā)布時間
hits 數(shù)字 小數(shù) 閱讀次數(shù)
keys 備注 備注 關(guān)鍵字
img 文本 50 相關(guān)圖片
nfrom 文本 100 來源
modify 文本 30 編輯人
audit 數(shù)字 長整型 是否審核
auditer 文本 50 審核人
writer 文本 50 作者
imgsize 數(shù)字 小數(shù) 圖片大小
3-2:新聞類別表:
該表用來存放本網(wǎng)站新聞信息的類別名稱。
字段名 類型 寬度 說明
typeid 自動編號 長整型 類別編號
typename 文本 50 類別名稱
3-3:新聞欄目表:
該表用來存放本網(wǎng)站新聞信息的類別名稱。
字段名 類型 寬度 說明
borderid 自動編號 長整型 類別編號
typeid 自動編號 長整型 類別編號
bodername 文本 50 類別名稱
3-4:管理員信息表:
該表用來存放本網(wǎng)站管理員信息。
字段名 類型 寬度 說明
userid 自動編號 長整型 用戶編號
name 文本 15 用戶名
pwd 文本 14 密碼
3-5:資源信息表:
該表用來存放本網(wǎng)站管理員信息。
字段名 類型 寬度 說明
id 自動編號 長整型 資源編號
Newsid 文本 15 對應(yīng)的信息編號
Lujin 文本 14 資源存放路徑
以上是本系統(tǒng)的庫表結(jié)構(gòu)的設(shè)計簡要說明。
4、網(wǎng)站的實現(xiàn)
完成了以上的后臺數(shù)據(jù)庫的設(shè)計后,下面就可以對前面系統(tǒng)分析階段邏輯設(shè)計出的功能模塊將技術(shù)設(shè)計轉(zhuǎn)化成為物理實現(xiàn),是系統(tǒng)建設(shè)的實現(xiàn)階段。因此,網(wǎng)站的實現(xiàn)的成果將是系統(tǒng)分析和設(shè)計階段的結(jié)晶。
4.1:安裝網(wǎng)站設(shè)計相關(guān)軟件:
本站設(shè)計需要用到FLASH8.0,Adobe Photoshop 8.0,Dreamweaver等網(wǎng)頁設(shè)計相關(guān)的軟件。
其中FLASH8.0主要完成網(wǎng)頁中相關(guān)動畫的設(shè)計和處理。
Adobe Photoshop 8.0主要完成網(wǎng)頁中相關(guān)的圖片的大小,格式轉(zhuǎn)化,效果處理等。
Dreamweaver主要完成網(wǎng)頁的排版、布局設(shè)計。
4.2 建立Asp的運行環(huán)境
簽于目前流行的windows操作平臺有windows xp等。下面針對這XP操作平臺上建立Asp運行環(huán)境的一些簡要介紹。
在windows 2000/XP上建立Asp的運行環(huán)境
在windows 2000/XP上運行Asp的環(huán)境也是IIS。如果安裝的是windows 2000 Server,IIS5.1將作為一個默認選項被安裝。如果使用的是windows 2000/XP中文專業(yè)版,則需要使用控制面板“ 添加/刪除程序”來安裝IIS及其組件。
4.3、主頁的設(shè)計
來訪者輸入網(wǎng)址,首先打開的就是學校網(wǎng)站的主頁,主頁設(shè)計應(yīng)該美觀,同時提供足夠多的鏈接,以便來訪者可以通過鏈接導(dǎo)航到自己所關(guān)心的信息頁面上去。下面是該首頁運行的界面圖:
該頁面的布局結(jié)構(gòu)是 ∏型布局結(jié)構(gòu)。具體的說:在網(wǎng)頁的上面是log圖片和導(dǎo)航條。Log圖片表明網(wǎng)站的主題:南部縣伏虎中學網(wǎng)站。導(dǎo)航條將本站的欄目分成了學校概況,學校新聞,教育科研,名校名師,學生園地,招生信息,誠聘英才,校長信箱,網(wǎng)上留言等欄目。這些導(dǎo)航欄目分別設(shè)計有相應(yīng)的文字鏈接,點擊這些文字鏈接可以進入相應(yīng)的頁面。
打開專業(yè)的網(wǎng)頁設(shè)計工具Dreamweaver UltraDev 4。
1:新建一個網(wǎng)頁文件,保存為index.asp,接著設(shè)置頁面屬性,在屬性頁中標題:南部縣伏虎中學。背景圖案:img/bg_line.gif。
定義頁面中表格,單元格,文字和鏈接的表現(xiàn)風格。本頁面定義的語句如下:
<style>
body {margin:0px;font-size:12px;overflow-x:hidden;overflow-y:scroll;color:#666666;LINE-HEIGHT: 160%}
table {font-size:12px;LINE-HEIGHT: 160%}
td {font-size:12px;}
.txt {font-size:12px;border-width:0px;border-bottom:1px solid #000000;background-color:#def1f7;position:relative;top:0px;left:5px;padding-bottom:0px;color:#a0a0a0;}
a:link.list {font-size:12px;color:#666666;text-decoration:none;}
a:visited.list {color:#666666;text-decoration:none;}
a:hover.list {color:#333333;text-decoration:underline;}
a:link.more {font-size:12px;color:#666666;text-decoration:none;}
a:visited.more {color:#666666;text-decoration:none;}
a:hover.more {color:#333333;text-decoration:underline;}
img {border:0px;}
</style>
利用布局表格工具,設(shè)置好網(wǎng)頁的表格布局。然后就可以在表格中添加單元格。利用表格的屬性面板和單元格屬性面板設(shè)定好各自的屬性以后,就可以在單元格中添加文字和插入圖片。
布局設(shè)計好的網(wǎng)頁如下:
代碼設(shè)計:為了實現(xiàn)首頁顯示學??煊?,教育科研,名校名師,學生園地等文字信息以及為了方便管理。不是在每個欄目設(shè)計靜態(tài)的文本信息,而是內(nèi)嵌java腳本,腳本的數(shù)據(jù)源來自一個和數(shù)據(jù)庫相連接的asp文件: new.asp。下面給出學校快訊,教育科研,名校名師,學生園地對應(yīng)的四個java腳本語句:
1:<script language="javascript" src="news.asp?typeid=10&n=10?m=14"></script>
2:<script language="javascript" src="news.asp?typeid=11&n=10?m=14"></script>
3:<script language="javascript" src="news.asp?typeid=12&n=10?m=14"></script>
4:<script language="javascript" src="news.asp?typeid=13&n=10?m=14"></script>
通過比較這四條腳本語句可以發(fā)現(xiàn),腳本調(diào)用的是同一asp文件,只是一個typeid不一樣。在數(shù)據(jù)庫的設(shè)計中我們以及知道,這個參數(shù)是新聞的類別編號。由于這四類不同的信息都是存儲在數(shù)據(jù)庫中的news表中,要實現(xiàn)信息的分類就可以通過設(shè)定這個類別編號。這里的typeid=10對應(yīng)學校新聞,typeid=11對應(yīng)教育科研,typeid=12對應(yīng)名校名師,typeid=13對應(yīng)學生園地。
下面簡單的介紹一下news.asp文件的代碼:
在news.asp文件中首先獲得上面?zhèn)鬟f的參數(shù)。通過下面的語句實現(xiàn):
typeid=request("typeid")
n=trim(request("n"))
這里的n是查詢表中符合條件的多少條記錄的參數(shù)。
接著通過下面的語句從數(shù)據(jù)庫news表中查詢符合條件的最后的n條記錄:
sql="select top " & n & " * from news where typeid=" & cstr(typeid) & " and audit=1 order by newsid DESC"
這里的audit表示已經(jīng)是審核通過的信息。最后的信息顯示是按newsid號倒序排列。
另外在該文件的開頭有包含文件:
<!--#include file="function/DBOpen.asp"-->
該文件用于鏈接數(shù)據(jù)庫。
在文件的末尾有包含文件:
<!--#include file="function/DBclose.asp"-->
該包含文件用于關(guān)閉數(shù)據(jù)庫。
4.4 顯示新聞和下載文件的shownews.asp設(shè)計
在首頁中大量的新聞信息是通過鏈接到shownews.asp文件來顯示新聞信息的。比如在首頁中點擊學校快訊中的任一新聞,就可以鏈接到該頁面并顯示該新聞的詳情。
下面是學??煊嵵小澳喜靠h伏虎中學教學成果顯著”這條新聞后顯示的頁面,該新聞的鏈接語句是:
shownews.asp?newsid=413
這里的傳遞的參數(shù)newsid用于傳遞顯示的新聞的編號。
該頁面的設(shè)計過程首先在Dreamweaver UltraDev 4中排版設(shè)計,設(shè)計的界面如圖所示:
對比實際運行的界面和設(shè)計界面可以看出,導(dǎo)航條的設(shè)計不是在這里直接給出,而是通過腳本調(diào)用一個js文件。這樣設(shè)計的好處在與可以和其它的頁面共享該導(dǎo)航的js文件。調(diào)用腳本的語句如下:
<script language="JavaScript" src="newsbar.js"></script>
該newsbar.js文件的語句如下:
document.writeln("<table width=100% border=0 cellspacing=0 cellpadding=0>");
document.writeln(" <tr align=center>");
document.writeln(" <td width=15%><a href=more.asp?typeid=9>學校概況</a></td>");
document.writeln(" <td width=14%><a href=more.asp?typeid=10>學校新聞</a></td>");
document.writeln(" <td width=14%><a href=more.asp?typeid=11>教育科研</a></td>");
document.writeln(" <td width=14%><a href=more.asp?typeid=12>名校名師</a></td>");
document.writeln(" <td width=14%><a href=more.asp?typeid=13>學生園地</a></td>");
document.writeln(" <td width=14%><a href=more.asp?typeid=14>招生信息</a></td>");
document.writeln(" <td width=14%><a href=more.asp?typeid=15>誠聘英才</a></td>");
document.writeln(" </tr>");
document.writeln("</table>");
另外對比shownews.asp文件還可以看出,該頁面中的新聞標題和新聞內(nèi)容也是調(diào)用其它的語句和腳本的。
新聞標題調(diào)用asp腳本:<%=rs("topic")%>用于顯示記錄集中的topic字段值。該字段是通過sql語句實現(xiàn)的查詢記錄集中的字段值。相關(guān)的sql查詢語句如下:
rs.open "select * from news where newsid=" & cstr(request("newsid")),conn,1,1
該語句實現(xiàn)從news表中查詢newsid編號等于傳遞的參數(shù)newsid的記錄。
對于新聞的內(nèi)容顯示也和新聞的主題顯示類似,這里就不再說明。
最后這里介紹一下該頁面顯示的與本新聞相關(guān)的新聞的實現(xiàn)技術(shù):
首先要從數(shù)據(jù)庫中news表的字段說起,在news表中有一個keys字段。
我們可以利用sql語句在news表中查詢keys值和該新聞關(guān)鍵字類似的記錄,就可以得到相關(guān)信息。Sql語句如下:
rsc.open "select top " & aboutnews & " * from news where keys like '%" & trim(rs("keys")) & "%' and newsid<>" & cstr(rs("newsid")) & " and audit=1 order by ntime DESC",conn,1,1
shownews.asp文件除了顯示新聞詳細信息外,該文件同時還和下載資源的詳細頁面共用。為了在顯示一般詳細信息時候,不出現(xiàn)下載的字樣,可以利用if 語句進行判斷,利用if語句對變量xz進步判斷,如果xz變量等于1,表明是資源下載的詳細頁面,這時候就顯示下載字樣,下載鏈接來自資源表中的該資源對應(yīng)路徑。
4.5 更多新聞頁面的more.asp設(shè)計
在首頁中的學??煊崳逃蒲?,名校名師,學生園地都只是顯示了該類別的10條信息,如何得到更多的信息顯示?需在首頁之外另外設(shè)計更多信息顯示的more.asp頁面。在首頁的導(dǎo)航條上面都可以鏈接到該頁面。在首頁的導(dǎo)航條中分別有下面的鏈接語句:
1:<a href="more.asp?typeid=10">…</a>
2:<a href="more.asp?typeid=11">…</a>
3:<a href="more.asp?typeid=12">…</a>
4:<a href="more.asp?typeid=13">…</a>
5:<a href="more.asp?typeid=14">…</a>
6:<a href="more.asp?typeid=15">…</a>
這些鏈接語句分別都是鏈接到more.asp文件,只是傳遞的參數(shù)不一樣。Typeid=10…15分別對應(yīng)學校新聞…誠聘英才。
在本頁中就是通過獲得的傳遞參數(shù)確定sql語句查詢news中的類別號等于傳遞的類別號的所有信息的。
下面是傳遞參數(shù)為16的頁面顯示的界面圖:
該頁面顯示的所有news表中typeid=16的新聞信息。
下面給出在Dreamweaver UltraDev 4中排版設(shè)計的結(jié)果:
下面介紹該頁面實現(xiàn)顯示傳遞的參數(shù)的所有信息的技術(shù):
首先利用下面的代碼實現(xiàn)建立一個記錄集和實現(xiàn)sql查詢:
set rs=server.createobject("adodb.recordset")
rs.open "select * from news where typeid=" & cstr(typeid) & " and audit=1 order by ntime DESC",conn,1,1
由于在news表中typeid等于傳遞的參數(shù)的記錄可能非常多,那么全部在一頁中顯示不方便,所以該頁又用到了數(shù)據(jù)的分頁顯示技術(shù)。
下面給出本頁中用到的分頁顯示的代碼:
<%
response.write "<hr size=0 width='80%'><div align=center>"
response.write "第<font color=red>" + cstr(curpage) + "</font>頁/總<font color=red>" + cstr(rs.pagecount) + "</font>頁 "
response.write "本頁<font color=red>" + cstr(i-1) + "</font>條/總<font color=red>" + cstr(rs.recordcount) + "</font>條 "
if curpage = 1 then
response.write "首頁 前頁 "
else
response.write "<a href='more.asp?typeid=" & cstr(typeid) & "&page=1'>首頁</a> <a href='more.asp?typeid=" & cstr(typeid) & "&page=" & cstr(curpage-1) & "'>前頁</a> "
end if
if curpage = rs.pagecount then
response.write "后頁 末頁"
else
response.write "<a href='more.asp?typeid=" & cstr(typeid) & "&page=" & cstr(curpage+1) & "'>后頁</a> <a href='more.asp?typeid=" & cstr(typeid) & "&page=" & cstr(rs.pagecount) & "'>末頁</a>"
end if
%>
分頁技術(shù)介紹見第五章的介紹。
在該頁面的左側(cè),顯示的有推薦內(nèi)容和熱點文章二類信息。
下面來重點介紹推薦內(nèi)容實現(xiàn)的原理:
在推薦內(nèi)容的單元格中內(nèi)嵌腳本:
<script language="javascript" src="news.asp?kind=hot&n=5"></script>
腳本中調(diào)用的文件是news.asp,傳遞的參數(shù)是kind和n。這里的kind值為hot,n為5。
這里的hot參數(shù)不是表示news表中某個字段的值為hot,在實現(xiàn)的哪些信息是屬于hot類別的時候,是通過sql查詢語句中的通過news表中的hits的次數(shù)反序輸出。也就是說hits點擊次數(shù)最多的記錄顯示。參數(shù)N的值傳遞顯示信息的條數(shù)。
實現(xiàn)的關(guān)鍵語句如下:
sql="select top " & n & " * from news where typeid=" & cstr(typeid) & " and audit=1 order by hits DESC"
為了實現(xiàn)左邊分類導(dǎo)讀的子欄目的顯示,可以從border表中查詢出大類為當前的typeid編號的類別。然后利用循環(huán)語句分別將border表中符合條件的小類欄目顯示到頁面上。
rs6.open "select * from border where typeid=" & request("typeid") ,conn,1,1
學生頻道中的學生留言,學生意見欄目屬于學生頻道欄目,但是由于學生留言和學生反饋屬于交互性的欄目,所以,在后臺設(shè)計中,并沒有把學生留言,學生意見作為學生頻道的子類別,由于不是子類,那么這里就無法顯示通過從border表中查詢獲得。所以在這里為了顯示該欄目,可以利用一個if語句來進行判斷類別值,如果類別typeid編號值為17(學生頻道),那么就利用if語句判斷后另外添加顯示學生留言等子欄目。
if request("typeid")=17 then
response.write "<li type=circle><a href='bbs/' target=_blank>"
response.write "學生提問" & "</a>"
response.write "<li type=circle><a href='bbs/' target=_blank>"
response.write "學生意見" & "</a>"
end if
4.6 后臺管理登錄的實現(xiàn)
實現(xiàn)登錄的文件有:login.asp和check.asp二個文件。Login.asp文件提供輸入用戶名和密碼已經(jīng)校驗輸入的是否為空等判斷。輸入正確的用戶名和密碼是否正確是通過login.asp文件中表單提交的用戶名和密碼傳遞到check.asp文件中和數(shù)據(jù)庫中user表用戶名和密碼對比是否正確,對正確的用戶名和密碼賦給一個session變量。進入到管理主頁。實現(xiàn)的語句如下:
session("purview")=rs("purview")
session("name")=rs("name")
response.redirect "admin/index.asp"
該session變量的作用是在不同的網(wǎng)頁之間傳遞登錄用戶的身份。因為管理頁面的權(quán)限只有管理員才能進入。所有當管理員登錄時利用session來將管理員的身份在不同的管理頁面間傳遞著。
當用戶名和密碼賦給一個session變量的同時也將網(wǎng)頁轉(zhuǎn)向管理主頁。在管理主頁的開頭部分首先需要校驗身份。校驗的實現(xiàn)的方法是檢查session變量是否為空。如果為空表明沒有經(jīng)過管理登錄獲得合法的session,那么就不能進入該頁面。實現(xiàn)這個功能的語句如下:
<%
if session("purview")="" then
response.redirect "../login.asp"
response.end
end if
%>
由以上的語句可以看出,如果session變量為空,則轉(zhuǎn)向登錄文件login.asp。下面是合法的session變量登錄到管理主頁的界面:
該頁面的實現(xiàn)使用了框架技術(shù)。整個頁面分為左右二部分,左邊是用戶管理操作的一個列表。右邊是對應(yīng)的網(wǎng)頁。管理部分的其它頁面和實現(xiàn)的技術(shù)這里就不再一一介紹。詳情可以參見源代碼文件。
4.7 資源下載欄目的設(shè)計
資源下載重點需要設(shè)計出資源的信息的添加和資源的上傳。
在后臺管理中,管理員可以通過點擊資源下載欄目中的子欄目比如試卷下載子菜單,出現(xiàn)資源添加和資源上傳頁面。資源的添加實現(xiàn)分為2步,第一步把資源上傳到服務(wù)器下,同時把上傳路徑記錄到資源表中,第二將資源的文字信息添加到后臺信息表中。
實現(xiàn)資源的上傳和將上傳路徑保存到資源表,是由Addziyuan.asp文件實現(xiàn)的。
為了實現(xiàn)上傳,需要用到ADO Stream和FSO對象。在ASP中,F(xiàn)SO的意思是File System Object,即文件系統(tǒng)對象。我們將要操縱的計算機文件系統(tǒng),在這里是指位于web服務(wù)器之上。利用FSO等技術(shù)實現(xiàn)將在服務(wù)器端創(chuàng)建上傳文件夾。
基本原理是:采用ADO Stream對象的BinaryRead方法將FORM中的所有數(shù)據(jù)讀出,從中截取出所需的文件數(shù)據(jù),以二進制文件方式存盤。
<form action="addziyuan.asp" target="_blank" enctype="multipart/form-data" method="post">
<tr bgcolor="#FFFFFF">
<td width="20%">
<div align="right">上傳文件 </div>
</td>
<td width="80%">
<input type = "file" name = "filePic" size = "30">
<input type = "submit" name = "Submit" value = "上傳">
</td>
</tr>
</form>
程式中使用了文件對象,這樣在upload_5xsoft.inc中采用BinaryRead方法讀來的原始數(shù)據(jù)就不僅僅是選擇的文件本身的數(shù)據(jù),還包含該文件在用戶硬盤上的路徑、類型、提交頁面的表單域名等相關(guān)信息的描述,這樣我們就需從中提取出文件的具體內(nèi)容。根據(jù)分析,數(shù)據(jù)的頭部信息和數(shù)據(jù)的分界線是兩對回車換行符,尾部也有分隔信息,我們能采用類似以下的方法獲取文件數(shù)據(jù)。
set objForm=Server.CreateObject("Scripting.Dictionary")
set objFile=Server.CreateObject("Scripting.Dictionary")
if Request.TotalBytes<1 then Exit Sub
set tStream = Server.CreateObject("adodb.stream")
set Data_5xsoft = Server.CreateObject("adodb.stream")
Data_5xsoft.Type = 1
Data_5xsoft.Mode =3
Data_5xsoft.Open
Data_5xsoft.Write Request.BinaryRead(Request.TotalBytes)
Data_5xsoft.Position=0
RequestData =Data_5xsoft.Read
利用ADO STREAM中提供的二進制文件操作方法來完成,保存文件的語句是: StreamOBJ.SaveToFile (fileName,2)。在 這種操作中,我們能將有關(guān)的操作存放在一個類文件中,在應(yīng)用時,直接將該類文件包含在ASP程式中就能了。
當文件上傳后,最后,系統(tǒng)將上傳的路徑和上傳的文件名保存到資源表中。保存資源表的代碼如下:
Set rs2 = Server.CreateObject("ADODB.Recordset")
sql2="select * from ziyuan"
rs2.open sql2,conn,3,3
rs2.addnew
rs2("lujin")=szPath & szFileName
rs2.update
rs2.close
5、本系統(tǒng)的技術(shù)特色
—— 利用session變量來跟蹤和校驗合法用戶。
本網(wǎng)站管理員登錄以及管理員進入管理頁面時用到了session變量。
當用戶在WEB站點的網(wǎng)頁之間來回移動的時候,可以使用Session變量來跟蹤用戶。Session變量與cookie有密切的關(guān)系。實際上,session變量依賴于cookie變量。
在本網(wǎng)站管理員登錄進入后臺管理時,需要用到session變量。便于管理員在不同的管理網(wǎng)頁之間移動表明身份。
首先,在check.asp文件中獲得該變量。管理員登錄時輸入的用戶名和密碼傳遞到check.asp中和數(shù)據(jù)庫中管理員用戶名和密碼對比。正確的用戶名和密碼就賦值一個session變量。具體語句如下:
session("purview")=rs("purview")
session("name")=rs("name")
在后面的管理頁面中首先判斷session("purview")是否為空,如果為空的話表明沒有取得合法的session身份。這樣就導(dǎo)向到login.asp頁面重新登錄。
判斷session變量的語句如下:
<%
if session("purview")="" then
response.redirect "../login.asp"
response.end
end if
%>
下面再介紹一些session變量的其它知識:
session變量存活到用戶離開WEB站點為止,WEB服務(wù)器是怎么檢測到這件事的發(fā)生呢?在默認情況下,如果用戶在20分鐘之內(nèi)還沒有請求網(wǎng)頁,那么WEB服務(wù)器就認為用戶已經(jīng)離開,通過session對象的Timeout屬性可以改變這個默認的行為。
Session.Timeout=60
以分鐘的形式聲明Timeout屬性值。Timeout的這個新值將應(yīng)用于用戶整個剩余的會話當中。
另外在使用session變量之前,應(yīng)該注意它與cookie一樣的缺點,當一個客戶使用的是不支持cookie的瀏覽器時,Web服務(wù)器不能創(chuàng)建ASPSessionIDcookie。沒有ASPSessionIDcookie,當用戶在網(wǎng)頁之間移動時,session變量就不能與用戶發(fā)生聯(lián)系。因此盡可能地避免使用session變量。
通過這次網(wǎng)站的設(shè)計,我掌握了一種新的系統(tǒng)開發(fā)工具FLASH5.0,Adobe Photoshop 6.0,Dreamweaver UltraDev 4和Asp網(wǎng)絡(luò)技術(shù)。ASP組件的強大功能讓我深感折服,ADO對象開發(fā)人員提供了一種最快、最簡單和效率最高的訪問所有數(shù)據(jù)庫的方法,利用ADO我們可以在ASP腳本中生成對數(shù)據(jù)庫的連接,并且利用該數(shù)據(jù)庫連接可完成各種各樣的數(shù)據(jù)庫操作。ADO提供的是一種應(yīng)用級程序的應(yīng)用程序接口。同時在這次設(shè)計的過程中,我始終遵循軟件工程的思想,這使我的工作進度明顯加快,也使我少走了不少彎路。軟件工程的思想,指導(dǎo)我一步一步從系統(tǒng)分析,到系統(tǒng)設(shè)計,再到系統(tǒng)實現(xiàn),讓我對整個系統(tǒng)的開發(fā)過程有了明顯的全局觀念,也合理地安排了整個設(shè)計的時間。
由于受本人的水平,思維的局限性,本站設(shè)計的還有很多地方不足,有待以后改進。包括:由于時間,水平的原因,網(wǎng)頁設(shè)計的不精美。比如排版設(shè)計有些不合理,動畫,圖片做的不是很有吸引力。這些將是我努力的方向。
本文發(fā)布于北京網(wǎng)站建設(shè)公司推來客http://www.tlkjt.com/
我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開發(fā)、各類API接口對接開發(fā)等。十余年開發(fā)經(jīng)驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!