1、留言板设计与实现留言板设计与实现内容摘要在科技飞速发展的今天,电脑信息技术与各行各业进行了有效的结合。人们在网上可以进行网上购物,网上交友,电子商务,网络营效等等。面对强大的网络功能,必须在某方面要有一个健全的系统才能使网络发挥的淋漓尽致。在这个平台上,留言提供了一个全新的人类沟通新方式。 BBS留言是Internet的重要应用之一,开发网上交流软件,现已有很多工具和方法,各种技术都具有其特色和长处。针对网上BBS留言的特点,文章叙述了在Windows XP环境下,利用Sql Sever 2005创建数据库,运用Microsoft Visual Studio 2008 、ASP和IIS等开发工
2、具,设计基于B/S方式运行的BBS留言系统的原理及其过程。关键词: 留言板,ASP.Net,数据库,Sql Sever 2005绪论随着现代化技术的不断进步,人们发现交流的范围还是很小,不能满足更大范围人的需要,这样就出现了利用因特网在全球发布信息的留言BBS。BBS是电子公告板(Bulletin Board System)的简称,它是最常见的Web应用系统。BBS起源于20世纪80年代,最初,留言只是用于发布公告系统,讨论问题的在线交流平台;后来,随着网络的普及,留言的功能越来越丰富,受到广大网民的欢迎。企业、学校等单位可以利用网上的留言发布公告、通知等。本系统采用MVC(Model-Vie
3、w-Controller)三层构架开发模式,在这种设计模式下,一个应用被分为三个部分:模型、视图和控制,每个部分负责不同的功能。模型是指应用程序的数据,以及对这些数据的操作;视图是指用户界面;控制负责视图和模型之间的同步,也就是说,根据用户界面的操作完成对程序数据的更新;将程序数据的改变及时反应到用户界面上。通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现,这些组件可以进行交互和重用。对于大量的信息,采用数据库技术,在系统中数据组织应用关系模型。对数据库的访问,本系统使用数据库连接池,在系统初始化时启动文件中配置的数据的连接,如果程序需要链接,则从此池中取出一个连接使用,使用完
4、后又返回给该池,这些连接可以复用,提高了效率。该系统采用ASP实现BBS留言系统。在开发过程中实现了留言系统的部分管理,并且对留言的页面布局进行详细设计,使页面美观,体现所有功能;还有对系统管理页面的设计,使管理员能更方便清楚的进行用户管理、页面管理等。最后,该留言将会是一个功能强大、美观方便、畅所欲言的“公共场所”。第一章 系统分析与设计1.1需求分析开发一个留言系统,首先需要确定留言的功能是什么,也就是用户想要的留言所能做的工作。用户使用留言是按照一定的流程来进行的:用户注册登录进入留言,可以就某个话题展开讨论,通过留言功能发布新的话题,管理员通过回帖的功能回复用户的话题;管理员要管理留言
5、,系统需要具有的功能有创建、删除留言的版块,管理留言。这样的流程就决定了留言所应具有的功能,留言功能流程如图1.1所示。 图1.1 留言功能流程图通过上面的分析,总结留言的功能有以下几项: 留言版块列表;浏览留言;回复留言;编辑留言;删除留言;用户注册;用户登录;修改注册信息;管理版块;管理用户。观察留言所有功能需求,按不同实体分类,可以分为三类实体对象:用户、留言和回复留言。这三类对象,可以设计为三个数据实体,如果使用数据库存储它们,即可以设计三个基本数据表的集合来存储这些实体的基本信息;它们可以设计为三个基本表,映射三个实体的基本数据。这些基本对象只是留言系统中最为基本的要素,对于一个完整
6、的留言还需要其它相关的表来记录相关的信息,即实体之间的相互关系信息。留言一般存在两种用户,注册用户和管理员。用户的权限是向下覆盖的,即上级权限包含下级权限,在这个留言中,管理员的权限是上级权限。留言系统的用户浏览信息功能,是用户讨论问题的平台,发表留言、浏览留言、回复留言一直贯穿用户的整个活动。同时,由于留言系统的留言管理是管理员在留言浏览时进行的,因此编辑、删除等功能也安排在浏览信息时实现,只是一般用户没有权限做这些动作。其它与管理员相关的功能,包括留言管理和用户管理的都是需要管理员在管理模块进行操作。下面就管理员所做的管理进行介绍: 查看留言:任何用户可以根据发言者留下的邮箱地址发邮件。删
7、除留言:如果用户发表了不符合留言规则的留言,则需要管理员删除这些留言。管理版块:留言版块需要先创建,才能被使用,管理员还可以删改版块的相关信息。设置参数:留言一般有一些初始化信息,比如留言名称、每页显示留言数量等参数信息,管理员可以在后台界面自行设置。1.2模块设计从上一节需求分析可以知道,留言功能分为用户使用的基本功能和管理员管理系统的功能两类,因此模块设计也分为两大类。留言的模块体系图如图1.2所示。 图1.2 留言的模块图BBS系统包括以下主要功能模块:(1)登录功能模块:用户个人注册、登录,管理员登录;(2)浏览功能模块:用户浏览版块、浏览主题帖列表、查看留言、查看回复;(3)发表回复
8、留言功能模块:用户发表,管理员回复;(4)留言管理功能模块:管理员编辑、删除; 用户注册、登陆以及修改个人的注册信息组合成注册登录模块;用户浏览版块、浏览主题帖列表、查看留言组合成浏览模块;用户发表留言;管理员编辑留言、删除留言。以上四个模块组成用户使用的基本功能模块。扩展功能模块都是与管理员相关的,创建、修改和删除版块为管理版块模块;删除和回复为管理用户模块。从以上分析,可以得到留言的功能框架,即系统的各个部分已经确定,对于留言系统来说,各个模块之间用一条主线串联起来,才能构建完整的系统。联系各个模块的主线是使用者的权限,用户能使用留言的哪些功能是由用户的权限决定的。留言的每个功能都与相应的
9、权限相对应。同一类用户使用的功能模块,是以使用者为中心连接起来的。另外,操作同一类事物的功能模块,也是有相互关系的。因此,浏览模块与发帖回帖模块、管理留言模块关联,是由留言的系统流程决定的。先有版块,后有留言,留言必须发表在某个版块中。还有管理用户模块与注册登录模块关联,是由同一类对象(用户)决定的,用户注册后获得留言的身份,成为用户,所有的用户需要接受管理员的管理,用户登录证明自己的留言中身份。由此,设计出留言系统的整体框架,如图1.3所示。图1.3 留言整体架构图1.3数据库结构设计该系统的实体有:管理员信息实体、用户信息实体、留言实体、版面信息实体。实体之间的E-R图如图1.4所示。图1
10、.4 实体间的关系E-R图考虑到将来功能上的完整性,设计如下面所示的数据项和数据结构:用户信息:包括数据项有用户编号、用户名、密码、Email、qq、性别、用户IP、用户注册时间等。留言信息:包括数据项有留言的编号、用户名主题、内容、发表时间和用户的IP等。基于上面的内容,设计了下列表,这些表之间相互关联,共同存储着系统所需要的数据。在设计数据库表的过程中,一般要遵循几条原则:数据库设计一个表最好只存储一个实体或对象的相关信息,不同的实体最好存储在不同的数据表中,如果实体还可以再划分,实体的划分原则是最好能够比当前系统要开发的实体的复杂度小;数据表的信息结构一定要合适,表的字段的数量一般不要过
11、多;扩展信息和动态变化的信息一定要分开在不同的表里;多对多这样的表关系尽量不出现等。数据库表的具体设计如下:表1.UserInfo (用户信息表)序号字段数据类型长度是否空(是:)标识备注1Idint4主键2UserNamevarchar203Passwordvarchar504RePwdvarchar505Emailvarchar306Qqvarchar207Sexvarchar28IPvarchar209Popedomint4权限10Create_timedatetime8表2. LeaveWord (用户留言信息表)序号字段数据类型长度是否空(是:)标识备注1Idint4主键2UserN
12、amevarchar203Subjectvarchar504Contentntext165Create_timedatetime86IPvarchar20表3. Reply(回复留言信息表)序号字段数据类型长度是否空(是:)标识备注1Idint4主键2ReplyNamevarchar203ReplyContentntext16回复内容4Reply_timevarchar205ReplyIDdatetime8LeaveWord的Id6IPvarchar20至此,留言系统的架构部分设计完成了,有了具体的数据库结构设计和系统功能设计,就确定了系统的数据基础和功能架。第二章 系统开发环境2.1MVC三
13、层构架MVC是Model-View-Controller的简写,“Model”代表的是应用的业务逻辑,“View”是应用的表示面,“Controller”是提供应用的处理过程控制(数据访问层),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。2.2开发工具简介 该留言系统为一个Web应用程,所需的运行环境: Microsoft Visual Studio 2008 、Sql Server 2005、Windows XP 、IIS。2.2.1 ASP简介ASP是Active Server Page的简写。ASP技术能让Web开发员和网页设计员快速地开
14、发容易维护的动态Web主页。ASP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。ActiveX Data Oject(简称ADO)技术与ASP结合使用,可以具备存取数据库的功能, 主要实现三方面的功能:建立与数据库的连接,执行SQL声明以及处理SQL执行结果。2.2.2 IIS简介IIS是Internet Information Server的缩写,它是微软公司主推的服务器,IIS与WindowNT Server完全集成在一起,因而用户能够利用Windows NT Server和NTFS(NT File System,NT的文件系统)内
15、置的安全特性,建立强大,灵活而安全的Internet和Intranet站点。IIS支持与语言无关的脚本编写和组件,通过IIS,开发人员就可以开发新一代动态的,富有魅力的 Web站点。 IIS完全支持VBScript,JScript开发软件以及Java,它也支持 CGI和WinCGI,以及ISAPI扩展和过滤器。IIS的一个重要特性是支持ASP。IIS 3.0版本以后引入了ASP,可以很容易的张贴动态内容和开发基于Web的应用程序。对于诸如VBScript,JScript开发软件,或者由 Visual Basic,Java,Visual C+开发系统,以及现有的CGI和WinCGI脚本开发的应用
16、程序,IIS都提供强大的本地支持。2.2.3 Sql Sever 2005简介SQL(Structured Query Language),结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。绝大多数流行的关系型数据库管理系统都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select, Insert, Update, Delete, Create,以及Drop在内的标准的SQ
17、L命令仍然可以被用来完成几乎所有的数据库操作。SQL Server 是一个关系数据库管理系统。它最初是由Microsoft、 Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNIX 操作系统上的应用。2.3开发模式网站建设目前主要有两种基本的开
18、发模型:两层模型、三层模型。B/S结构是真正的三层结构,它以访问WEB数据库为中心,HTTP为传输协议,客户端通过浏览器(Browser)访问WEB服务器和与其相连的后台数据库,我们称之为B/S(Browser/Server)模式。其三级结构组成如下图所示:图2.1 开发模式图图中从左到右,分为三个层次:第一层是客户端即浏览器,主要完成客户和后台的交互及最终查询结果的输出功能。在客户端向指定的Web服务器提出服务器请求,Web服务器用HTTP协议把所需文件资料传给用户,客户端接受并显示在WWW浏览器上;第二层Web服务器是功能层,完成客户的应用功能,即Web服务器接受客户请求,并与后台数据库连
19、接,进行申请处理,然后将处理结果返回Web服务器,再传至客户端;第三层数据库服务器是数据层。数据库服务器应客户请求独立地进行各种处理。与传统的C/S模式相比,B/S结构把处理功能全部移植到了服务器端,用户的请求通过浏览器发出,无论是使用和数据库维护上都比传统模式更加经济方便。而且使维护任务层次化:管理员负责服务器硬件日常管理和维护,系统维护人员负责后台数据库数据更新维护。第三章 系统详细设计 留言拥有大量的数据,这就需要对这些数据进行存储和管理建立数据库。因为当留言的在线用户很多时,就会出现“瓶颈”现象,造成阻塞,这里应该创建连接池来提高利用率。数据库建立成功后就应该进行具体的系统设计。然后,
20、将进行留言信息页面的设计,包括主页面、发布留言相关页面等,是显示在留言页面,可以由用户(包括用户)以上级别的浏览者看到;最后,进行留言管理页面的设计,这是只能由管理员进行操作的页面,管理员会对留言进行安全、有条理的管理。3.1创建与连接数据库3.1.1数据库表的设计设计数据库表的字段时,需要充分考虑到留言的应用特点。数据库表的设计要求简单易于理解,扩展性好。 其中记录留言发表文章的数据库表LeaveWord主要有以下的以下几个描述字段:序号字段数据类型长度是否空(是:)标识备注1Idint4主键2UserNamevarchar20用户名3Subjectvarchar50留言主题4Content
21、ntext16留言内容5Create_timedatetime8留言发表时间6IPvarchar20用户IP3.1.2数据库的连接Sel Server 2005是文件型数据库,一个文件就是一个数据库,可以利用ADO.NET中的语法直接连接。在连接数据库之前,必须先声明一个对象来当作数据库与ASP程序之间的媒介,具体连接方式如下:在解决方案中的Web.config文件中的节点下添加数据库连接代码: 然后在数据访问层相应类中添加数据库连接字符串,如下代码:/获取数据库连接字符串 private readonly string ConnectionString = ConfigurationSett
22、ings.AppSettingsConnectionString.ToString();在打开数据库并完成相应的操作后,应关闭数据库连接。当不再需要连接时将其关闭,可以减少对数据库服务器的要求并可以使其他用户能够使用该连接。用SqlConnection对象的Close方法终止SqlConnection对象和数据库之间的连接。下面代码为程序中的部分代码,打开连接,然后将其关闭:using (SqlConnection connection = new SqlConnection(ConnectionString) try connection.Open(); SqlCommand command
23、 = new SqlCommand(builder, connection); if (command.ExecuteNonQuery() 0) return Convert.ToString(command.ExecuteNonQuery(); catch (SqlException exception) throw new Exception(exception.Message); finally connection.Close(); 3.1.3 数据添加/表示层中的代码/添加新用户protected void btnRegisterSubmite_Click(object sender
24、, EventArgs e) /获取输入的验证码 string code = txtCode.Text; /判断用户输入的验证码是否正确 if (Request.CookiesCheckCode.Value = code) /* 获取页面注册信息 */ string str = +this.txtRegName.Text.ToString().Trim()+; /用户注册名 string str2 = this.txtRegPass.Text.ToString().Trim(); /注册密码 string str3 = this.TxtReRegPass.Text.ToString().Tri
25、m(); /确认密码 string str4 = this.txtEmail.Text.ToString().Trim(); /注册的Email string str5 = this.txtQQ.Text.ToString().Trim(); /注册的QQ string str6 = ; / 性别 if (rabtnSex.SelectedValue.Trim() = 男) str6 = 男; else str6 = 女; string str7 = Request.UserHostAddress; /ip地址 SongBLL.UserInfo info = new SongBLL.UserI
26、nfo(); SongModel.UserInfo model = new SongModel.UserInfo(); /将获取到的注册信息添加到Model实体类中 model.UserName = base.Server.HtmlEncode(str); /model.Password = base.Server.HtmlEncode(str2); model.Password = FormsAuthentication.HashPasswordForStoringInConfigFile(str2 + 4!#$%, md5); model.RePwd = base.Server.HtmlE
27、ncode(str3); model.Email = base.Server.HtmlEncode(str4); model.Qq = base.Server.HtmlEncode(str5); model.Sex = base.Server.HtmlEncode(str6); model.Ip = base.Server.HtmlEncode(str7); model.Popecom = 0; model.Create_time = Convert.ToString(DateTime.Now); string strWhere = ; strWhere = string.Format(Use
28、rName=0, str); DataSet list = info.GetList(strWhere); if (list != null) & (list.Tables.Count 0) & (list.Tables0.Rows.Count 0) this.Response.Write(已有该账户); this.Response.Redirect(Register.aspx); else int num; /将注册的信息传递给BLL层 num = info.Add(model); if (num 0) this.Response.Write(注册成功!); else this.Respon
29、se.Write(注册失败!); this.txtRegName.Focus(); this.Response.Redirect(Register.aspx); else Response.Write(验证码错误!); this.Response.Redirect(Register.aspx); /业务逻辑层中的代码public class UserInfo private readonly SongDAL.UserInfo dal = new SongDAL.UserInfo(); / / 用户注册信息 / public int Add(SongModel.UserInfo model) return this.dal.Add(model); /数据访问层
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1