留言板网站论文-毕业论文_第1页
留言板网站论文-毕业论文_第2页
留言板网站论文-毕业论文_第3页
留言板网站论文-毕业论文_第4页
留言板网站论文-毕业论文_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要随着我国经济发展,计算机以及计算机网络的应用也日益凸显出其举足轻重的地位,而留言系统的开发也成为必不可少的需求。留言系统属于信息采集和管理系统。其开发的主要功能包括:在主页面提示部分信息,使访问者可以看到最近时间段内的留言;访问者可以访问自己感兴趣的留言内容;访问者可以在写下自己的留言,可以给网站提出建议,发表自己的看法;设置管理员,管理员通过身份认证可以对所有留言进行管理,包括删除,回复等。这种系统实现在线的查看,查找,管理,留言操作,功能强大,方便跨地域操作,扩展能力良好。基于利用计算机网络的巨大潜力、数据信息的理念,从而减少人力、物力及财力上的消耗,完成合理的分配资源。ABSTRACTAsChina'seconomicdevelopment,theapplicationofcomputersandcomputernetworksarealsoincreasinglyhighlighteditspivotalposition,whilethemessagesystemdevelopmenthasbecomeanessentialneeds.Messagesystemsareinformationcollectionandmanagementsystems.

Thedevelopmentofitsmainfunctionsinclude:

Promptedsomeoftheinformationinthemainpage,sothatvisitorscanseetherecenttimeperiodofthemessage;

Visitorscanaccessyourinterestedmessagecontent;

Visitorscanwritetheirownmessage,youcanmakerecommendationstothesitetoexpresstheirviews;

Setupanadministrator,theadministratorthroughallmessageauthenticationcanbemanaged,includingdelete,replyandsoon.

