BBS论坛设计与实现

更新时间:2024-03-08 22:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本科生毕业设计(论文)

摘 要

论坛又名网络论坛BBS,全称为Bulletin Board System(电子公告板)或者Bulletin Board Service(公告板服务)。它提供一块公共电子白板,每个用户都可以在上面书写,可发布信息或提出看法。用户在BBS站点上可以获得各种信息服务,发布信息,进行讨论,聊天等等。

本文讨论了一个网络BBS 的设计与实现过程,详细地讲述了开发一个基于Web 的BBS 网站系统所涉及到的技术和方法。系统使用Microsoft Visual Studio 2005 为前台开发工具,以SQL Server 2005 为数据库平台,根据面向对象开发原理,采用了基于B/S结构的开发模式来开发本系统。其中主要运用了ASP.NET 平台,ADO.NET 连接数据库技术,使用C# 语言编写。具有一般的BBS 所共有的一些功能。包括用户的注册登录、论坛公告和短消息的发布、论坛社区的讨论、论坛的友情链接、后台数据库信息的管理维护等基本模块。全文共分为绪论、关键技术介绍、需求分析、系统概述、系统分析、系统设计、系统实现等九章。绪论中阐述了系统的意义和系统的开发环境。系统概述中阐述了系统背景,所用技术、系统目标以及功能等。系统设计阶段阐述了论坛的总体设计思想、首页的设计、论坛的总体功能设计以及数据库的逻辑设计。在系统总结中阐述了系统的优劣势以及系统的扩展。文中详细说明了系统分析、系统设计的方法在系统实际开发中应用,并总结了开发过程中的一些经验和体会。

BBS论坛的存在使得地球村的概念离我们越来越近,使得人与人之间的沟通、交流变得格外的容易。特别是在IT领域,只有有了很好的交流,技术才会得到进步。因此,掌握如何设计并开发一个论坛管理系统也显得格外的重要,而且意义深远。

关键词:BBS论坛;B/S结构;ASP.NET 2.0;ADO.NET

I

本科生毕业设计(论文)

Abstract

Forums Web forums, also known as BBS, all known as Bulletin Board System (electronic bulletin board) or a Bulletin Board Service (bulletin board service). It provides a common electronic whiteboard, and each user can write on, or put forward their views may release information. BBS site users a variety of information services available, release information, discussions, and chat.

This article discusses a network design and implementation of BBS in detail about the development of a Web-based BBS website system involved in the technology and methods. System uses Microsoft Visual Studio 2005 development tools for the front to SQL Server 2005 database platform, according to principles of object-orienteddevelopment, adopted based on B / S structure of the development model to develop the system. The main use of the ASP.NET platform, ADO.NET database connections, use the C# language. Paper is divided into introduction, the key technical presentations, requirements analysis, system overview, system analysis, system design, system implementation, etc. IX. Introduction the meaning set forth in the system and system development environment. System Overview of the system outlined in the background, the use of technology, system objectives and functions. Forum system design described the overall design, page design, forum design and the overall function of the logical database design. Summarized in the system described advantages and disadvantages of the system and system expansion. The paper details the system analysis, system design methods applied in the actual development of the system, and summarizes some of the development process experience and understanding.

BBS Forum makes the existence of the concept of global village closer and closer, making communication between people, communication becomes particularly easy. Especially in the IT field, only a very good exchange, technology will beprogress. Therefore, mastering how to design and develop a forum for management systems is particularly important, and far-reaching.

Key words:BBS Forum;B/S structure;ASP.NET 2.0;ADO.NET

II

本科生毕业设计(论文)

目 录

第1章 绪 论 .......................................................................................................... 1

1.1 开发背景 ................................................................................................... 1 1.2 系统目标 ................................................................................................... 1 1.3 BBS对大学生学习生活的影响 ................................................................ 2 第2章 关键技术介绍 ............................................................................................ 3

2.1 IFrame框架技术 ........................................................................................ 3 2.2 第3方组件FreeTextBox .......................................................................... 3

2.2.1 FreeTextBox的作用 ........................................................................ 3 2.2.2 FreeTextBox的使用方法 ................................................................ 3 2.3 ADO.NET技术 .......................................................................................... 4 2.4 Transact-SQL技术 ..................................................................................... 6 2.5 JavaScript脚本语言 ................................................................................... 6 2.6 ASP.NET技术 ............................................................................................ 7 第3章 需求分析 .................................................................................................... 8

3.1 需求概述 ................................................................................................... 8 3.2 系统用例图 ............................................................................................... 8 3.3 系统关键领域类图 ................................................................................. 10 第4章 系统概述 .................................................................................................. 12

4.1 系统介绍 ................................................................................................. 12 4.2 主要功能 ................................................................................................. 12 4.3 主要模块介绍 ......................................................................................... 12

4.3.1 主页面 .......................................................................................... 12 4.3.2 论坛注册模块 .............................................................................. 13 4.3.3 论坛登录模块 .............................................................................. 14 4.3.4 论坛版块选择模块 ...................................................................... 14 4.3.5 帖子发表模块 .............................................................................. 15

第5章 系统分析 .................................................................................................. 16

5.1 BBS论坛管理系统的技术可行性分析 .................................................. 16 5.2 系统结构 ................................................................................................. 18 5.3 系统开发环境 ......................................................................................... 18

III

本科生毕业设计(论文)

第6章 系统设计 .................................................................................................. 19

6.1 系统总体设计 ......................................................................................... 19 6.2 数据库设计 ............................................................................................. 20

6.2.1 数据库需求分析 .......................................................................... 20 6.2.2 数据表的结构 .............................................................................. 20 6.2.3 数据表之间关系图 ...................................................................... 23 6.2.4 数据库操作类设计 ...................................................................... 23 6.3 论坛注册设计 ......................................................................................... 24 6.4 论坛登录设计 ......................................................................................... 25 6.5 帖子标题显示设计 ................................................................................. 26 6.6 新帖子发表模块设计 ............................................................................. 26 第7章 系统实现 .................................................................................................. 27

7.1 发表帖子的实现 ..................................................................................... 27

7.1.1 实现的关键技术 .......................................................................... 27 7.1.2 功能实现 ...................................................................................... 27 7.1.3 主要相关代码 .............................................................................. 27 7.2 浏览帖子的实现 ..................................................................................... 29

7.2.1 实现的关键技术 .......................................................................... 29 7.2.2 功能实现 ...................................................................................... 29 7.2.3 主要相关代码 .............................................................................. 29

第8章 系统测试 .................................................................................................. 31

8.1 测试方案及测试用例 ............................................................................. 31

8.1.1 测试方法介绍 .............................................................................. 31 8.1.2 单元测试 ...................................................................................... 32 8.2 测试总结 ................................................................................................. 32 第9章 结 论 ........................................................................................................ 33 参考文献 ................................................................................................................ 34 致 谢 ...................................................................................................................... 35 附 录 ...................................................................................................................... 36

IV

本科生毕业设计(论文)

第1章 绪 论

1.1 开发背景

BBS是在1992年底随着国际互联网的开始流行而迅速发展起来的。互联网的产生使得以前只能在本地访问的BBS可以被全世界随意访问,这对大多数人来说是极具诱惑力的。BBS是一个有多人参加的讨论系统,在BBS上大家可以对一个共同感兴趣的问题进行讨论,自由地发表自己的意见与观点,并且能直接与其他的人进行沟通。按照网站的性质以及服务对象来分,迄今有以下几种类型:一是校园BBS。校园BBS作为主要的集中地,在BBS领域具有举足轻重的地位。 由于校园BBS的繁荣,吸引了很多的社会人士参与。二是专业BBS。一般是由各个著名的大公司组建,人们可以利用其交流自己对商品的看法,更为重要的是可以解决商品使用中的问题。三是商业BBS。它是由ISP建立的BBS站点,这类BBS站点各种信息比较多,内容相当丰富。四是小型局域BBS。一般是由个人或小型集体建立,为小范围信息交流服务。五是业余BBS。一般由BBS爱好者个人利用一些免费空间办的BBS,目的是为广大网友提供一个在某些专业上的交流场所。六是新闻媒体BBS。是由新闻媒体网站设立的,为广大网友提供对新闻信息进行评论、发表意见和观点的场所。随着互联网事业的蓬勃发展。BBS,这个具有强大实时交互功能,信息交流的平台,使人们不再像电视观众、电台听众、报纸杂志读者一样只是被动地观看、收听、阅读,而是可以积极而及时地参与讨论,在了解他人观点意见的同时也可以发表自己的看法。

