JSP课程设计报告技术论坛系统Word下载.docx
《JSP课程设计报告技术论坛系统Word下载.docx》由会员分享,可在线阅读,更多相关《JSP课程设计报告技术论坛系统Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
本系统是一个结构简单的BBS论坛系统,该系统采用了MVC三层架构模型,通过这种设计模型把界面展示、处理流程和业务逻辑分成不同的组建实现,方便维护与重用。
二.课程题目及需求分析
课程题目:
技术论坛系统
题目设计要求:
要求实现一个简单的技术论坛系统。
涉及到的各类信息需要自行分析设计,要求实现的功能主要有:
1)用户注册:
录入用户个人信息,获得进入论坛的权限,并赋予一定级别(级别可随发帖次数提高)
2)用户登录:
已注册用户使用用户名和密码登录,成功后进入论坛;
3)用户发帖:
已登录用户可以发帖;
4)用户回帖:
已登录用户可以跟在其它人帖子后回复;
5)管理员功能:
管理员可以对查看和删除用户信息和帖子信息,可以设置帖子是否可以回复。
6)查找功能:
用户和管理员能够根据帖子主题查找相关帖子;
7)要求所有用户先登录后使用,根据用户身份给予访问不同页面的权限。
需求分析:
对于一个简单的论坛系统来说,主要包括讨论区、帖子和回帖三部分:
讨论区每个讨论区对应一个话题类别,用户可以根据讨论区的名字判断讨论区的内容。
帖子用户发表的帖子包含标题和内容,标题简要说明帖子的内容,内容详细的表述用户需要发表的观点和提出的问题
回帖对帖子的回复,一般没有标题,只有内容,用于对一个帖子进行回复。
本系统用户主要分为普通用户和管理员两类,普通用户在登录后可以浏览讨论区、发帖和回帖,管理员除了具有普通用户的功能外还有删除用户信息和帖子信息、设置帖子是否可以回复等功能。
三.数据流图及系统功能图
(一)数据流图
登录信息登录信息
帖子信息帖子、用户信息
回帖信息删除、设置帖子信息
帖子、回帖信息帖子、用户信息
图1数据流图
(二)系统功能图
图2系统功能图
四.数据库设计
数据库包括讨论区forum表、帖子topic表、回帖reply表和用户user表,表的设计如以下几个图所示
forum表(板块id,名称,描述)
表1forum表
topic表(帖子id,板块id,作者,标题,内容,发布时间,回帖数,可回复标志)
表2topic表
reply表(回帖id,帖子id,内容,作者,回帖时间)
表3reply表
user表(用户id,用户名,密码,邮箱,级别,身份,发帖数)
表4user表
五.程序设计及功能实现
(一)普通用户操作模块
本系统运行后首先弹出首页,如图3所示,用户只有登录后才可以浏览论坛,当用户没有登录而操作论坛时会弹出用户登录的界面,这里是用session来实现用户的登录认证的,当用户成功登录后,就可以浏览各个模块的帖子,可以对帖子进行回复,还可以发表新的帖子,当用户需要快速找到某个帖子时可以对该帖子的主题进行搜索。
图3论坛首页
1搜索帖子功能
搜索帖子是根据用户输入的标题来搜索相应的帖子,这里是用一个表单来提交用户的搜索要求,然后表单将搜索数据传到后台应用程序进行处理,搜索帖子的界面如图4所示
图4用户搜索界面
搜索帖子的关键代码
Stringsql;
conncon=newconn();
ResultSetrs;
Stringtitle=searchForm.getTitle().trim();
//获取前台表单传来的title值
System.out.print(title);
Stringselect=searchForm.getSelect();
//获取前台表单传来的select值
sql="
select*fromtopicwheretitle='
"
+title+"
'
;
System.out.print(sql);
rs=con.executeQuery(sql);
Listlist=newArrayList();
while(rs.next())
{
Integerid=rs.getInt("
id"
);
Stringusername=rs.getString("
username"
Stringtitle1=rs.getString("
title"
Stringtime=rs.getTime("
time"
).toString();
Integerreply=rs.getInt("
reply"
Topictopic=newTopic();
topic.setId(id);
topic.setUsername(username);
topic.setTitle(title);
topic.setTime(time);
topic.setReply(reply);
list.add(topic);
}
request.setAttribute("
list"
list);
//将list对象发送到前台
returnmapping.findForward("
result"
//转向前台页面
}
2回复帖子功能
用户对某个帖子进行回复是通过一个回帖表单提交数据的,表单将数据传到后台应用程序,应用程序接收到数据后对数据库经行一系列操作然后返回回帖的页面,回帖的界面如图5所示
图5回帖界面
回帖的关键代码
topicid=request.getParameter("
//获取从前台传来的id值
Integertid=Integer.parseInt(topicid);
content=request.getParameter("
content"
HttpSessionsession=request.getSession();
Objecto=session.getAttribute("
uid"
username=(String)o;
SimpleDateFormatsdf=newSimpleDateFormat("
yyyy-MM-dd"
//获取系统日期
Datedate=newDate();
StringstrDate=sdf.format(date);
System.out.println(strDate);
con=newconn();
ResultSetrsTmp=con.executeQuery("
selectmax(id)asmaxidfromreply"
);
if(rsTmp.next())
{
id=rsTmp.getInt("
maxid"
)+1;
rsTmp.close();
sql="
insertintoreplyvalues('
+id;
sql+="
'
+tid+"
+content+"
+username+"
+strDate+"
)"
con.executeUpdate(sql);
(二)管理员操作
管理员除了具有普通用户的功能外还可以对用户和帖子信息进行查看和删除,还可以设置某个帖子是否可以回复
设置帖子不可回复
在设计帖子的数据库时设计了一个flag标志属性来标志帖子是否可以回复,当flag为0时帖子可以回复,当flag为1时帖子不可以回复。
用户发表的帖子默认情况下是可以回复的,管理员设置帖子不可以回复时就把flag的值置为1,这样当用户浏览该帖子时回复帖子的表单就会隐藏,从而达到不可回复的功能。
操作界面如图6所示,隐藏表单的帖子界面如图7所示。
图6管理员操作界面
图7不可回复界面
关键代码
Stringid=request.getParameter("
updatetopicsetflag='
1'
whereid="
+id;
<
tablebgcolor="
#E6EAD7"
width="
950"
align="
center"
>
<
%
Listlist=(List)request.getAttribute("
//获取从后台传来list对象
inti=0;
for(Iteratoriterator=list.iterator();
iterator.hasNext();
)
{
Replyreply=(Reply)iterator.next();
%>
tr>
tdwidth="
202"
作者:
%=reply.getUsername()%>
/td>
662"
时间:
%=reply.getTime()%>
70"
%=++i%>
楼<
/tr>
span>
%=reply.getContent()%>
/span>
td>
hr>
%}%>
/table>
hr/>
if(topic.getFlag()==0)
inttopicid=topic.getId();
%>
六.总结
本次课程设计是做一个技术论坛系统,我采用的是基于struts框架的MVC设计模式来设计完成题目的。
运用Struts框架对我来说是一个难点,因为以前没有学过Struts框架,对它一点都不了解,因此这次课设花了很多时间用在学习Struts框架上,后来通过老师的指点和同学的帮助,慢慢的理解了struts框架的原理和运行机制,做课程设计也就慢慢上手了。
我感觉运用Struts框架最大的好处就在实现了数据操作和数据显示的分离,jsp页面只用来显示显示页面,不参与数据的处理,这样理清了设计思路,便于维护和代码的重用性。
这次实验加深了我对MVC设计模式的理解。
通过这次实验我还掌握了网页结构化设计的方法,大大提高了工作效率。
当然在这次实验中我也遇到了不少问题,例如如何控制用户的权限认证,即用户直接在地址栏访问后台操作页面而不通过登录系统,通过查资料和请教同学,最终把这个问题解决。
总之,这次实验加深了我对Web应用开发的理解,我进一步熟练了各种技术的在Web应用开发中的使用,为我以后对Web应用开发的学习和应用打下了坚实的基础。