在線問答系統(tǒng)_第1頁
在線問答系統(tǒng)_第2頁
在線問答系統(tǒng)_第3頁
在線問答系統(tǒng)_第4頁
在線問答系統(tǒng)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 信息管理系統(tǒng)分析與設(shè)計課程設(shè)計題 目 在線問答系統(tǒng) 班 級 信息111 學(xué) 號 201152275113/201152275117 學(xué)生姓名 XXX 同組成員 XXX 指導(dǎo)教師 XX 編寫日期 2014.7.10 目錄1 開發(fā)計劃21.2開發(fā)背景21.3 原系統(tǒng)概述21.4目標(biāo)系統(tǒng)概述21.5 可行性分析21.6 項目計劃32 需求分析32.1需求定義說明書42.2數(shù)據(jù)流程圖42.3 數(shù)據(jù)字典53 概要設(shè)計73.1系統(tǒng)功能模塊結(jié)構(gòu)圖73.2數(shù)據(jù)庫概要設(shè)計73.3代碼設(shè)計103.4輸入/輸出界面設(shè)計104 提問模塊設(shè)計(XXX)124.1 提問模塊主頁展示124.2 提問模塊技術(shù)分析135 發(fā)

2、布信息界面(XXX)145.1 代碼設(shè)計145.2 代碼設(shè)計技術(shù)分析166 提問模塊設(shè)計(XXX)176.1提問模塊測試設(shè)計176.2 提問模塊實際測試操作176.3 測試評價184 回復(fù)模塊設(shè)計(XXX)184.1 問題回復(fù)模塊分析185 編碼(XXX)205.1 回復(fù)模塊的關(guān)鍵技術(shù)205.2 回復(fù)模塊相關(guān)代碼216 測試與調(diào)試(XXX)246.1 回復(fù)模塊測試設(shè)計246.2 回復(fù)模塊實際測試操作247 對軟件分析、設(shè)計及實施方面的評價及體會258 組長對小組工作及成員的評價261 開發(fā)計劃1.1項目名稱在線問答系統(tǒng)1.2開發(fā)背景讀者朋友們對國內(nèi)知名的大型搜索引擎網(wǎng)站百度比較熟悉,其中“百度

3、知道”這個功能非常吸引人,我們在百度上搜索的資料幾乎都是來自于“百度知道”根據(jù)現(xiàn)行社會大多數(shù)用戶的相關(guān)需求,因此開發(fā)了“明日知道問答系統(tǒng)”這個網(wǎng)站,實現(xiàn)的功能及流程操作和“百度知道”相似。在網(wǎng)絡(luò)應(yīng)用中,互動性、人性化的網(wǎng)絡(luò)服務(wù)已成為吸引訪問者、提高網(wǎng)站訪問量、增加客戶轉(zhuǎn)發(fā)度的一種手段,也是未來網(wǎng)絡(luò)服務(wù)發(fā)展的趨勢。1.3 原系統(tǒng)概述 在沒有互聯(lián)網(wǎng)的情況下,人們尋求解決問題的方案唯一途徑是來自于尋求朋友或親人的幫助,這種方式給詢問者帶來極大的不便且答復(fù)效率較低,往往不能及時得到最佳答案。此外不同人會針對同一問題多次咨詢,造成了嚴(yán)重的資源浪費。 1.4目標(biāo)系統(tǒng)概述明日知道在線問答系統(tǒng)主要是為了解決編

4、程愛好者在編程過程中遇到的問題而開發(fā)的一個在線問答平臺。該系統(tǒng)為用戶提供一個問題交流的平臺,可以注冊用戶、提出問題、回答問題、關(guān)閉問題、設(shè)置最佳答案、設(shè)置懸賞積分等功能。對于明日知道在線問答系統(tǒng)在設(shè)計時應(yīng)該滿足以下幾個目標(biāo):(1)要求是一個互動性很強的網(wǎng)站,需要多方參與、多方協(xié)作完成。參與者越多,發(fā)揮的作用就越大、效果越好。(2)有良好的人機交互功能:用戶界面直觀、友好,數(shù)據(jù)錄入靈活、簡便。(3)功能強大,拓展性強,穩(wěn)定性高。(4)系統(tǒng)無操作系統(tǒng)限制,方便不同平臺之間的移植。(5)網(wǎng)站最大限度地實現(xiàn)易維護性和易操作性。(6)網(wǎng)站運行穩(wěn)定、安全可靠。 1.5 可行性分析可行性分析的任務(wù),并不是所