BBS论坛系统是为了方便大家的沟通和获取信息而开发的系统。我们利用ASP.NET知识和SQL Server 2005开发BBS论坛管理系统。该系统以Internet为平台,前台可使任何人注册、登录、登录在论坛上进行发帖、回帖、浏览帖子等。管理员也可以在后台对帖子、版块、用户等进行相关的管理。一个小型BBS论坛系统的前台功能主要包括浏览搜索帖子、用户登陆注册、发表回复帖子、个人资料管理和帖子管理;后台功能主要包括用户管理、论坛版块管理和帖子管理等。

1.2 系统目标

开发本系统意在吸纳大部分游离在众多论坛的大学生,达到校内网等论坛的目标。系统开发的总任务是实现文章的成功发表,留言的发布与回复。从而达到

1

本科生毕业设计(论文)

用户之间信息交流的目的。系统主要面向两类用户:用户和系统管理员。用户可以先注册,然后在网站里发表文章、留言等。系统管理员可以对用户的信息进行增添和删除及修改,对版块进行增加、删除和修改操作;还可以对网站进行修改与维护。

1.3 BBS对大学生学习生活的影响

1.BBS提供了丰富的网络学习资源

论坛是一个经过学习者整理加工过的网络资源汇en集中心,从新闻、学习到娱乐、体育,从文字到视频、音频,BBS汇集了各种形式、内容的网络资源。不少BBS都设有专门的Net Resources(网络资源)板块;FTP技术和BT技术的发展更是为BBS站内资源的更新、共享提供了方便。如今,大部分大学的BBS论坛都有相应的FTP服务器,不少BBS还与网络新兴的BT技术、Blog(博客)技术等连接起来BBS水木清华站就有“水木Blog”的栏目)。

2.BBS促进了协作学习

基于网络的论坛社区也是各种学习资源组合的场所,为学习者提供了学习环境。作为一个学生参与论坛的网络活动可包括许多种学习的意义,在特定板块内,论坛参与者围绕某个话题或者问题,通过发表、回复话题、版面讨论、站内信件等方式进行互动讨论、相互探讨,形成了一种以学习者为中心的学习方式。从教育网内人气排名前十名的论坛的网友参与的情况来看,在各大学习板块里,基本上每张帖子提出的问题都可以得到网友友好的、认真的回复解答,有着浓郁的协作探讨的学习气氛和良好的学习效果。

3.BBS提高了学生自主学习能力

网络学习的本质是一种自主学习,论坛提供了丰富的网络学习资源,使学习者能自主选择和控制学习地点、学习时间、学习方法和学习内容。在论坛里,学生可以自主地围绕学习问题,通过发帖、回复的形式提出讨论,寻求解答帮助,提高了学习的积极性和自主学习的能力。

2

本科生毕业设计(论文)

第2章 关键技术介绍

2.1 IFrame框架技术

框架是在网页设计中经常用到的一种技术,通过在HTML网页文档中使用标记,就可以将一个页面拆分成多个区域,每个区域称为一个框架,一般情况下每一个框架中都会放置一个网页,这些网页间可以相互独立,也可以有所关联。框架内的网页以一种平铺的形式充满了整个页面空间。

但在网页设计中,也会经常遇到在一个网页中引用另外一个网页的情况,即在一个网页中开辟一块区域用于放置其他网页,彷佛形成了一种“画中画”的效果。这种功能就是利用嵌入式框架(IFrame)技巧实现的。嵌入其他网页的初始页面称为父框架,嵌入到父框架内的页面称为子框架或嵌入框架。这种网页的嵌入技术不仅在很大程度上丰富了网页的布局设计,同时也可以方便地实现多种复杂的网页特效。

嵌入式框架(IFrame) 是框架的一种标记,在页面设计中经常用到。IFrame标记又叫浮动帧标记,使用IFrame可以将一个文档嵌入在另一个文档中显示,可以随处引用不拘泥网页的布局限制。在当今互联网网络广告横行的时代,IFrame更是无孔不入,将嵌入的文档与整个页面的内容相互融合,形成了一个整体。与框架相比,内嵌框架Iframe更容易对网站的导航进行控制,最大的优点在于其灵活性。

2.2 第3方组件FreeTextBox

2.2.1 FreeTextBox的作用

FreeTextBox 是一个基于Internet Explorer中MSHTML技术的ASP.NET开源服务器控件。这是一款优秀的自由软件(Free Software),我们可以轻松地将其嵌入到Web Forms中实现HTML内容的在线编辑,在新闻发布、博客写作、论坛社区等多种Web系统中都会有用途。

2.2.2 FreeTextBox的使用方法

步骤1:从网上下载FreeTextBox控件,解压。

步骤2:在VS2005编辑器中可通过工具>选择工具箱项>.NET Framework组

3

本科生毕业设计(论文)

件>浏览并选定FreeTextBox.dll后按确定控件将默认显示在VS2005编辑器工具箱的常规选项卡(可自行将控件拉到标准选项卡中),也可以直接在工具箱的标准选项卡列标头或所属列任何控件上右击>选择项> .NET Framework组件>浏览并选定FreeTextBox.dll后即可直接将控件加入标准选项卡。这样以后只要在常规选项卡或标准选项卡中将FreeTextBox控件直接拖放到项目的设计页面即可完成控件的调用。

步骤3:将FreeTextBox目录拷贝到所在项目里。

2.3 ADO.NET技术

ADO.NET的名称起源于ADO(ActiveX Data Objects),这是一个广泛的类组,用于在以往的Microsoft技术中访问数据。之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在.NET编程环境中优先使用的数据访问接口。

它提供了平台互用性和可伸缩的数据访问。ADO.NET增强了对非连接编程模式的支持,并支持RICH XML。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。

ADO.NET是一组用于和数据源进行交互的面向对象类库。通常情况下,数据源是数据库,但它同样也能够是文本文件、Excel表格或者XML文件。

ADO.NET允许和不同类型的数据源以及数据库进行交互。然而并没有与此相关的一系列类来完成这样的工作。因为不同的数据源采用不同的协议,所以对于不同的数据源必须采用相应的协议。一些老式的数据源使用ODBC协议,许多新的数据源使用OleDb协议,并且现在还不断出现更多的数据源,这些数据源都可以通过.NET的ADO.NET类库来进行连接。

ADO.NET提供与数据源进行交互的相关的公共方法,但是对于不同的数据源采用一组不同的类库。这些类库称为Data Providers,并且通常是以与之交互的协议和数据源的类型来命名的。ADO.NET包含的对象:

SqlConnection对象

和数据库交互,你必须连接它。连接帮助指明数据库服务器、数据库名字、用户名、密码,和连接数据库所需要的其它参数。Connection对象会被Command对象使用,这样就能够知道是在哪个数据库上面执行命令。

与数据库交互的过程意味着你必须指明想要发生的操作。这是依靠Command对象执行的。你使用Command对象来发送SQL语句给数据库。Command对象使

4

本科生毕业设计(论文)

用Connection对象来指出与哪个数据库进行连接。你能够单独使用Command对象来直接执行命令,或者将一个Command对象的引用传递给SqlDataAdapter,它保存了一组能够操作下面描述的一组数据的命令。

SqlDataReader对象

许多数据操作要求你只是读取一串数据。Data Reader对象允许你获得从Command对象的SELECT语句得到的结果。考虑性能的因素,从Data Reader返回的数据都是快速的且只是“向前”的数据流。这意味着你只能按照一定的顺序从数据流中取出数据。这对于速度来说是有好处的,但是如果你需要操作数据,更好的办法是使用DataSet。

DataSet对象

DataSet对象是数据在内存中的表示形式。它包括多个DataTable对象,而DataTable包含列和行,就象一个普通的数据库中的表。你甚至能够定义表之间的关系来创建主从关系(parent-child relationships)。DataSet是在特定的场景下使用——帮助管理内存中的数据并支持对数据的断开操作的。DataSet是被所有Data Providers使用的对象,因此它并不像Data Provider一样需要特别的前缀。

SqlDataAdapter对象