Toachievesuchasystemonlinetoview,find,manage,messageoperations,powerful,convenientcross-boundaryoperations,goodscalability.Basedonthegreatpotentialofusingcomputernetworks,data,information,ideas,thusreducingmanpower,materialandfinancialresourcesconsumption,thecompletionofareasonableallocationofresources.目录摘要 IABSTRACT II1绪论1.1课题的提出、现状及研究意义1.2课题的研究内容1.3论文的章节安排2相关技术介绍2.1XML简介2.2ASP.NET简介2.3Web服务简介3系统需求分析3.1系统可行性分析3.2系统需求分析3.3系统数据流图3.4系统数据字典4系统设计4.1系统总体结构4.2系统详细设计4.2.1普通用户模块详细设计4.2.2管理员模块详细设计4.3数据库设计4.3.1概念设计4.3.2逻辑设计4.3.3视图设计5系统实现5.1系统数据库连接实现5.2系统前台页面的实现5.2.1用户控件5.2.2留言系统首页5.2.3留言页面5.3普通用户功能模块实现5.3.1登录实现5.3.2提示部分信息(可以深入了解用户感兴趣的内容)5.3.3用户留言的实现5.4管理员功能模块实现5.4.1管理员登录实现5.4.2登录的验证实现5.4.3回复留言的实现5.4.4删除留言的实现5.4.5设置系统配置信息6结束语6.1主要研究工作6.2进一步研究的方向致谢致谢 44参考文献 451绪论1.1课题的提出、现状及研究意义课题的准备背景意义:随着我国经济发展,计算机以及计算机网络的应用也日益凸显出其举足轻重的地位,而留言系统的开发也成为必不可少的需求。留言系统属于信息采集和管理系统。其开发的主要功能包括:在主页面提示部分信息,使访问者可以看到最近时间段内的留言;访问者可以访问自己感兴趣的留言内容;访问者可以在写下自己的留言,可以给网站提出建议,发表自己的看法;设置管理员,管理员通过身份认证可以对所有留言进行管理,包括删除,回复等。这种系统实现在线的查看,查找,管理,留言操作,功能强大,方便跨地域操作,扩展能力良好。基于利用计算机网络的巨大潜力、数据信息的理念,从而减少人力、物力及财力上的消耗,完成合理的分配资源。课题的基本思路:本课题是设计一个基于.net的留言系统。该系统主要实现在线留言,并对部分留言内容更进一步的访问以及管理操作。采用技术方法:Microsoft.NET是一组能够建立良好的,企业级的web服务的产品。Microsoft.NET是一个产品策略。Microsoft.NET允许创建真正意义上的分布式“Web服务”,从而将各种服务集中起来并使之相辅相成地为用户服务。以软件工程思想为指导从需求分析,概要设计,详细设计,测试计划,测试用例以及实施各阶段的主要内容和成果,包括系统结构图、业务流程图、数据流程图、功能模块算法流程、界面设计并参考大量图书,电子文档等等。将采用Web服务和ASP.NET语言编写,完成设计。使用Web服务技术会简化和方便Internet应用的开发和使用,实现真正的网上留言处理与管理。1.2课题的研究内容该选题需要了解留言信息管理信息方面的知识。因此要求掌握ASP.NET和WEB服务等计算机专业知识。Web服务的留言系统设计与实现是将留言信息管理和计算机网络功能结合起来的一种新型系统,是当前新技术革命中一个非常活跃和具有很强生命力的技术应用领域,是信息化社会的产物。因此该系统的开发有一定的可行性,适应发展和信息的查询。1.3论文的章节安排整篇论文是基于Web服务为背景,从Web服务的知识、体系结构等方面,介绍Web服务的留言板系统设计与实现。具体章节安排如下:第一章绪论阐明了论文课题的提出及其意义,以及本课题研究内容。第二章主要介绍了研究本课题的相关技术和个性技术的特征、功能和应用领域。第三章介绍系统的需求分析,并重点分析了系统功能需求分析以及系统的数据流图等。第四章介绍系统设计,并对系统的数据库设计进行的重点分析。第五章进行系统实现设计的分析,包括界面分析和代码说明。第六章是结束语。总结论文所做的主要工作及取得的研究成果;并对系统和Web服务下一步要做的工作进行了分析。2相关技术介绍2.1XML简介XML(ExtensibleMarkupLanguage)即可扩展标记语言,它与HTML一样,都是SGML(StandardGeneralizedMarkupLanguage,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。XML是从1996年开始有其雏形,并向W3C(全球信息网联盟)提案,而在1998二月发布为W3C的标准(XML1.0)。XML的前身是SGML(TheStandardGeneralizedMarkupLanguage),是自IBM从60年代就开始发展的GML(GeneralizedMarkupLanguage)标准化后的名称。Xml的作用主要归纳为:丰富文件(RichDocuments)-自定文件描述并使其更丰富属于文件为主的XML技术应用标记是用来定义一块数据应该如何呈现解释数据(Metadata)-描述其它文件或在线信息属于数据为主的XML技术应用标记是用来说明一块资料的意义组态档案(ConfigurationFiles)-描述软件的组态参数2.2ASP.NET简介ASP是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术。指ActiveServerPages(动态服务器页面),运行于IIS之中的程序。ASP.net是把基于通用语言的程序在服务器上运行。不像以前的ASP即时解释程序,而是将程序在服务器端首次运行时进行编译,这样的执行效果,当然比一条一条的解释强很多。ASP.net构架是可以用Microsoft(R)公司最新的产品VisualS开发环境进行开发,WYSIWYG(WhatYouSeeIsWhatYouGet所见即为所得)的编辑。这些仅是ASP.net强大化软件支持的一小部分。因为ASP.net是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上(笔者到现在为止只知道它只能用在Windows2000Server上)。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到ASP.net的Web应用中。ASP.net同时也是language-independent语言独立化的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经支持的有C#(C++和Java的结合体),VB,Jscript。将来,这样的多种程序语言协同工作的能力保护您现在的基于COM+开发的程序,能够完整的移植向ASP.net。ASP.NET一般分为两种开发语言,VB.NET和C#,C#相对比较常用,因为是.NET独有的语言,VB.NET则为以前VB程序设计,适合于以前VB程序员,如果新接触.NET,没有其他开发语言经验,建议直接学习C#。2.3Web服务简介Web服务(WebService)是基于XML和HTTPS的一种服务,其通信协议主要基于SOAP,服务的描述通过WSDL,通过UDDI来发现和获得服务的元数据。Web服务是一种新的重要的应用程序。Web服务是一段可以用XML发现、描述和访问的代码。在这一领域有许多活动,但有三种主要的用于Web服务的XML标准:SOAP:最初是简单对象访问协议(SimpleObjectAccessProtocol),SOAP定义一个XML文档格式,该格式描述如何调用一段远程代码的方法。我的应用程序创建一个描述我希望调用的方法的XML文档,并传递给它所有必需的参数,然后应用程序通过网络将该XML文档发送给那段代码。代码接收XML文档、解释它、调用我请求的方法,然后发回一个描述结果的XML文档。SOAP规范版本1.1位于/TR/SOAP/。请访问/TR/以了解W3C中SOAP相关的所有活动。WSDL:Web服务描述语言(WebServicesDescriptionLanguage)是一个描述Web服务的XML词汇表。编写一段接收WSDL文档然后调用其以前从未用过的Web服务的代码,这是可能的。WSDL文件中的信息定义Web服务的名称、它的方法的名称、这些方法的参数和其它详细信息。您可以在/TR/wsdl(结尾没有斜杠符号)找到最新的WSDL规范。UDDI:统一描述、发现和集成(UniversalDescription,Discovery,andIntegration)协议向Web服务注册中心定义SOAP接口。如果您有一段代码希望作为Web服务部署,UDDI规范定义如何将您的服务描述添加至注册中心。如果您在寻找一段提供某种功能的代码,UDDI规范定义如何查询注册中心以找到您想要的信息。有关UDDI的所有资料来源都可以在找到。3系统需求分析3.1系统可行性分析系统的可行性分析主要是技术可行性,经济可行性,操作可行性。技术条件可行性:Internet的发展给我们的教育更加现代化,几乎所有的网站都使用到了留言内容,用它来记录访问用户对网站的建议,以帮助网站更好的发展。目前在呈几何增长的因特网网站中,有相当一部分仍然固守“静态”,这无形中已经大大落后与时代的步伐。当用户浏览器通过因特网向web服务器请求提供网页内容时,服务器仅仅是标准的HTML代码,最多再加上流行的动态图片,产生简单的动画效果。如果网站维护者需要更新网页的内容时,就必须手动更新所有相关的HTML文档。为了不断更新网页内容,必须不断重复制作HTML文档,随着网站内容和信息量的日益扩增,这个工作量将变的及其庞大。而如今很多网站都属于动态网站,其具有较强的交互性,能够根据用户的要求和选择做出动态改变;能够自动更新,即不需要手动更新HTML文档,便会自动生成新的页面,这样大大节省了工作量;因人因时而变,即当不同的时间,不同的人访问同一个网址时会产生不同的页面。经济条件可行性:几乎所有网站都有留言板块,用它来记录访问用户对网站的建议,以帮助网站更好的发展。总体而言,留言系统首页是一个留言窗口,所以要给访问者一个清晰完整的概念,给出基本的提示信息。这种系统实现在线的查看,查找,管理,留言操作,功能强大,方便跨地域操作,扩展能力良好。基于利用计算机网络的巨大潜力、数据信息的理念,从而减少人力、物力及财力上的消耗,完成合理的分配资源。在系统分析和设计阶段,所需要的投入主要是系统和程序的开发费用,它包括软件的移植费用、程序开发费用、技术咨询费用。在系统的实施阶段,主要包括系统调试安装费用,其中包括安装调试软件的一切硬件和软件费用。系统安装需要一定的磨合期,因此需要一定的人员咨询费用。在系统运行阶段所需要的费用主要有培训费、资料费、人员工资、消耗品费用、技术服务性费用。培训费包括与系统有关的一切人员的技术培训和业务咨询费用等。在系统实施后,需要对用户进行培训,使其熟练掌握该系统的使用,并培训系统的维护人员。操作可行性留言系统采用Browser/Server(B/S)结构模式来设计,Microsoft.NET解决方案,是目前比较流行的B/S架构模式的解决方案,技术成熟,以此方案开发的应用系统具有开发周期短,运行稳定,维护简便,投资少等优点。Microsoft.NET应用系统具有界面简洁友好,操作简单等特点。只需简单的计算机基础知识便可充分利用本系统完成毕业设计工作。3.2系统需求分析该选题以软件工程思想为指导从需求分析,概要设计,详细设计,测试计划,测试用例以及实施各阶段的主要内容和成果,包括系统结构图、业务流程图、数据流程图、功能模块算法流程、界面设计并参考大量图书,电子文档等等。目前在呈几何增长的因特网网站中,有相当一部分仍然固守“静态”,这无形中已经大大落后与时代的步伐。当用户浏览器通过因特网向web服务器请求提供网页内容时,服务器仅仅是标准的HTML代码,最多再加上流行的动态图片,产生简单的动画效果。如果网站维护者需要更新网页的内容时,就必须手动更新所有相关的HTML文档。为了不断更新网页内容,必须不断重复制作HTML文档,随着网站内容和信息量的日益扩增,这个工作量将变的及其庞大。而如今很多网站都属于动态网站,其具有较强的交互性,能够根据用户的要求和选择做出动态改变;能够自动更新,即不需要手动更新HTML文档,便会自动生成新的页面,这样大大节省了工作量;因人因时而变,即当不同的时间,不同的人访问同一个网址时会产生不同的页面。该选题以软件工程思想为指导从需求分析,概要设计,详细设计,测试计划,测试用例以及实施各阶段的主要内容和成果,包括系统结构图、业务流程图、数据流程图、功能模块算法流程、界面设计并参考大量图书,电子文档等等。将采用Web服务和ASP.NET语言编写,完成设计。使用Web服务技术会简化和方便Internet应用的开发和使用,实现真正的网上留言处理与管理。3.3系统数据流图4系统设计4.1系统总体结构4.2系统详细设计4.2.1普通用户模块详细设计4.2.2管理员模块详细设计管理员登录后,包括了系统的大部分管理。其中包括了留言删除管理,留言修改管理,回复留言信息等等。留言删除管理,如图所示:留言修改管理,如图所示:回复留言信息,如图所示:4.3数据库设计4.3.1概念设计根据系统功能的要求,在线留言系统可以分为两大模块:留言系统基本功能模块,管理功能模块。4.3.2逻辑设计根据系统功能设计的要求以及功能模块的划分,下面列出留言系统的各个组成部分的数据项和数据结构。对于留言系统基本功能模块,可以列出以下数据项和数据结构:留言信息:标题,内容,作者,性别,主页,信箱,QQ,IP,回复,时间,头像IP地址表:ip1,ip2,国家,城市对于留言系统管理功能模块,它操作的数据较多,所以分为不同功能来给出表格:回复功能:留言信息表删除功能:留言信息表登录功能:web.config文件设置站点功能:web.config文件设置CSS功能:CSS文件根据数据库需求分析,建立以下的表4.3.3视图设计根据数据库需求分析,建立以下的表5系统实现5系统实现5.1系统数据库连接实现数据库连接实现主要由以下代码来实现:DimconnAsOleDbConnection,comdAsOleDbCommandconn=NewOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(ConfigurationSettings.AppSettings("数据库")))comd=NewOleDbCommand("Insertinto留言(标题,作者,内容,性别,主页,信箱,QQ,IP,头像)Values(@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8,@p9)",conn)5.2系统前台页面的实现5.2.1用户控件用户控件是ASP.NET中一个非常重要的概念,它可以极大的提高代码重用,减少量。留言系统主要使用了3个控件,分别是系统信息控件,公告栏控件和底部版权控件提示信息控件。功能选择控件位于页面的左侧,实际上就是一个功能选择页面,主要由以下代码来实现:<%@ControlLanguage="vb"Debug="true"AutoEventWireup="false"%><%@ImportNamespace="System.Data"%><%Dimhomepageasstring,logasstring,emailasstringhomepage=ConfigurationSettings.appSettings("首页地址")IFSession("name")=""THEN log="管理员登录"ELSE log="管理员退出"ENDIFemail=ConfigurationSettings.appSettings("信箱")%><TABLEid="Table1"cellSpacing="0"cellPadding="0"width="168"border="0"> <TR> <TD><IMGsrc="images\bar8.JPG"></TD> </TR> <TR> <TDstyle="PADDING-RIGHT:4px;BACKGROUND-POSITION:centertop;PADDING-LEFT:4px;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar9.JPG);PADDING-BOTTOM:4px;PADDING-TOP:4px;BACKGROUND-REPEAT:repeat-y"> <IMGheight="15"src="images\homepage.gif"><atitle="返回站点首页"href="<%=homepage%>">首页</a><BR> <IMGsrc="images\write.gif"width="15"><Atitle="签写新的留言"href="write.aspx">留言</A><BR> <IMGheight="15"src="images\log.gif"width="15"> <Atitle="<%=log%>"href="log.aspx"><%=log%></A> <br> <IMGheight="15"src="images\system.gif"width="15"> <% IFSession("name")<>""THEN Response.write("<ahref=setup.aspxtitle=系统环境变量设置>系统环境设置</a>") ELSE Response.write("系统环境设置") ENDIF %> <br> <IMGheight="15"src="images\css.gif"width="15"> <% IFSession("name")<>""THEN Response.write("<ahref=css.aspxtitle=在线修改CSS样式表>CSS样式设置</a>") ELSE Response.write("CSS样式设置") ENDIF DimdsAsDataSet,iAsInteger ds=NewDataSet Try ds.ReadXml(Server.MapPath("list.xml")) Fori=0Tods.Tables(0).Rows.Count-1 Response.write("<br><IMGheight=15src="+ds.Tables(0).Rows(i)(0)+"width=15> ") Response.write("<ahref="+ds.Tables(0).Rows(i)(2)+"title="+ds.Tables(0).Rows(i)(3)+">"+ds.Tables(0).Rows(i)(1)+"</a>") Next Catch EndTry ds.Reset() %> </TD> </TR> <TR> <TDheight="20"></TD> </TR> <TR> <TDstyle="HEIGHT:18px"><IMGalt=""src="images\bar10.JPG"align="absMiddle"></TD> </TR> <TR> <TDstyle="PADDING-RIGHT:4px;BACKGROUND-POSITION:centertop;PADDING-LEFT:4px;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar9.JPG);PADDING-BOTTOM:4px;PADDING-TOP:4px;BACKGROUND-REPEAT:repeat-y"> <P><IMGsrc="images\info.gif"> 留言簿信息<BR> <BR> <%ds.ReadXml(Server.MapPath("data/count.xml"))Response.write("  今日留言:"+ds.Tables(0).Rows(0)(0)+"<br>")Response.write("  今日来宾:"+ds.Tables(0).Rows(0)(1)+"<br>")Response.write("  留言总数:"+ds.Tables(0).Rows(0)(2)+"<br>")Response.write("  来宾总数:"+ds.Tables(0).Rows(0)(3)+"<br>")ds.Clear()ds.Dispose() %> <BR> <IMGsrc="images\user.gif"> 站长:<%=ConfigurationSettings.appSettings("站长")%><BR> <IMGsrc="images\email.gif"> 信箱:<ahref="mailto:<%=email%>"title="信箱地址:<%=email%>"><%=email%></a></P> </TD> </TR></TABLE>通过以上代码的实现,给出对应的实现界面:公告栏用户控件位于页面的上方,实际上是个一段不断移动的文本,这段文本是从web.config文件中读取的,所以可以随时修改这段文本,主要由以下代码来实现:<%@ControlLanguage="vb"AutoEventWireup="false"%><FONTface="宋体"> <TABLEid="Table1"cellSpacing="1"cellPadding="1"width="100%"align="center"border="0"> <TR> <TDalign="middle"> <IMGsrc="images\bar8.gif"width="100%"height="2"><IMGsrc="images\announce.gif"align="absMiddle"><STRONG>公告栏:</STRONG><marqueewidth="624"scrollamount="3"><%=ConfigurationSettings.AppSettings("公告栏")%></marquee> <IMGsrc="images\bar8.gif"width="100%"height="2"style="MARGIN-TOP:-10px"> </TD> </TR> </TABLE></FONT>通过以上代码的实现,给出对应的实现界面:底部空间是留言系统的低端嵌入控件,它的功能是显示留言系统的版权和其他的信息,所以代码比较简单,主要由以下代码来实现:<%@ControlLanguage="vb"AutoEventWireup="false"%><TABLEid="Table1"cellSpacing="1"cellPadding="1"width="100%"border="0"><TR> <TDalign="middle"> <IMGalt=""src="images\bar8.gif"width="100%"height="2"style="MARGIN-BOTTOM:5px">占胜留言簿版权所有 </TD></TR></TABLE>通过以上代码的实现,给出对应的实现界面:5.2.2留言系统首页留言系统首页页面是用户登录系统后首先接触到的所以包括了所有用户能够使用的信息,这个页面主要包括以下几个部分:(1)左侧的功能提示信息(2)关于留言系统的统计信息(3)最近的留言,分页显示(4)公告栏(5)版权提示主要由以下代码来实现:<%@PageLanguage="vb"AutoEventWireup="false"Debug="false"%><%@RegisterTagPrefix="uc1"TagName="notice"Src="notice.ascx"%><%@RegisterTagPrefix="uc1"TagName="sysInfo"Src="sysInfo.ascx"%><%@RegisterTagPrefix="uc1"TagName="copy"Src="copy.ascx"%><%@Importnamespace="system.data"%><%@Importnamespace="system.data.oledb"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><HTML> <HEAD> <title> <%=ConfigurationSettings.appSettings("留言簿名称")%> </title> <Scriptlanguage="vb"runat="server">PrivateFunctionAddress(ByValIPAsString)IfIsNumeric(Left(IP,2))=TrueThenDimconnAsOleDbConnection,comdAsOleDbCommand,drAsOleDbDataReaderDimstr1AsString,str2AsString,str3AsString,str4AsString,numAslongIfIP=""ThenIP=""IFLeft(IP,8)="192.168."THEN Address="内部局域网" EXITFunctionENDIFstr1=Left(IP,InStr(IP,".")-1)IP=Mid(IP,InStr(IP,".")+1)str2=Left(IP,InStr(IP,".")-1)IP=Mid(IP,InStr(IP,".")+1)str3=Left(IP,InStr(IP,".")-1)str4=Mid(IP,InStr(IP,".")+1)IFisNumeric(str1)=FalseorisNumeric(str2)=FalseorisNumeric(str3)=FalseorisNumeric(str4)=FalseTHEN Address="未知" EXITFunctionENDIFnum=Int(str1)*256*256*256+Int(str2)*256*256+Int(str3)*256+Int(str4)-1conn=NewOleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;DataSource="&Server.MapPath(ConfigurationSettings.AppSettings("数据库")))comd=NewOleDbCommand("SelectTop1country,cityFrom鉴定Whereip1<="+num.ToString+"andip2>="+num.ToString,conn)comd.connection.open()dr=comd.ExecuteReaderIfdr.ReadThen DimtemStrasString temStr=dr(0)&dr(1) IFtemStr.Length>17THEN Address="<spantitle="+temStr+">"+Left(temStr,15)+"...</span>" ELSE Address=temStrENDIFElseAddress="亚洲"EndIfdr.Close()comd.connection.close()comd.Dispose()conn.Close()conn.Dispose()ElseAddress="未知"EndIfEndFunctionPrivateSubcount()DimcieAsHttpCookie,newguestAsBoolean=Falsecie=Request.cookies("rwfj")IfcieisnothingThen newguest=True Else Ifcie("name")<>"guest"Thennewguest=True EndIfDimdsAsDataSetds=NewDataSet()ds.ReadXml(Server.MapPath("data/count.xml"))IfDateValue(ds.Tables(0).Rows(0)(4))<>DateValue(Date.Now)Then ds.Tables(0).Rows(0)(0)=0ds.Tables(0).Rows(0)(1)=0EndIfIfnewguest=TrueThencie=NewHttpCookie("rwfj")cie.Values.Add("name","guest")Response.AppendCookie(cie)ds.Tables(0).Rows(0)(1)=CInt(ds.Tables(0).Rows(0)(1))+1ds.Tables(0).Rows(0)(3)=CInt(ds.Tables(0).Rows(0)(3))+1EndIfds.Tables(0).Rows(0)(4)=Date.Nowds.AcceptChanges()ds.WriteXml(Server.MapPath("data/count.xml"))ds.Clear()ds.Dispose()EndSub </Script> <metacontent="MicrosoftVisualStudio.NET7.0"name="GENERATOR"> <metacontent="VisualBasic7.0"name="CODE_LANGUAGE"> <metacontent="JavaScript"name="vs_defaultClientScript"> <metacontent="/intellisense/ie5"name="vs_targetSchema"> <LINKhref="Styles.css"type="text/css"rel="stylesheet"> </HEAD> <body> <formid="Form1"method="post"runat="server"> <%Callcount()Dimcolor1asstring,color2asstring,color3asstring,color4asstring,color5asstringcolor1=ConfigurationSettings.appSettings("标题")color2=ConfigurationSettings.appSettings("时间栏")color3=ConfigurationSettings.appSettings("留言内容")color4=ConfigurationSettings.appSettings("回复内容")color5=ConfigurationSettings.appSettings("表格背景")%> <TABLEid="Table1"style="MARGIN-TOP:-15px"cellSpacing="1"cellPadding="1"width="750"align="center"border="0"> <TR> <TDcolSpan="2"><uc1:noticeid="Notice1"runat="server"></uc1:notice></TD> </TR> <TR> <TDvAlign="top"align="middle"width="50%"><uc1:sysinfoid="SysInfo1"runat="server"></uc1:sysinfo></TD> <TDvAlign="top"align="middle"width="50%"> <TABLEid="Table2"cellSpacing="1"cellPadding="1"width="90%"border="0"> <TR> <TD></TD> </TR> <TR> <TDvAlign="top"align="middle"> <%DimiAsInteger,pageAsString,pagesizeAsInteger,nowpageAsInteger,AllRecordAsIntegerDimallpageAsIntegeri=0page=Request.QueryString("page")Ifpage=""OrIsNumeric(page)=FalseThennowpage=1Elsenowpage=Int(page)EndIfpagesize=ConfigurationSettings.AppSettings("每页留言数量")DimconnAsOleDbConnection,daAsOleDbDataAdapter,dsAsDataSet,sqlAsStringDimcomdAsOleDbCommand,drAsOleDbDataReadersql="SelectCount(*)From留言"conn=NewOleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;DataSource="&Server.MapPath(ConfigurationSettings.AppSettings("数据库")))comd=NewOleDbCommand(sql,conn)comd.Connection.Open()dr=comd.ExecuteReaderIfdr.ReadThenAllRecord=dr(0)dr.Close()comd.Connection.Close()comd.Dispose()ifallrecord=0THENResponse.write("<TABLEwidth=530border=0><tr><tdalign=centerheight=200>当前还没有留言</td></tr></table>")elseIfAllRecordModpagesize=0Thenallpage=AllRecord\pagesizeElseallpage=AllRecord\pagesize+1EndIfifnowpage>allpagethennowpage=allpagesql="Select*From留言OrderBy时间DESC"da=NewOleDbDataAdapter(sql,conn)ds=Newdatasetda.Fill(ds,(now1)*pagesize,pagesize,"ly")Fori=0Tods.Tables(0).Rows.Count-1 DimtemTimeasDate,temStrasString,IPasstring temTime=ds.Tables(0).Rows(i)(10) temStr=Year(temTime).ToString+"年"+Month(temTime).ToString+"月"+Day(temTime).ToString+"日"+Hour(temTime).ToString+"时"+Minute(temTime).ToString+"分" IFUcase(ConfigurationSettings.appSettings("允许查看IP"))="NO"ANDSession("name")<>ConfigurationSettings.appSettings("站长")THEN IP="(已设置保密)" ELSE IP=ds.Tables(0).Rows(i)(8)+"〖"+Address(ds.Tables(0).Rows(i)(8))+"〗" ENDIF%> <TABLEid=Table3style="MARGIN-BOTTOM:5px"cellSpacing=0cellPadding=1width=530bgColor="<%=color5%>"border=0> <TR> <TDstyle="BACKGROUND-POSITION:centerbottom;FONT-SIZE:10pt;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-IMAGE:url(images\bar11.JPG);BACKGROUND-REPEAT:no-repeat"width="100%"colSpan="3"height="32">  <STRONG><FONTcolor="<%=color1%>"> <%=Cstr((now1)*pagesize+i+1)+"."+ds.Tables(0).Rows(i)(1)%> </FONT></STRONG> </TD> </TR> <TR> <TDstyle="BACKGROUND-POSITION:centertop;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar2.JPG);BACKGROUND-REPEAT:repeat-y"width="3"></TD> <TDstyle="PADDING-LEFT:2px"width="524"> <TABLEid="Table4"style="MARGIN-TOP:-1px;MARGIN-LEFT:-1px"cellSpacing="0"cellPadding="0"width="100%"border="0"> <TR> <TDstyle="BACKGROUND-POSITION:centertop;PADDING-LEFT:2px;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar4.JPG);BACKGROUND-REPEAT:repeat-x"vAlign="top"colSpan="2"height="18"><FONTcolor="<%=color2%>"> 发表时间:<%=temStr%> IP:<%=IP%></FONT></TD> </TR> <TR> <TDalign="middle"width="116"rowSpan="2"><IMGwidth=90height=90src="face\<%=ds.Tables(0).Rows(i)(11)%>"><BR> <BR> <TABLEid="Table5"cellSpacing="1"cellPadding="1"width="100%"border="0"> <TR> <TDstyle="FILTER:glow(color=#9898BA,strength=3)"align="middle"><FONTcolor="#990000"><FONTsize="2"><%=ds.Tables(0).Rows(i)(3)%></FONT><BR> </FONT>(<%=ds.Tables(0).Rows(i)(4)%>)</TD> </TR> </TABLE> </TD> <TDstyle="PADDING-RIGHT:3px;PADDING-LEFT:3px;PADDING-BOTTOM:3px;PADDING-TOP:3px;HEIGHT:71px"width="408"> <FONTcolor="<%=color3%>"><%=ds.Tables(0).Rows(i)(2)%></FONT> <%IFds.Tables(0).Rows(i)(9).tostring<>""THEN%> <br><FONTcolor="<%=color4%>">站长回复<BR> <%=ds.Tables(0).Rows(i)(9)%> </FONT> <%ENDIF%> </TD> </TR> <TR> <tdstyle="PADDING-RIGHT:2px;PADDING-LEFT:2px;PADDING-BOTTOM:1px;PADDING-TOP:1px"width="408"><IMGstyle="MARGIN-BOTTOM:3px"height="2"alt=""src="images\bar8.gif"width="350"><BR>   <IMGalt=""src="images\homepage.gif"width="15"> <% IFds.Tables(0).Rows(i)(5)<>"(保密)"THEN Response.write("<atitle=浏览该留言者的主页href=") IFLeft(Lcase(ds.Tables(0).Rows(i)(5)),7)<>"http://"THENResponse.write("http://") Response.write(ds.Tables(0).Rows(i)(5)+"target=_blank>主页</a>") ELSE Response.write("主页") ENDIF %>   <IMGalt=""src="images\qq.gif"width="15"> <% IFds.Tables(0).Rows(i)(7)<>"(保密)"THEN Response.write("<atitle=查看该留言者的QQ信息href=/cgi-bin/friend/user_show_info?ln="+ds.Tables(0).Rows(i)(7)+"target=_blank>QQ</a>") ELSE Response.write("QQ") ENDIF %>   <IMGalt=""src="images\email.gif"width="15"> <% IFds.Tables(0).Rows(i)(6)<>"(保密)"THEN Response.write("<atitle=给该留言者发邮件href=mailto:"+ds.Tables(0).Rows(i)(6)+"target=_blank>信箱</a>") ELSE Response.write("信箱") ENDIF %>   <IMGalt=""src="images\write.gif"width="15"> <% IFSession("name")=ConfigurationSettings.appSettings("站长")THEN Response.write("<ahref=reply.aspx?ID="+ds.Tables(0).Rows(i)(0).ToString+"&page="+nowpage.ToString+">回复</a>") ELSE Response.write("回复") ENDIF %>   <IMGalt=""src="images\del.gif"> <% IFSession("name")=ConfigurationSettings.appSettings("站长")THEN Response.write("<ahref=del.aspx?ID="+ds.Tables(0).Rows(i)(0).ToString+"&page="+nowpage.ToString+">删除</a>") ELSE Response.write("删除") ENDIF %> </td> </TR> </TABLE> </TD> <TDstyle="BACKGROUND-POSITION:centertop;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar3.JPG);BACKGROUND-REPEAT:repeat-y"width="3"></TD> </TR> <TR> <TDwidth="3"style="BACKGROUND-POSITION:righttop;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar5.JPG);BACKGROUND-REPEAT:no-repeat"height="8"></TD> <TDwidth="524"style="BACKGROUND-POSITION:centercenter;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar7.JPG);BACKGROUND-REPEAT:repeat-x"height="8"colSpan="1"></TD> <TDwidth="3"style="BACKGROUND-POSITION:righttop;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar6.JPG);BACKGROUND-REPEAT:no-repeat"height="8"></TD> </TR> </TABLE> <% Next ds.clear ds.dispose da.dispose ENDIF conn.dispose%> </TD> </TR> <TR> <TD> <Palign="center"><STRONG>每页显示<%=ConfigurationSettings.AppSettings("每页留言数量")%>条留言当前页<%=nowpage%>/<%=allpage%>      <% IFnowpage>1THEN Response.write("[<ahref=default.aspx?page=1>第一页</a>][<ahref=default.aspx?page="+Cstr(now1)+">上一页</a>]") ELSE Response.write("[第一页][上一页]") ENDIF IFnowpage<allpageTHEN Response.write("[<ahref=default.aspx?page="+Cstr(nowpage+1)+">下一页</a>][<ahref=default.aspx?page="+allpage.ToString+">最后页</a>]") ELSE Response.write("[下一页][最后页]") ENDIF %> </STRONG> </P> </TD> </TR> </TABLE> </TD> </TR> <TR> <TDcolSpan="2"><uc1:copyid="Copy1"runat="server"></uc1:copy></TD> </TR> </TABLE> </form> </body></HTML>通过以上代码的实现,给出对应的实现界面。5.2.3留言页面当用户需要在网站留下自己的想法时,就需要给他一个留言页面。而用户需要在这个页面提示下填写许多的内容,包括必须的,比如留言主题,名称和留言地址以及可选填写的,包括个人主页,QQ号码和出生日期,还可以选择是否显示IP地址和选择自己的留言图标。主要由以下代码来实现:<%@RegisterTagPrefix="uc1"TagName="copy"Src="copy.ascx"%><%@RegisterTagPrefix="uc1"TagName="sysInfo"Src="sysInfo.ascx"%><%@RegisterTagPrefix="uc1"TagName="notice"Src="notice.ascx"%><%@PageLanguage="vb"AutoEventWireup="false"src="write.aspx.vb"Inherits="write"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><HTML> <HEAD> <title> <%=ConfigurationSettings.appSettings("留言簿名称")+"-签写留言"%> </title> <metaname="GENERATOR"content="MicrosoftVisualStudio.NET7.0"> <metaname="CODE_LANGUAGE"content="VisualBasic7.0"> <metaname="vs_defaultClientScript"content="JavaScript"> <metaname="vs_targetSchema"content="/intellisense/ie5"> <LINKhref="Styles.css"type="text/css"rel="stylesheet"> </HEAD> <bodyonload="javascript:Form1.imgshow.src='face/'+Form1.face.value"> <formid="Form1"method="post"runat="server"> <TABLEid="Table1"style="MARGIN-TOP:-15px"cellSpacing="1"cellPadding="1"width="750"align="center"border="0"> <TR> <TDcolSpan="2"><uc1:noticeid="Notice1"runat="server"></uc1:notice></TD> </TR> <TR> <TDvAlign="top"align="middle"width="50%"><uc1:sysinfoid="SysInfo1"runat="server"></uc1:sysinfo></TD> <TDvAlign="top"align="middle"width="50%"> <TABLEid="Table2"cellSpacing="1"cellPadding="1"width="90%"border="0"> <tr> <td> <TABLEid="Table3"style="MARGIN-BOTTOM:5px"cellSpacing="0"cellPadding="1"width="530"bgColor="#e0dfe3"border="0"> <TR> <TDstyle="BACKGROUND-POSITION:centerbottom;FONT-SIZE:10pt;BACKGROUND-ATTACHMENT:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论