5、有問題都有簡單明顯的解決辦法,事實上,許多問題不可能在預(yù)定的系統(tǒng)規(guī)模之內(nèi)解決。如果問題沒有可行的解,那么花費這項開發(fā)工程上的任何時間、資源、人力和經(jīng)費都是無謂的浪費。可行性研究的目的就是用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決??尚行匝芯繉嵸|(zhì)上是要進行一次大大壓縮簡化了的系統(tǒng)分析和設(shè)計的過程,也就是在較高層次上以較抽象的方式進行的系統(tǒng)分析和設(shè)計的過程。所以從以上的分析原則來看,所設(shè)計的在線問答管理系統(tǒng)是一個規(guī)模不太大的系統(tǒng),但是目標(biāo)明確,清晰的描述了對目標(biāo)系統(tǒng)的一切限制和約束。在使用過程中,要看它能不能帶來效益,畢竟在現(xiàn)今社會效率是第一位的。21世紀(jì)是計算機的時代,它必然取代一部分人

6、的工作,高科技的信息系統(tǒng)進入社會生活的方方面面是發(fā)展的趨勢。本設(shè)計從以下三個方面進行可行性研究:1.5.1技術(shù)可行性分析目前有很多程序語言和相應(yīng)的開發(fā)工具都可以適用于本系統(tǒng)的開發(fā),例如VB、ASP、PHP等,數(shù)據(jù)庫有DB2、Oracle、Informix、SQL Server等,基本所有的軟件程序都是用這些工具開發(fā)的,本系統(tǒng)網(wǎng)站開發(fā)環(huán)境運用的是Microsoft Visual Studio2008集成開發(fā)環(huán)境,網(wǎng)站開發(fā)語言及核心技術(shù)是ASP.NET+C#+LINQ數(shù)據(jù)庫訪問技術(shù),網(wǎng)站的后臺數(shù)據(jù)庫是SQLServer2005,這些技術(shù)都是成熟可靠的,所以在技術(shù)上本程序的開始時可行的。1.5.2經(jīng)

7、濟可行性分析開發(fā)本系統(tǒng)操作系統(tǒng)采用Windows Server2003(SPI),在開發(fā)過程中只需要一臺PC,估算新系統(tǒng)的成本效益分析,其中包括估計項目開發(fā)的成本,開發(fā)費用和今后的運行、維護費用也不高,所以在經(jīng)濟上具有一定的可行性。 1.5.3操作可行性分析本系統(tǒng)的操作對象主要是在線問答系統(tǒng)管理員或經(jīng)身份認證的問答用戶,對于他們不需要復(fù)雜的操作,而且此系統(tǒng)采用圖形界面,界面美觀大方形象,操作十分方便。適合普通人群使用,對于錯誤操作或者操作頻繁者會有相應(yīng)的提示操作,所以操作可行。1.6 項目計劃表 1-1 項目計劃任務(wù)/時間分配(1天)人員分配詳細任務(wù)原型系統(tǒng)研究(1天)XXX、XXX搜索尋找合

8、適的原型系統(tǒng)開發(fā)計劃/需求分析(1天)XXX、XXX項目名稱、開發(fā)背景、對原系統(tǒng)概述、目標(biāo)系統(tǒng)概述、項目計劃、可行行分析、需求分析、數(shù)據(jù)流程圖、數(shù)據(jù)字典數(shù)據(jù)庫設(shè)計/詳細設(shè)計(1天)XXX、XXX系統(tǒng)功能模塊圖、數(shù)據(jù)庫概要設(shè)計(E-R圖)、代碼設(shè)計、輸入/輸出界面設(shè)計、個人詳細設(shè)計編碼/測試/分析(1天)XXX、XXX實現(xiàn)主要界面/測試系統(tǒng)/分析系統(tǒng)優(yōu)缺點2 需求分析 2.1需求定義說明書2.1.1用戶功能需求分析通過對系統(tǒng)需求進行分析,我們可以確定系統(tǒng)中有兩類用戶:管理員、用戶。各類用戶的具體描述如下: 管理員:管理員維護整個系統(tǒng),包括查看用戶信息、管理問題、刪除問題。 具體功能解釋如下:(1

9、)管理員功能是對用戶提出的問題進行管理及用戶相關(guān)信息(如積分、獲得最佳答案數(shù)等)的查詢。 用戶:搜索問題、注冊賬戶、提出問題、回答問題、關(guān)閉問題、設(shè)置最佳答案; 具體功能解釋如下:(1)用戶搜索各個編程語言的相關(guān)知識(2)提問者可以發(fā)布某一編程語言的問題,回復(fù)者給出答案。(3)提問者在眾多答案中評選最佳答案,被評為最佳答案的回復(fù)者可以獲得規(guī)定的積分獎勵。(4)如果沒有正確的答案,提問者可以關(guān)閉該問題。(5)用戶可以在前臺網(wǎng)站的搜索引擎中查找待解決或自己感興趣的各個編程語言問題及最佳答案。2.1.2 性能需求分析(1)安全性高:本系統(tǒng)需要進過身份認證的人員才可以登錄,安全性高; (2)可靠性:該

