BBS论坛的设计与实现 - 毕业设计论文

更新时间:2024-03-30 23:04:01 阅读量: 综合文库 文档下载

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

本 科 毕 业 设 计 (论 文)

影迷之家BBS系统的设计与实现

The Design and Implementation of

House fans BBS system

学 院: 计算机工程学院 专业班级: 网络工程 062班 学生姓名: 杜玉涛 学 号: 110612205 指导教师: 马 刚(高级实验师)

2010年 5 月

毕业设计(论文)中文摘要

影迷之家BBS系统的设计与实现 摘 要:当今社会是一个信息飞速发达的社会,人们通过互联网络可以进行信息的交流。论坛即BBS,英文全称是Bulletin Board System,翻译为中文就是“电子公告板”。BBS最早是用来公布股市价格等类信息的,早期的BBS与一般街头和校园内的公告板性质相同,只不过是通过电脑来传播或获得消息而已。一直到个人计算机开始普及之后,有些人尝试将苹果计算机上的BBS转移到个人计算机上,BBS才开始渐渐普及开来。近些年来,由于爱好者们的努力,BBS的功能得到了很大的扩充。 后来随着网络的普及,论坛的功能越来越丰富,各大商家纷纷在自己的网站上开辟论坛与网民交流,同时在线技术支持和在线服务也在论坛中开展起来。目前,通过BBS系统可随时取得国际最新的软件及信息,也可以通过BBS系统来和别人讨论计算机软件、硬件、Internet、多媒体、程序设计以及医学等等各种有趣的话题,更可以利用BBS系统来刊登一些“征友”、“廉价转让”及“公司产品”等启事。本文研究并实现了基于C/S模式的BBS论坛系统,该系统采用目前流行的ASP.NET+C#+Sql Sever2005数据库三层架构。 本文从影迷之家BBS系统的开发背景、相关技术、需求分析、详细设计、系统测试与维护等方面详细阐述了整个系统的开发过程。 关键词:BBS ,ASP.NET,SQL Sever,C#

毕业设计(论文)外文摘要

The Design and Implementation of House fans BBS system Abstract: Nowadays is a flourishing society that information travels fast, Through the Internet people can exchange information with each other. Forum that BBS, the English full name is the Bulletin Board System, translated into Chinese is \bulletin board\is used to announce the first class of stock price information, the early BBS and general street and campus bulletin boards of the same nature, but through the computer to transmit or receive information only. Until after the personal computer began to spread, some people try to shift Apple computer to a personal computer, BBS, BBS started gradually gaining in popularity. In recent years, due to the efforts of fans, BBS's function has been greatly expanded. Later, with the popularity of the network, the Forum will have more, big businesses have their own Web site users open forum and exchange, and online technical support forum and online services are also carried out up. Currently, through the BBS system, ready access to the latest international software and information, you can also discuss the BBS systems and other computer software, hardware, Internet, multimedia, programming, and medical and so a variety of interesting topics, but also can use the BBS system to publish some \other notices. In this paper, and implemented based on C / S mode BBS forum system, which uses the popular ASP.NET + C # + Sql Sever2005 three-tier database. This article from the home fans BBS system development background, related technology, demand analysis, detailed design, system testing and Maintenance, explains in detail the entire system development process. Keywords: BBS、 ASP.NET、SQL Sever、 C #

目 录

1 绪论 ........................................................................................................................... 1 1.1 课题的研究背景与意义...................................................................................... 1

1.1.1 课题的研究背景....................................................................................... 1 1.1.2 课题的研究意义....................................................................................... 1 1.2 国内外研究现状、水平和发展趋势 .................................................................... 1

1.2.1国内外研究现状 ......................................................................................... 1 1.2.2未来BBS的发展趋势 ................................................................................. 2 1.3 问题的定义及内容简介...................................................................................... 3

1.3.1 问题的定义.............................................................................................. 3 1.3.2 问题的内容简介....................................................................................... 3 1.4 问题的调研 ....................................................................................................... 3 1.5 可行性分析 ....................................................................................................... 4

1.5.1 经济可行性.............................................................................................. 4 1.5.2 技术可行性.............................................................................................. 4 1.5.3 操作可行性.............................................................................................. 4 1.5.4 法律可行性.............................................................................................. 4 1.6 论文各章简介.................................................................................................... 4 2 需求分析 .................................................................................................................... 5 2.1 用户功能需求.................................................................................................... 5 2.2 数据流分析 ....................................................................................................... 7

2.2.1 游客起点 ................................................................................................... 8 2.2.2 用户/管理员起点 ....................................................................................... 8 2.2.3 管理员起点 ............................................................................................... 8 2.3 数据关系分析.................................................................................................... 9 2.4 数据字典......................................................................................................... 10 3 系统设计 .................................................................................................................. 12 3.1 系统总体功能设计........................................................................................... 12

3.1.1 前台功能 ............................................................................................... 12 3.1.2 后台功能 ............................................................................................... 13 3.2 系统主要工作流程........................................................................................... 14 4 功能模块设计 ........................................................................................................... 17 4.1 用户模块......................................................................................................... 17 4.2 帖子模块......................................................................................................... 17 4.3 版主模块......................................................................................................... 18 4.4 版块模块......................................................................................................... 18 4.5 头像模块......................................................................................................... 18 4.6 管理员模块 ..................................................................................................... 18 4.7 后台模块......................................................................................................... 19 5 系统开发过程.......................................................................................................... 19

5.1 技术要点......................................................................................................... 19

5.1.1 IFrame框架的使用................................................................................. 19 5.1.2 第三方组件FreeTextBox的使用 ............................................................. 20 5.1.3 以缩略图形式上传图片 .......................................................................... 20 5.1.4 多层设计模式开发 ................................................................................. 21 5.2 数据库设计 ..................................................................................................... 21

5.2.1 数据库逻辑结构设计.............................................................................. 21

5.2.2 数据库物理结构设计.............................................................................. 24 5.2.3 数据库关系图 .......................................................................................... 24 5.3 配置Web.config............................................................................................... 25 5.4 公共类编写 ..................................................................................................... 25

5.4.1数据库操作类设计.................................................................................... 26 5.4.2 版块管理功能模块类 ............................................................................... 31 5.5 模块设计说明 ................................................................................................... 33

5.5.1登录模块与注册模块 ................................................................................ 33 5.5.2浏览帖子页面的实现过程 ......................................................................... 35 5.5.3 回复帖子页面的实现过程 ........................................................................ 41 5.5.4 发表帖子页面的实现过程 ........................................................................ 43 5.5.5 后台管理-管理员模块 .............................................................................. 47

6 系统测试 .................................................................................................................. 49 6.1 功能测试 .......................................................................................................... 50

6.1.1 链接测试 ................................................................................................. 50 6.1.2 功能模块测试 .......................................................................................... 51 6.1.3验证功能测试........................................................................................... 51 6.2 性能测试 .......................................................................................................... 52 7 用户使用手册 ........................................................................................................... 52 7.1 系统功能简介、运行环境简介 ........................................................................... 52

7.1.1 系统功能简介 ........................................................................................ 52 7.1.2 运行环境简介 ........................................................................................ 53 7.2 系统运行与操作指南 ....................................................................................... 53 8 系统评价 .................................................................................................................. 54 8.1 系统特色/优点介绍 .......................................................................................... 54 8.2 系统存在的不足与改进方案............................................................................. 54

8.2.1 系统存在不足 ........................................................................................ 54 8.2.2 改进方案 ............................................................................................... 55

总结与展望 .................................................................................................................... 56 结 论 ........................................................................................................................... 57 致 谢 ........................................................................................................................... 58 参 考 文 献 .................................................................................................................. 59

淮海工学院二〇一〇届本科毕业设计(论文) 第 1 页 共 59 页

1 绪论

当今社会,Internet飞速发展,互联网已经成为人们生活中不可缺少的一部分。人们通过它来快速获取、发布和传递信息,并且其应用也越来越广泛,它在人们政治、经济、生活等各个方面都发挥了及其重要的作用。人们迫切的需要在网络上发表自己的感想及和他人交流,BBS应运而生。

1.1 课题的研究背景与意义

1.1.1 课题的研究背景

在二十一世纪,地球因为互联网的存在,早已变成一个村落。人们在互联网世界里尽情的遨游,享受着Internet带来的无限乐趣。我们习惯了上网看新闻、去论坛看帖、网上购物、撰写自己的网络日志、博客等等。当然,最离不开的,还是各种搜索引擎,帮我们找到想要的信息。总之,互联网已经成为我们的一种生活方式,一个巨大的知识库。本篇设计论文,围绕如何构建影迷之家网上论坛系统展开研究。 1.1.2 课题的研究意义

网上论坛系统(BBS)是各种信息交流和传布的场所,它不同于电视报纸等传统的媒体,任何人都可以随便的在BBS上发表自己的言论,不受任何限制。除了可以发表文字信息外可以上传和转贴图片、音乐、Flash,可以选择字号、颜色,还可以选择有趣的表情图案。只要花几分种注册(甚至不需要)你就能畅游BBS,从中得到无穷的乐趣。本系统就是基于以上功能的一个BBS,旨在为广大网民提供了一个交流平台,能够在这里畅所欲言,发表自己的看法、观点,同时能够结交朋友为生活增添乐趣。

1.2 国内外研究现状、水平和发展趋势

1.2.1国内外研究现状

1978

年在美国芝加哥开发出一套基于

8080

芯片的

