版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
網(wǎng)站開(kāi)發(fā)實(shí)習(xí)——俱樂(lè)部論壇系統(tǒng)開(kāi)發(fā)總結(jié)學(xué)生姓名專(zhuān)業(yè)班級(jí)學(xué)號(hào)院(系)指導(dǎo)教師完成時(shí)間2011年12月1日目錄HYPERLINK1.實(shí)習(xí)目標(biāo) 4HYPERLINK2.實(shí)習(xí)項(xiàng)目 4HYPERLINK3.設(shè)計(jì)說(shuō)明書(shū) 4HYPERLINK3.1XHTML+CSS進(jìn)行網(wǎng)頁(yè)界面布局 4HYPERLINK3.1.1盒模型(BoxModel) 4HYPERLINK3.1.2Float屬性 5HYPERLINK3項(xiàng)目開(kāi)發(fā)計(jì)劃 7HYPERLINK3.1ASP.NET動(dòng)態(tài)網(wǎng)站開(kāi)發(fā) 7HYPERLINK3.2.1母版頁(yè) 7HYPERLINK3.2.2訪(fǎng)問(wèn)數(shù)據(jù)庫(kù) 7HYPERLINK3.2.3數(shù)據(jù)驗(yàn)證 7HYPERLINK3.2.4注冊(cè)登錄功能 7HYPERLINK3.3SQLServer 8HYPERLINK4.分析及設(shè)計(jì) 8HYPERLINK4.1需求設(shè)計(jì) 8HYPERLINK4.2數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì) 8HYPERLINK4.3界面設(shè)計(jì) 10HYPERLINK4.4網(wǎng)站具體制作與代碼編寫(xiě) 10HYPERLINK4.4.1創(chuàng)建數(shù)據(jù)庫(kù) 10HYPERLINK4.4.2創(chuàng)建母版頁(yè) 12HYPERLINK4.4.3創(chuàng)建登錄頁(yè)與注冊(cè)頁(yè) 13HYPERLINK4.4.4制作發(fā)新帖頁(yè) 13HYPERLINK4.4.5實(shí)現(xiàn)文本框驗(yàn)證 20HYPERLINK4.4.6使用QueryString進(jìn)行頁(yè)面間參數(shù)傳遞 21HYPERLINK4.4.7創(chuàng)建管理頁(yè)面 21HYPERLINK4.4.8錯(cuò)誤處理頁(yè)面 22HYPERLINK4.5測(cè)試截圖 23HYPERLINK5.實(shí)驗(yàn)心得 241.實(shí)習(xí)目標(biāo)通過(guò)網(wǎng)站的開(kāi)發(fā),熟悉掌握XHTML+CSS、ASP.NET、SQLServer相關(guān)知識(shí)與技能的綜合應(yīng)用,經(jīng)歷一個(gè)實(shí)際項(xiàng)目的分析、開(kāi)發(fā)與測(cè)試。2.實(shí)習(xí)項(xiàng)目實(shí)習(xí)項(xiàng)目要求利用ASP.NET(VisualStudio2008)完成一個(gè)俱樂(lè)部網(wǎng)站的開(kāi)發(fā)。本俱樂(lè)部網(wǎng)站可以使用戶(hù)注冊(cè)、登錄,登錄用戶(hù)可以對(duì)文章進(jìn)行評(píng)論。俱樂(lè)部工作人員可以在后臺(tái)進(jìn)行文章的發(fā)布、編輯并對(duì)用戶(hù)評(píng)論進(jìn)行管理。沃克俱樂(lè)部(WalkerClub)要求能夠有一個(gè)論壇,使俱樂(lè)部成員通過(guò)網(wǎng)站進(jìn)行有關(guān)健走活動(dòng)、戶(hù)外旅游等加強(qiáng)交流與溝通,同時(shí)也通過(guò)俱樂(lè)部網(wǎng)站擴(kuò)大自己的影響力,以吸引更多的人參加俱樂(lè)部,培養(yǎng)健康的生活方式。俱樂(lè)部對(duì)論壇的要求是:論壇內(nèi)容對(duì)所有人開(kāi)放;只有俱樂(lè)部會(huì)員可以發(fā)帖及發(fā)評(píng)論;俱樂(lè)部有專(zhuān)門(mén)維護(hù)人員,可以對(duì)論壇的帖子進(jìn)行管理;3.設(shè)計(jì)說(shuō)明書(shū)3.1XHTML+CSS進(jìn)行網(wǎng)頁(yè)界面布局在動(dòng)態(tài)網(wǎng)站的開(kāi)發(fā)中,手工進(jìn)行XHTML代碼編寫(xiě)的情況是很少見(jiàn)的,但利用XHTML+CSS進(jìn)行網(wǎng)頁(yè)布局與展示,是網(wǎng)站設(shè)計(jì)必須的基本功之一。由于CSS的應(yīng)用,網(wǎng)頁(yè)布局現(xiàn)在不再使用表格的方式對(duì)網(wǎng)頁(yè)進(jìn)行布局,而是利用CSS中的盒模型和XHTML中的DIV標(biāo)簽,對(duì)網(wǎng)頁(yè)進(jìn)行布局,這種網(wǎng)頁(yè)的布局辦法也被稱(chēng)為DIV+CSS。3.1.1盒模型(BoxModel)網(wǎng)頁(yè)設(shè)計(jì)中的每個(gè)元素都是一個(gè)矩形盒。在CSS中,進(jìn)行設(shè)計(jì)和布局時(shí),會(huì)用到盒模型。CSS盒模型從本質(zhì)上來(lái)說(shuō)是環(huán)繞在XHTML元素周?chē)姆娇?,它由外邊距、邊框、?nèi)邊距和實(shí)際內(nèi)容組成。盒模型允許放置元素周?chē)倪吙蚣爸車(chē)嚓P(guān)元素。圖1闡釋了盒模型:圖1CSS盒模型為了能在所有的瀏覽器中正確地設(shè)置元素的寬(width)和高(height),需要了解盒模型的工作原理。當(dāng)一個(gè)元素的寬和高被CSS定義后,它設(shè)置的僅僅是內(nèi)容區(qū)域的寬度和高度。元素(盒)的總寬度還包括內(nèi)邊距(padding)、邊框(border)和外邊距(margin),如下例子中元素的總寬度為300px.element1{width:250px;
padding:10px;
border:5pxsolidgray;
margin:10px;}計(jì)算過(guò)程如下:250px(寬度)+20px(左右內(nèi)邊距)+10px(左右邊框)+20px(左右外邊距)=300px元素(盒模型)的總寬度與總高度應(yīng)當(dāng)這樣計(jì)算:盒的總寬度=width+padding-left+padding-right+border-left+border-right+margin-left+margin-right盒的總高度=height+padding-top+padding-bottom+border-top+border-bottom+margin-top+margin-bottom3.1.2Float屬性XHTML的div元素所形成的盒子(box),默認(rèn)情況下,是垂直分布的,即水平方向只能有一個(gè)盒子,另外一個(gè)盒子只能排列在前一個(gè)盒子的下方,在CSS術(shù)語(yǔ)中,這種元素叫做塊級(jí)元素(BlockElements),h1、p這些元素都是塊級(jí)元素;默認(rèn)情況下可以在水平方向分布的元素,被稱(chēng)作行內(nèi)元素(InlineElements),如span、a都是行內(nèi)元素。如例1。例1塊級(jí)元素與行內(nèi)元素<html><body> <div>第一個(gè)塊級(jí)元素</div> <div>第二個(gè)塊級(jí)元素,出現(xiàn)在第一個(gè)塊級(jí)元素下方</div> <ahref="#">超鏈?zhǔn)切袃?nèi)元素,這是第一個(gè)行內(nèi)元素</a> <ahref="#">第二個(gè)行內(nèi)元素,水平方向位于前一個(gè)行內(nèi)元素右邊</a></body></html>網(wǎng)頁(yè)布局中,為使水平方向可以并行出現(xiàn)兩個(gè)或者兩個(gè)以上的例子,需要使用CSS的float屬性,能夠使盒子在水平方向上浮動(dòng)。將例1中的div元素加入float屬性,如例2例2利用CSSfloat屬性<html><body> <divstyle="float:left;border:1pxsolidred">第一個(gè)塊級(jí)元素</div> <divstyle="float:left;border:1pxsolidred">第二個(gè)塊級(jí)元素,加入float屬性后出現(xiàn)在第一個(gè)塊級(jí)元素右邊</div> <divstyle="clear:both"></div> <ahref="#">超鏈?zhǔn)切袃?nèi)元素,這是第一個(gè)行內(nèi)元素</a> <ahref="#">第二個(gè)行內(nèi)元素,水平方向位于前一個(gè)行內(nèi)元素右邊</a></body></html>3項(xiàng)目開(kāi)發(fā)計(jì)劃3.1ASP.NET動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)在ASP.NET之前,微軟的動(dòng)態(tài)Web編程技術(shù)稱(chēng)為ActiveServerPages(ASP,動(dòng)態(tài)服務(wù)器頁(yè)面),ASP是微軟公司開(kāi)發(fā)的代替CGI腳本程序的一種應(yīng)用,它可以與數(shù)據(jù)庫(kù)和其它程序進(jìn)行交互,是一種簡(jiǎn)單、方便的編程工具。盡管ASP對(duì)于創(chuàng)建動(dòng)態(tài)網(wǎng)站在當(dāng)時(shí)是一種流行的選擇,但是它缺乏其它編程技術(shù)中的一些重要功能(比如ASP不支持對(duì)面向?qū)ο蠹夹g(shù)),微軟推出ASP.NET以彌補(bǔ)ASP的缺點(diǎn)。ASP.NET1.0版本于2002年1月發(fā)布,到2005年,ASP.NET2.0版本發(fā)布,成為動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)的主流選擇,2007年底,隨同VisualStudio2008一起,微軟發(fā)布了ASP.NET3.5,將AJAX技術(shù)結(jié)合為ASP.NET的標(biāo)準(zhǔn)配置,使得開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站變得前所未有的簡(jiǎn)單與高效。3.2.1母版頁(yè)母版頁(yè)就像是PPT文件中的模板,使用母版頁(yè)后,所有的頁(yè)面都有統(tǒng)一的風(fēng)格,如頁(yè)頭與頁(yè)尾。母版頁(yè)不限于只有一個(gè),比如主頁(yè)為一個(gè)母版頁(yè),欄目為一個(gè)母版頁(yè),具體內(nèi)容頁(yè)面為另外一個(gè)母版頁(yè),可以使用DIV+CSS制作好的頁(yè)面布局,導(dǎo)入母版頁(yè)。具體操作辦法參見(jiàn)實(shí)習(xí)步驟。3.2.2訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)動(dòng)態(tài)網(wǎng)站區(qū)分于靜態(tài)網(wǎng)站,就是動(dòng)態(tài)網(wǎng)站可以訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)。ASP.NET訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)有多種辦法,其中SQL語(yǔ)句是最基本的要求。ASP.NET提供有數(shù)據(jù)源控件和數(shù)據(jù)綁定控件(在【工具箱】的【數(shù)據(jù)】選項(xiàng)卡內(nèi)),可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行快捷的訪(fǎng)問(wèn),本實(shí)習(xí)部分采用這種辦法。為了分層開(kāi)發(fā)架構(gòu)的開(kāi)發(fā),本實(shí)習(xí)還采用ADO.NET技術(shù),結(jié)合數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程完成分層架構(gòu)的開(kāi)發(fā)。3.2.3數(shù)據(jù)驗(yàn)證ASP.NET提供了簡(jiǎn)單易用的數(shù)據(jù)驗(yàn)證辦法,在用戶(hù)沒(méi)有輸入應(yīng)該輸入的數(shù)據(jù)或者格式出現(xiàn)錯(cuò)誤時(shí),系統(tǒng)可以發(fā)出提示信息,指導(dǎo)用戶(hù)輸入正確格式的數(shù)據(jù)。3.2.4注冊(cè)登錄功能ASP.NET3.5集成的安全功能,可以迅速完成用戶(hù)注冊(cè)頁(yè)面、登錄頁(yè)面及用戶(hù)修改口令等功能,具體操作見(jiàn)操作步驟。3.3SQLServerSQLServer是微軟公司出品的數(shù)據(jù)庫(kù)管理系統(tǒng),可以與VS2008完美結(jié)合。本實(shí)習(xí)采用SQLServer數(shù)據(jù)庫(kù),在本應(yīng)用中,SQLServer2000以上的版本都可以完成工作。VS2008的集成開(kāi)發(fā)環(huán)境(IDE)可以在其內(nèi)部就完成數(shù)據(jù)庫(kù)的創(chuàng)建與操作。本實(shí)習(xí)主要完成數(shù)據(jù)庫(kù)、數(shù)據(jù)表的創(chuàng)建與修改,存儲(chǔ)過(guò)程的創(chuàng)建與修改。4.分析及設(shè)計(jì)4.1需求設(shè)計(jì)根據(jù)沃克俱樂(lè)部所提出的要求,分析該論壇的技術(shù)層次需要如下:網(wǎng)站應(yīng)該能夠支持用戶(hù)賬戶(hù);所有用戶(hù),無(wú)論登錄或者未登錄,都可以瀏覽網(wǎng)站上的帖子及評(píng)論;只有通過(guò)認(rèn)證的用戶(hù)才可以發(fā)帖子或評(píng)論;通過(guò)認(rèn)證的用戶(hù)發(fā)帖子時(shí),必須提供帖子標(biāo)題、內(nèi)容并選擇版塊;通過(guò)認(rèn)證的用戶(hù)發(fā)評(píng)論時(shí),必須是針對(duì)某一個(gè)帖子進(jìn)行發(fā)表;每個(gè)論壇版塊都有至少1個(gè)版主,版主可以對(duì)本版塊的帖子進(jìn)行管理,如置頂、刪除操作需要有一個(gè)特別的認(rèn)證賬戶(hù)(網(wǎng)站管理員)可以對(duì)所有的用戶(hù)進(jìn)行管理,能夠更換版主,同時(shí)可以對(duì)網(wǎng)站上所有帖子、評(píng)論進(jìn)行管理4.2數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)當(dāng)把ASP.NET設(shè)置為基于窗體的身份驗(yàn)證類(lèi)型之后,系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)ASPNETDB.MDF數(shù)據(jù)庫(kù),并且定義了一系列的數(shù)據(jù)庫(kù)表,創(chuàng)建用戶(hù)賬戶(hù)?,F(xiàn)在需要做的是,根據(jù)上一小節(jié)的分析定義除系統(tǒng)數(shù)據(jù)庫(kù)表之外其它的表結(jié)構(gòu)。根據(jù)分析,需要三個(gè)需要手工創(chuàng)建的表:Columns:版塊表,用來(lái)定義俱樂(lè)部論壇不同的版塊,如健走活動(dòng)、騎行聯(lián)盟等。Posts:帖子表,會(huì)員發(fā)布的帖子將被保存在本數(shù)據(jù)庫(kù)表中作為一條記錄,包括標(biāo)題、內(nèi)容、發(fā)布時(shí)間等。Comments:評(píng)論表,會(huì)員根據(jù)某個(gè)具體的帖子發(fā)布的評(píng)論將在本表中被保存為一條記錄,包括內(nèi)容、評(píng)論時(shí)間等。2.數(shù)據(jù)庫(kù)表結(jié)構(gòu)表1版塊表(表名Columns)結(jié)構(gòu)列名數(shù)據(jù)類(lèi)型與長(zhǎng)度屬性列名含義說(shuō)明ColumnIdint主鍵自動(dòng)遞增ColumnNamenvarchar(10)不允許空版塊名稱(chēng)表2帖子表(表名Posts)結(jié)構(gòu)列名數(shù)據(jù)類(lèi)型與長(zhǎng)度屬性列名含義說(shuō)明PostIdint主鍵自動(dòng)遞增UserIduniqueidentifier外鍵用戶(hù)IdColumnIdint外鍵版塊IdTitlenvarchar(40)不允許空帖子標(biāo)題Postnvarchar(4000)不允許空帖子內(nèi)容SubmitDatedatetime不允許空發(fā)布日期ShowFlagbit不允許空是否顯示標(biāo)志VisitNumint允許空訪(fǎng)問(wèn)次數(shù)ReplyNumint允許空回復(fù)次數(shù)表3評(píng)論表(表名Comments)結(jié)構(gòu)列名數(shù)據(jù)類(lèi)型與長(zhǎng)度屬性列名含義說(shuō)明CommentIdint主鍵自動(dòng)遞增PostIdint外鍵帖子IdUserIduniqueidentifier外鍵用戶(hù)IdCommentnvarchar(1000)不允許空評(píng)論內(nèi)容SubmitDatedatetime不允許空評(píng)論日期ShowFlagbit不允許空是否顯示標(biāo)記說(shuō)明UserId的數(shù)據(jù)類(lèi)型是uniqueidentifier,與ASPNETDB數(shù)據(jù)庫(kù)中aspnet_Users的主鍵UserId數(shù)據(jù)類(lèi)型一致。這是一個(gè)確保全球唯一的極大的數(shù),用于唯一識(shí)別用戶(hù)賬戶(hù)。4.3界面設(shè)計(jì)用戶(hù)界面是應(yīng)用的前端部分,用戶(hù)通過(guò)用戶(hù)界面與系統(tǒng)交互。對(duì)于Web網(wǎng)站應(yīng)用系統(tǒng)來(lái)說(shuō),用戶(hù)界面是網(wǎng)站的一系列網(wǎng)頁(yè)。用戶(hù)對(duì)網(wǎng)站質(zhì)量的判斷,大多是來(lái)自于對(duì)網(wǎng)頁(yè)可用性、快捷性的評(píng)價(jià),所以確保網(wǎng)頁(yè)用戶(hù)界面的直觀(guān)及方便非常重要。論壇網(wǎng)站需要如下網(wǎng)頁(yè):主頁(yè):在該網(wǎng)頁(yè)中,匿名用戶(hù)會(huì)看到一個(gè)“登錄”和“注冊(cè)”鏈接,而已登錄用戶(hù)則可以進(jìn)行發(fā)新帖與發(fā)評(píng)論的操作,如果已認(rèn)證用戶(hù)為管理員或版主,則可以進(jìn)行帖子與評(píng)論管理。版塊頁(yè):版塊頁(yè)將列出本版塊全部允許顯示的帖子,包括帖子標(biāo)題、作者及發(fā)布日期。發(fā)新帖頁(yè):該網(wǎng)頁(yè)只能被已認(rèn)證用戶(hù)打開(kāi)訪(fǎng)問(wèn),用戶(hù)可以在該網(wǎng)頁(yè)中發(fā)新帖,包括標(biāo)題、內(nèi)容與版塊,用戶(hù)名及發(fā)布時(shí)間則根據(jù)當(dāng)前用戶(hù)及當(dāng)前時(shí)間自動(dòng)由系統(tǒng)提交。帖子詳細(xì)內(nèi)容頁(yè):該網(wǎng)頁(yè)顯示帖子詳細(xì)內(nèi)容及對(duì)于該帖的評(píng)論,匿名用戶(hù)只能瀏覽該網(wǎng)頁(yè),已認(rèn)證用戶(hù)可以添加新評(píng)論。管理頁(yè):網(wǎng)站管理員、版主可以對(duì)帖子及評(píng)論進(jìn)行管理,網(wǎng)站管理員還可以對(duì)用戶(hù)進(jìn)行管理,比如屏蔽用戶(hù)及調(diào)整版主。雖然一個(gè)動(dòng)態(tài)網(wǎng)站可能由幾十個(gè)、幾百個(gè)甚至上千個(gè)網(wǎng)頁(yè)組成,但其實(shí)質(zhì)只有幾個(gè)網(wǎng)頁(yè),通過(guò)參數(shù)傳遞的方式,顯示眾多的網(wǎng)頁(yè)。比如帖子詳細(xì)內(nèi)容頁(yè),即使有幾千條帖子,但查看帖子詳細(xì)內(nèi)容時(shí),都是通過(guò)調(diào)用數(shù)據(jù)庫(kù)中不同的記錄,在帖子詳細(xì)內(nèi)容頁(yè)這一個(gè)頁(yè)面中顯示出來(lái)。4.4網(wǎng)站具體制作與代碼編寫(xiě)4.4.1創(chuàng)建數(shù)據(jù)庫(kù)1、創(chuàng)建用戶(hù)與數(shù)據(jù)庫(kù)(1)打開(kāi)VS2008,選擇菜單【文件】|【新建網(wǎng)站】,將網(wǎng)站位置選擇為“文件系統(tǒng)”,目錄命名為“ClubForum”,語(yǔ)言選擇為“VisualC#”;選擇菜單【網(wǎng)站】|【ASP.NET配置】,出現(xiàn)【ASP.NET網(wǎng)站管理工具】歡迎頁(yè)面;(2)單擊頁(yè)面上部的【安全】選項(xiàng)卡(或中部的【安全】鏈接),此時(shí)可以進(jìn)行創(chuàng)建用戶(hù)、創(chuàng)建角色及身份驗(yàn)證類(lèi)型設(shè)置;(3)單擊界面左下角【選擇身份驗(yàn)證類(lèi)型】鏈接,默認(rèn)設(shè)置是【通過(guò)本地網(wǎng)絡(luò)】單選鈕,即Windows身份驗(yàn)證,單擊【通過(guò)Internet】單選鈕,將其設(shè)置為基于窗體的安全,單擊【完成】按鈕返回;(4)在返回的界面中,【用戶(hù)】窗格由于身份驗(yàn)證類(lèi)型已經(jīng)改為基于窗體的安全,因此現(xiàn)在可以創(chuàng)建用戶(hù)及管理用戶(hù),(5)單擊【創(chuàng)建用戶(hù)】鏈接,提示進(jìn)行用戶(hù)名、密碼等的輸入,在輸入時(shí),注意保證左下角的【活動(dòng)用戶(hù)】復(fù)選框?yàn)檫x中狀態(tài)(默認(rèn)為選中),否則用戶(hù)將無(wú)法登錄網(wǎng)站。用戶(hù)賬戶(hù)內(nèi)容的輸入會(huì)進(jìn)行驗(yàn)證檢查,比如保證用戶(hù)名為唯一,密碼滿(mǎn)足特定強(qiáng)度(默認(rèn)至少為七個(gè)字符長(zhǎng),并至少包含一個(gè)非字母數(shù)據(jù)字符),電子郵件符合正確格式等,如果輸入無(wú)效數(shù)據(jù),將顯示驗(yàn)證錯(cuò)誤消息,禁止創(chuàng)建新用戶(hù)。如果沒(méi)有錯(cuò)誤,單擊【創(chuàng)建用戶(hù)】按鈕,有創(chuàng)建用戶(hù)完成的信息提示,用戶(hù)創(chuàng)建完成。在【ASP.NET網(wǎng)站管理工具】頁(yè)面內(nèi),創(chuàng)建一個(gè)用戶(hù)名Admin,再創(chuàng)建幾個(gè)普通用戶(hù),用戶(hù)名自己設(shè)定,注意記錄下密碼,供以后使用(數(shù)據(jù)表中的密碼已經(jīng)被加密,無(wú)法看出明文密碼)。同時(shí)創(chuàng)建一個(gè)Administrator用戶(hù)角色,將用戶(hù)名Admin加入這個(gè)角色。在設(shè)置基于窗體的安全之后,系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)名為ASPNETDB的數(shù)據(jù)庫(kù)。關(guān)閉ASP.NET管理工具,進(jìn)入ClubForum網(wǎng)站,在解決方案資源管理器中,單擊上方的【刷新】按鈕,再單擊App_Data文件夾前邊的“+”號(hào),可以看到該文件夾中存在一個(gè)系統(tǒng)新建的數(shù)據(jù)庫(kù)ASPNETDB.MDF。進(jìn)入數(shù)據(jù)庫(kù)資源管理器,觀(guān)察ASPNETDB數(shù)據(jù)庫(kù)的表,其中有11個(gè)系統(tǒng)表。有兩個(gè)表與賬戶(hù)密切相關(guān),它們是aspnet_Users和aspnet_Membership,這兩個(gè)表存儲(chǔ)用戶(hù)的賬戶(hù)信息,對(duì)網(wǎng)站的每個(gè)注冊(cè)用戶(hù),這兩個(gè)表中將有一條對(duì)應(yīng)的記錄。aspnet_Users表包含標(biāo)識(shí)用戶(hù)的基本列,特別是用戶(hù)名。aspnet_Membership表包含注冊(cè)用戶(hù)所提供的信息,如電子郵件地址、密碼、賬戶(hù)創(chuàng)建時(shí)間、安全問(wèn)題與答案、用戶(hù)是否為活動(dòng)狀態(tài)等。ASPNETDB數(shù)據(jù)庫(kù),尤其是aspnet_Users和aspnet_Membership數(shù)據(jù)庫(kù)表,將在實(shí)際的網(wǎng)站開(kāi)發(fā)中有極大的用處。2、在【服務(wù)器資源管理器】界面,單擊“ASPNETDB.MDF”前面的“+”號(hào),右擊【表】,單擊【添加新表】,將4.2討論的數(shù)據(jù)表結(jié)構(gòu)創(chuàng)建三個(gè)新表。并在Columns表中添加兩到三條記錄,如健走、騎行、游泳等,作為實(shí)驗(yàn)數(shù)據(jù)供開(kāi)發(fā)使用。3、連接數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)的連接方式在web.config文件中設(shè)置。通過(guò)在appSetting元素中添加一個(gè)數(shù)據(jù)庫(kù)連接字符串ConnectionString來(lái)實(shí)現(xiàn),代碼如下:<appSettings><addkey="ConnectionString"value="DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;IntegratedSecurity=True;UserInstance=True"/></appSettings>其中的value值為連接字符串,可以在第2步中右擊“ASPNETDB.MDF”文件,選擇【屬性】,查找其“連接字符串”屬性,將其屬性值復(fù)制粘貼即可。4.4.2創(chuàng)建母版頁(yè)在【解決方案資源管理器】右擊,單擊【添加新項(xiàng)】,在對(duì)話(huà)框中選擇【母版頁(yè)】,使用默認(rèn)文件名,MasterPage.master,在【源】視圖,可以把<head>部分的<asp:ContentPlaceHolder>元素刪除,只保留<body>部分的元素,將已經(jīng)制作好的網(wǎng)頁(yè)布局的頁(yè)頭部分HTML代碼放入<body>部分的<asp:ContentPlaceHolderid="ContentPlaceHolder1"runat="server"></asp:ContentPlaceHolder>上部,將頁(yè)腳部分放入其下部,將正文部分放入其中間,這樣的結(jié)果,以后所有以這個(gè)母版頁(yè)為母版的頁(yè)面,都有相同的頁(yè)頭與頁(yè)腳。刪除創(chuàng)建網(wǎng)站時(shí)默認(rèn)建立的Default.aspx頁(yè)面,重新創(chuàng)建一個(gè)主頁(yè)名為Index.aspx,注意在【添加新項(xiàng)】對(duì)話(huà)框,保證【選擇母版頁(yè)】選項(xiàng)被選中,這時(shí)就可以選擇已經(jīng)制作好的母版頁(yè)。以后的頁(yè)面都要選定這個(gè)母版頁(yè),保證整個(gè)網(wǎng)站的頁(yè)面是統(tǒng)一風(fēng)格。如果要設(shè)定主頁(yè)、欄目頁(yè)及帖子詳細(xì)內(nèi)容頁(yè)的正文部分有不同的布局,可以在具體的頁(yè)面內(nèi)進(jìn)行調(diào)整。在主頁(yè)Index.aspx的<asp:ContentPlaceHolder>元素內(nèi),將前述網(wǎng)頁(yè)布局(例3)正文部分內(nèi)容放入,在【設(shè)計(jì)】視圖檢查效果。4.4.3創(chuàng)建登錄頁(yè)與注冊(cè)頁(yè)登錄頁(yè)命名為L(zhǎng)ogin.aspx,注冊(cè)頁(yè)命名為Register.aspx,注意這兩個(gè)網(wǎng)頁(yè)的母版頁(yè)仍然選擇MasterPage.master,將【工具箱】中【登錄】?jī)?nèi)的控件Login和CreateUserWizard分別拖放到這兩個(gè)網(wǎng)頁(yè)上,即完成了登錄頁(yè)面與注冊(cè)頁(yè)面的制作。如果想把用戶(hù)登錄功能做到主頁(yè)上并提供更好的用戶(hù)體驗(yàn)界面,可以調(diào)整Login控件,并結(jié)合【登錄】選項(xiàng)卡內(nèi)的其它控件如LoginView、LoginName等,制作到主頁(yè)上。4.4.4制作發(fā)新帖頁(yè)創(chuàng)建一個(gè)發(fā)新帖的頁(yè)面,命名為NewPost.aspx。已登錄用戶(hù)可以使用這個(gè)頁(yè)面發(fā)新帖,實(shí)際對(duì)應(yīng)于在數(shù)據(jù)表Posts中加入一條新記錄。要加入一條新記錄,需要提供這條記錄需要的所有字段的值。注意這些字段的值,需要用戶(hù)提供只有三個(gè),標(biāo)題(Title)、內(nèi)容(Post)和欄目(ColumnId),其它字段的值由數(shù)據(jù)表自動(dòng)生成(如PostId)或系統(tǒng)提供(如UserId)。由于需要用戶(hù)提供的信息只有欄目、標(biāo)題與內(nèi)容,所以在NewPost.aspx頁(yè)面添加三個(gè)控件,對(duì)應(yīng)這三個(gè)信息由用戶(hù)選擇或輸入,具體控件的布局由自己完成。DropDownList控件的數(shù)據(jù)綁定首先拖放一個(gè)DropDownList控件到頁(yè)面,將其命名為ddlColumn,這個(gè)下拉框?yàn)橛脩?hù)提供可選欄目,其工作原理為:用戶(hù)在下拉框中按欄目名稱(chēng)進(jìn)行選擇(從Columns表中提取的ColumnName信息),相應(yīng)存入到Posts數(shù)據(jù)表中的數(shù)據(jù)是欄目名稱(chēng)對(duì)應(yīng)的ColumnId值而不是ColumnName值。具體操作辦法如下:?jiǎn)螕鬌ropDownList的智能標(biāo)簽,【選擇數(shù)據(jù)源】|【新建數(shù)據(jù)源…】,選擇【數(shù)據(jù)庫(kù)】,在下拉列表框中選擇ASPNETDB.MDF,在數(shù)據(jù)庫(kù)中選擇Columns數(shù)據(jù)表,選擇該數(shù)據(jù)表的所有字段(ColumnId與ColumnName),單擊【下一步】|【完成】,在【數(shù)據(jù)源配置向?qū)А績(jī)?nèi),將顯示的數(shù)據(jù)字段選擇為ColumnName,將值數(shù)據(jù)字段選擇為ColumnId,如圖2所示,本工作完成了下拉列表框顯示給用戶(hù)為一個(gè)值(ColumnName),綁定到數(shù)據(jù)表時(shí)為另外一個(gè)值(ColumnId)。圖2配置DrowDownList控件頁(yè)面制作本頁(yè)面實(shí)現(xiàn)分為兩層,一是用戶(hù)表示層(PL),前述的.aspx頁(yè)面文件及.aspx.cs代碼隱藏文件均屬于這一層,主要負(fù)責(zé)處理用戶(hù)的各種操作,處理各種控件的事件響應(yīng)。另外一層是數(shù)據(jù)訪(fǎng)問(wèn)層(DAL),對(duì)數(shù)據(jù)庫(kù)服務(wù)器的所有調(diào)用都是通過(guò)數(shù)據(jù)訪(fǎng)問(wèn)層進(jìn)行。一個(gè)設(shè)計(jì)良好的數(shù)據(jù)訪(fǎng)問(wèn)層可以使業(yè)務(wù)邏輯層的實(shí)現(xiàn)快速簡(jiǎn)潔,同時(shí)封裝了對(duì)底層數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)而使得整個(gè)系統(tǒng)層次分明、易于擴(kuò)展。這一層由ClubForumDBO數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)公共類(lèi)實(shí)現(xiàn)。拖放一個(gè)TextBox控件到上述控件下面,命名為txtTitle,再拖放一個(gè)TextBox控件到txtTitle下面,將其命名為txtPost,將其TextMode屬性設(shè)置為MultiLine。適當(dāng)調(diào)整控件大小,使頁(yè)面美觀(guān)。在頁(yè)面最下方,添加兩個(gè)Button控件,分別命名為btnSubmit和btnCancel,顯示文字分別為“發(fā)布”和“清空”?!扒蹇铡卑粹o的工作很簡(jiǎn)單,就是將標(biāo)題和帖子內(nèi)容清空,雙擊“清空”按鈕,進(jìn)行代碼編輯,鍵入如下代碼(加粗部分):protectedvoidbtnCancel_Click(objectsender,EventArgse){txtTitle.Text="";txtPost.Text="";}進(jìn)入NewPost.aspx.cs代碼文件中,在Page_Load事件內(nèi)鍵入如下代碼(加粗部分):protectedvoidPage_Load(objectsender,EventArgse){if(!User.Identity.IsAuthenticated)Response.Redirect("Index.aspx");}說(shuō)明User.Identity.IsAuthenticated是一個(gè)布爾值,如果用戶(hù)通過(guò)身份驗(yàn)證,該值為T(mén)rue,否則為False;Response.Redirect()為頁(yè)面重定向方法。粗體代碼首先判斷用戶(hù)是否為通過(guò)驗(yàn)證用戶(hù),如果沒(méi)有通過(guò)身份驗(yàn)證,則將頁(yè)面重定向到網(wǎng)站主頁(yè)Index.aspx;如果用戶(hù)通過(guò)身份驗(yàn)證(成功登錄),則不執(zhí)行重定向方法,進(jìn)入NewPost.aspx頁(yè)面。雙擊NewPost.aspx頁(yè)面上的“發(fā)布”按鈕,鍵入如下代碼(加粗部分):protectedvoidbtnSubmit_Click(objectsender,EventArgse){//獲取當(dāng)前登錄用戶(hù)的UserIdstringuserid=Membership.GetUser().ProviderUserKey.ToString();//從ddlColumn獲取被選定項(xiàng)的值,并轉(zhuǎn)換為int類(lèi)型//注意不能用(int)的辦法強(qiáng)制轉(zhuǎn)換,因?yàn)樗皇穷?lèi)型轉(zhuǎn)換,用下面的兩種辦法之一都做到了內(nèi)容轉(zhuǎn)換intcolumnid=Int32.Parse(ddlColumn.SelectedValue);//intcolumnid=Convert.ToInt32(ddlColumn.SelectedValue);stringtitle=txtTitle.Text;stringpost=txtPost.Text;//調(diào)用數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)類(lèi),并調(diào)用NewPost()方法發(fā)布新帖ClubForumDBOnewpost=newClubForumDBO();newpost.NewPost(userid,columnid,title,post);}在上一步驟的C#代碼中(NewPost.aspx.cs文件),需要加入命名空間System.Web.Security,亦即把下面代碼(粗體部分)加入到代碼最上面部分,這樣才可以保證Membership正常工作:usingSystem.Web.Security;2、數(shù)據(jù)訪(fǎng)問(wèn)層發(fā)新帖子由ClubForumDBO類(lèi)的NewPost()方法完成,其代碼包含在公共類(lèi)ClubForumDBO.cs中ClubForumDBO.cs創(chuàng)建辦法:在【解決方案資源管理器】中,右擊解決方案名,選擇【添加ASP.NET文件夾】|【App_Code】,然后在【App_Code】文件夾上右擊,選擇【添加新項(xiàng)】|【類(lèi)】,命名為“ClubForumDBO.cs”,【確定】。雙擊文件名“ClubForumDBO.cs”即可對(duì)其進(jìn)行編輯。//可以指明SQL命令操作類(lèi)型的命名空間usingSystem.Data;//可以使用配置文件web.config中的配置命名空間usingSystem.Configuration;//可以使用SQL命令命名空間usingSystem.Data.SqlClient;publicboolNewPost(stringUserId,intColumnId,stringTitle,stringPost){//創(chuàng)建數(shù)據(jù)庫(kù)連接和命令對(duì)象,AddPost為存儲(chǔ)過(guò)程SqlConnectionconn=newSqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);SqlCommandcomm=newSqlCommand("AddPost",conn);//指明Sql命令的操作類(lèi)型是使用存儲(chǔ)過(guò)程//這部分如果智能感知不起作用,注意使用usingSystem.Data.SqlClientcomm.CommandType=CommandType.StoredProcedure;//為存儲(chǔ)過(guò)程添加參數(shù)SqlParameterpUserId=newSqlParameter("@UserId",SqlDbType.VarChar,36);pUserId.Value=UserId;comm.Parameters.Add(pUserId);SqlParameterpColumnId=newSqlParameter("@ColumnId",SqlDbType.Int,4);pColumnId.Value=ColumnId;comm.Parameters.Add(pColumnId);SqlParameterpTitle=newSqlParameter("@Title",SqlDbType.NVarChar,40);pTitle.Value=Title;comm.Parameters.Add(pTitle);SqlParameterpPost=newSqlParameter("@Post",SqlDbType.Nvarchar,4000);pPost.Value=Post;comm.Parameters.Add(pPost);//打開(kāi)數(shù)據(jù)庫(kù)連接并執(zhí)行Sql命令try{//openDBconnectionconn.Open();//ExecuteDBSqlcommandcomm.ExecuteNonQuery();//SucceedinexecutingSqlcommandreturntrue;}catch{//failtoexecuteSQLcommandreturnfalse;}finally{//closeDBconnectionconn.Close();}}AddPost是存儲(chǔ)過(guò)程名稱(chēng)。為保證系統(tǒng)具備良好的可擴(kuò)展性,業(yè)務(wù)規(guī)則可以以存儲(chǔ)過(guò)程方式存放在數(shù)據(jù)庫(kù)服務(wù)器上。利用存儲(chǔ)過(guò)程,數(shù)據(jù)庫(kù)操作可以封裝在單個(gè)命令中,為獲取最佳性能而進(jìn)行優(yōu)化并通過(guò)附加的安全性得到增強(qiáng)。建議網(wǎng)站開(kāi)發(fā)中,大量使用高效簡(jiǎn)潔的存儲(chǔ)過(guò)程簡(jiǎn)化編程。創(chuàng)建存儲(chǔ)過(guò)程的辦法是:進(jìn)入【服務(wù)器資源管理器】窗口,在“ASPNETDB.MDF”下【存儲(chǔ)過(guò)程】右擊,單擊選擇【添加新存儲(chǔ)過(guò)程】,一個(gè)新的存儲(chǔ)過(guò)程建立在工作區(qū),修改為如下代碼:CREATEPROCEDUREdbo.AddPost ( @UserIduniqueidentifier, @ColumnIdint, @Titlenvarchar(40), @Postnvarchar(4000) )AS INSERTINTOPosts ( UserId, ColumnId, Title, Post, SubmitDate, ShowFlag, VisitNum, ReplyNum ) VALUES ( @UserId, @ColumnId, @Title, @Post, getdate(), 'true', 0, 0 ) RETURN 測(cè)試NewPost.aspx頁(yè)面:在【解決方案資源管理器】,右擊“NewPost.aspx”,選擇【在瀏覽器中查看】,運(yùn)行出來(lái)的頁(yè)面不是NewPost.aspx頁(yè)面,而是Index.aspx頁(yè)面!這是由于不是登錄用戶(hù),所以被代碼(Page_Load中)定向到主頁(yè)??梢允褂肦egister.aspx頁(yè)面注冊(cè)一個(gè)用戶(hù),使用這個(gè)注冊(cè)用戶(hù)到Login.aspx頁(yè)面登錄,登錄后,再到NewPost.aspx頁(yè)面選擇欄目,輸入標(biāo)題及帖子內(nèi)容,單擊【發(fā)布】按鈕。測(cè)試分析報(bào)告1、仔細(xì)體味本頁(yè)面的制作方式,其它頁(yè)面的制作也是類(lèi)似本頁(yè)面的辦法完成。首先制作用戶(hù)界面,即.aspx及.aspx.cs文件;然后根據(jù)與數(shù)據(jù)庫(kù)的互動(dòng)要求,完成公共類(lèi)代碼的制作及存儲(chǔ)過(guò)程的制作。2、完成后,對(duì)頁(yè)面進(jìn)行調(diào)試與測(cè)試,盡量測(cè)試各種可能性,使每一部分代碼都可能運(yùn)行到。3、本頁(yè)面可以做一些完善。比如制作本頁(yè)面與主頁(yè)、主頁(yè)與本頁(yè)面等相關(guān)的鏈接,用戶(hù)單擊【發(fā)布】按鈕后,彈出一個(gè)信息框,告訴用戶(hù)新帖子發(fā)布成功與否(提示:注意代碼中,發(fā)布成功返回值為true,發(fā)布失敗則為false)4、本頁(yè)面可以做另外一種完善:用戶(hù)單擊【發(fā)布】按鈕后,如果發(fā)布成功,直接顯示已經(jīng)發(fā)布的新帖子。完成這種做法的提示:需要改動(dòng)存儲(chǔ)過(guò)程,讓其返回這個(gè)新加帖子的PostId,并使用Response.Redirect()方法轉(zhuǎn)至帖子詳細(xì)內(nèi)容顯示頁(yè)面(可以起名為Post.aspx),要精確轉(zhuǎn)到這個(gè)新帖子,需要QueryString的參數(shù)傳遞,見(jiàn)4.4.6內(nèi)容。4.4.5實(shí)現(xiàn)文本框驗(yàn)證NewPost.aspx頁(yè)面中,帖子標(biāo)題和內(nèi)容是不允許為空的。因此,需要對(duì)標(biāo)題和內(nèi)容這兩個(gè)文本框進(jìn)行驗(yàn)證??梢允褂谩竟ぞ呦洹縷【驗(yàn)證】中的RequiredFieldValidator控件,對(duì)它們完成驗(yàn)證。拖放一個(gè)RequiredFieldValidator控件到txtTitle后面,設(shè)置為ControlToValidate屬性為txtTitle,ErrorMessage屬性為“標(biāo)題不能為空”;類(lèi)似地,再拖放一個(gè)RequiredFieldValidator控件到txtPost后面設(shè)置。在數(shù)據(jù)表設(shè)計(jì)中,Posts表中的Title字段設(shè)置為nvarchar(40),指定這個(gè)字段最多可容納40個(gè)字(雙字節(jié),可以是漢字,也可以是英文字母,包括空格),所以可以在前臺(tái)設(shè)置txtTitle最多只可以輸入40個(gè)字,設(shè)置辦法是將txtTitle的MaxLength屬性設(shè)定為40。從經(jīng)驗(yàn)上來(lái)說(shuō),這個(gè)MaxLength最好是比相應(yīng)字段的最大字?jǐn)?shù)少一兩個(gè)字,比如字段最多允許40個(gè)漢字,MaxLength設(shè)置為38、39較合適。如果想讓標(biāo)題容納字?jǐn)?shù)更多,把字段定義改動(dòng)即可,如改成nvarchar(100)。4.4.6使用QueryString進(jìn)行頁(yè)面間參數(shù)傳遞QueryString是一種常見(jiàn)的頁(yè)面間參數(shù)傳遞使用的方法。比如你在中查詢(xún)“ASP.NET開(kāi)發(fā)”,搜索后,瀏覽器地址欄的內(nèi)容類(lèi)似于“/search?q=ASP.NET開(kāi)發(fā)”(當(dāng)然漢字及空格之類(lèi)可能使用Unicode的格式顯示)樣式,其中問(wèn)號(hào)后面的內(nèi)容,即被稱(chēng)為QueryString。它是表單的Get方法,亦即默認(rèn)方法。要做好頁(yè)面間參數(shù)傳遞,至少要做兩個(gè)網(wǎng)頁(yè),一個(gè)網(wǎng)頁(yè)傳遞參數(shù),一個(gè)網(wǎng)頁(yè)接收參數(shù)。現(xiàn)在制作兩個(gè)網(wǎng)頁(yè),一個(gè)是Index.aspx,即主頁(yè),另外一個(gè)是Post.aspx,用這個(gè)頁(yè)面顯示帖子及評(píng)論的詳細(xì)內(nèi)容。完成QueryString傳遞有多種辦法,比較簡(jiǎn)單的辦法是直接利用【工具箱】|【數(shù)據(jù)】中的數(shù)據(jù)源控件與數(shù)據(jù)綁定控件完成,不寫(xiě)一行代碼即可完成,具體辦法可參考以下鏈接:這種辦法適合于輕量級(jí)開(kāi)發(fā),就是說(shuō)數(shù)據(jù)庫(kù)、業(yè)務(wù)邏輯沒(méi)有大的變化,網(wǎng)站屬于中小型網(wǎng)站,可以使用這種辦法。如果是比較大的項(xiàng)目,或者數(shù)據(jù)庫(kù)、業(yè)務(wù)邏輯變化較多,可以采用前面所述的分層架構(gòu)來(lái)完成,辦法提示:使用【數(shù)據(jù)】選項(xiàng)卡中的數(shù)據(jù)綁定控件或普通控件,數(shù)據(jù)源不使用【數(shù)據(jù)】選項(xiàng)卡中的數(shù)據(jù)源控件,而是利用存儲(chǔ)過(guò)程完成記錄的提取,頁(yè)面將QueryString傳來(lái)的參數(shù)捕獲,以捕獲的這個(gè)參數(shù)做為存儲(chǔ)過(guò)程的輸入?yún)?shù),做為存儲(chǔ)過(guò)程的WHERE子句中的查詢(xún)條件,存儲(chǔ)過(guò)程返回的結(jié)果(可以考慮使用輸出參數(shù))與相應(yīng)的數(shù)據(jù)綁定控件或者普通控件綁定顯示,即可以完成任務(wù)。4.4.7創(chuàng)建管理頁(yè)面論壇版主可以屏蔽帖子,網(wǎng)站管理員可以管理用戶(hù)與版主,這些功能是普通用戶(hù)不具備的。因此,需要一個(gè)專(zhuān)門(mén)的管理頁(yè)面,僅供版主和網(wǎng)站管理員使用。創(chuàng)建Moderator(版主)和Admin(管理員)兩個(gè)角色。Moderator內(nèi)包括所有的版主賬號(hào)(如果管理員賬號(hào)也有版主功能,可將管理員賬號(hào)也放入Moderator角色),Admin包括管理員賬號(hào)。判斷登錄用戶(hù)是否為某個(gè)角色,使用User.IsInRole(“Rolename”)來(lái)判斷。比如:if(User.IsInRole(“Admin
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 支票作為借款抵押物的合同3篇
- 房屋買(mǎi)賣(mài)合同范本版3篇
- 方式購(gòu)物合同格式3篇
- 改擴(kuò)建工程施工合同的培訓(xùn)資料3篇
- 招標(biāo)方案范本3篇
- 安全騎行承諾電動(dòng)車(chē)安全責(zé)任3篇
- 文化創(chuàng)意產(chǎn)業(yè)基地合作協(xié)議3篇
- 新版無(wú)擔(dān)保借款合同模板3篇
- 景觀(guān)設(shè)計(jì)測(cè)量員勞動(dòng)合同
- 港口工程委托施工合同
- 五年級(jí)數(shù)學(xué)(小數(shù)乘除法)計(jì)算題專(zhuān)項(xiàng)練習(xí)及答案
- 審計(jì)工作述職報(bào)告
- 《機(jī)電概念設(shè)計(jì)基礎(chǔ)》課件-運(yùn)行時(shí)行為
- 2024-2030年中國(guó)奶粉行業(yè)營(yíng)銷(xiāo)策略及未來(lái)5發(fā)展趨勢(shì)報(bào)告
- 2024年度?;钒踩芾韱T聘用合同2篇
- 2025屆杭州第二中學(xué)高三第五次模擬考試數(shù)學(xué)試卷含解析
- 廣東省廣州海珠區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末物理試卷(含答案)
- 開(kāi)題報(bào)告:新業(yè)態(tài)下大學(xué)生高質(zhì)量充分就業(yè)實(shí)現(xiàn)路徑研究-基于雙邊匹配的視角
- 江蘇南京市棲霞區(qū)八校聯(lián)考2024-2025學(xué)年九年級(jí)上冊(cè)歷史調(diào)研試卷(含答案)
- 醫(yī)院滿(mǎn)意度調(diào)查系統(tǒng)方案
- 2024年度企業(yè)信息化建設(shè)與技術(shù)實(shí)施合同3篇
評(píng)論
0/150
提交評(píng)論