10、系統(tǒng)應(yīng)該運行正常,可靠性很好;(3)穩(wěn)定性:該系統(tǒng)應(yīng)該輸出結(jié)果無誤,穩(wěn)定性很好;(4)便捷性:該系統(tǒng)采用圖形界面,操作方便快速,便捷性好。2.2數(shù)據(jù)流程圖根據(jù)系統(tǒng)調(diào)查階段的數(shù)據(jù)資料,并依據(jù)用戶的要求,確定該在線問答系統(tǒng)的基本功能和工作過程如下:(1) 頂層圖根據(jù)用戶與該系統(tǒng)的交互可得出,用戶主要就是提出問題和回答問題,管理員則管理問題。如圖2-1所示:圖 2-1 在線問答系統(tǒng)頂層圖(2) 一層圖首先用戶可根據(jù)自己的需求搜索問題尋找答案,也可直接選擇提出問題,其他用戶可根據(jù)此問題做出回復(fù),原用戶在眾多回復(fù)中選擇最優(yōu)答案,若無滿意答案或其他情況可隨時關(guān)閉此問題。管理員可對問題進行管理,刪除不適當(dāng)?shù)?/p>

11、問題。根據(jù)相應(yīng)的功能要求,我們繪制系統(tǒng)的一層數(shù)據(jù)流程圖,如圖2-2所示:圖 2-2 在線問答系統(tǒng)一層圖2.3 數(shù)據(jù)字典數(shù)據(jù)字典是對描述數(shù)據(jù)流程圖中的數(shù)據(jù)項、數(shù)據(jù)流、數(shù)據(jù)存儲、加工處理邏輯等組成部分的嚴(yán)格定義,下面是本系統(tǒng)的數(shù)據(jù)字典。 數(shù)據(jù)項的定義數(shù)據(jù)項編號:1-01數(shù)據(jù)項名稱:用戶代碼別名:無簡 述:某個用戶的編號類型:字符串型長度:50字節(jié) 數(shù)據(jù)流的定義數(shù)據(jù)流名稱:問題編號:F1簡述:用戶提出的問題數(shù)據(jù)流來源:用戶數(shù)據(jù)流去向:問題記錄系統(tǒng)數(shù)據(jù)流組成:日期 + 提問標(biāo)題+ 提問內(nèi)容流通量:無限制高峰流通量:無限制 數(shù)據(jù)存儲的定義數(shù)據(jù)存儲的名稱:答題信息數(shù)據(jù)存儲編號:D1簡述:記錄回復(fù)主題、回復(fù)

12、內(nèi)容、回復(fù)時間等信息數(shù)據(jù)存儲組成:回復(fù)代碼 + 回復(fù)主題 + 回復(fù)內(nèi)容+回復(fù)時間關(guān)鍵字: 回復(fù)內(nèi)容 處理邏輯的定義處理名:在線用戶提問編號:P1輸入:從用戶輸入輸出:從回答問題過程輸出描述:當(dāng)用戶將問題發(fā)布至系統(tǒng)時,其他用戶可自行選擇是否回復(fù)問題 外部實體的定義外部實體名稱:用戶外部實體編號:1外部實體組成:用戶代碼+用戶名+性別+郵件+密碼+積分簡 述:用來描述外部實體的基本信息情況3 概要設(shè)計3.1系統(tǒng)功能模塊結(jié)構(gòu)圖明日知道網(wǎng)分為前臺操作和后臺管理兩個網(wǎng)站。前臺網(wǎng)站主要由提問模塊、恢復(fù)模塊、設(shè)置最佳答案模塊、關(guān)閉問題模塊、搜索問題模塊、用戶注冊模塊和用戶登錄模塊7部分組成。后臺管理網(wǎng)站主要

13、由用戶管理模塊和問題管理模塊組成。明日知道問答系統(tǒng)的功能結(jié)構(gòu)如圖3-1所示。圖 3-3 在線問答系統(tǒng)功能結(jié)構(gòu)圖3.2數(shù)據(jù)庫概要設(shè)計數(shù)據(jù)庫是數(shù)據(jù)庫應(yīng)用程序的核心。數(shù)據(jù)庫設(shè)計是建立一個應(yīng)用程序最重要的步驟之一。數(shù)據(jù)庫設(shè)計一般要在需求分析和數(shù)據(jù)分析的基礎(chǔ)上進行概念設(shè)計、邏輯設(shè)計和物理設(shè)計。3.2.1 概念設(shè)計經(jīng)過對該系統(tǒng)的研究我們了解到系統(tǒng)中的實體類型有:用戶、問題、答案、管理員,這些實體之間的相互關(guān)系有:管理員與問題之間存在“管理”聯(lián)系,是一對多的。問題與答案之間存在“回答問題”關(guān)系,是一對多的。用戶和問題之間存在“提問”關(guān)系,是多對多的。用戶和答案之間存在“回答”關(guān)系,是多對多的。每個實體的屬性

