BBS开发文档.doc_第1页
BBS开发文档.doc_第2页
BBS开发文档.doc_第3页
BBS开发文档.doc_第4页
BBS开发文档.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

本科生课程实习课程名称Web开发技术课程实习课程编号j1620108学号学生姓名所在专业计算机科学与技术所在班级指导教师成绩教师签字课程实习时间:2012年5月14日 至 5月18日评语:目 录1、开发背景22、需求分析23、系统设计23.1、系统目标23.2、系统功能结构23.3、系统浏览33.4、业务流程图73.5、程序运行环境74、数据库设计74.1、数据库概要说明74.2、数据库概念设计74.3、数据库逻辑结构设计104.4、文件夹组织结构115、公共类设计125.1、数据库公共类125.2、编码转换公共类146、登录模块146.1、登录模块概述146.2、登录模块技术分析157、注册模块157.1、注册模块概述157.2、注册模块的实现158、论坛的主页面设计178.1、论坛主页面概述178.2、论坛主页面的实现189、主题显示模块209.1、主题显示模块概述209.2、主题显示模块的设计2010、主题内容显示与回复内容显示2210.1、设计概念2210.2、主题内容显示和回复内容显示设计过程2211、主题回复2311.1、主题回复模块概述2311.2、主题回复模块的设计2412、发表新主题2412.1、发表新主题模块概述2412.2、新主题模块设计2513、后台设计2613.1、后台模块的概述2613.2、后台模块的设计2614、总结281、开发背景 在当今网络的时代,人与人之间的交流从原来的面对面交流,慢慢地借助于现代计算机软件技术和网络技术演变成一种远程的,存在于网络上的交流,这种远程交流其中一种方式是通过使用BBS论坛进行的,有了这样的交流,人与人之间的知识文化就可以很快地进行传播2、需求分析BBS系统主要的功能是讨论各种话题的交流中心。需要有各种不同话题的板块。需要为用户分等级,版主(拥有删除该板块中帖子的能力)、普通用户(拥有发帖和浏览不同板块的帖子的功能)、管理员(拥有新建板块,删除板块和删除用户等一些列后台管理功能)3、系统设计3.1、系统目标根据需求分析的要求,制定了BBS系统目标如下:1、 系统界面友好、美观2、 划分用户级别,将不同的权限划分给不同的人群3、 合理管理论坛相关信息4、 易于维护和扩展5、 系统运行稳定可靠3.2、系统功能结构本BBS系统是一个典型的Java Web程序,由系统的前台和后台管理两部分组成1、 系统前台系统前台模块提供给所有用户使用,用户包括注册用户和普通游客,两者所拥有的功能不同。系统前台主要包括用户登录、用户注册、发表主题、论坛浏览、主题浏览等功能模块图3.2.12、 系统后台后台管理主要由管理员使用,可对论坛中相关信息进行管理维护。普通用户无权使用。后台管理功能主要包括用户管理、板块管理、帖子管理、回复管理等。图、系统浏览BBS论坛主页,主要内容是导航条、用户登录、用户注册、板块信息。用户可以通过论坛主页获得相应的信息。图3.3.1(论坛主页)用户登录界面在主页面的上方(用户可以通过登录界面登录论坛,登录论坛后可以发帖,否则只能浏览帖子内容,不能回复和发帖)图3.3.2(用户登录界面)图3.3.3(登录后的界面)游客通过用户注册页面注册为论坛用户图3.3.4(注册页面)板块里的主题(帖子)图3.3.5(板块主题)主题内容和回复信息图3.3.6快速回复,在每个主题的最下方图3.3.7后台管理页面(管理板块信息、用户信息、主题信息)图、业务流程图3.5、程序运行环境1、系统开发平台:MyEclipse92、系统开发语言:JSP3、数据库管理系统软件:Microsoft SQL Server 20054、运行环境:Windows 74、数据库设计在开发应用程序时,对数据库的操作是必不可少的,数据库设计是根据程序的需求及其实现功能所制定的,数据库设计的合理性将直接影响到程序的开发过程。 4.1、数据库概要说明本系统采用SQL Server 2005数据库,相对于Oracle等大型数据库来讲,SQL Server2005更加适合中小型系统,再者由于对SQL Server2005比较熟悉,因此选用了SQL Server2005作为数据库软件。4.2、数据库概念设计根据本系统的需求分析、流程设计及功能结构的确定,每个功能模块可以抽象出一个或多个实体对象,例如用户、论坛版块、主题、回复主题等实体对象。这些实体对象彼此相互联系,并且最终创建成数据库表结构。1、 用户实体对象用户实体包括用户编号、用户名、用户等级、用户头像等用户相关属性。用户编号是识别用户实体的唯一编号,也就是数据表的主键,它的数据类型为int型,并具有自增的特性;用户级别属性是标明用户在本系统中的功能权限;其他属性都是描述用户相关信息的属性。图4.2.12、 论坛版块实体对象论坛版块实体对象包括论坛版块编号、论坛名称、版主、创建时间等相关属性。版块实体对象中的板块编号属性与用户实体对象中的用户编号属性类型相同。都是具有自增的特性,板块实体的其他对象都是描述板块的相关信息的属性。图4.2.23、 主题实体对象 主题实体包括主题编号、主题标题、主题内容、主题作者、提价时间、论坛板块编号(外键)、论坛板块名称(外键)、人气等相关属性。主题编号属性类型为int型,并具有自增特性;论坛板块编号标明此主题发表在哪个论坛板块中,人气属性用来记录主题的被访问信息。图4.2.34、 回复主题实体对象回复主题实体包括回复编号、回复标题、回复内容、回复时间、回复作者、主题编号、主题标题等相关回复属性。回复编号属性类型为int型,并具有自增特性。主体编号和主题标题是外键。图4.2.45、 各个表之间的关系图、数据库逻辑结构设计根据上面设计好的E-R图,可以在数据库中创建相应的数据表,BBS系统中各数据表的结构如下:1、 tb_user(用户表)表tb_user用于保存注册用户的信息用户表(tb_user)字段名数据类型主键描述usernamevarchar(20)否用户名passwordvarchar(20)否用户密码sexvarchar(20)否性别emailvarchar(50)否邮箱qqvarchar(20)否qq号signaturevarchar(300)否个性签名gradevarchar(20)否用户等级lxdzvarchar(50)否联系地址txvarchar(50)否头像grzyvarchar(50)否个人主页realnamevarchar(30)否真名idint是用户编号图4.3.12、 tb_forum(板块表)表tb_forum用于保存论坛板块信息版块表(tb_forum)字段名数据类型主键描述idint是版块号forumnamevarchar(20)否版块名managervarchar(100)否版块管理员createtimedatetime否版块创建时间图4.3.23、 tb_topic(主题表)表tb_topic保存主题信息,其中forumid为板块号,通过检索板块号,可以获得该板块下相应的主题。因此版块号为外键。主题表(tb_topic)字段名数据类型主键描述idint是主题号contenttext否主题内容authorvarchar(20)否作者submittimedatetime否主题提交时间forumidint否所属版块号titlevarchar(300)否题目xqvarchar(30)否心情rqint否人气forumnamevarchar(20)否所属版块名图4.3.34、 tb_response(回复表)表tb_response用于保存回复信息,其中topicid为主题号,通过检索主题号可以获得该主题相对应的回复信息,主题好为外键回复表(tb_response)字段名数据类型主键描述idInt是回复编号titlevarchar(300)否题目contenttext否内容authorvarchar(20)否作者submittimetimestamp否提交时间topicidint否主题号topicnamevarchar(100)否主题名xqvarchar(20)否心情图、文件夹组织结构每个项目都会有相应的文件夹组织结构。当项目文件过多时,会划分相应的包来存放文件。其中javabean包放javabean,servlet包放servlet,tag包放自定义标签,util放一些通用工具方法,如数据库连接、编码转换等。图4.4.15、公共类设计 在开放应用程序时,可以将数据库等相关操作封装在自定义类中,以便于在开发程序时调用,这样,可以提高代码的重用性。本系统创建了DB类、HandleString类等公共类5.1、数据库公共类本系统采用SQL Server2005数据库,系统通过数据源来连接数据库。创建数据库时应该在系统上创建数据源(创建数据源的方法详见百度)。DB类为数据库类,它里面封装了数据库操作的常用方法、如数据的插入、数据的更新、事务等一些列常用方法。DB类的构造函数负责加载Java提供的数据库连接驱动,并且与数据库连接每次调用DB类时都会与数据库相连。而每次调用完数据库时应该释放连接和结果集对象,因此需要一个close方法DB类还应该有SQL语句的执行等方法除了数据库正常的连接、释放、执行SQL方法外,还有数据库所对应的执行方法。在这里就不一一列出,DB类的详细方法可以浏览该类的源代码。5.2、编码转换公共类本系统是一个Java Web程序,很多不同的页面与数据库的操作都需要通过转码才能正确显示。因此,有必要建立一个编码转码的公共类。通过这个方法能把gb2312的编码转为正确,不会出现乱码。但是还考虑到以后的拓展性,页面可能采用的是UTF-8的编码,这里上述的方法就不适用,因此在转码类中还定义了其他方法,以为以后的拓展左准备。6、登录模块6.1、登录模块概述登录模块嵌套在主页面上,用户通过登录模块登录论坛。只要用户输入正确的用户名和密码就能通过登录按钮进行登录。图、登录模块技术分析由于本次设计我采用的是MVC模式,因此有视图、模型和控制三个层次,其中视图就是图6.1.1所示。而模型就是在javabean包中Login.java它里面的成员包含了用户的所有信息,当然登录并不需要用到里面的所有成员,只需要用到用户名和密码这两项就可以了。而servlet就是负责处理用户名和密码是否存在数据库,如果存在就允许登录,如果不是的话就提示登录失败。1、 在视图中获取用户名和密码   用户名: 密码: 2、 获取用户名和密码后,把这两项内容提交到servlet中,然后在servlet中连接数据库,把用户名和密码与数据库进行select。最后把结果放到一个session中。最后跳转页面。(代码略)3、 跳转页面显示是否登录成功(视图jsp页面代码略)7、注册模块7.1、注册模块概述用户通过注册模块进行注册注册模块在图3.3.4中7.2、注册模块的实现本系统一致采用MVC模式。注册页面是视图、Servlet为控制器、JavaBean为模型。用户通过在注册页面填写注册信息。通过提交后,信息被提交到Servlet中。然后通过Servlet写入数据库中。最后跳转页面返回信息。Servlet核心代码:try con = DriverManager.getConnection(uri, sa, 709394);if (boo) String insertUser = insert into tb_user(username,password,sex,email,qq,signature,grade,lxdz,tx,grzy,realname)+ values(?,?,?,?,?,?,?,?,?,?,?);pre = con.prepareStatement(insertUser);pre.setString(1, username);pre.setString(2, password);pre.setString(3, sex);pre.setString(4, email);pre.setString(5, qq);pre.setString(6, signature);pre.setString(7, grade.trim();pre.setString(8, lxdz);pre.setString(9, tx);pre.setString(10, grzy);pre.setString(11, realname);int m = pre.executeUpdate();if (m != 0) backNews = 注册成功;reg.setBackNews(backNews); else backNews = 信息填写不完整,请填写带星号的信息;reg.setBackNews(backNews);con.close(); catch (SQLException exp) backNews = 该会员名已被使用,请更换名字 + exp;reg.setBackNews(backNews);String register = register;session.setAttribute(changeMes, backNews);session.setAttribute(reg, register);RequestDispatcher dispatcher = request.getRequestDispatcher(showCBMes.jsp);dispatcher.forward(request, response);8、论坛的主页面设计8.1、论坛主页面概述论坛主页面包括3部分,第一部分是导航条、第二部分是用户登录与注册、第三部分是论坛板块的显示。其中论坛主页有两个页面,一个是用户登录前的页面,一个是用户登录后的页面(两个页面的主要区别是导航条游客一栏变回该登录的用户名、用户登陆框和注册按钮消失,其他的不变)图8.1.1为登录前的页面、图8.1.2为登录后的页面图8.1.1图、论坛主页面的实现论坛主页面的JSP代码(部分),它通过判断用户是否登录,登录的话打开afterlogin.jsp这个页面,否者的话打开beforelogin.jsp这个页面登录前页面beforelogin.jsp与afterlogin.jsp的结构大致相同,不同的是用户登录注册模块,登录前页面有用户登录模块,而登录后页面没有用户登录模块。除此以外,两者的结构都有论坛板块显示DisplayTag,java文件(这个文件是自定应标签)。这个标签文件用于显示论坛板块的详细信息。Beforelogin.jsp的代码(部分)用户登录与注册:   用户名: 密码: 注册采用的是图片热点跳转:调用自定义标签:自定义标签DisplayTag.java部分代码:try List l = new ArrayList();if (session.getAttribute(list) != null) l = (List) session.getAttribute(list);for (int i = 0; i l.size(); i+) Forum forumBean = (Forum) l.get(i);out.println();out.println();out.println();out.println();out.println();out.println(+ + forumBean.getForumname()+ );out.println(afterlogin.jsp页面也beforelogin.jsp页面大致相同,除了没有用户登录模块以外。9、主题显示模块9.1、主题显示模块概述主题显示模块同样使用了自定义标签来设计。通过点击论坛板块,把论坛板块的id号,传到servlet中,通过servlet处理,把获得的内容存放到javabean中,然后通过跳转到主题显示模块,把获得的内容通过一定的方式显示在页面上。图、主题显示模块的设计调用自定义标签DisplayTopic.java文件显示DisplayTopic.java(代码)public class DisplayTopic extends TagSupport public int doEndTag() throws JspException JspWriter out = pageContext.getOut();HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();HttpSession session = pageContext.getSession();HandleString s = new HandleString();try if (session.getAttribute(List) != null) List l = (List) session.getAttribute(List);for (int i = 0; i l.size(); i+) Topic t = (Topic) l.get(i);out.println();out.println();out.println();out.println( );out.println();out.println(+ (t.getTitle() + );out.println(+ t.getAuthor() + );out.println(+ t.getReCount() + / + t.getRq() + );out.println(+ t.getSubmittime() + );out.println();out.println();out.println();out.println(); catch (Exception e) e.printStackTrace();return super.doEndTag(); 10、主题内容显示与回复内容显示10.1、设计概念同样通过自定义标签来显示主题内容和回复内容。DisplayResponse.java为自定义标签。图、主题内容显示和回复内容显示设计过程DisplayResponse.java自定义标签的设计和上述论坛板块的自定义标签的设计方法大致相同。不同的是页面的布局和内容的不同。代码不详细放出。HandleResponse.java是负责获取主题的信息和回复信息,并且把这些显示反馈给视图(即这里的自定义标签DisplayResponse.java,负责显示主题内容和回复内容的Jsp页面嵌套了DisplayResponse.java这个自定义标签)HandleResponse.java部分代码:/ 获取发表人的发表内容和信息Topic topicBean = new Topic();try List listContent = topicBean.getRecordTopic(String) session.getAttribute(topicId);session.setAttribute(listContent, listContent);List listAuthor = topicBean.getTopicAuthorInfo(String) session.getAttribute(topicId);session.setAttribute(listAuthor, listAuthor); catch (SQLException e1) e1.printStackTrace();/ 获取回复人回复内容和信息Topic topicBean2 = new Topic();try List listResponse = topicBean2.getRecordResponse(String) session.getAttribute(topicId);session.setAttribute(listResponse, listResponse); catch (SQLException e) e.printStackTrace();11、主题回复11.1、主题回复模块概述主题回复模块放在主题内容显现的最下方。主题的回复用户必须要先登录才能回复。图、主题回复模块的设计通过回复按钮,把回复得内容提交到主题回复的servlet中,然后通过servlet把内容存放到数据库中。最后再次跳转到主题内容显示这个页面,把最新的回复信息显示到视图上。Servlet部分代码:try /快速回复不用tilteString resTitle = response;m = topicBean.InsertDataResponse(resTitle, content, xq, author, topicId, topicName);if (m = 1) try RequestDispatcher dispatcher = request.getRequestDispatcher(responseList);dispatcher.forward(request, response); catch (Exception ex) ex.printStackTrace(); catch(Exception e) e.printStackTrace();12、发表新主题12.1、发表新主题模块概述发表新主题和回复模块的设计大致相同。图12.1.1通过在视图上输入新主题的信息,然后通过提交到servlet中并把信息存放到数据库中,最后跳转到主题显示页面,把新主题显示出来。12.2、新主题模块设计新主题模块的设计与回复模块大致相同。新主题模块的servlet部分代码:Topic topicBean = new Topic();int i = 0;try i = topicBean.InsertData(title, content, xq, author, forumId,forumName); catch (Exception e) e.printStackTrace();if (i = 1) try List l = topicBean.search(0, forumId);session.setAttribute(List, l);RequestDispatcher dispatcher = request.getRequestDispatcher(topi

温馨提示

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

评论

0/150

提交评论