BBS论坛.docx
《BBS论坛.docx》由会员分享,可在线阅读,更多相关《BBS论坛.docx(34页珍藏版)》请在冰豆网上搜索。
BBS论坛
BBS论坛系统设计
组员:
方忠袁爱志万君红夏雪平
班级:
09计管
指导教师:
戴远泉
实训日期:
2011-12-22
摘要
为了方便店主与消费者交流,及时获取消费者关于图书、服务的需求信息和意见,以便店主及时采取措施,最大限度地满足消费者的需求,达到促进图书销售的目的。
于是书店BBS论坛便应运而生。
书店BBS论坛是基于B\S(浏览器\服务器)模式。
本系统是一个论坛系统,为了方便消费者留言和提意见,本系统对用户实行一级管理,即所有访问网上书店的用户不用登录就可直接发表自己的观点和需求信息或者对其他用户的发言进行自由回复。
网上书店BBS论坛首页会显示每条帖子的点击率和回复率,并对帖子进行分页显示。
论坛管理员具有最高的权限,他通过登录可以对这些帖子进行管理,主要是做删除处理。
目录
摘要2
1.功能需求分析:
4
2.系统运行环境需求:
5
2.1.服务器端操作系统:
WindowsXP5
2.2.Java开发工具:
JDK5
2.3.后台Web服务器:
Tomcat5
2.4.数据库:
SQL2000个人版5
2.5.客户端操作系统:
WindowsXP5
2.6.支持软件:
IE浏览器或其他兼容的浏览器5
2.7.编程软件和开发工具:
Dreamweaver5
3.系统设计5
3.1.数据库设计5
3.2.数据流图和用例图6
3.2.1.数据流图(访问者)6
3.2.2.用例图(访问者)6
3.3.数据E-R图7
3.4.创建数据库7
3.4.1.建立数据库“bs”7
3.4.2.建立存储帖子数据库表“bbs110”如下:
7
3.4.3.建立存储管理员登录信息数据库表“manage”如下:
9
3.4.4.初始数据清单9
4.系统功能设计9
4.1.浏览帖子功能9
4.2.发表帖子功能10
4.3.回复帖子功能10
4.4.分页显示帖子简要信息10
4.5.计算并显示点击次数10
4.6.计算回复次数并显示10
4.7.管理帖子10
5.系统实现11
5.1.浏览帖子功能11
5.2.发表帖子功能12
5.3.回复帖子功能15
5.4.分页显示帖子简要信息20
5.5.计算并显示点击次数22
5.6.计算回复次数并显示22
5.7.帖子管理23
5.7.1.管理员登录23
5.7.2.删除主题帖子26
5.7.3.逐条删除回复信息,同时回复次数相应减1,代码如下:
29
6.系统测试32
7.该系统所用jsp文件及其说明,数据源名称。
32
8.总结33
1.功能需求分析:
网上书店论坛系统的主要目的是为所有访问该书店的任何用户提供一个可以方便、自由地发表观点的网上场所。
因此需要为用户提供一个简捷、方便的操作界面,同时也为具有最高权限的管理员提供相应的维护功能。
要求实现:
浏览帖子,发表新帖,回复帖子,书店BBS论坛首页分页显示主题帖子简要信息列表,每条帖子的点击量和回复次数等功能。
同时为管理员设置最高权限,使他可以对不法的或不健康的主题帖子和回复信息进行删除。
在做删除处理时,如果删除的是主题帖,要求其对应所有回复信息也被删除;如果删除的是回复信息,要求其回复次数同时减1。
2.系统运行环境需求:
2.1.服务器端操作系统:
WindowsXP
2.2.Java开发工具:
JDK
2.3.后台Web服务器:
Tomcat
2.4.数据库:
SQL2000个人版
2.5.客户端操作系统:
WindowsXP
2.6.支持软件:
IE浏览器或其他兼容的浏览器
2.7.编程软件和开发工具:
Dreamweaver
3.系统设计
3.1.数据库设计
采用将帖子信息与回复信息存到一张数据库表中,通过判断回复号“reID”是否为0来区分主贴与回复贴。
这样做的目的是所有操作只针对一张表,免去了表和表之间的连接操作产生不必要的麻烦,同时大大减少了冗余代码的编写。
另外建立管理员表,用来存储管理员的登录信息,便于管理员进行删除等操作。
3.2.数据流图和用例图
3.2.1.数据流图(访问者)
3.2.2.用例图(访问者)
3.3.数据E-R图
3.4.创建数据库
3.4.1.建立数据库“bs”
3.4.2.建立存储帖子数据库表“bbs110”如下:
字段名
数据类型
中文说明
是否为主键
特殊设置
Id
int
帖子编号
是
自动生成,递增为一
Hit_amount
int
点击量
否
默认值为0
reNum
int
回复次数
否
默认值为0
subject
varchar
贴子主题
否
不可以为空
context
text
帖子内容
否
不可以为空
Date1
datetime
时间
否
不可以为空
reID
int
回复号
否
不可以为空
3.4.3.建立存储管理员登录信息数据库表“manage”如下:
字段名
数据类型
中文说明
Userid
varchar
管理员号
password
varchar
管理员密码
3.4.4.初始数据清单
1.帖子数据表
2管理员信息数据表
4.系统功能设计
4.1.浏览帖子功能
任何访问该网上书店论坛的用户,均可以浏览帖子简要信息表,单击标题可以浏览帖子详细内容及所有回复内容。
4.2.发表帖子功能
任何访问该书店论坛的用户均可以使用发表帖子功能。
4.3.回复帖子功能
任何访问该书店论坛系统的用户均可以使用回复帖子功能。
并可以在下面的恢复文本框中对该主题进行恢复。
4.4.分页显示帖子简要信息
因为帖子信息列表如果在一个页面显示,会出现网上书店论坛系统的首页特别长,不仅不美观,还会给访问者带来疲劳感和浏览不便。
所以就要对其进行分页显示处理。
要求每页显示5条帖子简要信息。
4.5.计算并显示点击次数
在首页点某一帖子主题时,该主题帖子的点击次数增一。
4.6.计算回复次数并显示
在回复成功后,回复次数增一。
为了方便来访者根据自身需要,尽快找到并浏览帖子信息,该书店论坛系统还提供了帖子查询功能。
4.7.管理帖子
该功能只有具有最高权限的管理员才享有,他可以对非法帖子和不健康的帖子进行删除和查询及其它管理。
5.系统实现
5.1.浏览帖子功能
任何访问该网上书店论坛的用户,均可以浏览帖子简要信息表,单击标题可以浏览帖子详细内容及所有回复内容。
相关代码及界面如下:
Strings_id="";
声明变量用来接收从数据库中获得对应值:
Strings_hit="";
Strings_renum="";
Strings_subject="";
Strings_context="";
Strings_date1="";
Strings_reid="";
BBS论坛首页界面显示主帖子界面设计代码如下:
|
点击次数
回复次数
主题
内容
发言日期
|
判断数据库中的记录值是否为空,若不为空,将从数据库中获得的值赋给前面声明的变量,代码如下:
<%
rs=stmt.executeQuery("select*frombbs110wherereID=0orderbyiddesc");
if(!
rs.isLast()){
rs.next();
s_id=(rs.getString("id")!
=null?
rs.getString("id"):
"");
s_hit=(rs.getString("hit_amount")!
=null?
rs.getString("hit_amount"):
"");
s_renum=(rs.getString("reNum")!
=null?
rs.getString("reNum"):
"");s_subject=(rs.getString("subject")!
=null?
rs.getString("subject"):
"");s_context=(rs.getString("context")!
=null?
rs.getString("context"):
"");s_date1=(rs.getString("date1")!
=null?
rs.getString("date1"):
"");
s_reid=(rs.getString("reID")!
=null?
rs.getString("reID"):
"");
%>
通过JSP表达式显示,代码如下:
<%=s_hit%> | <%=s_renum%> | id=<%=s_id%>"><%=s_subject%> | 点<%=s_subject%>
超链接到
part.jsp?
id=<%=s_id%>并向该页面传参数<%=s_id%>
<%=s_context%> | <%=s_date1%> |
<%}%>
5.2.发表帖子功能
用户可以在论坛首页的帖子简要信息列表下的发表文本框直接填入自己的想法和意见,然后点击“发表”按钮,若信息合法,则会成功提交,并在上面帖子简要信息列表的第一条显示刚刚发表的帖子。
相关代码及界面如下:
设计发表新帖的文本框,并通过action="dealbbs.jsp"将填写的合法内容提交到"dealbbs.jsp"文件,代码如下:
用SCRIPTLANGUAGE编写一个方法,要求输入主题和内容不能为空,若为空,给出提示,代码如下:
--
functionCheckSubmit()
{
if(document.form.subject.value=="")
{alert("请输入主题!
");document.form.subject.focus();returnfalse;}
if(document.form.context.value=="")
{alert("请输入内容!
");document.form.context.focus();returnfalse;}
if(document.form.context.value.length>=100)
{alert("留言内容不能大于100字!
");document.form.context.focus();returnfalse;}
returntrue;
}
主题
|
内容
|
|
在"dealbbs.jsp"文件里作如下判断处理后,插入数据库,代码如下:
if(s_reid!
=null)
{
stmt.executeUpdate("updatebbs110setreNum=reNum+1whereid='"+s_reid+"'");
}
else
{
s_reid="0";
}
Strings_sql="insertintobbs110(subject,context,date1,reID)"+
"values('"+s_subject+"','"+s_context+"',getdate(),'"+s_reid+"')";
stmt.executeUpdate(s_sql);
点击“发布”按钮,在主题帖信息列表中的最上面可以看到刚发布的信息,界面如下:
5.3.回复帖子功能
用户在该书店论坛系统的首页浏览帖子简要信息列表时,若对某以主题感兴趣,只要点击该主题,并将该主题对应的帖子号传到“part.jsp”,在帖子详细内容页面浏览该帖子的所有恢复,并可以在下面的恢复文本框中对该主题进行恢复。
相关代码及界面如下:
--
functionCheckSubmit()
{
if(document.form.subject.value=="")
{alert("请输入主题!
");document.form.subject.focus();returnfalse;}
if(document.form.context.value=="")
{alert("请输入内容!
");document.form.context.focus();returnfalse;}
if(document.form.context.value.length>=100)
{alert("留言内容不能大于100字!
");document.form.context.focus();returnfalse;}
returntrue;
}
>
连接数据库,并声明变量,代码如下:
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connectionconn=DriverManager.getConnection("jdbc:
odbc:
bslk","sa","");
Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSetrs=null;
ResultSetrs1=null;
Strings_id="";
Strings_subject="";
Strings_context="";
Strings_date1="";
Strings_reid="";
Strings_context1="";
Strings_date11="";
%>
<%
s_id=request.getParameter("id");
stmt.executeUpdate("updatebbs110sethit_amount=hit_amount+1whereid='"+s_id+"'");//该语句用来更新点击次数
rs=stmt.executeQuery("select*frombbs110whereid='"+s_id+"'");
rs.next();
s_subject=rs.getString("subject");
s_context=rs.getString("context");
s_date1=rs.getString("date1");
rs1=stmt.executeQuery("select*frombbs110wherereID='"+s_id+"'");
%>
<%@includefile="top.jsp"%>
|
|
|
主题
发帖内容
发帖时间
|
<%=s_subject%> | <%=s_context%> | <%=s_date1%> |
|
|
历史回复
回复时间
|
<%
while(rs1.next()){
%>
<%=rs1.getString("context")%>
<%=rs1.getString("date1")%> |
<%}%>
reID=<%=s_id%>"method="post">//点击回复按钮,将回复内容提交到插入处理文件dealbbs.jsp,并传递参数reID=<%=s_id%>到该文件。
我要回复
|
">
//用hidden向“dealpost.jsp”传参数<%=s_subject%>
|
history.go(-1);">返回 | //点击返回,回到上一页
<%@includefile="bottom.jsp"%>
|