CBBS/Chicago(Computerized Bulletin Board System/Chicago),此乃最早的一套BBS系统。之后随着苹果机的问世,开发出基于苹果机的Bulletin Board System和大众信息系统(People,s Message System)2种BBS系统。1981年IBM个人计算机诞生时,并没有自己的BBS系统。直到1982年,Buss Lane 才用Basic语言为IBM个人计算机编写了一个原型程序。其后经过几番增修,终于在1983年通过Capital PC User Group(CPCUG)的Communication Special Interest Group会员的努力,改写出了个人计算机系统的BBS。经Thomas Mach整理后,终于完成了个人计算机的第1版BBS系统——RBBS-PC。这套BBS系统的最大特色是其源程序全部公开,有利于日后的修改和维护,因此后来在开发其他的BBS

淮海工学院二〇一〇届本科毕业设计(论文) 第 2 页 共 59 页

系统时都以此为框架,所以RBBS-PC赢得了BBS鼻祖的美称。

但在当时,如何实现站与站之间的联系问题并未解决。1984年美国的Tom Jonning开发了一套具有电子功能的电子公告板程序FIDO。由于该软件具有站际连线和自动互传信息的功能,所以站际间彼此可以在一个共同的预定时间传送电子邮件,使得BBS网络化有了一线生机。

BBS发展至今,目前世界上业余的BBS网络除了FidoNet(惠多网)以外,几个较具知名度的还有EggNet、AlterNet和RBBS-Net等等。由于这些网络和FidoNet之间的信息交流不成问题,这就实现了所谓的跨网。

大约是从1991年开始,国内开始了第一个BBS站。经过长时间的发展,直到1995年,随着计算机及其外设的大幅降价,BBS才逐渐被人们所认识。1996年更是以惊人的速度发展起来。国内的BBS站,按其性质划分,可以分为2种:一种是商业BBS站,如新华龙讯网;另一种是业余BBS站,如天堂资讯站。由于使用商业BBS站要交纳一笔费用,而商业站所能提供的服务与业余站相比,并没有什么优势,所以其用户数量不多。多数业余BBS站的站长,基于个人关系,每天都互相交换电子邮件,渐渐地形成了一个全国性的电子邮件网络ChinaFidoNet(中国惠多网)。于是,各地的用户都可以通过本地的业余BBS站与远在异地的网友互通信息。这种跨地域电子邮件交流正是商业站无法与业余站相抗衡的根本因素。由于业余BBS站拥有这种优势,所以使用者都更乐意加入。这里“业余”2字,并不是代表这种类型的BBS站的服务和技术水平是业余的,而是指这类BBS站的性质。一般BBS站都是由志愿者开发的。他们付出的不仅是金钱,更多的是精力。其目的是为了推动中国计算机网络的健康发展,提高广大计算机用户的应用水平。

现如今国内外最常用的三种动态网页语言是PHP(personalhome page)、ASP(activeserver page)和JSP(javaserver page)。PHP可以在Windows、UNIX、Linux的web服务器上正常执行,支持IIS和Apache等一般的web服务器。微软开发的ASP功能强大,简单易学,但是只能在Windows系统下运行。UNIX下有Chilisoft的组件来支持ASP,但是ASP本身功能有限,必须通过与com的群组合来扩充功能。JSP基于平台和服务器的互相独立,支持来自广泛的、专门的工具包,服务器组件和数据库产品由开发商提供。这三种语言各有优缺点,根据BBS的用途不同,可以选择合适的语言来开发。 1.2.2未来BBS的发展趋势

Web2.0的时代已经到来,web2.0与传统的万维网之间最主要的区别就是用户和用户、产品供应商和企业之间更大的协作。Web1.0时代,论坛社区基本满足网民信息生活的需求

,web2.0时代论坛社区呈现出巨大的商业价值。当社区用户数量达到引爆点后,社区流量将开始飞快成长,远远大于web1.0网站的流量增长速度。伴随

淮海工学院二〇一〇届本科毕业设计(论文) 第 3 页 共 59 页

着web2.0时代的到来,BBS将朝着以下两个方面发展:

(1)BBS论坛系统将朝着即时性方面发展。现在动态网站出现一门新技术ajax。在ajax之前,页面的部分数据需要更新时必须刷新整个页面。而使用ajax技术的网站,不需要刷新页面就可以更新数据,这就使web站点看起来是即时响应的。将来可以把ajax技术运用到BBS论坛系统当中,使论坛成员在不用刷新页面时就可以看到别人刚刚发的帖子。

(2)BBS论坛系统也将朝着图形化方向发展。图形虚拟社区可以非常具体和形象化的模拟整个现实社区的生活,并且具备无限的可扩充性。在论坛中你甚至可以找到和现实生活完全对应的建筑。通过一根网线就可以把远在天南海北的朋友聚到一起。试想,你可以通过外形的不同来区分不同社区的朋友而不是通过ID。你甚至可以通过外形的不同来猜测对方的性格,这些都是传统虚拟社区所不具备的特点。

1.3 问题的定义及内容简介

1.3.1 问题的定义

“影迷之家”BBS我想把它设计成为一个能够实现用户注册、用户登录、发表文章、阅读文章、回复文章、作者查找、个人资料修改、帖子管理、用户管理及发布公告等功能的网上论坛。我们设计的这个论坛,游客可以浏览及发表帖子,用户注册后可以回复他人帖子,管理员可以指定版主,修改用户、版主、板块及帖子信息,并可以指定精华贴等。 1.3.2 问题的内容简介

该BBS论坛网站给用户提供了一个发布信息和讨论问题的平台,在该网站中,没有注册的用户进入后只能浏览板块、帖子和发表帖子,已经注册的用户在登录进入论坛后,可以对各类帖子发表自己的评论;版主登录之后,可以管理属于自己的板块;管理员登录之后,有权对用户、版主、板块和帖子进行添加、修改和删除。

1.4 问题的调研

在本系统开发之初,为了做好系统需求分析工作,本人做了充分的调研,从而认识到完成本系统需做到以下几点:

(1)了解并浏览目前各国内外知名的网站论坛,比如天涯、猫扑、水木清华、考研论坛等知名的大型论坛。

(2)要求学生有熟练的ASP.NET应用程序开发能力,有较强的自学能力以及一定的关系数据库理论开发功底。

(3)了解自己所做网站主题的相关方面知识。 (4)具有对复杂表进行处理的能力。

(5)具体问题再做详细调查研究并与指导老师面谈。

淮海工学院二〇一〇届本科毕业设计(论文) 第 4 页 共 59 页

在充分了解、调查网上BBS论坛的情况以及电影发展情况的基础上,本人开发这一个影迷之家BBS系统。

1.5 可行性分析

可行性研究的任务,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。要达到这个目的,必须首先分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。

系统的可行性分析主要包括经济上的可行性,技术上的可行性,操作上的可行性和法律上的可行性。本系统的可行性分析如下: 1.5.1 经济可行性

本系统作为毕业设计来开发,因此要投入的财力人力比较小。在人力方面只要花约3-4个月即可完成。而在软硬件方面只需一台计算机(硬件:CPU+内存:2GB+硬盘:160G)和相关的软件(Windows XP+Visual Studio 2005+Sql Sever 2005)即可完成。次系统建成后,可以实现资源共享、用户交流等功能,给用户带来便利,这些经济投入是值得并可行的。 1.5.2 技术可行性

本方案技术要求比较高,安全性和可靠性都要强,我采用Microsoft Visual Studio 2005,数据库方面用Sql Sever 2005,同时以IFrame框架为基础进行应用开发框架的使用。通过前面的综合分析,可以知道,从技术上来说是可行的。 1.5.3 操作可行性

该系统完成后,非常容易操作,具有简单性、易学性。在使用该论坛系统时会发现它的界面简单明了,功能齐全,操作起来很方便,易于每一个用户操作,只要会操作电脑,会上网,就可以足不出户了解最新电影资讯,进行对感兴趣话题的讨论等。因此,从操作上来看,该系统是可行的。 1.5.4 法律可行性

该影迷之家BBS系统有本人开发而成,在法律上未侵害他人权利,无须承担法律责任。并且该系统的开发、研制都符合国家法律。因此,在法律方面开发此系统也是完全可行的。

1.6 论文各章简介

第1章绪论部分,绪论主要叙述课题的研究背景和意义、国内外研究现状发展趋势、问题的定义和内容简介、问题的调研和可行性分析。

第2章主要内容是:系统需求分析包括,业务流程分析;数据流分析;数据字典。

淮海工学院二〇一〇届本科毕业设计(论文) 第 5 页 共 59 页

第3章主要内容是:系统总体设计包括,系统总体功能设计、结构设计;系统前台及后台主要功能模块及其关系;系统主要工作流程。

第4章主要内容是:总体功能模块介绍。

第5章主要内容是:介绍系统开发过程。主要包括系统的技术要点、数据库设计、配置Web.config、公共类的编写以及模块设计说明。

第6章主要内容是:主要是系统测试,主要包括功能测试和性能测试。 第7章主要内容是:用户使用手册,主要包括系统功能简介、运行环境简介以及系统运行与操作指南。

第8章主要内容是:系统评价,包括系统特色/优点介绍、系统存在的不足与改进方案。

最后还有结论、致谢、参考文献等等内容的介绍。

2 需求分析

软件的需求分析必须要有对原业务的一个深入了解、提取、抽象、升华的过程,管理软件需求分析尤其如此。

软件的需求分析是从用户的业务中提取出软件系统能够帮助用户解决的业务问题,通过对用户业务问题的分析,规划出我们的软件产品。这个步骤是对用户业务需求的一个升华,是一个把用户业务管理流程优化,转化为软件产品,从而提升管理而实现的质的飞跃,这一步是否成功,直接关系到开发出来的软件产品能否得到用户认可,顺利交付给客户,客户能否真正运用我们的产品帮助他解决业务或管理问题。

