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