




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE基于Php的班级风采网站的设计摘要班级风采网站是为了合理利用网络资源、提供班级学习与交流、有效管理班级事务的网络平台。本网站基于B/S模式,在Php集成开发环境下采用C#语言开发完成。本网站由用户模块、在线论坛、风采相册、留言簿模块与管理模块等构成,其中用户模块实现了用户注册、登陆与修改个人资料等功能;在线论坛提供交流平台;风采相册实现图片上载和在线浏览功能;留言簿模块实现网上留言功能;管理模块实现用户管理、论坛管理、相册管理与留言簿管理等功能。本网站能促进班级内学生交流学习,实现用户自由访问,促进学习相互了解,增强班级凝聚力。关键字:网站;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#
目录论文总页数:24页1.引言 11.1设计背景 11.2系统配置 11.3开发工具与平台 12.概要设计 22.1功能需求 22.2系统流程 22.3模块组织 33.数据库设计 43.1需求分析 43.2数据库表结构 44.详细设计 64.1导航栏与登录模块 64.2论坛模块 74.3班级相册模块 114.4留言簿模块 174.5管理员模块 175.系统性能测试 18结论 22参考文献 22致谢 23声明 24第21页共24页1.引言1.1设计背景随着网络技术不断发展,计算机的普及,越来越多的人拥有了自己的电脑,越来越多的学校和班级通过计算机网络来管理其各项事务。同时,学生与学生之间通过网络来交流的方式也日趋频繁。在这种潮流的驱使之下,应该采用什么样的方式来更好的管理学生的各项信息,班级的各项日常事务,以及怎样使学生之间能够更好的交流,成为一个问题。本系统使用PHP技术的动态网页与SQLServer2000数据库结合设计建立的一个网络班级风采网站。用户首先通过内部网络访问本网站,进行简单的注册并经管理员审核通过后,即拥有了使用本网站上所提供的除管理模块外的各功能的权力。功能模块包括在线论坛、留言簿、风采相册等。在线论坛提供用户之间的主要的交流的平台,用户可以发起自己的帖子,来引起班级其它同学的对本帖的讨论或回复,同时用户也可对自己或别人的帖子提出自己的见解,从而很好地促进了班级内同学的交流。留言簿提供网上留言功能。留言可以是班级的老师班长或其它同学的留言,通过网络的迅捷的传输速率达到快速了解及处理班级事务的目的。风采相册可以将班级内同学的相册传到网站上自由浏览,增加班级的亲和力。以上的几个功能很好的解决了上面所提出的问题。1.2系统配置运行本系统需要满足以下的一些配置要求。硬件环境服务器端/客户端:处理器:IntelPentium4内存:256M硬盘空间:20G软件环境操作系统:Windows2000/2003/XP网络协议:TCP/IP浏览器:InternetExplorer6.0显示器:VGA或更高分辨率的显示器1.3开发工具与平台PHP,一个嵌套的缩写名称,是英文"超级文本预处理语言"(PHP:HypertextPreprocessor)的缩写。PHP是一种HTML内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的"嵌入HTML文档的脚本语言",语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。它可以比CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言JavaScript相比,PHP在服务器端执行,成分利用了服务器的性能;PHP执行引擎还会将用户经常访问的PHP程序驻留在内存中,其他用户在一次访问这个程序时就不需要重新编译程序了,只须直接执行内存中的代码就可以了,这也是PHP高效率的体现之一。PHP具有非常强大的功能,所有的CGI或者JavaScript的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。PHP最强大最显著的特性之一,是它支持很大范围的数据库。您会发现利用PHP编写数据库支持的网页简单得难以置信。目前,PHP支持如下数据库:AdabasDIngresOracle(OCI7andOCI8)dBaseInterBaseOvrimosEmpressFrontBasePostgreSQLFilePro(read-only)mSQLSolidHyperwaveDirectMS-SQLSybaseIBMDB2MySQLVelocisInformixODBCUnixdbm(实际上通过扩展库的应用,php也可以连接access等)*开放源码--所有的PHP源码都可以得到。事实上,所有的源码都包含在随书附带的光盘中。*没有运行费用--PHP是免费的。*基于服务器端--由于PHP是在Web服务器端运行的,PHP程序可以很大、很复杂而不会降低客户端的运行速度。*跨平台--虽然我是以win2000操作系统下构建网站的,但PHP程序可以运行在UNIX,Linux,或者Windows等所有主流操作系统下。*嵌入HTML--因为PHP语言可以嵌入到HTML内部,所以PHP很容易学习。*简单的语言--和Java和C++不同,PHP语言坚持以基本语言为基础,然而它的功能也强大到足以支持任何类型的Web站点。*效率高--和其它的解释性语言相比,PHP系统消耗较少的系统资源。当PHP作为ApacheWeb服务器的一部分时,运行代码不需要调试外部二进制程序,服务器解释脚本不需要承担任何额外负担。*分析XML--用户可以组建一个可以读取XML信息的PHP版本。*数据库模块--用户可以使用PHP存取Oracle、Sybase、MSSQL、AdabaseD、MySQL、mSQL、PostgreSQL、dBase、FilePro、Unixdbm、Informix/Illustra等类型的数据库,以及任何支持ODBC标准的数据库。*文件存取--PHP有许多支持文件存取函数。*文本处理--PHP有许多函数处理字符串,其中包括模式匹配的能力。*复杂的变量--PHP支持标量、数组、关联数组等变量,这给用户提供了以支持其它的高级数据结构的坚实基础。*图象处理--用户可以使用PHP动态的创建输出图像、PDF文件甚至Flash动画(使用libswf和Ming)。*更多其他功能。2.3MySQL数据库MySQL是一个开发性的关系型数据库管理系统。它将数据存储在不同的表,并不是简单的将所有数据都放在一个大型的仓库。它是可以提高数据读取的速度和灵活性的RDBMS。[7]MySQL的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件拥有社区版和商业版两大版本。因为MySQL体积小、速度快、总成本低,尤其是开放源码这一特点,所以得到了大小型网站开发者的青睐,他们都十分愿意选择MySQL作为数据库。[8]一般对于个人使用者来说MySQL的功能已经十分全面了。在多次比较了Oracle、DB2、SQLserver之后,本论文还是选择了MySQL作为新月出租车公司管理系统的数据库。2.4B/S结构介绍B/S结构就是只安装和维护一个服务器,客户端是利用浏览器来运行软件。随着Internet技术的兴起和发展。C/S结构已经无法满足人们的要求。于是人们开始变换的C/S,这产生了B/S结构。B/S比C/S的维护工作量大大减少了。[9]C/S结构的每个客户端都必须安装和配置软件。B/S能够降低总体拥有成本。随着计算机技术的发展,目前大多数科技公司都不约而同的对数据提出了实时性、一致性和安全性等这些要求。传统类型C/S结构根本达不到这些要求,迫切的需要做出改变。但是B/S结构则不同,它可以清楚正确的看到系统正在处理的业务,这样有利于管理人员快速的做出决策,有效地避免了企业经济上的亏损。B/S结构的软件,因为在数据集中在数据库服务器,客户端不持有任何业务数据和数据库连接信息,也无需进行数据同步,所以安全性可以大大提高。B/S结构中的数据采取了集中式管理模式。当客户端的业务产生数据时,这些数据都直接被存入中央数据库。这样的做法避免了数据一致性的问题。这些优点很好更好的迎合了人们的需要。[10] 以当下技术水平来说,利用B/S结构来开发网络应用,并通过Internet/Intranet模式下数据库应用,是容易把握的而且成本也是比较低的。这样的开发模式实现了不同的人,从不同的地点,不同的接入方式访问和操作共同的数据库;它可以有效地保护和管理数据访问平台,服务器数据库也是非常安全的。尤其是在这样一种跨平台语言JAVA之后出现,B/S体系结构管理软件是更方便、更快捷、更高效。。2.概要设计2.1功能需求为了满足班级风采网站的交流的根本目的,根据班级所固有的特点,本网站应包括五大模块:用户模块、在线论坛、风采相册、留言簿模块与管理模块。用户模块主要功能就包括角色划分与用户注册,角色主要划分为一般用户和管理员,一般用户可以对自己的信息查询及修改等,管理员通过管理模块来管理整个网站;在线论坛,论坛主要实现注册用户能在此网站平台之上交流,一般用户可以回复别人的发言,亦可提出自己的言论,以获取他人的建议与意见;风采相册,包括用户上传图片以及图片的浏览功能;留言簿模块,实现用户在线留言。最后是管理模块,主要是管理员对于整个网站的综合性管理,包括用户模块管理、在线论坛管理、相册管理与留言簿管理。2.2系统流程根据设计要求,用户登陆本网站首页时,选择用户的角色,管理员选择管理员入口进入管理员登陆页面,验证成功后直接进入网站管理模块,对班级的各模块进行管理,包括用户管理、论坛管理、相册管理与留言簿管理。一般用户通过普通用户入口进入一般用户登陆界面,在此页面登陆验证成功后即拥有了访问网站各项功能的权力。包括个人信息、论坛、上载图片、浏览图片、给班级留言等功能。班级风采网站使用流程如图2-1所示。成功录失败录网站首页图2-1网站使用流程图成功录失败录网站首页2.3模块组织整个班级网站主要包括的模块有:用户模块、论坛模块、管理员模块、相册模块与留言簿模块。其中管理员模块可化分为用户管理模块、论坛管理模块、相册管理模块与留言簿管理模块四大块。模块组织如图2-2所示。用户模块论坛模块管理员模块相册模块班级网站用户管理模块论坛管理模块用户模块论坛模块管理员模块相册模块班级网站用户管理模块论坛管理模块相册管理模块留言簿模块留言簿管理模块3.数据库设计3.1需求分析作为一个班级风采网站系统,同其他类型的网站一样,首先应该包括用户表,用户表用来存储已注册用户的各项信息。在线论坛对应于数据库中两张表:帖子信息表和帖子回复表。帖子信息表中存储了论坛中用户发的所有帖子。同时每一个帖子都应有它的回复,在数据库的存储中,将所有的帖子的回复都放到了帖子回复表中,通过表中帖子的不同编号来区分不同的帖子的回复。网站还包括相册模块和留言簿模块,因此数据库中还应包含图片信息表与留言表用来存储上载图片的所有信息和留言的各项信息。3.2数据库表结构根据需求分析及模块划分,设计数据库表结构如下。(1)用户信息表用户信息表中包括有用户编号,用户名,用户密码,用户QQ,用户E-mail,用户自我描述共六个字段,主键为用户编号,具体设计如表3-1所示。表3-1用户基本信息表Users编号字段名称数据类型说明1IDInt用户ID(主键)(自动)2UserNameNvarchar(20)用户登录名3PassNvarchar(20)用户密码4QQInt用户QQ号5MailNvarchar(50)E-mail6SignNvarchar(200)用户自我介绍(2)帖子信息表表3-2帖子信息表Threads编号字段名称数据类型说明1ThreadIDInt帖子编号(主键)2AuthorNvarchar(50)发帖人用户名3SubjectNvarchar(50)帖子标题4ContentNtext(16)帖子内容5ReplyInt帖子总回复数6TotalViewInt帖子被浏览数7PostTimeDatetime发帖时间帖子信息表包括帖子编号,发帖用户名,帖子标题,帖子内容,帖子总回复数,帖子总浏览数,发帖时间共七个字段,主键为帖子编号,具体设计如表3-2所示。(3)帖子回复表回复信息表包括回复信息编号,帖子编号,回复标题,回复内容,回复者用户名,回复时间共六个字段。主键为回复信息编号,帖子编号是此表的外键,用此字段与帖子表的主键帖子编号相联系。具体设计如表3-3所示。表3-3回复信息表Messages编号字段名称数据类型说明1MessageIDInt信息ID(主键)(自动)2ThreadIDInt帖子编号(外键)3SubjectNvarchar(50)回复信息标题4ContentNtext回复内容5AuthorNvarchar(50)回复者6PostTimeDatetime回复时间(4)相册表相册表包括相片编号,相片名称,相片上载时间共三个字段,主键为相片编号,具体设计如表3-4所示。表3-4相册表Photos编号字段名称数据类型说明1PhotoIDInt照片ID(主键)2PhotoNameNvarchar(50)照片名称3uploadtimeDatetime上传时间(5)留言表留言表包括留言编号,留言者姓名,留言标题,留言内容,留言时间共五个字段,主键为留言编号,具体设计如表3-5所示。表3-5留言表GuestBook编号字段名称数据类型说明1GuestBookIDInt留言ID(主键)(自动)2SubjectNvarchar(50)留言标题3ContentNtext留言内容4UsernameNvarchar(50)留言者姓名5UptimeDatetime留言时间4.详细设计4.1导航栏与登录模块按用户的不同身份:一般用户和管理员,在一开始连接上网站即通过不同身份选择不同的登陆入口:一般用户登陆入口与管理员登陆入口。在用户登陆界面既可进行用户的登陆,同时也可点击注册按钮进入注册页面。管理员登陆成功后即可对网站进行管理。(1)导航栏导航栏的设计主要是建立一个用户自定义控件Header.ascx。在Header.ascx中,先插入一张表,然后将连接到各模块主页面的超链接图片插入其中,完成自定义控件的建立。在每个需要加入它的页面首先进行注册,然后在<from>中进行调用即可。如:<%@RegisterTagPrefix="uc1"TagName="header"Src="~/selfcontrol/header.ascx"@%><from><uc1:headerid="header1"runat="server"></uc1:header></from>(2)登录页面登陆页面主要控件为用户登陆按钮Button1,点击后在后台执行代码,首先声明一UsersDB的对象,调用UsersDB的UserLogin()函数,UserLogin()函数再调用存储过程Checkuser执行用户名和密码检验,UserLogin()返回一个串值,如果用户名与密码正确则返回用户名,否则返回空串。控件代码如下: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"); } }调用UserLogin()函数代码如下:publicstringUserLogin(stringName,stringPassword) { //创建一个数据库连接实例和命令对象。 SqlConnectionmyConnection=newSqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); SqlCommandmyCommand=newSqlCommand("Checkuser",myConnection); //把命令对象的命令类型设置为存储过程。 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); //执行命令。 myConnection.Open(); SqlDataReaderreader=myCommand.ExecuteReader(CommandBehavior.CloseConnection); if(reader.Read()) returnName; else returnstring.Empty; }4.2论坛模块用户登陆后进入论坛主页ShowThread.aspx。该页面主要设计目的是显示论坛所有的帖子,点击某一帖子进入该帖子对应的页面。并可以通过点击发表帖子控件进入发表帖子页面,将发表的帖子即时的显示在帖子主页上。页面设计如图4-1所示。此页面主要控件是myDataList控件,其它为显示控件或超级连接控件。后台首先通过Page_Load调用相关方法实现myDataList的数据绑定。绑定之前首先计算当前页面显示的总的帖子数,调用ThreadsDB中的CurrentPageThreads函数,同时对页面分页。图4-1论坛页面设计视图(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)上面代码调用到的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()方法调用存储过程GetThreads,代码如下:CREATEPROCEDUREGetThreadsasSelect(ThreadID,Subject,Author,Content,TotalView,Reply,PostTime)FromThreadsGO(4)最后,在HTML页中对数据列进行具体的绑定,其中需将帖子标题列绑定在超链接中。具体代码如下:<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后台代码来实现。按钮Button1首先取得上传文件的文件名与文件扩展名,然后对文件扩展名进行比较,保证上传的为bmp,jpeg,jpg,gif四种图片中的一种,之后用photos类的对象photo调用类中的方法CheckPhotoName(),判断上传图片名在数据库中是否有重名。若无重名,则将图片写入到固定的文件夹中,同时将此图片的文件名定入数据库中,调用类photos的方法InsertPhoto()。设计视图如图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="上传文件名已经存在.请更改文件名后重新上传."; } else {this.filMyFile.PostedFile.SaveAs(Server.MapPath("allphotos\\"+filename));photo.InsertPhoto(filename);Label2.Text="上传成功";} }else { Label2.Text="请上传图片,只支持bmp,jpeg,gif,jpg格式."; }图4-2图片上载页设计视图CheckPhotoName()方法代码如下所示:publicboolCheckPhotoName(stringphotoname) { SqlConnectionmyConnection=newSqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); SqlCommandmyCommand=newSqlCommand("CheckPhoto",myConnection); myCommand.CommandType=CommandType.StoredProcedure; //向存储过程中传递参数。 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()中调用存储过程代码如下:CREATEPROCEDURECheckPhoto(@PhotoNamenvarchar(50))asSelect(PhotoName)FromPhtotsWhere@PhotoName=PhotoNameGOInsertPhoto()方法代码如下:publicvoidInsertPhoto(stringphotoname) { SqlConnectionmyConnection=newSqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); SqlCommandmyCommand=newSqlCommand("InsertPhoto",myConnection); myCommand.CommandType=CommandType.StoredProcedure; //向存储过程中传递参数。 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); //打开数据库连接并执行命令。 myConnection.Open(); myCommand.ExecuteNonQuery(); myConnection.Close(); }InsertPhoto()方法调用存储过程InsertPhoto代码如下:CREATEPROCEDUREInsertPhoto(@PhotoNamenvarchar(50))asinsertintoPhotosvalues(@PhotoName)GO(2)相册浏览模块相册浏览页的设计与帖子浏览页的设计思想基本相同,包括显示主控件myDataList和上传图片超链接按钮。页面设计如图4-3所示。同样,myDataList也需在后台先进行表的数据绑定与分页,然后在HTML中对表中的列绑定。图4-3图片浏览页设计视图后台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); //创建一个新的DataSet。 DataSetdsCurrentPhotos=newDataSet(); //计算所有Photos的条数。 records=allPhotos.Tables[0].Rows.Count; //计算当前页第一条Photos的位置。 intstartIndex=(current1)*pageSize; //计算当前页最后一条Photos的位置。 intendIndex=startIndex+pageSize; //计算Photos的页数。 totalPage=records/pageSize; if(totalPage*pageSize<records) { totalPage++; } if(endIndex>records) endIndex=records; //建立一个与dsCurrentPhotos数据结构完全一样的DataSet. dsCurrentPhotos=allPhotos.Clone(); //取得当前页的所有记录,并保存到新的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; }调用存储过程SelectPhotos代码如下:CREATEPROCEDURESelectPhotosASSelect*FromPhotosGO最后在HTML页中对其myDataList进行列绑定。绑定形式在前面已有,这里不再给出。4.4留言簿模块留言簿的实现与论坛的实现大同小异,页面包括一个主控件Repeater和提交留言按钮Button1,设计视图如图4-4所示。图4-4留言簿设计视图Repeater控件代码与论坛DataList控件代码相似,Button1后台代码如下:privatevoidbtnSubmit_Click(objectsender,System.EventArgse) {GuestBooksDBGuestBook=newGuestBooksDB();GuestBook.AddGuestBook(userNameField.Text,contentField.Text,subjectFiel.Text);Response.Redirect("GuestBook.aspx"); }AddGuestBook()方法代入三个参数:留言人姓名,留言标题,留言内容,并调用存储过程AddGuestBook,将值传入数据库添加留言。4.5管理员模块管理员模块主要是对各模块的信息进行管理,总体设计为,在页面加入四个DataGrid控件,用以显示各模块信息,同时加入四个Panel控件,将四个DataGrid控件一一拖入其中,再建立一个页面头建立一个导航栏,通过选择进行对某一模块中信息的删除。用户模块的实现过程建立用户模块控件DataGrid1的绑定函数,如下所示:privatevoidUsersBind() { UsersDBuser=newUsersDB(); DataSetds; ds=user.GetUsers(); this.DataGrid1.DataSource=ds; this.DataGrid1.DataKeyField="ID"; this.DataGrid1.DataBind(); }利用Button1调用此绑定函数并设置Panel1的Visible属性为true,利用DataGrid1_DeleteCommand事件执行删除命令并对DataGrid1进行重绑定。当然DataGrid1_DeleteCommand必须先在privatevoidInitializeComponent()中声明。DataGrid1_DeleteCommand代码如下:privatevoidDataGrid1_DeleteCommand(objectsource,System.Web.UI.WebControls.DataGridCommandEventArgse) {
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国合成纤维聚酯切片数据监测研究报告
- 2025至2030年中国仿皮表盒数据监测研究报告
- 河南省周口市扶沟县2024-2025学年九年级上学期1月期末化学试题(含答案)
- 跳水闯关考试题及答案
- 2025年军队文职人员招聘之军队文职法学能力测试试卷A卷附答案
- 2025年军队文职人员招聘之军队文职政治学全真模拟考试试卷A卷含答案
- 2019-2025年消防设施操作员之消防设备中级技能题库检测试卷B卷附答案
- 2024河北省中考英语真题含答案
- 邮轮切舱合同(2篇)
- 采购追加合同范本(2篇)
- 多元智能教育培养学生全面发展的核心能力培训课件
- 学习投入度测量工具
- 各种螺钉尺寸-标准螺钉尺寸表
- 高速通道施工方案
- 颈椎损伤的识别与处理
- 厂房分布式光伏系统施工进度计划横道图
- 智能化工程施工重难点分析
- (完整版)建筑工程技术毕业论文
- 工业用烤箱安全操作规程范本
- 鑫宇锌合金模具设计标准
- 基于实验教学培养学生物理核心素养的研究
评论
0/150
提交评论