14、分別是:用戶:用戶代碼,用戶名,密碼,性別,郵件,用戶積分,獲得懸賞積分,發(fā)出懸賞積分,回復(fù)問題數(shù),被評為“最優(yōu)問題”數(shù),已解決問題數(shù),未解決問題數(shù),已關(guān)閉問題數(shù),注冊時間;問題:提問代碼,提問目錄,用戶代碼,提問標(biāo)題,提問內(nèi)容,懸賞分?jǐn)?shù),發(fā)布時間;答案:回復(fù)代碼,提問代碼,回復(fù)者代碼,回復(fù)主題,回復(fù)內(nèi)容,是否為最佳答案,好投票計數(shù),不好投票計數(shù);畫出在線問答系統(tǒng)的ER圖如圖3-2所示。圖 3-4 在線問答系統(tǒng)E-R圖3.2.2 物理設(shè)計物理設(shè)計的目的是根據(jù)具體DBMS的特征,確定數(shù)據(jù)庫的物理結(jié)構(gòu)(存儲結(jié)構(gòu))。關(guān)系數(shù)據(jù)庫的物理設(shè)計任務(wù)包括兩個方面,一是確定所有數(shù)據(jù)庫文件的名稱及其所含字段的名稱

15、、類型和寬度;二是確定各數(shù)據(jù)庫文件需要建立的索引,在什么字段上建立索引等。各表結(jié)構(gòu)如下表所示。tb_Question(問題表),用于保存用戶的提問信息,新建提問時狀態(tài)為“未解決”;提問者設(shè)置最佳答案是狀態(tài)變?yōu)椤耙呀鉀Q”;提問關(guān)閉時狀態(tài)為“已關(guān)閉”。表結(jié)構(gòu)如表3-1顯示。 表 3-2 問題表字段名數(shù)據(jù)類型長度是否主鍵描述Codevarchar50是提問代碼CatalogCodevarchar50否目錄代碼UserCodevarchar50否用戶代碼Titlenvarchar200否提問標(biāo)題Textntext16否提問內(nèi)容Markint4否懸賞分?jǐn)?shù)PostDatetimedatetime8否發(fā)布時

16、間Stateint4否狀態(tài)(0-未解決;1-已解決;2-已關(guān)閉) tb_Answer(答案表),用于保存答案的回復(fù)信息,提問者設(shè)置最佳答案時,將是否為最佳答案設(shè)置為真。表結(jié)構(gòu)如表3-2顯示。 表 3-3 答案表字段名數(shù)據(jù)類型長度是否主鍵描述Codevarchar50是回復(fù)代碼QuestionCodevarchar50否提問代碼UserCodevarchar50否回復(fù)者代碼Titlenvarchar200否回復(fù)主題Textntext16否回復(fù)內(nèi)容BestAnswerbit1否是否為最佳答案PostDatetimedatetime8否回復(fù)時間VoteNiceint4否好投票計數(shù)VoteBadint

17、4否不好投票計數(shù) tb_UserInfo(用戶信息表),用于保存用戶注冊的信息。表結(jié)構(gòu)如表3-3所示。 表 3-4 用戶信息表字段名數(shù)據(jù)類型長度是否主鍵描述Codevarchar50是用戶代碼UserNamenvarchar200否用戶名Passwordvarchar20否密碼Sexchar2否性別Emailvarchar100否郵件Markint4否用戶積分RewardMarkint4否獲得懸賞積分PaidMarkint4否發(fā)出懸賞積分ACountint4否回復(fù)問題數(shù)AAcceptCountint4否被評為“最優(yōu)答案”數(shù)QSolvedCountint4否已解決問題數(shù)QUnsolveCount

18、int4否未解決問題數(shù)QCancelledCountint4否已關(guān)閉問題數(shù)CreatedCountdatetime8否注冊時間3.3代碼設(shè)計 3.3.1 問題代碼設(shè)計為了方便對管理員對問題的管理,用戶提問的信息編碼以字符串表示。根據(jù)在線問答系統(tǒng)的管理,“*”為小寫的英文字母和數(shù)字來表示,用“-”來連接,格式固定。問題代碼設(shè)計方案如圖3-3所示。圖 3-5 問題代碼設(shè)計 3.4輸入/輸出界面設(shè)計 3.4.1明日知道前臺首頁 如圖3-4所示:(1) 網(wǎng)頁首尾部:網(wǎng)頁頭部比較簡單,但是卻很精簡,使明日知道搜索的LOGO一目了然。在底部放置企業(yè)郵箱、傳真、公司地址等信息,方便用戶咨詢。(2) 內(nèi)容:為

