大学毕业论文-—网上在线论坛的设计与实现.doc
网上在线论坛的设计与实现目 录内容摘要. 3关键词. 3Abstract . 3Key words. 31引言.41.1课题背景.41.2课题开发意义.42理论基础.42.1数据库技术.52.2B/S架构的WEB程序设计技术.53系统需求分析.73.1可行性分析.73.2功能需求分析.73.3性能需求分析.114系统总体设计.124.1设计思想.124.2功能结构模块设计.124.3接口设计.144.4维护设计.155数据库设计.155.1数据库概念结构设计.155.2逻辑设计.186系统代码设计.206.1数据库的接.206.2 系统功能设计与实现.217系统测试.33参考文献.34内容摘要:随着Internet技术的飞速发展,论坛已经成为网络上不可缺少的交流方式之一,成为人和人之间一个信息交流的基本平台。本系统针对用户模块和管理员模块进行了设计,基本实现了用户发帖、回贴、查询修改信息,管理员进行后台管理等功能。该论坛系统是一个采用B/S架构的管理系统,利用ASP.NET和SQL Server 2008技术开发,实现了论坛的动态管理,使得对信息的管理更加及时、高效,方便用户及时上网浏览有用信息,发表自己对相关问题的看法。关键词:SQL Server 2008 ASP.NET B/S架构 论坛Abstract:With the rapid development of Internet Technology,the forum has become one of the essential way of communication,as the basic platform of information exchange between people.The system divides into two module including the user module and administrator module,users can use the system to post, reply, query and modification of information,administra-tors can use the system to manage the backstage of the system ,and so on.This forum is a management system with the B/S structure,which is designed by ASP.NET and SQL Server 2008 technology to achieve the dynamic management of the Forum and to make the management of information more timely,efficient.So it is easy for users to browse the Internet for useful information and to express their views on related issues.Key words:SQL Server 2008 ASP.NET B/S Structure Forum1 引言1.1 课题背景随着互联网日益深入社会生活,以网站作为对外的展示窗口,进行内外信息交流,已成为大众的迫切需要。为了进行更好的交流,网友想就自己的专业和爱好能和其他的网友进行及时的交流,这就有了网上在线论坛,这样一来我们就可以在网络这个虚拟的空间中方便地实现交流。作为网络服务必不可少的一部分,论坛在人们的生活交往交流中发挥着重要作用。追究论坛的本质,就是人和人之间一个交往的平台,一个信息交换的工具,现实中人与人之间的交往在网络虚拟社会中变得更加方便快捷,交往的各种障碍也因为技术的发展消失;论坛上,人与人之间的关系变得更加简单和纯粹。就是这些优点,使得现实生活中很多困难的事情在网络上变得更加简单和容易操作。而互联网由于本身技术上的优势,使得这种成本急剧下降。1.2 课题开发意义当今互联网的发展,已经涉及到了生活的各个方面。网上在线论坛系统,可以让生活中的人们相互更好的交流,让不在同一地区的人们在这个虚拟的环境中进行思想的交流与传递,让地球真正变成一个地球村。现在一些门户网站都有自己独立的网上在线论坛,给网站增添了不少的人气,同时也加快了信息的传递。还有一些企业公司等也有自己内部的网上在线论坛,方便公司员工进行技术、生活等问题的交流与相互协助。网上在线论坛系统主要是针对网上流行的BBS,对其进行设计、分析,从实际需求出发,建立概念模型,同时设计合理的数据库实现方案。建立一个网上在线论坛系统,可以用作各个网民相互沟通使用;这种形式既可以降低面对面沟通的高成本,又可以使得一些沟通成果充分共享,避免了热线电话这种点对点沟通方式中经常出现的高频率重复工作。2 理论基础2.1 数据库技术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 操作系统上的应用。本系统采用SQL Server 2008。SQL Server 2008 是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理。SQL Server 2008 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。 SQL Server 2008 数据引擎是本企业数据管理解决方案的核心。此外 SQL Server 2008 结合了分析、报表、集成和通知功能。与 Microsoft Visual Studio、Microsoft Office System 以及新的开发工具包(包括 Business Intelligence Development Studio)的紧密集成使 SQL Server 2008 与众不同。无论您是开发人员、数据库管理员、信息工作者还是决策者,SQL Server 2008 都可以为您提供创新的解决方案,帮助您从数据中更多地获益。2.2 B/S架构的WEB程序设计技术2.2.1 B/S模式随着技术的发展,起初网络中的应用系统趋向于基于服务器的分层的应用系统,并支持各种系统的互操作性。这些应用系统是分布式的。即它们是运行在几个不同的设备上,包括后端进行资料访问的主机、在中间层支持Web和事务监控的服务器,以及允许用户访问应用系统的各种客户端设备。传统的分布式系统是基于客户服务器模式(即C/S模式)的,而基于浏览器的应用系统就是客户服务器模式的一种变形,应用系统运行在Web服务器上,提供了所有的商业逻辑和状态维护。使用这种配置方式,应用系统能够提供来自简单页面查询的所有信息,可以知道执行指定操作的更复杂的过程,以及维护状态信息。支持这种应用体系结构的技术方法包括在客户端的Applet与插件,以及在服务器端的公共网关接口、ASP等其它机制。目前在Internet上的大多数应用系统,包括网上交易系统都是基于这种模式的。这种客户/服务器结构的发展给系统增加了新的功能,一个单纯的客户服务器结构对于紧凑控制环境是可行的,同时,具有某种类型的客户和某种类型的后端服务器提供了商业逻辑和对资料的访问。这也就是我们所说的B/S(Browser/Server,浏览器/服务器)模式又称B/S结构。它是随着Internet技术的兴起,对C/S模式应用的扩展。在这种结构下,用户工作接口是通过IE浏览器来实现的。本次设计是按照B/S模式进行开发的。2.2.2 ASP.NET简介 ASP.NET是微软公司.NET框架技术的一部分,主要用于建立Web应用程序。ASP.NET使用编译过的事件驱动模型从而提高了运行速度、分离了应用程序逻辑和用户界面。使用ASP.NET可以比较容易的开发基于三层架构的B/S应用程序。ASP.NET的特点强大性和适应性。因为ASP.net是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上(到现在为止只知道它只能用在Windows 2000/2003 Server/VISTA/7上)。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到ASP.net的Web应用中。ASP.net同时也是language-independent语言独立化的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经支持的有C#(C+和Java的结合体),VB,Jscript , C+、F+。将来,这样的多种程序语言协同工作的能力保护您现在的基于COM+开发的程序,能够完整的移植向ASP.NET。ASP.NET一般分为两种开发语言,VB.NET和C#,C#相对比较常用,因为是.NET独有的语言,VB.NET则为以前VB程序设计,适合于以前VB程序员,如果新接触.NET,没有其他开发语言经验,建议直接学习C#即可。3 系统需求分析3.1 可行性分析可行性研究是为了弄清楚系统开发的项目是是不是可以实现和值得进行研究的过程,实际上是一次大大简化系统分析和系统设计的过程,所以,进行可执行性的分析是非常必要的,也很重要的,经过最初的设计目标和进行的市场调查得出以下的四点的可行性分析:(1)经济可行性:由于本系统用的软件都是免费的,不需要什么费用。这个系统由本人开发,也不需要什么费用。所以经济上是可行的。 (2)技术可行性:ASP.NET+ SQL Server 2008的技术已经较为成熟。(3)操作可行性:本系统的操作简单,只需简单的了解下就可以非常流畅的使用这个系统。 (4)法律可行性:该平台是作为作业设计与商业无关,又因为是自主开发设计,因此不会构成侵权,在法律上是可行的。3.2 功能需求分析3.2.1 系统的处理流程 A. 前台用户的功能一般的游客进入论坛就可以随意的浏览网上的帖子,但是没有办法进行发帖和回帖,这样就必须先登录,如果还不是会员用户就要先注册成为会员,才能进行发新帖回复贴的行为;登录成功之后就成为了会员,可以在网页里面自由的发帖回帖,查看修改自己的信息资料,查询其他用户信息,畅所欲言的和其他会员交流。前台程序流程图如图3-1所示: 开 始 论坛 游客 浏览论坛网站 登录 否 是验证 否 注册 注册 选择操作 是 查询其他用户 发新帖,回复贴 个人信息修改 结 束 图3-1 前台简单流程图B.后台管理员的功能 管理员首先必须登录才能实现他的功能;待管理员登录之后,管理员有查看用户信息的功能和增加用户功能;可以发布公告通知用户网站的最新情况;管理网站,保证网站的更新;对帖子信息管理,尽量的减少不和谐的现象。 后台管理流程图如图3-2所示:用户信息管理 开 始 管理员登录帖子信息管理 验证公告信息管理 否 是选择操作论坛板块管理 图3-2 后台管理流程图3.2.2 系统数据流程 功能概要 用户的功能: A.浏览论坛 B.注册/登录成为会员 管理员的功能 A.登录 B.发布公告信息 C.管理论坛板块(保证论坛的更新) D.管理用户信息 E.管理帖子信息 会员的功能 A.登录 B.查看论坛帖子 C.将自己的帖子发布到论坛上 D.参与回复帖子 E.个人信息修改 F.寻找查看其他会员管理员后台数据流程图如图3-3所示: 分类表论坛信息管理 更新信息登录失败 登录信息公告信息管理执行操作登录登录 操作信息 更新信息帖子信息管理管理员信息表 公告表用户信息管理管理员信息管理 查询 查询 新用户信息 帖子表 回帖表 用户信息表图3-3后台数据流程图前台数据流程图如图3-4所示:浏览论坛游客注册 注册信息 注册成功用户信息表发新帖用户信息表登录失败登录信息 发布 帖子表登录 发布信息回复贴 查询信息 回复信息 发布 回帖表 用户信息表 查询信息查询其他用户个人信息中心 操作 查询 用户信息表 操作信息 操作 修改个人资料查看已发、回帖信息 信息更新 查询 查询 用户信息表 帖子表 回帖表图3-4前台数据流程图3.3 性能需求分析 根据本系统所用到的技术和软件,至少需要满足以下的软硬件需求: (1) 开发工具:Microsoft Visual Studio 2010。 (2) 操作系统:windows server 2003/XP 及其更高版本。 (3) 数据库:SQL Server 2008数据库及其更高版本 (4) CPU:2.0GHZ及更高 (5) 内存:512M及更高。(6) 硬盘:80GB4 系统总体设计4.1 设计思想采用B/S模式设计,并进行三层架构,三层一般为DAL数据访问层,BLL业务逻辑层,UI表现层,其架构图4-1所示。 UI表示层BLL业务逻辑层 DAT数据访问层DB 图4-1 系统三层架构图 4.2 功能结构模块设计 (1)后台功能 A. 管理员登录功能。 B. 管理员发布公告信息。 C. 管理员对用户的管理。D. 管理员查看帖子信息。 E. 对论坛进行管理。 如图4-2所示: 网上在线论坛系统后台管理帖子信息管理公告信息管理论坛板块管理用户信息管理查询用户信息添加用户查看用户信息列表删除公告发布公告信息 图4-2 系统后台管理模块(2)前台功能 A. 用户登录功能。 B. 查看和修改个人信息。 C. 寻找查看其它用户信息。 D. 查看已发和已回帖子信息。 E. 发新帖。 F. 回复他人的帖子。 G. 修改和删除自己的帖子。H. 退出系统如图4-3所示:网上在线论坛系统前台管理退出系统帖子信息管理用户信息管理修改删除帖子回复贴模块发新帖模块用户登录其他用户查询修改信息查询帖子信息图4-3 系统前台管理模块4.3 接口设计以上所列出的功能,在设计时需要考虑以后扩充的可能,既在给论坛添加新的功能时,原有的功能正常使用,不受影响。或者丰富扩展某个功能时,能够方便衔接。所以,系统中为每个功能都保留开放的接口,通过接口可以对功能进行扩充,也可以与新功能进行挂接。其实现原理及思路如图4-4所示。 论坛新实现已有功能 接口 功能扩充图4-4 功能的可扩充接口实现原理4.4 维护设计系统维护进行模块化设计,因为系统模块化之后,系统一旦出错及时锁定错误处在那一模块,然后进行及时的系统维护。以免造成整个系统的混乱。系统要有可移植性。5 数据库设计5.1 数据库概念结构设计这一设计阶段的主要任务是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及它们之间的关系,建立一个概念性的数据模型,为后面的逻辑结构设计打下基础。根据分析,系统分别建立了用户、版块、帖子、管理员等实体,一个版块包含N个帖子。管理员管理所有版块并管理所有用户的权限。用户可以任意浏览版块中的内容,所以用户和帖子之间是M:N的关系。下面将使用实体联系图(E-R图)来具体描述这几个实体以及它们之间的联系。(1)用户信息表(用户编号,用户名,密码,邮件,头像),其E-R图如下图5-1所示:邮箱用户名头像 用 户密码用户编号 图5-1 用户实体图性质(2) 管理员信息表(管理员编号,管理员名称,密码, 性质),其E-R图如下图5-2所示: 管理员编号 管理员密码管理员名称图5-2 管理员实体图 (3)公告信息(公告编号,公告名,公告内容,创建时间),其E-R图如下图5-3所示:公告编号公告名创建时间公告内容 公告图5-3 公告信息实体图 (4)帖子信息表(帖子编号,帖子名,帖子内容,用户名,创建时间,最后回复时间,浏览次数,分类信息),其E-R图如下图5-4所示:浏览次数帖子编号浏览次数帖子名用户名 帖子最后回复时间创建时间帖子内容分类信息 图5-4 发帖信息实体图 (5)回复贴信息表(回帖编号,帖子编号,回帖名称,回帖内容,回帖时间),其E-R图如下图5-5所示:回贴编号回帖标题回帖时间回帖姓名 回复贴信息回帖内容 图5-5 回复贴信息实体图分类编号 (6)分类信息表(分类编号,种类名),其E-R图如下图5-6所示:种类名 分类信息 图5-6 待审核物品信息实体图头像编号 (7)头像信息表(头像编号,头像名(image),其E-R图如下图5-7所示:头像名 头像信息 图5-7 头像信息实体图5.2 逻辑设计几乎所有的WEB项目都要基于数据库,这使得数据库的设计在整个项目中举足轻重。本网上用品交换管理系统中大部分前台的显示信息都是从数据库中读取所需信息,而系统管理员则只需在后台通过修改数据库中的资料即可达到改变前台显示内容的目的,所以数据库在本系统中作为中间介质连接前台和后台,其重要性不言而喻。本设计根据系统需求分析,选用SQL Server 2008作为该系统的数据库。其中包含了系统中所有的资料。根据系统功能的分析,可以得到以下具体数据。下面是对数据库表的简要说明。 本系统数据库主要由以下的表组成 UserInfo -用户信息表 AdmInfo -管理员信息表 Logo -头像信息表 NoticInfo-公告信息表 RepInfo -回复贴信息表 topicInfo-帖子信息表 Kinds -分类信息表数据库表结构设计如下: 表5-1 用户信息表表5-2 管理员信息表表5-3 分类信息表表5-4 头像信息表表5-5 公告信息表表5-6 回复贴信息表表5-7 帖子信息表6 系统代码设计6.1 数据库连接本系统涉及到SQL数据库的使用。所以系统要正常运行,必须进行好数据库连接。因为实现系统功能的类都要与数据库进行连接,为了避免在每个类中重复编写代码,于是在系统程序中编写了一个数据库连接的抽象类-DB类来完成数据库连接的操作。在其它类中只需要调用该方法便可完成数据库连接。创建连接数据库类DB连接数据库。数据库连接主要代码:<configuration><system.web><compilation debug="true" targetFramework="4.0"/></system.web> <connectionStrings> <add name ="XinCnnString" connectionString="Data Source=.SQLEXPRESS; AttachDbFilename=|DataDirectory|Database.mdf; Integrated Security=True; User Instance = True" providerName="System.Data.SqlClient" ></add> </connectionStrings></configuration>6.2 系统功能设计与实现 根据本次设计的宗旨,结合论坛系统的特性。将主体功能划为两个模块:前台用户模块、后台管理员模块。这样划分的目的是将设计过程清晰条理化,减少开发难度。下面是利用代码对这两个模块的主体功能实现过程的具体介绍。由于页面有限,且为减少论文的累赘感,所以在下面过程中只着重介绍几部分重要功能代码。论坛系统首页界面如下图6-1所示: 图6-1 越瑗论坛系统首页图6.2.1 用户模块 (1)用户登录 用户登录界面设计如下图6-2所示: 图6-2 用户登录图 用户登录失败提示如下图6-3所示:图6-3 登录失败对话框 用户登录只要输入用户名和密码,如果两者都正确的话就登录成功,否则就会弹出对话框显示“很遗憾登录失败”。主要代码如下:protected void ImageButton2_Click(object sender, ImageClickEventArgs e) string strCnn = ConfigurationManager.ConnectionStrings"XinCnnString".ConnectionString; SqlConnection cnn = new SqlConnection(strCnn); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; string name = txtName.Text.Trim(); string password = txtPwd.Text.Trim(); cmd.CommandText = "select count(*) from UserInfo where UserName = '" + name + "' and UserPwd='" + password + "'" try cnn.Open(); cmd.ExecuteScalar(); int a = Convert.ToInt32(cmd.ExecuteScalar(); if (a > 0) Session"UserName" = name; Session"UserPwd" = password; /Response.Redirect("/shouye.aspx"); Response.Write("<script>alert('恭喜您,登录成功|');?location='javascript:history.go(-1)'</script>"); Label4.Text = Session"UserName".ToString() ; Label3.Visible = false; Label8.Visible = true; Label8.Text = "欢迎您来到越瑗论坛!" txtName.Visible = false; txtPwd.Visible = false; HyperLink2.Visible = true; Button2.Visible = true; Entry.Visible = false; Regist.Visible = false; Button1.Visible = false; else Response.Write("<script>alert('很遗憾,登录失败);location='javascript:history.go(-1)'</script>"); catch (Exception ex) Response.Write( "用户登录失败,错误原因是" + ex.Message); finally if (cnn.State = ConnectionState.Open) cnn.Close(); (2)用户注册 用户进入首页后没有注册过的用户可以点击注册进入注册页面注册并填写信息。用户名和密码不能为空,邮箱可以为空。此处代码属于用户模块代码,不一一例举。用户注册图如下图6-4所示: 图6-4 用户注册图注册成功如下图6-5所示:图6-5注册成功显示图 (3)用户发帖 用户发帖的界面如下图6-6所示: 图6-6 用户发帖图 (4)用户回复贴帖 用户回复贴的界面如下图6-7所示: 图6-7 用户回复贴图 (5)个人信息中心 个人信息中心内包含我的详细资料,其他用户信息查询,已发和已回帖信息,还可以进行用户信息修改,其界面如下图6-8所示: 图6-8 个人信息中心图6.2.2 管理员模块 (1)管理员登录 本系统的后台管理系统登录界面如下图6-9所示: 图6-9 管理员登录图 管理员登录和用户登录基本相似,都只要输入姓名和密码,登录失败都会有提示对话框弹出来。但管理员登录界面多有两个按钮,分别是取消和返回首页。主要程序如下: public partial class _Default : System.Web.UI.Pageprotected void Page_Load(object sender, EventArgs e) protected void Button1_Click1(object sender, EventArgs e) string strCnn = ConfigurationManager.ConnectionStrings"XinCnnString".ConnectionString; SqlConnection cnn = new SqlConnection(strCnn); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; string name = txtName.Text.Trim