BBS论坛设计与实现_第1页
BBS论坛设计与实现_第2页
BBS论坛设计与实现_第3页
BBS论坛设计与实现_第4页
BBS论坛设计与实现_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

中国石油大学(北京)现代远程教育毕业设计(论文)诸论BBS发展背景电子公告牌系统(BulletinBoardSystem,英文缩写BBS),通过在计算机上运行服务软件,允许用户使用终端程序通过Internet来进行连接,执行下载数据或程序、上传数据、阅读新闻、与其它用户交换消息等功能[12]。20世纪80年代中期,随着互联网的发展,基于调制解调器和电话线通信的拨号BBS及其互连BBS网络开始出现。在那个时候,更常见的服务器程序是SubBBS(SBS)、PROBARE、远程访问(RA)、MaMax等。同时,也有一些著名的站间中继网、国外的FIDONET和台湾的90个网络。客户端使用的拨号程序是Telix、Kermit和PROCOMM。后来,随着Internet的普及和基于HTTP协议的多媒体网页的发展,传统的纯文本拨号BBS和BBS网络逐渐枯萎,只剩下很少。相反,有一个更加丰富多彩的基于Web的讨论环境,因此在大多数国家或地区,BBS指的是一种或多或少非传统的、只用文字的界面,具有与“论坛(Forum)”相同或相似的含义的讨论环境。大多数BBS网站都是基于Internet的Telnet协议的。在服务器端,BBS网站采用MapleBBS或FielBooBBS系统。用户端通过Telnet软件如NetTerm、CTerm、FTerm等来登陆服务器,阅读发表文章,发送邮件,通过仿真的ZModem协议来上传下载数据文件,有些站点还提供SSH登陆,确保连接的安全性,还有很多站点提供Web方式的界面,方便用户使用[12]。1.2设计的目的及意义目的:设计的首要目的是将自己所学的知识在实践中运用到,结合BBS系统的实际需要,使用B/S结构来实现以下功能:用户登录、用户注册、发布帖子、回复帖子等基本的BBS功能。同时加深对PHP、MYSQL数据库的使用,在开发的过程中学习到更多的新知识,为以后的工作打下良好的基础。 意义:目前,各大论坛体现的主题模块涵盖:娱乐,文化,生活,社会,体育,时政,游戏等多个领域,它是由管理员整理、编辑和审核过的网络资源库。主题模块的帖子由用户编写,并且在管理员审阅后发布在平台上。论坛的参与者们围绕某个热门话题或者特定问题,形成了一种通过交流为中心的学习方式,也就是说,许多参与论坛网络活动的网民聚集在一个特定的板块内,通过发帖子,版面讨论,回复话题和站内信件等方式进行互动讨论与相互探讨。目前每个商业网站都有论坛,他们把自己网站下的论坛作为主流网站的补充,网站版主通过了解论坛信息的回复和发表意见的情况,您可以掌握信息的综合浏览量,并且每个用户在阅读后直接表达自己的意见,用户之间又可以直接相互探讨对方对信息的一些看法,这些意见也可能被版主征集,用于商业产品的完善。论坛的交流模式和方法同样加快了信息的传播速度。同时论坛社区依托于这种网络环境下,顺利的成为各种学习或资源获取的途径,也为学习者良好的提供了学习平台。第二章需求分析2.1会员模块 在对BBS论坛进行需求分析时,我们本着系统各模块功能协调使用,增加使用系统的用户友好度体验,提高系统安全性的角度分析后。将BBS论坛中的用户可分为:管理员、普通用户和游客三类。①游客功能:游客作为论坛的最基本的访问者,可以浏览开放的版块和帖子内容,也可以注册成为用户。然而这种访问者不能发布新帖也不能评论别人的帖子,不然由于游客的身份不透明性,将给网站带来了大量的虚假网络信息,违法信息及广告等,对使用该系统获取有用信息的人造成时间的浪费,同时网站的受欢迎度也将降低。②普通用户功能:游客通过注册可以成为普通用户,普通用户同样可以浏览帖子;登录后可在个人中心更新个人信息,如:密码安全栏目下通过旧密码修改密码、个人资料中更新基本资料和个人信息;如果忘记密码通过邮箱或手机号找回密码,如果都未曾设置,可以给管理员发送邮箱请求帮助;其他功能还有:发布(修改)个人帖子、删除个人帖子、对别人帖子进行回复、举报违规帖子或回复、申请成为版主。普通用户功能图见图2-1所示:图2-1普通用户功能③基于普通用户,管理员具有以下功能:修改用户信息,查看审核用户信息,删除用户,审核版块,新增版块,删除版块,修改版块信息,添加帖子,修改帖子信息,删除用户帖子以及查看审核用户帖子。管理员功能列表如图2-2所示:图2-2

