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