软件工程-家庭财务管理系统的设计与实现最终稿.doc

上传人:豆**** 文档编号:28553290 上传时间:2022-07-28 格式:DOC 页数:63 大小:3.87MB
返回 下载 相关 举报
软件工程-家庭财务管理系统的设计与实现最终稿.doc_第1页
第1页 / 共63页
软件工程-家庭财务管理系统的设计与实现最终稿.doc_第2页
第2页 / 共63页
点击查看更多>>
资源描述

《软件工程-家庭财务管理系统的设计与实现最终稿.doc》由会员分享,可在线阅读,更多相关《软件工程-家庭财务管理系统的设计与实现最终稿.doc(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date软件工程-家庭财务管理系统的设计与实现最终稿软件工程-家庭财务管理系统的设计与实现最终稿-职工工资管理系统的设计与实现摘 要:近几年来,随着经济全球化和城乡居民生活需求不断变化及计算机科学技术的飞速发展,人们的生活水平不断提升,理财意识逐渐深入人心,直接影响着人们的生活,因此人们迫切需要一个高效、方便的管理家庭财务的系统。该系统采用Java技术,使用C/S模式,采用M

2、yEclipse开发工具、MySQL数据库、VISIO2003画图工具和Photoshop图像处理等工具,对家庭财务管理系统进行需求分析、概要设计、详细设计和对各功能模块进行单元测试和综合测试,主要包括后台数据库的建立和维护及前台应用程序的开发。通过该系统,可以方便地对日常收入、日常支出、现金的借入及借出进行管理,该系统具备浏览、查询、添加、删除、修改和报表等功能,界面友好且操作简单。关键词:家庭财务管理系统;Java;MySQL;C/S第一章 可行性分析1.1可行性分析可行性分析是指在现有的技术、经济、法律和社会效益等方面的条件下分析每一项需求实施的可行性,通过可行性分析,可以对系统的技术、

3、操作和经济方面提出相关要求和设计方案。可行性分析就是解决一个项目是否有可行解以及是否值得去解的问题。对于每个管理系统来说,首先都需要对系统有一个合适的设计思想和方法,对系统有个明确的方案,使用现有技术能否实现该系统,该系统的经济效益能否超过它的开发成本,系统的操作方案在用户组织里能否行得通,选择合理的操作系统和开发环境等等,这些都对系统的开发起着很重要的作用。只有通过对系统进行可行性分析才能构建完善的系统。本系统的可行性分析将从技术可行性、操作可行性、经济可行性和法律可行性四个方面进行说明。1.1.1 技术可行性由于该系统所要满足的硬件是计算机,软件方面是采用JDK1.6开发环境、MyEcli

4、pse 开发工具和MySQL数据库,这些设备和软件易于实现和满足。采用的语言是Java语言,具有可移植性,功能易于实现,界面比较美观,操作简单,能够移植到其他计算机上运行,与平台无关,能够满足更多的用户,使得该系统能被很多家庭所接受。所以该系统在技术上是可行的。1.1.2 经济可行性现代化信息管理和电脑普及的今天,该系统如果开发成功,成本比较低,工作效率比较高,维护费用比较低,能给一个家庭带来很多的方便,该系统采用比较容易学的Java语言编写,由于Java平台的自由和开放性使得该系统实现不是很复杂、开发周期比较短,开发人员成本低。该系统的成本主要是开发和数据库的维护上,所设计的成本都比较低,能

5、给一个家庭带来很大的利润。因此在经济上是可行的。 1.1.3 操作可行性该系统在操作上是可行的,系统是采用Windows平台开发的,是家庭管理者与系统之间的操作,窗口和界面简单直观,人性化,易用操作和管理,业务逻辑清晰,各模块容易扩充。因此在操作上是可行的。1.1.4 法律可行性随着社会主义的发展和人们的生活水平的提高,对于一个家庭来说,所面对的事情都越来越复杂了,特别是对家庭财产的管理。如何有效的管理和利用当今的计算机技术来达到人们所期望的生活已经在人们心中深入人心了,对于一个家庭财产管理系统的设计与实现对于每个家庭来说都是有必要的,没有任何侵犯法律问题。因此,在法律上该系统是可行的。第二章

6、 需求分析2.1系统需求分析家庭财务管理系统是一个家庭必需的信息管理系统。通过我们对家庭财务管理的详细调查,大部分家庭对于财务的管理还是局限在使用传统的人工纸质记账管理的方式,这种方式存在许多缺点,如:效率很低、安全性差、管理难和产生大量纸质文件等。所以需要一个家庭财务管理系统来为每一个家庭的管理者提供充足的信息和快捷的查询手段。家庭财务管理系统的信息数据主要是家庭管理员对家庭的收支消费信息的输入,由于一个家庭每天都会有收入和支出的情况,导致数据库时时有更新,因此,能够及时有效的处理数据,就需要建立一个数据库来存储数据。该家庭财务管理系统的设计与实现,主要包括后台数据库的建立和维护以及前台应用

7、程序的开发两个方面。对于后台的数据库建立需要数据安全性好,对于前端应用程序则需要功能完善和易使用的特点。2.1.1 系统功能需求本系统由系统管理、基础数据管理、日常收支管理、银行储蓄管理、借还钱管理和理财分析等模块组成。系统管理模块需求:通过此模块可以验证用户登录、密码修改、重新登录和退出等功能。基础数据管理模块需求:通过此模块可以对家庭成员的添加、删除和修改,对收支项目的添加、删除和修改。日常收支管理模块需求:通过此模块可以对日常收入进行添加、删除和修改,对日常支出进行添加、删除和修改。银行储蓄管理模块需求:通过此模块可以对银行活期账户进行添加、删除和修改,对定期账户进行添加、删除和修改。借

8、还钱管理模块需求:通过此模块可以对家庭成员的各项借出款进行添加、删除和修改,对家庭成员的借入款进行添加、删除和修改。理财分析模块需求:通过此模块可以查询收支明细和生成理财分析报告。2.1.2 系统性能需求该系统要求具有良好的灵活性、可扩充性和可移植性,系统采用MySQL数据库,系统的数据都是通过数据库来保存,需要数据库具有很好的稳定性,系统可运行在主流的Windows操作系统平台上,操作系统要求响应速度快,使操作者感觉操作流畅。2.1.3 系统环境需求该系统采用C/S模式,系统基本环境为windows xp操作系统,在MyEclipse平台上开发,根据的运行需求以及系统的调试需求,需要满足下列

9、的软硬件要求:硬件环境:CPU:2.10GHz内存:512M以上硬盘:30GB以上VGA显示器或更高软件环境:运行环境:MyEclipse 7.5数据库:MySQL数据库客户端:Navicat for MySQL画图软件:Visio 2003操作系统:WindowsXP2.1.4 用户界面需求系统采用人机交互方式,主要通过界面来显示用户需要的信息,界面需要美观友好,信息查询方便灵活,输入输出数据格式友好便捷,并且具备简单的错误提示功能。2.2系统流程图该系统中,用户可以通过进入后台数据库对数据进行操作和管理,可以通过登录界面进入主界面管理各个功能模块。系统流程图如下图所示: 图 3-1 系统流

10、程图2.3系统数据流图图 3-2 0层数据流图图 3-3 功能级数据流图第三章 概要设计3.1系统概述本系统主要管理家庭财务信息的功能,主要是家庭管理员向该系统录入财务收支信息,对家庭成员的消费水平进行管理。采用C/S模式实现,用户可以通过浏览器向服务器发送请求,进行相关操作,服务器接收浏览器发送来的请求,将响应结果返回给客户端,财务管理信息存放到数据库里。 3.2系统的功能结构图通过对家庭财务管理系统进行详细设计后,家庭财务管理系统由系统管理、基础数据管理、日常收支管理、银行储蓄管理、借还钱管理和理财分析等六个模块组成。系统功能结构如下图所示: 图 4-1 系统功能结构图3.3系统的各功能模

11、块设计3.3.1系统管理模块功能设计该模块实现的功能主要是用户登录、密码修改、重新登录和退出等系统管理模块功能图如下图所示:图 4-2 系统管理模块结构图3.3.2基础数据管理模块功能设计该模块实现的功能主要是家庭成员的添加、删除和修改,收支项目的添加、删除和修改等。基础数据管理模块功能图如下图所示:图 4-3 基础数据管理模块结构图3.3.3日常收支管理模块功能设计该模块实现的功能主要是日常收入和日常支出功能。日常收支管理模块功能图如下图所示:图 4-4 日常收支管理模块结构图3.3.4银行储蓄管理模块功能设计该模块实现的功能主要是对银行活期和定期账户进行添加、删除和修改及存取款记录等功能。

12、银行储蓄管理模块功能图如下所示:图 4-5 银行储蓄管理模块结构图3.3.5借还钱管理模块功能设计该模块实现功能主要是记录家庭成员各项借出款和借入款等情况。借还钱管理模块功能图如下图所示: 图 4-6 借还钱管理模块结构图3.3.6理财分析模块功能设计该模块实现功能主要是查询收支明细和生成理财分析报告等理财分析模块功能图如下图所示: 图 4-7 理财分析模块结构图3.4系统的数据库设计3.4.1 E-R图通常,采用实体-联系图(E-R图)来建立数据模型,包含实体、关系和属性三种成分,它是描述现实世界概念结构模型的有效方法。是一种数据库设计的概念模型,是描述数据实体与其他数据实体的关联的一种设计

13、模式,实体内部的联系通常是指组成实体的各种属性之间的联系,实体之间的联系通常是指不同实体集之间的联系。该系统主要有三个实体,分别为用户、银行、收支记录、存取款记录和借入借出记录。用户可以到银行开户、可以借入借出、可以收入支出、可以存取款,存取款的记录需要存入银行账户里。家庭财务管理的E-R图如下所示: 图 4-8 E-R图3.4.2 数据表设计本系统是实现家庭财务管理系统,主要设计了11张表,分别为fmtable,receivetable,outlaytable,dailyincometable,dailyexpensetable,currentaccounttable, currentacc

14、ountimfortable, depositaccounttable,lendtable,borrowtable,record表。分别用于存储家庭成员信息、收入项目信息、支出项目信息、日常收入信息、日常支出信息、活期账户信息、存取款信息、定期账户信息,借出款信息表,借入款信息表,记录表。下面给出数据表的详细设计。(1)家庭成员表用于记录家庭成员的基本信息表4-1 fmtable表字段名数据类型长度字段约束描述fmsnointNot null成员编号fmnamevarchar20Not null成员姓名passwordvarchar20Not null 密码sexenum0Not null性别

15、brithdaydate0Not null出生年月telephonevarchar20电话号码emailvarchar30电子邮件(2)收入项目表用于记录收入项目信息表4-2 receivetable表字段名数据类型长度字段约束描述rsnointNot null收入项目编号rnamevarchar50Not null收入项目名称(3)支出项目表用于记录支出项目信息表4-3 outlaytable表字段名数据类型长度字段约束描述osnointNot null支出项目编号onamevarchar50Not null支出项目名称(4)日常收入信息表用于记录日常收入的详细信息表4-4 dailyinc

16、ometable表字段名数据类型长度字段约束描述iidintNot null收入序号isnamevarchar50Not null收入项目名称ibankaccountvarchar50Not null银行账号imembervarchar20Not null收入人员idatedate0Not null收入日期isumfloat0Not null收入金额remarksvarchar255备注(5)日常支出信息表用于记录日常支出的详细信息表4-5 dailyexpensetable表字段名数据类型长度字段约束描述eidintNot null支出序号esnamevarchar50Not null支出项

17、目名称ebankaccountvarchar50Not null银行账号emembervarchar20Not null支出人员edatedate0Not null支出日期esumfloat0Not null支出金额remarksvarchar255备注(6)活期账户表用于记录活期账户的信息表4-6 currentaccounttable表字段名数据类型长度字段约束描述casnovarchar50Not null活期账户号cabanknamevarchar20Not null活期银行名caholdervarchar20Not null活期账户持有者opendatedate0Not null开户

18、日期bankbalancefloat0Not null账户余额(7)存取款信息表用于记录每次的存取款记录信息表4-7currentaccountimfortable表字段名数据类型长度字段约束描述caiidintNot null存取编号caisnovarchar50Not null活期银行账户cabankbalancefloat0Not null账户余额caitypeenum0Not null存取类型caisumfloat0Not null存取金额ncabankbalancefloat0Not null账户现余额caidatedate0Not null存取日期caimembervarchar2

19、0Not null存取款人(8)定期账户信息表用于记录定期账户的详细信息表4-8 depositaccounttable表字段名数据类型长度字段约束描述dasnovarchar50Not null定期账户号dabanknamevarchar50Not null定期银行名daholdervarchar20Not null定期账户持有者dadatedate0Not null开户日期dasumfloat0Not null定期账户金额istakeoutenum0Not null是否取出(9)借出款信息表用于记录借出款的详细信息 表4-9 lendtable表字段名数据类型长度字段约束描述lendsno

20、intNot null借出款编号getmoneynamevarchar20Not null得款人lendmoneynamevarchar20Not null借出人lbankaccountvarchar50Not null银行账号lendsumfloat0Not null借出金额lendreasonvarchar255借出理由lenddatedate0Not null借出日期ispaybackedenum0Not null是否归还remarksvarchar255备注(10) 借入款信息表用于记录借入款的详细信息表4-10 borrowtable表字段名数据类型长度字段约束描述borrowsno

21、intNot null借入款编号borrownamevarchar20Not null借入人lendmoneynamevarchar20Not null借出人lbankaccountvarchar50Not null银行账号borrowsumfloatNot null借入金额borrowreasonvarchar255借入理由borrowdatedate0Not null借入日期ispaybackedenum0Not null是否归还remarksvarchar255备注(11) 记录表用于记录每次银行账号更新的信息,用于每月总的余额查询。表4-11 recordtable表字段名数据类型长度

22、字段约束描述ridintNot null编号rbanksnovarchar50Not null银行账号rdatedate0Not null记录日期rbankbalancefloatNot null银行余额第四章 系统详细设计与实现4.1创建与连接数据库JDBC(Java Database Connectivity)是Java应用程序连接各种不同数据库的标准API,可以为多种关系数据库提供统一访问,它由一组用Java编写的类和接口组成,开发人员可以通过该API连接到各种类型的数据库管理系统,并对数据库中的数据进行操作,用户只需编写不同的SQL语句,而不必关心数据库的实现以及不同数据库之间的差异。

23、JDBC包括两组接口,一组接口面向Java应用开发人员,另一组接口面向驱动程序编写人员,通过JDBC API可以完成三件事:建立与数据库管理系统的连接,向服务器提交要执行的SQL语句,处理返回的结果集。JDBC包括两个包:核心API(java.sql)和扩展的API(javax.sql),应用程序通过核心API的接口实现数据库连接和数据处理,其接口主要如下:java.sql.Driver:用于读取数据库驱动器的信息,提供连接方法,建立访问数据库所用的Connection对象。java.sql.DriverManager:负责管理Driver对象,连接数据库,包括注册驱动程序、获得连接、向数据库

24、发送信息。java.sql.Connection:连接Java数据库和Java应用程序之间的主要对象,创建所有的Statement对象,执行SQL语句。java.sql.ResultSet:用于控制对一个特定语句的行数据的存取,也就是数据库中由记录或行组成的集合。连接数据库的基本过程:1)建立数据源2) 引入java.sql包:import java.sql3) 加载驱动程序:Class.forName(“com.mysql.jdbc.Driver”)4) 创建与数据库的连接:Connection con = DriverManager.getConnection(“jdbc:mysql:/l

25、ocalhost:3306/ffms”, “root”,“root”)5) 创建语句对象:Statement stmt = con.createStatement();6) 编写SQL语句7)执行SQL语句8)处理结果集9)关闭相关对象10)异常处理该家庭财务管理系统采用的数据是MySQL,连接数据库的主要代码如下:import java.sql.*;public class DataBaseManager Connection conn; ResultSet rs; Statement stmt; public DataBaseManager() try Class.forName(com.

26、mysql.jdbc.Driver); conn=DriverManager.getConnection(jdbc:mysql:/localhost:3306/ffms,root,root);stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); conn.setAutoCommit(false); catch(SQLException sqle) System.out.println(sqle.toString(); catch (ClassNotFoundException

27、 e) e.printStackTrace(); public ResultSet getResult(String strSQL) try rs=stmt.executeQuery(strSQL); return rs; catch(SQLException sqle) System.out.println(sqle.toString(); return null; public boolean updateSql(String strSQL) try stmt.executeUpdate(strSQL); mit(); return true; catch(SQLException sql

28、e) System.out.println(sqle.toString(); return false; public void closeConnection() try conn.close(); catch(SQLException sqle) System.out.println(sqle.toString(); 4.2登录界面页面的设计用户在进入家庭财务管理系统时首先必须通过登录界面,输入用户名和密码,点击登录按钮,只有通过省份认证,才能进入系统的主界面。该模块设计主要涉及的类Login、DataBaseManager和MainMenu。Login类是登录类,该类的主要方法是getu

29、serName()和getpassWord(),用于获得登录名和登录密码的信息,登录时需要身份认证,需要连接数据库,查询数据,需要引用DataBaseManager类,该类主要是连接数据库,输入的用户名和密码与数据库中的数据比较,如何相等就需要引用MainMenu类进入主界面,如果不相等就提示输入错误信息。该系统的登录界面如下图所示: 图 5-1 登录界面图登陆界面的核心代码如下:String username = userName.getText();String password = new String(passWord.getPassword();if(username.equals(

30、)JOptionPane.showMessageDialog(null, 用户名不能为空);else if(password.equals()JOptionPane.showMessageDialog(null, 密码不能为空);elseString strsql =select fmname password from fmtable where fmname=+username.trim()+and password=+password.trim()+; rs=db.getResult(strsql); boolean isExist = false; try isExist = rs.f

31、irst(); catch (SQLException e1) e1.printStackTrace();if(!isExist)JOptionPane.showMessageDialog(null, 用户名不正确或密码错误);elsetry rs.first();db.closeConnection();JOptionPane.showMessageDialog(null, 登陆成功);MainMenu m = new MainMenu(家庭财务管理系统); m.setVisible(true); setVisible(false); catch (SQLException e1) e1.p

32、rintStackTrace(); 4.3 主界面的设计该系统主要实现六个模块,分别为系统管理模块,基础数据管理模块,日常收支管理模块,银行储蓄管理模块,借还钱管理模块,理财分析模块。菜单栏主要实现六大模块的功能,每个模块都有相应的菜单实现,工具栏主要实现家庭成员、收入项目、支出项目、日常收入、日常支出、银行储蓄、借出款、借入款等的查找,点击工具栏上的图标都可以跳出一个查找界面。主界面的设计主要采用Java的图形用户界面(GUI)技术,采用Java提供的AWT和Swing两个图形用户界面工具包,借助菜单、工具栏和按钮等标准界面元素和鼠标操作,用户向系统发出命令、启动操作,并将系统运行的结果以图

33、形的方式展示给用户。主界面的实现主要两部分的实现:菜单栏各个功能的实现,点击菜单栏的菜单都会监听一个相应的事件,每个菜单都有实现的功能模块,工具栏实现了经常需要查找的功能模块,点击工具栏图标都会监听一个相应的事件,系统会将查询结果显示出来。主界面图如下图所示: 图 5-2 主界面图主界面的核心代码如下: public MainMenu(String title)super(title);setSize(800,600);/初始窗口的大小Dimension scrSize=Toolkit.getDefaultToolkit().getScreenSize();setLocation(scrSiz

34、e.width-getSize().width)/2,(scrSize.height-getSize().height)/2);/将窗口置于屏幕中央setLayout(null); createMenu();/创建菜单Container container=getContentPane();/为主窗口获得一个容器container.setLayout(new BorderLayout(6,0);ImageIcon ic = new ImageIcon(./src/images/main.jpg);JLabel jLabel2 = new JLabel(ic);jLabel2.setBounds

35、(0,0,ic.getIconWidth(),ic.getIconHeight();getContentPane().add(jLabel2,BorderLayout.CENTER);container.add(showToolBar(),BorderLayout.NORTH);this.pack();4.4 系统管理模块的设计系统管理模块主要实现用户登录,密码修改,重新登录和退出系统。该菜单包括四个菜单项,用户在点击用户登陆和重新登陆时,程序从主界面返回到登录界面。 用户在点击退出时,程序退出。 用户在点击密码修改时,出现修改密码的窗口。该模块设计主要涉及的类有Login、DataBaseM

36、anager和PasswordChange,Login类主要是用户在操作用户登录和重新登录功能时需要引用的类,通过Login类可以使用户返回到登录界面,PasswordChange类主要是用户在操作密码修改功能时需要引用的类,通过这个类可以实现密码的修改,密码修改需要关联数据库,需要DataBaseManager类来连接数据库。该模块的界面图和密码修改界面图如下所示: 图 5-3 系统管理界面图 图 5-4 修改密码界面图修改密码的核心代码如下:public void actionPerformed(ActionEvent e)if(e.getSource()=CancelBtn)db.clo

37、seConnection();this.dispose();else if(e.getSource()=UpdateBtn)trychar password=PasswordTextField.getPassword(); String passwordSTR=new String(password); char newPassword=NewPasswordTextField.getPassword(); String newPasswordSTR=new String(newPassword); char confirmPassword=PasswordConfirmTextField.g

38、etPassword(); String confirmPasswordSTR=new String(confirmPassword);String strSQL=select * from usertable where username=+UserTextField.getText().trim()+and password=+passwordSTR+;if(UserTextField.getText().trim().equals()JOptionPane.showMessageDialog(null,用户名不能为空!);else if(passwordSTR.equals()JOpti

39、onPane.showMessageDialog(null,原密码不能为空!);else if(!newPasswordSTR.equals(confirmPasswordSTR)JOptionPane.showMessageDialog(null,两次输入的新密码不一致!);else if(!db.getResult(strSQL).first() JOptionPane.showMessageDialog(null,此用户不存在或者原密码不正确!); else strSQL=update usertable set password=+newPasswordSTR+where username=+UserTextField.getText() .trim()+; if(db.updateSql(strSQL) JOptionPane.showMessageDialog(null,更新密码成功!); this.dispose();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