19、增強用戶體驗度,該頁面利用TextBox控件制作搜索文本框,方便用戶搜索問題。為了使用戶更加精確搜索,特地在搜索框上方添加導(dǎo)航條,縮小搜索范圍。搜索框下方為熱門搜索,可直接點擊,簡略輸入操作。(3) 配色:本頁面以綠色為主,綠色與人類息息相關(guān),是永恒的欣欣向榮的自然之色,代表了生命和希望,也充滿了青春與活力,是尋求知識的最佳顏色,給人舒適與安寧,同時有緩解眼部疲勞的作用。圖 3-6 明日知道系統(tǒng)首頁3.4.2 后臺管理員問題界面(1) 布局:在背景色主要為綠色的情況下,上方圖片是雙手打字的背景,可體現(xiàn)出用此軟件搜索或發(fā)布或回答問題;左側(cè)導(dǎo)航列特地選用白色背景,黑色字體,使管理員一眼就能找到系統(tǒng)

20、的主要功能;在右側(cè)問題顯示表中淡綠色和白色間隔的形式,使管理員查看問題更加清晰明了。(2) 顯示列表:在管理員管理問題時最主要的就是問題類別、提問者以及提問標(biāo)題,其他附加懸賞時間、發(fā)布時間及狀態(tài),方便管理員查看,每一行后面都有刪除問題的按鈕,管理員可根據(jù)行中信息決定是否刪除問題。在問題管理上方有搜索提問標(biāo)題的文本框,管理員可輸入敏感詞匯更加方便查詢是否存在這類的問題,方便刪除。圖 3-7 管理員后臺界面4 提問模塊設(shè)計(XXX)4.1 提問模塊主頁展示提問模塊實現(xiàn)的功能是保存用戶的提問信息。用戶首先在提問頁面錄入主題、內(nèi)容、類別、懸賞分?jǐn)?shù),其中主題、類別、內(nèi)容為必填項,然后單擊“發(fā)送帖子”即可

21、發(fā)布問題。在加載提問頁面時,程序首先會判斷用戶是否登錄,如果沒有登錄先跳轉(zhuǎn)到登錄提示頁面。登錄提示頁面如圖所示。如果沒有登錄帳號,則可注冊帳號再登錄,若已經(jīng)注冊帳號,則直接登錄即可發(fā)布信息。如圖4-1所示。 提問模塊實現(xiàn)步驟:(1)創(chuàng)建一個Web實體,命名為Qustion.aspx (2)Answer.aspx頁面運用的主要控件:DropDownList控件、TextBox控件、ValidateCode控件、ImageButton控件圖 4-8 發(fā)布界面 4.2 提問模塊技術(shù)分析 在模塊功能的展示上,繪制了提問模塊的流程圖。如圖4-2所示。圖 4-9 提問模塊流程圖 在上圖中,執(zhí)行提問主要用到

22、LINQ TO SQ中對數(shù)據(jù)庫的插入和修改操作。數(shù)據(jù)庫的插入:tb_Question question = new tb_Question(); /創(chuàng)建提問信息question.Title = txtTitle.Text; /給實體成員賦值DC.tb_Question.InsertOnSubmit(question); /保存提問信息DC.SubmitChanges(); /提交至服務(wù)端數(shù)據(jù)庫的修改操作:tb_UserInfo user = DC.tb_UserInfo.FirstOrDefault(itm => itm.Code = ClientHelper.UserCode);use

23、r.QUnsolveCount = user.QUnsolveCount + 1; /未解決問題數(shù)+1DC.SubmitChanges(); /提交至服務(wù)器端5 發(fā)布信息界面(XXX)5.1 代碼設(shè)計在該系統(tǒng)中由于提問問題、回復(fù)問題、設(shè)置最佳答案及關(guān)閉問題都涉及到分?jǐn)?shù)的分配或問題數(shù)量的統(tǒng)計操作,所以必須先以注冊會員的身份登錄,然后才可以將提問者、回復(fù)者的信息與數(shù)據(jù)庫中存儲的信息進行核對,才可以有操作權(quán)限的判斷及積分的分配。圖 5-10 發(fā)布界面圖5-1的主要實現(xiàn)代碼如下: (1)在提問頁面的加載時間Page_load中,主要實現(xiàn)兩個功能:一個是判斷用戶是否登錄,如果沒有登錄將提示登錄;二是將數(shù)

