公文素材库 首页

BBS论坛开发经验总结

时间:2019-05-29 07:18:05 网站:公文素材库

BBS论坛开发经验总结

BBS论坛开发经验总结

1引言

1.1编写目的

总结完成本项目所获得的经验和不足,为我们以后的开发项目和进一步的学习提供了良好的素材。本文档的编写目的是:详细定义的总体功能,详细说明系统功能,划分程序基本结构,各程序名称和功能,以便于系统详细设计和编程。

1.2背景

现实生活中的交流存在时间和空间上的局限性,交流人群范围狭小以及间断的交流不能保证信息的准确性和可取性。因此,用户需要通过网上论坛的交流扩大交流面,同时可以从多方面获得自己所需要的最及时的信息。论坛又叫BBS,全称是BulletinBoardSystem,中文意思是“电子公告板”,它是Internet上的一种交互性极强的、网友喜闻乐见的电子信息服务系统。它为网民提供一块公共的电子白板,每个用户都可以在上面书写、发布自己的信息或提不同的意见,以便与其他用户进行交流和讨论。所开发软件名称:BBS管理系统

论坛的名称:BBS管理系统项目类型:大学论坛

项目开发时间:201*年3月18号201*年6月15号

1.3定义

游客

所有访问论坛,尚未登录的人。会员

申请注册并提交成功的人。版主

具有发布版块公告,管理版内帖子,删除帖子/跟帖的权利。系统管理员

具有宣布论坛开放/关闭注册,帖子的批量删除,版块管理,用户管理权利的总版主。用户

此“用户”泛指所有的会员和游客。管理人员

此“管理人员”泛指版主和系统管理员。注册

游客访问论坛按系统规则申请注册。登录

会员按系统规则登录论坛。退出

已登录用户退出登录状态。浏览主题

游客及登录的用户通过此业务按系统规则浏览论坛上各版块的主题

用户(包括所有会员或游客)通过此操作可以浏览自身权限许可范围内的论坛的板块列表,主题列表,以及每一个主题。发布主题

会员通过此业务按系统规则进行主题的发布。回复主题

会员/游客通过此业务按系统规则进行主题的回复。修改个人资料

会员通过此业务按系统规则修改自已在注册新用户时所填写的个人资料或是已经通过此业务修改过的个人资料。管理版内帖子

版主通过此业务按系统规则在自已管理的版块内对帖子进行锁定,解锁,置顶,取消置顶,加为精华,解除精华,删除帖子等操作。删除帖子

管理人员通过此业务按系统规则在自已权限内对不良帖子进行删除操作。禁用会员

管理人员通过此业务按论坛的规则对于屡次违反规定且拒不改悔的一般会员进行禁用操作,禁用后该用户无法正常登录。查询主题

会员和管理人员通过此业务按关键字对帖子进行查找。帖子的批量删除

管理人员通过此业务按系统规则对于不符合规定的帖子进行批量的删除或者对于发错版块的帖子进行转移等操作。版块管理

系统管理员通过此业务按系统规则对版块/版主进行管理(版主审核,更换),如版块的增加,重新命名,删除,关闭等操作。

1.4参考资料

《软件工程导论》

《BBS开发指南》

《BBS系统概要设计说明书》

2实际开发结果

2.1产品

最终制成的产品是:BBS网站。

该基于Web开发的网站供四种用户使用:网页浏览者(即游客)、会员、版主、管理员。游客可以浏览帖子、回复帖子,但无权发帖,即不能进入add_article.aspx页。会员登录后可以浏览帖子内容,可以发帖、回复帖子。版主登录后,跳转至版主后台管理页面,版主可以删除帖子和删除回复。管理员登录后跳转至管理员后台管理界面,管理员有权管理版块、管理版主、管理公告板、管理用户和删除图片。2.2主要功能和性能

该BBS网站具有了一般BBS所有的功能,如用户注册、用户信息管理、发帖功能、帖子管理、主题词查询。

对照项目概要设计,“问卷调查”和“群组”功能没有实现,未完全达到原定的开发目标。

2.3基本流程

用图给出本程序系统的实际的基本的处理流程。网站总体架构图:

网站面向的用户:

2.4进度

实际进度与原定计划进度相比,实际进度延迟了。究其原因,是在项目实现阶段卡壳,代码编写能力有限,耽误时间太多。