管理员功能2.2帖子模块BBS论坛系统包含版块、帖子和回复,其中版块是对帖子的分类。注册用户可以对帖子主题进行评论,也可以回复别人的评论。当用户打开论坛网址时,论坛主页将显示论坛的所有版块,它所属的主题数、帖子总数、上次发布主题的用户以及最后发布信息的时间。点击某个版块后,将显示该版块下的主题和主题下的回复数,点击次数以及评论的用户和时间。单击主题名后进入主题列表,其中包含帖子的内容,发表该主题的用户的用户名,注册时间,主题下的评论及发布评论信息的用户个人信息。已登录用户可以对帖子进行举报或者点赞,还可以在版块下发表帖子,在帖子下发表评论或回复评论,还可以输入自己想要查看的信息关键字对帖子或评论进行查询、排序,并支持模糊查询。游客只能查看帖子内容,并对帖子或帖子中的评论进行模糊查询,但不能发帖,不能发表评论或回复评论。2.3后台模块后台模块即论坛管理端,他的功能和管理员一样,包含论坛管理端登录,修改注册用户信息,查看审核注册用户信息,删除注册用户,查看审核板块,新增板块,删除板块,修改板块信息,添加帖子,修改帖子信息,删除用户帖子,查看审核用户帖子,更改密码,返回首页,退出登录。后台模块的功能如图2.3所示:图2-3论坛后台功能模块第三章系统设计3.1系统功能模块设计根据论坛需求分析,我们可以将论坛系统的功能进行合理组合,归纳为三个模块:用户模块,版块与帖子模块,管理员模块。而每一个模块中又有很多的小功能,我们对每个系统各模块的功能进行详细分析。用户模块用户模块主要实现用户的注册登陆以及用户信息修改。用户模块需要实现的功能有:用户注册,用户登陆、完善用户的个人信息,如表3-1所示。用户注册:没有注册过论坛的用户,可以通过此模块填写账号,密码注册,注册成功后可以使用账号密码登录论坛。用户登陆:用户通过账号,密码登录论坛,登录后可以使用论坛更多功能,如完善个人信息、发帖等。完善用户的个人信息:注册登录后的用户,通过此模块,对用户的基本资料,头像,联系方式,密码等信息进行修改。版块与帖子模块版块与帖子模块是由我们将版块模块和帖子模块两个模块组合起来的叫法,这两个模块是论坛系统中最关键的部分。版块模块需要实现的功能有版块浏览,版块新增,版块修改和删除。论坛对于帖子的操作是最为复杂的,按照对帖子操作对象的差异,帖子又可以分用户对帖子的操作和管理员对帖子的操作。功能列表如表3-2所示。表3-2版块与帖子模块功能列表版块模块:版块模块是将论坛分为不同的版块,缩短用户查找感兴趣的帖子的时间,让用户快速定位想要关注的内容。用户通过列表的形式浏览版块。管理员拥有版块增删改查的权限。 浏览帖子:所有进入网站的用户都可以浏览帖子。但想要对论坛的帖子发表自己的理解和看法,就需要登录论坛才可以进行相关的操作。 帖子发布:登录论坛的用户或者管理员才可有发布帖子的权限。帖子发布具体实现是通过一个文本编辑器插件,可以编写文本,图片等内容,同时将数据同步到数据库中保存。 其他,对帖子的操作只有浏览是不需要登录的,其他的功能都是需要登录先登录的,我们通过Session判断用户是否登录。管理员模块管理员模块:论坛的用户中管理员拥有最多的权限。管理员需要实现的功能主要有系统参数设置和用户管理等功能。管理员模块的功能列表如图3-3所示。表3-3管理员模块功能列表系统参数设置:将系统中修改频率比较高的参数,加以抽取,提取到一个表单中,便于集中管理和修改。管理用户模块:管理BBS论坛中注册的用户,包括对用户的审核、删除和设置用户权限。其中设置用户权限主要是是设置用户对某一个版块的版主权限,来协助管理员来审核指定版块的帖子内容。3.2数据库设计软件开发中最重要的是数据库设计。良好的数据库设计可以为开发带来极大的便利,使程序员能够使用少量的代码实现所需的功能,加快开发人员的开发效率,更高效的完成任务。相反,如果数据库没有设计,系统开发的进度变得很慢甚至失败。为了减少数据冗余,进一步提高系统运行效率,我们必须设计出一个好的数据库。本论坛系统主要有如下几个实体,它们分别是:用户实体,管理员实体,版块实体,帖子实体,日志。1、用户实体 注册用户的基本属性有:用户名、用户密码、主页URL、签名、联系信息、证件类型:身份证军官证护照等、证件号码、星座、生肖、用户邮箱、用户头像、性别、出生年月日、积分。其中,用户名是系统中注册用户的唯一的标识,不能重复,具有唯一性;而积分是衡量用户在本论坛活跃度的标志,积分可用于购买部分帖子阅读权限,积分的获得途径有:用户在本论坛上发表帖子、帖子被其他用户关注、评论别人的帖子、管理员将用户帖子设置为精华帖等。 2、管理员实体 管理员所涉及的权限:是否允许编辑用户、是否允许审核用户、是否允许禁止用户发言、是否允许禁止用户访问,是否允许编辑帖子、是否允许屏蔽帖子、是否允许审核帖子、是否允许删除帖子、是否允许查看管理日志、是否允许关闭版块、是否允许新增版块、是否允许编辑版块等。 管理员的来源是用户注册,积分到达一定值,通过前台提交管理员申请,经过后台超级管理员批准同意后便成为管理员。因此管理员拥有注册用户所具有的基本属性外,还会包含以下几个属性:申请理由,申请状态、管理权限。 3、版块实体 版块包含的属性有:版块名称、关键词、描述、显示状态、显示顺序、贴子数量、图标。 4、帖子实体 帖子包含的属性有:所属版块、标题、发布时间、内容、发帖人、是否通过审核、帖子状态、是否评论。 5、日志 用户登录日志的属性有:登录UserId、登录UserName、UserIP和登录时间。用户行为日志包含的属性有:用户ID、用户名、类型、触发事件、时间。获得或使用积分引起的日志变化,其属性有:规则积分、积分值、版块ID、时间。第四章系统实现与测试4.1系统开发环境PHP技术中文名称:超文本预处理器,是一种通用的开源脚本语言[2]。PHP语法吸收了C语言、Java语言和Perl语言的特点后,创出属于自己的语言特点,其易于学习,被广泛使用,主要适用于网页上的开发。与CGI或Perl相比它能更快地执行动态web页面。PHP做出的动态页面是将PHP程序嵌入到HTML文档中去执行,与其他的编程语言中完全生成HTML标记的CGI相比,这种执行效率会高出许多。它还可以执行编译后的代码,这些代码可以被加密和优化,以便更快地运行。PHP支持跨平台使用,可同时运行在Linux、UNIX、Windows或者Mac上;它还支持多种数据库,例如MySQL、Oracle、ODBC、SQLServer等。 MySQL数据库 MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem:关系数据库管理系统)应用软件之一,由瑞典MySQLAB公司开发,目前属于Oracle公司[3]。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性[6]。MySQL数据库是一个开源的,能处理拥上千万条数据的大型数据库,它使用的数据语言形式是标准的SQL语言形式。MySQL数据库是现在中小型企业乃至大企业的常见选择,因为它容易操作,简单,小巧且免费。MySQL在对PHP的支持上也非常完美,同时PHP又是目前最流行的Web开发语言,因此我选择MySQL和PHP开发本系统。WAMP开发环境构建系统开发环境,互联网发布环境下常用的开发环境是LAMP组合,即Linux、Apache、MySQL和PHP。但是通常我们在开发的时候,常用的组合是WAMP,即把Linux换成Windows,环境的配置步骤如下:1、Windows操作系统(如果没有需要安装)2、安装

