JavaEE课程设计个人账务统计.docx
《JavaEE课程设计个人账务统计.docx》由会员分享,可在线阅读,更多相关《JavaEE课程设计个人账务统计.docx(26页珍藏版)》请在冰豆网上搜索。
JavaEE课程设计个人账务统计
软件学院
课程设计报告书
课程名称JavaEE与中间件
设计题目个人账务统计系统
专业班级软件工程10-04班
学号1020010432
姓名张小龙
指导教师刘佳旭
2013年1月
目录
1设计时间2
2设计目的2
3设计任务2
4设计内容2
4.1需求分析2
4.1.1总体目标2
4.1.2具体目标3
4.1.3系统数据建模(ER图)4
4.1.4系统功能建模(数据流程图)4
4.1.5数据字典5
4.2总体设计7
4.3详细设计9
4.3.1模块详细设计9
4.3.2流程设计12
4.4运行与测试13
4.5主要源代码18
5总结与展望24
参考文献25
成绩评定25
1设计时间
2013年1月21日—2013年1月24日
2设计目的
JavaEE课程设计是对所学JavaEE与中间件课程的小结,是提高学生对所学知识综合应用能力的一种方式,是集中实践性环节之一。
要求同学们对课程中所学习到的知识综合运用,开发有一定规模的JavaWeb程序。
3设计任务
个人账务统计系统设计任务:
(一)必备功能说明:
⑴功能描述:
用户以合法身份登录系统后,才能进行所有操作;用户可以添加、查看和删除账务信息(账务类型(包括支出和收入两种)、数额(人民币)、日期、备注(存储说明信息,如购买了什么东西,或发了工资还是福利津贴等));用户可以统计某个时间段内的支出总货币数目和收入总货币数目。
⑵添加账务信息
⑶查看账务信息
⑷删除账务信息
⑸分别统计某个时间段内的收入和支出总额
(二)开发语言与开发环境:
MyEclipse、Java、数据库(sqlserver2000、mysql、oracle等任选一种)
4设计内容
4.1需求分析
4.1.1总体目标
本系统是针对用户要求,使用计算机对自己日常的资金的收入、支出以及相关的各种信息进行记录、修改、添加、删除、统计等操作,并实现对信息进行统计设计的一种现代化个人财务管理软件。
经过分析,本系统需要具有以下功能:
1)能够实现个人财务管理方面各项功能,能成功的对用户各种信息进行管理。
2)实现查询、统计、删除、添加数据方便,数据的稳定性和可靠性好。
3)能够实现按日期查询。
4)拥有良好的人机交互界面。
4.1.2具体目标
本系统具有以下几个功能模块:
用户登录模块、查看账务信息模块、添加账务信息模块、删除账务信息模块、统计账务信息模块。
用户登录模块为用户分配账号密码使得个人的财务信息具有隐私性,收支管理各个模块能有效的管理用户的现金,可以进行添加,查询,删除操作,统计模块使得用户能够查询用户一段时间的收支情况。
各个功能模块描述:
1)用户登录模块:
系统正常登录,并跳转到主页面。
2)查看账务信息模块:
系统正常显示所有存储的信息。
3)添加账务信息模块:
系统正常添加所输入的信息。
4)删除账务信息模块:
系统正常删除所要删除的项目。
5)统计账务信息模块:
系统正常统计所输入的时间段内的收入与支出账务。
对于个人财务管理系统,我们要求软件满足用户对个人财务的隐私性管理,确保在用户以外的其他人使用软件对其信息进行操作,所以要采用用户注册和登录制度,确保用户对自己财务信息的隐私管理。
性能需求:
稳定性:
本系统为财务管理系统,多为查询、修改、删除、添加数据等操作,要求数据的稳定性好。
可靠性:
用户财务数据多比较重要,要求系统具有数据备份,数据恢复等性能。
安全性:
系统设计个人银行账号以及密码的保存,要求系统提供加密保存等安全措施,即要求系统有较高的安全性能。
4.1.3系统数据建模(ER图)
图4-1系统ER图
4.1.4系统功能建模(数据流程图)
简称DFD,它用来描述目标系统的逻辑结构,它是由实体部分,处理部分,数据存储部分和数据流四部分组成。
图4-2顶层数据流程图
图4-3一层数据流程图
4.1.5数据字典
数据字典是对数据流图的解释和说明,包含的内容如下:
⑴数据元素:
表4-1数据元素表
数据元素名类型长度说明
用户名字符型50用户登录的名字
密码字符型50用户登录的密码
ID整形8账务的编号
日期日期型8账务的记录日期
类型字符型50账务的类型,分为收入与支出
数额双精度浮点数8账务的金额,单位元
备注字符型50账务的相关备注信息
⑵数据流:
表4-2数据流表
数据流名来源去向简述
用户信息用户用户信息表用户个人基本信息
账务信息用户账务信息表用户账务相关信息
⑶数据存储:
表4-3数据存储表
数据存储名简述组成
用户信息表用户登录的用户名和密码用户名+密码
账务信息表用户的账务信息ID+日期+类型+数额+备注
4.2总体设计
一、系统层次图
图4-4系统层次图
二、数据库设计
本系统包含两个数据库表,分别是t_user和ConsumeRecord。
下面是两个数据库表的设计和录入内容的截图:
1)t_user表
图4-5t_user设计截图
图4-6t_user数据录入截图
2)ConsumeRecord表
图4-7ConsumeRecord设计截图
图4-8ConsumeRecord数据录入截图
4.3详细设计
4.3.1模块详细设计
本系统具有以下几个功能模块:
用户登录模块、查看账务信息模块、添加账务信息模块、删除账务信息模块、统计账务信息模块。
用户登录模块为用户分配账号密码使得个人的财务信息具有隐私性,收支管理各个模块能有效的管理用户的现金,可以进行添加,查询,删除操作,统计模块使得用户能够查询用户一段时间的收支情况。
1)用户登录模块流程图:
图4-9用户登录模块流程图
2)查看账务信息模块流程图:
图4-10查看账务信息模块流程图
3)添加账务信息模块流程图:
图4-11添加账务信息模块流程图
4)删除账务信息模块流程图:
图4-12删除账务信息模块流程图
5)统计账务信息模块流程图:
图4-13统计账务信息模块流程图
4.3.2流程设计
本系统采用struts2框架,用到了和数据库有关的最基本的方法定义,包括增、删、改、查等。
主要Action类与页面的设计如下:
1)类和方法的说明:
表4-4类和方法的相关说明
包名类名/方法名功能说明
actionLifeAction.java包含所有action
actionlogin()用户登录的方法
actionsearchRecord()查看账务信息的方法
actionaddRecord()添加账务信息的方法
actiondelectRecord()删除账务信息的方法
actioncalrecord()统计账务信息的方法
daoLifeDAO.java与数据库的交互
domainConsumeRecord.java定义数据库表的建立
domainUser.java定义数据库表的建立
serviceLifeService.java面向接口的中间层次的服务类
utilDBConnection.javajava中工具辅助层
2)MVC架构
图4-14MVC架构图
3)页面设计的说明:
表4-5页面设计表
页面名功能说明
login.jsp用户登录页面
main.jsp系统主页面
left.jsp主页面左边部分
top.jsp主页面顶部设计
index.jsp主页面布局
searchRecord.jsp查看账务信息页面
addRecord.jsp添加账务信息页面
delectRecord.jsp删除账务信息页面
calRecord.jsp输入查询时间段前的统计页面
calculator,jsp计算收入与支出之后的统计页面
4.4运行与测试
一、运行
1)用户登录:
图4-15登录页面login.jsp
2)登录成功后的主页面:
图4-16登录成功后的主页面
3)查看账务信息页面:
图4-17查看账务信息页面
4)添加账务信息页面:
图4-18添加信息前的添加页面
图4-19添加成功后的页面
5)删除账务信息页面:
图4-20删除前的删除页面
图4-21删除成功后的删除页面
6)统计账务信息页面:
图4-22输入统计时间段前的统计页面
图4-23成功计算收入与支出后的统计页面
二、测试
此处采用的是黑盒测试法,及主要测试系统的每个功能是否能正确运作。
以下为接受测试的各个功能模块描述:
1)用户登录模块:
系统能否正常登录,并跳转到主页面。
2)查看账务信息模块:
系统能否正常显示所有存储的信息。
3)添加账务信息模块:
系统能否正常添加所输入的信息。
4)删除账务信息模块:
系统能否正常删除所要删除的项目。
5)统计账务信息模块:
系统能否正常统计所输入的时间段内的收入与支出账务。
4.5主要源代码
1.action:
packageaction;
//省略了变量定义以及set、get方法
publicStringlogin(){
user.setName(name);
user.setPassword(password);
LifeServicelifeService=newLifeService();
if(lifeService.checkUser(user)==true)
return"success";
else
return"failure";
}
publicStringsearchRecord(){
LifeServicelifeService=newLifeService();
Listlist=lifeService.getRecord();
ActionContextact=ActionContext.getContext();
Maprequest=(Map)act.get("request");
request.put("searchrecord",list);
return"searchRecord";
}
publicStringaddRecord(){
ConsumeRecordconsumeRecord=newConsumeRecord();
consumeRecord.setExtre(extre1);
consumeRecord.setCostclass(costclass1);
consumeRecord.setDate(date1);
consumeRecord.setMoney(money1);
LifeServicelifeService=newLifeService();
lifeService.getAddRecord(consumeRecord);
Listlist=lifeService.getRecord();
ActionContextact=ActionContext.getContext();
Maprequest=(Map)act.get("request");
request.put("searchrecord",list);
return"addRecords";
}
publicStringdelectRecord(){
ConsumeRecordconsumeRecord=newConsumeRecord();
consumeRecord.setId(id);
LifeServicelifeService=newLifeService();
lifeService.getDeleteRecord(consumeRecord);
Listlist=lifeService.getRecord();
ActionContextact=ActionContext.getContext();
Maprequest=(Map)act.get("request");
request.put("searchrecord",list);
return"delectRecords";
}
publicStringcalRecord(){
LifeServicelifeService=newLifeService();
ConsumeRecordconsumeRecord=newConsumeRecord();
Listlist=lifeService.getcalRecord(consumeRecord);
Listl=lifeService.getRecord();
floatcost=0,earn=0;
for(Iteratorit=list.iterator();it.hasNext();)
{
ConsumeRecordcos=(ConsumeRecord)it.next();
if(cos.getDate().getTime()>=stadate.getTime()&cos.getDate().getTime()<=enddate.getTime())
if(cos.getCostclass().equals("支出"))
cost+=cos.getMoney();
else
earn+=cos.getMoney();
}
ActionContextact=ActionContext.getContext();
Maprequest=(Map)act.get("request");
request.put("cost",cost);
request.put("earn",earn);
request.put("searchrecord",l);
return"calRecords";
}
}
2.struts.xml
xmlversion="1.0"encoding="GBK"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
"http:
//struts.apache.org/dtds/struts-2.0.dtd">
--处理中文乱码-->
--此处的class属性值不是实际的类-->
/index.jsp
/login.jsp
/searchRecord.jsp
/addRecord.jsp
/delectRecord.jsp
/calRecord.jsp
/addRecord.jsp
/delectRecord.jsp
/calculator.jsp
3.xml
xmlversion="1.0"encoding="UTF-8"?
>
xsi="http:
//www.w3.org/2001/XMLSchema-instance"xmlns="xmlns:
web="xsi:
schemaLocation="version="2.5">
struts2
org.apache.struts2.dispatcher.FilterDispatcher
struts2
/*
index.jsp
4.addRecord.jsp
formaction="add">
ID | 类型 | 数额(单位: 元) | 日期 | 备注 |
---|
iteratorvalue="#request.searchrecord">
propertyvalue="id"> property> | propertyvalue="costclass"> property> | propertyvalue="money"> property> | propertyvalue="date"> property> | propertyvalue="extre"> property> |
iterator>
<%--radiolist="#{'1':
'收入','2':
'支出'}"label="类型"name="costclass1"listKey="value"value='1'>
radio>--%>
类型 | selectlist="{'收入','支出'}"name="costclass1"value="收入"> select> |
数额(单位: 元) | textfieldname="money1"/> |
日期 | textfieldname="date1"/> |
备注 | textfieldname="extre1"/> |
submitvalue="添加"/>
form>
5.calculator.jsp
formaction="calculator">
ID | 类型 | 数额(单位: 元) | 日期 | 备注 |
---|
iteratorvalue="#request.searchrecord">
propertyvalue="id"> property> | propertyvalue="costclass"> property> | propertyvalue="money"> property> | propertyvalue="date"> property> |
展开阅读全文
相关搜索
资源标签