美食论坛系统设计

(整期优先)网络出版时间:2019-05-15
/ 4
  引言

  随着网络的发展,论坛已经成为人们日常进行交流的一个不可或缺的空间。人们可以在论坛中谈论喜欢的话题、提出或解答疑问、发布通知和公告等。由于它独特的形式和强大的功能,受到广大网友的欢迎,并成为全世界计算机用户交流信息的园地。


  1.系统概述

    目前论坛为人们提供了一个交流空间,用户可以参与到自己的讨论话题中,浏览论坛中的帖子或者发表自己的看法。在论坛中非注册用户只可以浏览论坛中的帖子,不可以对帖子发表评论或发表新的论题;论坛的注册会员可以发布新的论题,并且可以自己的个人信息。

  1.1系统现状研究

  目前常见的论坛系统主要有两类:一类是利用Telnet软件登陆站点上,这种方式可以使用同时上站的用户数大大增加,每一个站点可以同时有200人上线,使多人之间的直接讨论成为可能;另一类就是现在许多用户更习惯的,基于web的论坛系统,用户只要连接到Internet上直接利用浏览器就可以进入论坛,阅读其他用户的发言,发表自己的意见。

  1.2系统开发方法

本系统讨论的是一个基于web的关于饮食的论坛系统。本系统需要综合应用数据库,javabean和jdbc等技术。

  2.可行性分析

  2.1系统总体目标

  本系统主要是为了给那些对饮食方面感兴趣的朋友提供一个交流的平台,对有话可说的朋友,你在这里可以进行注册成为会员,参与有关话题的讨论,或提出新的话题,还可以修改个人资料。非注册会员你可以浏览论坛里的帖子,获取对自己有用的信息。另外假如你对某些版块很赶兴趣,你还可以向管理员申请成为某一版块的斑竹,去管理本版块的帖子,对于那些不健康的帖子你可以把它们给删除掉。起到对论坛的维护作用。对于管理员拥有最高权限,可以授予别人为某个版块的斑竹等等。

  2.2技术可行性分析

    本论坛是基于web来开发的,主要运用JSP,JDBC,JavaBean等相关技术,以Access 为后台数据库、Tomcat5.5为应用服务器。这些应用软件(如JDK、tomcat5.5、eclipse、Macromedia Dreamweaver MX 2004等都可以在网络上免费下载得来),并且这些软件都是些最常用的网页开发工具,都能够快和好的掌握,并且也学了有关网页开发的课程,所以一些最常用的技术能够比较好的实现,所以对于本系统在技术上是可以达到的。
  3.需求分析

  经过以上对系统的调研及可行性分析后,下面对系统在功能上和性能上进行进一步的需求分析。

  3.1功能需求

    本系统应该具有信息浏览、信息发布、信息回复、编辑、删除帖子、用户注册、用户管理、个人信息修改、查看个人信息等功能。

  3.2性能需求

  设备需求:PC机,Windows98/2000/xp操作系统,PII以上,64MB RAM。服务器、采用Access数据库管理。

  4.系统设计

  4.1功能模块结构图

 SHAPE \* MERGEFORMAT

1618181363.gif

(功能模块结构图)


  4.2功能模块描述

  根据权限的不同,用户的操作范围也不相同,系统管理员可以维护此版块的所有帖子的相关信息;注册用户可以发布新帖子、回复帖子、编辑自己发的帖子和浏览版块中的所以帖子;而非注册用户只有浏览帖子的权限。

  (1)登陆模块

  根据用户输入的拥护名和密码,与数据库中进行匹配,验证账号和密码。

  (2)注册模块

  注册新的用户,根据提示填写你的相关信息,再提交到数据库,进行检查,如果已经有此用户名就要重新命名。

  (3)信息修改

  可以进行修改你的个人信息。

  (4)浏览帖子

  用户可以在此浏览帖子的主题信息。通过单击主题信息的连接,可以进入此贴的主题的内容和浏览此贴的详细内容。

  (5)发布帖子

  匿名用户不可以使用此部分的功能,只有注册用户才可以在此模块中发布一个新的主题信息。

  (6)回复帖子

  此部分也需要由注册用户使用。用户可以在此部分对一个贴子的信息进行回复。

  (7)编辑帖子

  注册用户可以对自己所发的帖子进行编辑。
  4.3数据库设计

  此实例中使用Access数据库,通过JDBC-ODBC桥进行数库连接,例如此数据库名为fourm.mdb,该系统中需要建立,存放相关信息。

  (1)首先创建user表,在此表里存储了包括所有用户的注册信息。

