asp毕业设计—— 基于asp+access的网上聊天室设计与实现(毕业论文+程序源码)——网上聊天室
基于asp+access的網(wǎng)上聊天室設(shè)計(jì)與實(shí)現(xiàn)(畢業(yè)論文+程序源碼)
大家好,今天給大家介紹基于asp+access的網(wǎng)上聊天室設(shè)計(jì)與實(shí)現(xiàn),文章末尾附有本畢業(yè)設(shè)計(jì)的論文和源碼下載地址哦。
文章目錄:
- 基于asp+access的網(wǎng)上聊天室設(shè)計(jì)與實(shí)現(xiàn)(畢業(yè)論文+程序源碼)
- 1、項(xiàng)目簡(jiǎn)介
- 2、資源詳情
- 3、關(guān)鍵詞:
- 4、畢設(shè)簡(jiǎn)介
- 5、資源下載
1、項(xiàng)目簡(jiǎn)介
2、資源詳情
項(xiàng)目難度:中等難度
適用場(chǎng)景:相關(guān)題目的畢業(yè)設(shè)計(jì)
配套論文字?jǐn)?shù):16152個(gè)字34頁(yè)
包含內(nèi)容:整套源碼+完整畢業(yè)論文
3、關(guān)鍵詞:
ASP技術(shù); IIS; Web服務(wù)器; Access數(shù)據(jù)庫(kù); CGI4、畢設(shè)簡(jiǎn)介
提示:以下為畢業(yè)論文的簡(jiǎn)略介紹,項(xiàng)目源碼及完整畢業(yè)論文下載地址見文末。
引 言
省略
第1章 選題背景
1.1來(lái)源及目的
省略
1.2課題研究的主要問(wèn)題
(一) 基于網(wǎng)絡(luò)環(huán)境的教學(xué)模式
在基于網(wǎng)絡(luò)的教學(xué)環(huán)境下,做到使學(xué)生最大限度地發(fā)揮學(xué)習(xí)者的主動(dòng)性、積極性,既可以進(jìn)行個(gè)別化教學(xué),以可以進(jìn)行協(xié)作型教學(xué)(通過(guò)各種協(xié)作式教學(xué)策略的運(yùn)用而實(shí)現(xiàn)),還可以將“個(gè)別化”與“協(xié)作型”二者結(jié)合起來(lái),形成一種全新的教學(xué)模式。這種教學(xué)模式可以完全按照個(gè)人的需要進(jìn)行,不論是教學(xué)內(nèi)容、教學(xué)時(shí)間、教學(xué)甚至指導(dǎo)教師都可以按照學(xué)生自己的意愿或需要進(jìn)行選擇,使每個(gè)學(xué)生應(yīng)完成下列功能:
a. 查詢和訪問(wèn)網(wǎng)絡(luò)教學(xué)服務(wù)器
b. 和教師或其他同學(xué)直接通訊(進(jìn)行咨詢、輔導(dǎo)、討論和交流)
c. 和教師或其他同學(xué)共享或共同操作某個(gè)軟件或文檔資料的內(nèi)容
(二) 基于網(wǎng)絡(luò)教學(xué)環(huán)境的教學(xué)策略
(三) 基于網(wǎng)絡(luò)環(huán)境的教學(xué)系統(tǒng)結(jié)構(gòu)
基于網(wǎng)絡(luò)的教學(xué)系統(tǒng)是一個(gè)由硬件、軟件、教學(xué)管理機(jī)構(gòu)組成的一體化有機(jī)系統(tǒng):
(1) 多媒體授課系統(tǒng)
(2) 多媒體學(xué)習(xí)系統(tǒng)
(3) 師生交互工具
(4) 網(wǎng)絡(luò)題庫(kù)管理系統(tǒng)
(5) 作業(yè)批閱系統(tǒng)
(6) 自動(dòng)答疑系統(tǒng)
(7) 教學(xué)資源庫(kù)管理系統(tǒng)
(8) 考試與評(píng)價(jià)系統(tǒng)
3 教學(xué)管理機(jī)構(gòu):基于網(wǎng)絡(luò)教學(xué)系統(tǒng)同樣需要一個(gè)機(jī)構(gòu)來(lái)維持它的運(yùn)行,進(jìn)行教學(xué)研究、管理和教學(xué)工作。
1.3包含的主要技術(shù)問(wèn)題
在以上基于網(wǎng)絡(luò)的教學(xué)系統(tǒng)支持教學(xué)的應(yīng)用軟件中,這里主要介紹的技術(shù)問(wèn)題是在網(wǎng)絡(luò)教學(xué)中利用ASP技術(shù)+Access數(shù)據(jù)庫(kù)制作網(wǎng)絡(luò)教學(xué)的互動(dòng)平臺(tái)。
1.3.1關(guān)于asp技術(shù)的介紹
當(dāng)前隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,利用網(wǎng)絡(luò)實(shí)行遠(yuǎn)程教育已是發(fā)展趨勢(shì),而發(fā)展網(wǎng)絡(luò)遠(yuǎn)程教育,首先必須建立一個(gè)合理的遠(yuǎn)程教育平臺(tái),使學(xué)生可以靈活接入網(wǎng)絡(luò),參與學(xué)習(xí)。這里就是利用ASP (Active Server Pages) 技術(shù)完成對(duì)基于Web的網(wǎng)絡(luò)教學(xué)平臺(tái)的構(gòu)建。
ASP(Active Server Pages) 動(dòng)態(tài)網(wǎng)頁(yè),是微軟公司推出的一種通用網(wǎng)關(guān)接口的技術(shù)。ASP本身并不是一種腳本語(yǔ)言它只是提供了一種使鑲嵌在HTML頁(yè)面中的腳本程序得以運(yùn)行的環(huán)境。我們可以通過(guò)ASP結(jié)合HTML語(yǔ)言、ASP指令和ActiveX元件以及數(shù)據(jù)庫(kù)等方面的知識(shí),使用自己的Web服務(wù)器創(chuàng)建并運(yùn)行動(dòng)態(tài)交互式Web站點(diǎn)。用戶端只要使用可執(zhí)行HTML代碼的瀏覽器,即可瀏覽Active Server Pages所設(shè)計(jì)的網(wǎng)頁(yè)內(nèi)容。Active Server Pages所使用的腳本語(yǔ)言(VBScript,JScript)均在Web服務(wù)器端執(zhí)行,用戶端的瀏覽器無(wú)需能夠執(zhí)行這些腳本語(yǔ)言。
1.3.2關(guān)于數(shù)據(jù)庫(kù)的介紹
省略
第2章 方案論證
2.1方案的分析及特點(diǎn)
Microsoft Access數(shù)據(jù)庫(kù)是微軟公司的Office辦公套件的一個(gè)重要組件。Access數(shù)據(jù)庫(kù)屬于關(guān)系數(shù)據(jù)庫(kù)的一種,使用它不需要進(jìn)行過(guò)多復(fù)雜的編程,利用所提供的向?qū)Ш鸵恍﹫D形化的界面和工具就能完成小型數(shù)據(jù)庫(kù)管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。
Access數(shù)據(jù)庫(kù)提供了7種對(duì)象來(lái)完成數(shù)據(jù)庫(kù)的功能。這7種對(duì)象分別為表、查詢、窗體、報(bào)表、頁(yè)、宏和模塊。Access數(shù)據(jù)庫(kù)在計(jì)算機(jī)中以數(shù)據(jù)庫(kù)文件(.mdb)存儲(chǔ)。在這7種對(duì)象中,表用來(lái)存貯數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行產(chǎn)看和分析,窗體為數(shù)據(jù)的輸入等操作設(shè)置友好的外觀。報(bào)表以格式化的形式來(lái)對(duì)外展示數(shù)據(jù),數(shù)據(jù)訪問(wèn)頁(yè)將數(shù)據(jù)發(fā)布到Web上,宏將自動(dòng)完成一組操作,模塊能自動(dòng)完成常規(guī)任務(wù)并創(chuàng)建業(yè)務(wù)解決方案。
Access 數(shù)據(jù)庫(kù)管理系統(tǒng)由于與Microsoft Office應(yīng)用程序的高度集成,為用戶提供友好的用戶界面和方便快捷的運(yùn)行環(huán)境。Access 數(shù)據(jù)庫(kù)管理系統(tǒng)具有獨(dú)特的數(shù)據(jù)庫(kù)窗口、快速訪問(wèn)特定的目標(biāo)文件、名稱自動(dòng)更新、條件格式、數(shù)據(jù)庫(kù)轉(zhuǎn)換、子數(shù)據(jù)表、導(dǎo)出數(shù)據(jù)到Excel和Word文本文件、窗體的改進(jìn)、數(shù)據(jù)訪問(wèn)頁(yè)、壓縮關(guān)閉數(shù)據(jù)庫(kù)、示范數(shù)據(jù)庫(kù)和與SQL Server協(xié)同工作的功能。
第3章 過(guò)程設(shè)計(jì)論述
3.1Access數(shù)據(jù)庫(kù)設(shè)計(jì)階段:
省略
3.1.1關(guān)系模型
省略
3.1.2數(shù)據(jù)類型
省略
3.2 ASP的設(shè)計(jì)階段
3.2.1 ASP中的數(shù)據(jù)引用
在ASP中可通過(guò)ADO對(duì)象(ActiveX Data Object,簡(jiǎn)稱ADO)與SQL語(yǔ)言(Structured Query Language,結(jié)構(gòu)化查詢語(yǔ)言)做到存取服務(wù)器端數(shù)據(jù)庫(kù)(Web Database)的數(shù)據(jù)。ADO主要是提供一個(gè)存取Web Database的方法。ADO是ASP重要的內(nèi)置對(duì)象之一,凡是由ODBC或OLE DB驅(qū)動(dòng)程序所能存取的數(shù)據(jù)庫(kù)。這些數(shù)據(jù)庫(kù)包括dBase、FaxPro、Excel、Access等。ADO是由ADODB對(duì)象:Connection、command、parameter、RecordSet、Field、Properties、Error以及4個(gè)數(shù)據(jù)集合:Paramter、Fields、Properties、Error所構(gòu)成。本書是針對(duì)未學(xué)過(guò)程序語(yǔ)言的初學(xué)者,因此只介紹基本常用的對(duì)象與數(shù)據(jù)集合,至于未介紹的部分參考其他有關(guān)ASP的進(jìn)階書籍。本章將會(huì)介紹Connection、Command、Recordset對(duì)象,其功能說(shuō)明如下:
3.Recordset:用來(lái)讀取數(shù)據(jù)庫(kù)的記錄,或是添加、修改、刪除數(shù)據(jù)庫(kù)的記錄。負(fù)責(zé)瀏覽與操作從數(shù)據(jù)庫(kù)取得的數(shù)據(jù),也就是說(shuō),Recordset對(duì)象可以用來(lái)表示的是來(lái)自基本表或命令執(zhí)行結(jié)果的記錄全集。在使用ADO時(shí),通過(guò)Recordset對(duì)象可對(duì)幾乎所有的數(shù)據(jù)進(jìn)行操作,所有Recordset對(duì)象均使用記錄行和字段列進(jìn)行構(gòu)造。
3.2.2 ASP的運(yùn)行環(huán)境及方式
省略
3.2.3具體實(shí)現(xiàn)方式及代碼講解
文字聊天室,有管理員功能,可踢人、提升管理員、查閱用戶信息,文字聊天,私聊,支持表情,點(diǎn)歌等功能。聊天室用Access數(shù)據(jù)庫(kù)和ASP技術(shù)制作。
聊天室的設(shè)計(jì)都離不開數(shù)據(jù)庫(kù),因?yàn)榉?wù)器要把每個(gè)聊天室成員的發(fā)言、姓名(或昵稱)、發(fā)言時(shí)間、表情等存放起來(lái),以便各個(gè)瀏覽器讀取。
Access數(shù)據(jù)庫(kù)就可以實(shí)現(xiàn)這些功能。在Access數(shù)據(jù)庫(kù)中建立一個(gè)數(shù)據(jù)庫(kù)列表,該表至少要具備三個(gè)數(shù)據(jù)字段:用戶姓名或昵稱、時(shí)間、談話內(nèi)容。如果要記錄多個(gè)信息,想說(shuō)話表情,需要的顯示顏色等則應(yīng)再適當(dāng)增添相應(yīng)的字段。另外,如果支持悄悄話,還應(yīng)當(dāng)附加地址欄應(yīng)以存放每個(gè)用戶的IP地址。例如本聊天室:
利用Access建立一個(gè)名為“聊天室.mdb”的數(shù)據(jù)庫(kù),在該數(shù)據(jù)庫(kù)中建立一個(gè)名為“chatroom”的數(shù)據(jù)表,其結(jié)構(gòu)簡(jiǎn)單如下所示:
字段名稱 數(shù)據(jù)類型 默認(rèn)值
用戶昵稱 文本 ——
發(fā)言時(shí)間 日期/時(shí)間 Now()
發(fā)言內(nèi)容 備注 ——
在表的基礎(chǔ)上要建立一個(gè)查詢,因?yàn)閭鬟f至瀏覽器端的不能室所有的內(nèi)容而是一部分,如最近十分鐘內(nèi)的談話。因而該查詢所需要的語(yǔ)句為:
SelectFrom chatroom where datediff(“n”[發(fā)言時(shí)間],now()<10 Order by 發(fā)言時(shí)間Desc)
同時(shí),數(shù)據(jù)庫(kù)訪問(wèn)組件訪問(wèn)服務(wù)器數(shù)據(jù)庫(kù)可以通過(guò)瀏覽器查詢服務(wù)器的后端數(shù)據(jù)庫(kù)得到,ASP通過(guò)內(nèi)置的數(shù)據(jù)庫(kù)訪問(wèn)組件(ADODB)實(shí)現(xiàn),ADO即ActiveDataObject,是專門針對(duì)Internet和Web數(shù)據(jù)庫(kù)開發(fā)的,利用ADO查詢數(shù)據(jù)庫(kù)的步驟是:
(1)設(shè)置DSN"ADODB通過(guò)ODBC工作,因此要在ODBC中設(shè)置DSN(數(shù)據(jù)源名)。
(2)生成ADODB組件實(shí)例為:
SetConnect=Server1CreateObject(/ADODB1Connection0)
(3)連接數(shù)據(jù)庫(kù)利用ADODB的成員函數(shù)Open和先前設(shè)定的DSN可以和數(shù)據(jù)庫(kù)連接,ConnectOpen(/DSN=dsnname;UID=userID;PWD=password)
(4)執(zhí)行查詢指定Access查詢語(yǔ)句:Access =/selectfromtablename
雖然ASP支持許多不同的程序語(yǔ)言(VBScript、Jscript、PerlScript),不過(guò)這些程序語(yǔ)言中,以VBScript對(duì)ASP的支持最為完整,使得VBScript成為ASP默認(rèn)使用的程序語(yǔ)言。ASP程序代碼可以將VBScript視為特殊的HTML標(biāo)記。因?yàn)?#xff0c;只要在<%與%>之間的文字語(yǔ)句,都被視為在服務(wù)器端執(zhí)行并以VBScript所編寫ASP的程序代碼,這樣就可以使用<%~%>來(lái)取代
在ASP中常用的內(nèi)置對(duì)象有5個(gè)分別是Response對(duì)象、Request對(duì)象、Session對(duì)象、Application對(duì)象和Server對(duì)象
關(guān)于Response對(duì)象的介紹
每一種程序語(yǔ)言或開發(fā)工具都有一定的與用戶溝通的函數(shù),Active Server Page內(nèi)嵌兩種對(duì)象,分別是超文本鏈接傳輸協(xié)議的請(qǐng)求和響應(yīng)對(duì)象。在ASP中負(fù)責(zé)將信息傳遞給用戶對(duì)象的就是Response對(duì)象。Response對(duì)象用于動(dòng)態(tài)響應(yīng)客戶端請(qǐng)求(Request),并將動(dòng)態(tài)生成的相應(yīng)結(jié)果返回到客戶瀏覽器中,使用Response可以動(dòng)態(tài)創(chuàng)建Web頁(yè)面,改變HTTP標(biāo)題頭,還可以自動(dòng)將客戶端重定向(Redirect)到一個(gè)指定的頁(yè)面中,另外,如果要向客戶端寫入Cookies時(shí),Response對(duì)象也是一種很好的工具。
其中collection表示Response對(duì)象的集合,property表示Response對(duì)象的屬性,method表示Response對(duì)象的方法。
具體實(shí)現(xiàn)的語(yǔ)法如下:
Response.Write方法
語(yǔ)法
Response.Write “sendingdata”
功能
將數(shù)據(jù)或字符串傳送到客戶端瀏覽器。
可使用“=”來(lái)代替Response.Write方法。
Response.End方法
語(yǔ)法
Response.End
功能
結(jié)束ASP程序的執(zhí)行。
當(dāng)執(zhí)行至Response.End,則接在此行后面的程序?qū)⒉辉賵?zhí)行。
在聊天室中具體是這樣實(shí)現(xiàn)的:
<%
Response.Buffer =true
if not isarray(session(“dv_user”)) then
Response.Write “未登陸不能發(fā)言!”
Response.End
這是在登陸之前的說(shuō)明部分,用到了Response.Write方法。
Response.Redirect方法
語(yǔ)法
Response.Redirect“URL”
功能
關(guān)于Request對(duì)象的介紹
Request對(duì)象的功能主要是用來(lái)取得客戶端瀏覽器(Browser)所傳送到服務(wù)器端的信息。譬如當(dāng)我們?cè)诖绑w上填完數(shù)據(jù),按下“傳送”按鈕(Submit),則Request對(duì)象會(huì)根據(jù)窗體的名稱取得客戶端所鍵入的數(shù)據(jù)。其語(yǔ)法如下:
語(yǔ)法
Value=Requesr.collection | method |property
功能
取得客戶端窗體各組件所輸入的數(shù)據(jù)。
(1) Form集合用來(lái)取得客戶端窗體上所傳過(guò)來(lái)的信息。
(2) QueryString集合用來(lái)取得客戶端附加子阿ASP網(wǎng)址后的參數(shù)信息。
(3) ServerVariable集合用來(lái)取得服務(wù)器短的環(huán)境變量。
(4) Cookies集合用來(lái)取得客戶端保存的Cookies值。
(5) ClientCertificate集合用來(lái)取得客戶端的身份認(rèn)證信息。
Request.Form集合
語(yǔ)法
Request.Form(“filedname”)
功能
取得客戶端窗體各組件所輸入的數(shù)據(jù)。
saystr=Request.Form (“post_msg”)
towho=Request.Form (“towho”)
addsays=Request.Form (“addsays”)
addwordcolor=Request.Form (“addwordcolor”)
sayscolor=Request.Form (“sayscolor”)
towhoway=Request.Form (“towhoway”)
gonggao=Request.Form (“gonggao”)
注:這是聊天室登陸之前的說(shuō)明部分,多次用到了Request.Form(“filedname”)的對(duì)象。
Request.QueryString集合
Request.QueryString集合(或稱子對(duì)象)的功能和Form差不多,唯一的差異在于前者可以直接取得加在地址后面的附加參數(shù),這些參數(shù)通常以“?” 問(wèn)號(hào)來(lái)連接,也就是說(shuō)當(dāng)在窗體輸入數(shù)據(jù)完畢,單擊“傳送”按鈕后會(huì)將窗體內(nèi)的數(shù)據(jù)以問(wèn)號(hào)開頭,直接輸入瀏覽器的地址欄“http://…?…”。Request.QueryString的語(yǔ)法如下:
語(yǔ)法
Request.QueryString(”filedname”)
功能
取得客戶端窗體所輸入的信息。
Request.ServerVariables集合
ASP程序中可以通過(guò)Request.ServerVariables來(lái)取得服務(wù)器端環(huán)境變量名稱的內(nèi)容,其語(yǔ)法如下:
語(yǔ)法
Request.ServerVariables(“ServerEnviVariablname”)
功能
取得服務(wù)器端的環(huán)境信息給客戶端。
ServerEnviVariablname參數(shù)是指服務(wù)器端的環(huán)境變量名稱。
(1) 取得服務(wù)器端的Domain Name或IP。
Request.ServerVariables(“Server_Name”)
(2) 取得此網(wǎng)頁(yè)所在的虛擬路徑(不包含Domain Name及IP)。
Request.ServerVariables(“Path_Info”)
對(duì)session對(duì)象進(jìn)行介紹:
Session對(duì)象是ASP所提供的通用對(duì)象,Session和Application不同的是,Application是所有客戶端的共享對(duì)象,而Session對(duì)象是屬于個(gè)別客戶端所專用的,與就是說(shuō)所打開的瀏覽器即表示為一個(gè)客戶端的Session對(duì)象。
Session對(duì)象的使用方法
語(yǔ)法1
Session(”sessionname”)=settingdata
語(yǔ)法2
Variablename=Session(“sessionname”)
功能
保存?zhèn)€別客戶端的私有數(shù)據(jù)。
當(dāng)用戶要進(jìn)行發(fā)言的時(shí)候執(zhí)行的流程圖是這樣的,如圖8:它的實(shí)現(xiàn)過(guò)程也是由Session對(duì)象完成的。
圖8
同時(shí),當(dāng)用戶瀏覽網(wǎng)站時(shí),若希望用戶都能先瀏覽網(wǎng)站的首頁(yè)之后,再由首頁(yè)分別連上其他的網(wǎng)頁(yè)。其做法就是使用Session對(duì)象在首頁(yè)設(shè)定一個(gè)Session標(biāo)志,這個(gè)標(biāo)志用來(lái)表示用戶是否來(lái)到首頁(yè):而其他頁(yè)可以在程序最開頭先判斷Session標(biāo)志是否為Empty,若成立表示用戶還沒有瀏覽首頁(yè),此時(shí)即再重新連到首頁(yè)即可。例如本聊天室就在首頁(yè)開頭編寫Session(”YNCome”)語(yǔ)句,用來(lái)表示用戶是否連上首頁(yè)的標(biāo)志,在Session(”YNCome”)為True,表示用戶已經(jīng)來(lái)過(guò)首頁(yè)了
Session(”YNCome”)=True
可在其他副頁(yè)開頭編寫如下語(yǔ)句,以下程序先判斷Session(”YNCome”)是否為Empty,若成立表示用戶還沒有連上首頁(yè),此時(shí)會(huì)執(zhí)行Response.Redirect”index.asp”在重新導(dǎo)向首頁(yè)。
If Session(”YNCome”)=Empty then
Response.Redirect”index.asp”
End if
聊天室的首頁(yè)界面見圖9:
圖9
通過(guò)提交按鈕來(lái)激發(fā)index.asp.該ASP文件主要來(lái)保證在聊天室里沒有兩個(gè)用戶是同名的。用戶提交信息后,該文件打開chat.mdb檢查是否已經(jīng)有該用戶名,如果有但密碼不對(duì)就提醒用戶重新輸入密碼,如果沒有那么用戶就順利進(jìn)入了聊天室。進(jìn)入聊天室界面的功能由下列語(yǔ)句完成:
進(jìn)入聊天室的主頁(yè)面見圖10:
圖10
其中驗(yàn)證是否為管理員的語(yǔ)句由下列代碼實(shí)現(xiàn):
對(duì)于沒有私聊功能的聊天室來(lái)說(shuō),其實(shí)每個(gè)用戶的屏幕上顯示的內(nèi)容是一樣的。所以只要在Global.ASA中建立一個(gè)公共變量來(lái)儲(chǔ)存聊天內(nèi)容,然后將該變量的內(nèi)容顯示在客戶端的屏幕上就可以了。在ASP中,只要建立一個(gè)Application對(duì)象的變量,然后對(duì)其讀寫就可以實(shí)現(xiàn)了。寫入代碼如下:
<% Application.Lock Application(dChat)Contentd)=Application) (dChat)Contentd)&NewMsg Application.UnLock %>以上代碼只需放入發(fā)送消息的ASP文件中就可以,其中,NewMsg為一個(gè)儲(chǔ)存新聊天內(nèi)容的變量,它用來(lái)儲(chǔ)存用戶新發(fā)出的消息在網(wǎng)絡(luò)上。發(fā)送消息可能是一個(gè)并發(fā)事件,如果多個(gè)用戶同時(shí)更改這個(gè)Application變量就會(huì)發(fā)生錯(cuò)誤。所以,上述代碼中使用了Application.Lock和Application.UnLock來(lái)避免此問(wèn)題的發(fā)生。而讀出此變量?jī)?nèi)容并將其顯示在網(wǎng)頁(yè)上則較為簡(jiǎn)單,只要將下述代碼放入用于顯示的ASP文件中即可:
<%=Application(dChat)Contentd) %>
知道了基本聊天室的實(shí)現(xiàn)方法,我們?cè)賮?lái)看看如何實(shí)現(xiàn)具有私聊功能的聊天室。對(duì)于一個(gè)擁有私聊功能的聊天室與沒有此功能的聊天室最大的區(qū)別是:允許客戶端的屏幕顯示不同的內(nèi)容,而不象沒有此功能的聊天室那樣每個(gè)人的屏幕顯示的內(nèi)容都是一樣的。這樣,我們就沒有辦法使用前面所提到的那種方法將聊天記錄存入一個(gè)Application對(duì)象的變量,然后再讀取它的值,就必須多建幾個(gè)變量來(lái)解決這個(gè)問(wèn)題。通過(guò)以下代碼來(lái)解決:
-這是發(fā)送方代碼
<%Application.Lock
Application(Session(dDestnamed))=-
Application(Session(dDestnamed))&PrivateData
Application.UnLock%>
-這是接收方代碼
<%=Application(Session(dNicknamed))%>
在上述代碼中,Session(dDestnamed)用來(lái)存放目的用戶的用戶名;PrivateData用來(lái)存放私聊內(nèi)容;Session(dNicknamed)用來(lái)存放用戶的昵稱(可以在用戶登錄的時(shí)候?qū)⒂脩舻年欠Q寫入該變量),因?yàn)镾ession對(duì)象的變量是私有的,所以每個(gè)用戶的Session(dNicknamed)變量的值是不相等的。發(fā)送方只要將目的用戶的昵稱寫入Session(dDestnamed),然后通過(guò)上述列出的發(fā)送方代碼就可以將私聊內(nèi)容發(fā)至想要發(fā)送的對(duì)象,而其他用戶是收不到此內(nèi)容的。例如:Session(dDestnamed)的值為ABC,那么在發(fā)送方就會(huì)產(chǎn)生一個(gè)名為Application(dABCd)的變量在接收方,如果他的Session(dNicknamed)的值也為ABC的話,那么接收方的那個(gè)Application對(duì)象的變量就為Application(dABCd)。如此一來(lái)就收到了發(fā)送方發(fā)來(lái)的私聊內(nèi)容,而其他用戶則收不到此內(nèi)容,這就實(shí)現(xiàn)了聊天室私聊的功能。私聊的實(shí)現(xiàn)見圖11:
圖11
添加Global.asa文件里面的代碼。這部分代碼主要處理Application_onStart事件,在此事件中,定義了一個(gè)有15個(gè)元素的數(shù)據(jù),并把它賦給了一個(gè)Application對(duì)象的屬性。Global.asa文件的內(nèi)容如下。
在AspChat.asp文件中添加代碼。注意,要把這部分代碼添加在主頁(yè)中的兩條平線之間,也就是文本中的兩個(gè)
之間。程序首先判斷申請(qǐng)這主頁(yè)時(shí),是否用的是“post”方法,因?yàn)楸纠写翱诘奶峤环椒ㄊ恰皃ost”。而一般第一次申請(qǐng)這幅主頁(yè)時(shí),用的是“get”方法。所以如果采用的是“post”方法的話,就說(shuō)明是某一瀏覽者在提交自己的談話內(nèi)容時(shí)的重新申請(qǐng),這就要進(jìn)行處理,因?yàn)橛钟行碌恼勗拑?nèi)容了。否則,說(shuō)明某一瀏覽者第一次申請(qǐng)此主頁(yè),并沒有提交什么談話,因此只需要把當(dāng)前的談話內(nèi)容顯示出來(lái)就可以了。
說(shuō)明:ASP中,提供了兩個(gè)共享的對(duì)象Application和Session,Application對(duì)象可以用來(lái)記錄不同客戶端共享數(shù)據(jù)變量,
這里介紹Application的語(yǔ)法及功能。
語(yǔ)法1
Application(“Applicationname”)=settingdata
語(yǔ)法2
Variablename=Application(“Applicationname”)
功能
記錄所有客戶端共享的對(duì)象。
Application雖然是所有客戶端的共享對(duì)象,但是Application也有它的有效范圍。Application的有效范圍就是虛擬目錄,就是本聊天室的默認(rèn)虛擬路徑C:\Inetpub\wwwroot\ASP聊天室。
其中聊天室的所有客戶都要共享信息,所以不可避免的要用到具有應(yīng)用程序級(jí)的變量的對(duì)象Application,這是建立的Chat程序的關(guān)鍵所在,所有的談話數(shù)據(jù)都存放在一個(gè)應(yīng)用程序級(jí)變量中,以便讓所有的客戶讀取。用所學(xué)過(guò)的Request對(duì)象獲取客戶所輸入的談話,并保存在變量talk中,然后將talk值存入應(yīng)用級(jí)變量show中,如下:
<%Application(“show”)=talk&Application(“show”)%>
接下來(lái)要考慮的是當(dāng)不同的客戶同時(shí)向Chat應(yīng)用程序進(jìn)行操作的時(shí)候如何處理。這個(gè)問(wèn)題其實(shí)與在數(shù)據(jù)庫(kù)中的兩個(gè)用戶同時(shí)寫入同一個(gè)記錄一樣,如果兩個(gè)用戶同時(shí)對(duì)同一個(gè)應(yīng)用程序級(jí)變量進(jìn)行寫操作,則一個(gè)用戶所做的修改會(huì)被另一個(gè)用戶的操作所覆蓋,所以,如果對(duì)Application對(duì)象數(shù)據(jù)的并發(fā)訪問(wèn)不采取一定的措施,則會(huì)導(dǎo)致當(dāng)兩個(gè)用戶試圖同時(shí)對(duì)ASP聊天室應(yīng)用程序提交時(shí),一個(gè)用戶提交的內(nèi)容會(huì)被另一個(gè)用戶提交的內(nèi)容所覆蓋,在被參加到會(huì)話中的任何人看到之前就消失了。為了避免這類問(wèn)題的出現(xiàn),我們需要使用Application對(duì)象中的Lock屬性來(lái)約束只允許當(dāng)前的用戶編輯或增加Application對(duì)象的屬性,這樣從用戶開始修改應(yīng)用程序級(jí)變量開始,到Application對(duì)象被顯式解除鎖定為止,Application對(duì)象的屬性只能被該用戶用編輯,如果此時(shí)有其他用戶請(qǐng)求編輯Application對(duì)象,則這些用戶要排隊(duì)等待,直到應(yīng)用程序被打開為止。
Application.lock
Application(“show”)=talk&Application(“show”)
Application.Unlock
其中進(jìn)入聊天室管理頁(yè)面時(shí)是使用這樣的語(yǔ)句實(shí)現(xiàn)的
<%
online=Application(“onlinelist”)
online=split(online," “)
for i=lbound(online) to ubound(online)-1
Response.Write “”&online(i)&”"
next
%>
p align =”center”>一個(gè)asp聊天室〈/font〉
<%
處理輸入
if Request.ServerVariables(“Request_Method”) = ”POST” then
標(biāo)明講話者
if len(Request(“txtWho”)) > 0 then
Session(“ssWho”) = Request(“txtWho”)
End if
Application.Lock //將Application對(duì)象鎖定,禁止其他客戶端存取Application變量
創(chuàng)建本地引用指針
mlCounte r= Application(“giCounter”)
maChats = Application(“gaChats”)
如果寫入的行數(shù)超過(guò)10,則重新開始記數(shù)。
If mlCounter > 9 then
MlCounter = 0
End if
增加用戶的輸入,計(jì)數(shù)器加1
maChat(mlCounter)= Session(“ssWho”)&”:”&Request(“txtCents”)
mlCounte r= mlCounter +1
把局部變量設(shè)置為在應(yīng)用范圍內(nèi)有效。
Application(”giCounter”)=mlCounter
Application(“gaChats”)=maChat
Application.Unlock //將Application對(duì)象解除鎖定,允許其他客戶端存取Application變量
End if
%>
<%
寫入TextArea
if Application (“giCounter”) = 0 then
lstemp =Application (“gaChats”)(0)
else
for x =0 to Application (“giCounter”)-1
lstemp = lstemp &”
”Application(“gaChats”)(x)
next
end if
Response.white lstemp
%>
再把txtWho的內(nèi)容初始化。也就是當(dāng)瀏覽者輸入過(guò)一次自己的姓名以后就不用再次輸入了,為了區(qū)分每個(gè)不同的瀏覽者,在這里使用了“Session”對(duì)象。利用Session(“ssWho”)記載瀏覽者的姓名。下面的代碼直接寫在以上代碼的下面,存入AspChat.asp中。
發(fā)言:
對(duì)象:
聊天室的數(shù)據(jù)庫(kù)配置它里面包括基本配置頁(yè),修改內(nèi)有說(shuō)明,可修改聊天室名稱和數(shù)據(jù)庫(kù)類型(目前默認(rèn)的為ACCESS數(shù)據(jù)庫(kù)),具體的實(shí)現(xiàn)方式如下代碼所示: <% dim chatname,mastername,copy,chatdate,useragentchatname=“聊天室” //聊天室名字
mastername=“admin” //超管帳號(hào),多個(gè)請(qǐng)用“|”分開
copy=“聊天室”
chatdate=0 //0代表ACCESS數(shù)據(jù)庫(kù),1代表SQL數(shù)據(jù)庫(kù)
%>
<%
以下語(yǔ)句的執(zhí)行是用function函數(shù)實(shí)現(xiàn)的,function函數(shù)過(guò)程無(wú)法使用“函數(shù)名稱=表達(dá)式”語(yǔ)句來(lái)返回值,而且function名稱可以當(dāng)成一個(gè)結(jié)果值。
function函數(shù)定義的語(yǔ)法如下:
Function 函數(shù)名稱([參數(shù)])
……
[函數(shù)名稱=表達(dá)式]
[Exit Function]
……
End Function
Function 函數(shù)是以 Function開頭以End Function 結(jié)束的程序代碼區(qū)塊,它實(shí)現(xiàn)的功能是調(diào)用一個(gè)已定義的Function過(guò)程。
注意:(1)參數(shù)表中的參數(shù)稱為實(shí)參,形參與實(shí)參傳遞與Sub過(guò)程相同。
(2)函數(shù)調(diào)用只能出現(xiàn)在表達(dá)式中,其功能是求得函數(shù)的返回值。
function tjip()
server_v1=Cstr(Request.ServerVariables(“HTTP_REFERER”))
server_v2=Cstr(Request.ServerVariables(“SERVER_NAME”))
if mid(server_v1,8,len(server_v2))<>server_v2 then
response.write “”
response.end
end if
end function
可以使用以下語(yǔ)法來(lái)調(diào)用指定的Function函數(shù),以下寫法是屬于“調(diào)用程序”;
變量=函數(shù)名稱([參數(shù)]) //返回值,表示以函數(shù)名稱當(dāng)成一個(gè)結(jié)果值
除此之外,本聊天室還增設(shè)了點(diǎn)歌功能,能夠使學(xué)生在學(xué)習(xí)過(guò)程中有個(gè)愉快的心情,這是區(qū)別于其他類型聊天室的特色所在。點(diǎn)歌系統(tǒng)具體實(shí)現(xiàn)的功能如下:
<%
Set fs=CreateObject(“Scripting.FileSystemObject”)
zjpath=Server.Mappath(“mp3”)
Set f=fs.GetFolder(zjpath)
Set fc=f.SubFolders
sss=0
For Each f1 in fc
fn=f1.name
if zj=“” and sss=0 then zj=fn
sss=sss+1
Response.Write “” & chr(13) & chr(10)
next
%>
在其中用到了前面介紹過(guò)的Response對(duì)象。具體進(jìn)入的點(diǎn)歌頁(yè)面如圖12:
圖 12
第4章 結(jié)果分析
到這里我的畢業(yè)設(shè)計(jì)就已經(jīng)接近完成了,這里面只是簡(jiǎn)單的介紹了一下在我所設(shè)計(jì)的內(nèi)容中較有特色的地方,比如聊天室中的點(diǎn)歌系統(tǒng),還有數(shù)據(jù)庫(kù)部分使用ACCESS直接來(lái)實(shí)現(xiàn)的。
ASP的開發(fā)簡(jiǎn)單而直觀,能方便地與HTML集成;利用內(nèi)置對(duì)象;很容易設(shè)計(jì)網(wǎng)上聊天室、留言板、電子商務(wù)系統(tǒng)等;利用ASP技術(shù),可以實(shí)現(xiàn)服務(wù)器數(shù)據(jù)庫(kù)、服務(wù)器文件系統(tǒng)的操作功能。
第5章 總結(jié)
省略
致謝:
省略
參考文獻(xiàn)
[1] 龍馬工作室 ASP+SQL Server 組建動(dòng)態(tài)網(wǎng)站實(shí)例精講 人民郵電出版社
[2] 張德靜 深入淺出ASP程序設(shè)計(jì)與開發(fā) 中國(guó)青年出版社
[3] 梁建武 陳語(yǔ)林 ASP程序設(shè)計(jì) 中國(guó)水利水電出版社
[4] 張澤虹 崇美英 數(shù)據(jù)庫(kù)原理及應(yīng)用ACCESS2003 電子工業(yè)出版社
[5] 關(guān)敬敏 沈立強(qiáng) SQL Server 數(shù)據(jù)庫(kù)應(yīng)用教程 清華大學(xué)出版社
[6] 李雁翎 數(shù)據(jù)庫(kù)技術(shù)及應(yīng)用ACCESS 北京 高等教育出版社 2005
[7] 松橋工作室 HTML+ASP網(wǎng)頁(yè)制作 北京 中國(guó)鐵道出版社 2005.7
5、資源下載
本項(xiàng)目源碼及完整論文如下,有需要的朋友可以點(diǎn)擊進(jìn)行下載。如果鏈接失效可點(diǎn)擊下方卡片掃碼自助下載。
| 本項(xiàng)目源碼 | 基于asp+access的網(wǎng)上聊天室設(shè)計(jì)與實(shí)現(xiàn)(源碼+文檔)_asp_BS架構(gòu)_網(wǎng)上聊天室.zip |
總結(jié)
以上是生活随笔為你收集整理的asp毕业设计—— 基于asp+access的网上聊天室设计与实现(毕业论文+程序源码)——网上聊天室的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Windows10下自定义桌面快捷方式图
- 下一篇: 〖全域运营实战白宝书 - 高转化文案速成