2.1 用户功能需求

为了系统的各模块功能够正常使用、系统更加人性化,还为了满足系统的实用性及安全性,本系统包含4个角色:游客、用户、版主、管理员。

(1)游客的各项功能:

游客可以浏览本论坛,可以发帖,但不可以回帖,只有注册了以后成为本论坛的用户,才可以执行用户的功能。

淮海工学院二〇一〇届本科毕业设计(论文) 第 6 页 共 59 页

图2-1 游客用例图

(2)用户的各项功能:

一旦成为本论坛的用户后享有以下功能:

1、用户注册2、用户登录3、发表文章4、阅读文章5、回复文章6、个人资料修改

图2-2 用户用例图

(3)版主的各项功能:

版主可以具有的功能如下:

1、发布帖子2、删除本版块帖子3、修改版主信息 4、置精帖子

淮海工学院二〇一〇届本科毕业设计(论文) 第 7 页 共 59 页

图2-3 版主用例图

(4)管理员的各项功能:

1、修改管理员信息2、对帖子进行管理

3、对用户及版主进行管理4、进入前台以及退出后台

图2-4 管理员用例图

2.2 数据流分析

数据流程分析主要包括对信息的流动、传递、处理、存储等的分析。数据流程分析的目的就是要发现和解决数据流通中的问题。现有的数据流程分析多是通过分层的数据流程图(DFD)来实现的。其具体的做法是:按业务流程图理出的业务流程顺序,将相应调查过程中所掌握的数据处理过程,绘制成一套完整的数

淮海工学院二〇一〇届本科毕业设计(论文) 第 8 页 共 59 页

据流程图。

本论坛的数据流按起点可以分为三条线路来看,即游客起点、一般用户/管理员起点和管理员起点。 2.2.1 游客起点

游客起点是数据信息由游客产生,流入到系统各处的数据流,包括三条:游客注册时的注册信息经由注册程序传送到服务器端数据库的用户信息库;游客在搜索主题时将搜索关键字信息经由搜索程序传送到服务器端数据库的帖子库,并由帖子库响应并反馈所匹配的数据信息;还有一条就是游客在登陆时,所输入的身份信息经由登陆程序,流入到用户信息中心,并由用户信息中心验证反馈。 2.2.2 用户/管理员起点

用户/管理员起点是数据信息由用户/管理员产生,流入到系统各处的数据流,总共包括四条:第一条是同上的搜索数据流;第二条是用户/管理员发表帖子时,数据流经由发表程序流向服务器端数据库内的帖子存储库;第三条是用户/管理员发表回帖时,数据流经由发表程序流向服务器端数据库内的回帖存储库;第四条是用户/管理员在修改个人信息时,个人信息的数据经由修改信息的程序,流入到用户信息中心。 2.2.3 管理员起点

管理员起点是数据信息由管理员缠上,流入到系统各处的数据流,总共包括四条:管理员在管理论坛网站时,所发出的管理命令,经由管理处理程序分别流入到帖子库、回帖库、用户信息中心和版块存储库,并对其进行修改、增删。

详细的数据流程图见下图:

淮海工学院二〇一〇届本科毕业设计(论文) 第 9 页 共 59 页

图2-5数据流图

2.3 数据关系分析

由上面的数据流程分析得知,本论坛的数据存储在四个地方,分别为:用户信息中心、版块存储库、帖子库和回帖库。

首先,在论坛中,版块、帖子以及回帖都是包含与被包含的关系,即一个帖子,总是包含在一个版块当中,无论帖子被管理人员如何调动,总是隶属于唯一的一个版块,而一个版块,可以包含很多同类型的帖子,因此板块和帖子是一对多的关系;同理,帖子和回帖也是一对多的关系。

其次,一个帖子或者一个回帖,都对应着唯一的一个用户,不可能同一个帖子或回帖是由多个用户发表的,而一个用户可以发表很多帖子,也可以发表很多回帖,因此,用户与帖子、回帖对应的关系,也是一对多的关系。

最后,版块和用户没有对应关系。 根据上述分析,得出数据关系图如下:

淮海工学院二〇一〇届本科毕业设计(论文) 第 10 页 共 59 页

图2-6 数据关系图

2.4 数据字典

数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据流图和数据字典共同构成系统的逻辑模型。只有数据流图和数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明。

(1) 名字:用户信息表 别名:无

描述:用于保存注册用户的详细信息。

定义:用户信息表=用户名+用户密码+真实姓名+性别+出生日期+联系电话+手机+QQ号+头像+Email+家庭住址+联系地址+个人首页

位置:供游客注册信息并写入数据库,管理员可以进行用户管理 (2) 名字:版块信息表 别名:主题信息表

淮海工学院二〇一〇届本科毕业设计(论文) 第 11 页 共 59 页

描述:用于保存该论坛所包含的版块信息,方便用户分类浏览。 定义:版块信息表=版块编号+版块名称

位置:供查询版块分类使用,管理员可以对版块进行操作 (3) 名字:帖子信息表 别名:无

描述:用于保存各类帖子的详细信息。

定义:帖子信息表=帖子编号+帖子名称+版块编号+帖子内容+发表时间+发帖人+角色+是否为精帖

位置:帖子详细信息,四种角色都可对其进行操作,存入数据库 (4) 名字:回帖信息表 别名:Revert表

描述:用于保存对帖子的回复信息。

位置:对帖子进行回复的详细内容,保存在回帖数据库中 (5) 名字:版主信息表 别名:无

描述:用于保存论坛中版主的信息。

定义:版主信息表=版主+版主密码+真实姓名+性别+出生日期+联系电话+手机+QQ号+头像+Email+家庭住址+联系地址+个人首页+版主权限

位置:供管理员任命版主并写入数据库 (6) 名字:管理员信息 别名:无

描述:用于整个BBS影迷之家系统的管理

定义:管理员信息=管理员姓名+管理员密码+管理员权限 位置:供整个BBS影迷之家系统管理使用,存入数据库 (7) 名字:头像信息表 别名:无

描述:用于保存论坛中头像的信息。 定义:头像信息表=编号+头像

位置:不同的用户不同的个性头像,存入数据库 (8) 名字:公告信息表 别名:无

描述:用于保存论坛中的公告信息。

定义:公告信息表=编号+标题+内容+系统时间+添加时间+图片地址 位置:供整个BBS影迷之家系统管理使用,存入数据库。

淮海工学院二〇一〇届本科毕业设计(论文) 第 12 页 共 59 页

3 系统设计

3.1系统总体功能设计

整个论坛系统分为前台,和后台两个大的模块。其中前台模块实现的基本功能主要有:用户注册,用户登陆,查看和修改用户个人信息,浏览帖子,发表回复,发表新帖子,注销登陆;后台模块实现的基本功能主要有:管理员登陆,模糊查找用户,编辑论坛版块,删除论坛版块,模糊搜索帖子,删除帖子。 3.1.1 前台功能

前台部分主要游客、用户进行操作使用,游客跟用户可以查看相关帖子,回复帖子信息等,游客注册后可以修改自己的资料,三种角色的登录。

BBS论坛系统(前台)的主要功能模块及其关系,如图3-1所示

BBS论坛系统(前台) 用户登录管理用户信息资料管理版主登录模块主题帖子管理用户注册管理管理员及版主登录根据BBS论坛系统前台的模块图可以得到系统的具体功能:

★ 用户登录管理功能:新用户注册成功之后,在登录界面输入正确用户名、密码和验证码之后便可以进入本系统。

用户信息修改浏览帖子发表话题回复帖子新用户注册后台登录 图3-1 前台功能模块图

淮海工学院二〇一〇届本科毕业设计(论文) 第 13 页 共 59 页

★ 用户信息资料管理功能:在用户登录成功之后,可以修改用户自己的信息,进一步完善用户资料和修改注册时用户填写的资料。

★ 版主登录版块:被管理员指定为某版块版主后,在登录框输入正确的用户名和密码就可以成功登录系统,在自己所管辖的版块内就可以进行帖子编辑等操作。

★ 用户注册管理功能:游客可以浏览论坛的主题话题、可以发表话题但不可以回复帖子,只有当游客在本论坛注册成为论坛的用户后,才能进行相关操作。

★ 主题帖子管理功能:为了方便信息交流,用户可以分板块发表话题,更可以根据帖子主题浏览帖子内容和回复帖子。

★ 管理员及版主登录:管理员及版主输入自己ID及密码,就可以获得自己相应的权限。

3.1.2 后台功能

后台部分主要由论坛的管理员进行操作使用,管理员登录后,可以查看修改删除帖子、指定精华帖、进行用户管理、添加删除版主、添加删除版块、发布公告、头像管理并可以修改资料。

淮海工学院二〇一〇届本科毕业设计(论文) 第 14 页 共 59 页

根据BBS系统功能分析和论坛管理的特点,其后台主要功能模块如图3-2所

管理员信息管理 可以查看管理员自己的信息,可以修改管理员的资料 管理员管理管理员管理主题帖子管理 可以按主题帖子序号,主题名,发表的话题进行看帖,修改帖子、删除帖子指定精华贴。 可以根据版块要求的不同,添加这一版块的版主负责管理此版块。 可以对用户头像进行添加及管理 版主管理 头像管理 论坛后台管理系统版块管理 可以按照版块编号查看版块列表,查看版块详情,并进行版块的编辑和删除 查看论坛所有用户信息并进行管理 用户管理 添加公告 添加最新电影简介,丰富论坛内容 版块管理 版主管理版主信息管理 根据版块的分类,这一版主可以添加其版块下的子分类,或者修改原有的子分类。 可以查看版主自己的信息,可以修改版主的信息资料。 示。

