版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件學(xué)院課程設(shè)計(jì)報(bào)告書課程名稱JavaEE與中間件設(shè)計(jì)題目個(gè)人賬務(wù)統(tǒng)計(jì)系統(tǒng)專業(yè)班級(jí)軟件工程10-04班學(xué)號(hào)1020010427姓名楊慧榮指導(dǎo)教師劉佳旭2013年1月目錄1設(shè)計(jì)時(shí)間 32設(shè)計(jì)目的 33設(shè)計(jì)任務(wù) 33.1任務(wù)說(shuō)明 33.2系統(tǒng)目標(biāo) 33.3開發(fā)語(yǔ)言與開發(fā)環(huán)境: 34設(shè)計(jì)內(nèi)容 34.1需求分析 34.1.1總體目標(biāo) 34.1.2具體目標(biāo) 44.1.3系統(tǒng)數(shù)據(jù)建模(ER圖) 44.1.4系統(tǒng)功能建模(數(shù)據(jù)流程圖) 54.1.5數(shù)據(jù)字典 54.2總體設(shè)計(jì) 64.2.1系統(tǒng)層次圖 64.2.2數(shù)據(jù)庫(kù)設(shè)計(jì) 64.3詳細(xì)設(shè)計(jì) 64.3.1模塊設(shè)計(jì) 74.3.2流程設(shè)計(jì) 94.3.3主要源代碼 94.4運(yùn)行與測(cè)試 225總結(jié)與展望 25參考文獻(xiàn) 27成績(jī)?cè)u(píng)定 271設(shè)計(jì)時(shí)間2013年1月21~2013年1月27日2設(shè)計(jì)目的JavaEE課程設(shè)計(jì)是對(duì)所學(xué)JavaEE與中間件課程的小結(jié),是提高學(xué)生對(duì)所學(xué)知識(shí)綜合應(yīng)用能力的一種方式,是集中實(shí)踐性環(huán)節(jié)之一。要求同學(xué)們對(duì)課程中所學(xué)習(xí)到的知識(shí)綜合運(yùn)用,開發(fā)有一定規(guī)模的JavaWeb程序。3設(shè)計(jì)任務(wù)3.1任務(wù)說(shuō)明設(shè)計(jì)個(gè)人帳務(wù)管理系統(tǒng),要求用戶以合法的身份登錄后可以對(duì)系統(tǒng)進(jìn)行操作,用戶可以查看,添加,刪除和計(jì)算某段時(shí)間內(nèi)帳務(wù)的收入和支出信息等。帳務(wù)信息包括收入和支出兩種,還有日期和備注。3.2系統(tǒng)目標(biāo)軟件開發(fā)的意圖便于用戶對(duì)個(gè)人的賬務(wù)進(jìn)行統(tǒng)計(jì),方便查看個(gè)人的賬務(wù)情況。如用戶對(duì)個(gè)人基本賬務(wù)信息(如收入數(shù)額、備注、日期等)進(jìn)行錄入、查詢、、刪除、計(jì)算總開支數(shù)額等。3.3開發(fā)語(yǔ)言與開發(fā)環(huán)境:MyEclipse、Java、數(shù)據(jù)庫(kù)(sqlserver2000、mysql、oracle等任選一種)4設(shè)計(jì)內(nèi)容4.1需求分析4.1.1總體目標(biāo)用戶以合法身份登錄系統(tǒng)后,才能進(jìn)行所有操作;用戶可以添加、查看和刪除賬務(wù)信息(賬務(wù)類型(包括支出和收入兩種)、數(shù)額(人民幣)、日期、備注(存儲(chǔ)說(shuō)明信息,如購(gòu)買了什么東西,或發(fā)了工資還是福利津貼等));用戶可以統(tǒng)計(jì)某個(gè)時(shí)間段內(nèi)的支出總貨幣數(shù)目和收入總貨幣數(shù)目。4.1.2具體目標(biāo)(1)合法用戶登錄(2)添加賬務(wù)信息(3)查看賬務(wù)信息(4)刪除賬務(wù)信息(5)分別統(tǒng)計(jì)某個(gè)時(shí)間段內(nèi)的收入和支出總額4.1.3系統(tǒng)數(shù)據(jù)建模(ER圖)用戶用戶密碼用戶名密碼用戶名圖4.1.1用戶E-R圖賬務(wù)信息賬務(wù)信息序號(hào)日期備注類型數(shù)額圖4.1.2賬務(wù)信息E-R圖用戶用戶用戶名密碼登錄個(gè)人賬務(wù)統(tǒng)計(jì)系統(tǒng)用戶帳戶信息序號(hào)日期備注類型數(shù)額圖4.1.3個(gè)人賬務(wù)統(tǒng)計(jì)信息E-R圖4.1.4系統(tǒng)功能建模(數(shù)據(jù)流程圖)登錄login.jsp登錄login.jsp密碼正確登錄成功頁(yè)面刪除信息添加信息統(tǒng)計(jì)信息顯示信息YN圖4.1.4-1個(gè)人賬務(wù)統(tǒng)計(jì)信息數(shù)據(jù)流程圖4.1.5數(shù)據(jù)字典數(shù)據(jù)流名稱:用戶數(shù)據(jù)流名稱:用戶登錄信息定義:用戶登錄信息=用戶名+密碼描述:是用戶登錄系統(tǒng)的憑據(jù),只有輸入正確有效的用戶信息才能登錄系統(tǒng)數(shù)據(jù)流名稱:用戶帳戶信息定義:用戶帳戶信息=序號(hào)+類型+數(shù)額+日期+備注描述:用于提供用戶帳戶的收入支出信息,包括日期、數(shù)額及原因等數(shù)據(jù)流名稱:統(tǒng)計(jì)信息定義:收入數(shù)額+支出數(shù)額描述:用于提供某一時(shí)間段內(nèi)用戶賬戶收入和支出的總額4.2總體設(shè)計(jì)4.2.1系統(tǒng)層次圖個(gè)人個(gè)人賬務(wù)信息管理系統(tǒng)統(tǒng)計(jì)信息刪除信息統(tǒng)計(jì)信息刪除信息添加信息顯示信息圖4.2.1個(gè)人賬務(wù)信息系統(tǒng)層次圖4.2.2數(shù)據(jù)庫(kù)設(shè)計(jì)表4.2.2-1賬務(wù)信息數(shù)據(jù)庫(kù)設(shè)計(jì)列名類型長(zhǎng)度ano(標(biāo)志,自增1)typenumdatetimeremarkintvarcharfloatdatetimevarchar45088504.3詳細(xì)設(shè)計(jì)開始4.3.1模塊設(shè)計(jì)開始輸入輸入用戶名/密碼驗(yàn)證驗(yàn)證用戶名/密碼NNYY登錄登錄成功并跳轉(zhuǎn)結(jié)束結(jié)束圖4.3.1登錄界面模塊設(shè)計(jì)開始開始登錄成功頁(yè)面登錄成功頁(yè)面刪除頁(yè)面刪除頁(yè)面顯示信息頁(yè)面結(jié)束結(jié)束圖4.3.2賬務(wù)查詢刪除界面模塊設(shè)計(jì)開始開始登錄登錄成功頁(yè)面輸入賬戶信息增加輸入賬戶信息增加信息頁(yè)面結(jié)束結(jié)束圖4.3.3添加賬務(wù)信息模塊設(shè)計(jì)開始開始登錄登錄成功頁(yè)面統(tǒng)計(jì)統(tǒng)計(jì)信息頁(yè)面輸入開始、截止時(shí)間輸入開始、截止時(shí)間統(tǒng)計(jì)結(jié)果頁(yè)面統(tǒng)計(jì)結(jié)果頁(yè)面結(jié)束結(jié)束圖4.3.4統(tǒng)計(jì)賬務(wù)信息模塊設(shè)計(jì)開始4.3.2流程設(shè)計(jì)開始登錄登錄頁(yè)面輸入輸入用戶名、密碼驗(yàn)證驗(yàn)證用戶名、密碼登錄登錄成功頁(yè)面統(tǒng)計(jì)統(tǒng)計(jì)輸入輸入統(tǒng)計(jì)時(shí)間統(tǒng)計(jì)結(jié)果刪除增加顯示統(tǒng)計(jì)結(jié)果刪除增加顯示輸入賬戶信息結(jié)束結(jié)束4.3.3主要源代碼個(gè)人賬務(wù)信息類:publicclassAccount{privateintano;privateStringtype;privatedoublenum;privateDatedatetime;privateStringremark;}用戶登陸控制Action:publicclassLoginActionextendsActionSupport{ privateStringusername; privateStringpassword; publicStringcheck() { if(username.equals("ll496514761")&&password.equals("yang05282819")) return"success"; else return"failure"; }}用戶登錄信息輸入校驗(yàn)xml:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEvalidatorsPUBLIC"-//OpenSymphonyGroup//XWorkValidator1.0.2//EN""/xwork/xwork-validator-1.0.2.dtd"><validators> <fieldname="username"> <field-validatortype="requiredstring"> <message>用戶名不能為空</message> </field-validator> <field-validatortype="regex"> <paramname="expression"><![CDATA[\w{6,15}]]></param> <message>用戶名為6-15個(gè)字符,且由字母數(shù)字下劃線構(gòu)成</message> </field-validator> </field> <fieldname="password"> <field-validatortype="requiredstring"> <message>密碼不能為空</message> </field-validator> <field-validatortype="regex"> <paramname="expression"><![CDATA[\w{6,15}]]></param> <message>密碼為6-15個(gè)字符,且由字母數(shù)字下劃線構(gòu)成</message> </field-validator> </field></validators>查詢賬務(wù)信息DAO:publicclassAccountDao{ publicListgetAccount(){ Connectioncon=DBConnection.getConnection(); Listlist=newArrayList(); try{ PreparedStatementps=con.prepareStatement("select*fromzhangwu"); ResultSetrs=ps.executeQuery(); while(rs.next()){ Accountac=newAccount(); ac.setAno(Integer.parseInt(rs.getString("ano"))); ac.setType(rs.getString("type")); ac.setNum(Double.parseDouble(rs.getString("num"))); SimpleDateFormatsimpleFormat=newSimpleDateFormat("yyyy-MM-dd"); try{ ac.setDatetime(simpleFormat.parse(rs.getString("datetime"))); } catch(Exceptione) { e.printStackTrace(); } ac.setRemark(rs.getString("remark")); list.add(ac); } mit(); con.close(); }catch(SQLExceptione){ e.printStackTrace(); } returnlist;}}刪除賬務(wù)信息DAO:publicvoiddeleteAccount(intano){ Connectioncon=DBConnection.getConnection(); try{ PreparedStatementps=con.prepareStatement("deletefromzhangwuwhereano=?"); ps.setInt(1,ano); ps.executeUpdate(); mit(); con.close(); }catch(SQLExceptione){ e.printStackTrace(); }}增加賬務(wù)信息DAO:publicvoidaddAccount(Stringtype,doublenum,Datedatetime,Stringremark){ Connectioncon=DBConnection.getConnection(); try{ PreparedStatementps=con.prepareStatement("insertintozhangwu(type,num,datetime,remark)values(?,?,?,?)"); ps.setString(1,type); ps.setString(2,String.valueOf(num)); SimpleDateFormatsimpleFormat=newSimpleDateFormat("yyyy-MM-dd"); ps.setString(3,simpleFormat.format(datetime)); ps.setString(4,remark); ps.executeUpdate(); mit(); con.close(); }catch(SQLExceptione){ e.printStackTrace(); }}統(tǒng)計(jì)賬務(wù)信息DAO:publicListtongji(Datestart,Datestop){ Connectioncon=DBConnection.getConnection(); Listlist=newArrayList(); try{ PreparedStatementps=con.prepareStatement("selecttype,sum(num)numfromzhangwuwheredatetimebetween?and?groupbytype"); SimpleDateFormatsimpleFormat=newSimpleDateFormat("yyyy-MM-dd"); ps.setString(1,simpleFormat.format(start));ps.setString(2,simpleFormat.format(stop)); ResultSetrs=ps.executeQuery(); while(rs.next()){ Accountac=newAccount(); ac.setType(rs.getString("type")); ac.setNum(Double.parseDouble(rs.getString("num"))); list.add(ac); } mit(); con.close(); }catch(SQLExceptione){ e.printStackTrace(); } returnlist;}查詢賬務(wù)信息Action:publicclassAccountActionextendsActionSupport{ privateintano; privateStringtype; privatedoublenum; privateDatedatetime; privateStringremark; privateStringstart; privateStringstop;publicStringshowaccount(){ AccountServiceaccountService=newAccountService();Listlist=accountService.getAccount();ActionContextact=ActionContext.getContext(); Maprequest=(Map)act.get("request"); request.put("account",list); return"showaccount";}刪除賬務(wù)信息Action:publicStringdeleteaccount(){ HttpServletRequestrequest=ServletActionContext.getRequest(); intano=Integer.parseInt(request.getParameter("ano")); AccountServiceaccountService=newAccountService(); accountService.deleteAccount(ano); return"deleteaccount";}增加賬務(wù)信息及校驗(yàn)Action:publicclassAddaccountActionextendsActionSupport{ privateStringtype; privateStringnum; privateStringdatetime; privateStringremark; publicBooleancheck(Strings) { Booleanb=true; try{ doubled=Double.parseDouble(s); } catch(Exceptione) { b=false; returnb; } returnb; } publicBooleancheck2(Strings) { Booleanb=true; try{ SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); /*Stringtime=df.format(newDate(s));*/ /*Timestampts=Timestamp.valueOf(time);*/ Datedate=df.parse(s); } catch(Exceptione) { b=false; returnb; } returnb; } @Override publicvoidvalidate(){ //TODOAuto-generatedmethodstub if(type.equals("")) this.addFieldError("type","類型不能為空"); elseif(!(type.equals("收入")||type.equals("支出"))) this.addFieldError("type","類型應(yīng)為“收入”或“支出”"); if(num.equals("")) this.addFieldError("num","數(shù)額不能為空"); elseif(check(num)==false) this.addFieldError("num","數(shù)額必須為數(shù)字"); elseif(Double.parseDouble(num)<=0) this.addFieldError("num","數(shù)額必須大于等于0"); if(datetime.equals("")) this.addFieldError("datetime","日期不能為空"); elseif(check2(datetime)==false) this.addFieldError("datetime","日期格式應(yīng)為xxxx-xx-xx"); if(remark.equals("")) this.addFieldError("remark","類型不能為空"); } publicStringaddaccount() { SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); /*Stringtime=df.format(newDate(datetime)); Timestampts=Timestamp.valueOf(time);*/ try{ Datedate=df.parse(datetime); AccountServiceaccountService=newAccountService(); accountService.addAccount(type,Double.parseDouble(num),date,remark); } catch(Exceptione) { e.printStackTrace(); } return"addaccount"; }}統(tǒng)計(jì)賬務(wù)信息及校驗(yàn)Action:publicclassAddupaccountActionextendsActionSupport{ privateStringstart; privateStringstop; publicStringgetStart(){ returnstart; } publicvoidsetStart(Stringstart){ this.start=start; } publicStringgetStop(){ returnstop; } publicvoidsetStop(Stringstop){ this.stop=stop; } publicBooleancheck(Strings) { Booleanb=true; try{ SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); /* Stringtime=df.format(newDate(s)); Timestampts=Timestamp.valueOf(time);*/ Datedate=df.parse(s); } catch(Exceptione) { b=false; returnb; } returnb; } @Override publicvoidvalidate(){ //TODOAuto-generatedmethodstub if(start.equals("")) this.addFieldError("start","日期不能為空"); elseif(check(start)==false) this.addFieldError("start","日期格式應(yīng)為xxxx-xx-xx"); if(stop.equals("")) this.addFieldError("stop","日期不能為空"); elseif(check(stop)==false) this.addFieldError("stop","日期格式應(yīng)為xxxx-xx-xx"); } publicStringtongji() { SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); /*Stringtime1=df.format(newDate(start)); Stringtime2=df.format(newDate(stop)); Timestampts1=Timestamp.valueOf(time1); Timestampts2=Timestamp.valueOf(time2);*/ try{ Datedate1=df.parse(start); Datedate2=df.parse(stop); AccountServiceaccountService=newAccountService(); Listlist=accountService.tongji(date1,date2); ActionContextact=ActionContext.getContext(); Maprequest=(Map)act.get("request"); request.put("tongji",list); } catch(Exceptione) { e.printStackTrace(); } return"result"; }}Struts.xml配置文件:<?xmlversion="1.0"encoding="GBK"?><!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""/dtds/struts-2.0.dtd"><struts> <!--處理中文亂碼--> <constantname="struts.i18n.encoding"value="gbk"></constant> <packagename="com"extends="struts-default"> <!--此處的class屬性值不是實(shí)際的類--><actionname="login"class="action.LoginAction"method="check"><resultname="input">/login.jsp</result><resultname="success">/index.jsp</result><resultname="failure">/login.jsp</result></action><actionname="showaccount"class="action.AccountAction"method="showaccount"><resultname="showaccount">/showaccount.jsp</result></action><actionname="deleteaccount"class="action.AccountAction"method="deleteaccount"><resultname="deleteaccount"type="redirect-action">showaccount.action</result></action><actionname="addaccount"class="action.AddaccountAction"method="addaccount"><resultname="input">/addaccount.jsp</result><resultname="addaccount">/adda
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 十六橋課件教學(xué)課件
- 04品牌授權(quán)塔吊品牌授權(quán)使用合同
- 2024年度汽車租賃與售后服務(wù)合同
- 2024年度道路照明工程燈具維修勞務(wù)分包合同
- 2024年屋面瓦鋪設(shè)工程項(xiàng)目合同
- 2024家庭裝飾裝修的合同模板
- 2024年度衛(wèi)星導(dǎo)航系統(tǒng)應(yīng)用合作協(xié)議
- 2024年度軟件開發(fā)與測(cè)試合同
- 2024年度知識(shí)產(chǎn)權(quán)許可合同.do
- 2024年度物流配送服務(wù)承包商的選取協(xié)議
- 3C戰(zhàn)略三角模型
- 高標(biāo)準(zhǔn)農(nóng)田建設(shè)示范工程質(zhì)量管理體系與措施
- 學(xué)生頂崗實(shí)習(xí)安全教育課件
- 公司組織架構(gòu)圖模板課件
- 遼寧省葫蘆島市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 植物種子的傳播方式課件
- 電纜敷設(shè)施工方案及安全措施
- 百合干(食品安全企業(yè)標(biāo)準(zhǔn))
- 肺血栓栓塞癥臨床路徑(縣級(jí)醫(yī)院版)
- 國(guó)開成本會(huì)計(jì)第10章綜合練習(xí)試題及答案
- T∕CSCS 012-2021 多高層建筑全螺栓連接裝配式鋼結(jié)構(gòu)技術(shù)標(biāo)準(zhǔn)-(高清版)
評(píng)論
0/150
提交評(píng)論