




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件学院课程设计报告书课程名称JavaEE与中间件设计题目个人账务统计系统专业班级软件工程10-04班学号1020010427姓名杨慧荣指导教师刘佳旭2013年1月目录1设计时间 32设计目的 33设计任务 33.1任务说明 33.2系统目标 33.3开发语言与开发环境: 34设计内容 34.1需求分析 34.1.1总体目标 34.1.2具体目标 44.1.3系统数据建模(ER图) 44.1.4系统功能建模(数据流程图) 54.1.5数据字典 54.2总体设计 64.2.1系统层次图 64.2.2数据库设计 64.3详细设计 64.3.1模块设计 74.3.2流程设计 94.3.3主要源代码 94.4运行与测试 225总结与展望 25参考文献 27成绩评定 271设计时间2013年1月21~2013年1月27日2设计目的JavaEE课程设计是对所学JavaEE与中间件课程的小结,是提高学生对所学知识综合应用能力的一种方式,是集中实践性环节之一。要求同学们对课程中所学习到的知识综合运用,开发有一定规模的JavaWeb程序。3设计任务3.1任务说明设计个人帐务管理系统,要求用户以合法的身份登录后可以对系统进行操作,用户可以查看,添加,删除和计算某段时间内帐务的收入和支出信息等。帐务信息包括收入和支出两种,还有日期和备注。3.2系统目标软件开发的意图便于用户对个人的账务进行统计,方便查看个人的账务情况。如用户对个人基本账务信息(如收入数额、备注、日期等)进行录入、查询、、删除、计算总开支数额等。3.3开发语言与开发环境:MyEclipse、Java、数据库(sqlserver2000、mysql、oracle等任选一种)4设计内容4.1需求分析4.1.1总体目标用户以合法身份登录系统后,才能进行所有操作;用户可以添加、查看和删除账务信息(账务类型(包括支出和收入两种)、数额(人民币)、日期、备注(存储说明信息,如购买了什么东西,或发了工资还是福利津贴等));用户可以统计某个时间段内的支出总货币数目和收入总货币数目。4.1.2具体目标(1)合法用户登录(2)添加账务信息(3)查看账务信息(4)删除账务信息(5)分别统计某个时间段内的收入和支出总额4.1.3系统数据建模(ER图)用户用户密码用户名密码用户名图4.1.1用户E-R图账务信息账务信息序号日期备注类型数额图4.1.2账务信息E-R图用户用户用户名密码登录个人账务统计系统用户帐户信息序号日期备注类型数额图4.1.3个人账务统计信息E-R图4.1.4系统功能建模(数据流程图)登录login.jsp登录login.jsp密码正确登录成功页面删除信息添加信息统计信息显示信息YN图4.1.4-1个人账务统计信息数据流程图4.1.5数据字典数据流名称:用户数据流名称:用户登录信息定义:用户登录信息=用户名+密码描述:是用户登录系统的凭据,只有输入正确有效的用户信息才能登录系统数据流名称:用户帐户信息定义:用户帐户信息=序号+类型+数额+日期+备注描述:用于提供用户帐户的收入支出信息,包括日期、数额及原因等数据流名称:统计信息定义:收入数额+支出数额描述:用于提供某一时间段内用户账户收入和支出的总额4.2总体设计4.2.1系统层次图个人个人账务信息管理系统统计信息删除信息统计信息删除信息添加信息显示信息图4.2.1个人账务信息系统层次图4.2.2数据库设计表4.2.2-1账务信息数据库设计列名类型长度ano(标志,自增1)typenumdatetimeremarkintvarcharfloatdatetimevarchar45088504.3详细设计开始4.3.1模块设计开始输入输入用户名/密码验证验证用户名/密码NNYY登录登录成功并跳转结束结束图4.3.1登录界面模块设计开始开始登录成功页面登录成功页面删除页面删除页面显示信息页面结束结束图4.3.2账务查询删除界面模块设计开始开始登录登录成功页面输入账户信息增加输入账户信息增加信息页面结束结束图4.3.3添加账务信息模块设计开始开始登录登录成功页面统计统计信息页面输入开始、截止时间输入开始、截止时间统计结果页面统计结果页面结束结束图4.3.4统计账务信息模块设计开始4.3.2流程设计开始登录登录页面输入输入用户名、密码验证验证用户名、密码登录登录成功页面统计统计输入输入统计时间统计结果删除增加显示统计结果删除增加显示输入账户信息结束结束4.3.3主要源代码个人账务信息类:publicclassAccount{privateintano;privateStringtype;privatedoublenum;privateDatedatetime;privateStringremark;}用户登陆控制Action:publicclassLoginActionextendsActionSupport{ privateStringusername; privateStringpassword; publicStringcheck() { if(username.equals("ll496514761")&&password.equals("yang05282819")) return"success"; else return"failure"; }}用户登录信息输入校验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个字符,且由字母数字下划线构成</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个字符,且由字母数字下划线构成</message> </field-validator> </field></validators>查询账务信息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;}}删除账务信息DAO:publicvoiddeleteAccount(intano){ Connectioncon=DBConnection.getConnection(); try{ PreparedStatementps=con.prepareStatement("deletefromzhangwuwhereano=?"); ps.setInt(1,ano); ps.executeUpdate(); mit(); con.close(); }catch(SQLExceptione){ e.printStackTrace(); }}增加账务信息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(); }}统计账务信息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;}查询账务信息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";}删除账务信息Action:publicStringdeleteaccount(){ HttpServletRequestrequest=ServletActionContext.getRequest(); intano=Integer.parseInt(request.getParameter("ano")); AccountServiceaccountService=newAccountService(); accountService.deleteAccount(ano); return"deleteaccount";}增加账务信息及校验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","类型应为“收入”或“支出”"); if(num.equals("")) this.addFieldError("num","数额不能为空"); elseif(check(num)==false) this.addFieldError("num","数额必须为数字"); elseif(Double.parseDouble(num)<=0) this.addFieldError("num","数额必须大于等于0"); if(datetime.equals("")) this.addFieldError("datetime","日期不能为空"); elseif(check2(datetime)==false) this.addFieldError("datetime","日期格式应为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"; }}统计账务信息及校验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","日期格式应为xxxx-xx-xx"); if(stop.equals("")) this.addFieldError("stop","日期不能为空"); elseif(check(stop)==false) this.addFieldError("stop","日期格式应为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属性值不是实际的类--><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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CI 467-2024复合集流体(铜箔)
- T/SHBX 012-2024制药一次性工艺袋泄漏测试方法压力衰减法
- 上蔡小学六年级数学试题
- 上海安全管理试题及答案
- 2025新版二手房房屋买卖合同2篇
- 正规版个人租房合同范本4篇
- 临时工委托合同6篇
- 代理合同-产品代理销售合同2篇
- 工程返佣合同7篇
- T/ZHCA 029-2024化妆品舒缓功效测试角质形成细胞白介素-8生成抑制法
- 金属非金属地下矿山安全避险“六大系统”课件
- TCSAE 97-2019 汽车紧固件锌铝涂层技术条件
- 会计原始凭证说课公开课一等奖市优质课赛课获奖课件
- 伍德密封强度计算
- 产妇可以吃蛹虫草吗:哺乳期妇女可以吃蛹虫草吗
- 《化工原理》课程思政教学案例(一等奖)
- 以助产士为主导的连续护理模式的发展现状
- 国家统一法律职业资格官方题库:刑事诉讼法-考试题库(含答案)
- 【超星尔雅学习通】《美术鉴赏》2020章节测试题及答案
- 多发性损伤的急诊
- 新高考统编教材必背古诗文-教材外篇目(广东省适用)
评论
0/150
提交评论