图3-2后台功能模块图

3.2 系统主要工作流程

淮海工学院二〇一〇届本科毕业设计(论文) 第 15 页 共 59 页

主页面 用户 登录 否 注册 管理员管理 后台管理 帖子管理 版主管理 是否登陆 是 主界面 添加公告 头像管理 修改管理员资料 删除管理员 修改帖子 指定精华帖 删除帖子 添加版主 修改版主资料 添加版块 发表新帖 搜索主贴 回复帖子 图3-3 系统主要工作流程

1.会员注册流程:填写个人信息——信息的合法性检测——个人信息的永久化

图3-4 会员注册流程

2.会员登陆流程:输入用户密码——检验角色权限——登入个角色的操作界面

淮海工学院二〇一〇届本科毕业设计(论文) 第 16 页 共 59 页

图3-5 会员登录流程

3.会员管理流程:登入管理员帐号——对角色进行调整,删除或分配为版主

图3-6 会员管理流程

4.帖子管理流程:登入管理员或者版主帐号——查看帖子详情,删除,置精等操作

淮海工学院二〇一〇届本科毕业设计(论文) 第 17 页 共 59 页

图3-7 帖子管理流程

4 功能模块设计

影迷之家BBS系统大致可以划分为7个功能模块,在这章中我将会对这些模块做总体介绍,在下面的几个章节中我还会对重要模块进行详细介绍:

4.1 用户模块

(1)用户注册模块

用户注册模块:建立账号,如果游客以前没有建立账号,则只可以浏览论坛的主题话题并发表新话题但不可以回复有关帖子,只有当游客在本论坛注册成为论坛的用户后,才能进行相关操作。同时在用户创建新账号的时候,必须输入用户名(系统会在提交时检查该用户名是否已存在) 。用户在建立新账号之后就可以具有合法登录系统的身份,可以进行相关的操作。

(2)用户登录模块

新用户注册成功之后,在登录界面输入注册时填写的正确用户名、密码之后,再输入出现的验证码之后便可以进入本系统。如果用户名和密码正确,但是输入的验证码错误,则不允许进入本系统,跳转到登录界面重新输入。版主和管理员也属于论坛的用户,他们跟用户同样进行登录才能进行相关操作,不同的是他们所拥有的权限与普通用户不同。

(3)用户信息资料管理模块

在用户登录成功之后,可以修改用户自己的信息,进一步完善用户自己的资料和修改注册时用户填写的资料。

4.2 帖子模块

(1)帖子浏览

进入网站的任何类型用户都有浏览帖子的权利。看到自己感兴趣的话题,如果想要发表自己的看法则需要注册成为本网站会员再进行相关操作。

淮海工学院二〇一〇届本科毕业设计(论文) 第 18 页 共 59 页

(2)发表帖子

网站的用户分为4类:游客、用户、版主、管理员,这四种用户都可以进行发表帖子的操作。在本系统中,我用第3方组件FreeTextBox来实现文字的输入功能,该组件是一个在线文本编辑器,可以对文字以及图片内容进行处理,并将数据保存到数据库中。

(3)回复帖子

在本系统中,除了游客,其他权限的用户都可以进行回复帖子的操作。BBS就是为人们提供一个讨论的环境,因此针对相同的话题进行各自看法的表达就用到的帖子回复的功能,这样可以使人们更好的进行交流。

(4)帖子管理模块

在本系统中,版主和管理员有管理帖子的权限,管理帖子主要包括查看帖子详情、编辑帖子、删除帖子和指定精华帖。不同的是版主只对自己所属版块的帖子有管理权,而管理员则可以对论坛里所有帖子进行管理。

4.3 版主模块

(1)版主登录模块

成为某版块版主后,在登录界面输入注册时填写的正确用户名、密码之后,再输入出现的验证码之后便可以进入本系统。进入自己所管辖的版块后即可对里面的帖子进行删除、修改及指定精华帖等操作。

(2)版主信息修改模块

成功登录系统后,版主可以像用户一样对自己的信息进行修改和完善。

4.4 版块模块

为了让广大用户可以在短时间内找到自己感兴趣的帖子,在这里将论坛分

为不同的版块,主要就是将帖子分类整理,这样可以更加简单明了,使用户可以迅速定位自己所要关注的内容。管理员可以添加或删除版块,并对版块进行编辑。

4.5 头像模块

为了使论坛用户的资料更加生动,系统为用户提供了头像功能,用户可以

在注册时根据自己的喜好选择已有的头像。管理员可以添加头像,主要是利用本地上传功能来实现。

4.6 管理员模块

管理员是该论坛拥有权限最多的用户,管理员的职责主要是对论坛的各个方面进行管理,使论坛能够更好的运行。下面具体介绍管理员的权限:

(1)管理员个人信息资料管理

管理员成功登录后,同样可以对自己的个人信息进行编辑,丰富和完善自己的各项资料。

(2)头像管理功能

淮海工学院二〇一〇届本科毕业设计(论文) 第 19 页 共 59 页

论坛加入头像功能主要是为了使论坛内各个用户的资料更加完善,更加增加用户的个性化,而有权限对头像进行管理的就是管理员。管理员可以对已有的头像进行查看、删除的操作,也可以进行新头像的上传,主要是通过上传本地图片来实现。

(3)版主管理

版主有权限对其所属版块内帖子进行管理,而管理员则拥有权限进行对版主的管理。管理员可以查看所有版主的个人详细信息,并可以添加或者删除版主。管理员还可以通过关键字对版主进行查询搜索。

(4)用户管理

管理员有权对论坛内所有用户进行管理。他可以查看所有用户列表,可以查看用户的详细信息、删除用户以及通过用户名对用户进行查询。

(5)添加公告

网站首页有个公告栏,主要对一些经典或者最新的影片进行简单介绍,用于丰富论坛内容,也使用户可以更快的了解一些影片信息。管理员有权限进行公告的添加。

(6)版块管理

为了使论坛内容更加明了,用户能够更快的找到自己感兴趣的话题,我们对论坛进行了分类即分版块。管理员有权限对论坛进行版块分类,可以添加或者删除版块,也可以根据关键字来查询某个版块。

(7)帖子管理

管理员有权限对论坛内所有帖子进行管理,可以查看帖子详情、编辑帖子、删除帖子和指定精华帖,也可以通过帖子名称中的关键字对帖子进行查询。

4.7 后台模块

后台管理员输入账号密码可以在后台登录,登录验证模块根据输入的账号密码识别不同角色的管理员,然后进入不同的后台管理模块,账号密码输入错误后给出错误提示并要求重新输入。

5 系统开发过程

5.1 技术要点

5.1.1 IFrame框架的使用

框架是浏览器窗口中的一个区域,它可以显示与浏览器窗口其他部分中所显示内容无关的HTML文档。

框架集是HTML文件,它定义一组框架的布局和属性,包括框架的数目、框架的大小和位置以及在每个框架中初始显示页面的URL。框架集文件本身不包含浏览器中显示的HTML内容,但noframes部分除外。框架集文件只是向浏览器提

淮海工学院二〇一〇届本科毕业设计(论文) 第 20 页 共 59 页

供应如何显示一组框架以及在这些框架中应显示哪些文档的有关信息。

本系统通过使用Iframe框架来布局页面,其主要属性设置如下: Src属性:要在框架中显示的页面的URL。 Name属性:用来设置框架名,以标识该框架。

除此之外,为了使页面美观大方,还可以设置Iframe框架的其他一些属性。例如scrolling属性用来设置在框架中是否显示滚动条,frameborder属性用来设置框架的边框,另外还可以通过style属性设置框架的大小、背景颜色和字体大小等。

5.1.2 第三方组件FreeTextBox的使用

本系统中用到了第3方组件FreeTextBox,该组件是一个在线文本编辑器,可以对文字以及图片内容进行处理,并将数据保存到数据库中。该组件的配置步骤如下:

将FreeTextBox.dll添加到项目中

在“解决方案资源管理器”中右击项目,选择弹出的快捷菜单中的“添加引用”命令,在弹出的对话框中选择“浏览”选项卡,找到组件存放位置,单击“确定”按钮,系统将自动创建Bin文件夹,并将组件存放到该文件夹中。“添加引用”对话框如图所示。

设置SupportFolder属性

将存放有FreeTextBox组件资源文件的文件夹存放到aspnet_client文件夹中,然后设置SupplorFolder属性为aspnet_client/FreeTextBox/。

向页面中添加组件

配置完成后,即可向页面中的位置添加组件。

注册完成后,回到设计视图选中FreeTextBox组件,进行相关属性设置。 写入数据库

完成以上配置后,就要使用该组件了,下面会在btnSubmit_Click事件中向数据库插入帖子信息为例介绍FreeTextBox组件的使用方法。 5.1.3 以缩略图形式上传图片

在以缩略图形式上传图片时,主要用到了Image对象的GetThumbnailImage方法,该方法用来返回Image图像的缩略图。语法格式如下:

Public Image GetThumbnailImage {

Int thumbWidth, Int thumbHeight,

GetThumbnailImageAbort callback, lntPtr callbackData }

参数说明如下:

thumbWidth:请求的缩略图的宽度(以像素为单位)

淮海工学院二〇一〇届本科毕业设计(论文) 第 21 页 共 59 页

thumbHeight:请求的缩略图的高度(以像素为单位)

callback:一个Image.GetTumbnailImageAbort委托。在GDI+1.0版中不使用此

