摘要:隨著Internet技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)論壇已經(jīng)成為人們自由交流的平臺之一。為了創(chuàng)造一個多功能、多內(nèi)容、多形式的論壇系統(tǒng),該文在介紹了系統(tǒng)背景、需求分析、系統(tǒng)目標(biāo)、數(shù)據(jù)庫系統(tǒng)等內(nèi)容之后,結(jié)合ASP.NET的相關(guān)內(nèi)容進(jìn)行網(wǎng)站設(shè)計(jì)。整個系統(tǒng)實(shí)現(xiàn)了用戶信息的注冊、登陸、查詢,帖子的發(fā)表、刪除、查詢、評論等功能。系統(tǒng)地介紹了論壇系統(tǒng)前臺及后臺的設(shè)計(jì),實(shí)現(xiàn)了網(wǎng)上論壇的動態(tài)管理,使得對信息的管理更加及時、高效,方便用戶及時上網(wǎng)瀏覽有用信息,發(fā)表自己對相關(guān)問題的看法。
關(guān)鍵詞:網(wǎng)絡(luò)論壇;數(shù)據(jù)庫;ASP.NET;SQL Sever 2005;Microsoft Visual Studio 2008
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)05-0938-04
Design and Implementation of A Network Online Forum System on ASP.NET
LOU Yue-xin
(Information Engineering College of Chang'an University,Xi-an 710021,China)
Abstract:With the continuous development of Internet technology, BBS has become one of the platform for people to communicate freely. In order to create a more functional, more content, more form BBS, In this paper,After the introduction of the background of the system, needs analysis, system target, database system and so on, combined with the related contents of ASP.NET to finish the website design.The system realizes user informations register, login,query and the articlesdelete, query,publication,comments and other functions. Introducing the design of the forum systems foreground and background ,achieving the dynamic management of BBS, making the management of information in a more timely, efficient.People can browse useful information and express their views.
Key words: network forum; database; ASP.NET; SQL Sever 2005; Microsoft Visual Studio 2008
隨著Internet技術(shù)的飛速發(fā)展,BBS(Bulletin Board System)已經(jīng)成為了人們在網(wǎng)絡(luò)上進(jìn)行自由交流的平臺,收到了人們的廣泛關(guān)注和喜愛。網(wǎng)絡(luò)論壇系統(tǒng)是一個基于Internet的信息交流系統(tǒng),可以讓來自世界各地的用戶通過Internet登錄系統(tǒng),瀏覽論壇中的所有帖子,并發(fā)表自己的看法建議,如此便可以豐富人們的知識,解決用戶的困擾。
ASP.NET是一項(xiàng)微軟公司的技術(shù),可以使用Microsoft公司的IDE產(chǎn)品Visual Studio進(jìn)行開發(fā)。因此,該文將介紹基于ASP.NET技術(shù)和SQL Sever 2005數(shù)據(jù)庫相結(jié)合的方法,來構(gòu)建論壇系統(tǒng)及后臺數(shù)據(jù)庫服務(wù)器,用戶可通過IE或其他瀏覽器進(jìn)行訪問。
1 需求分析
BBS系統(tǒng)應(yīng)覆蓋世界各個角落以及所有的用戶,因此系統(tǒng)應(yīng)具有用戶注冊,使用戶獲得自己的登錄名及密碼,從而進(jìn)入系統(tǒng)。所有用戶可以瀏覽系統(tǒng)中的全部帖子,同時可以發(fā)帖回帖,查詢所有用戶的信息、查詢帖子信息。此外,系統(tǒng)設(shè)有單獨(dú)的管理員,管理員具有更改用戶權(quán)限,刪除用戶,管理帖子信息,刪除帖子等功能。
2 系統(tǒng)設(shè)計(jì)
2.1 系統(tǒng)目標(biāo)
網(wǎng)絡(luò)在線論壇最終目的是為用戶提供一個良好的溝通交流平臺,得到用戶的及時反饋。為了滿足需求,系統(tǒng)應(yīng)實(shí)現(xiàn)以下幾個目標(biāo):
1) 系統(tǒng)界面友好、美觀:使用戶能夠更快的進(jìn)行網(wǎng)絡(luò)頁面的相應(yīng)操作。
2) 劃分用戶級別、將不同的權(quán)限劃分給不同的用戶:用戶和管理員應(yīng)具有不同的權(quán)限,以此來更好地進(jìn)行論壇的運(yùn)作。
3) 易于維護(hù)和擴(kuò)展:使用相應(yīng)的類進(jìn)行封裝,提高系統(tǒng)的可擴(kuò)展性,便于維護(hù)。
4) 系統(tǒng)運(yùn)行穩(wěn)定、可靠。
2.2 系統(tǒng)功能結(jié)構(gòu)
網(wǎng)絡(luò)在線論壇是一個ASP.NET程序,當(dāng)進(jìn)入論壇的首頁后,不論是已經(jīng)注冊的用戶,還是新注冊的用戶,其區(qū)別在于管理員和其他用戶的功能不同。因此,根據(jù)論壇具備的功能將結(jié)構(gòu)設(shè)計(jì)如圖1所示。
圖1 系統(tǒng)功能結(jié)構(gòu)
2.3 業(yè)務(wù)流程
無論是用戶還是管理員,其主要的不同點(diǎn)在于對于用戶信息和帖子信息有不同的功能。業(yè)務(wù)流程為:用戶進(jìn)入系統(tǒng)后,進(jìn)行注冊并完成登錄,此時判斷是普通用戶還是管理員二者擁有不同的功能。普通用戶可以發(fā)表帖子、回復(fù)帖子、瀏覽帖子以及瀏覽論壇其他內(nèi)容;而管理員在擁有普通用戶功能的同時還要完成用戶信息、帖子信息、回復(fù)信息的管理(更新、刪除等)。
2.4 開發(fā)環(huán)境
將系統(tǒng)分為三大板塊,即:網(wǎng)站、服務(wù)器端、客戶端。
1) 網(wǎng)站開發(fā)環(huán)境采用Microsoft Visual Studio 2008集成開發(fā)環(huán)境,使用的語言為ASP.NET和C#,后臺連接數(shù)據(jù)庫使用SQL Sever 2005數(shù)據(jù)庫管理系統(tǒng)。
2) 服務(wù)器端使用Windows 7操作系統(tǒng),Web服務(wù)器為Win7系統(tǒng)自帶的Internet信息服務(wù)(IIS)管理器。
3) 客戶端則使用IE瀏覽器或者其他瀏覽器。
2.5 數(shù)據(jù)庫設(shè)計(jì)
數(shù)據(jù)庫設(shè)計(jì)是建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng)的技術(shù),是信息系統(tǒng)開發(fā)和建議中的核心技術(shù)。數(shù)據(jù)庫設(shè)計(jì)的優(yōu)良將直接影響系統(tǒng)的效率。建立此系統(tǒng)數(shù)據(jù)庫并命名為db_Discuss。
2.5.1 數(shù)據(jù)庫概念設(shè)計(jì)
通過對系統(tǒng)進(jìn)行的需求分析、網(wǎng)站流程設(shè)計(jì)以及系統(tǒng)功能結(jié)構(gòu)的確定,規(guī)劃出系統(tǒng)中使用的數(shù)據(jù)庫實(shí)體對象分別為發(fā)帖信息實(shí)體、回帖信息實(shí)體、頭像信息實(shí)體以及用戶信息實(shí)體,由此設(shè)計(jì)數(shù)據(jù)庫系統(tǒng)E-R圖來描述系統(tǒng)的概念結(jié)構(gòu)。其E-R圖如圖2。
2.5.2 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)
考慮各個板塊及板塊之間的關(guān)系,用戶具有自己的相應(yīng)信息,而帖子則是由用戶進(jìn)行發(fā)表、回復(fù),之間存在多種依賴從屬的關(guān)系。再根據(jù)各自板塊的特有信息,設(shè)計(jì)四張表包含所有信息。四張表構(gòu)建如下:
1) tb_Users(用戶信息表):用戶ID、用戶姓名、用戶密碼、Email、頭像標(biāo)志。
2) tb_hf(回帖信息表):回復(fù)ID、回復(fù)的主題、回復(fù)的內(nèi)容、回復(fù)人姓名、回復(fù)時間。
3) tb_Content(發(fā)帖信息表):發(fā)帖人ID、標(biāo)題、內(nèi)容、發(fā)帖人姓名、發(fā)帖時間、最后回復(fù)時間、點(diǎn)擊量。
4) tb_touxiang(頭像信息表):頭像ID、圖片。
3 訪問數(shù)據(jù)庫設(shè)計(jì)
系統(tǒng)在運(yùn)行時,每一版塊的功能都需要調(diào)用后臺數(shù)據(jù)庫,如果每次調(diào)用數(shù)據(jù)庫將產(chǎn)生大量的代碼冗余及運(yùn)行效率的低下。因此,在開發(fā)項(xiàng)目中常以類的形式來組織,封裝一些常用的方法和事件,不僅可以提高代碼的重用率,也大大方便了代碼的管理。該文創(chuàng)建了一個公共類DB類,主要用來訪問SQL Server 2005數(shù)據(jù)庫,數(shù)據(jù)庫操作類主要的功能是連接數(shù)據(jù)庫。
主要代碼如下:
首先在命名空間區(qū)域引用命名空間:using System.Data.SqlClient;
連接數(shù)據(jù)庫代碼如下:
public class DB
{
public DB()
{//
// TODO: 在此處添加構(gòu)造函數(shù)邏輯
//}
public static SqlConnection createDB()
{
return new SqlConnection("server=‘服務(wù)器名;database=‘?dāng)?shù)據(jù)庫名;UID=‘登錄名;password='登錄密碼'");
} }
4 網(wǎng)站首頁設(shè)計(jì)
網(wǎng)絡(luò)論壇首頁主要顯示論壇中帖子的信息列表,并提供了網(wǎng)站菜單導(dǎo)航及用戶登錄和注冊功能,方便用戶進(jìn)行相應(yīng)的操作。網(wǎng)站菜單導(dǎo)航,包括用戶信息管理、修改當(dāng)前用戶信息、查詢用戶信息、查詢帖子、發(fā)表帖子、用戶注冊等。
首頁設(shè)計(jì)中使用的數(shù)據(jù)表為tb_Users、tb_Content兩個表,將發(fā)帖信息和用戶信息呈現(xiàn)在首頁中。并使用GridView控件的兩個關(guān)鍵技術(shù)——數(shù)據(jù)綁定技術(shù)和分頁技術(shù)。
在動態(tài)網(wǎng)站的開發(fā)過程中,經(jīng)常需要在表格控件中查看一些基本信息。網(wǎng)上論壇系統(tǒng)中使用分頁技術(shù)將帖子的基本信息分頁顯示在網(wǎng)頁中,方便對帖子信息的查看。用綁定技術(shù)來綁定注冊用戶發(fā)表的帖子的相關(guān)信息,如:帖子標(biāo)題、發(fā)帖用戶等。主要代碼如下:
SqlConnection con = DB.createDB();//聲明一個SqlConnection對象con,并建立數(shù)據(jù)庫連接
SqlCommand cmd = new SqlCommand();//聲明一個SqlConnection對象cmd,并實(shí)例化
cmd.Connection = con;
con.Open();//打開數(shù)據(jù)庫連接
SqlDataAdapter sda = new SqlDataAdapter("select * from tb_Content", con);
DataSet ds = new DataSet();
sda.Fill(ds, "tb_Content");//將發(fā)帖信息表填入到數(shù)據(jù)庫中
this.gvlt.DataSource = ds;//綁定數(shù)據(jù)源
this.gvlt.DataKeyNames = new string[] { "ContId" };
this.gvlt.DataBind();//綁定數(shù)據(jù)
con.Close();//關(guān)閉數(shù)據(jù)庫連接
使用分頁技術(shù)時,首先將AllowPaging屬性設(shè)置為True,以允許空間分頁,然后觸發(fā)PageIndexChanging事件,代碼如下:
this.gvlt.PageIndex = e.NewPageIndex;
this.aa();
5 注冊用戶信息設(shè)計(jì)
在網(wǎng)上論壇中發(fā)表帖子必須注冊為會員。在網(wǎng)站首頁中單擊“注冊”按鈕,進(jìn)入注冊頁面,在其中根據(jù)提示信息輸入相關(guān)信息。用戶可以選擇數(shù)據(jù)庫中自己的頭像在論壇中代表自己的形象,單擊“保存”按鈕,即注冊成功,并將此條信息添加到后臺數(shù)據(jù)庫中保存。
在注冊模塊中使用的數(shù)據(jù)表為tb_Users,將新信息添加到數(shù)據(jù)庫中。注冊過程中為了避免由于意外原因造成操作失誤,引入了事務(wù)。事務(wù)處理可以避免某種原因而導(dǎo)致數(shù)據(jù)的錯誤,確保插入數(shù)據(jù)最終結(jié)果的確定性和一致性。方法為:在注冊頁面中,應(yīng)用SqlConnection對象的BeginTransaction()方法創(chuàng)建名為st的SqlTransaction對象,然后將該對象分配給SqlCommand對象的Transaction屬性,最后通過該對象的Commit()方法提交事務(wù),利用SqlTransaction對象的Rollback()方法回滾事務(wù)。代碼如下:
try
{
//向用戶表中插入注冊信息
cmd.CommandText = "insert into tb_Users(UserName, UserPwd, Ename, Email, Logo) values('" + this.txtname.Text + "','" + this.txtpwd.Text + "','" + this.txtywname.Text + "','" + this.txtemail.Text + "','" + this.ddltouxiang.SelectedItem.Text.ToString() + "')";
cmd.ExecuteNonQuery();
st.Commit();//提交事物
}
catch
{
Response.Redirect("~/tisixinxi/shibai.aspx");
st.Rollback();//回滾事物
6 查詢信息設(shè)計(jì)
查詢信息模塊包括了用戶信息查詢以及帖子信息查詢。用戶可以根據(jù)不同的選項(xiàng)查看可公開的用戶信息,可以查詢較長時間前的帖子。
該模塊中,使用了數(shù)據(jù)綁定技術(shù)。
6.1 查詢用戶信息設(shè)計(jì)
用戶可點(diǎn)擊“查詢用戶信息”進(jìn)入用戶信息查詢界面,根據(jù)選項(xiàng)進(jìn)行想要查詢用戶的個人信息,包括姓名、英文名、郵箱等信息。查詢界面如圖3。
圖3 用戶信息查詢
6.2 查詢帖子信息設(shè)計(jì)
用戶在首頁可點(diǎn)擊“查詢帖子”進(jìn)入查詢帖子頁面,根據(jù)頁面提示輸入相應(yīng)信息,找到所要查找的帖子信息,快速進(jìn)行帖子查看。查詢帖子頁面如圖4。
圖4 帖子信息查詢
7 回帖設(shè)計(jì)
用戶可以點(diǎn)擊帖子詳細(xì)信息頁面中的的“我要回復(fù)”超鏈接后,再回帖子頁面的最下方顯示一個回帖信息,這時便可以回帖。
在回帖模塊中主要涉及了DataList控件的利用內(nèi)連接查詢結(jié)束、利用DataList控件實(shí)現(xiàn)分頁技術(shù)和數(shù)據(jù)綁定技術(shù)。
在系統(tǒng)中,我們既要顯示帖子的信息又要顯示回帖的信息,因此,要使用內(nèi)連接。內(nèi)連接是只返回同時和兩個表或結(jié)果集匹配的數(shù)據(jù)行。內(nèi)連接使用比較運(yùn)算符比較要連接列的值的連接,在SQL-92標(biāo)準(zhǔn)中,內(nèi)連接刻在FROM或WHERE子句中指定。內(nèi)連接查詢的語法格式如下:
Select fieldlist
From table[INNER] JOIN table1
On table.column = table1.column (下轉(zhuǎn)第969頁)
(上接第941頁)
8 結(jié)束語
本文詳細(xì)的介紹了網(wǎng)上論壇系統(tǒng)的整體設(shè)計(jì)思想與核心功能的實(shí)現(xiàn)方法及代碼。整個系統(tǒng)已設(shè)計(jì)完成,具有簡單、易操作的網(wǎng)頁界面設(shè)計(jì),以及較為全面的功能實(shí)現(xiàn)。用戶能夠通過瀏覽器訪問系統(tǒng)前臺網(wǎng)站,瀏覽有關(guān)信息、發(fā)表評論、查詢信息、網(wǎng)絡(luò)交流,集思廣益解決問題。同時,使用ASP.NET、SQL Sever 2005等應(yīng)用廣泛、功能強(qiáng)大的技術(shù)進(jìn)行開發(fā),非常方便地實(shí)現(xiàn)一系列的功能,具有較高的變換性和移植性,能更好地適應(yīng)Internet網(wǎng)上信息發(fā)布、信息交流和信息共享技術(shù)的發(fā)展與更新。
參考文獻(xiàn):
[1] 明日科技.ASP.NET項(xiàng)目開發(fā)案例全程實(shí)錄[M].北京:清華大學(xué)出版社,2011.
[2] 程文瑋.ASP.NET數(shù)據(jù)庫管理[J].廣州大學(xué)學(xué)報(bào),2005(2).
[3] 謝曉勇.Windows Server 2003 Web服務(wù)器的配置與應(yīng)用[J].電腦知識與技術(shù),2006(29).
[4] 廖春盛,潘戰(zhàn)生.ASP.NET DataGrid控件的使用[J].廣東職業(yè)技術(shù)師范學(xué)院學(xué)報(bào),2002(4).
[5] 李應(yīng)偉,姚素霞,景麗.ASP.NET數(shù)據(jù)庫高級編程(C#篇)[M].北京:清華大學(xué)出版社,2004.
[6] 張奇.基于ASP.NET的網(wǎng)絡(luò)課程開發(fā)技術(shù)應(yīng)用研究[D].重慶:重慶大學(xué),2005.