MySQL数据库

3、下载并解压缩

Apache

服务器

4、下载并解压缩

PHP

语言为Apache和PHP添加环境变量:1、右键我的电脑->属性->高级系统设置->高级->环境变量

在用户变量Path中分别编辑新建

D:\PHP\Apache\Apache24\bin

D:\PHP\PHP7两个变量。

配置php(php.ini,如果没有这个文件,将php.ini-development复制一份为php.ini),修改内容:date.timezone=PRCextension_dir="D:/PHP/PHP7/ext"

2、配置Apache(conf/httpd.conf),修改内容:Listen8888

ServerRoot"D:/PHP/Apache24"

DocumentRoot"D:/website"

DirectoryIndexindex.htmlindex.php1#整合php,需要添加:PHPIniDir"D:/PHP/php7"

LoadModulephp7_module"D:/PHP/php7/php7apache2_4.dll"

AddHandlerapplication/x-httpd-php.php

AddTypeapplication/x-httpd-php.php.html1开启php的扩展支持:

设置

extension_dir:

extension_dir="F:/PHP/php7/ext"

将相关的插件的注释去掉,或者新增加插件的语句:

extension=php_pdo_mysql.dll

extension=php_redis.dll4.2系统功能实现 系统实现上,我们先设计出程序界面开发的流程图,在流程图的基础上,实现代码逻辑,从而实现整个网站的开发,BBS前端整体流程图,如图4-1:图4-1BBS前端整体流程图系统开发的模块的实现及相关页面介绍如下:用户模块实现输入BBS论坛首页网址,论坛系统首页页面如图4-2所示。图4-2登陆后论坛系统首页页面 如果是已经注册过的论坛用户,可直接点击右上方登陆按钮进入论坛登陆页面,输入用户名、密码和验证码,便可登陆。验证码由PHP随机生成的字符串,存放在session中,当用户提交信息时,程序就会提取session中字符串和用户输入的验证码的字符串进行比较,错误会弹出错误信息,登陆失败。论坛登陆页面如图4-3所示。图4-3论坛登陆页面如果是未注册过的用户要注册成为论坛会员,可在首页点击注册按钮进入注册页面,注册是用户名在论坛中是唯一的,不允许重复。当用户输入完用户名时,程序会通过AJAX技术去验证该用户名是否存在,并将结果提示给用户,如果存在,必须修改才能完成注册。此方法可减少用户提交时等待时间同时不影响用户填写其他的选项。论坛注册页面如图4-4所示。图4-4论坛注册页面论坛普通用户登陆后,可在个人中心对个人信息进行编辑,如图4-5所示。(line_name,line_xingcheng,line_anpai,line_shuoming,line_baojia,add_date,line_price,line_pic,line_picname,line_type)values(@line_name,@line_xingcheng,@line_anpai,@line_shuoming,@line_baojia,@add_date,@line_price,@line_pic,@line_picname,@line_type)";cmd.Connection=con;SqlParameterpara=newSqlParameter("@line_name",SqlDbType.VarChar);cmd.Parameters.Add(para);//写入数据库para.Value=line_name;para=newSqlParameter("@line_xingcheng",SqlDbType.NText);cmd.Parameters.Add(para);para.Value=line_direction;para=newSqlParameter("@line_anpai",SqlDbType.NText);cmd.Parameters.Add(para);para.Value=line_anpai;para=newSqlParameter("@line_shuoming",SqlDbType.NText);cmd.Parameters.Add(para);para.Value=line_memory;para=newSqlParameter("@add_date",SqlDbType.DateTime,8);cmd.Parameters.Add(para);para.Value=line_date;para=newSqlParameter("@line_price",SqlDbType.VarChar,50);cmd.Parameters.Add(para);para.Value=line_price;图4-5个人信息编辑页面2、版块与帖子模块实现 版块页面会统计当前版块下主题数,帖子数,当点击其中的某一个版块时,进入帖子列表页。版块列表页面如图4-6所示。图4-6版块列表页帖子列表如图4-7所示。图4-7帖子列表页 登陆的用户,可以在帖子列表页点击“发表新帖”按钮,发布帖子。也可以点击列表中某个帖子进行查看,在帖子下方的回复区对帖子进行回复。发帖页面如图4-8所示。图4-8发帖页面 发帖页面编辑时,可实时统计帖子的字数。验证码用来预防用户重复提交数据。用户还可以将自己编写帖子,暂时存于草稿箱,下次直接从草稿箱,继续编辑之前的帖子。 登陆的用户,看到他感兴趣的帖子或版块,可以点击收藏。在个人中心可以看到我的收藏列表,如图4-10。图4-10我的收藏列表页面3、管理员模块实现 管理员模块主要实现系统参数设置和用户管理等功能,系统参数设置页面,如图4-11所示。图4-11系统参数设置页面 管理员对用户的管理,包括审核用户的信息、删除和审核等功能的实现,页面如图4-12所示。图4-12用户管理页面 管理员在后台新增用户的实现页面,如图4-13所示。图4-13管理员添加用户4.3测试 系统开发的过程中,不可避免的会出现各种各样的问题,人们也开始越来越重视测试,测试也逐渐成为系统开发中的重要环节。随着系统开发功能的增大、复杂程度的增加,测试的重要性也更加凸显,测试难度也会随之加大。因而,为了尽可能的找出程序中的问题与错误,让系统更好的满足需求,产出高质量的程序系统,加强对测试工作和测试方法就显得尤为重要。本系统采用两种方案进行测试:单元测试和测试用例。单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确,通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为[13]。它是由程序员来编写,用来初步验证代码是否正确,程序员在书写单元测试的同时,会加深自己对代码的理解,提升自己的逻辑思维。单元测试可以提升代码质量,降低错误的频率,快速定位问题。单元测试能让你的代码编写任务完成得更轻松,通过执行单元测试的优化,代码设计会变得更好,从而减少在调试上消耗的精力,可以更加放心地修改、重构。 测试用例(TestCase)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求[13]。当我们使用这个方法进行测试的时候,在整理的过程中我们更容易理清思路,防止遗漏;减少重复性测试同一个模块的行为;方便掌握测试的进度。在系统测试时,针对各个模块的功能性需求分析中的功能,对各个模块功能执行了测试,整理了测试过程中的系统所存在的错误和不符合需求的地方。本系统依据测试用例,进行多次测试修改后,最终通过测试,如表4-1所示。表4-1论坛系统测试用例第五章结束语随着毕业时间的临近,历时几个月的毕业设计,在指导教师赵旭霞赵老师的指导下终于完成,从系统最初的需求,分析,设计,到最后的实现。经过多次的修改,功能逐渐完善,达到预期的目标,一次从无到有的过程,遇

温馨提示

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

评论

0/150

提交评论