委托,即便如此,也必须创建一个委托并在该参数中传递对此委托的引用。Image.GetTumbnailImageAbort委托提供一个回调方法,用于确定GetThumbnailImage方法应在何时提前取消执行。 CallbackData:必须为Zero. 返回值:表示缩略图的Image.

例如,下面的代码用来生成指定文件的缩略图。

System.Drawing.Image image, newimage;

image = System.Drawing.Image.FromFile(filePath);

System.Drawing.Image.GetThumbnailImageAbort callb = null;

newimage = image.GetThumbnailImage(45, 50, callb, System.IntPtr());

new

5.1.4 多层设计模式开发

目前,开发人员在开发项目时大部分都使用分层开发模式,最常见的就是3层开发模式,如图所示。分层设计的目的在于使各个层之间只能够被它相邻的层产生影响,但是这个限制常常在使用多层开发的时候被违反,这对系统的开发是有害的。本节中主要讨论层的隔离为什么如此重要。下面将具体对这3种流程进行说明比较。

表5-1 3种开发模式对比

数据库 数据层驱动模式 1)很容易设计 2)产生负面影响 3)很难改变数据层,因为它和陈述层紧密绑定 陈述层驱动模式 1)数据库设计很糟 2)严重的不规范化设计 3)其他系统不易使用 4)很难改变数据层,由于它跟陈述层紧密绑定 常常不能适应业务需求变化 常常适应业务需求变化 是围绕数据层而不是围绕用适合用户扩展界面 户,不易修改 通常可扩张,但是常常在用户完整性的扩张很难,常界面需要比较多的重写以满足常只有通过“剪切/粘数据库的结构,同时数据库可贴”函数来实现 能需要存储一些冗余的字段 隔离驱动模式 1)优化设计 2)集中设计数据库,陈述层对它影响很小 适应需求变化 适合用户界面扩展 很容易扩展 业务需求 用户界面 扩展性 从上表中很容易看出隔离驱动模式的优点,隔离驱动模式设计可以极大地提高程序的扩展性,因此该网站采用隔离驱动模式开发。

5.2 数据库设计

本实例采用了SQL Server 2005数据库系统,在该系统中新建一个数据库,将其命名为db_BBS。本实例中用到了8个数据表,下面对主要的数据表结构及数据库关系图进行介绍。 5.2.1 数据库逻辑结构设计

(1)tb_User(用户信息表)

表tb_User用于保存注册用户的详细信息,该表的结构如表5-2所示。

淮海工学院二〇一〇届本科毕业设计(论文) 第 22 页 共 59 页 字段名 用户名 用户密码 真实姓名 性别 出生日期 联系电话 手机 QQ号 头像 Email 家庭住址 联系地址 个人首页 字段类型 nvarchar nvarchar nvarchar bit 字段长度 50 50 20 是否允许为空 不允许 允许 允许 允许 允许 允许 允许 允许 允许 允许 允许 允许 允许 是否为主键 是 否 否 否 否 否 否 否 否 否 否 否 否 smalldatetime nvarchar nvarchar Bigint nvarchar nvarchar nvarchar nvarchar nvarchar 20 20 200 50 100 100 50 表5-2 用户信息表 (2)tb_Module(版块信息表)

表tb_Module用于保存该论坛所包含的板块信息,该表的结构如表5-3所示

字段名 版块编号 版块名称 字段类型 nvarchar nvarchar 字段长度 50 100 表5-3 版块信息表 是否允许为空 不允许 允许 是否主键 是 否 (3)tb_Card(帖子信息表)

表tb_Card用于保存各类帖子的详细信息,该表的结构如表5-4所示。

字段名 帖子编号 帖子名称 版块编号 帖子内容 发表时间 发帖人 角色 是否为精帖 字段类型 nvarchar nvarchar nvarchar nvarchar nvarchar nchar nvarchar 字段长度 50 1000 50 4000 50 10 50 表5-4 帖子信息表 是否允许为空 不允许 允许 允许 允许 允许 允许 允许 允许 是否主键 是 否 否 否 否 否 否 否 Smalldatetime (4)tb_Revert(回帖信息表)

表tb_Revert用于保存对帖子的回复信息,该表的结构如表5-5所示:

淮海工学院二〇一〇届本科毕业设计(论文) 第 23 页 共 59 页 字段名 回帖编号 回帖主题 帖子编号 回帖内容 回帖时间 回帖人 角色 字段类型 nvarchar nvarchar nvarchar nvarchar nvarchar nchar 字段长度 20 50 50 4000 50 10 表5-5 回帖信息表 是否允许为空 不允许 允许 允许 允许 允许 不允许 允许 是否主键 是 否 否 否 否 否 否 Smalldatetime (5)tb_Admin(管理员信息表)

表tb_Admin用于保存管理员的信息,该表的结构如表5-6所示:

字段名 管理员姓名 管理员密码 管理员权限 字段类型 nvarchar nvarchar nvarchar 字段长度 50 50 是否允许为空 不允许 允许 不允许 是否主键 是 否 否 10 表5-6 管理员信息表 (6)tb_Host(版主信息表)

表tb_Host用于保存论坛中版主的信息,该表的结构如表5-7所示:

字段名 版主 版块编号 密码 真实姓名 性别 出生日期 联系电话 手机 QQ号 头像 Email 家庭住址 联系地址 个人首页 版主权限 字段类型 nvarchar nvarchar nvarchar nvarchar bit 字段长度 50 50 50 20 是否允许为空 不允许 允许 允许 允许 允许 允许 允许 允许 允许 允许 允许 允许 允许 允许 是否主键 是 否 否 否 否 否 否 否 否 否 否 否 否 否 否 Smalldatetime nvarchar 20 nvarchar bigint nvarchar nvarchar nvarchar nvarchar nvarchar nvarchar 20 200 50 100 100 50 允许 10 表5-7 版主信息表 (7)tb_Image(头像信息表)

表tb_Image用于保存论坛中头像的信息,该表的结构如表5-8所示:

字段名 编号 字段类型 nvarchar 字段长度 20 是否允许为空 不允许 是否主键 是 淮海工学院二〇一〇届本科毕业设计(论文) 第 24 页 共 59 页 头像 nvarchar 200 表5-8 头像信息表 允许 否 (8)tb_Notice(公告信息表)

表tb_Notice用于保存论坛中的公告信息,该表的结构如表5-9所示:

字段名 Id Title Neirong Sydatetime Adddatetime Imgurl 字段类型 int nvarchar nvarchar nvarchar datetime nvarchar 字段长度 20 50 500 50 500 是否允许为空 不允许 允许 允许 允许 允许 允许 是否主键 是 否 否 否 否 否 表5-9 公告信息表 5.2.2 数据库物理结构设计

数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。所谓的“合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。

为了设计数据库的物理结构,设计人员必须充分了解所用DBMS的内部特征;充分了解数据系统的实际应用环境,特别是数据应用处理的频率和响应时间的要求;充分了解外存储设备的特性。数据库的物理结构设计大致包括:确定数据的存取方法、确定数据的存储结构。

物理结构设计阶段实现的是数据库系统的内模式,它的质量直接决定了整个系统的性能。因此在确定数据库的存储结构和存取方法之前,对数据库系统所支持的事务要进行仔细分析,获得优化数据库物理设计的参数。

综上所述则有物理结构图如下:

属性名称 存取单位 姓名 用户 访问方法 登录后直接访问 会员登录后可以查看 存取要求 可以查看所有信息 只能修改自己的个人资料 个人资料 用户 帖子 公告 版主/管理员 版主、管理员直接管理 只有版主、管理员可以删除 管理员 管理员直接管理 只有管理员可以添加公告 5.2.3 数据库关系图 本实例新建了一个Diagram_CardInfo关系图,如图5-1所示:

淮海工学院二〇一〇届本科毕业设计(论文) 第 25 页 共 59 页

图5-1 数据库关系图

5.3 配置Web.config

为了方便数据操作和网页维护,可以将一些配置参数放在Web.congfig文件中。本实例主要在Web.config文件中配置连接数据库的字符串和使用FreeTextBox组件时的验证信息,其代码如下:

Source=PC-201004281442\\SQLEXPRESS;Database=db_BBS;Uid=sa;Pwd=1;\/>

5.4 公共类编写

在网站开发项目中以类的形式来组织、封装一些常用的方法和事件,将会在编写过程中起到事半功倍的效果。本系统中创建了8个公共类文件,分别为DataBase.cs(数据库操作类)、AdminManage.cs(管理员功能模块类)、CardManage.cs(帖子管理功能模块类)、HostManage.cs(版主管理功能模块类)、ImageManage.cs(头像管理功能模块类)、ModuleManage.cs(版块管理功能模

淮海工学院二〇一〇届本科毕业设计(论文) 第 26 页 共 59 页

块类)、RevertManage.cs(回帖管理功能模块类)和UserManage.cs(用户管理功能模块类)。其中,数据库操作类主要用来访问SQL Server 2005数据库,而其他功能模块类主要用于处理业务逻辑功能,透彻地说就是实现功能窗体(陈述层)与数据库操作(数据层)之间的业务功能。数据库操作类、功能模块类和功能窗体之间的理论关系图如图5-2所示。

图5-2 理论关系图

5.4.1数据库操作类设计

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

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

代码如下:

public class DataBase:IDisposable { public DataBase() { // // TODO: 在此处添加构造函数逻辑 // }

private SqlConnection con; //创建连接对象 。。。。。。

。。。。。。下面编写相关的功能方法 。。。。。。

}

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

实现打开数据库连接Open方法的代码如下:

#region 打开数据库连接 ///

/// 打开数据库连接. ///

private void Open() {

淮海工学院二〇一〇届本科毕业设计(论文) 第 27 页 共 59 页

// 打开数据库连接 if (con == null) {

con = new SqlConnection(ConfigurationManager.AppSettings[\]); }

if (con.State == System.Data.ConnectionState.Closed) con.Open(); }