24、據(jù)類別數(shù)據(jù)庫表中的內(nèi)容填充到下拉列表框中,具體代碼如下: DataClassesDataContext DC = new DataClassesDataContext(); protected void Page_Load(object sender, EventArgs e) if (!Page.IsPostBack) if (string.IsNullOrEmpty(ClientHelper.UserCode)/提問前判斷用戶是否登陸 Session"RedirectFrom" = Request.Url; /記住當(dāng)前的Url Response.Redirect(&qu

25、ot;NotLogin.aspx"); /跳轉(zhuǎn)到登陸提示頁 var query = from item in DC.tb_Catalog /取類別數(shù)據(jù)表中的數(shù)據(jù) select new Code = item.Code, Name = item.Name ; ddlCatalogCode.DataSource = query; /將類別數(shù)據(jù)表中的數(shù)據(jù)綁定到類別下拉列表框 ddlCatalogCode.DataTextField = "Name" ddlCatalogCode.DataValueField = "Code" ddlCatalogCo

26、de.DataBind(); (2)輸入提問信息后,單擊發(fā)送帖子按鈕將提問信息保存到數(shù)據(jù)庫中,由于提交了一個未解決的問題,所以提問者的未解決數(shù)加1,全局設(shè)置表中未解決總數(shù)也加1。主要代碼如下: /保存提問信息 protected void ibtnPostQuestion_Click(object sender, ImageClickEventArgs e) if (!ValidateCode1.CheckSN(txtCheckCode.Text) /判斷驗證碼是否正確 lblMessage.Text = "輸入驗證碼不正確!" return; if (Page.IsVal

27、id) tb_UserInfo user = DC.tb_UserInfo.FirstOrDefault(itm => itm.Code = ClientHelper.UserCode); if (txtMark.Text.Trim() != "" && user.Mark < Convert.ToInt32(txtMark.Text) Response.Write("<Script>window.alert('用戶的分?jǐn)?shù)不足!')</Script>"); return; tb_Ques

28、tion question = new tb_Question(); /創(chuàng)建提問信息實體 question.Code = ClientHelper.BuildCode(); /調(diào)用公共類生成唯一號 /給實體成員賦值 question.CatalogCode = ddlCatalogCode.SelectedValue; question.UserCode = ClientHelper.UserCode; question.Title = txtTitle.Text; question.Text = txtText.Text; if (txtMark.Text.Trim() !="&q

29、uot;) question.Mark = Convert.ToInt32(txtMark.Text); question.PostDatetime = ClientHelper.ServerDate; question.State = 0; /狀態(tài)默認為0(未解決) DC.tb_Question.InsertOnSubmit(question); /保存提問信息 /用戶信息表中提問者的"未解決問題數(shù)"+1 user.QUnsolveCount = user.QUnsolveCount + 1; /全局配置表中"未解決問題數(shù)"+1 tb_Config c

30、onfig = DC.tb_Config.FirstOrDefault(); config.UnSolved = config.UnSolved + 1; DC.SubmitChanges(); /提交結(jié)果到服務(wù)器端 txtTitle.Text = "" /清空輸入內(nèi)容 ddlCatalogCode.SelectedIndex = 0; txtText.Text = "" txtMark.Text = "" txtCheckCode.Text = "" Response.Write("<Script

31、>window.alert('保存成功!')</Script>"); 5.2 代碼設(shè)計技術(shù)分析LINQ TO SQL可直接對數(shù)據(jù)庫進行插入、查找、修改、刪除、排序、聚合、分分區(qū)等操作。在使用LINQ TO SQL查詢和操作數(shù)據(jù)庫之前,首先創(chuàng)建自動生成的數(shù)據(jù)上下文類的實例。其代碼如下: DataClassesDataContext DC = new DataClassesDataContext();創(chuàng)建上下文類實例后可以查詢數(shù)據(jù)庫中的數(shù)據(jù),與傳統(tǒng)的SQL存儲過程相比,使用此方法獲取數(shù)據(jù)更加簡潔。在提問模塊主要是發(fā)布問題,用到的是向數(shù)據(jù)庫中添加數(shù)據(jù),實現(xiàn)

32、該功能主要通過InsertOnSubmit()方法和SubmitChange()方法實現(xiàn),其中,InsertOnSubmit()方法將單個實體的集合添加到Table(T)類的實例中,SubmitChange()方法計算要插入、更新或刪除的以修改對象的集,并執(zhí)行相應(yīng)命令以實現(xiàn)對數(shù)據(jù)庫的修改。6 提問模塊設(shè)計(XXX) 6.1提問模塊測試設(shè)計表 6-5 提問模塊測試設(shè)計檢測項測試條件測試數(shù)據(jù)預(yù)計測試結(jié)果發(fā)布問題未登錄發(fā)布未登錄發(fā)布跳轉(zhuǎn)到提示頁面提示:您需要登錄才可以參與本站活動。沒有帳號?注冊登錄用戶密碼賬號正確lyl,110110,egk3登錄成功用戶錯誤ly,110110,egk3該用戶名不存

33、在用戶為空“”,110110,egk3請輸入登錄昵稱密碼錯誤lyl,110111,egk3密碼不正確,請重新輸入密碼為空lyl,“”,egk3輸入密碼不能為空!驗證碼錯誤lyl,110110,egk2輸入驗證碼不正確!驗證碼為空lyl,110110,“”輸入驗證碼不正確!登錄成功主題、類別、內(nèi)容、懸賞分?jǐn)?shù)、驗證碼正確程序設(shè)計,ASP.NET,尋找程序源碼,10,egk3發(fā)布成功類別為空程序設(shè)計,“”,尋找程序源碼,10,egk3懸賞分?jǐn)?shù)為空程序設(shè)計,ASP.NET,尋找程序源碼,“”,egk3主題為空“”,ASP.NET,尋找程序源碼,10,egk3請輸入主題內(nèi)容為空程序設(shè)計,ASP.NET,

34、“”,10,egk3請輸入要發(fā)表的內(nèi)容驗證碼錯誤程序設(shè)計,ASP.NET,尋找程序源碼,10,egk1輸入驗證碼不正確!驗證碼為空程序設(shè)計,ASP.NET,尋找程序源碼,10,“”請輸入驗證碼6.2 提問模塊實際測試操作表 6-6 提問模塊測試操作檢測項測試條件測試數(shù)據(jù)預(yù)計測試結(jié)果實際測試結(jié)果發(fā)布問題未登錄發(fā)布未登錄發(fā)布跳轉(zhuǎn)到提示頁面提示:您需要登錄才可以參與本站活動。沒有帳號?注冊發(fā)布失敗登錄用戶密碼賬號正確lyl,110110,egk3登錄成功登錄成功用戶錯誤ly,110110,egk3該用戶名不存在登錄失敗用戶為空“”,110110,egk3請輸入登錄昵稱登錄失敗密碼錯誤lyl,1101

35、11,egk3密碼不正確,請重新輸入登錄失敗密碼為空lyl,“”,egk3輸入密碼不能為空!登錄失敗驗證碼錯誤lyl,110110,egk2輸入驗證碼不正確!登錄失敗驗證碼為空lyl,110110,“”輸入驗證碼不正確!登錄失敗登錄成功主題、類別、內(nèi)容、懸賞分?jǐn)?shù)、驗證碼正確程序設(shè)計,ASP.NET,尋找程序源碼,10,egk3發(fā)布成功發(fā)布成功類別為空程序設(shè)計,“”,尋找程序源碼,10,egk3懸賞分?jǐn)?shù)為空程序設(shè)計,ASP.NET,尋找程序源碼,“”,egk3主題為空“”,ASP.NET,尋找程序源碼,10,egk3請輸入主題發(fā)布失敗內(nèi)容為空程序設(shè)計,ASP.NET,“”,10,egk3請輸入要

