




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
PAGE基于Php的班級風(fēng)采網(wǎng)站的設(shè)計摘要班級風(fēng)采網(wǎng)站是為了合理利用網(wǎng)絡(luò)資源、提供班級學(xué)習(xí)與交流、有效管理班級事務(wù)的網(wǎng)絡(luò)平臺。本網(wǎng)站基于B/S模式,在Php集成開發(fā)環(huán)境下采用C#語言開發(fā)完成。本網(wǎng)站由用戶模塊、在線論壇、風(fēng)采相冊、留言簿模塊與管理模塊等構(gòu)成,其中用戶模塊實現(xiàn)了用戶注冊、登陸與修改個人資料等功能;在線論壇提供交流平臺;風(fēng)采相冊實現(xiàn)圖片上載和在線瀏覽功能;留言簿模塊實現(xiàn)網(wǎng)上留言功能;管理模塊實現(xiàn)用戶管理、論壇管理、相冊管理與留言簿管理等功能。本網(wǎng)站能促進班級內(nèi)學(xué)生交流學(xué)習(xí),實現(xiàn)用戶自由訪問,促進學(xué)習(xí)相互了解,增強班級凝聚力。關(guān)鍵字:網(wǎng)站;B/S模式;Php;C#TheDesignofClass-StyleWebsiteBasedonPhpAbstractThewebsiteofclass-styleisusedtorationalizetheuseofnetworkresources,providelearningandcommunication,andeffectivelymanagetheclasses’affairs.ThiswebsiteiscompletedbasedontheB/Smode,withPhpintegrateddevelopmentenvironmentandC#language.Thiswebsiteisconsistedoftheusermodule,theonlineforum,album-style,guest-bookmoduleandthemanagementmodule.Theusermoduleisconsistedofuser’sregistration,loginandthepersonalinformation.Theonline-forumisusedforthecommunication.Thealbum-stylecontainspictureup-loadingandonlinebrowsing.Theguest-bookmoduleaccomplishestheonlineleavingmessages.Theusermanagementmodulecanaccomplishtheforummanagement,albummanagementandguest-bookmanagement.Thiswebsiteistopromotethecommunicationduringthestudentsinclasslearningandisachievedfreeaccesstousersforlearningmutually,andincreasesclasscohesion.Keywords:website;B/Smode;Php;C#
目錄論文總頁數(shù):24頁1.引言 11.1設(shè)計背景 11.2系統(tǒng)配置 11.3開發(fā)工具與平臺 12.概要設(shè)計 22.1功能需求 22.2系統(tǒng)流程 22.3模塊組織 33.數(shù)據(jù)庫設(shè)計 43.1需求分析 43.2數(shù)據(jù)庫表結(jié)構(gòu) 44.詳細(xì)設(shè)計 64.1導(dǎo)航欄與登錄模塊 64.2論壇模塊 74.3班級相冊模塊 114.4留言簿模塊 174.5管理員模塊 175.系統(tǒng)性能測試 18結(jié)論 22參考文獻(xiàn) 22致謝 23聲明 24第21頁共24頁1.引言1.1設(shè)計背景隨著網(wǎng)絡(luò)技術(shù)不斷發(fā)展,計算機的普及,越來越多的人擁有了自己的電腦,越來越多的學(xué)校和班級通過計算機網(wǎng)絡(luò)來管理其各項事務(wù)。同時,學(xué)生與學(xué)生之間通過網(wǎng)絡(luò)來交流的方式也日趨頻繁。在這種潮流的驅(qū)使之下,應(yīng)該采用什么樣的方式來更好的管理學(xué)生的各項信息,班級的各項日常事務(wù),以及怎樣使學(xué)生之間能夠更好的交流,成為一個問題。本系統(tǒng)使用PHP技術(shù)的動態(tài)網(wǎng)頁與SQLServer2000數(shù)據(jù)庫結(jié)合設(shè)計建立的一個網(wǎng)絡(luò)班級風(fēng)采網(wǎng)站。用戶首先通過內(nèi)部網(wǎng)絡(luò)訪問本網(wǎng)站,進行簡單的注冊并經(jīng)管理員審核通過后,即擁有了使用本網(wǎng)站上所提供的除管理模塊外的各功能的權(quán)力。功能模塊包括在線論壇、留言簿、風(fēng)采相冊等。在線論壇提供用戶之間的主要的交流的平臺,用戶可以發(fā)起自己的帖子,來引起班級其它同學(xué)的對本帖的討論或回復(fù),同時用戶也可對自己或別人的帖子提出自己的見解,從而很好地促進了班級內(nèi)同學(xué)的交流。留言簿提供網(wǎng)上留言功能。留言可以是班級的老師班長或其它同學(xué)的留言,通過網(wǎng)絡(luò)的迅捷的傳輸速率達(dá)到快速了解及處理班級事務(wù)的目的。風(fēng)采相冊可以將班級內(nèi)同學(xué)的相冊傳到網(wǎng)站上自由瀏覽,增加班級的親和力。以上的幾個功能很好的解決了上面所提出的問題。1.2系統(tǒng)配置運行本系統(tǒng)需要滿足以下的一些配置要求。硬件環(huán)境服務(wù)器端/客戶端:處理器:IntelPentium4內(nèi)存:256M硬盤空間:20G軟件環(huán)境操作系統(tǒng):Windows2000/2003/XP網(wǎng)絡(luò)協(xié)議:TCP/IP瀏覽器:InternetExplorer6.0顯示器:VGA或更高分辨率的顯示器1.3開發(fā)工具與平臺PHP,一個嵌套的縮寫名稱,是英文"超級文本預(yù)處理語言"(PHP:HypertextPreprocessor)的縮寫。PHP是一種HTML內(nèi)嵌式的語言,PHP與微軟的ASP頗有幾分相似,都是一種在服務(wù)器端執(zhí)行的"嵌入HTML文檔的腳本語言",語言的風(fēng)格有類似于C語言,現(xiàn)在被很多的網(wǎng)站編程人員廣泛的運用。PHP獨特的語法混合了C、Java、Perl以及PHP自創(chuàng)新的語法。它可以比CGI或者Perl更快速的執(zhí)行動態(tài)網(wǎng)頁。用PHP做出的動態(tài)頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多;與同樣是嵌入HTML文檔的腳本語言JavaScript相比,PHP在服務(wù)器端執(zhí)行,成分利用了服務(wù)器的性能;PHP執(zhí)行引擎還會將用戶經(jīng)常訪問的PHP程序駐留在內(nèi)存中,其他用戶在一次訪問這個程序時就不需要重新編譯程序了,只須直接執(zhí)行內(nèi)存中的代碼就可以了,這也是PHP高效率的體現(xiàn)之一。PHP具有非常強大的功能,所有的CGI或者JavaScript的功能PHP都能實現(xiàn),而且支持幾乎所有流行的數(shù)據(jù)庫以及操作系統(tǒng)。PHP最強大最顯著的特性之一,是它支持很大范圍的數(shù)據(jù)庫。您會發(fā)現(xiàn)利用PHP編寫數(shù)據(jù)庫支持的網(wǎng)頁簡單得難以置信。目前,PHP支持如下數(shù)據(jù)庫:AdabasDIngresOracle(OCI7andOCI8)dBaseInterBaseOvrimosEmpressFrontBasePostgreSQLFilePro(read-only)mSQLSolidHyperwaveDirectMS-SQLSybaseIBMDB2MySQLVelocisInformixODBCUnixdbm(實際上通過擴展庫的應(yīng)用,php也可以連接access等)*開放源碼--所有的PHP源碼都可以得到。事實上,所有的源碼都包含在隨書附帶的光盤中。*沒有運行費用--PHP是免費的。*基于服務(wù)器端--由于PHP是在Web服務(wù)器端運行的,PHP程序可以很大、很復(fù)雜而不會降低客戶端的運行速度。*跨平臺--雖然我是以win2000操作系統(tǒng)下構(gòu)建網(wǎng)站的,但PHP程序可以運行在UNIX,Linux,或者Windows等所有主流操作系統(tǒng)下。*嵌入HTML--因為PHP語言可以嵌入到HTML內(nèi)部,所以PHP很容易學(xué)習(xí)。*簡單的語言--和Java和C++不同,PHP語言堅持以基本語言為基礎(chǔ),然而它的功能也強大到足以支持任何類型的Web站點。*效率高--和其它的解釋性語言相比,PHP系統(tǒng)消耗較少的系統(tǒng)資源。當(dāng)PHP作為ApacheWeb服務(wù)器的一部分時,運行代碼不需要調(diào)試外部二進制程序,服務(wù)器解釋腳本不需要承擔(dān)任何額外負(fù)擔(dān)。*分析XML--用戶可以組建一個可以讀取XML信息的PHP版本。*數(shù)據(jù)庫模塊--用戶可以使用PHP存取Oracle、Sybase、MSSQL、AdabaseD、MySQL、mSQL、PostgreSQL、dBase、FilePro、Unixdbm、Informix/Illustra等類型的數(shù)據(jù)庫,以及任何支持ODBC標(biāo)準(zhǔn)的數(shù)據(jù)庫。*文件存取--PHP有許多支持文件存取函數(shù)。*文本處理--PHP有許多函數(shù)處理字符串,其中包括模式匹配的能力。*復(fù)雜的變量--PHP支持標(biāo)量、數(shù)組、關(guān)聯(lián)數(shù)組等變量,這給用戶提供了以支持其它的高級數(shù)據(jù)結(jié)構(gòu)的堅實基礎(chǔ)。*圖象處理--用戶可以使用PHP動態(tài)的創(chuàng)建輸出圖像、PDF文件甚至Flash動畫(使用libswf和Ming)。*更多其他功能。2.3MySQL數(shù)據(jù)庫MySQL是一個開發(fā)性的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。它將數(shù)據(jù)存儲在不同的表,并不是簡單的將所有數(shù)據(jù)都放在一個大型的倉庫。它是可以提高數(shù)據(jù)讀取的速度和靈活性的RDBMS。[7]MySQL的SQL語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL軟件擁有社區(qū)版和商業(yè)版兩大版本。因為MySQL體積小、速度快、總成本低,尤其是開放源碼這一特點,所以得到了大小型網(wǎng)站開發(fā)者的青睞,他們都十分愿意選擇MySQL作為數(shù)據(jù)庫。[8]一般對于個人使用者來說MySQL的功能已經(jīng)十分全面了。在多次比較了Oracle、DB2、SQLserver之后,本論文還是選擇了MySQL作為新月出租車公司管理系統(tǒng)的數(shù)據(jù)庫。2.4B/S結(jié)構(gòu)介紹B/S結(jié)構(gòu)就是只安裝和維護一個服務(wù)器,客戶端是利用瀏覽器來運行軟件。隨著Internet技術(shù)的興起和發(fā)展。C/S結(jié)構(gòu)已經(jīng)無法滿足人們的要求。于是人們開始變換的C/S,這產(chǎn)生了B/S結(jié)構(gòu)。B/S比C/S的維護工作量大大減少了。[9]C/S結(jié)構(gòu)的每個客戶端都必須安裝和配置軟件。B/S能夠降低總體擁有成本。隨著計算機技術(shù)的發(fā)展,目前大多數(shù)科技公司都不約而同的對數(shù)據(jù)提出了實時性、一致性和安全性等這些要求。傳統(tǒng)類型C/S結(jié)構(gòu)根本達(dá)不到這些要求,迫切的需要做出改變。但是B/S結(jié)構(gòu)則不同,它可以清楚正確的看到系統(tǒng)正在處理的業(yè)務(wù),這樣有利于管理人員快速的做出決策,有效地避免了企業(yè)經(jīng)濟上的虧損。B/S結(jié)構(gòu)的軟件,因為在數(shù)據(jù)集中在數(shù)據(jù)庫服務(wù)器,客戶端不持有任何業(yè)務(wù)數(shù)據(jù)和數(shù)據(jù)庫連接信息,也無需進行數(shù)據(jù)同步,所以安全性可以大大提高。B/S結(jié)構(gòu)中的數(shù)據(jù)采取了集中式管理模式。當(dāng)客戶端的業(yè)務(wù)產(chǎn)生數(shù)據(jù)時,這些數(shù)據(jù)都直接被存入中央數(shù)據(jù)庫。這樣的做法避免了數(shù)據(jù)一致性的問題。這些優(yōu)點很好更好的迎合了人們的需要。[10] 以當(dāng)下技術(shù)水平來說,利用B/S結(jié)構(gòu)來開發(fā)網(wǎng)絡(luò)應(yīng)用,并通過Internet/Intranet模式下數(shù)據(jù)庫應(yīng)用,是容易把握的而且成本也是比較低的。這樣的開發(fā)模式實現(xiàn)了不同的人,從不同的地點,不同的接入方式訪問和操作共同的數(shù)據(jù)庫;它可以有效地保護和管理數(shù)據(jù)訪問平臺,服務(wù)器數(shù)據(jù)庫也是非常安全的。尤其是在這樣一種跨平臺語言JAVA之后出現(xiàn),B/S體系結(jié)構(gòu)管理軟件是更方便、更快捷、更高效。。2.概要設(shè)計2.1功能需求為了滿足班級風(fēng)采網(wǎng)站的交流的根本目的,根據(jù)班級所固有的特點,本網(wǎng)站應(yīng)包括五大模塊:用戶模塊、在線論壇、風(fēng)采相冊、留言簿模塊與管理模塊。用戶模塊主要功能就包括角色劃分與用戶注冊,角色主要劃分為一般用戶和管理員,一般用戶可以對自己的信息查詢及修改等,管理員通過管理模塊來管理整個網(wǎng)站;在線論壇,論壇主要實現(xiàn)注冊用戶能在此網(wǎng)站平臺之上交流,一般用戶可以回復(fù)別人的發(fā)言,亦可提出自己的言論,以獲取他人的建議與意見;風(fēng)采相冊,包括用戶上傳圖片以及圖片的瀏覽功能;留言簿模塊,實現(xiàn)用戶在線留言。最后是管理模塊,主要是管理員對于整個網(wǎng)站的綜合性管理,包括用戶模塊管理、在線論壇管理、相冊管理與留言簿管理。2.2系統(tǒng)流程根據(jù)設(shè)計要求,用戶登陸本網(wǎng)站首頁時,選擇用戶的角色,管理員選擇管理員入口進入管理員登陸頁面,驗證成功后直接進入網(wǎng)站管理模塊,對班級的各模塊進行管理,包括用戶管理、論壇管理、相冊管理與留言簿管理。一般用戶通過普通用戶入口進入一般用戶登陸界面,在此頁面登陸驗證成功后即擁有了訪問網(wǎng)站各項功能的權(quán)力。包括個人信息、論壇、上載圖片、瀏覽圖片、給班級留言等功能。班級風(fēng)采網(wǎng)站使用流程如圖2-1所示。成功錄失敗錄網(wǎng)站首頁圖2-1網(wǎng)站使用流程圖成功錄失敗錄網(wǎng)站首頁2.3模塊組織整個班級網(wǎng)站主要包括的模塊有:用戶模塊、論壇模塊、管理員模塊、相冊模塊與留言簿模塊。其中管理員模塊可化分為用戶管理模塊、論壇管理模塊、相冊管理模塊與留言簿管理模塊四大塊。模塊組織如圖2-2所示。用戶模塊論壇模塊管理員模塊相冊模塊班級網(wǎng)站用戶管理模塊論壇管理模塊用戶模塊論壇模塊管理員模塊相冊模塊班級網(wǎng)站用戶管理模塊論壇管理模塊相冊管理模塊留言簿模塊留言簿管理模塊3.數(shù)據(jù)庫設(shè)計3.1需求分析作為一個班級風(fēng)采網(wǎng)站系統(tǒng),同其他類型的網(wǎng)站一樣,首先應(yīng)該包括用戶表,用戶表用來存儲已注冊用戶的各項信息。在線論壇對應(yīng)于數(shù)據(jù)庫中兩張表:帖子信息表和帖子回復(fù)表。帖子信息表中存儲了論壇中用戶發(fā)的所有帖子。同時每一個帖子都應(yīng)有它的回復(fù),在數(shù)據(jù)庫的存儲中,將所有的帖子的回復(fù)都放到了帖子回復(fù)表中,通過表中帖子的不同編號來區(qū)分不同的帖子的回復(fù)。網(wǎng)站還包括相冊模塊和留言簿模塊,因此數(shù)據(jù)庫中還應(yīng)包含圖片信息表與留言表用來存儲上載圖片的所有信息和留言的各項信息。3.2數(shù)據(jù)庫表結(jié)構(gòu)根據(jù)需求分析及模塊劃分,設(shè)計數(shù)據(jù)庫表結(jié)構(gòu)如下。(1)用戶信息表用戶信息表中包括有用戶編號,用戶名,用戶密碼,用戶QQ,用戶E-mail,用戶自我描述共六個字段,主鍵為用戶編號,具體設(shè)計如表3-1所示。表3-1用戶基本信息表Users編號字段名稱數(shù)據(jù)類型說明1IDInt用戶ID(主鍵)(自動)2UserNameNvarchar(20)用戶登錄名3PassNvarchar(20)用戶密碼4QQInt用戶QQ號5MailNvarchar(50)E-mail6SignNvarchar(200)用戶自我介紹(2)帖子信息表表3-2帖子信息表Threads編號字段名稱數(shù)據(jù)類型說明1ThreadIDInt帖子編號(主鍵)2AuthorNvarchar(50)發(fā)帖人用戶名3SubjectNvarchar(50)帖子標(biāo)題4ContentNtext(16)帖子內(nèi)容5ReplyInt帖子總回復(fù)數(shù)6TotalViewInt帖子被瀏覽數(shù)7PostTimeDatetime發(fā)帖時間帖子信息表包括帖子編號,發(fā)帖用戶名,帖子標(biāo)題,帖子內(nèi)容,帖子總回復(fù)數(shù),帖子總瀏覽數(shù),發(fā)帖時間共七個字段,主鍵為帖子編號,具體設(shè)計如表3-2所示。(3)帖子回復(fù)表回復(fù)信息表包括回復(fù)信息編號,帖子編號,回復(fù)標(biāo)題,回復(fù)內(nèi)容,回復(fù)者用戶名,回復(fù)時間共六個字段。主鍵為回復(fù)信息編號,帖子編號是此表的外鍵,用此字段與帖子表的主鍵帖子編號相聯(lián)系。具體設(shè)計如表3-3所示。表3-3回復(fù)信息表Messages編號字段名稱數(shù)據(jù)類型說明1MessageIDInt信息ID(主鍵)(自動)2ThreadIDInt帖子編號(外鍵)3SubjectNvarchar(50)回復(fù)信息標(biāo)題4ContentNtext回復(fù)內(nèi)容5AuthorNvarchar(50)回復(fù)者6PostTimeDatetime回復(fù)時間(4)相冊表相冊表包括相片編號,相片名稱,相片上載時間共三個字段,主鍵為相片編號,具體設(shè)計如表3-4所示。表3-4相冊表Photos編號字段名稱數(shù)據(jù)類型說明1PhotoIDInt照片ID(主鍵)2PhotoNameNvarchar(50)照片名稱3uploadtimeDatetime上傳時間(5)留言表留言表包括留言編號,留言者姓名,留言標(biāo)題,留言內(nèi)容,留言時間共五個字段,主鍵為留言編號,具體設(shè)計如表3-5所示。表3-5留言表GuestBook編號字段名稱數(shù)據(jù)類型說明1GuestBookIDInt留言ID(主鍵)(自動)2SubjectNvarchar(50)留言標(biāo)題3ContentNtext留言內(nèi)容4UsernameNvarchar(50)留言者姓名5UptimeDatetime留言時間4.詳細(xì)設(shè)計4.1導(dǎo)航欄與登錄模塊按用戶的不同身份:一般用戶和管理員,在一開始連接上網(wǎng)站即通過不同身份選擇不同的登陸入口:一般用戶登陸入口與管理員登陸入口。在用戶登陸界面既可進行用戶的登陸,同時也可點擊注冊按鈕進入注冊頁面。管理員登陸成功后即可對網(wǎng)站進行管理。(1)導(dǎo)航欄導(dǎo)航欄的設(shè)計主要是建立一個用戶自定義控件Header.ascx。在Header.ascx中,先插入一張表,然后將連接到各模塊主頁面的超鏈接圖片插入其中,完成自定義控件的建立。在每個需要加入它的頁面首先進行注冊,然后在<from>中進行調(diào)用即可。如:<%@RegisterTagPrefix="uc1"TagName="header"Src="~/selfcontrol/header.ascx"@%><from><uc1:headerid="header1"runat="server"></uc1:header></from>(2)登錄頁面登陸頁面主要控件為用戶登陸按鈕Button1,點擊后在后臺執(zhí)行代碼,首先聲明一UsersDB的對象,調(diào)用UsersDB的UserLogin()函數(shù),UserLogin()函數(shù)再調(diào)用存儲過程Checkuser執(zhí)行用戶名和密碼檢驗,UserLogin()返回一個串值,如果用戶名與密碼正確則返回用戶名,否則返回空串??丶a如下:privatevoidButton1_Click(objectsender,System.EventArgse) { UsersDBuser=newUsersDB(); stringusername=user.UserLogin(TextBox1.Text,TextBox2.Text); if(username.Length==0) { Label1.Visible=true; TextBox1.Text=""; TextBox2.Text=""; } else { Session["UserName"]=TextBox2.Text; Response.Redirect("~/bbs/ShowThread.aspx"); } }調(diào)用UserLogin()函數(shù)代碼如下:publicstringUserLogin(stringName,stringPassword) { //創(chuàng)建一個數(shù)據(jù)庫連接實例和命令對象。 SqlConnectionmyConnection=newSqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); SqlCommandmyCommand=newSqlCommand("Checkuser",myConnection); //把命令對象的命令類型設(shè)置為存儲過程。 myCommand.CommandType=CommandType.StoredProcedure; SqlParameterparameterName=newSqlParameter("@UserName",SqlDbType.NVarChar,20); parameterName.Value=Name; myCommand.Parameters.Add(parameterName); SqlParameterparameterPassword=newSqlParameter("@Pass",SqlDbType.NVarChar,20); parameterPassword.Value=Password; myCommand.Parameters.Add(parameterPassword); //執(zhí)行命令。 myConnection.Open(); SqlDataReaderreader=myCommand.ExecuteReader(CommandBehavior.CloseConnection); if(reader.Read()) returnName; else returnstring.Empty; }4.2論壇模塊用戶登陸后進入論壇主頁ShowThread.aspx。該頁面主要設(shè)計目的是顯示論壇所有的帖子,點擊某一帖子進入該帖子對應(yīng)的頁面。并可以通過點擊發(fā)表帖子控件進入發(fā)表帖子頁面,將發(fā)表的帖子即時的顯示在帖子主頁上。頁面設(shè)計如圖4-1所示。此頁面主要控件是myDataList控件,其它為顯示控件或超級連接控件。后臺首先通過Page_Load調(diào)用相關(guān)方法實現(xiàn)myDataList的數(shù)據(jù)綁定。綁定之前首先計算當(dāng)前頁面顯示的總的帖子數(shù),調(diào)用ThreadsDB中的CurrentPageThreads函數(shù),同時對頁面分頁。圖4-1論壇頁面設(shè)計視圖(1)Page_Load代碼如下所示:privatevoidPage_Load(objectsender,System.EventArgse) { if(!this.IsPostBack) { intTotalPage; intrecords; intpage; if(Request["page"]==null) { page=1; } else { try { page=Convert.ToInt32(Request["page"]); } catch { page=1; } } ThreadsDBthreads=newThreadsDB(); DataSetds; ds=threads.CurrentPageThreads(page,12,outTotalPage,outrecords); lblPage.Text=lblPage2.Text=page+"/"+TotalPage; lblRecord.Text=lblRecord2.Text=records.ToString() stringsUrl=Request.Url.ToString(); intstart=sUrl.LastIndexOf("&page"); if(start!=-1) sUrl=sUrl.Remove(start,sUrl.Length-start); if(page<=1) { hlPrev.NavigateUrl=sUrl+"&page=1"; hlPrev2.NavigateUrl=sUrl+"&page=1"; } else { hlPrev.NavigateUrl=sUrl+"&page="+(1); hlPrev2.NavigateUrl=sUrl+"&page="+(1); } if(page<TotalPage) { hlNext.NavigateUrl=sUrl+"&page="+(page+1); hlNext2.NavigateUrl=sUrl+"&page="+(page+1); } else { hlNext.NavigateUrl=sUrl+"&page="+page; hlNext2.NavigateUrl=sUrl+"&page="+page; } myDataList.DataSource=ds; myDataList.DataBind(); } }(2)上面代碼調(diào)用到的CurrentPageThreads()的方法代碼如下:publicDataSetCurrentPageThreads(intcurrentPage,intpageSize,outinttotalPage,outintrecords) {SqlConnectionmyConnection=newSqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);SqlDataAdaptermyCommand=newSqlDataAdapter("GetThreads",myConnection);myCommand.SelectCommand.CommandType=CommandType.StoredProcedure;DataSetallThreads=newDataSet(); myCommand.Fill(allThreads); DataSetdsCurrentThreads=newDataSet(); records=allThreads.Tables[0].Rows.Count; intstartIndex=(current1)*pageSize; intendIndex=startIndex+pageSize; totalPage=records/pageSize; if(totalPage*pageSize<records) { totalPage++; } if(endIndex>records) endIndex=records; dsCurrentThreads=allThreads.Clone(); for(inti=startIndex;i<endIndex;i++) { DataRowrow=dsCurrentThreads.Tables[0].NewRow(); row.ItemArray=allThreads.Tables[0].Rows[i].ItemArray; dsCurrentThreads.Tables[0].Rows.Add(row); } returndsCurrentThreads; }(3)CurrentPageThreads()方法調(diào)用存儲過程GetThreads,代碼如下:CREATEPROCEDUREGetThreadsasSelect(ThreadID,Subject,Author,Content,TotalView,Reply,PostTime)FromThreadsGO(4)最后,在HTML頁中對數(shù)據(jù)列進行具體的綁定,其中需將帖子標(biāo)題列綁定在超鏈接中。具體代碼如下:<tableborder="1"align="center"width="100%"cellpadding="0"cellspacing="0"> <tr><tdwidth="5%"><%#DataBinder.Eval(Container.DataItem,"ThreadID")%></td> <tdbgcolor="#FFDFBF"width="45%"><Ahref='ShowMessages.aspx?ID=<%#DataBinder.Eval(Container.DataItem,"ThreadID")%>'> <%#DataBinder.Eval(Container.DataItem,"Subject")%></A></td><tdbgcolor="#FFDFBF"width="20%"align="center"><%#DataBinder.Eval(Container.DataItem,"Author")%></td><tdbgcolor="#FFDFBF"width="5%"align="center"><%#DataBinder.Eval(Container.DataItem,"TotalView")%></td><tdbgcolor="#FFDFBF"width="5%"align="center"><%#DataBinder.Eval(Container.DataItem,"Reply")%></td><tdbgcolor="#FFDFBF"width="25%"><%#DataBinder.Eval(Container.DataItem,"PostTime")%></td></tr></table>4.3班級相冊模塊(1)圖片上載圖片上載頁面主要控件由文件上傳控件fileMyFile和Button1后臺代碼來實現(xiàn)。按鈕Button1首先取得上傳文件的文件名與文件擴展名,然后對文件擴展名進行比較,保證上傳的為bmp,jpeg,jpg,gif四種圖片中的一種,之后用photos類的對象photo調(diào)用類中的方法CheckPhotoName(),判斷上傳圖片名在數(shù)據(jù)庫中是否有重名。若無重名,則將圖片寫入到固定的文件夾中,同時將此圖片的文件名定入數(shù)據(jù)庫中,調(diào)用類photos的方法InsertPhoto()。設(shè)計視圖如圖4-2所示。Button1代碼如下所示:privatevoidButton1_Click(objectsender,System.EventArgse) { Photosphoto=newPhotos();stringfilename=Path.GetFileName(this.filMyFile.PostedFile.FileName.ToString());stringfileExt=Path.GetExtension(filename);if((fileExt==".gif")|(fileExt==".jpeg")|(fileExt==".bmp")|(fileExt==".jpg")) {if(photo.CheckPhotoName(filename)) { Label2.Text="上傳文件名已經(jīng)存在.請更改文件名后重新上傳."; } else {this.filMyFile.PostedFile.SaveAs(Server.MapPath("allphotos\\"+filename));photo.InsertPhoto(filename);Label2.Text="上傳成功";} }else { Label2.Text="請上傳圖片,只支持bmp,jpeg,gif,jpg格式."; }圖4-2圖片上載頁設(shè)計視圖CheckPhotoName()方法代碼如下所示:publicboolCheckPhotoName(stringphotoname) { SqlConnectionmyConnection=newSqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); SqlCommandmyCommand=newSqlCommand("CheckPhoto",myConnection); myCommand.CommandType=CommandType.StoredProcedure; //向存儲過程中傳遞參數(shù)。 SqlParameterparameterPhotoName=newSqlParameter("@PhotoName",SqlDbType.NVarChar,50); parameterPhotoName.Value=photoname; myCommand.Parameters.Add(parameterPhotoName); myConnection.Open(); SqlDataReaderreader=myCommand.ExecuteReader(CommandBehavior.CloseConnection); if(reader.Read()) returntrue; else returnfalse; }CheckPhotoName()中調(diào)用存儲過程代碼如下:CREATEPROCEDURECheckPhoto(@PhotoNamenvarchar(50))asSelect(PhotoName)FromPhtotsWhere@PhotoName=PhotoNameGOInsertPhoto()方法代碼如下:publicvoidInsertPhoto(stringphotoname) { SqlConnectionmyConnection=newSqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); SqlCommandmyCommand=newSqlCommand("InsertPhoto",myConnection); myCommand.CommandType=CommandType.StoredProcedure; //向存儲過程中傳遞參數(shù)。 SqlParameterparameterPhotoName=newSqlParameter("@PhotoName",SqlDbType.NVarChar,50); parameterPhotoName.Value=photoname; myCommand.Parameters.Add(parameterPhotoName); SqlParameterparameterupload=newSqlParameter("@uploadtime",SqlDbType.DateTime,8); parameterupload.Value=System.DateTime.Now; myCommand.Parameters.Add(parameterupload); //打開數(shù)據(jù)庫連接并執(zhí)行命令。 myConnection.Open(); myCommand.ExecuteNonQuery(); myConnection.Close(); }InsertPhoto()方法調(diào)用存儲過程InsertPhoto代碼如下:CREATEPROCEDUREInsertPhoto(@PhotoNamenvarchar(50))asinsertintoPhotosvalues(@PhotoName)GO(2)相冊瀏覽模塊相冊瀏覽頁的設(shè)計與帖子瀏覽頁的設(shè)計思想基本相同,包括顯示主控件myDataList和上傳圖片超鏈接按鈕。頁面設(shè)計如圖4-3所示。同樣,myDataList也需在后臺先進行表的數(shù)據(jù)綁定與分頁,然后在HTML中對表中的列綁定。圖4-3圖片瀏覽頁設(shè)計視圖后臺Page_Load源代碼如下:privatevoidPage_Load(objectsender,System.EventArgse) { if(!this.IsPostBack) { intTotalPage; intrecords; intpage; if(Request["page"]==null) { page=1; } else { try { page=Convert.ToInt32(Request["page"]); } catch { page=1; } } Photosphoto=newPhotos(); DataSetds; ds=photo.CurrentPagephotos(page,12,outTotalPage,outrecords); lblPage.Text=lblPage2.Text=page+"/"+TotalPage; lblRecord.Text=lblRecord2.Text=records.ToString(); stringsUrl=Request.Url.ToString(); intstart=sUrl.LastIndexOf("&page"); if(start!=-1) sUrl=sUrl.Remove(start,sUrl.Length-start); if(page<=1) { hlPrev.NavigateUrl=sUrl+"&page=1"; hlPrev2.NavigateUrl=sUrl+"&page=1"; } else { hlPrev.NavigateUrl=sUrl+"&page="+(1); hlPrev2.NavigateUrl=sUrl+"&page="+(1); } if(page<TotalPage) { hlNext.NavigateUrl=sUrl+"&page="+(page+1); hlNext2.NavigateUrl=sUrl+"&page="+(page+1); } else { hlNext.NavigateUrl=sUrl+"&page="+page; hlNext2.NavigateUrl=sUrl+"&page="+page; } myDataList.DataSource=ds; myDataList.DataBind(); } else { Response.Redirect("~/users/login.aspx"); } }CurrentPagephotos()代碼如下:publicDataSetCurrentPagephotos(intcurrentPage,intpageSize,outinttotalPage,outintrecords) { SqlConnectionmyConnection=newSqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); SqlDataAdaptermyCommand=newSqlDataAdapter("SelectPhotos",myConnection); myCommand.SelectCommand.CommandType=CommandType.StoredProcedure; //建立并填充一個DataSet。 DataSetallPhotos=newDataSet(); myCommand.Fill(allPhotos); //創(chuàng)建一個新的DataSet。 DataSetdsCurrentPhotos=newDataSet(); //計算所有Photos的條數(shù)。 records=allPhotos.Tables[0].Rows.Count; //計算當(dāng)前頁第一條Photos的位置。 intstartIndex=(current1)*pageSize; //計算當(dāng)前頁最后一條Photos的位置。 intendIndex=startIndex+pageSize; //計算Photos的頁數(shù)。 totalPage=records/pageSize; if(totalPage*pageSize<records) { totalPage++; } if(endIndex>records) endIndex=records; //建立一個與dsCurrentPhotos數(shù)據(jù)結(jié)構(gòu)完全一樣的DataSet. dsCurrentPhotos=allPhotos.Clone(); //取得當(dāng)前頁的所有記錄,并保存到新的DataSet中去。 for(inti=startIndex;i<endIndex;i++) { DataRowrow=dsCurrentPhotos.Tables[0].NewRow(); row.ItemArray=allPhotos.Tables[0].Rows[i].ItemArray; dsCurrentPhotos.Tables[0].Rows.Add(row); } returndsCurrentPhotos; }調(diào)用存儲過程SelectPhotos代碼如下:CREATEPROCEDURESelectPhotosASSelect*FromPhotosGO最后在HTML頁中對其myDataList進行列綁定。綁定形式在前面已有,這里不再給出。4.4留言簿模塊留言簿的實現(xiàn)與論壇的實現(xiàn)大同小異,頁面包括一個主控件Repeater和提交留言按鈕Button1,設(shè)計視圖如圖4-4所示。圖4-4留言簿設(shè)計視圖Repeater控件代碼與論壇DataList控件代碼相似,Button1后臺代碼如下:privatevoidbtnSubmit_Click(objectsender,System.EventArgse) {GuestBooksDBGuestBook=newGuestBooksDB();GuestBook.AddGuestBook(userNameField.Text,contentField.Text,subjectFiel.Text);Response.Redirect("GuestBook.aspx"); }AddGuestBook()方法代入三個參數(shù):留言人姓名,留言標(biāo)題,留言內(nèi)容,并調(diào)用存儲過程AddGuestBook,將值傳入數(shù)據(jù)庫添加留言。4.5管理員模塊管理員模塊主要是對各模塊的信息進行管理,總體設(shè)計為,在頁面加入四個DataGrid控件,用以顯示各模塊信息,同時加入四個Panel控件,將四個DataGrid控件一一拖入其中,再建立一個頁面頭建立一個導(dǎo)航欄,通過選擇進行對某一模塊中信息的刪除。用戶模塊的實現(xiàn)過程建立用戶模塊控件DataGrid1的綁定函數(shù),如下所示:privatevoidUsersBind() { UsersDBuser=newUsersDB(); DataSetds; ds=user.GetUsers(); this.DataGrid1.DataSource=ds; this.DataGrid1.DataKeyField="ID"; this.DataGrid1.DataBind(); }利用Button1調(diào)用此綁定函數(shù)并設(shè)置Panel1的Visible屬性為true,利用DataGrid1_DeleteCommand事件執(zhí)行刪除命令并對DataGrid1進行重綁定。當(dāng)然DataGrid1_DeleteCommand必須先在privatevoidInitializeComponent()中聲明。DataGrid1_DeleteCommand代碼如下:privatevoidDataGrid1_DeleteCommand(objectsource,System.Web.UI.WebControls.DataGridCommandEventArgse) {
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年初中語文實踐活動設(shè)置試題及答案
- 2024年心理咨詢師考試的學(xué)習(xí)社區(qū)試題及答案
- 2024心理咨詢師考試臨床能力試題及答案
- 心理咨詢師考試高效復(fù)習(xí)法試題及答案
- 語文學(xué)習(xí)資料關(guān)鍵點試題及答案
- 情緒障礙的評估與干預(yù)試題及答案
- 心理咨詢師應(yīng)試技巧與試題
- 2025-2030年迷你U盤項目商業(yè)計劃書
- 2025-2030年載客型電動三輪車項目商業(yè)計劃書
- 2025-2030年貝枇杷露項目商業(yè)計劃書
- 墻面彩鋼瓦更換施工方案
- 2023年遼寧省生物學(xué)競賽初賽試卷及答案
- 安全生產(chǎn)培訓(xùn)一月課件
- 70歲換證三力測試題附答案
- 內(nèi)蒙古自治區(qū)義務(wù)教育課程設(shè)置計劃
- 醫(yī)療機構(gòu)病歷管理規(guī)定()
- 銷售的五大流程
- 初二力學(xué)練習(xí)冊-題答案
- 【超星爾雅學(xué)習(xí)通】《語言與文化》2020章節(jié)測試題及答案
- 中國近代史 馬工程課件09第九章 國共合作與國民革命
- GB/T 40802-2021通用鑄造碳鋼和低合金鋼鑄件
評論
0/150
提交評論