某些时候你使用的数据主要是只读的,并且你很少需要将其改变至底层的数据源。同样一些情况要求在内存中缓存数据,以此来减少并不改变的数据被数据库调用的次数。Data Adapter通过断开模型来帮助你方便的完成对以上情况的处理。当在一单批次的对数据库的读写操作的持续的改变返回至数据库的时候,Data Adapter填充(fill)DataSet对象。Data Adapter包含对连接对象以及当对数据库进行读取或者写入的时候自动的打开或者关闭连接的引用。另外,Data Adapter包含对数据的SELECT, INSERT, UPDATE和DELETE操作的Command对象引用。你将为DataSet中的每一个Table都定义Data Adapter,它将为你照顾所有与数据库的连接。所有你将做的工作是告诉Data Adapter什么时候装载或者写入到数据库。

总结:ADO.NET是与数据源交互的.NET技术。有许多的Data Providers,它将允许与不同的数据源交流――取决于它们所使用的协议或者数据库。然而无论使用什么样的Data Provider,你将使用相似的对象与数据源进行交互。SqlConnection对象管理与数据源的连接。SqlCommand对象允许你与数据源交流并发送命令给它。为了对进行快速的只“向前”地读取数据,使用SqlDataReader。如果想使用断开数据,使用DataSet并实现能进行读取或者写入数据源的SqlDataAdapter。

5

本科生毕业设计(论文)

2.4 Transact-SQL技术

T-SQL是Microsoft公司在关系型数据库管理系统SQL Server中的SQL-3标准的实现,是微软对SQL的扩展,具有SQL的主要特点,同时增加了变量,运算符,函数,流程控制和注释等语言元素,使得其功能更加强大。T-SQL对SQL Server十分重要,SQL Server中使用图形界面能够完成的所有功能,都可以利用T-SQL来实现。使用T-SQL操作时,与SQL Server通信的所有应用程序都通过向服务器发送T-SQL语句来进行,而与应用程序的界面无关。

根据其完成的具体功能,可以将T-SQL语句分为四大类,分别为数据定义语句,数据操作语句,数据控制语句和一些附加的语言元素。

数据操作语句

SELECT, INSERT, DELETE, UPDATE 数据定义语句

CREATE TABLE, DROP TABLE, ALTER TABLE CREATE VIEW, DROP VIEW CREATE INDEX, DROP INDEX

CREATE PROCEDURE, ALTER PROCEDURE, DROP PROCEDURE CREATE TRIGGER, ALTER TRIGGER, DROP TRIGGER 数据控制语句

CRANT, DENY, REVOKE 附加的语言元素

BEGIN TRANSACTION/COMMIT, ROLLBACK, SET TRANSACTION

DECLARE OPEN, FETCH, CLOSE, EXECUTE

2.5 JavaScript脚本语言

Javascript是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。

6

本科生毕业设计(论文)

JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。它最初由网景公司的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类。JavaScript是Sun公司的注册商标。Ecma国际以JavaScript为基础制定了ECMAScript标准。JavaScript也可以用于其他场合,如服务器端编程。完整的JavaScript实现包含三个部分:ECMAScript,文档对象模型,字节顺序记号。

Netscape公司在最初将其脚本语言命名为LiveScript来Netscape在与Sun合作之后将其改名为JavaScript。JavaScript最初受Java启发而开始设计的,目的之一就是“看上去像Java”[2],因此语法上有类似之处,一些名称和命名规范也借自Java。但JavaScript的主要设计原则源自Self和Scheme[3].JavaScript与Java名称上的近似,是当时网景为了营销考虑与Sun公司达成协议的结果。为了取得技术优势,微软推出了JScript来迎战JavaScript的脚本语言。为了互用性,Ecma国际(前身为欧洲计算机制造商协会)创建了ECMA-262标准(ECMAScript)。现在两者都属于ECMAScript的实现。尽管JavaScript作为给非程序人员的脚本语言,而非作为给程序人员的编程语言来推广和宣传,但是JavaScript具有非常丰富的特性,目前JavaScript的最新版本为1.9版。

2.6 ASP.NET技术

ASP.NET是用于形成于Web的应用程序的内容丰富的编程框架。它是一种创建动态Web应用程序的全新手段,它给开发人员提供了比以往更大的灵活性和更多的功能。通过把通用代码置于控件中,并将表示逻辑和商务逻辑分离开来的崭新方法,ASP.NET使应用程序的开发和维护更加容易。它是Microsoft.NET Framework的组成部分,允许使用Framework支持的任何语言创建代码。像JSP、PHP和ASP一样,ASP.NET也是一种服务器端技术,它可以制作动态WEB页的内容。Visual Studio.NET不是ASP.NET必要的组成部分,许多开发人员没有它照样可以开发网站。不过,一旦安装了.NET Framework SDK,用户就可以在任何环境下开发ASP.NET应用程序。

ASP.NET是一种用于创建内容丰富的动态网站、WEB应用程序和XML WEB服务的新编程模型。ASP.NET使用编译的、事件驱动编程模型从而提高运行速度和分离应用程序逻辑和用户界面。用ASP.NET可以很容易的开发基于三层架构的B/S应用程序。与以往的编程模型相比,这种新编程模型提供了基于组件的架构和开发范例。

7

本科生毕业设计(论文)

第3章 需求分析

3.1 需求概述

在需求分析阶段,我们采用UML 建模,目的是捕捉系统的所有功能需求并加以描述,同时建立模型,分析并提取所开发系统的各种可以模块化的功能以及描述它们的合作概貌。

BBS 系统的基本需求如下:

(1)它是一个计算机网络软件系统,可通过WEB浏览器进行访问; (2)系统支持三种用户(游客、注册的用户、管理员),每种用户可使用的功能都是不同的;

(3)游客只可以查看帖子;

(4)游客可以通过注册的方法变为注册用户,注册信息包括用户名、密码及其它附属信息。其中用户名是唯一的,不可与其它注册用户的用户名重复;

(5)游客在登录(输入用户名与密码)之后,其身份变为注册用户; (6)注册用户可以查看所有旧帖子,并发新帖子; (7)注册用户可以回复他人或自己发表的帖子; (8)注册用户可以管理自己的附属信息并修改它们; (9)管理员是管理BBS 的用户,且是一种特殊的注册用户; (10)管理员可以管理注册用户,如查看、修改、删除注册用户信息; (11)管理员可以管理BBS 的帖子,如删除不合法的帖子等。

3.2 系统用例图

在本系统中,通过分析,可以确认BBS 中有三种角色:管理员,注册用户,游客。在此基础上,为每个角色定义他们所能执行的系统功能(用例,即每个角色的功能需求)。

游客用例图如图3.1所示。

8

本科生毕业设计(论文)

图3.1 游客用例图

游客角色指未执行登录过程的系统进入者。 游客可以查看帖子,而不能发新帖子与回复帖子。 游客在登录(输入用户名与密码)后转为注册用户。 游客在注册后自动执行登录过程,即自动转为注册用户。 注册用户用例图如图3.2所示。

图3.2 注册用户用例图

注册用户指已经登录过的用户,他们不仅可以查看帖子,还可以发新帖子、回复帖子及管理个人信息。

注册用户在执行用户退出过程后变为游客。

9

本科生毕业设计(论文)

管理员用例图如图3.3所示。

图3.3管理员用例图

管理员可视为一种特殊的注册用户,它不仅拥有注册用户的全部功能(上图中略去这部分功能),还拥有两个其它的功能:1,帖子管理,2,用户管理(用户指注册用户、管理员)。

3.3 系统关键领域类图

分析阶段的另一项工作是特定领域分析,以列出系统中的特定领域类。本系统中,通过系统用例分析可以发现,本系统有以下关键的领域类:用户、帖子。

为了方便管理帖子,可以将帖子分为发布的帖子与回复的帖子。

不同用户对于帖子的权限不同。用户类可以分为:已注册的用户信息、当前注册的用户。

各大领域类的关键信息如下:

10

本科生毕业设计(论文)

图3.4 用户信息表图 图3.5 用户信息表图

发布帖子领域类中的发帖人编号即用户信息领域类中的用户编号。回复的帖子领域类中的回帖人编号即用户信息领域类中的用户编号。回复的帖子领域类中的 帖子编号即发布帖子领域类中的帖子编号。

11

本科生毕业设计(论文)

第4章 系统概述

4.1 系统介绍

“BBS论坛管理系统”是通用性很强的论坛系统,集成了浏览帖子,发表帖子,回复帖子,删除帖子,版块管理,用户注册,用户头像管理等多种实用的功能。本系统是运用微软可视化编程工具之一Microsoft Visual Studio 2005 开发的,界面美观大方,系统运行稳定。本系统以SQL Server 2005为数据库。