36、發(fā)表的內(nèi)容發(fā)布失敗驗證碼錯誤程序設(shè)計,ASP.NET,尋找程序源碼,10,egk1輸入驗證碼不正確!發(fā)布失敗驗證碼為空程序設(shè)計,ASP.NET,尋找程序源碼,10,“”請輸入驗證碼發(fā)布失敗6.3 測試評價首先點擊“我要提問”,當(dāng)未登錄時跳轉(zhuǎn)到提示登錄頁面,當(dāng)已登錄時成功跳轉(zhuǎn)到問題發(fā)布頁面,主題、內(nèi)容、驗證碼為必填項,類別、懸賞分?jǐn)?shù)選填,操作正常則發(fā)布成功!在此界面上,仍然存在不足之處,在類別選項中若不選則會默認為第一個,也就是自動選擇類別!當(dāng)全部為空時,錯誤提示只是在當(dāng)前頁面提示,并沒有以彈出框的形式出現(xiàn),不能引人矚目!4 回復(fù)模塊設(shè)計(XXX)4.1 問題回復(fù)模塊分析 4.1.1 回復(fù)模塊實

37、現(xiàn)前提 回復(fù)模塊實現(xiàn)的功能是對提問模塊提出的問題進行回復(fù),并不是所有地提問都允許回復(fù),回復(fù)問題的前提如下。(1) 該問題沒有被提問或者關(guān)閉(或管理員刪除)。(2) 該問題還沒有最佳答案。(3) 該用戶沒有回復(fù)過該問題。 4.1.2 回復(fù)模塊實現(xiàn)方式在回復(fù)面錄入回復(fù)主題、回復(fù)內(nèi)容及正確的驗證碼后,單擊“發(fā)送帖子”按鈕,將回復(fù)信息保存到數(shù)據(jù)庫的答案表中。如圖4-1回復(fù)模塊。圖 4-11 回復(fù)模塊 4.1.3回復(fù)模塊實現(xiàn)流程 為了更加清晰地理解回復(fù)模塊的總體設(shè)計思路,詳見如圖4-2回復(fù)模塊的流程圖。圖 4-12 回復(fù)模塊流程圖 4.1.4 回復(fù)模塊實現(xiàn)步驟(1)創(chuàng)建一個Web實體,命名為Answer

