《软件工程综合实习 家庭理财管理系统.doc》由会员分享,可在线阅读,更多相关《软件工程综合实习 家庭理财管理系统.doc(20页珍藏版)》请在三一办公上搜索。
1、软件工程综合实习任务书 系 专业 班级课程设计名称: 设计题目: 家庭理财管理系统 完成期限:自 年 月 日至 年 月 日共 周设计依据、要求及主要内容(可另加附页):一、设计依据1软件工程综合实习任务书2软件工程综合实习大纲二、设计要求程序设计综合实习内容主要运用面向对象程序设计和数据库技术等,完成一个实践性较强、综合性的程序设计课题。1、 根据题目要求,划分不同的模块来完成相应的功能。2、 用户界面要友好。3、 功能模块的设计要合理。4、 程序测试要求使用:全部合法数据;整体非法数据;局部非法数据。进行程序测试,以保证程序的稳定。5、 综合实习结束交程序设计综合实习报告。三、主要内容 (替
2、换此段内容:用一段话,写出你要完成的系统名称、主要功能等)四、参考资料1Database System Concepts(Fourth Edition) Abraham Silberschatz Henry F.Korth S.Sudarshan Higher Education Press2王珊.数据库系统概论(第四版). 高等教育出版社,2007.3罗运模.完全掌握SQL Server 2000.人民邮电出版社,2001.4白尚旺等.PowerDesigner软件工程技术.电子工业出版社,2004.5张海藩.软件工程概论(第五版).清华大学出版社,2007. 指导教师(签字):_ 教研室主
3、任(签字):_ 批准日期: 2011年 12月 19 日目 录一、需求分析1.1项目背景随着社会主义的不断发展与进步,人们的生活部断完善,家庭的收入也越来越多,人们的收入再不是用来解决生计问题了,当今社会是一个讲求效率的社会,时间就是金钱。开发简单,易于操作的,管理软件不仅可以节省时间,还可以避免浪费人力,物力,提高效率。待开发系统是一个对家庭理财管理系统,简单,易学,将成为家庭理财的的好帮手。本系统为家庭理财管理系统,通过建立家庭理财系统,使家庭财产管理工作规范化、制度化和程序化,减少此方面的不必要的浪费的时间与精力,避免管理的随意性,提高财产信息处理的速度和准确性,提高决策的水平。将常规的
4、工作交由计算机完成,提高管理家庭财产管理的效率。1.2功能本系统家庭成员共同使用,故在本系统中将设定两种用户身份,并对本系统提出以下需家庭成员功能:a. 基本信息设置 银行信息浏览。 银行信息录入 家庭成员录入。 家庭成员浏览。 收支分类信息管理。系统管理员功能:a.日常收支管理 添加日常收支信息,包括日期、收支分类、名称、收支金额等信息。 修改日常收支信息。 删除日常收支信息。 查看日常收支信息。b.资产账户信息管理 添加资产账户信息,包括资金类型、银行名称、存款类型、银行账号开户人、账户金额等信息。 修改资产账户信息。 查看资产账户信息。c.银行往来管理 添加银行往来信息,包括银行名称、交
5、易日期、交易类型、银行账号、账户金额、储蓄类型等信息。 修改银行往来信息。 查看银行往来信息。d. 数据统计管理 日常收支统计,按月份查询日常收支的流水帐。 银行交易统计,按月份查询银行交易信息。 家庭资产统计,统计家庭的存款总数、现金总数、总收入和总支出数据。b.日常收支管理1.3用例模型系统管理员用例图家庭成员用例图 1.4 数据流图1.4.1 顶层数据流图D1 财产信息D2 财产去向信息家庭账务管理员家庭各个成员 1财产信息事务处理事务 2信息存入系统以前财产信息财产信息新财产信息财产信息1.4.2家庭理财系统功能及数据流图D1 存储财产信息家庭账务管理员 1.1接受新财产信息新财产信息
6、事务 1.2更新财产信 息财产信息 1.3信息存入系统财产信息 2新信息存入系统D2 财产去向信息新财产信息财产信息家庭各个成员财产信息1.4.3详细数据流图二、总体设计2.1 模块划分家庭理财管理系统 2.1家庭成员管理模块 2.1.1. 系统管理员登录 2.1.2. 家庭成员信息查询 2.2日常收支信息管理模块 2.2.1. 日常收支信息添加 2.2.2. 日常收支信息删除 2.2.3. 日常收支信息修改 2.2.4. 日常收支信息浏览 2.3资产账户信息管理模块 2.3.1. 账户信息添加 2.3.2账户信息修改 2.3.3. 账户信息查询 2.3.4. 账户信息删除2.2 系统结构图三
7、、数据库设计3.1 实体关系图手机家庭账务管理员Admin管理、查看家庭各成员账务信息登陆姓名收支存取时间金额使用者1n1nn性别出生日期工作单位3.2 数据表结构Accountinfo(收支表)字段名称数据类型字段含义默认值是否外键account_idint财务收支表主键自增否account_datedatetime(8)日期NULL否account_typevarchar(20)收支类型NULL否account_namevarchar(50)收支名称NULL否account_numberint金额NULL否Finainfo(资产信息表)字段名称数据类型字段含义默认值是否外键Idint资产信
8、息表主键自增否Finatypevarchar(80)资金类型NULL否Bankenamevarchar(80)银行名称Null否FinauserVarchar(20)银行开户人Null否FinanumberInt金额Null否User(用户信息表)字段名称数据类型字段含义默认值是否外键Idint用户信息表主键自增否Usernamevarchar(80)用户名称NULL否Passwordvarchar(80)用户密码Null否UseridVarchar(20)用户idNull否四、详细设计4.1 模块设计说明4.1.1 家庭成员管理模块模块名称功能编号功能名称描述家庭成员管理模块(M01)M01
9、1家庭成员注册新加入家庭成员注册M012家庭成员删除删除不合法用户M013系统管理员登录登录系统M014家庭成员信息查询查询家庭成员信息4.1.2 日常收支信息管理模块模块名称功能编号功能名称描述日常收支信息管理模块(M02)M021日常收支信息增加日常收支信息增加M022日常收支信息查询查询日常收支信息M023日常收支信息修改日常收支信息信息修改M024日常收支信息删除删除日常收支信息4.1.3 资产账户信息管理模块模块名称功能编号功能名称描述资产信息管理模块(M03)M031资产账户信息增加资产账户信息增加M032资产账户信息查询查询资产账户信息M033资产账户信息修改资产账户信息修改M0
10、34资产账户信息删除删除资产账户信息五、系统实现 5.1 运行环境硬件环境:处理器:Intel Peteum 4 Core 1.86Ghz内存:2G操作系统:Windows7 Ultimate运行环境:数据库:mysql、Jdk版本:1.6、服务器:tomcat6.0浏览器要求:IE6.0以上或其他非IE内核浏览器5.2 部分代码代码功能实现对数据库中增删改查的操作代码编号P1M0F0R00001 程序源码package com.bank.dao.impl;import java.io.Serializable;import java.lang.reflect.ParameterizedTyp
11、e;import java.sql.SQLException;import java.util.List;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import org.springframework.orm.hibernate3.HibernateCallback;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.bank.dao.I
12、GenericDao;import com.bank.vo.PageBean;public abstract class AGenericHibernateDao extends HibernateDaoSupport implements IGenericDao Class persistentClass;public Class getPersistentClass() return persistentClass;public void setPersistentClass(Class persistentClass) this.persistentClass = persistentC
13、lass;SuppressWarnings(unchecked)public AGenericHibernateDao()/动态代理获得相应的实体对象 this.persistentClass=(Class)(ParameterizedType) getClass().getGenericSuperclass().getActualTypeArguments()0; System.out.println(ageneric:+this.getPersistentClass(); /* * 保存对象到数据库 */public void create(T entity) / TODO Auto-ge
14、nerated method stubthis.getHibernateTemplate().save(entity);/* * 通过id查询 */ public T findById(ID id) / TODO Auto-generated method stubreturn this.getHibernateTemplate().get(persistentClass, id); /* * 通过id删除对象 */public void delete(T entity) / TODO Auto-generated method stubthis.getHibernateTemplate().
15、delete(entity); /* * 更新操作 */public void update(T entity) / TODO Auto-generated method stubthis.getHibernateTemplate().update(entity); /* * return List * 获得全部数据,并存到List中 */public List findAll() / TODO Auto-generated method stubreturn this.getHibernateTemplate().loadAll(persistentClass); /* * return L
16、ist * 按条件查询,并存到List中 */SuppressWarnings(unchecked)public List findByObject(String hql, Object params) / TODO Auto-generated method stubreturn this.getHibernateTemplate().find(hql, params); /* * return PageBean * 按条件查询带分页信息的数据 */public PageBean findByPageBean(final String hql, final Object params,fin
17、al int currentpage, final int pageSize) / TODO Auto-generated method stubreturn this.getHibernateTemplate().execute(new HibernateCallback() public PageBean doInHibernate(Session arg0)throws HibernateException, SQLException / TODO Auto-generated method stubPageBean bean=new PageBean();Query qu=arg0.c
18、reateQuery(hql);for(int i=0;iparams.length;i+)qu.setParameter(i, paramsi);qu.setFirstResult(currentpage-1)*pageSize);qu.setMaxResults(pageSize);bean.setData(qu.list();qu=arg0.createQuery(select count(*) +hql.substring(hql.toLowerCase().indexOf(from);for(int j=0;jparams.length;j+)qu.setParameter(j, p
19、aramsj);bean.setTotalRows(Integer.parseInt(qu.uniqueResult().toString();bean.setCurrentPage(currentpage);bean.setPageSize(pageSize);return bean;);/* * return PageBean * 查询全部信息,带分页信息 */public PageBean findByPageBean(final String hql, final int currentpage, final int pageSize) / TODO Auto-generated me
20、thod stubreturn this.getHibernateTemplate().execute(new HibernateCallback() public PageBean doInHibernate(Session arg0)throws HibernateException, SQLException / TODO Auto-generated method stubPageBean bean=new PageBean();Query qu=arg0.createQuery(hql);qu.setFirstResult(currentpage-1)*pageSize);qu.se
21、tMaxResults(pageSize);bean.setData(qu.list();qu=arg0.createQuery(select count(*) +hql.substring(hql.toLowerCase().indexOf(from);bean.setTotalRows(Integer.parseInt(qu.uniqueResult().toString();bean.setCurrentPage(currentpage);bean.setPageSize(pageSize);return bean;);public void bulkUpdate(String bulk
22、, Object params) / TODO Auto-generated method stubpublic Integer countByObject(String hql, Object param) / TODO Auto-generated method stubreturn null;SuppressWarnings(unchecked)public List find(String hql) / TODO Auto-generated method stubreturn this.getHibernateTemplate().find(hql);return true;retu
23、rn false;代码功能对常用的方法进行抽取封装代码编号P1M0F0R00002 程序源码package com.bank.dao;import java.io.Serializable;import java.util.List;import com.bank.vo.PageBean;public interface IGenericDao public void create(T entity);/实体存入数据库 public T findById(ID id);/通过id查找 public void delete(final T entity); public void update(
24、T entity); public List findAll(); public List findByObject(String hql,Object params); public PageBean findByPageBean(final String hql,final Object params,final int currentpage,final int pageSize); public PageBean findByPageBean(final String hql, final int currentpage, final int pageSize); public voi
25、d bulkUpdate(final String bulk, Object params); public Integer countByObject(final String hql,final Object param); public List find(String hql);5.3系统截图5.3.1用户登录界面5.3.2日常收支管理模块5.3.3资产账户信息管理模块六、系统测试6.1 测试方法本相同采用手动测试方法,主要目的为验证系统中的权限控制、程序的容错性及对非法数据的检验能力。6.2 测试环境硬件环境:处理器:Intel Peteum 4 Core 1.86Ghz内存:2G操
26、作系统:Windows7 Ultimate运行环境:数据库:mysql、Jdk版本:1.6、服务器:tomcat6.0浏览器要求:IE8 谷歌浏览器6.3 测试用例测试功能用户登录测试编号M01T001 用例设计用例编号预期输入预期输出实际输出Case_001aa正常登录正常登录Case_002cc无此用户跳转至主页登陆失败测试功能收支信息删除测试编号M01T002 用例设计用例编号预期输入预期输出实际输出Case_001使用账号登录正常登录正常登录Case_002使用相同账号登录重复登录跳转至主页跳转至主页6.4 测试截图8、总结1.当前系统完成情况a.用户登录b.日常收支信息管理c.资产信
27、息管理d.个性化界面设计2.未完成部分a.基本信息设置模块b.数据统计管理模块3.心得体会在本次实习中,通过自己应用自己所学的知识,基本上完成了一个家庭理财系统。在系统完成期间,遇到了各种各样的困难,但大部分上都能通过资料的查找等方式解决了,本次实习让我积累了不少的项目经验,总结如下:对计算机项目的说明文档有了进一步了解,在项目初期,我们应该确立了项目的完成目的,根据确定的项目题目,进一步明确项目要求,即进行项目需求分析,在分析期间,应该制作出需求分析报告,以书面的形式罗列出项目要求的功能目的,如此能在以后的项目期间更有目的性,确保项目的合格完成。系统设计说明书则进一步说明了要完成项目而进行的
28、系统设计,其中涉及到了编码设计和使用文件设计,这些具体的设计项能让程序编码人员有条理,有具体依据的实施编码,确保项目完成。而数据设计说明书则表明了系统所需要的数据库设计方式,其中说明了系统所需要的数据库名,所包含的数据表,各个数据表的字段定义,以及数据表间的参照关系等;数据表中的数据流图则说明了系统中数据的流动方向,操作中所操作到的数据表。9、参考资料1Database System Concepts(Fourth Edition) Abraham Silberschatz Henry F.Korth S.Sudarshan Higher Education Press2王珊.数据库系统概论(第四版). 高等教育出版社,2007.3罗运模.完全掌握SQL Server 2000.人民邮电出版社,2001.4白尚旺等.PowerDesigner软件工程技术.电子工业出版社,2004.5张海藩.软件工程概论(第五版).清华大学出版社,2007.