4.2 主要功能

按照编程流程,把BBS论坛的模块按照实现功能来划分,包括: (1)论坛注册模块:用户的基本信息的填写。 (2)论坛登录模块:论坛使用者的一定限制。

(3)论坛版块选择模块:论坛多元化,便于对帖子的管理。 (4)帖子标题显示模块:显示某一论坛版块的帖子。 (5)帖子回复模块:对帖子进行回复。 (6)帖子发表模块:发表新的帖子。

(7)论坛管理模块:用户管理,版主管理,论坛版块管理,论坛帖子管理,头像管理。

(8)论坛主页模块:对论坛的全局显示。 (9)数据库设计模块:论坛所需要的数据。

4.3 主要模块介绍

4.3.1 主页面

主页面是论坛的门户,子页面的调用要通过主页面实现。另外,主页面还要显示论坛最新信息、网站信息、广告等信息。本系统是个综合论坛,所以在主页面中要对各类信息按类型进行分类。除此之外,论坛最新信息要实时响应。其运行结果如图4.1所示。

12

本科生毕业设计(论文)

图4.1 主页面运行结果

4.3.2 论坛注册模块

一个论坛需要对其中的用户进行管理,因此,一般只有授权用户才能够享有BBS论坛的一些基本功能,而对于一个初次登录论坛的用户,只有通过注册才能够得到基本授权。原先的论坛在发帖时,需要填写自己的笔名。这样对于总是重复发帖的人,总是要填写笔名,比较麻烦。因此,论坛扩展了用户注册登录功能,参与论坛的人注册了自己的笔名和个人信息,拥有了论坛中的身份,发言时就不需要重复写个人信息了。

用户在注册过程中,一般需要确认论坛的基本准则和行为规范,再填写基本的用户信息,其中最重要的自然是用户名和密码,这是一个用户在该论坛的身份象征。

论坛注册模块运行结果如图4.2所示。

13

本科生毕业设计(论文)

图4.2 论坛注册模块运行结果

4.3.3 论坛登录模块

想要在论坛中进行相应的操作,不但需要用户有在这个论坛上相应的权限,还需要能让论坛知道这一点,这是就是登录模块。用户注册时提供的用户名和密码,就像通行证一样,获得了论坛的认可后,才能开始在论坛之中进行操作。

论坛登录界面运行结果如图4.3所示。

图4.3 论坛登录界面运行结果

4.3.4 论坛版块选择模块

在论坛中,用户所发表的主题类型不同,如果只在一个区域内显示,对用户的查阅,和管理员的维护带来很多的不便。为此,我们把论坛分为不同的版块,

14

本科生毕业设计(论文)

以显示不同类型的帖子。这样,用户在发表和查阅帖子时,可根据帖子类型到相应的论坛版块内进行集中性的发表和查阅。管理员在维护论坛时也可以节省很多不必要的时间开销。

论坛版块运行结果如图4.4所示(音乐空间版块)。

图4.4 论坛区模块运行结果

4.3.5 帖子发表模块

这个模块的主要功能就是提供给用户一个发表自己的帖子的功能。用户在登录之后,通过填写相应的内容,如帖子标题、帖子内容等,就能在论坛中的标题列表中找到自己的帖子。帖子发布模块运行结果如图所示4.5所示。

图4.5 帖子发表运行结果

15

本科生毕业设计(论文)

第5章 系统分析

5.1 BBS论坛管理系统的技术可行性分析

BBS论坛管理系统就是提供给注册用户一个平台,会员用户可以通过Internet接入,登录本系统,在这个平台上发表帖子、阅读帖子、回复帖子等等。

此类系统通常有以下四种类型的操作用户:游客用户、普通用户、版主、管理员。每类用户有其不同的操作集,系统通常提供一个统一的登录页面,此页面应能自动识别不同级别的用户,并提供不同的操作界面。与之相应,此类系统通常应具有以下功能:用户注册、用户登录、发表帖子、阅读帖子、回复帖子、个人资料维护、版块管理、版主管理、用户管理等等,所有操作都可以由用户在客户端浏览器中完成,而服务器端程序会按用户的要求来完成对系统数据的操作,并将结果传给Web服务器,再由Web服务器处理成HTML文件后发送到客户端浏览器。这就是所谓的B/S结构应用系统,B/S结构即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。早期的软件系统多以此作为首选设计标准。

B/S结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓N-Tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript?)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。

将应用程序分成好几个离散逻辑组件,就是多层式结构 (N-Tier) 应用程序。最常见的选择是分成三个部分:表示层、事务逻辑层和数据层(3-Tier),不过也有其它的组合。多层式结构应用程序,在一开始是解决某些与传统客户端/服务器 (主从式) 应用程序相关的问题,但是随着 Web 的出现,此结构已经成为主导新程序之开发的结构。下面就是3-Tier结构各层功能以及经常采用的技术作个简介:

表示层主要运行于客户端浏览器,采用Script (脚本)语言编写。HTML、JavaScript、VBScript是此类应用系统中展示层最常用的脚本编制语言,结合CCS以及ActiveX技术,能设计出交互相当灵活功能又相当强大的客户端网页。

16

本科生毕业设计(论文)

事务逻辑层设计通常有三个选择:ASP.NET网页、COM或COM+组件、DBMS中所执行的预存程序。将程序代码的一部分,建立成执行于数据库管理系统 (DBMS) 中的预存程序,使数据与程序代码储存在相同的位置,有助于最佳化执行效率,但是,预存程序都依赖于特定的数据库系统,在编写和侦错方面都相当复杂,只适宜于大型的商业应用系统。以 COM 对象的方式,编写中间层(Middle Tier)事务逻辑,可以使用全功能的语言,来产生经过编译的执行程序,执行效率也相当高,此外,在 COM 对象中包装事务逻辑,还可以清楚地将此程序代码与网页内含的展示程序代码分隔,这样可以使应用程序更易于维护,但是,COM对象的部署也有一定的麻烦,新编写的组件对象,只有在服务器重新启动后才能被应用程序调用。用ASP.NET 网页设计事务逻辑相对来说比较简单,但是,ASP.NET网页采用脚本语言来编写事务逻辑,比如VBScript,程序代码只有在执行时才被翻译,这样会降低执行效能,此外,ASP.NET 网页中的程序代码也是难以维护的,因为事务逻辑程序代码与建立使用者接口的展示程序代码彼此混杂在一起。

数据层较为灵活,视系统规模可选择Sybase、Oracle、My SQL、SQL server或者MS Access。

综上所述,结合本系统实际需要,本系统采用B/S结构,使用微软公司的技术解决方案。开发环境采用微软的Visual Studio 2005。采用3-Tier软件结构:表示层采用HTML、JavaScript或VBScript结合CSS、ActiveX技术来编写;事务逻辑层,考虑到本系统为通用BBS系统,系统应该具备较大的可伸缩性,应该能适应最基本应用最广泛的WEB平台,特别是个人用户想在一些免费主页空间搭建自已的论坛,而这类免费主页空间通常只支持ASP.NET来处理服务器端数据或数据库,另外,通用系统应该具备较大的可扩展性。因此,本系统事务逻辑层设计采用ASP.NET网页;至于数据层,本系统采用最基本的SQL Server 2005数据库系统。

本系统的开发环境和开发工具为:Windows XP,Visual Studio 2005,SQL Server 2005。

17

本科生毕业设计(论文)

5.2 系统结构

根据论坛系统的情况和要求,设计系统结构如图5.1所示。

图5.1 系统结构图

5.3 系统开发环境

系统开发平台:Microsoft Visual Studio 2005 数据库管理系统软件:SQL Server 2005 运行平台:Windows XP

18

本科生毕业设计(论文)

第6章 系统设计

设计阶段的任务是通过综合考虑各个功能间关联,以扩展和细化分析阶段的模型。设计的目的是指明一种易转化成代码的工作方案,是对分析工作的细化,即进一步细化分析阶段所得出的系统用例与关键领域类。

本阶段建模的目的是将分析阶段的模型扩展和转化为可行的技术实现方案,本系统中将系统用例细化为需求活动图、为关键领域类扩展为系统数据模型,并提供接口函数。

6.1 系统总体设计