38、.aspx (2)Answer.aspx頁面運用的主要控件 控件類型:DataList控件、TextBox控件、ValidateCode控件、ImageButton控件5 編碼(XXX)要求選用特定程序設(shè)計語言對所選的數(shù)據(jù)管理、查詢、報表幾個模塊進行代碼實現(xiàn),并復(fù)制主要的實現(xiàn)界面,描述實現(xiàn)中的關(guān)鍵技術(shù)和技術(shù)難點(著明制作人,制作時間)5.1 回復(fù)模塊的關(guān)鍵技術(shù) 在回復(fù)模塊執(zhí)行“進入提問”操作時主要應(yīng)用了查詢字符串傳值技術(shù)和Session傳值技術(shù)。執(zhí)行“提交答案”操作應(yīng)用了LINQ to SQL中對SQL Server數(shù)據(jù)庫的修改和刪除操作。(1)獲得查詢字符串中指定參數(shù)值的實例代碼 if (R

39、equest.QueryString"QuestionCode" != null) /提問唯一號不為空 QuestionCode = Request.QueryString"QuestionCode".ToString();(2)從Session中取出指定對象的實例代碼 Session"RedirectFrom" = Request.Url;(3)應(yīng)用LINQ to SQL中對SQL Server數(shù)據(jù)庫刪除操作的代碼tb_Answer answer = DC.tb_Answer.FirstOrDefault(itm => itm

40、.Code = code); DC.tb_Answer.DeleteOnSubmit(answer);/刪除回復(fù)信息DC.SubmitChanges();/提交刪除操作5.2 回復(fù)模塊相關(guān)代碼(1)在回復(fù)問題頁面有兩個DataList控件,分別用來顯示提問信息回復(fù)信息。在初始化這兩個DataList數(shù)據(jù)時都調(diào)用了一個自定義LoadData()方法,主要代碼如下:private void LoadData() var questionQuery = from item in DC.tb_Question/使用LINQ查詢提問信息 where item.Code = QuestionCode jo

41、in user in DC.tb_UserInfo on item.UserCode equals user.Code join catalog in DC.tb_Catalog on item.CatalogCode equals catalog.Code select new Code = item.Code, Title = item.Title, Text = item.Text, QuestionMark = item.Mark, PostDatetime = item.PostDatetime, UserCode = user.UserName, Mark = user.Mark,

42、 AAcceptCount = user.AAcceptCount, CreatedDate = user.CreatedDate, CatalogCode = item.CatalogCode, CatalogName = catalog.Name ; if (questionQuery != null) dlQuestion.DataSource = questionQuery; /將提問信息綁定到DataList dlQuestion.DataBind(); var answerQuery = from item in DC.tb_Answer/使用LINQ查詢回復(fù)信息 where it

43、em.QuestionCode = QuestionCode join user in DC.tb_UserInfo on item.UserCode equals user.Code select new Code = item.Code, QuestionCode = item.QuestionCode, Title = item.Title, Text = item.Text, PostDatetime = item.PostDatetime, UserCode = user.UserName, Mark = user.Mark, AAcceptCount = user.AAcceptC

44、ount, CreatedDate = user.CreatedDate ; dlAnswer.DataSource = answerQuery; /將回復(fù)信息綁定到DataList dlAnswer.DataBind(); (2)雙擊問題回復(fù)頁(Answer.aspx)中的“發(fā)送帖子”按鈕,觸發(fā)其Click事件,在該事件中科將回復(fù)信息保存到數(shù)據(jù)庫中,并且當(dāng)回復(fù)了一個問題時回復(fù)者的回復(fù)問題數(shù)+1。主要代碼如下:protected void ibtnPostAnswer_Click(object sender, ImageClickEventArgs e) int cnt = DC.tb_Ans

45、wer.Count(itm => itm.QuestionCode = QuestionCode && itm.UserCode = ClientHelper.UserCode); if (cnt > 0) lblMessage.Text = "不能重復(fù)回復(fù)同一問題" return; int cnt2 = DC.tb_Question.Count(itm => itm.Code = QuestionCode && itm.UserCode = ClientHelper.UserCode); if (cnt2 > 0)

46、lblMessage.Text = "不能回復(fù)自已提出的問題" return; if (!CurrencyCheck(QuestionCode) return; /判斷不能修改其他用戶的帖子/? if (!ValidateCode1.CheckSN(txtCheckCode.Text) lblMessage.Text = "輸入驗證碼不正確!" return; if (Page.IsValid) if (AnswerCode = "")/傳入的查詢字符串為空,是新建回復(fù)信息操作 tb_Answer answer = new tb_Answer(); answer.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論