《JSP課程設(shè)計(jì)報(bào)告(技術(shù)論壇系統(tǒng))》由會員分享,可在線閱讀,更多相關(guān)《JSP課程設(shè)計(jì)報(bào)告(技術(shù)論壇系統(tǒng))(10頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、華 北 科 技 學(xué) 院
課程設(shè)計(jì)說明書
班級: 姓名:
學(xué)號:
設(shè)計(jì)題目: 技術(shù)論壇系統(tǒng)
設(shè)計(jì)時間: 至
指導(dǎo)教師:
評 語:___________________________________
___________________________________________
________________________________
2、___________
___________________________________________
___________________________________________
評閱成績:______評閱教師:_______
一. 摘要
BBS討論區(qū)是目前因特網(wǎng)上人氣最旺的互動交流服務(wù),據(jù)統(tǒng)計(jì),國內(nèi)三大門戶網(wǎng)站的BBS討論區(qū)帶來的流量已經(jīng)遠(yuǎn)遠(yuǎn)超過其門戶新聞帶來的流量。本系統(tǒng)是一個結(jié)構(gòu)簡單的BBS論壇系統(tǒng),該系統(tǒng)采用了MVC三層架構(gòu)模型,通過這種設(shè)計(jì)模型把界面展示、處理流程和業(yè)務(wù)邏輯分成不同的組建實(shí)現(xiàn),方便維護(hù)與重用。
二. 課程題目及需求分析
3、
課程題目:技術(shù)論壇系統(tǒng)
題目設(shè)計(jì)要求:
要求實(shí)現(xiàn)一個簡單的技術(shù)論壇系統(tǒng)。
涉及到的各類信息需要自行分析設(shè)計(jì),要求實(shí)現(xiàn)的功能主要有:
1)用戶注冊:錄入用戶個人信息,獲得進(jìn)入論壇的權(quán)限,并賦予一定級別(級別可隨發(fā)帖次數(shù)提高)
2)用戶登錄:已注冊用戶使用用戶名和密碼登錄,成功后進(jìn)入論壇;
3)用戶發(fā)帖:已登錄用戶可以發(fā)帖;
4)用戶回帖:已登錄用戶可以跟在其它人帖子后回復(fù);
5)管理員功能:管理員可以對查看和刪除用戶信息和帖子信息,可以設(shè)置帖子是否可以回復(fù)。
6)查找功能:用戶和管理員能夠根據(jù)帖子主題查找相關(guān)帖子;
7)要求所有用戶先登錄后使用,根據(jù)用戶身
4、份給予訪問不同頁面的權(quán)限。
需求分析:
對于一個簡單的論壇系統(tǒng)來說,主要包括討論區(qū)、帖子和回帖三部分:
討論區(qū) 每個討論區(qū)對應(yīng)一個話題類別,用戶可以根據(jù)討論區(qū)的名字判斷討論區(qū)的內(nèi)容。
帖子 用戶發(fā)表的帖子包含標(biāo)題和內(nèi)容,標(biāo)題簡要說明帖子的內(nèi)容,內(nèi)容詳細(xì)的表述用戶需要發(fā)表的觀點(diǎn)和提出的問題
回帖 對帖子的回復(fù),一般沒有標(biāo)題,只有內(nèi)容,用于對一個帖子進(jìn)行回復(fù)。
本系統(tǒng)用戶主要分為普通用戶和管理員兩類,普通用戶在登錄后可以瀏覽討論區(qū)、發(fā)帖和回帖,管理員除了具有普通用戶的功能外還有刪除用戶信息和帖子信息、設(shè)置帖子是否可以回復(fù)等功能。
三. 數(shù)據(jù)流圖及系統(tǒng)功能圖
5、
(一) 數(shù)據(jù)流圖
技術(shù)
論壇
系統(tǒng)
管理
員
用
戶
登錄信息 登錄信息
帖子信息 帖子、用戶信息
回帖信息 刪除、設(shè)置帖子信息
帖子、回帖信息 帖子、用戶信息
圖1
6、數(shù)據(jù)流圖
(二) 系統(tǒng)功能圖
普通用戶
注冊、
登錄
搜索查看帖子
發(fā)表帖子
回復(fù)帖子
技術(shù)論壇系統(tǒng)
管理員
搜索查看帖子
刪除設(shè)置帖子
刪除查看用戶
圖2 系統(tǒng)功能圖
四. 數(shù)據(jù)庫設(shè)計(jì)
數(shù)據(jù)庫包括討論區(qū)forum表、帖子topic表、回帖reply表和用戶user表,表的設(shè)計(jì)如以下幾個圖所示
forum表 (板塊id,名稱,描述)
7、
表1 forum表
topic表(帖子id,板塊id,作者,標(biāo)題,內(nèi)容,發(fā)布時間,回帖數(shù),可回復(fù)標(biāo)志)
表2 topic表
reply表(回帖id,帖子id,內(nèi)容,作者,回帖時間)
表3 reply表
user表(用戶id,用戶名,密碼,郵箱,級別,身份,發(fā)帖數(shù))
表4 user表
五. 程序設(shè)計(jì)及功能實(shí)現(xiàn)
(一)普通用戶操作模塊
本系統(tǒng)運(yùn)行后首先彈出首頁,如圖
8、3所示,用戶只有登錄后才可以瀏覽論壇,當(dāng)用戶沒有登錄而操作論壇時會彈出用戶登錄的界面,這里是用session來實(shí)現(xiàn)用戶的登錄認(rèn)證的,當(dāng)用戶成功登錄后,就可以瀏覽各個模塊的帖子,可以對帖子進(jìn)行回復(fù),還可以發(fā)表新的帖子,當(dāng)用戶需要快速找到某個帖子時可以對該帖子的主題進(jìn)行搜索。
圖3 論壇首頁
1搜索帖子功能
搜索帖子是根據(jù)用戶輸入的標(biāo)題來搜索相應(yīng)的帖子,這里是用一個表單來提交用戶的搜索要求,然后表單將搜索數(shù)據(jù)傳到后臺應(yīng)用程序進(jìn)行處理,搜索帖子的界面如圖4所示
圖4 用
9、戶搜索界面
搜索帖子的關(guān)鍵代碼
String sql;
conn con=new conn();
ResultSet rs;
String title=searchForm.getTitle().trim(); //獲取前臺表單傳來的title值
System.out.print(title);
String select=searchForm.getSelect(); //獲取前臺表單傳來的select值
sql="select * from topic where title="+title+"";
System.out
10、.print(sql);
rs=con.executeQuery(sql);
List list = new ArrayList();
while (rs.next())
{
Integer id=rs.getInt("id");
String username = rs.getString("username");
String title1 = rs.getString("title");
String time=rs.getTime("time").toString();
Integer reply = rs.getInt("reply")
11、;
Topic topic = new Topic();
topic.setId(id);
topic.setUsername(username);
topic.setTitle(title);
topic.setTime(time);
topic.setReply(reply);
list.add(topic);
}
request.setAttribute("list", list); //將list對象發(fā)送到前臺
return mapping.findForward("result"); //轉(zhuǎn)向
12、前臺頁面
}
2 回復(fù)帖子功能
用戶對某個帖子進(jìn)行回復(fù)是通過一個回帖表單提交數(shù)據(jù)的,表單將數(shù)據(jù)傳到后臺應(yīng)用程序,應(yīng)用程序接收到數(shù)據(jù)后對數(shù)據(jù)庫經(jīng)行一系列操作然后返回回帖的頁面,回帖的界面如圖5所示
圖5 回帖界面
回帖的關(guān)鍵代碼
topicid=request.getParameter("id"); //獲取從前臺傳來的id值
Integer tid=Integer.parseInt(topicid);
content=request.getParameter("content");
HttpSession session
13、=request.getSession();
Object o = session.getAttribute("uid");
username = (String)o;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //獲取系統(tǒng)日期
Date date=new Date();
String strDate=sdf.format(date);
System.out.println(strDate);
con=new conn();
ResultSet rsTmp = con.executeQuery( "
14、select max(id) as maxid from reply" );
if(rsTmp.next())
{
id = rsTmp.getInt("maxid") + 1;
}
rsTmp.close();
sql = "insert into reply values (" + id ;
sql += ","+tid+","+ content+","+username+","+strDate+ ")";
con.executeUpdate(sql);
(二)管理員操作
管理員除了具有普通用戶的功能外還可以對用戶和帖子信息進(jìn)行查看和刪除,還可
15、以設(shè)置某個帖子是否可以回復(fù)
設(shè)置帖子不可回復(fù)
在設(shè)計(jì)帖子的數(shù)據(jù)庫時設(shè)計(jì)了一個flag標(biāo)志屬性來標(biāo)志帖子是否可以回復(fù),當(dāng)flag為0時帖子可以回復(fù),當(dāng)flag為1時帖子不可以回復(fù)。用戶發(fā)表的帖子默認(rèn)情況下是可以回復(fù)的,管理員設(shè)置帖子不可以回復(fù)時就把flag的值置為1,這樣當(dāng)用戶瀏覽該帖子時回復(fù)帖子的表單就會隱藏,從而達(dá)到不可回復(fù)的功能。操作界面如圖6所示,隱藏表單的帖子界面如圖7所示。
圖6 管理員操作界面
圖7 不可回復(fù)界面
關(guān)鍵代碼
String sql;
16、
String id=request.getParameter("id");
conn con=new conn();
sql="update topic set flag=1 where id="+id;
con.executeUpdate(sql);
<%
List list=(List)request.getAttribute("list"); //獲取從后臺傳來list對象
int i=0;
for (Iterator it
17、erator = list.iterator(); iterator.hasNext();)
{
Reply reply = (Reply) iterator.next();
%>
作者:<%=reply.getUsername()%> |
時間:<%=reply.getTime()%> |
<%=++i%>樓 |
<%=reply.ge
18、tContent()%> |
|
|
|
<% } %>
<%
if(topic.getFlag()==0)
{
int topicid=topic.getId();
%>
六. 總結(jié)
本次課程設(shè)計(jì)是做一個技術(shù)論壇系統(tǒng),我采用的是基于struts框架的MVC設(shè)計(jì)模式來設(shè)計(jì)完成題目的。運(yùn)用Struts框架對我來說是一個難點(diǎn),因?yàn)橐郧皼]有學(xué)過Struts框架,對它一點(diǎn)都不了解,因此這次課設(shè)
19、花了很多時間用在學(xué)習(xí)Struts框架上,后來通過老師的指點(diǎn)和同學(xué)的幫助,慢慢的理解了struts框架的原理和運(yùn)行機(jī)制,做課程設(shè)計(jì)也就慢慢上手了。我感覺運(yùn)用Struts框架最大的好處就在實(shí)現(xiàn)了數(shù)據(jù)操作和數(shù)據(jù)顯示的分離,jsp頁面只用來顯示顯示頁面,不參與數(shù)據(jù)的處理,這樣理清了設(shè)計(jì)思路,便于維護(hù)和代碼的重用性。這次實(shí)驗(yàn)加深了我對MVC設(shè)計(jì)模式的理解。通過這次實(shí)驗(yàn)我還掌握了網(wǎng)頁結(jié)構(gòu)化設(shè)計(jì)的方法,大大提高了工作效率。當(dāng)然在這次實(shí)驗(yàn)中我也遇到了不少問題,例如如何控制用戶的權(quán)限認(rèn)證,即用戶直接在地址欄訪問后臺操作頁面而不通過登錄系統(tǒng),通過查資料和請教同學(xué),最終把這個問題解決??傊?,這次實(shí)驗(yàn)加深了我對Web應(yīng)用開發(fā)的理解,我進(jìn)一步熟練了各種技術(shù)的在Web應(yīng)用開發(fā)中的使用,為我以后對Web應(yīng)用開發(fā)的學(xué)習(xí)和應(yīng)用打下了堅(jiān)實(shí)的基礎(chǔ)。