系统总体分为三个部分:第一部分是客户端(即浏览器)部分;第二部分是WEB服务器部分(包括HTML页面和.NET 架构部分);第三部分是数据库服务器端部分;用户通过浏览器操作将页面传给WEB 服务器,在WEB 服务器中,.NET是一种先进的建立在通用语言上的程序构架,能被用于一台Web 服务器来建立强大的Web 应用程序,.NET提供许多比现在的Web 开发模式强大的优势。通常ASP.NET 直接建立于Web 服务器中,并且是作为Web 服务器的一个服务运行,支持多用户,多线程。它拥有强有力的会话管理机制,可以实现各请求之间的信息共享,提高系统运行效率。数据库服务器端将处理的结果以用户需要的数据格式返回给中间层Web 服务器,Web 服务器将操作结果通过HTML 页面的形式显示给用户,系统结构流程如图5.1所示。

图6.1 基于B/S 的系统结构流程

19

本科生毕业设计(论文)

本系统采用的是三层的B/S结构模式开发,ASP.NET结构也是一个三层的系统:包括UI层、业务逻辑层和数据层。其中:UI层负责与用户交互,接收用户的输入并将服务器端传来的数据呈现给客户。

业务逻辑层负责接收浏览器传来的请求并将请求传给数据层,同时将请求处理结果发给浏览器。它由Web表单、XML Web服务和组件服务组成。其中Web 表单是ASP.NET 应用程序的核心所在,它是向客户呈现数据和信息的基础,也是响应和处理客户请求服务的基础。

数据层是通过ADO.NET操纵数据为事务逻辑层提供数据服务,如存储数据操作结果、返回数据检索结果等。

6.2 数据库设计

6.2.1 数据库需求分析

根据论坛所需要实现的功能,对其数据库的需求进行分析,得到以下结论:要存储的内容包括用户信息,帖子信息、回复信息、论坛版块信息。

一个用户可以发表多个帖子。 一个用户可以回复多个帖子。

一个帖子或者一个回复都只对应一个用户。 一个帖子可以对应多个回复。 经过以上分析,设计如下数据库:

用户信息:包括用户名、密码等一系列确认用户身份的信息。

帖子信息:包括该论坛中所有帖子的标题、内容、作者、发表时间等,并且要能把每一个帖子与相应的论坛版块相应的对应起来。

回帖信息:包括该论坛中所有的回复信息,包括回复内容、作者、回复时间等,并且要能把每一条回复信息与其回复的帖子信息相应对应起来。

论坛版块信息:包括该论坛中所有版块的标题、说明、帖子数、回复数、版主等一系列信息。

在明确了数据库信息之后,下面开始构建数据表。

6.2.2 数据表的结构

在程序开发过程中,设计数据库的表结构是非常重要的一个环节。一个设计良好的数据库结构,可以提高效率,方便维护,并且为以后进行功能的扩展留有余地。这就好比高楼大厦一样,有稳固的基础,才能有优秀的成果。

下面设计论坛的数据库。通过数据表的关系、详细字段结构。以及相关的数

20

本科生毕业设计(论文)

据库扩展设计由浅入深讲解,并对主要的数据库表结构及数据库关系图进行详细的介绍。本系统采用SQL Server 2005数据库系统,在该系统中新建一个数据库,将其命名为db_BBS。本系统中共用到7个数据表。

在数据库表设计过程中,可以把握几条原则,数据库设计一个表最好只存储一个实体或对象的相关信息,不同的实体最好存储在不同的数据表中,如果实体可以再划分,实体的划分原则是最好能够比当前系统开发的实体颗粒度要小;数据表的信息结构一定要适合,表的字段数量一定不要过多;扩展信息和动态变化的信息一定要分开在不同的表里;对于出现多对多这样的表关系系统,尽量不要出现等。

根据上面的数据库需求分析,BBS论坛数据库中各个表的设计结果如下。 (1) tb_User(用户信息表)需要包括的字段如图6.2所示。

图6.2 tb_User表

(2)tb_Card(帖子信息表)用于保存各类帖子的详细信息,包括的字段如图6.3所示。

21

本科生毕业设计(论文)

图6.3 tb_Card表

(3)tb_Revert(回帖信息表)用于保存对帖子的回复信息,包括的字段如图6.4所示。

图6.4 tb_Revert表

(4)tb_Module(版块信息表)用于保存该论坛所包含的版块信息,包括字段如图6.5所示。

图6.5 tb_Module表

22

本科生毕业设计(论文)

6.2.3 数据表之间关系图

设计数据库表间的关系主要是考虑论坛中各个对象的相互关系,帖子属于版块,回复帖子从属于主题帖,帖子的作者属于用户,因此版块、主题帖、回复帖是一层层的从属依赖关系,帖子的作者必须是论坛的用户,帖子不能脱离版块、用户而单独存在。

最后得到的数据表之间关系图如图6.6所示。

图6.7 数据表关系图

6.2.4 数据库操作类设计

数据库操作类主要实现的功能有:打开数据库连接、关闭数据库连接、释放数据库连接资源、传入参数并且转换为SqlParameter类型、执行参数命令文本(无返回值)、执行参数命令文本(有返回值)、将命令文本添加到SqlDataAdapter和将命令文本添加到SqlCommand。

在命名空间区域引用using System.Data.SqlClient命名空间。为了精确的控制释放未托管资源必须实现DataBase类的System.IDisposable接口,IDisposable接口声明了一个方法Dispose,该方法不带参数,返回Void。

建立数据库的连接主要通过SqlConnection类实现,并初始化数据库连接字符串,然后通过State属性来判断连接状态,如果数据库连接状态为关,则打开数据

23

本科生毕业设计(论文)

库连接。

关闭数据库连接主要通过SqlConnection对象的Close方法实现。

因为DataBase类使用System.IDisposable接口,IDisposable接口声明了一个方法IDisposable,所以在此应该完善IDisposable接口的IDisposable方法,用来释放数据库连接资源。

本系统向数据库中读取数据是以参数形式实现的。MakeInParam方法用于传入参数,MakeParam方法用于转换参数。

RunProc方法为可重载方法,功能分别为执行带参数SqlParameter的命令文本,RunProc(string procName,SqlParameter[] params)方法主要用于执行添加、修改和删除;RunProc(string procName)方法用来直接执行SQL语句,如数据库备份与数据库恢复。

RunProcReturn方法为可重载方法,返回值为DataSet类型。功能分别为执行带参数SqlParameter的命令文本。RunProcReturn(string procName,SqlParameter[] params,string tbName)方法主要用于执行带参数SqlParameter的查询命令文本;RunProcReturn(string procName,string tbName)用于直接执行查询SQL语句。

CreateDataAdapter方法将带参数SqlParameter的命令文本添加到SqlAdapter中,并执行命令文本。

CreateCommond方法将带参数SqlParameter的命令文本添加到CreateCommond中,并执行命令文本。

6.3 论坛注册设计

论坛注册的流程是这样的,为了能登录论坛,一个用户必须在该论坛上有合法身份,当一个用户没有这个身份时,必须进入注册页面进行登录。当进入注册页面时,用户开始填写资料并单击“注册”按钮,首先检查输入完整性,即该填的信息都填完了并且正确填写,如果信息不完整或有错误,则会做出相应的提示,如果完整性检验通过,则会提示注册成功并进入登录页面。具体流程如图6.8所示。

24

本科生毕业设计(论文)

图6.8 论坛注册流程图

6.4 论坛登录设计

用户使用论坛时,需要3种角色:游客(即没有注册的用户)、已经注册的用户和后台管理员。

管理员用户:

管理员用户可以对论坛的注册用户进行管理,可以直接添加用户,赋予相关权限,也可以修改已注册用户的权限,对于违规的用户可以删除;

另外,管理员还可以对论坛模块和论坛帖子进行添加、修改和删除等权利。 普通用户:

这里的普通用户可以分为游客(即没有注册的用户)和已经注册的用户。没有注册的用户在进入论坛之后,只能浏览模块、主题贴,而已经注册的用户在登录进入论坛后,还可以对各类帖子发表自己的评论、发表帖子并加以编辑等。具体流程图如图6.9所示。

25

本科生毕业设计(论文)

图6.9 论坛登录流程图

6.5 帖子标题显示设计

在用户登录后,会进入论坛版块列表,选择论坛版块后,会进入相应的论坛版块帖子列表,同时在帖子列表中会显示一走些有关帖子的基本信息,包括题目、作者、时间、回复数。在帖子标题显示模块中,如果单击帖子标题,则进入帖子浏览界面;如果单击右上负的“发表帖子”链接,则进入发表帖子模块。

6.6 新帖子发表模块设计

