1、 家庭理财系统一、绪论21世纪的中国,随着人们生活水平的提高,个人家庭财富的不断增长,人们迫切的需要进行家庭理财,但是大部分家庭又不知道怎样去理财投资,以保持家庭财富的持续稳定的增长。 其实家庭理财规划非但不神秘,而且与每个人和每个人家庭都密切相关,这种个人化的理财服务在20世纪八十年代已经在国际上比较发达的城市拥有成熟的市场。理财师为客户进行的理财,主要是根据客户的资产状况与风险偏好,关注客户的需求与目标,以“帮助客户”为核心理念,采取一整套规范的模式,向客户提供设计生活方方面面的的全面财务建议,并调用储蓄、保险、股票、债券、基金、信托等金融产品,为客户寻找一个最适合的理财组合方式,以确保其
2、资产的保值与增值。 家庭理财并不是一个新鲜词,简单地说就是开源节流、管理好家庭的钱财。想想看,您是如何管理好自己的钱财的?您家庭一定有些存款,还有可能买卖股票、债券,还可能给自己和家人买了保险-其实在日常生活中不自觉的运用这各种理财方法。因此开发一个家庭理财管理系统迎合了现代的家庭发展趋势,对居民合理分配家庭财产起到重要意义。 一直以来人们使用传统人工的方式文件、纸张记帐管理模式,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难,所以利用计算机实现财务信息的管理的自动化将势在必行。今天我们使用计算机对家庭财务信息进
3、行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高家庭财务管理的效率,面对目前的实际状况,迫切需要开发一个新系统来适应这一些工作。二、系统现状及发展趋势 家庭理财系统,即Family Conduct Financial Transactions System。它利用计算机应用技术,使家庭理财逐步信息化,从而形成由家庭成员与计算机共同构成服务于家庭的人机信息财务管理系统。 家庭理财系统在国内外很多地方使用已经相当的普遍。国外的家庭理财管理系统发展的相对比较成熟,比如他们系统里包含有股票的预测、基金的分析等等。在国
4、内,计算机使用盛行的当今社会,家庭理财管理系统已基本替代了传统的手工记账理财的方法,给消费者带来极大的方便,但由于人们的生活水平越来越高,收支种类越来越多,家庭消费的内容日益丰富等,现行的许多家庭理财管理系统已不能满足大家的需求,许多功能还亟待完善与更新。虽然国内的家庭理财管理系统功能较不完善,但在我国科技迅速发展的今天,其发展前景将十分令人期待,尤其是在近几年,伴随着计算机在社会中的高速普及,家庭理财系统的使用范围逐步扩大,从最早的简单记录家庭、个人财务的收支情况,到现在对财务的收支查询、汇总、报表分析、预测等等。巨大的市场需求也促使了很多公司加大了对家庭理财系统的研究。 当今社会人们的生活
5、水平和文化素质普遍提高,随着市场经济的快速发展,观念的不断更新,每个人的理财意识普遍增强,特别是家庭理财意识得到很大发展,人们对家庭各方面消费不仅仅只有进行记录和统计的愿望,各种收入消费途径错综复杂,如何使用户能更加方便的操作成为要求;同时伴随精神和物质生活的提高,人们购置和使用计算机的能力也在增强,网络越来越发达,一种新型网络家庭理财管理系统软件正等待出现。家庭理财管理系统是一个为方便处理家庭财务的一个软件,它的作用是更好的满足理财者对家庭财务管理的需要。目前社会上普遍使用的家庭理财管理系统基本都是单击版的,随着IT技术的进步和计算机网络技术的发展,以及家庭收支范围的扩大,家庭理财管理系统将
6、逐渐从传统的桌面管理向网络集成的方向发展,从局部、静态、事后核算到全局、动态、实时的管理,基于不同软硬件平台、不同网络架构的各级财务管理子系统需要有机地协同工作。因此基于Internet的家庭理财管理系统必然成为未来家庭理财管理系统的发展趋势。三、系统的开发目的和意义 家庭理财管理系统是为满足当代家庭理财管理的需要而设计开发的一个财务管理系统。它针对家庭理财的需要,开发出一个能实现管理家庭财务收支以及统计分析等功能的实用型软件,能够为每一个家庭的管理者提供充足的信息和快捷的查询手段,大大方便家庭管理者合理科学有效的理财。 伴随着信息时代的到来,信息的种类、数量越来越多,容量也越来越大,在竞争越
7、来越激烈的今天,随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。而使用计算机对家庭财务进行管理,已经成为一种趋势,与传统的手工式家庭财务管理相比,利用计算机软件对家庭财务实行管理具有检索迅速、查找方便、可行性高、存储量大、保密性好、寿命长、成本低等优点。家庭理财管理系统正是在这种环境下应运而生,其开发的整体任务是实现家庭财务管理的系统化、规范化、科学化,从而达到有效管理家庭财务的目的。因此,开发这样一个系统在当今社会中是很有必要的。四、系统开发工具与数据库介绍 编程环境的选择微软公司的Microsoft Visual
8、 Studio 2005是Windows应用程序开发工具,是目前最为广泛的、易学易用的面向对象的开发工具。Microsoft Visual Studio 2005提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。故而,实现本系统VB是一个相对较好的选择。Microsoft Visual Studio 2005介绍 Microsoft Visual Studio 2005是微软公司出品的一个快速可视化程序开发工具软件,借助微软在操作系统和办公软件的垄断地位,VB在断断的几年内风靡全球。Microsof
9、t Visual Studio 2005是极有特色和功能强大的软件,主要表现在:所见即所得的界面设计,基于对象的设计方法,极短的软件开发周期,交易维护的生成代码。Microsoft Visual Studio 2005提供了开发Windows应用程序最迅速、最简捷的方法。不论是Windows应用程序的资深专业开发人员还是初学者,Microsoft Visual Studio 2005都为他们提供了整套工具,以方便开发应用程序。Microsoft Visual Studio 2005是一种可视化的编程语言,利用可视化技术进行编程,可使应用程序的开发简单、快捷;程序员不需要了解更多的关于面向对象的
10、程序设计的细节,即可编写出界面友好、功能强大的应用程序。因此,Microsoft Visual Studio 2005在国内外各个领域中应用非常广泛。由于其容易学习、功能强、编程效率高,无论是专业人员还是非专业人员,都可以非常容易地掌握好Microsoft Visual Studio 2005的使用。它还提供了众多的Active X控件,提高了软件开发人员的编程效率,Microsoft Visual Studio 2005 主要特点如下: (1)可视化设计 Microsoft Visual Studio 2005具有“所见即所得”的功能。在程序设计时,头脑中所想象的应用程序界面,完全可以键盘与
11、鼠标完成,而不用编制大量的代码。如修改,也可利用键盘或鼠标完成,而底层的一些程序代码可由Microsoft Visual Studio 2005自动生成或修改。Microsoft Visual Studio 2005为用户提供了大量的控件,这些控件对于熟悉Windows应用程序的用户而言是一点也不陌生,如“标签”、“组合框”、“命令按钮”、“文本框”等等,用户只需用鼠标或键盘把这些控件拖到所需的位置,并设置它们的大小、形状属性等,即可得到所需的应用程序界面。 (2)事件驱动编程 在Microsoft Visual Studio 2005中把窗体及控件称为对象。这些对象组成了与用户交互的图形界面
12、(也称为用户接口或用户界面)。在设计应用程序时,必须考虑到用户如何与程序进行交互。用户通过鼠标和键盘与应用程序进行交互是最直接、最方便的,这时那些对象必须对鼠标、键盘操作所引起的事件作出响应。因此,Microsoft Visual Studio 2005编程重点是编写事件驱动过程的代码。 (3) 面向对象程序设计 Microsoft Visual Studio 2005是面向对象的程序设计语言,它将代码和数据结合在一个个对象中,用户只需了解每个对象能完成何种任务,而不需知道对象是如何工作的。软件开发人员主要编写操作驱动过程的代码,使对象对用户的操作作出响应。但因Microsoft Visual
13、 Studio 2005没有多态等面向对象的特性,所以也有人称 Microsoft Visual Studio 2005是一种准面向对象的程序设计语言。 (4) Microsoft Visual Studio 2005是一种32位的开发工具 vb5.0以前的开发工具很多是在DOS和Windows3X下使用,因而它们基本上是16位的开发工具,Microsoft Visual Studio 2005是运行在Windows XP操作系统下的,因此它是典型的32位开发工具。 (5) 易学易用、开发周期短 Microsoft Visual Studio 2005简单易学,界面友好,容易使用。Micros
14、oft Visual Studio 2005提供的大量功能强大的控件,能帮助开发人员在较短时间内用少量语句编写出应用程序,缩短了开发周期。 Access数据库介绍Microsoft Access 2003 是Microsoft Office 的系列产品之一,是关系型数据库管理系统。并且伴随着其功能不断完善,操作的日趋简单化,现在已得到了广泛的应用,成为当今世界上最流行的关系桌面数据库管理系统。 Access最大的优点是用户不用编写代码就可以在很短的时间里开发出一个功能强大而且相当专业的数据库应用程序,并且这一过程是完全可视的。应用Access中的各种工具可以方便、高效地处理数据,它不仅是适用于
15、有经验的数据库设计人员,也适用于刚接触数据库管理系统的新手Access的主要特点有以下几个方面:(1)在Access中,可以方便地存取由dBASE、Foxpro、Paradox等各种数据库系统产生的数据库,并且支持ODBC(open Database Connectivity)标准;(2)Access提供了强大的引导向导。利用引导向导,用户可以方便、轻松地创建对向。同时Access为用户提供了大量常用的数据库模板,用户可以非常方便地在此基础上创建自己的数据库系统;(3)Access提供了功能强大的Microsoft Visual Studio 2005 for Application语言。使用
16、它用户可编写更为复杂的数据库应用程序;(4)使用技术,用户还可以在数据库中插入各种对象,增加数据库的效果。(5)用户还可以在窗体或报表中使用图形控制组件,将资料用图标的方式表示出来。以便操作,从多方面把个人收入、个人支出、收入、消费、统计等财产管理的数据,以及生活结余和消费统计,用科学统计的方法把这些数据存储在财务管理软件之中。以图片形式说明收入、支出、节余三者之间的相互关系,为个人的财产的有效管理和合理分配提供帮助,以下是对整个个人理财管理系统的设计和操作进行详细的说明。五、“家庭理财管理系统”的简单介绍1、本系统各模块介绍:查询模块: 1、查询方式:根据年、月、日的方式查询 2、当前家庭收
17、入总金额与支出总金额登陆模块:输入用户名和密码进入系统。家庭成员模块:主要查看当前家庭成员的组成以及家庭成员的详细信息,还可以进行家庭成员的添加、删除,同时能直接返回到登陆界面。详细模块:只要包括以下几个按钮:支出、收入、查询、银行网站、返回上一层、写生活寄语和查看生活寄语。注册模块:输入用户名和密码进行注册。银行网站模块:主要是各大银行网站的链接快捷按钮。收入模块:输入用户名的个人信息以及收入明细添加的数据库中。2、下图为该系统功能模块图:家庭财务管理系统用户登陆家庭成员添加详细信息支出收入查询银行网站生活寄语3、系统数据库的设计 开发数据库应用系统,大部分可分为数据库的分析、设计和应用程序
18、的分析、设计两部分。后台数据库的合理设计在本系统中占有十分重要的地位,数据库设计的优劣将会直接影响系统的准确性、效率及实现效果,合理的设计能提高数存储效率,保证数据的完整和一致。4、数据库相关理论 在数据库应用系统开发之前,对开发数据库的基本概念应当了解,对数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。数据库技术在计算机软件领域研究中一直是非常重要的主题,产生于6
19、0年代,30多年来数据库技术得到了迅速发展,并已形成较为完整的理论体系和一大批实用系统。5、数据库分析:1、家庭收入表 2、家庭支出表 3、家庭成员表 4、用户信息表根据以上分析,设计出下列数据项和数据结构: 家庭收入信息(姓名、性别、年龄、日期、金额、收入号、收入说明)家庭支出信息(姓名、性别、年龄、日期、金额、支出号、支出说明)家庭成员信息(姓名、性别、年龄、职称、出生日期、成员号)用户信息(用户名、密码、编号)6、数据库概念结构设计得到上面的数据项和数据结构后,即可设计满足用户需求的各种实体,以及它们之间的关系。根据上述设计规划出以下各个实体及其E-R图:性别姓名家庭成员信息日期金额收入
20、说明年龄收入号家庭支出信息姓名性别年龄日期金额支出号支出说明家庭成员信息姓名职称成员号性别出生日期年龄用户信息用户名密码编号7、数据库逻辑结构设计 系统模型的逻辑结构设计的任务是把概念结构设计好的基本的E-R图转换为支持关系模型的DBMS相符合的逻辑结构。 家庭收入表如下:字段名长度类型姓名10文本性别10文本年龄10文本日期日期/时间金额10文本收入号自动编号收入说明50文本家庭支出表:字段名长度类型姓名10文本性别10文本年龄10文本日期日期/时间金额10文本支出号长整型自动编号支出说明50文本用户名表:字段名长度类型用户名10文本密码10文本编号长整型自动编号家庭成员表:字段名长度类型姓
21、名10文本性别10文本年龄10文本职称10文本出生日期日期/时间成员号长整型自动编号8、系统主界面 用户进入系统时要输入正确的用户名和密码,系统从数据库用户表中检索是否有相对应的数据信息,若输入正确则进入主界面,否则提示错误,需重新输入。选择取消退出登陆系统。模块流程图如下所示:开始用户登陆进入系统失败3次退出效果图如下:核心代码如下:Imports System.Data.OleDbPublic Class 登录界面 Dim CurrentDir As String = System.IO.Directory.GetParent(System.IO.Directory.GetParent(A
22、pplication.StartupPath).ToString).ToString Dim sDataSource As String = Data Source= & CurrentDir & database家庭理财管理.mdb Dim sss As Integer = 0 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If sss 2 Then Dim conn As New OleDbConnection Dim c
23、md As New OleDbCommand Dim dr1 As OleDbDataReader conn.ConnectionString = provider=microsoft.jet.oledb.4.0; & sDataSource cmd.Connection = conn cmd.CommandText = select * from user12 where 用户名= & TextBox1.Text & and 密码= & TextBox2.Text & s = TextBox1.Text conn.Open() dr1 = cmd.ExecuteReader If dr1.R
24、ead Then 家庭成员.Show() Me.Hide() Else sss = sss + 1 MsgBox(错误) End If conn.Close() TextBox1.Text = TextBox2.Text = TextBox1.Focus() Else MsgBox(你已经输入三次错误,系统将自行关闭) End End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox1.Tex
25、t = TextBox2.Text = TextBox1.Focus() End Sub Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked 注册.Show() Me.Hide() End SubEnd Class查询界面效果图如下:核心代码如下:Imports System.Data.OleDbPublic Class 查询 D
26、im CurrentDir As String = System.IO.Directory.GetParent(System.IO.Directory.GetParent(Application.StartupPath).ToString).ToString Dim sDataSource As String = Data Source= & CurrentDir & database家庭理财管理.mdb Dim conn As New OleDbConnection Dim cmd As New OleDbCommand Private Sub Button2_Click(ByVal sen
27、der As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 详细信息.Show() Me.Hide() End Sub Private Sub 查询_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load conn.ConnectionString = provider=microsoft.jet.oledb.4.0; & sDataSource cmd.Connection = conn Tex
28、tBox3.Text = zh TextBox2.Text = sh TextBox4.Text = sh - zh End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i, j As Integer Dim z, s As Double z = 0 s = 0 Dim str As String Dim st As String str = select * from 家庭支出 st = select *
29、from 家庭收入 If C1.SelectedItem = 按姓名查询 Then str = str & where 姓名= & TextBox1.Text & st = st & where 姓名= & TextBox1.Text & End If If C1.SelectedItem = 按年查询 Then str = str & where year(日期)= & TextBox1.Text & st = st & where year(日期)= & TextBox1.Text & End If If C1.SelectedItem = 按月查询 Then str = str & wh
30、ere month(日期)= & TextBox1.Text & st = st & where month(日期)= & TextBox1.Text & End If conn.Open() cmd.CommandText = str cmd.Connection = conn Dim daap As New OleDbDataAdapter daap.SelectCommand = cmd Dim ds As New DataSet ds.Clear() daap.Fill(ds, str) DataGridView1.DataSource = ds.Tables(str) conn.Cl
31、ose() For i = 0 To ds.Tables(str).Rows.Count - 1 z = z + ds.Tables(str).Rows(i).Item(金额) Next conn.Open() cmd.CommandText = st cmd.Connection = conn Dim dap As New OleDbDataAdapter dap.SelectCommand = cmd Dim dss As New DataSet dss.Clear() dap.Fill(dss, st) DataGridView2.DataSource = dss.Tables(st)
32、conn.Close() For j = 0 To dss.Tables(st).Rows.Count - 1 s = s + dss.Tables(st).Rows(j).Item(金额) Next TextBox5.Text = s TextBox6.Text = zEnd SubEnd Class支出效果图如下:核心代码如下:Imports System.Data.OleDbPublic Class 支出 Dim CurrentDir As String = System.IO.Directory.GetParent(System.IO.Directory.GetParent(Appli
33、cation.StartupPath).ToString).ToString Dim sDataSource As String = Data Source= & CurrentDir & database家庭理财管理.mdb Dim conn As New OleDbConnection Dim cmd As New OleDbCommand Dim i As Integer Dim p = 500 Dim ye As Double Private Sub 支出_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
34、Handles MyBase.Load sh = 0 zh = 0 conn.ConnectionString = provider=microsoft.jet.oledb.4.0; & sDataSource cmd.Connection = conn conn.Open() cmd.CommandText = select * from 家庭支出 where 姓名= & s & Dim daap As New OleDbDataAdapter daap.SelectCommand = cmd cmd.Connection = conn Dim ds As New DataSet daap.
35、Fill(ds, 家庭支出) C2.Text = ds.Tables(0).Rows(0).Item(姓名) c1.Text = ds.Tables(0).Rows(0).Item(性别) C3.Text = ds.Tables(0).Rows(0).Item(年龄) DataGridView1.DataSource = ds.Tables(0) cmd.CommandText = select * from 家庭支出 Dim dap As New OleDbDataAdapter dap.SelectCommand = cmd cmd.Connection = conn Dim dss As
36、 New DataSet dap.Fill(dss, 家庭支出) For i = 0 To dss.Tables(家庭支出).Rows.Count - 1 zh = zh + dss.Tables(家庭支出).Rows(i).Item(金额) Next cmd.CommandText = select * from 家庭收入 Dim dp As New OleDbDataAdapter dp.SelectCommand = cmd cmd.Connection = conn Dim das As New DataSet dp.Fill(das, 家庭收入) For i = 0 To das.T
37、ables(家庭收入).Rows.Count - 1 sh = sh + das.Tables(家庭收入).Rows(i).Item(金额) Next TextBox1.Text = sh - zh ye = sh - zh If ye 0 Then Timer1.Enabled = True End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click zh = 0 sh = 0 DT1.Format = Da
38、teTimePickerFormat.Custom cmd.CommandText = insert into 家庭支出(姓名,性别,年龄,日期,金额,支出说明) values ( & c2.Text & , & C1.Text & , & C3.Text & , & DT1.Text & , & TextBox2.Text & , & TextBox3.Text & ) cmd.ExecuteNonQuery() MsgBox(添加成功!) cmd.CommandText = select * from 家庭支出 where 姓名= & s & Dim daap As New OleDbDa
39、taAdapter daap.SelectCommand = cmd cmd.Connection = conn Dim ds As New DataSet daap.Fill(ds, 家庭支出) DataGridView1.DataSource = ds.Tables(0) cmd.CommandText = select * from 家庭支出 Dim dap As New OleDbDataAdapter dap.SelectCommand = cmd cmd.Connection = conn Dim dss As New DataSet dap.Fill(dss, 家庭支出) For
40、 i = 0 To dss.Tables(家庭支出).Rows.Count - 1 zh = zh + dss.Tables(家庭支出).Rows(i).Item(金额) Next cmd.CommandText = select * from 家庭收入 Dim dp As New OleDbDataAdapter dp.SelectCommand = cmd cmd.Connection = conn Dim das As New DataSet dp.Fill(das, 家庭收入) For i = 0 To das.Tables(家庭收入).Rows.Count - 1 sh = sh +
41、 das.Tables(家庭收入).Rows(i).Item(金额) Next TextBox1.Text = sh - zh ye = sh - zh If ye 0 Then Timer1.Enabled = True End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 详细信息.Show() Me.Hide() End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Label7.T