#endregion

关闭数据库连接主要通过SqlConnection对象的Close方法实现。自定义Close方法关闭数据库连接的代码如下:

#region 关闭连接 ///

/// 关闭数据库连接 ///

public void Close() {

if (con != null) con.Close(); }

#endregion

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

实现释放数据库连接资源的Dispose方法的代码如下:

#region 释放数据库连接资源 ///

/// 释放资源 ///

public void Dispose() {

// 确认连接是否已经关闭 if (con != null) {

con.Dispose(); con = null; } }

#endregion

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

实现MakeInparam方法和MakeParam方法的完整代码如下:

#region 传入参数并且转换为SqlParameter类型 ///

/// 转换参数 ///

/// /// /// ///

/// 新的 parameter 对象

淮海工学院二〇一〇届本科毕业设计(论文) 第 28 页 共 59 页

public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value) {

return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value); }

///

/// 初始化参数值 ///

/// /// ///

/// ///

/// 新的 parameter 对象

public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value) {

SqlParameter param;

if (Size > 0)

param = new SqlParameter(ParamName, DbType, Size); else

param = new SqlParameter(ParamName, DbType); param.Direction = Direction;

if (!(Direction == ParameterDirection.Output && Value == null)) param.Value = Value; return param; }

#endregion

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

实现可重载方法RunProc方法的完整代码如下:

#region 执行参数命令文本(无数据库中数据返回) ///

/// 执行命令 ///

/// /// ///

public int RunProc(string procName, SqlParameter[] prams) {

SqlCommand cmd = CreateCommand(procName, prams); cmd.ExecuteNonQuery(); this.Close();

//得到执行成功返回值

return (int)cmd.Parameters[\].Value; }

///

/// 直接执行SQL语句 ///

/// ///

public int RunProc(string procName) {

this.Open();

淮海工学院二〇一〇届本科毕业设计(论文) 第 29 页 共 59 页

SqlCommand cmd = new SqlCommand(procName, con); cmd.ExecuteNonQuery(); this.Close(); return 1; }

#endregion

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

可重载方法RunProcReturn的完整代码如下:

#region 执行参数命令文本(有返回值) ///

/// 执行查询命令文本,并且返回DataSet数据集 ///

/// /// /// ///

public DataSet RunProcReturn(string procName, SqlParameter[] prams, string tbName) {

SqlDataAdapter dap = CreateDataAdaper(procName, prams); DataSet ds = new DataSet(); dap.Fill(ds, tbName); this.Close();

//得到执行成功返回值 return ds; }

///

/// 执行命令文本,并且返回DataSet数据集 ///

/// /// /// DataSet

public DataSet RunProcReturn(string procName, string tbName) {

SqlDataAdapter dap = CreateDataAdaper(procName, null); DataSet ds = new DataSet(); dap.Fill(ds, tbName); this.Close();

//得到执行成功返回值 return ds; }

#endregion

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

CreateDataAdaper方法的完整代码如下:

#region 将命令文本添加到SqlDataAdapter ///

淮海工学院二〇一〇届本科毕业设计(论文) 第 30 页 共 59 页

/// 创建一个SqlDataAdapter对象以此来执行命令文本 ///

/// /// ///

private SqlDataAdapter CreateDataAdaper(string procName, SqlParameter[] prams) {

this.Open();

SqlDataAdapter dap = new SqlDataAdapter(procName, con);

dap.SelectCommand.CommandType = CommandType.Text; //执行类型:命令文本 if (prams != null) {

foreach (SqlParameter parameter in prams)

dap.SelectCommand.Parameters.Add(parameter); }

//加入返回参数

dap.SelectCommand.Parameters.Add(new SqlParameter(\, SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null));

return dap; }

#endregion

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

CreateCommand方法的完整代码如下:

#region 将命令文本添加到SqlCommand ///

/// 创建一个SqlCommand对象以此来执行命令文本 ///

///

/// /// 返回SqlCommand对象

private SqlCommand CreateCommand(string procName, SqlParameter[] prams) {

// 确认打开连接 this.Open();

SqlCommand cmd = new SqlCommand(procName, con);

cmd.CommandType = CommandType.Text; //执行类型:命令文本

// 依次把参数传入命令文本 if (prams != null) {

foreach (SqlParameter parameter in prams) cmd.Parameters.Add(parameter); }

// 加入返回参数

cmd.Parameters.Add(

new SqlParameter(\, SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null));

return cmd; }

#endregion

淮海工学院二〇一〇届本科毕业设计(论文) 第 31 页 共 59 页

5.4.2 版块管理功能模块类

版块管理功能模块累主要处理论坛中有关版块的业务逻辑功能,由于篇幅有限,其他功能模块类的源代码参见本书附带光盘。

板块管理功能模块类主要实现版块信息的添加、修改、删除以及各种查询方式。以下方法主要提供给陈述层调用,从编码的角度出发,这些方法的实现是建立在数据层(数据库操作类DataBase.cs)的基础上的,下面将详细介绍。

版块管理功能模块类中,首先定义版块信息的数据结构。代码如下:

#region 定义版块--数据结构

private string moduleid = \; private string modulename = \; ///

/// 版块编号 ///

public string ModuleID {

get { return moduleid; } set { moduleid = value; } }

///

/// 版块名称 ///

public string ModuleName {

get { return modulename; } set { modulename = value; } }

#endregion

方法GetMID主要实现自动生成版块编号功能,代码如下:

#region 自动生成版块编号 ///

/// 自动生成版块编号 ///

/// public string GetMID() {

DataSet ds = GetAllModule(\); string strCID = \;

if (ds.Tables[0].Rows.Count == 0) strCID = \; else

strCID = \ + (Convert.ToInt32(ds.Tables[0].Rows[ds.Tables[0].Rows.Count - 1][0].ToString().Substring(1, 4)) + 1); return strCID; }

#endregion

AddModule方法主要实现添加版块信息功能,实现关键技术为:创建SqlParameter参数数组,通过数据库操作类(DataBase.cs)中的MakeInParam方法将参数值转换为SqlParameter类型,储存在数组中,最后调用数据库操作类(DataBase.cs)中的RunProc方法执行命令文本。代码如下:

#region 添加--版块信息 ///

淮海工学院二〇一〇届本科毕业设计(论文) 第 32 页 共 59 页

/// 添加--版块信息 ///

///

public int AddModule(ModuleManage modulemanage) {

SqlParameter[] prams = { data.MakeInParam(\, SqlDbType.NVarChar, 50, modulemanage.ModuleID),

data.MakeInParam(\, SqlDbType.NVarChar, 100, modulemanage.ModuleName), };

return (data.RunProc(\版块编号,版块名称) VALUES (@moduleid,@modulename)\, prams)); }

#endregion

UpdateModule方法主要实现修改版块信息功能。代码如下:

#region 修改--版块信息 ///

/// 修改--版块信息 ///

///

public int UpdateModule(ModuleManage modulemanage) {

SqlParameter[] prams = {

data.MakeInParam(\, SqlDbType.NVarChar, 50, modulemanage.ModuleID),

data.MakeInParam(\, SqlDbType.NVarChar, 100, modulemanage.ModuleName), };

return (data.RunProc(\版块名称=@modulename where 版块编号=@moduleid\, prams)); }

#endregion

DeleteModule方法主要实现根据板块编号删除板块信息功能。代码如下:

#region 删除--版块信息 ///

/// 删除--版块信息 ///

///

public int DeleteModule(ModuleManage modulemanage) {

SqlParameter[] prams = { data.MakeInParam(\, SqlDbType.NVarChar, 50, modulemanage.ModuleID), };

return (data.RunProc(\版块编号=@moduleid\, prams)); }

#endregion

FindModuleByID、FindModuleByName和GetAllModule方法分别用来实现根据“版块编号”、“ 版块名称”得到版块信息功能。代码如下:

#region 查询--版块信息 ///

/// 根据--版块编号--得到版块信息 ///

///

淮海工学院二〇一〇届本科毕业设计(论文) 第 33 页 共 59 页

///

public DataSet FindModuleByID(ModuleManage modulemanage, string tbName) {

SqlParameter[] prams = { data.MakeInParam(\, SqlDbType.NVarChar, 50, modulemanage.ModuleID+\), };

return (data.RunProcReturn(\版块编号 like @moduleid\, prams, tbName)); }

///

/// 根据--版块名称--得到版块信息 ///

///

public DataSet FindModuleByName(ModuleManage modulemanage, string tbName) {

SqlParameter[] prams = { data.MakeInParam(\, SqlDbType.NVarChar, 100, modulemanage.ModuleName+\), };

return (data.RunProcReturn(\版块名称 like @modulename\, prams, tbName)); }

///

/// 得到所有--版块信息 ///

///

public DataSet GetAllModule(string tbName) {

return (data.RunProcReturn(\版块编号\, tbName)); }

#endregion

5.5 模块设计说明

5.5.1登录模块与注册模块

数据表:tb_Admin、tb_User、tb_Host、tb_Image

Register.aspx页面是论坛的新用户注册页面,该页运行结果如图5-3所示:

淮海工学院二〇一〇届本科毕业设计(论文) 第 34 页 共 59 页

图5-3 用户注册界面

Login.aspx页面是论坛的用户登录页面,该页运行结果如图5-4所示:

淮海工学院二〇一〇届本科毕业设计(论文) 第 35 页 共 59 页

图5-4 用户登录界面

图5-5 用户登录后界面