userid

文本

name

文本

password

文本

sex

文本

age

文本

phone

文本

email

文本

address

文本

rank

数字

pubnum

数字

face

文本


(2)然后创建article表,此表记录了论坛中的所有版块的所有信息

id

自动编号

authorID

数字

title

文本

content

备注

boardID

数字

reID

数字

reNum

数字

pubtime

日期/时间

feel

文本

excellent

是/否


  4.4  详细设计

  4.4.1登陆模块设计

    用户登陆模块主要根据用户登陆信息,与数据库信息成功匹配后,获得其相应的操作权限。

    打开网页,等待用户输入帐号、密码、判断用户输入信息,与后台数据库是否匹配,若不匹配,则刷新页面,等待用户重新输入。


  4.4.2用户注册模块设计

  单击登陆页面下方的“注册新用户”将进入注册页面。根据注册相关选项填写所要求填写的信息。其中会进行用户名长度和密码长度验证。如果不符合条件得从新输入。

  4.4.3用户信息修改设计

  当进入系统后,你可以单击“修改个人信息”,进行相关信息的修改。

  4.4.4浏览帖子模块设计

  当单击论坛某个版块连接时,即可以在打开的页面看到该版块帖子的主题列表,在列表中列出了帖子的作者、回复数量、浏览数量和最后恢复的时间。

  4.4.5发布帖子模块设计

  论坛作为一种信息交流的工具,少不了要发表文章,其页面和一般的表单提交差不多,只是增加了一些功能而已。为了用户的方便,在设计时有两个地方可以实现对帖子的发表,一个是在浏览帖子主题列表页面中;另一个是在浏览帖子内容页面中,但这两个所指向的连接是同一个页面。在发表帖子时,将通过JavaBean 取得帖子数量,并保存到数据库中。

  4.4.6回复帖子模块设计

  回复帖子也是在post.jsp页面完成的。回复帖子都会在原文标题前加上“re”作为帖子标题,对帖子的回复需要获得帖子的主题id,一个帖子id 可能有零个或多个回复,这个主题id提交也是在连接中动态生成。


  4.4.7编辑帖子模块设计

  如果用户需要修改自己发表的帖子,或者对帖子不满意,那么你可以对帖子进行相应的修改。在浏览帖子页面单击“编辑”连接,既可进入编辑页面,在此可以对标题、内容和图表等信息进行修改,编辑帖子页面。

  5.系统的组成和实现

  在本系统中,版块越多,帖子数量越大,就越能吸引人气,所以,论坛都会分为多个模块,在每个版块中发表相应的帖子,而本文将着重介绍论坛帖子的相应操作及管理这一部分,包括浏览帖子,发表帖子,回复帖子,编辑帖子,删除帖子等操作,而具有不同权限的用户可以进行不同的操作非注册用户只能浏览帖子。注册拥护可以发表帖子、回复帖子、可以管理自己所发表的帖子;而管理员可以进行所有的操作。下面将逐一介绍。

  5.1系统组成

  本系统包括浏览帖子,发表帖子,回复帖子,编辑帖子,删除帖子等操作,分为技术交流区、美食天地、生活五味、精华区等区域版块。

  5.2系统的实现

  dbBean文件实现了数据库的连接,以及各种通用函数的声明。其他网页如果需要连接数据库,只要包含该文件即可。这样可以大大减少代码的重复,便于阅读和维护,由于该文件设计合理,因此所有页面都使用该文件。主页面()

  5.2.1登陆模块实现

  当用户在浏览器中输入时,系统将进入登陆页面。主要代码:

......

<%

  request.setCharacterEncoding("gb2312");

  session.setMaxInactiveInterval(-1);

  String user=request.getParameter("user");

  String pw=request.getParameter("pw");

  String sql="select * from user where name='"+user+"' and password='"+pw+"'";

  ResultSet rs=conn.executeQuery(sql);

  if(rs.next())

  {

     session.setAttribute("rank",rs.getString("rank"));

     session.setAttribute("id",rs.getString("userid"));

     session.setAttribute("name",rs.getString("name"));

     rs.close();

     conn.close();

%>

  <jsp:forward page="home.jsp"/>

<%

  }

  else

  {

     rs.close();

     conn.close();

%>

......

1618182131.gif
  5.2.2用户注册模块实现

单击登陆页面下方的“注册新用户”将进入注册页面。代码如下:

...

<%

request.setCharacterEncoding("gb2312");

String name="";

String password="";

String sex="";

String age="";

String phone="";

String email="";

String address="";

String face="";

ResultSet  rs=null;

if(request.getParameter("username")!=null)

  name=request.getParameter("username");

if(request.getParameter("password")!=null)

  password=request.getParameter("password");

if(request.getParameter("sex")!=null)

  sex=request.getParameter("sex");

if(request.getParameter("age")!=null)

  age=request.getParameter("age");

if(request.getParameter("phone")!=null)

  phone=request.getParameter("phone");

if(request.getParameter("email")!=null)

  email=request.getParameter("email");

if(request.getParameter("address")!=null)

  address=request.getParameter("address");

if(request.getParameter("face")!=null)

  face=request.getParameter("face");

  String sql="select * from user where name='"+name+"'";

  rs=conn.executeQuery(sql);

  if(rs.next())

  {

     rs.close();

     out.println("<center><h2>对不起,该用户名已经被占用,请另选一个用户名!<br></h2>");

     out.println("<a href='javascript:history.back()'>返回</a></center>");

  }

  else

  {

     sql="insert into user(name,password,sex,age,phone,email,address,rank,pubnum,face) values('"+name+"','"+password+"','"+sex+"','"+age+"','"+phone+"','"+email+"','"+address+"',0,0,'"+face+"')"; 

     conn.executeUpdate(sql);

     out.println("<center><h2>恭喜您,注册成功!<br></h2>");

     out.println("<a href='login.jsp'>返回登录页面</a></center>");

  }

  conn.close();    

%>

...

1618197500.gif

  5.2.3用户信息修改实现

  当进入系统后,你可以单击“修改个人信息”,进行相关信息的修改。

代码省略。

1618197742.gif

  5.2.4浏览帖子模块实现

  当单击论坛某个版块连接时,即可以在打开的页面看到该版块帖子的主题列表,在列表中列出了帖子的作者、回复数量、浏览数量和最后恢复的时间。代码见系统;

1618199843.gif
  另外浏览帖子主题列表和论坛的其他版块都使用了 分页的功能,这里通过int pagesize=10;语句确定每页帖子的数量,这个数量可以根据自己的需要设置;用pagecount=(recordCount%pageSize==0)?(recordCOunt/pageSize):(recordCount/pageSize+1) 语句计算得到该版块的帖子所站用的总页数;通过for(int i=1;i<=pageCount;i++)语句在翻页时获得页数,如第2页、第三页。效果如图:

1618209435.gif

  在显示帖子内容这个页面,论坛使用了目前最常用的一种格式,即分为标题和正文部分,通过标题部分和正文部分的颜色不同将不同的帖子划分开来。单击想查看的帖子,即可浏览该帖子的内容。

  5.2.5发布帖子模块实现

      论坛作为一种信息交流的工具,少不了要发表文章,其页面和一般的表单提交差不多,只是增加了一些功能而已。为了用户的方便,在设计时有两个地方可以实现对帖子的发表,一个是在浏览帖子主题列表页面中;另一个是在浏览帖子内容页面中,但这两个所指向的连接是同一个页面。在发表帖子时,将通过JavaBean 取得帖子数量,并保存到数据库中。发表帖子的页面为(post.jsp):

1618209847.gif

  当用户提交帖子时,该帖子的信息将被保存到.jsp页面中,然后保存到数据库的数据表中,然后页面跳到浏览帖子页面。

  5.2.6回复帖子模块实现

  回复帖子也是在。Jsp页面完成的。回复帖子都会在原文标题前加上“re”作为帖子标题,如图,对帖子的回复需要获得帖子的主题id,一个帖子id 可能有零个或多个回复,这个主题id提交也是在连接中动态生成。

161820421.gif

  5.2.7编辑帖子模块实现

  如果用户需要修改自己发表的帖子,或者对帖子不满意,那么你可以对帖子进行相应的修改。在浏览帖子页面单击“编辑”连接,既可进入编辑页面,在此可以对标题、内容和图表等信息进行修改,编辑帖子页面。
1618215152.gif

  5.2.8帖子加精模块设计

  对于那些好的帖子你可以把它们加入精华区。

1618215983.gif

  同理你也可以把它们删除掉。

  用户对帖子进行删除时,不能删除整个帖子,只能删除单个回复(如果该帖子没有回复时,那么将删除该帖子),而且和编辑帖子一样,只能删除自己所发表的帖子或恢复的帖子(管理员除外),在要删除的帖子回复上单击“删除”连接,将弹出删除确认对话框,确认后,该回复将被删除,并返回到浏览帖子主题列表页面。


  6  系统测试

  6.1系统登陆模块测试

(1) 测试问题单

 项目编号            测试类别:集成测试             序号:001

产品标识

产品中文标识

美食论坛-系统登陆

第几次测试

3

测试工程师

测试模块/功能/性能

系统登陆

测试记录单

测试时间

2007-6-10

问题记录

序号

故障现象

级别

处理人

处理时间

处理说明

1

输入用户名和密码后,在数据库中查找无该用户

谢学明

2007/6/9

已处理


 6.2帖子回复模块测试

测试问题单

 项目编号            测试类别:集成测试             序号:001

产品标识

产品中文标识

美食论坛-帖子回复模块

第几次测试

3

测试工程师

测试模块/功能/性能

帖子回复模块

测试记录单

测试时间

2007-6-10

问题记录

序号

故障现象

级别

处理人

处理时间

处理说明

1

谢学明

2007/6/9

已处理


  6.3  测试总结

  本次测试主要用于对系统的出错进行测试,测试项目包括用户登陆模块、帖子回复模块、用户注册模块等方面。在本次测试中我们共发现了8处错误,经过修改,已对部分错误进行更正,其他部分正在进行中。通过本次测试,我希望在以后的开发中能够避免再犯类似错误。

  7.结束语

  经过以上详细的设计与架构,终于完成了毕业选题系统的开发。在本次开发过程中,遇到了很多的困难。包括数据库设计方面,技术实现方面以及系统测试方面。同时,我也受到了很大的启发,希望通过今后的学习,能够对本系统在安全性方面进行进一步的完善。

参考文献

[1]李长林 等编著.Jsp组建动态网站基础与实例操作[M].电子工业出版社,2005,11

[2] [美] Thinking.In.Java(翻译版) [M] eBooks

[3]鲁晓东 李育龙 杨健。jsp软件工程案例精解[M]电子工业出版社,2005,5

[4]冯博 应群 编著。面向对象的JAVA网络编程[M] 清华大学出版社,2004,5,4