进入新帖子发表页面后,填写发表帖子的名称、所属版块和内容,单击“提交”按钮。首先检查输入完整性,如果输入不完整,则提示用户填写相应项,如果通过完整性检验,则提示发表成功。

26

本科生毕业设计(论文)

第7章 系统实现

7.1 发表帖子的实现

7.1.1 实现的关键技术

主要技术的应用为:FreeTextBox组件的使用和使用Image控件显示头像。

7.1.2 功能实现

发表帖子的页面(Deliver.aspx)实现了在指定版块中发表帖子的功能,该页面运行结果如图7.1所示。

图7.1 发表帖子页面

7.1.3 主要相关代码

点击“提交”按钮触发其Click事件,在该事件中实现发表帖子功能,代码如下。

27

本科生毕业设计(论文)

protected void btnSubmit_Click(object sender, EventArgs e) {

string strName = \string strPop = \

if (txtCName.Text == string.Empty) {

Response.Write(\帖子名称不能为空!')\

return; }

if (Session[\ {strName = \匿名\ strPop = \游客\ else

{strName = Session[\ strPop = Session[\ cardmanage.CardID = cardmanage.GetCID(); cardmanage.CardName = txtCName.Text;

modulemanage.ModuleName = ddlMName.SelectedValue; cardmanage.ModuleID =

modulemanage.FindModuleByName(modulemanage, \

cardmanage.CardContent = FreeTextBox1.Text; cardmanage.CardTime = DateTime.Now; cardmanage.CardPeople = strName; cardmanage.Pop = strPop; cardmanage.AddCard(cardmanage);

Response.Write(\帖子发表成功!')\

txtCName.Text = FreeTextBox1.Text = string.Empty; }

28

本科生毕业设计(论文)

7.2 浏览帖子的实现

7.2.1 实现的关键技术

实现的关键技术:DataBinder.Eval方法绑定数据和DataList控件分页。

7.2.2 功能实现

浏览帖子页面(CardInfo.aspx)实现了显示指定帖子及其回复信息的功能,该页面运行结果如图7.2所示。

图7.2 浏览帖子页面

7.2.3 主要相关代码

为了实现帖子显示及其回复信息的功能,本系统自定义了以下4个方法,分别为:cardBind、dataBind、pageCount、getPhoto方法。下面例举出其中那一个。

cardBind自定义方法用于显示帖子信息,并根据发帖人姓名显示其头像,代码如下。

public void cardBind(string str) { try {

cardmanage.CardID = str; Label1.Text =

Convert.ToDateTime(cardmanage.FindCardByID(cardmanage,

29

本科生毕业设计(论文)

\

Label2.Text = cardmanage.FindCardByID(cardmanage, \

Label4.Text = cardmanage.FindCardByID(cardmanage, \

Label8.Text = cardmanage.FindCardByID(cardmanage, \

string strPop = cardmanage.FindCardByID(cardmanage, \

string strPhoto = \ if (strPop == \游客\ {

strPhoto = \ }

if (strPop == \用户\ {

usermanage.UserName =

cardmanage.FindCardByID(cardmanage, \

strPhoto = usermanage.FindUserByName(usermanage, \

}

if (strPop == \版主\ {

hostmanage.HostName = cardmanage.FindCardByID(cardmanage, \

strPhoto = hostmanage.FindHostByName(hostmanage, \

}

if (strPop == \管理员\

{strPhoto = \ Image2.ImageUrl = strPhoto; } catch { } }

30

本科生毕业设计(论文)

第8章 系统测试

系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案.。它的的任务是近可能彻底的检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统“做得怎样?”。

8.1 测试方案及测试用例

8.1.1 测试方法介绍

软件测试有两种方法:白盒法和黑盒法

如果知道了产品应该具有的功能,可以通过测试来检测是否每个功能都能实现,这种测试方法叫作黑盒测试法;如果知道产品的内部工作过程,可以通过测试来检验是否按照规格说明说的规定正常运行,这个方法叫白盒测试法。

对于软件而言,黑盒测试法是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说黑盒测试是在程序的接口进行测试,它只检查程序的功能是否按照规格说明说的说明正常运行,程序是否能恰当的接受输入数据,产生正确的输出信息,并且保持外部信息的完整性。黑盒测试又称为功能测试。与黑盒测试法相反,白盒测试法是把程序看成是装在一个透明的白盒子里。也就是完全了解程序的结构和处理过程,这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否能按预定的要求正确工作,白盒测试又称为结构测试。

粗看起来,不论采用上述那种测试方法,只要对每一种可能的情况都进行测试,就可以得到完全正确的程序。包含所有可能情况的测试成为穷尽测试,对于实际程序而言,穷尽测试通常是不可能做到的。使用黑盒测试法为了做到穷尽测试,至少对所有输入数据的各种可能值的排列组合都进行测试,但是,由此得到的应该测试的情况,数字往往达到实际上根本无法测试的程度。实践表明,用无效的输入数据比有效的输入数据进行测试往往能发现更多的错误。使用白盒测试法和使用黑盒测试法一样也不可能做到穷尽测试。

因为不能做到穷尽测试,所以软件测试不可能发现程序中的所有错误。也就是所通过测试并不能证明程序是完全正确的。但是,我们的目的是要通过测试保

31

本科生毕业设计(论文)

证软件爱你的可靠性,因此,必须仔细设计测试方案,力争用尽可能少的测试发现尽可能多的错误。

8.1.2 单元测试

测试一:在用户登录时,用户填写错误的登录名或密码或验证码,系统是否给出提示信息。

具体操作:点击进入登录界面,填写错误的登录名或密码或验证码。 结果:系统弹出文字提示框,提示登录名或密码错误,用户登录失败。 结论:要求用户以正确的登录名、密码和验证码进行登录。

测试二:在用户注册时,用已存在的用户名进行注册,系统是否提示该用户已存在。

具体操作:用同一个用户名连续注册两次。

结果:系统弹出文字提示框,提示该用户已存在,用户注册失败。 结论:用户名不可以重复。

测试三:在用户以游客(未登录BBS论坛管理系统)方式进入BBS论坛管理系统的某个版块并回复某个帖子时,系统是否会提示用户没有这个权限。

具体操作:用户不进行登录直接进入某个版块,然后对某个帖子进行回复。 结果:系统提示用户没有这个权限,回复帖子失败。 结论:要求用户必须先登录,才可以对某个帖子进行回复。

测试四:以正确的普通用户的登录名和密码进行版主登录,是否能够成功登录。

具体操作:注册一个普通用户,以这个登录名和密码进行版主登录。 结果:系统弹出文字提示框,提示版主用户名或密码错误,版主登录失败。 结论:用户不可以跨越自己的权限进行登录。

8.2 测试总结

本系统的各个功能现已基本实现,代码基本无误。但,通过对本系统的测试发现,该系统仍然存在一些细节问题。例如,有些地方的设计还是不够人性化。这些问题主要还是由于对系统开发缺乏经验,以后会继续努力。

32

本科生毕业设计(论文)

第9章 结 论

本文主要介绍了网上在线论坛的设计过程。在设计过程中应用了IFrame框架技术,并引入了第三方组件FreeTextBox,该组件是一个在线文本编辑器,可以对文字以及图片内容进行处理,并将数据保存到数据库中。另外,本文着重介绍了系统数据库的设计和公用模块的编写,其中公用模块的编写包含数据库连接模块编写,即在应用程序配置文件Web.Config文件中添加数据库连接信息等;在论坛典型模块设计中应用了3个主要模块,即浏览帖子、回复帖子和发表帖子3大模块。

本系统是一个具有实际意义的论坛系统。本系统大部分是应用ASP.NET 2.0技术完成的,本文主要讨论了BBS论坛管理系统的设计与开发,把面向对象思想恰当结合进.NET 技术,实现了OOA和OOD。本系统采用ASP.NET+ADO.NET 技术,协同采用SQL Server 2005技术,在设计和实现过程中充分利用B/S 三层架构的优势来优化系统结构,运行速度快,减少了无用的网络传输,保证了系统的稳定运行。实际应用表明,本系统使用方便,执行效率较高。

33

本科生毕业设计(论文)

参考文献

[1] 萨师煊,王珊.数据库系统概论.第三版.北京:高等教育出版社,2007: 38-135 [2] 施伯乐,丁宝康.数据库系统教程.第二版.北京:高等教育出版社,2006: 120-145 [3] 张海藩.软件工程导论.第三版.北京:清华大学出版社,2009: 39-59

[4] 张跃廷,房大伟,苏宇.ASP.NET 2.0网络编程自学手册.北京:人民邮电出版社,

2008: 350-400

[5] 龚赤兵.ASP.NET 2.0网站开发实例教程.北京:人民邮电出版社,2006: 200-220 [6] Karli Watson等.C#入门经典.第3版.北京:清华大学出版社,2006: 133-146 [7] 郑耀东.ASP.NET 2.0编程指南.北京:人民邮电出版社,2007: 58-68 [8] 陈刚.CSS标准网页布局开发指南.北京:清华大学出版社,2007: 102-113 [9] 网冠科技.ASP.NET 2.0+SQL Server 2005网络应用编程二合一百例.北京:机械

工业出版社,2007: 123-135

[10] Michael Otey, Denielle Otey. Microsoft SQL Server 2005开发指南.北京:清华大

学出版社,2007: 58-76

[11] 张鑫.CSS代码效果对比学习.北京:中国青年出版社,2007: 45-60 [12] Jason Beaird等.完美网页设计艺术.北京:人民邮电出版社,2008: 32-42 [13] 雷波,闫琳,邱启红.Photoshop CS3中文版标准教程.北京:科学出版社,2008:

66-76

[14] 庞娅娟,房大伟,吕双.ASP.NET从入门到精通.北京:清华大学出版社,2010.7:

123-130

[15] 张跃廷,苏宇,贯伟.ASP.NET程序开发范例宝典:C#.北京:人民邮电出版社,

2009: 56-66

[16] 德莱尼,金成姬,陈绍英.Microsoft SQL Server 2005技术内幕:查询、调整和

优化.北京:电子工业出版社,2009: 112-130

[17] 郝安林,许勇,康会光.SQL Server 2005基础教程与实验指导.北京:清华大学

出版社,2008: 78-88

[18] 王欣,徐腾飞,唐连章.SQL Server 2005 数据挖掘实例分析.北京:中国水利

水电出版社,2008: 35-48

34

本科生毕业设计(论文)

致 谢

经过一阶段时间的不懈努力,我的毕业设计终于结束了。毕业设计的结束也标志着我大学生活的完结。经过了大学的洗礼,我发现我自己成熟了许多,长大了许多。这不仅表现在学习上的进步,还表现在思想上的改变。总之,对我来说是受益良多。大学时光真的是我人生最宝贵的财富。这一切的一切和大家对我的支持与帮助是分不开的。特别是老师对我的帮助,实在是太多了。比如说这次毕业设计,老师对我的帮助真的是非常非常多。在这次毕业设计的过程中,从选题到开题报告,从写作提纲,到一遍又一遍地指出论文中的具体问题,严格把关,循循善诱,在此我表示衷心感谢。同时我还要感谢在我学习期间给我极大关心和支持的各位老师以及关心我的同学和朋友。最后,我最应该感谢的应该是我的母校,辽宁工业大学,感谢母校给我提供了这么好的学习生活环境,让我在这里快乐的成长、学习,真的很感谢。谢谢。

35

本科生毕业设计(论文)

附 录 外文资料

CHAPTER8 Error Handling,Logging,and Tracing

No software can run free from error, and ASP.NET applications are no exception. Sooner or later your code will be interrupted by a programming mistake, invalid data, unexpected circumstances, or even hardware failure. Novice programmers spend sleepless nights worrying about errors. Professional developers recognize that bugs are an inherent part of software applications and code defensively, testing assumptions, logging problems, and writing errorhandling code to deal with the unexpected.

In this chapter, you’ll learn the error-handling and debugging practices that you can use to defend your ASP.NET applications against common errors, track user problems, and solve mysterious issues. You’ll learn how to use structured exception handling, how to use logs to keep a record of unrecoverable errors, and how to set up web pages with custom error messages for common HTTP errors. You’ll also learn how to use page tracing to see diagnostic information about ASP.NET pages.

Common Errors

Errors can occur in a variety of situations. Some of the most common causes of errors include attempts to divide by zero (usually caused by invalid input or missing information) and attempts to connect to a limited resource such as a file or a database (which can fail if the file doesn’t exist, the database connection times out, or the code has insufficient security credentials).

One infamous type of error is the null reference exception, which usually occurs when a program attempts to use an uninitialized object. As a .NET programmer, you’ll quickly learn to recognize and resolve this common but annoying mistake. The following code example shows the problem in action, with two SqlConnection objects that represent database connections:

// Define a variable named conOne and create the object. private SqlConnection conOne = new SqlConnection(); // Define a variable named conTwo, but don't create the object. private SqlConnection conTwo;

public void cmdDoSomething_Click(object sender, EventArgs e) {

36

本科生毕业设计(论文)

// This works, because the object has been created // with the new keyword. conOne.ConnectionString = \...

// The following statement will fail and generate a // null reference exception.

// You cannot modify a property (or use a method) of an // object that doesn't exist! conTwo.ConnectionString = \...}

When an error occurs in your code, .NET checks to see whether any error handlers appear in the current scope. If the error occurs inside a method, .NET searches for local error handlers and then checks for any active error handlers in the calling code. If no error handlers are found, the page processing is aborted and an error page is displayed in the browser. Dependingon whether the request is from the local computer or a remote client, the error page may show a detailed description (as shown in Figure 8-1) or a generic message. You’ll explore thistopic a little later in the “Error Pages” section of this chapter.

Even if an error is the result of invalid input or the failure of a third-party component, an error page can shatter the professional appearance of any application. The application users end up with a feeling that the application is unstable, insecure, or of poor quality—and they’re at least partially correct.

If an ASP.NET application is carefully designed and constructed, an error page will almost never appear. Errors may still occur because of unforeseen circumstances, but they will be caught in the code and identified. If the error is a critical one that the application cannot solve on its own, it will report a more useful (and user-friendly) page of information that might include a link to a support e-mail or a phone number where the customer can receive additional assistance. You’ll look at those techniques in this chapter.

Exception Handling

Most .NET languages support structured exception handling. Essentially, when an error occurs in your application, the .NET Framework creates an exception object that represents the problem. You can catch this object using an exception handler. If you fail to use an exception handler, your code will be aborted, and the user will see an

37

本科生毕业设计(论文)

error page.

Structured exception handling provides several key features:

Exceptions are object-based: Each exception provides a significant amount of diagnostic information wrapped into a neat object, instead of a simple message and an error code.

These exception objects also support an InnerException property that allows you to wrap a generic error over the more specific error that caused it. You can even create and throw your own exception objects.

Exceptions are caught based on their type: This allows you to streamlineerror-handling code without needing to sift through obscure error codes.

Exception handlers use a modern block structure: This makes it easy to activate and deactivate different error handlers for different sections of code and handle their errors individually.

Exception handlers are multilayered: You can easily layer exception handlers on top of other exception handlers, some of which may check only for a specialized set of errors.

Exceptions are a generic part of the .NET Framework: This means they’recompletely crosslanguage compatible. Thus, a .NET component written in C# can throw an exception that you can catch in a web page written in VB.

Note Exception handlers are a key programming technique. They allow you to react to problems that occur at runtime due to factors outside your control. However, you obviously shouldn’t use exception handlers to hide the bugs that might crop up in your code! Instead, you need to track down these programmer mistakes at development time and correct them. Visual Studio’s debugging features (which were described in Chapter 4) can help you in this task.

The Exception Class

Every exception class derives from the base class System.Exception. The .NETFramework is full of predefined exception classes, such as NullReferenceException,IOException, SqlException, and so on. The Exception class includes the essential functionality for identifying any type of error.

Member HelpLink Description A link to a help document, which can be a relative or fully qualified URL (uniform 38

本科生毕业设计(论文)

resource locator) or URN (uniform resource name), such as file:///C:/ACME/MyApp/help.html#Err42. The .NET Framework doesn’t use this property, but you can set it in your custom exceptions if you want to use it in your web page code. InnerException A nested exception. For example, a method might catch a simple file IO (input/output) error and create a higher-level “operation failed” error. The details about the original error could be retained in the InnerException property of the higher-level error. Message Source A text description with a significant amount of information describing the problem. The name of the application or object where the exception was raised. StackTrace A string that contains a list of all the current method calls on the stack, in order of most to least recent. This is useful for determining where the problem occurred. TargetSite A reflection object (an instance of the System.Reflection.MethodBase class) that provides some information about the method where the error occurred. This information includes generic method details such as the method name and the data types for its parameter and return values. It doesn’t contain any information about the actual parameter 39

本科生毕业设计(论文)

values that were used when the problem occurred. GetBaseException() A method useful for nested exceptions that may have more than one layer. It retrieves the original (deepest nested) exception by moving to the base of the InnerException chain.

When you catch an exception in an ASP.NET page, it won’t be an instance of the generic System.Exception class. Instead, it will be an object that represents a specific type of error.This object will be based on one of the many classes that inherit from System.Exception.These include diverse classes such as DivideByZeroException, ArithmeticException, IOException, SecurityException, and many more. Some of these classes provide additional details about the error in additional properties.

Visual Studio provides a useful tool to browse through the exceptions in the .NET class library. Simply select Debug ? Exceptions from the menu (you’ll need to have a project open in order for this to work). The Exceptions dialog box will appear. Expand the Common Language Runtime Exceptions group, which shows a hierarchical tree of .NET exceptions arranged by namespace (see Figure 8-2).

The Exceptions dialog box allows you to specify what exceptions should be handled by your code when debugging and what exceptions will cause Visual Studio to enter break mode immediately. That means you don’t need to disable your error-handling code to troubleshoot a problem. For example, you could choose to allow your program to handle a common FileNotFoundException (which could be caused by an invalid user selection) but instruct Visual Studio to pause execution if an unexpected DivideByZero exception occurs.

To set this up, add a check mark in the Thrown column next to the entry for the System.DivideByZero exception. This way, you’ll be alerted as soon as the problem occurs. If you don’t add a check mark to the Thrown column, your code will continue, run any exception handlers it has defined, and try to deal with the problem. You’ll be notified only if an error occurs and no suitable exception handler is available.

40

本科生毕业设计(论文)

译文

异常处理和日志追踪

在应用程序运行过程中,难免会遇到异常、错误。在ASP.NET开发过程中经常会被一些用户投拆软件出现故障,或者是一些乱七八糟的错误提示。用户并不都是专家,看到这些莫名其妙的错误往往会认为是应用程序不稳定因素所致,此时你会振振有词地告知用户:软件出现故障是难免的,微软够强大吧,Windows系统还不是会蓝屏出错。这样的解释并不是没有道理,任何软件都不可能十全十美,问题在于开发人员如何处理错误,如何让应用程序能够无缝地从错误中恢复。

本章将讨论如何处理ASP.NET应用程序中的异常,如何追踪错误以及解决一些故障问题,讨论结构化异常处理,日志记录以及当出现错误时,如何将用户页面重定向到一个用户友好的提示页面,本章也将介绍如何使用页面追踪和查看ASP.NET页面的诊断信息。

常见的错误

错误的产生很多时候是开发人员始料未及的,有的错误可能运行了很久才突然被触发。然而也有一些错误是由于开发人员的疏漏所造成的,一个简单的例子是被0除。假如在一个具有很多复杂公式的页面上,要求用户输入有效的数据执行计算,由于没有很好的验证机制,用户如果一不小心输入了一个0作为被除数,ASP.NET将跳转到一个错误页面。

// Define a variable named conOne and create the object. private SqlConnection conOne = new SqlConnection(); // Define a variable named conTwo, but don't create the object. private SqlConnection conTwo;

public void cmdDoSomething_Click(object sender, EventArgs e) {

// This works, because the object has been created // with the new keyword. conOne.ConnectionString = \...

// The following statement will fail and generate a // null reference exception.

// You cannot modify a property (or use a method) of an // object that doesn't exist! conTwo.ConnectionString = \

41

本科生毕业设计(论文)

... }

当引发错误时,.NET将检查当前页面范围内是否有任何错误处理器。假如错误产生于一个方法体内,.NET将检查方法体内是否有一个错误处理器来处理错误,如果没有任何的错误处理机制,页面处理将被中断,一个错误页面将被显示出来。这个显示的错误页面依赖于客户端的位置,如果是本地则显示详细的错误信息,否则只显示一个通用的消息。由于.NET会先检测本地的错误处理器,因此开发人员可以设计良好的错误处理方式,比如显示一个友好的信息,或者是不显示错误信息而将这些错误记录到事件日志中,本节将介绍如何使用异常处理机制来处理ASP.NET应用程序中的错误。

异常处理

大多数.NET语言都支持结构化异常处理,当一个错误引发时,.NET框架其实创建了一个异常对象用于呈现问题。开发人员可以使用异常处理器来捕捉这个异常对象。假如不使用异常处理器的话,用户代码将会被中止,ASP.NET将显示一个让用户迷惑的错误处理页面。

为了演示如何使用结构化的异常处理,本小节创建一个异常处理程序命名为CommError。在Default.aspx页面上添加一个Button控件,为该Button添加一个单击事件,代码如下所示。

由于这段代码中没有添加任何的异常处理器,因此ASP.NET将中断页面的显示,并显示一个如图所示的页面。如果使用结构化的异常处理方式,代码将变成这样所示。

在这段代码中,使用try/catch语句定义了一个异常处理器,该异常处理器捕捉一个被0除的异常DivideByZeroException,当捕捉到这个异常后将会在一个Label控件中显示出错的信息,运行效果如图7.2所示。

在这个示例中,当产生异常时,ASP.NET将不再被重定向到一个单独的页面,而是在Label控件中显示出错的信息。示例使用了try/catch语法来捕捉异常,这是.NET中标准的异常处理方法,在try块中放置所有可能出现异常的代码,在catch块中捕捉可能出现的异常,并在其代码块中添加对该异常的处理程序。

Exception类

上一节的示例中,当产生了被零除的错误后,.NET会创建一个名为DivideByZeroException的异常对象,catch块中将捕获这个异常对象,并执行处理异常的代码块。DivideByZeroException是一个派生自Exception的对象。Exception对象中包含了很多有用的关于异常的信息,如上面示例中的Message属性用于获取异常的描述性信息,表中列出了Exception类中的一些成员描述。

42

本科生毕业设计(论文)

成员 HelpLink InnerException 描述 获取或设置异常的关联文件的链接 创建对以前的异常进行捕捉的新异常。处理第二个异常的代码可利用前一个异常的其他信息更适当地处理错误。如果不存在前一个异常 则为null Message 描述错误的可读文本。当异常发生时,运行库产生文本信息,通知用户错误的性质。并提供解决该问题的操作建议 Source StackTrace 产生异常的程序集名称 发生异常时调用堆栈的状态。Stacktrace 属性包含可以来确定代码中错误发生位置的堆栈跟中 对调试来说 这是非常有用的信息 TargetSite GetBaseException() 抛出异常的方法 一种有益的嵌套例外,可能有一个以上的层。它撷取的原始(最深切的嵌套)例外搬到基地的InnerException链。

当你在一个ASP.NET页面中捕获到一个异常时,它不会是一个通用

System.Exception类的实例。相反,这将是一个对象,代表特定类型的错误。这个对象将依据之一,许多类,继承System.Exception类。这些类包括不同的类别,如DivideByZeroException, ArithmeticException, IOException, SecurityException,和更多的类。其中有些类提供额外细节的错误的额外属性。

Visual Studio提供了一个非常有用的工具可以在.NET类库中浏览异常。 只要选择调试异常从菜单(您需要有一个开放式的项目,为了使它工作) 。异常对话框将会出现。扩大双方的共同语言运行异常,这显示了等级树。.NET的异常的名称。

可以看到异常对话框列出了很多异常类型,Common Language Runtime Exceptions栏则是.NET中的异常层次结构。异常对话框窗口允许开发人员指定当调试时,哪个异常应该被程序代码处理,哪个异常应该由VS2008立即切换到中断模式。比如如果有一个FileNotFoundException类型的异常,可以在异常窗口中

43

本科生毕业设计(论文)

指定由程序代码来处理,调试时VS将不会立即中断程序的执行,而交由异常代码进行处理。当在引发栏中选择某个异常时,一旦出现异常,VS2008则马上进入中断模式,而如果不选择这个选项,则程序代码继续执行,将在Label控件中显示异常的信息。

进行这项设定,新增一个选中标记扔在旁边栏的条目System.DivideByZero例外。通过这种方式,您可以在出现问题时尽快被警告。如果您没有新增一个选中标记的投掷栏,您的代码将继续进行,运行任何异常处理它的定义,并尝试解决这一问题。我们将会通知您只要发生错误和没有合适的异常处理程序可用。

44

本文来源:https://www.bwwdw.com/article/8p6a.html

Top