软件工程 家庭财务管理系统的设计与实现最终稿Word文档格式.docx
《软件工程 家庭财务管理系统的设计与实现最终稿Word文档格式.docx》由会员分享,可在线阅读,更多相关《软件工程 家庭财务管理系统的设计与实现最终稿Word文档格式.docx(55页珍藏版)》请在冰豆网上搜索。
![软件工程 家庭财务管理系统的设计与实现最终稿Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/6/ed370c0f-f2a6-47de-a53c-dde3661dfd0e/ed370c0f-f2a6-47de-a53c-dde3661dfd0e1.gif)
家庭财务管理系统是一个家庭必需的信息管理系统。
通过我们对家庭财务管理的详细调查,大部分家庭对于财务的管理还是局限在使用传统的人工纸质记账管理的方式,这种方式存在许多缺点,如:
效率很低、安全性差、管理难和产生大量纸质文件等。
所以需要一个家庭财务管理系统来为每一个家庭的管理者提供充足的信息和快捷的查询手段。
家庭财务管理系统的信息数据主要是家庭管理员对家庭的收支消费信息的输入,由于一个家庭每天都会有收入和支出的情况,导致数据库时时有更新,因此,能够及时有效的处理数据,就需要建立一个数据库来存储数据。
该家庭财务管理系统的设计与实现,主要包括后台数据库的建立和维护以及前台应用程序的开发两个方面。
对于后台的数据库建立需要数据安全性好,对于前端应用程序则需要功能完善和易使用的特点。
2.1.1系统功能需求
本系统由系统管理、基础数据管理、日常收支管理、银行储蓄管理、借还钱管理和理财分析等模块组成。
系统管理模块需求:
通过此模块可以验证用户登录、密码修改、重新登录和退出等功能。
基础数据管理模块需求:
通过此模块可以对家庭成员的添加、删除和修改,对收支项目的添加、删除和修改。
日常收支管理模块需求:
通过此模块可以对日常收入进行添加、删除和修改,对日常支出进行添加、删除和修改。
银行储蓄管理模块需求:
通过此模块可以对银行活期账户进行添加、删除和修改,对定期账户进行添加、删除和修改。
借还钱管理模块需求:
通过此模块可以对家庭成员的各项借出款进行添加、删除和修改,对家庭成员的借入款进行添加、删除和修改。
理财分析模块需求:
通过此模块可以查询收支明细和生成理财分析报告。
2.1.2系统性能需求
该系统要求具有良好的灵活性、可扩充性和可移植性,系统采用MySQL数据库,系统的数据都是通过数据库来保存,需要数据库具有很好的稳定性,系统可运行在主流的Windows操作系统平台上,操作系统要求响应速度快,使操作者感觉操作流畅。
2.1.3系统环境需求
该系统采用C/S模式,系统基本环境为windowsxp操作系统,在MyEclipse平台上开发,根据的运行需求以及系统的调试需求,需要满足下列的软硬件要求:
硬件环境:
CPU:
2.10GHz
内存:
512M以上
硬盘:
30GB以上
VGA显示器或更高
软件环境:
运行环境:
MyEclipse7.5
数据库:
MySQL
数据库客户端:
NavicatforMySQL
画图软件:
Visio2003
操作系统:
WindowsXP
2.1.4用户界面需求
系统采用人机交互方式,主要通过界面来显示用户需要的信息,界面需要美观友好,信息查询方便灵活,输入输出数据格式友好便捷,并且具备简单的错误提示功能。
2.2系统流程图
该系统中,用户可以通过进入后台数据库对数据进行操作和管理,可以通过登录界面进入主界面管理各个功能模块。
系统流程图如下图所示:
图3-1系统流程图
2.3系统数据流图
图3-20层数据流图
图3-3功能级数据流图
第三章概要设计
3.1系统概述
本系统主要管理家庭财务信息的功能,主要是家庭管理员向该系统录入财务收支信息,对家庭成员的消费水平进行管理。
采用C/S模式实现,用户可以通过浏览器向服务器发送请求,进行相关操作,服务器接收浏览器发送来的请求,将响应结果返回给客户端,财务管理信息存放到数据库里。
3.2系统的功能结构图
通过对家庭财务管理系统进行详细设计后,家庭财务管理系统由系统管理、基础数据管理、日常收支管理、银行储蓄管理、借还钱管理和理财分析等六个模块组成。
系统功能结构如下图所示:
图4-1系统功能结构图
3.3系统的各功能模块设计
3.3.1系统管理模块功能设计
该模块实现的功能主要是用户登录、密码修改、重新登录和退出等
系统管理模块功能图如下图所示:
图4-2系统管理模块结构图
3.3.2基础数据管理模块功能设计
该模块实现的功能主要是家庭成员的添加、删除和修改,收支项目的添加、删除和修改等。
基础数据管理模块功能图如下图所示:
图4-3基础数据管理模块结构图
3.3.3日常收支管理模块功能设计
该模块实现的功能主要是日常收入和日常支出功能。
日常收支管理模块功能图如下图所示:
图4-4日常收支管理模块结构图
3.3.4银行储蓄管理模块功能设计
该模块实现的功能主要是对银行活期和定期账户进行添加、删除和修改及存取款记录等功能。
银行储蓄管理模块功能图如下所示:
图4-5银行储蓄管理模块结构图
3.3.5借还钱管理模块功能设计
该模块实现功能主要是记录家庭成员各项借出款和借入款等情况。
借还钱管理模块功能图如下图所示:
图4-6借还钱管理模块结构图
3.3.6理财分析模块功能设计
该模块实现功能主要是查询收支明细和生成理财分析报告等
理财分析模块功能图如下图所示:
图4-7理财分析模块结构图
3.4系统的数据库设计
3.4.1E-R图
通常,采用实体-联系图(E-R图)来建立数据模型,包含实体、关系和属性三种成分,它是描述现实世界概念结构模型的有效方法。
是一种数据库设计的概念模型,是描述数据实体与其他数据实体的关联的一种设计模式,实体内部的联系通常是指组成实体的各种属性之间的联系,实体之间的联系通常是指不同实体集之间的联系。
该系统主要有三个实体,分别为用户、银行、收支记录、存取款记录和借入借出记录。
用户可以到银行开户、可以借入借出、可以收入支出、可以存取款,存取款的记录需要存入银行账户里。
家庭财务管理的E-R图如下所示:
图4-8E-R图
3.4.2数据表设计
本系统是实现家庭财务管理系统,主要设计了11张表,分别为fmtable,receivetable,outlaytable,dailyincometable,dailyexpensetable,currentaccounttable,currentaccountimfortable,depositaccounttable,lendtable,borrowtable,record表。
分别用于存储家庭成员信息、收入项目信息、支出项目信息、日常收入信息、日常支出信息、活期账户信息、存取款信息、定期账户信息,借出款信息表,借入款信息表,记录表。
下面给出数据表的详细设计。
(1)家庭成员表用于记录家庭成员的基本信息
表4-1fmtable表
字段名
数据类型
长度
字段约束
描述
fmsno
int
Notnull
成员编号
fmname
varchar
20
成员姓名
password
Notnull
密码
sex
enum
性别
brithday
date
出生年月
telephone
电话号码
email
30
电子邮件
(2)收入项目表用于记录收入项目信息
表4-2receivetable表
rsno
收入项目编号
rname
50
收入项目名称
(3)支出项目表用于记录支出项目信息
表4-3outlaytable表
osno
支出项目编号
oname
支出项目名称
(4)日常收入信息表用于记录日常收入的详细信息
表4-4dailyincometable表
iid
收入序号
isname
ibankaccount
银行账号
imember
收入人员
idate
收入日期
isum
float
收入金额
remarks
255
备注
(5)日常支出信息表用于记录日常支出的详细信息
表4-5dailyexpensetable表
eid
支出序号
esname
ebankaccount
emember
支出人员
edate
支出日期
esum
支出金额
(6)活期账户表用于记录活期账户的信息
表4-6currentaccounttable表
casno
活期账户号
cabankname
活期银行名
caholder
活期账户持有者
opendate
开户日期
bankbalance
账户余额
(7)存取款信息表用于记录每次的存取款记录信息
表4-7currentaccountimfortable表
caiid
存取编号
caisno
活期银行账户
cabankbalance
caitype
存取类型
caisum
存取金额
ncabankbalance
账户现余额
caidate
存取日期
caimember
存取款人
(8)定期账户信息表用于记录定期账户的详细信息
表4-8depositaccounttable表
dasno
定期账户号
dabankname
定期银行名
daholder
定期账户持有者
dadate
dasum
定期账户金额
istakeout
是否取出
(9)借出款信息表用于记录借出款的详细信息
表4-9lendtable表
lendsno
借出款编号
getmoneyname
得款人
lendmoneyname
借出人
lbankaccount
lendsum
借出金额
lendreason
借出理由
lenddate
借出日期
ispaybacked
是否归还
(10)借入款信息表用于记录借入款的详细信息
表4-10borrowtable表
borrowsno
借入款编号
borrowname
借入人
borrowsum
借入金额
borrowreason
借入理由
borrowdate
借入日期
(11)记录表用于记录每次银行账号更新的信息,用于每月总的余额查询。
表4-11recordtable表
rid
编号
rbanksno
rdate
记录日期
rbankbalance
银行余额
第四章系统详细设计与实现
4.1创建与连接数据库
JDBC(JavaDatabaseConnectivity)是Java应用程序连接各种不同数据库的标准API,可以为多种关系数据库提供统一访问,它由一组用Java编写的类和接口组成,开发人员可以通过该API连接到各种类型的数据库管理系统,并对数据库中的数据进行操作,用户只需编写不同的SQL语句,而不必关心数据库的实现以及不同数据库之间的差异。
JDBC包括两组接口,一组接口面向Java应用开发人员,另一组接口面向驱动程序编写人员,通过JDBCAPI可以完成三件事:
建立与数据库管理系统的连接,向服务器提交要执行的SQL语句,处理返回的结果集。
JDBC包括两个包:
核心API(java.sql)和扩展的API(javax.sql),应用程序通过核心API的接口实现数据库连接和数据处理,其接口主要如下:
java.sql.Driver:
用于读取数据库驱动器的信息,提供连接方法,建立访问数据库所用的Connection对象。
java.sql.DriverManager:
负责管理Driver对象,连接数据库,包括注册驱动程序、获得连接、向数据库发送信息。
java.sql.Connection:
连接Java数据库和Java应用程序之间的主要对象,创建所有的Statement对象,执行SQL语句。
java.sql.ResultSet:
用于控制对一个特定语句的行数据的存取,也就是数据库中由记录或行组成的集合。
连接数据库的基本过程:
1)建立数据源
2)引入java.sql包:
importjava.sql
3)加载驱动程序:
Class.forName(“com.mysql.jdbc.Driver”)
4)创建与数据库的连接:
Connectioncon=DriverManager.getConnection(“jdbc:
mysql:
//localhost:
3306/ffms”,“root”,“root”)
5)创建语句对象:
Statementstmt=con.createStatement();
6)编写SQL语句
7)执行SQL语句
8)处理结果集
9)关闭相关对象
10)异常处理
该家庭财务管理系统采用的数据是MySQL,连接数据库的主要代码如下:
importjava.sql.*;
publicclassDataBaseManager
{
Connectionconn;
ResultSetrs;
Statementstmt;
publicDataBaseManager()
{
try{
Class.forName("
com.mysql.jdbc.Driver"
);
conn=DriverManager.getConnection("
jdbc:
3306/ffms"
"
root"
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
conn.setAutoCommit(false);
}
catch(SQLExceptionsqle)
System.out.println(sqle.toString());
}catch(ClassNotFoundExceptione){
e.printStackTrace();
publicResultSetgetResult(StringstrSQL)
try{
rs=stmt.executeQuery(strSQL);
returnrs;
returnnull;
}
publicbooleanupdateSql(StringstrSQL)
stmt.executeUpdate(strSQL);
mit();
returntrue;
returnfalse;
publicvoidcloseConnection()
conn.close();
}
catch(SQLExceptionsqle)
{
System.out.println(sqle.toString());
4.2登录界面页面的设计
用户在进入家庭财务管理系统时首先必须通过登录界面,输入用户名和密码,点击登录按钮,只有通过省份认证,才能进入系统的主界面。
该模块设计主要涉及的类Login、DataBaseManager和MainMenu。
Login类是登录类,该类的主要方法是getuserName()和getpassWord(),用于获得登录名和登录密码的信息,登录时需要身份认证,需要连接数据库,查询数据,需要引用DataBaseManager类,该类主要是连接数据库,输入的用户名和密码与数据库中的数据比较,如何相等就需要引用MainMenu类进入主界面,如果不相等就提示输入错误信息。
该系统的登录界面如下图所示:
图5-1登录界面图
登陆界面的核心代码如下:
Stringusername=userName.getText();
Stringpassword=newString(passWord.getPassword());
if(username.equals("
"
))
JOptionPane.showMessage