3开发工作评价

3.1对技术方法的评价

用DreamWeaver制作静态网页,辅以Photoshop修改图片。数据库用的是SQLServer201*,对于一个小型网站已经足够用。开发环境是VisualStudio201*,用C#语言。

在制作静态网页时,用的是HTML语言和CSS搭建框架,用CSS的好处是可以将网页设计中的HTML代码和CSS代码分离开,一个CSS文件可以供多个网页链接使用,有效减少代码量。

在SQLServer201*中连接数据库时用“SQLServer身份验证”,帮数据库多加了一层保护。

在index.aspx页显示整个论坛版块信息时,用Repeater绑定数据,为了排版的美观,在标签之间添加,这样既利用了有序列表在横着排列数据时的优势,又结合了表格固定布局的方便,使整个网页的排版美观又人性化。3.4出错原因的分析

1.错误提示:

MicrosoftOLEDBProviderforODBCDrivers错误"80004005"

[Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序

/myforum/bbsconn.asp,行4

做检测昵称中的check.asp这个文件时,

,用了SSI,IE提示了这个错误!

这个错误提示是在刷新的三次才出来的,也就是说,如果IE不提示错误,注意多刷新几次,也许提示信息就出来了。2.错误提示:

ADODB.Recordset错误"800a0cc1"

项目在所需的名称或序数中未被发现。

/myforum/baychoice.asp,行47

这个错误的原因是:没有建立一个rs记录集.3错误提示:

这里面的%和>一定不能分开要写在一块,要不会出错的

4经验与教训

这次项目开发培养了我们在现有技术环境下的沟通信息、分工协作、自主创新的能力,经过一个学期的开发让我们学到了很多知识和技能是要结合的。而且,这次项目开发还培养了我们那种的面对问题时团结一致,积极向上的团队精神。设计的过程环环相扣,从分工到协作,从设计到运行,严格的团对项目开发模式让我们受益颇多。

在这个过程中教训也很多。要想更好完成项目设计任务,我们应该做好分工协作的工作,明确我们每一个项目设计流程中的职责和目标,这样才能更好的做到从分工到协作的跨越和融合,从而更好的完成项目开发的目标。经过这次项目开发,我们也认识到我们的自主设计开发能力还很欠缺,程序设计的知识很匮乏,代码编写能力的不足,这也为我们以后的学习和实践提供了方向和动力。相信,在这次项目开发的考验下,在已有的经验和教训的指导下,我们会更有动力去充实和完善自己项目开发的知识和技能,更有信心做好明天软件设计的工作。

扩展阅读:BBS论坛开发总结

BBS论坛开发总结

[前言:]

在201*年10月28日,16:24:15我开始开发BBS论坛。开始时准备把ATM系统用web开发出来,使用Struct技术。因为前期用了一个星期复习了Struct2。由于很久没用,很多技术都生疏了。要学好新的技术,还是要实践。看到我这里一个BBS系统用Struct1开发的,就想把它改成Struct2。正好复习学的Struct2。由于BBS论坛是在一个已经开发好的系统上修改的。界面原型都有,不用担心界面的美观问题。今天是201*-11-14完成这个作品。记下这个开发中学到的东西。[正文:]系统分为前台功能和后台管理。(第一次用VISO画系统结构图,有点不清楚。)

BBS系统前台功能后台管理用户登入用户注册发帖浏览帖回帖栏目管理专区管理回帖管理用户管理

[代码分析:]

首页index.jsp。下图是首页的组成图:

用户已登入top2.jsp首页欢迎用户没有登入top.jsp首页Inde.jsp标签论坛专区信息底部,论坛开发商信息footer.jsp

页面头上的欢迎信息和页面底部的开发商信息在前台每个网页上都是一样的。所以后面不再介绍了。后面基本页面发生改都是在中间部分发生变化。

首页欢迎,使用JavaScript获取当前的时间,且每200ms更新一次。JavaScript代码如下:

functionclockon(bgclock){varnow=newDate();varyear=now.getYear();varmonth=now.getMonth();vardate=now.getDate();varday=now.getDay();varhour=now.getHours();varminu=now.getMinutes();varsec=now.getSeconds();varweek;month=month+1;if(month

顺序画的估计有错,这种UML的图很少画,要练练。用户登入信息请求通过表单发送的dologin.action。dologin.action。根据struts.xml配置文件跳转页面。

请求如下:

maxlength="20"/>

publicclassDoLoginextendsActionSupport{@OverridepublicStringexecute(){if(LoginDAO.login(login.getUsername(),ActionContext.getContext().getSession().put("name",login.getUsername());ActionContext.getContext().getSession().put("islogin",returnSUCCESS;ActionContext.getContext().getSession().put("islogin",this.addFieldError("userlogin","你输入的用户名或密码错误,privateLoginlogin=newLogin();login.getPassword())){1);}else{0);请重新输入");returnERROR;}publicvoidsetLogin(Loginlogin){}this.login=login;publicLogingetLogin(){}returnlogin;}}

struts.xml配置如下:

index.jspindex.jsp

这是使用struts2最基本也是最经典的方式。后面的差不多是这种。

在写Index.jsp页面的时候还学到2点,1学会了使用标签。

2学会了如何从Struct栈中取值。怎么取的session中的值:代码如下:

3:自定义标签

发现了自定义标签的好处,使用自定义表情,可以很多需要在JSP页面写的代码都在标签文件中写好,这样就很好的把代码和标签分离。我想这也是struts2定义那么多标签的原因吧。

自定义标签的方法如下:DisplayTag.java标签文件

publicclassDisplayTagextendsTagSupport{out.println("");out.println("");if(i%2==0){}elseout.println("");out.println("");out.println("");out.println("科技公司出版的["+(f.getForumnname())+"]语言类专区");out.println(""+f.getCreatetime()+"");out.println("");out.println("");out.println("

1.01.2ApplicationTagLibrary-example-1.0ThistaglibrarycontainsfunctionalityfortheAddressbookStrutsSampleApplication.Withsmallmodifications,theycanbeusedasgenerictags.displaycom.bbs.struts.tl.DisplayTagempty论坛版块

在web.xml文件中配置

:8080/BBSStruct2/app.tld/WEB-INF/app.tld

用户注册register.jsp模式和index.jsp类似

不过在这里使用了和标签

首页上一页下一页尾页

后面的分页方式也基本如此。分页主要是控制了MySQL每次查询记录的条数。使用limt()

回帖:response.jsp

浏览帖子的回复和回帖显示在一个页面上。使用标签组合成一个页面。基本实现在当前页回复的显示,在当前的帖子能显示。使用了Struct+json+AJAX。

使用AJAX的异步交互,使用JSON显示返回的数据。DoResponse.jsp处理请求的代码如下:

publicclassDoResponseextendsActionSupport{}returnSUCCESS;privateResponserp=newResponse();privateStringresult;//返回的JSON数据publicStringexecute(){Stringname=(String)"name");ActionContext.getContext().getSession().get(rp.setAuthor(name);ResponseDAO.InsertResponseRecord(rp);Loginuser=null;try{}Mapmap=newHashMap();map.put("content",rp.getContent());map.put("xq",rp.getXq());map.put("author",rp.getAuthor());map.put("submittime",Time.getCurrentTime());if(name==null){}JSONObjectjo=JSONObject.fromObject(map);//构成JSON格式result=jo.toString();map.put("email","");map.put("tx","0.gif");map.put("qq","");map.put("email",user.getEmail());map.put("tx",user.getTx());map.put("qq",user.getOicq());user=LoginDAO.getRecordForUser(name);}catch(SQLExceptione){}else{AJAX的JavaScript函数如下:

functionsubm(){//提交请求vartitle=$("#title").val();varxq=getRadioBoxValue("xq");//获取单选按钮的值varcontent=$("#text").val();vartopicname=$("#topicname").val();vartopicid=$("#topicid").val();$.post("doResponse.action",{"rp.title":title,"rp.xq":xq,"rp.confunction(data){tent":content,"rp.topicname":topicname,"rp.topicid":topicid},varrs=eval(data);//包数据解析为json格式varrp2=rs.result;varrp=eval("("+rp2+")")//把数据解析为JSON格式$("#02").append(""+""+rp.email+""+valign="baseline">"+rp.qq+""+valign="baseline">"+rp.submittime+""+""+""+rp.content+""+"作者:"+rp.author+""+""+}functiongetRadioBoxValue(radioName){varobj=document.getElementsByName(radioName);//这个是以标签的name来取控件for(i=0;i

struct.xml中的配置如下:

后台管理adminindex.jsp

使用HTML的frameset。组成管理页面。这是一种比较常用的方式。左边框架显示功能,右边框架显示主要内容。但是存在一个很大的问题。Struct2的struct.xml不支持HTMl的框架。页面请求的信息如果直接跳转Frameset的框架页面里面的子页面接收不到参数,

如果直接跳转到子页面页面就没有那个效果,如何解决这个问题呢?看了网上不少解决方法,发现只有一种解决方法,就是把需要传送的变量存在Session里面。

个人觉得存在把值存在session中是一种非常浪费服务器资源的。特别如果要显示的数据是批量的数据,是ArrayList,更是非常浪费资源。而且ArrayList也不能存在cookie里面。

所以在这时我放弃了Struct2很多遍历。

栏目管理:main.jsp

因为main.jsp的版块少。所以这里我没有做分页处理。

但是这样也有一个亮点点击弹出对话框。基本实现原理是,在页面载入的是时候将某层影藏,在点击某按钮或超链接触发事件的时候显示。主要通过CSS+div+JavaScriptdiv源码如下:初始时隐藏状态。

论坛名称:版主:保存

JavaScript代码如下:

撤销varObj=""document.onmouseup=MUpdocument.onmousemove=MMovefunctionMDown(Object){Obj=Object.id;document.all(Obj).setCapture();pX=event.x-document.all(Obj).style.pixelLeft;pY=event.y-document.all(Obj).style.pixelTop;}functionMMove(){if(Obj!=""){document.all(Obj).style.left=event.x-pX;document.all(Obj).style.top=event.y-pY;}}functionMUp(){if(Obj!=""){

修改和提交的形式使用的是Struct经典模式,不再介绍。

document.all(Obj).releaseCapture();Obj="";}}//显示窗口的方法functionshowwin(){varwinNode=$("#massage_box");winNode.css("visibility","visible");}//隐藏窗口的方法functionhide(){varwinNode=$("#massage_box");winNode.css("visibility","hidden");}

专区管理:topicmanager.jsp

Struct2的struct.xml不支持HTMl的框架。我放弃了Struct2的优越性,在遍历显示版块主题的时候。我没有使用标签。而是自己开发了标签。开发方式已介绍。不再重复。

连分页操作都是在JSP页面直接写Java代码。有些违背MVC的意思,但是为了实习功能只能出此下策。代码如下:

首页上一页下一页尾页在后面的后台管理中分页基本是按照这种显示实现的。

回帖管理:responsetopic.jsp和topicList.jsp基本类似,不再介绍。用户管理:userManager.jsp有个特别之处,查找用户。

显示查找出来的会员不需要分页,更好的处理逻辑关系。查找用户还另外写了一个页面searchuser.jsp处理。

需注意的是:使用Strcut的方式提交在本页面显示。URL地址是XXX.action如果则会链接到XXX.action#中。调用不了本地JSP页面的JavaScript函数。(最后一天为了这个小问题纠结了很久。)

解决方法是:超链接直接提交。不通过AJAX异步提交了。代码如下:

删除

最后介绍下拦截其知识。在后台管理模块中。管理员所有的操作都比现在已经登入的条件下。所有配置拦截器很必要。

附上一个讲好的拦截器控制登入的struct.xml的配置

//配置拦截器//配置拦截器栈//保护默认拦截器//将配置的拦截器设置为默认拦截器//设置全局的结果。/index.jsp

[结束]:

以上是BBS论坛开发的全过程和主要学到和用到的知识点。主要是使用Struct+AJAX+JSON+CSS

通过这次的开发,开始明白了MVC模式的意义了。以后的代码会更多的注意MVC模式。更多的注意低耦合高内聚。依赖抽象。

BBS论坛比较简单。开发过程也比较简单。以后要养成这种总结的习惯。下一步Spring3.0+Struct2.0+Hribetate3.5+AJAX(Jquery)。

友情提示:本文中关于《BBS论坛开发经验总结》给出的范例仅供您参考拓展思维使用,BBS论坛开发经验总结:该篇文章建议您自主创作。

  来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


BBS论坛开发经验总结
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/673093.html
相关阅读
最近更新
推荐专题