日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

asp毕业设计—— 基于asp+access的网上聊天室设计与实现(毕业论文+程序源码)——网上聊天室

發布時間:2023/12/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp毕业设计—— 基于asp+access的网上聊天室设计与实现(毕业论文+程序源码)——网上聊天室 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基于asp+access的網上聊天室設計與實現(畢業論文+程序源碼)

大家好,今天給大家介紹基于asp+access的網上聊天室設計與實現,文章末尾附有本畢業設計的論文和源碼下載地址哦。

文章目錄:

  • 基于asp+access的網上聊天室設計與實現(畢業論文+程序源碼)
    • 1、項目簡介
    • 2、資源詳情
    • 3、關鍵詞:
    • 4、畢設簡介
    • 5、資源下載

1、項目簡介

  • Internet網絡聊天室大多采用CGI技術編程實現,CGI有編程較復雜、效率低等缺點。本設計采用ASP技術和Access數據庫設計聊天室。ASP是基于服務端的一個腳本環境,具有編程簡單、功能強等特點,ASP腳本中采用了面向對象的編程技術,ASP內置的Request對象和Response對象可方便實現瀏覽器與服務器的數據交互。同時 ,ASP引入了兩個對象:Session對象用于保存用戶的個性化數據;Application對象則用于放置多用戶共享信息。這些都大大提高了制作聊天室的效率。

  • 2、資源詳情

    項目難度:中等難度
    適用場景:相關題目的畢業設計
    配套論文字數:16152個字34頁
    包含內容:整套源碼+完整畢業論文


    3、關鍵詞:

    ASP技術; IIS; Web服務器; Access數據庫; CGI

    4、畢設簡介

    提示:以下為畢業論文的簡略介紹,項目源碼及完整畢業論文下載地址見文末。

    引 言
    省略

    第1章 選題背景
    1.1來源及目的
    省略

    1.2課題研究的主要問題
    (一) 基于網絡環境的教學模式
    在基于網絡的教學環境下,做到使學生最大限度地發揮學習者的主動性、積極性,既可以進行個別化教學,以可以進行協作型教學(通過各種協作式教學策略的運用而實現),還可以將“個別化”與“協作型”二者結合起來,形成一種全新的教學模式。這種教學模式可以完全按照個人的需要進行,不論是教學內容、教學時間、教學甚至指導教師都可以按照學生自己的意愿或需要進行選擇,使每個學生應完成下列功能:
    a. 查詢和訪問網絡教學服務器
    b. 和教師或其他同學直接通訊(進行咨詢、輔導、討論和交流)
    c. 和教師或其他同學共享或共同操作某個軟件或文檔資料的內容

    (二) 基于網絡教學環境的教學策略

  • 傳授式策略:包括利用雙向可視電話系統的同步式集中講授,和利用電子郵件或下載教學內容、瀏覽頁面等異步式講授。
  • 討論式策略:可通過BBS系統參加討論。
  • 個別輔導策略:可通過Java語言編寫的實時運行的CAI課件來實現,也可通過自由下載的CAI課件實現。
  • 探究式教學策略:是指基于網絡環境中通過電子郵件或郵件列表的學習方式,設立一些由特定的學生對象來解決的問題,要求學生解答。
  • 協作式教學策略:基于網絡協作學習是指利用計算機網絡以及多媒體等相關技術,由多個學生針對同一學習內容彼此交互和合作,以達到對教學內容比較深刻的理解與掌握的過程。
  • (三) 基于網絡環境的教學系統結構
    基于網絡的教學系統是一個由硬件、軟件、教學管理機構組成的一體化有機系統:

  • 硬件結構是支撐網絡教學系統的物質基礎是校園網和Internet,應具有以下幾個模塊:接入模塊、交換模塊、服務器模塊、網絡管理與計費模塊、課件制作與開發模塊、雙向交互同步教學模塊。
  • 軟件結構是基于網絡的教學系統支持教學的應用軟件:
    (1) 多媒體授課系統
    (2) 多媒體學習系統
    (3) 師生交互工具
    (4) 網絡題庫管理系統
    (5) 作業批閱系統
    (6) 自動答疑系統
    (7) 教學資源庫管理系統
    (8) 考試與評價系統
    3 教學管理機構:基于網絡教學系統同樣需要一個機構來維持它的運行,進行教學研究、管理和教學工作。
  • 1.3包含的主要技術問題
    在以上基于網絡的教學系統支持教學的應用軟件中,這里主要介紹的技術問題是在網絡教學中利用ASP技術+Access數據庫制作網絡教學的互動平臺。

    1.3.1關于asp技術的介紹
    當前隨著網絡技術的飛速發展,利用網絡實行遠程教育已是發展趨勢,而發展網絡遠程教育,首先必須建立一個合理的遠程教育平臺,使學生可以靈活接入網絡,參與學習。這里就是利用ASP (Active Server Pages) 技術完成對基于Web的網絡教學平臺的構建。

    ASP(Active Server Pages) 動態網頁,是微軟公司推出的一種通用網關接口的技術。ASP本身并不是一種腳本語言它只是提供了一種使鑲嵌在HTML頁面中的腳本程序得以運行的環境。我們可以通過ASP結合HTML語言、ASP指令和ActiveX元件以及數據庫等方面的知識,使用自己的Web服務器創建并運行動態交互式Web站點。用戶端只要使用可執行HTML代碼的瀏覽器,即可瀏覽Active Server Pages所設計的網頁內容。Active Server Pages所使用的腳本語言(VBScript,JScript)均在Web服務器端執行,用戶端的瀏覽器無需能夠執行這些腳本語言。

    1.3.2關于數據庫的介紹
    省略

    第2章 方案論證
    2.1方案的分析及特點
    Microsoft Access數據庫是微軟公司的Office辦公套件的一個重要組件。Access數據庫屬于關系數據庫的一種,使用它不需要進行過多復雜的編程,利用所提供的向導和一些圖形化的界面和工具就能完成小型數據庫管理系統的設計和實現。

    Access數據庫提供了7種對象來完成數據庫的功能。這7種對象分別為表、查詢、窗體、報表、頁、宏和模塊。Access數據庫在計算機中以數據庫文件(.mdb)存儲。在這7種對象中,表用來存貯數據,對數據進行產看和分析,窗體為數據的輸入等操作設置友好的外觀。報表以格式化的形式來對外展示數據,數據訪問頁將數據發布到Web上,宏將自動完成一組操作,模塊能自動完成常規任務并創建業務解決方案。

    Access 數據庫管理系統由于與Microsoft Office應用程序的高度集成,為用戶提供友好的用戶界面和方便快捷的運行環境。Access 數據庫管理系統具有獨特的數據庫窗口、快速訪問特定的目標文件、名稱自動更新、條件格式、數據庫轉換、子數據表、導出數據到Excel和Word文本文件、窗體的改進、數據訪問頁、壓縮關閉數據庫、示范數據庫和與SQL Server協同工作的功能。

    第3章 過程設計論述
    3.1Access數據庫設計階段:
    省略

    3.1.1關系模型
    省略

    3.1.2數據類型
    省略

    3.2 ASP的設計階段
    3.2.1 ASP中的數據引用
    在ASP中可通過ADO對象(ActiveX Data Object,簡稱ADO)與SQL語言(Structured Query Language,結構化查詢語言)做到存取服務器端數據庫(Web Database)的數據。ADO主要是提供一個存取Web Database的方法。ADO是ASP重要的內置對象之一,凡是由ODBC或OLE DB驅動程序所能存取的數據庫。這些數據庫包括dBase、FaxPro、Excel、Access等。ADO是由ADODB對象:Connection、command、parameter、RecordSet、Field、Properties、Error以及4個數據集合:Paramter、Fields、Properties、Error所構成。本書是針對未學過程序語言的初學者,因此只介紹基本常用的對象與數據集合,至于未介紹的部分參考其他有關ASP的進階書籍。本章將會介紹Connection、Command、Recordset對象,其功能說明如下:

  • Connection:用來打開或關閉與數據庫的連接。在使用任何數據庫以前,程序首先要做的是與一個數據庫建立連接,然后才繼續下一步的數據庫操作。而Connection對象就是用來與數據庫連接的,通過它,程序就可以與各種各樣的數據庫相連接。
  • Command:用來查詢、添加、修改、刪除數據庫的記錄,或是調用ACCESS的存儲過程。負責對數據庫提出請求。
    3.Recordset:用來讀取數據庫的記錄,或是添加、修改、刪除數據庫的記錄。負責瀏覽與操作從數據庫取得的數據,也就是說,Recordset對象可以用來表示的是來自基本表或命令執行結果的記錄全集。在使用ADO時,通過Recordset對象可對幾乎所有的數據進行操作,所有Recordset對象均使用記錄行和字段列進行構造。
  • 3.2.2 ASP的運行環境及方式
    省略

    3.2.3具體實現方式及代碼講解
    文字聊天室,有管理員功能,可踢人、提升管理員、查閱用戶信息,文字聊天,私聊,支持表情,點歌等功能。聊天室用Access數據庫和ASP技術制作。

    聊天室的設計都離不開數據庫,因為服務器要把每個聊天室成員的發言、姓名(或昵稱)、發言時間、表情等存放起來,以便各個瀏覽器讀取。

    Access數據庫就可以實現這些功能。在Access數據庫中建立一個數據庫列表,該表至少要具備三個數據字段:用戶姓名或昵稱、時間、談話內容。如果要記錄多個信息,想說話表情,需要的顯示顏色等則應再適當增添相應的字段。另外,如果支持悄悄話,還應當附加地址欄應以存放每個用戶的IP地址。例如本聊天室:
    利用Access建立一個名為“聊天室.mdb”的數據庫,在該數據庫中建立一個名為“chatroom”的數據表,其結構簡單如下所示:
    字段名稱 數據類型 默認值
    用戶昵稱 文本 ——
    發言時間 日期/時間 Now()
    發言內容 備注 ——

    在表的基礎上要建立一個查詢,因為傳遞至瀏覽器端的不能室所有的內容而是一部分,如最近十分鐘內的談話。因而該查詢所需要的語句為:
    SelectFrom chatroom where datediff(“n”[發言時間],now()<10 Order by 發言時間Desc)
    同時,數據庫訪問組件訪問服務器數據庫可以通過瀏覽器查詢服務器的后端數據庫得到,ASP通過內置的數據庫訪問組件(ADODB)實現,ADO即ActiveDataObject,是專門針對Internet和Web數據庫開發的,利用ADO查詢數據庫的步驟是:
    (1)設置DSN"ADODB通過ODBC工作,因此要在ODBC中設置DSN(數據源名)。
    (2)生成ADODB組件實例為:
    SetConnect=Server1CreateObject(/ADODB1Connection0)
    (3)連接數據庫利用ADODB的成員函數Open和先前設定的DSN可以和數據庫連接,ConnectOpen(/DSN=dsnname;UID=userID;PWD=password)
    (4)執行查詢指定Access查詢語句:Access =/selectfromtablename
    雖然ASP支持許多不同的程序語言(VBScript、Jscript、PerlScript),不過這些程序語言中,以VBScript對ASP的支持最為完整,使得VBScript成為ASP默認使用的程序語言。ASP程序代碼可以將VBScript視為特殊的HTML標記。因為,只要在<%與%>之間的文字語句,都被視為在服務器端執行并以VBScript所編寫ASP的程序代碼,這樣就可以使用<%~%>來取代

    在ASP中常用的內置對象有5個分別是Response對象、Request對象、Session對象、Application對象和Server對象

    關于Response對象的介紹
    每一種程序語言或開發工具都有一定的與用戶溝通的函數,Active Server Page內嵌兩種對象,分別是超文本鏈接傳輸協議的請求和響應對象。在ASP中負責將信息傳遞給用戶對象的就是Response對象。Response對象用于動態響應客戶端請求(Request),并將動態生成的相應結果返回到客戶瀏覽器中,使用Response可以動態創建Web頁面,改變HTTP標題頭,還可以自動將客戶端重定向(Redirect)到一個指定的頁面中,另外,如果要向客戶端寫入Cookies時,Response對象也是一種很好的工具。

    其中collection表示Response對象的集合,property表示Response對象的屬性,method表示Response對象的方法。

    具體實現的語法如下:
    Response.Write方法
    語法
    Response.Write “sendingdata”
    功能
    將數據或字符串傳送到客戶端瀏覽器。

  • Write是Response的方法;sendingdata參數代表欲傳送的數據。
  • Response.Write傳送的數據為變體型(Variant)。若傳送的數據是字符串,字符串前后必須使用“”雙引號,將字符串包括起來;若字符串中間含有雙引號必須重復雙引號一次。
  • (1)如果輸出的數據是HTML標記,編寫可省略Response.Write(2)VBScript將頭尾用雙引號框住的數據會視為字符串來處理。(3)Response.Write傳送HTML標記,若只將頭尾用雙引號框住,里面的雙引號沒有去掉,執行時會發生錯誤的。這是因為在VBScript語法中,將兩個雙引號括起來的部分將視為字符串處理。
  • 使用單獨一行的Response.Write方法傳送數據或字符串至客戶端,若超過1022字符,將會出現錯誤。如果傳送超過1022個字符的字符串,請分成多行Response.Write輸出,或者將字符串存到變量中,再用Response.Write將變量輸出。
    可使用“=”來代替Response.Write方法。
    Response.End方法
    語法
    Response.End
    功能
    結束ASP程序的執行。
  • 當執行至Response.End,則接在此行后面的程序將不再執行。
    在聊天室中具體是這樣實現的:
    <%
    Response.Buffer =true
    if not isarray(session(“dv_user”)) then
    Response.Write “未登陸不能發言!”
    Response.End
    這是在登陸之前的說明部分,用到了Response.Write方法。
    Response.Redirect方法
    語法
    Response.Redirect“URL”
    功能

  • URL參數用來指定網頁所在網站文件夾與文件名,記得文件名要包含擴展名。
  • Response.Redirect方法必須在數據還沒有傳送到客戶端的瀏覽器之前使用,否則會出現錯誤的情況。譬如使用Response.Redirect方法將瀏覽器連接到指定的網站或ASP文件時,應寫在Response.Redirect方法之前才不會發生錯誤。
    關于Request對象的介紹
    Request對象的功能主要是用來取得客戶端瀏覽器(Browser)所傳送到服務器端的信息。譬如當我們在窗體上填完數據,按下“傳送”按鈕(Submit),則Request對象會根據窗體的名稱取得客戶端所鍵入的數據。其語法如下:
    語法
    Value=Requesr.collection | method |property
    功能
    取得客戶端窗體各組件所輸入的數據。
  • collection參數:是收集數據的集合(collection),我們可以將這些集合視為Request對象的子對象,或稱為集合對象,下面即為Request對象所提供的5個字對象的功能說明:
    (1) Form集合用來取得客戶端窗體上所傳過來的信息。
    (2) QueryString集合用來取得客戶端附加子阿ASP網址后的參數信息。
    (3) ServerVariable集合用來取得服務器短的環境變量。
    (4) Cookies集合用來取得客戶端保存的Cookies值。
    (5) ClientCertificate集合用來取得客戶端的身份認證信息。
  • method和property參數是指該對象的方法與屬性。
  • variablename參數隨著子對象的不同而有不同的規定。
  • 在ASP程序中使用多個Request的子對象,子對象間若使用相同的variablename(指變量名稱或窗體字段名稱),且省略接在Request對象后面的子對象名稱不寫,ASP會按照QueryString、Form、Cookies、ServerVariable先后次序來存取數據。
    Request.Form集合
    語法
    Request.Form(“filedname”)
    功能
    取得客戶端窗體各組件所輸入的數據。
  • filedname為窗體的組件名稱。若窗體的傳送方式為method=”post”時可以使用Request.Form(“filedname”)來取得客戶端傳來窗體上指定字段所填寫的數據。此種方式可傳送較大量的數據(數據長度可大于256bytes),但速度較慢。當按下窗體上面的“傳送”按鈕時,瀏覽器會先將窗體的數據放在表頭,也就是~之間,然后再將數據一次傳送給服務器端。
  • Request.Form(“filedname”)中的Form集合可省略不寫,因此該語句可簡寫成Request. (“filedname”)。
    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”)
    注:這是聊天室登陸之前的說明部分,多次用到了Request.Form(“filedname”)的對象。
    Request.QueryString集合
    Request.QueryString集合(或稱子對象)的功能和Form差不多,唯一的差異在于前者可以直接取得加在地址后面的附加參數,這些參數通常以“?” 問號來連接,也就是說當在窗體輸入數據完畢,單擊“傳送”按鈕后會將窗體內的數據以問號開頭,直接輸入瀏覽器的地址欄“http://…?…”。Request.QueryString的語法如下:
    語法
    Request.QueryString(”filedname”)
    功能
    取得客戶端窗體所輸入的信息。
  • filedname是指窗體的字段名稱。當窗體的傳送方式設為method=”get”,即可使用QueryString集合來取得客戶端所傳來的信息。此種方式較適合傳送較小的數據,效率較快。
  • 若窗體的傳送方式設為method=”get”,按下“傳送”按鈕時,會將窗體所有的數據以問號開頭連接在地址后面,再將整個數據一起傳送給服務器端。
  • Request.QueryString(”filedname”)可簡寫成Request(”filedname”)。
    Request.ServerVariables集合
    ASP程序中可以通過Request.ServerVariables來取得服務器端環境變量名稱的內容,其語法如下:
    語法
    Request.ServerVariables(“ServerEnviVariablname”)
    功能
    取得服務器端的環境信息給客戶端。
    ServerEnviVariablname參數是指服務器端的環境變量名稱。
    (1) 取得服務器端的Domain Name或IP。
    Request.ServerVariables(“Server_Name”)
    (2) 取得此網頁所在的虛擬路徑(不包含Domain Name及IP)。
    Request.ServerVariables(“Path_Info”)
    對session對象進行介紹:
    Session對象是ASP所提供的通用對象,Session和Application不同的是,Application是所有客戶端的共享對象,而Session對象是屬于個別客戶端所專用的,與就是說所打開的瀏覽器即表示為一個客戶端的Session對象。
    Session對象的使用方法
    語法1
    Session(”sessionname”)=settingdata
    語法2
    Variablename=Session(“sessionname”)
    功能
    保存個別客戶端的私有數據。
  • 語法1:設定給Session(“sessionname”)數據為變體型(Variant),但所設定的數據若為字符串型需使用雙引號將字符串包括起來,settingdata參數表示欲設定的數據。
  • 語法2:將Session(“sessionname”)的數據指定給Variablename,Variablename的參數為變量名稱。
  • 使用Session來存放單一用戶的變量值,可以在多個網頁共享Session。例如本聊天室記錄用戶的名字。就是使用這個對象。
    當用戶要進行發言的時候執行的流程圖是這樣的,如圖8:它的實現過程也是由Session對象完成的。
  • 圖8
    同時,當用戶瀏覽網站時,若希望用戶都能先瀏覽網站的首頁之后,再由首頁分別連上其他的網頁。其做法就是使用Session對象在首頁設定一個Session標志,這個標志用來表示用戶是否來到首頁:而其他頁可以在程序最開頭先判斷Session標志是否為Empty,若成立表示用戶還沒有瀏覽首頁,此時即再重新連到首頁即可。例如本聊天室就在首頁開頭編寫Session(”YNCome”)語句,用來表示用戶是否連上首頁的標志,在Session(”YNCome”)為True,表示用戶已經來過首頁了
    Session(”YNCome”)=True
    可在其他副頁開頭編寫如下語句,以下程序先判斷Session(”YNCome”)是否為Empty,若成立表示用戶還沒有連上首頁,此時會執行Response.Redirect”index.asp”在重新導向首頁。
    If Session(”YNCome”)=Empty then
    Response.Redirect”index.asp”
    End if
    聊天室的首頁界面見圖9:

    圖9
    通過提交按鈕來激發index.asp.該ASP文件主要來保證在聊天室里沒有兩個用戶是同名的。用戶提交信息后,該文件打開chat.mdb檢查是否已經有該用戶名,如果有但密碼不對就提醒用戶重新輸入密碼,如果沒有那么用戶就順利進入了聊天室。進入聊天室界面的功能由下列語句完成:

    <% if session("netname")="" thenresponse.redirect "index.asp" end if if Application("chat_line")="" then Dim sd_init(50)for i=1 to 48sd_init(i)=0nextsd_init(49)=1sd_init(50)="數組初化成功!"Application("chat_sd")=sd_initApplication("chat_line")=1Application("onlinelist")="" end if if session("dv_user")=dv_user else dv_user=session("dv_user") end if if Instr(LCase(Application("onlinelist")),LCase(dv_user(0)&" "))=0 then Application.lock Application("onlinelist")=Application("onlinelist")&dv_user(0)&" " Application.UnLock if dv_user(3)=0 then Application.lock Application("chat_sd")=newsd Application.UnLock end if 'dv_user(1)=Application("chat_line") dv_user(3)=1 session("dv_user")=dv_user end if %>

    進入聊天室的主頁面見圖10:

    圖10
    其中驗證是否為管理員的語句由下列代碼實現:

    if rs(2)=True thensession("chatadmin")=Trueend ifchatmatname=split(mastername,"|")for i=0 to UBound(chatmatname)if session("netname")=chatmatname(i) thengjmaster=Trueend ifnextif gjmaster=True thensession("chatadmin")=Trueend ifend ifrs.closeset rs=nothingresponse.redirect "index.asp"end if

    對于沒有私聊功能的聊天室來說,其實每個用戶的屏幕上顯示的內容是一樣的。所以只要在Global.ASA中建立一個公共變量來儲存聊天內容,然后將該變量的內容顯示在客戶端的屏幕上就可以了。在ASP中,只要建立一個Application對象的變量,然后對其讀寫就可以實現了。寫入代碼如下:

    <% Application.Lock Application(dChat)Contentd)=Application) (dChat)Contentd)&NewMsg Application.UnLock %>

    以上代碼只需放入發送消息的ASP文件中就可以,其中,NewMsg為一個儲存新聊天內容的變量,它用來儲存用戶新發出的消息在網絡上。發送消息可能是一個并發事件,如果多個用戶同時更改這個Application變量就會發生錯誤。所以,上述代碼中使用了Application.Lock和Application.UnLock來避免此問題的發生。而讀出此變量內容并將其顯示在網頁上則較為簡單,只要將下述代碼放入用于顯示的ASP文件中即可:
    <%=Application(dChat)Contentd) %>
    知道了基本聊天室的實現方法,我們再來看看如何實現具有私聊功能的聊天室。對于一個擁有私聊功能的聊天室與沒有此功能的聊天室最大的區別是:允許客戶端的屏幕顯示不同的內容,而不象沒有此功能的聊天室那樣每個人的屏幕顯示的內容都是一樣的。這樣,我們就沒有辦法使用前面所提到的那種方法將聊天記錄存入一個Application對象的變量,然后再讀取它的值,就必須多建幾個變量來解決這個問題。通過以下代碼來解決:
    -這是發送方代碼
    <%Application.Lock
    Application(Session(dDestnamed))=-
    Application(Session(dDestnamed))&PrivateData
    Application.UnLock%>
    -這是接收方代碼
    <%=Application(Session(dNicknamed))%>
    在上述代碼中,Session(dDestnamed)用來存放目的用戶的用戶名;PrivateData用來存放私聊內容;Session(dNicknamed)用來存放用戶的昵稱(可以在用戶登錄的時候將用戶的昵稱寫入該變量),因為Session對象的變量是私有的,所以每個用戶的Session(dNicknamed)變量的值是不相等的。發送方只要將目的用戶的昵稱寫入Session(dDestnamed),然后通過上述列出的發送方代碼就可以將私聊內容發至想要發送的對象,而其他用戶是收不到此內容的。例如:Session(dDestnamed)的值為ABC,那么在發送方就會產生一個名為Application(dABCd)的變量在接收方,如果他的Session(dNicknamed)的值也為ABC的話,那么接收方的那個Application對象的變量就為Application(dABCd)。如此一來就收到了發送方發來的私聊內容,而其他用戶則收不到此內容,這就實現了聊天室私聊的功能。私聊的實現見圖11:

    圖11
    添加Global.asa文件里面的代碼。這部分代碼主要處理Application_onStart事件,在此事件中,定義了一個有15個元素的數據,并把它賦給了一個Application對象的屬性。Global.asa文件的內容如下。

    在AspChat.asp文件中添加代碼。注意,要把這部分代碼添加在主頁中的兩條平線之間,也就是文本中的兩個


    之間。程序首先判斷申請這主頁時,是否用的是“post”方法,因為本例中窗口的提交方法是“post”。而一般第一次申請這幅主頁時,用的是“get”方法。所以如果采用的是“post”方法的話,就說明是某一瀏覽者在提交自己的談話內容時的重新申請,這就要進行處理,因為又有新的談話內容了。否則,說明某一瀏覽者第一次申請此主頁,并沒有提交什么談話,因此只需要把當前的談話內容顯示出來就可以了。
    說明:ASP中,提供了兩個共享的對象Application和Session,Application對象可以用來記錄不同客戶端共享數據變量,
    這里介紹Application的語法及功能。
    語法1
    Application(“Applicationname”)=settingdata
    語法2
    Variablename=Application(“Applicationname”)
    功能
    記錄所有客戶端共享的對象。

  • 語法1:設定給Application(“Applicationname”)數據為變體型(Variant),但所設定的數據若為字符串需使用雙引號將字符串包括起來,settingdata參數表示欲設定的數據。
  • 語法2:將Application(“Applicationname”)的數據指定給variablename,variablename參數為變量名稱。
    Application雖然是所有客戶端的共享對象,但是Application也有它的有效范圍。Application的有效范圍就是虛擬目錄,就是本聊天室的默認虛擬路徑C:\Inetpub\wwwroot\ASP聊天室。
    其中聊天室的所有客戶都要共享信息,所以不可避免的要用到具有應用程序級的變量的對象Application,這是建立的Chat程序的關鍵所在,所有的談話數據都存放在一個應用程序級變量中,以便讓所有的客戶讀取。用所學過的Request對象獲取客戶所輸入的談話,并保存在變量talk中,然后將talk值存入應用級變量show中,如下:
    <%Application(“show”)=talk&Application(“show”)%>
    接下來要考慮的是當不同的客戶同時向Chat應用程序進行操作的時候如何處理。這個問題其實與在數據庫中的兩個用戶同時寫入同一個記錄一樣,如果兩個用戶同時對同一個應用程序級變量進行寫操作,則一個用戶所做的修改會被另一個用戶的操作所覆蓋,所以,如果對Application對象數據的并發訪問不采取一定的措施,則會導致當兩個用戶試圖同時對ASP聊天室應用程序提交時,一個用戶提交的內容會被另一個用戶提交的內容所覆蓋,在被參加到會話中的任何人看到之前就消失了。為了避免這類問題的出現,我們需要使用Application對象中的Lock屬性來約束只允許當前的用戶編輯或增加Application對象的屬性,這樣從用戶開始修改應用程序級變量開始,到Application對象被顯式解除鎖定為止,Application對象的屬性只能被該用戶用編輯,如果此時有其他用戶請求編輯Application對象,則這些用戶要排隊等待,直到應用程序被打開為止。
    Application.lock
    Application(“show”)=talk&Application(“show”)
    Application.Unlock
    其中進入聊天室管理頁面時是使用這樣的語句實現的
    <%
    online=Application(“onlinelist”)
    online=split(online," “)
    for i=lbound(online) to ubound(online)-1
    Response.Write “”&online(i)&”"
    next
    %>
    p align =”center”>一個asp聊天室〈/font〉


    <%
    處理輸入
    if Request.ServerVariables(“Request_Method”) = ”POST” then
    標明講話者
    if len(Request(“txtWho”)) > 0 then
    Session(“ssWho”) = Request(“txtWho”)
    End if
    Application.Lock //將Application對象鎖定,禁止其他客戶端存取Application變量
    創建本地引用指針
    mlCounte r= Application(“giCounter”)
    maChats = Application(“gaChats”)
    如果寫入的行數超過10,則重新開始記數。
    If mlCounter > 9 then
    MlCounter = 0
    End if
    增加用戶的輸入,計數器加1
    maChat(mlCounter)= Session(“ssWho”)&”:”&Request(“txtCents”)
    mlCounte r= mlCounter +1
    把局部變量設置為在應用范圍內有效。
    Application(”giCounter”)=mlCounter
    Application(“gaChats”)=maChat
    Application.Unlock //將Application對象解除鎖定,允許其他客戶端存取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的內容初始化。也就是當瀏覽者輸入過一次自己的姓名以后就不用再次輸入了,為了區分每個不同的瀏覽者,在這里使用了“Session”對象。利用Session(“ssWho”)記載瀏覽者的姓名。下面的代碼直接寫在以上代碼的下面,存入AspChat.asp中。

    發言:

    對象:

    聊天室的數據庫配置它里面包括基本配置頁,修改內有說明,可修改聊天室名稱和數據庫類型(目前默認的為ACCESS數據庫),具體的實現方式如下代碼所示: <% dim chatname,mastername,copy,chatdate,useragent

    chatname=“聊天室” //聊天室名字
    mastername=“admin” //超管帳號,多個請用“|”分開
    copy=“聊天室”
    chatdate=0 //0代表ACCESS數據庫,1代表SQL數據庫
    %>
    <%
    以下語句的執行是用function函數實現的,function函數過程無法使用“函數名稱=表達式”語句來返回值,而且function名稱可以當成一個結果值。
    function函數定義的語法如下:
    Function 函數名稱([參數])
    ……
    [函數名稱=表達式]
    [Exit Function]
    ……
    End Function
    Function 函數是以 Function開頭以End Function 結束的程序代碼區塊,它實現的功能是調用一個已定義的Function過程。
    注意:(1)參數表中的參數稱為實參,形參與實參傳遞與Sub過程相同。
    (2)函數調用只能出現在表達式中,其功能是求得函數的返回值。

    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
    可以使用以下語法來調用指定的Function函數,以下寫法是屬于“調用程序”;
    變量=函數名稱([參數]) //返回值,表示以函數名稱當成一個結果值

  • 如上語法調用擁有返回值的Function函數,會將函數返回值的結果指定給等號左邊的變量,表示可以使用函數名稱當成一個結果值。
  • “調用過程“后面所接的參數行稱為實參,而被調用過程的Function函數所設定的參數行稱為形參。
  • 調用與被調用的函數名稱必須相同,但兩者的參數名稱可以不相同。
  • 調用過程的實參可以是常數、變量、表達式、數組、對象。被調用Function函數的形參不可以是常數或表達式,其他上述所提的變量、數組、對象皆可以當作是被調用函數的形參。
    除此之外,本聊天室還增設了點歌功能,能夠使學生在學習過程中有個愉快的心情,這是區別于其他類型聊天室的特色所在。點歌系統具體實現的功能如下:
    <%
    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
    %>
    在其中用到了前面介紹過的Response對象。具體進入的點歌頁面如圖12:
  • 圖 12
    第4章 結果分析
    到這里我的畢業設計就已經接近完成了,這里面只是簡單的介紹了一下在我所設計的內容中較有特色的地方,比如聊天室中的點歌系統,還有數據庫部分使用ACCESS直接來實現的。
    ASP的開發簡單而直觀,能方便地與HTML集成;利用內置對象;很容易設計網上聊天室、留言板、電子商務系統等;利用ASP技術,可以實現服務器數據庫、服務器文件系統的操作功能。

    第5章 總結
    省略

    致謝:
    省略

    參考文獻

    [1] 龍馬工作室 ASP+SQL Server 組建動態網站實例精講 人民郵電出版社
    [2] 張德靜 深入淺出ASP程序設計與開發 中國青年出版社
    [3] 梁建武 陳語林 ASP程序設計 中國水利水電出版社
    [4] 張澤虹 崇美英 數據庫原理及應用ACCESS2003 電子工業出版社
    [5] 關敬敏 沈立強 SQL Server 數據庫應用教程 清華大學出版社
    [6] 李雁翎 數據庫技術及應用ACCESS 北京 高等教育出版社 2005
    [7] 松橋工作室 HTML+ASP網頁制作 北京 中國鐵道出版社 2005.7


    5、資源下載

    本項目源碼及完整論文如下,有需要的朋友可以點擊進行下載。如果鏈接失效可點擊下方卡片掃碼自助下載。

    序號畢業設計全套資源(點擊下載)
    本項目源碼基于asp+access的網上聊天室設計與實現(源碼+文檔)_asp_BS架構_網上聊天室.zip

    總結

    以上是生活随笔為你收集整理的asp毕业设计—— 基于asp+access的网上聊天室设计与实现(毕业论文+程序源码)——网上聊天室的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。