登录需求流程图

进入网站NY登录是否已注册登录注册注册验证YN注册信息是否合法身份验证N验证信息是否合法Y错误提示登录成功错误提示注册成功结束,进行后续动作图5-6 登录需求流程图

5.5.2浏览帖子页面的实现过程

数据表:tb_Card、tb_Revert、tb_User、tb_Host

技术:DataBinder.Eval方法绑定数据、DataList空间分页

浏览帖子页面(CardInfo.aspx)实现了显示指定帖子及其回复信息的功能,

淮海工学院二〇一〇届本科毕业设计(论文) 第 36 页 共 59 页

该页运行结果如图5-7所示:

图5-7 浏览帖子页面

浏览帖子页面实现的完整步骤如下:

(1) 将一个表格(Table)控件置于CardInfo.aspx页中,为整个页面进行布局。 (2) CardInfo.aspx页面主要用到的控件的属性设置及用途如表5-10所示: 表5-10 CardInfo.aspx页面主要用到的控件的属性设置及用途 控件类型 标准/Label 控件 控件名称 Label4 Label1 Label2 Label8 laPage labBackPage LinkButton1 标准/LinkButton 控件 lnkbtnOne lnkbtnUp lnkbtnNext lnkbtnBack Image2 标准/Image控件 数据/DataList控件 dlInfo 主要属性设置 Text属性设置为空 Text属性设置为空 Text属性设置为空 Text属性设置为空 Text属性设置为1 Text属性设置为空 Font-Underline属性设置为false Font-Underline属性设置为false Font-Underline属性设置为false Font-Underline属性设置为false Font-Underline属性设置为false 属性值全部默认 属性设置见步骤(3)中代码 用途 显示帖子名称 显示帖子发表时间 显示发帖人姓名 显示帖子内容 显示当前页码 显示总页码 定向到回复信息页面 第一页 上一页 下一页 最后一页 显示发帖人头像 显示回帖信息 (3) 进入CardInfo.aspx页面的HTML源码中,为DataList控件中的相应控件

及超链接进行数据绑定,代码如下:

淮海工学院二〇一〇届本科毕业设计(论文) 第 37 页 共 59 页



 回帖主题:--

回帖时间:

text-align:left; height: 125px; background-image: url(../Images/帖子及回帖信息页/5.jpg); width: 634px;\   <%# DataBinder.Eval(Container.DataItem,\回帖内容\) %>

为DataList控件设置项模板的方法:单击DataList控件右上角的按钮,在快捷菜单

中选择“编辑模板”,或者右击DataList控件,选择弹出的快捷菜单中“编辑模板”中的“项模板”选项,即可在DataList控件的项模板(ItemTemplate)中进行编辑。该页面中DataList控件项模板编辑如图5-8所示:

图5-8 DataList控件项模板编辑

(4) 返回设计页面,进入该页的代码编辑页面(CardInfo.aspx.cs),声明功能

模块类的对象,以便在程序中调用它们的方法,代码如下:

CardManage cardmanage = new CardManage();

RevertManage revertmanage = new RevertManage(); UserManage usermanage = new UserManage(); HostManage hostmanage = new HostManage();

(5) 为了实现显示帖子及回复信息的功能,本实例自定义了以下几个方法,分

淮海工学院二〇一〇届本科毕业设计(论文) 第 38 页 共 59 页

别为dlBind、cardBind、dataBind、pageCount和getPhoto方法。下面分别对这几个方法进行介绍。

dlBind方法用于控制DataList控件的分页。代码如下:

