




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、java語言課程設(shè)計報告題 目:設(shè) 計 者: 專業(yè)班級: 學(xué) 號:指導(dǎo)教師: 2011年 11 月 28 日河南理工大學(xué)計算機(jī)學(xué)院1、系統(tǒng)需求分析1.1系統(tǒng)名稱:hpu-08-信管bbs1.2系統(tǒng)介紹: 本bbs系統(tǒng),主要有以下幾個部分:用戶注冊、用戶登錄、瀏覽帖子、發(fā)表新帖、回復(fù)帖子。(1) 非論壇用戶即普通游客,只能瀏覽帖子、沒有權(quán)限對帖子進(jìn)行回復(fù)、或者發(fā)表新帖。(2) 論壇用戶擁有,發(fā)表新帖以及回復(fù)帖子的特權(quán)。(3) 帖子的瀏覽實(shí)現(xiàn)了分頁瀏覽、整個論壇按主題分為多個模塊兒,用戶可以根據(jù)感興趣的主題瀏覽各個模塊兒帖子。1.3開發(fā)背景大約是從1991年開始,國內(nèi)開始了第一個bbs站。經(jīng)過長時
2、間的發(fā)展,直到1995年,隨著計算機(jī)及其外設(shè)的大幅降價,bbs才逐漸被人們所認(rèn)識。1996年更是以驚人的速度發(fā)展起來。國內(nèi)的bbs站,按其性質(zhì)劃分,可以分為2種:一種是商業(yè)bbs站,如新華龍訊網(wǎng);另一種是業(yè)余bbs站,如天堂資訊站。由于使用商業(yè)bbs站要交納一筆費(fèi)用,而商業(yè)站所能提供的服務(wù)與業(yè)余站相比,并沒有什么優(yōu)勢,所以其用戶數(shù)量不多。多數(shù)業(yè)余bbs站的站長,基于個人關(guān)系,每天都互相交換電子郵件,漸漸地形成了一個全國性的電子郵件網(wǎng)絡(luò)china fidonet(中國惠多網(wǎng))。于是,各地的用戶都可以通過本地的業(yè)余bbs站與遠(yuǎn)在異地的網(wǎng)友互通信息。這種跨地域電子郵件交流正是商業(yè)站無法與業(yè)余站相抗衡
3、的根本因素。由于業(yè)余bbs站擁有這種優(yōu)勢,所以使用者都更樂意加入。這里“業(yè)余”2字,并不是代表這種類型的bbs站的服務(wù)和技術(shù)水平是業(yè)余的,而是指這類bbs站的性質(zhì)。一般bbs站都是由志愿者開發(fā)的。他們付出的不僅是金錢,更多的是精力。其目的是為了推動中國計算機(jī)網(wǎng)絡(luò)的健康發(fā)展,提高廣大計算機(jī)用戶的應(yīng)用水平國內(nèi)的bbs站,大多數(shù)還是大型綜合性bbs站。隨著計算機(jī)的普及,特別是寬帶的普及,bbs的活動將會進(jìn)一步高漲。但是,隨之而來對專注于領(lǐng)域方面的bbs將會慢慢增加需求。盡管bbs站臺的數(shù)量在不斷增長,但bbs的發(fā)展過程,也出現(xiàn)了一些問題。由于國內(nèi)使用的bbs架站軟件,都是從國外引進(jìn)的,因此沒有必要的
4、中文說明。雖然一些熱心的站長翻譯了一些資料,但是僅靠這些是遠(yuǎn)遠(yuǎn)不夠的。另外,有些站臺的設(shè)立是相互抄襲,所以在結(jié)構(gòu)上難免有雷同之處。1.4. 系統(tǒng)面向的用戶群體 本系統(tǒng)為hpu-08-信管所開發(fā)?;ヂ?lián)網(wǎng)正在融入我們的生活,網(wǎng)絡(luò)提供給我們的不只是一個獲取信息的來源,而且還是一個可以相互交流的空間,網(wǎng)上論壇正是一種供人們進(jìn)行交流的網(wǎng)絡(luò)空間, 影響和改變著我們的生活。系統(tǒng)的建成無疑會為廣大讀者和管理者提供極大的幫助。本套論壇的優(yōu)點(diǎn)在于它具有強(qiáng)大的可擴(kuò)展性和可維護(hù)性,非常適合網(wǎng)民創(chuàng)建自己的中小型bbs論壇!1.5開發(fā)環(huán)境 myeclipse9.0+mysql5.1+tomcat7.0.22系統(tǒng)總體設(shè)計2
5、.1 系統(tǒng)功能結(jié)構(gòu)圖登錄頁面、注冊頁面帖子瀏覽頁面java討論區(qū)工作討論區(qū)大雜燴瀏覽帖子回復(fù)帖子分頁瀏覽瀏覽帖子回復(fù)帖子分頁瀏覽瀏覽帖子回復(fù)帖子分頁瀏覽2.2系統(tǒng)數(shù)據(jù)流程圖3 系統(tǒng)詳細(xì)設(shè)計3.1 數(shù)據(jù)庫實(shí)體e-r圖設(shè)計(1)用戶實(shí)體e-r圖t_useractiveidusernamepasswordemailpiccreatedatecode(2)論壇模塊兒表t_boardidboardnamestateboarddesc(3)帖子表t_postclicknumbervreatedateidtitlecontentuidbidvipstateer(3)帖子回復(fù)表t_repostvreateda
6、teidtitlecontentuidstateer(4)多圖之間的e-r圖t_postt_boardt_usert_repost發(fā)表回復(fù)1n1n3.2數(shù)據(jù)庫表的設(shè)計數(shù)據(jù)庫名:mybbs(1)用戶表(t_user)(2)論壇模塊兒表(t_board)(3)帖子表(t_post) (4)帖子回復(fù)表(t_repost)3.3.詳細(xì)設(shè)計(1)實(shí)體類:java是純面向?qū)ο蟮恼Z言,所有的實(shí)體都抽象為類,該系統(tǒng)所包含的實(shí)體類有:user.java,board.java,post.java,repost.java。重要代碼:user.java:public class user private int id
7、;private string username;private string password;private string email;private string pic;private string createdate;private int active;private string code;public int getid() return id;public void setid(int id) this.id = id;public string getusername() return username;public void setusername(string use
8、rname) this.username = username;public string getpassword() return password;public void setpassword(string password) this.password = password;public string getemail() return email;public void setemail(string email) this.email = email;public string getpic() return pic;public void setpic(string pic) t
9、his.pic = pic;public string getcreatedate() return createdate;public void setcreatedate(string createdate) this.createdate = createdate;public int getactive() return active;public void setactive(int active) this.active = active;public string getcode() return code;public void setcode(string code) thi
10、s.code = code; (2) 主界面、論壇首頁 系統(tǒng)用戶登錄頁、帖子瀏覽頁、回復(fù)帖子、發(fā)表新帖、(3)數(shù)據(jù)庫與myeclipse的連接以及相關(guān)操作public class dbhelp public static string driver;public static string url;public static string db_name;public static string db_pwd;private static basicdatasource ds = new basicdatasource();static/靜態(tài)塊properties properties = n
11、ew properties();try properties.load(dbhelp.class.getclassloader().getresourceasstream(perties);driver = properties.getproperty(driver);url = properties.getproperty(url);db_name = properties.getproperty(dbname);db_pwd = properties.getproperty(dbpwd);ds.setdriverclassname(driver);ds.seturl
12、(url);ds.setusername(db_name);ds.setpassword(db_pwd);ds.setinitialsize(10);ds.setmaxactive(20);ds.setminidle(10);ds.setmaxwait(5000);system.out.println(數(shù)據(jù)庫配置文件讀取完畢!); catch (ioexception e1) e1.printstacktrace();/* * 獲取數(shù)據(jù)庫連接 * return */public connection getconnection() connection conn = null;try conn
13、 = ds.getconnection(); catch (sqlexception e) e.printstacktrace();return conn;public t queryforobject(string sql,rowmapper rm,object.args)connection conn = getconnection();preparedstatement stat = null;resultset rs = null;t obj = null;try stat = conn.preparestatement(sql);for (int i = 0; i args.leng
14、th; i+) stat.setobject(i+1, argsi);rs = stat.executequery();if(rs.next() /本質(zhì)上運(yùn)行的是實(shí)現(xiàn)類中的mapperrow()方法obj = rm.mapperrow(rs);system.out.println(sql: + sql); catch (sqlexception e) e.printstacktrace(); finally close(rs,stat,conn);return obj;public list queryforlist(string sql,rowmapper rm,object.args) c
15、onnection conn = getconnection();preparedstatement stat = null;resultset rs = null;list list = new arraylist();try stat = conn.preparestatement(sql);for (int i = 0; i args.length; i+) stat.setobject(i+1, argsi);rs = stat.executequery();while(rs.next() /本質(zhì)上運(yùn)行的是實(shí)現(xiàn)類中的mapperrow()方法t obj = rm.mapperrow(r
16、s);list.add(obj);system.out.println(sql: + sql); catch (sqlexception e) e.printstacktrace(); finally close(rs,stat,conn);return list;public long queryforcount(string sql,object. args) connection conn = getconnection();preparedstatement stat = null;resultset rs = null;long num = 0;try stat = conn.pre
17、parestatement(sql);for (int i = 0; i args.length; i+) stat.setobject(i+1, argsi);rs = stat.executequery();if(rs.next() num = rs.getlong(1);system.out.println(sql: + sql); catch (sqlexception e) e.printstacktrace(); finally close(rs,stat,conn);return num;/* * 用于執(zhí)行insert update delete語句 * param sql *
18、param args * return */public int executesql(string sql,object. args) connection conn = null;preparedstatement stat = null;int rows = 0;try conn = getconnection();stat = conn.preparestatement(sql);for (int i = 0; i args.length; i+) stat.setobject(i+1, argsi);rows = stat.executeupdate();system.out.pri
19、ntln(sql: + sql); catch (sqlexception e) e.printstacktrace(); finally close(stat,conn);return rows;/* * 關(guān)閉數(shù)據(jù)庫連接 * param rs * param stat * param conn */public void close(resultset rs,preparedstatement stat,connection conn) try if(rs != null) rs.close(); catch (sqlexception e) e.printstacktrace(); fin
20、ally try if(stat != null) stat.close(); catch (sqlexception e) e.printstacktrace(); finally try if(conn != null) conn.close(); catch (sqlexception e) e.printstacktrace();/* * 關(guān)閉數(shù)據(jù)庫連接 * param stat * param conn */public void close(preparedstatement stat,connection conn) try if(stat != null) stat.close
21、(); catch (sqlexception e) e.printstacktrace(); finally try if(conn != null) conn.close(); catch (sqlexception e) e.printstacktrace();4軟件測試 設(shè)計或選擇測試用例,對程序所有邏輯路徑進(jìn)行測試。通過在不同點(diǎn)檢查程序的狀態(tài),確定實(shí)際的狀態(tài)是否與預(yù)期的狀態(tài)一致。因此白盒測試又稱為結(jié)構(gòu)測試或邏輯驅(qū)動測試。軟件人員使用白盒測試方法,主要想對程序模塊進(jìn)行如下的檢查;對程序模塊的所有獨(dú)立的執(zhí)行路徑至少測試一次;對所有的邏輯判定,取“真”與取“假”的兩種情況都至少測試一次;在
22、循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體;測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等。功能和性能指標(biāo)滿足軟件要求和標(biāo)準(zhǔn)的情況下,測試結(jié)束5 系統(tǒng)總結(jié)經(jīng)過一個多星期的努力,已經(jīng)基本完成了hpu-08-信管bbs系統(tǒng)的開發(fā)和設(shè)計.完成了用戶模塊,帖子模塊的開發(fā),并基本實(shí)現(xiàn)了前期所制定的功能.本系統(tǒng)在不斷的設(shè)計更改過程中,逐漸的成熟。在編寫的最后階段中,參考了一些設(shè)計模式,在邏輯代碼和數(shù)據(jù)庫連接dao中抽象出了若干接口,并對其進(jìn)行了對象的依賴注入,大大的減少了模塊之間的耦合,使系統(tǒng)具有很高的靈活性和可維護(hù)性。6系統(tǒng)設(shè)計心得體會通過這次的設(shè)計, 加深了對jsp、servlet、以及網(wǎng)站框架搭建,以及面向?qū)ο笏枷氲囊恍├斫?對
23、于軟件工程方面的設(shè)計思想也有了更深一步的理解,只有在不斷的實(shí)踐于學(xué)習(xí)中,才會得到最豐厚的回報。在本次項(xiàng)目中設(shè)計中,java在原來的基礎(chǔ)上有了更深的了解和掌握,能夠熟練的對程序進(jìn)行添加和改寫。也能把java和數(shù)據(jù)庫進(jìn)行連接。此外還在老師講解的基礎(chǔ)上學(xué)會了舉一反三,能夠根據(jù)自己的需求適當(dāng)?shù)奶砑右恍┫嚓P(guān)的代碼。其次對開發(fā)環(huán)境myeclipse在原有的基礎(chǔ)上有了很深的了解。此外,在開發(fā)過程中,也得到了一些教訓(xùn),必須對每句代碼知道是什么意思,做到認(rèn)真仔細(xì)。還需要不斷地嘗試新的內(nèi)容。在不懂得地方要多查多看多問。參考文獻(xiàn):1 馮燕奎, 趙德奎. jsp實(shí)用案例教程m 清華大學(xué)出版社, 2004, 5: 70
24、-1002 王家華 軟件工程m東北大學(xué)出版社2001年3月303頁3 王宜貴 軟件工程m 北京:機(jī)械工業(yè)出版社,2002:20-794 張洪斌 java2高級程序設(shè)計m中科多媒體出版社 2001年11月 85-905 jim arlow uml2.0 and the unified processm機(jī)械工業(yè)出版社 2006年6月 30-406 孫鑫編著java web開發(fā)詳解m電子工業(yè)出版社,2006189-2747 林上杰,林康司編著jsp2.0技術(shù)手冊m電子工業(yè)出版社,20043-68 薩師煊,王珊.數(shù)據(jù)庫系統(tǒng)概論(第三版)m.北京:高等教育出版社,1998.9 蔡劍,景楠.java we
25、b應(yīng)用開發(fā):j2ee和tomcatm.北京:清華大學(xué)出版社,2004.附錄:程序清單postdao.java:public class postdao private dbhelp db = new dbhelp();public int save(post post) string sql = insert into t_post(title,content,createdate,uid,bid,clicknum,vip,state) values(?,?,?,?,?,?,?,?);return db.executesql(sql, post.gettitle(),post.getconte
26、nt(),post.getcreatedate(),post.getuid(),post.getbid(),post.getclicknum(),post.getvip(),post.getstate();public long getcountbybid(int bid) string sql = select count(*) from t_post as p where bid = ? ;return db.queryforcount(sql, bid);public page findbybid(int bid,int currpage,int pagesize) page page
27、= new page(getcountbybid(bid), currpage,pagesize);stringbuilder sb = new stringbuilder();sb.append(select p.id,title,content,p.createdate,uid,bid,clicknum,vip,state,u.id as userid,username,password,email,pic,u.createdate as usercreatedate, u.active,u.code,(select count(*) from t_repost where pid = p
28、.id) as repostnum );sb.append(from t_post as p );sb.append(left join t_user as u );sb.append(on p.uid = u.id );sb.append(where bid = ? order by p.id desc limit ?,?);list list = db.queryforlist(sb.tostring(), new postrowmapper(), bid,page.getstartindex(),page.getpagesize();page.setpagelist(list);retu
29、rn page;public post findbyid(int id) stringbuilder sql = new stringbuilder();sql.append(select p.id,title,content,p.createdate,uid,bid,clicknum,vip,state,u.id as userid,username,password,email,pic,u.createdate as usercreatedate, u.active,u.code,(select count(*) from t_repost where pid = p.id) as rep
30、ostnum );sql.append(from t_post as p );sql.append(left join t_user as u );sql.append(on p.uid = u.id );sql.append(where p.id = ? );return db.queryforobject(sql.tostring(), new postrowmapper(), id);private class postrowmapper implements rowmapper public post mapperrow(resultset rs) throws sqlexceptio
31、n post post = new post();post.setbid(rs.getint(bid);post.setclicknum(rs.getint(clicknum);post.setcontent(rs.getstring(content);post.setcreatedate(rs.getstring(createdate);post.setid(rs.getint(id);post.setstate(rs.getint(state);post.settitle(rs.getstring(title);post.setuid(rs.getint(uid);post.setvip(
32、rs.getint(vip);post.setrepostnum(rs.getint(repostnum);user user = new user();user.setactive(rs.getint(active);user.setcode(rs.getstring(code);user.setcreatedate(rs.getstring(usercreatedate);user.setemail(rs.getstring(email);user.setid(rs.getint(userid);user.setpassword(rs.getstring(password);user.se
33、tpic(rs.getstring(pic);user.setusername(rs.getstring(username);post.setuser(user);return post;public int update(post post) string sql = update t_post set clicknum = ? where id = ?;return db.executesql(sql, post.getclicknum(),post.getid();repostdao.java:public class repostdao private dbhelp db = new dbhelp();/* * 保存回帖 * param repost * return */public int save(repost repost) string sql = insert into t_repost(title,content,createdate,uid,state,pid) values(?,?,?,?,?,?);return db.executesql(sql, repost.gettitle(),repost.getcontent(),repost.getcreatedate(),repost.getuid(),repost.getstate(),repost.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代詞曲在兒童文學(xué)中的地位與作用-全面剖析
- 媒介采購承包協(xié)議
- 房產(chǎn)拍賣合約標(biāo)準(zhǔn)
- 信息服務(wù)業(yè)商業(yè)模式重構(gòu)-全面剖析
- 城市綠洲設(shè)計策略-全面剖析
- 湖南省2025屆高三下學(xué)期“一起考”大聯(lián)考(模擬二)數(shù)學(xué)試題(原卷版+解析版)
- 2025年慢性病管理質(zhì)量改進(jìn)計劃
- 醫(yī)院供應(yīng)鏈管理崗位職責(zé)
- 道法六上全冊線上教學(xué)計劃與策略
- 關(guān)于感恩母親演講稿模板匯編6篇
- 年標(biāo)準(zhǔn)二手房買賣合同6篇
- 反恐職責(zé)和制度
- 2025年消防應(yīng)急救援指揮考試題庫:消防應(yīng)急救援指揮員現(xiàn)場救援與指揮試題
- 專題11 浮力 課件中考物理復(fù)習(xí)
- 2025年春季學(xué)期形勢與政策第二講-中國經(jīng)濟(jì)行穩(wěn)致遠(yuǎn)講稿
- 《橋梁工程中的預(yù)應(yīng)力混凝土技術(shù)》課件
- 人教部編古詩三首涼州詞完美課件
- 外研版(2025版)七年級下冊英語Unit 1~3+期中共4套測試卷(含答案)
- 大班小小圖書管理員
- 門窗、欄桿工程施工組織設(shè)計方案
- AI應(yīng)用端行業(yè)研究報告:AI工業(yè)信息化
評論
0/150
提交評論