public void dlBind(string str) {

int curpage = Convert.ToInt32(labPage.Text); PagedDataSource ps = new PagedDataSource(); revertmanage.CardID = str;

ps.DataSource = revertmanage.FindRevertByCID(revertmanage, \).Tables[0].DefaultView;

ps.AllowPaging = true; //是否可以分页 ps.PageSize = 2; //显示的数量

ps.CurrentPageIndex = curpage - 1; //取得当前页的页码 lnkbtnUp.Enabled = true; lnkbtnNext.Enabled = true; lnkbtnBack.Enabled = true; lnkbtnOne.Enabled = true; if (curpage == 1) {

lnkbtnOne.Enabled = false;//不显示第一页按钮 lnkbtnUp.Enabled = false;//不显示上一页按钮 }

if (curpage == ps.PageCount) {

lnkbtnNext.Enabled = false;//不显示下一页 lnkbtnBack.Enabled = false;//不显示最后一页 }

this.labBackPage.Text = Convert.ToString(ps.PageCount); dlInfo.DataSource = ps;

dlInfo.DataKeyField = \回帖编号\; dlInfo.DataBind(); }

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

public void cardBind(string str) {

try {

cardmanage.CardID = str;

Label1.Text = Convert.ToDateTime(cardmanage.FindCardByID(cardmanage, \).Tables[0].Rows[0][4].ToString()).ToLongDateString(); Label2.Text = cardmanage.FindCardByID(cardmanage, \).Tables[0].Rows[0][5].ToString();

Label4.Text = cardmanage.FindCardByID(cardmanage, \).Tables[0].Rows[0][1].ToString();

Label8.Text = cardmanage.FindCardByID(cardmanage, \).Tables[0].Rows[0][3].ToString();

string strPop = cardmanage.FindCardByID(cardmanage, \).Tables[0].Rows[0][6].ToString().Trim(); string strPhoto = \; if (strPop == \游客\) {

strPhoto = \; }

if (strPop == \用户\) {

usermanage.UserName = cardmanage.FindCardByID(cardmanage, \).Tables[0].Rows[0][5].ToString();

strPhoto = usermanage.FindUserByName(usermanage,

淮海工学院二〇一〇届本科毕业设计(论文) 第 39 页 共 59 页

\).Tables[0].Rows[0][8].ToString(); }

if (strPop == \版主\) {

hostmanage.HostName = cardmanage.FindCardByID(cardmanage, \).Tables[0].Rows[0][5].ToString();

strPhoto = hostmanage.FindHostByName(hostmanage, \).Tables[0].Rows[0][9].ToString(); }

if (strPop == \管理员\) {

strPhoto = \; }

Image2.ImageUrl = strPhoto; }

catch { } }

dataBind方法用于在Web页面中显示帖子及回复信息。代码如下:

public void dataBind() {

if (Page.Request.QueryString[\] != null) {

cardBind(Page.Request.QueryString[\].ToString()); dlBind(Page.Request.QueryString[\].ToString()); return; }

if (Session[\] != null) {

cardBind(Session[\].ToString()); dlBind(Session[\].ToString()); return; } }

pageCount方法用于获得回帖显示的总页码数。代码如下:

public void pageCount() {

if (Page.Request.QueryString[\] != null) {

dlBind(Page.Request.QueryString[\].ToString()); return; }

if (Session[\] != null) {

dlBind(Session[\].ToString()); return; } }

getPhoto方法用于根据回帖编号获得回帖人的头像信息。代码如下:

public string getPhoto(string str) {

string strPhoto = \;

revertmanage.RevertID = str;

string strPop = revertmanage.FindRevertByID(revertmanage, \).Tables[0].Rows[0][6].ToString().Trim();

if (strPop == \用户\) {

淮海工学院二〇一〇届本科毕业设计(论文) 第 40 页 共 59 页

usermanage.UserName = revertmanage.FindRevertByID(revertmanage, \).Tables[0].Rows[0][5].ToString();

strPhoto = usermanage.FindUserByName(usermanage, \).Tables[0].Rows[0][8].ToString(); }

if (strPop == \版主\) {

hostmanage.HostName = revertmanage.FindRevertByID(revertmanage, \).Tables[0].Rows[0][5].ToString();

strPhoto = hostmanage.FindHostByName(hostmanage, \).Tables[0].Rows[0][9].ToString(); }

if (strPop == \管理员\) {

strPhoto = \; }

return strPhoto; }

(6) 在Page_Load事件中编写一段代码,用于当页面初始化时显示帖子及其回

复信息,代码如下:

protected void Page_Load(object sender, EventArgs e) {

try {

dataBind(); }

catch { } }

(7) 双击LinkButton控件触发它们的Click事件,在该事件中实现控制DataList

控件分页的功能,代码如下:

protected void lnkbtnOne_Click(object sender, EventArgs e) {

labPage.Text = \; pageCount(); }

protected void lnkbtnUp_Click(object sender, EventArgs e) {

labPage.Text = Convert.ToString(Convert.ToInt32(labPage.Text) - 1); pageCount(); }

protected void lnkbtnNext_Click(object sender, EventArgs e) {

labPage.Text = Convert.ToString(Convert.ToInt32(labPage.Text) + 1); pageCount(); }

protected void lnkbtnBack_Click(object sender, EventArgs e) {

labPage.Text = labBackPage.Text; pageCount(); }

(8) 触发DataList控件的DeleteCommand事件,在该事件中判断登录者的权

限,如果是“管理员”或“版主”,则可以删除相应的回复信息,代码如下:

protected void dlInfo_DeleteCommand(object source, DataListCommandEventArgs e) {

if (Session[\] == \管理员\ || Session[\] == \版主\) {

淮海工学院二〇一〇届本科毕业设计(论文) 第 41 页 共 59 页

string revertid = dlInfo.DataKeys[e.Item.ItemIndex].ToString(); //获取当前DataList控件列

revertmanage.RevertID = revertid; revertmanage.DeleteRevert(revertmanage);

Response.Write(\回帖信息--删除成功')\); dataBind(); } else

Response.Redirect(\); }

5.5.3 回复帖子页面的实现过程

数据表:tb_Revert、tb_Card、tb_User、tb_Host

技术:FreeTextBox组件的使用、使用Image控件显示头像

回复帖子页面(RevertCard.aspx)实现了给指定帖子回复信息的功能,该页运行结果如图5-9所示:

图5-9 回帖页面

回复帖子页面实现的完整步骤如下:

(1)将一个表格(Table)控件置于RevertCard.aspx页中,为整个页面进行布局。

(2)RevertCard.aspx页面主要用到的控件的属性设置及用途如表5-11所示

表5-11 RevertCard.aspx页面中各个控件的属性设置及用途

控件类型 标准/Label 控件名称 labName 主要属性设置 Text属性设置为空 用途 显示回帖人姓名 淮海工学院二〇一〇届本科毕业设计(论文) 第 42 页 共 59 页 labEmail labQQ labIndex labCName 标准/TextBox控件 txtName btnSubmit 标准/Button 控件 btnCancel 控件 标准/Image控件 imgPhoto Text属性设置为空 Text属性设置为空 Text属性设置为空 Text属性设置为空 属性值全部默认 Text属性设置为“提交”,CssClass属性设置为ButtonCss Text属性设置为“取消提交”,CssClass属性设置为ButtonCss Height属性设置为50px,Width属性设置为45px 显示回帖人E-mail 显示回帖人QQ号码 显示回帖人个人首页 显示帖子名称 输入回复主题 提交回复信息 清空已经填写的回复主题和内容 显示回帖人头像 (1) 进入RevertCard.aspx页面的HTML源码中,在顶部添加FreeTextBox组

件的注册代码。代码如下:

<%@ Register TagPrefix=\ Namespace=\ Assembly=\%>

然后在页面中适当的位置添加FreeTextBox组件,代码如下:

SupportFolder=\ Height=\ Width=\ HtmlModeDefaultsToMonoSpaceFont=\ DownLevelCols=\ DownLevelRows=\

ButtonDownImage=\ GutterBackColor=\ ToolbarBackgroundImage=\

ToolbarLayout=\rline,Strikethrough;Superscript,Subscript,RemoveFormat|JustifyLeft,JustifyRight,JustifyCenter,JustifyFull;BulletedList,NumberedList,Indent,Outdent;CreateLink,Unlink,InsertImage,InsertRule|Cut,Copy,Paste;Undo,Redo,Print\ ToolbarStyleConfiguration=\ />

(2) 返回设计页面,进入该页的代码编辑页面(RevertCard.aspx.cs),声明功

能模块类的对象,以便在程序中调用它们的方法,代码如下:

CardManage cardmanage = new CardManage();

RevertManage revertmanage = new RevertManage(); UserManage usermanage = new UserManage(); HostManage hostmanage = new HostManage();

(3) 在Page_Load事件中编写一段代码,用于当页面初始化时,显示帖子名称

及回帖人的详细信息。代码如下:

protected void Page_Load(object sender, EventArgs e) {

if (!IsPostBack) {

DataSet ds = null;

if (Session[\] == null) {

Response.Redirect(\); } else {

cardmanage.CardID = Page.Request.QueryString[\].ToString(); labCName.Text = cardmanage.FindCardByID(cardmanage, \).Tables[0].Rows[0][1].ToString();

string strName = Session[\].ToString(); if (Session[\].ToString() == \用户\) {

usermanage.UserName = strName;

ds = usermanage.FindUserByName(usermanage, \); labName.Text = strName;

labEmail.Text = ds.Tables[0].Rows[0][9].ToString();

淮海工学院二〇一〇届本科毕业设计(论文) 第 43 页 共 59 页

labQQ.Text = ds.Tables[0].Rows[0][7].ToString();

labIndex.Text = ds.Tables[0].Rows[0][12].ToString(); imgPhoto.ImageUrl = ds.Tables[0].Rows[0][8].ToString(); return; }

if (Session[\].ToString() == \版主\) {

hostmanage.HostName = strName;

ds = hostmanage.FindHostByName(hostmanage, \); labName.Text = strName;

labEmail.Text = ds.Tables[0].Rows[0][10].ToString(); labQQ.Text = ds.Tables[0].Rows[0][8].ToString();

labIndex.Text = ds.Tables[0].Rows[0][13].ToString(); imgPhoto.ImageUrl = ds.Tables[0].Rows[0][9].ToString(); return; }

if (Session[\].ToString() == \管理员\) {

labName.Text = strName; labEmail.Text = \无\; labQQ.Text = \无\; labIndex.Text = \无\;

imgPhoto.ImageUrl = \; return; } } } }

(4) 双击【提交】按钮触发其Click事件,在该事件中实现添加回复信息功能。

代码如下:

protected void btnSubmit_Click(object sender, EventArgs e) {

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

Response.Write(\回帖主题不能为空!')\);

return; }

revertmanage.RevertID = revertmanage.GetRCID(); revertmanage.RevertName = txtName.Text;

revertmanage.CardID = Page.Request.QueryString[\].ToString(); revertmanage.RevertContent = FreeTextBox1.Text; revertmanage.RevertTime = DateTime.Now;

revertmanage.RevertPeople = Session[\].ToString(); revertmanage.Pop = Session[\].ToString(); revertmanage.AddRevert(revertmanage);

Response.Redirect(\ + Page.Request.QueryString[\].ToString() + \); }

5.5.4 发表帖子页面的实现过程

数据表:tb_Card、tb_Module、tb_User、tb_Host

技术:FreeTextBox组件的使用、使用Image控件显示头像

发表帖子页面(DeliverCard.aspx)实现了在指定板块中发表帖子的功能,该页运行结果如图5-10所示

淮海工学院二〇一〇届本科毕业设计(论文) 第 44 页 共 59 页

图5-10 发表帖子页面

发表帖子页面实现的完整步骤如下:

(1) 将一个表格(Table)控件置于DeliverCard.aspx页中,为整个页面进行布

局。

(2) DeliverCard.aspx页面主要用到的控件的属性设置及用途如表5-12所示 表5-12 DeliverCard.aspx页面中各个控件的属性设置及用途 控件类型 标准/Label 控件 控件名称 labName labEmail labQQ labIndex labCName ddlMName btnSubmit 主要属性设置 Text属性设置为空 Text属性设置为空 Text属性设置为空 Text属性设置为空 属性值全部默认 属性值全部默认 Text属性设置为“提交”,CssClass属性设置为ButtonCss Text属性设置为“取消提交”,CssClass属性设置为ButtonCss Height属性设置为50px,Width属性设置为45px 用途 显示发帖人姓名 显示发帖人E-mail 显示发帖人QQ号码 显示发帖人个人首页 输入帖子名称 选择帖子所属版块 提交回复信息 标准/TextBox控件 标准/DropDownList 控件 标准/Button控件 btnCancel 标准/Image控件 imgPhoto 清空已经填写的帖子名称和内容 显示发帖人头像 (3) 进入DeliverCard.aspx页面的HTML源码中,在顶部添加FreeTextBox组

件的注册代码。代码如下:

<%@ Register TagPrefix=\ Namespace=\ Assembly=\%>

淮海工学院二〇一〇届本科毕业设计(论文) 第 45 页 共 59 页 然后在页面中适当位置添加FreeTextBox组件。代码如下:

SupportFolder=\ Height=\ Width=\ HtmlModeDefaultsToMonoSpaceFont=\ DownLevelCols=\ DownLevelRows=\

ButtonDownImage=\ GutterBackColor=\ ToolbarBackgroundImage=\

ToolbarLayout=\rline,Strikethrough;Superscript,Subscript,RemoveFormat|JustifyLeft,JustifyRight,JustifyCenter,JustifyFull;BulletedList,NumberedList,Indent,Outdent;CreateLink,Unlink,InsertImage,InsertRule|Cut,Copy,Paste;Undo,Redo,Print\ ToolbarStyleConfiguration=\ />

(4) 返回设计页面,进入该页的代码编辑页面(DeliverCard.aspx.cs),声

明功能模块类的对象,以便在程序中调用它们的方法。代码如下:

CardManage cardmanage = new CardManage();

ModuleManage modulemanage = new ModuleManage(); UserManage usermanage = new UserManage(); HostManage hostmanage = new HostManage();

(5) 在Page_Load事件中编写一段代码,用于当页面初始化时,对“所属板块”

下拉列表框进行数据绑定,并显示发帖人的详细信息。代码如下:

protected void Page_Load(object sender, EventArgs e) {

if (!IsPostBack) {

ddlMName.DataSource = modulemanage.GetAllModule(\); ddlMName.DataTextField = \版块名称\; ddlMName.DataBind(); }

DataSet ds = null; string strName = \;

if (Session[\] == null) {

strName = \匿名\;

labName.Text = strName; labEmail.Text = \无\; labQQ.Text = \无\; labIndex.Text = \无\;

imgPhoto.ImageUrl = \; } else {

strName = Session[\].ToString(); if (Session[\].ToString() == \用户\) {

usermanage.UserName = strName;

ds = usermanage.FindUserByName(usermanage, \); labName.Text = strName;

labEmail.Text = ds.Tables[0].Rows[0][9].ToString(); labQQ.Text = ds.Tables[0].Rows[0][7].ToString();

labIndex.Text = ds.Tables[0].Rows[0][12].ToString(); imgPhoto.ImageUrl = ds.Tables[0].Rows[0][8].ToString(); return; }

if (Session[\].ToString() == \版主\) {

hostmanage.HostName = strName;

ds = hostmanage.FindHostByName(hostmanage, \); labName.Text = strName;

labEmail.Text = ds.Tables[0].Rows[0][10].ToString(); labQQ.Text = ds.Tables[0].Rows[0][8].ToString();

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

Top