家庭理财管理毕业设计11_第1页
家庭理财管理毕业设计11_第2页
家庭理财管理毕业设计11_第3页
家庭理财管理毕业设计11_第4页
家庭理财管理毕业设计11_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、家庭财务管理系统【摘 要】: 家庭财务管理系统就是我们常说的管理信息系统MIS(Management Information System)中的一种,它是一个计算机软硬件资源以及数据库的人-机系统。随着信息技术,计算机技术的发展,在社会各领域都已经离不开信息系统的支持。家庭财务管理系统针对个人用户设计,是一个单用户系统,它提供各全方位的财务数据统计、数据查询、数据打印,方便个人理财,做出正确的财务决策。【关键词】:财务管理系统,面向对象编程,财务决策。 1概 述在社会经济不断发展的今天,人们生活水平越来越高,个人合理理财也变得越来越重要,它直接影响着人们的生活。各种财务管理软件也层出不穷,本系

2、统仅应用于个人理财,提供财务数据统一管理,以便做出合理的财务决策。其界面友好,操作简单,除具备基本的财务信息管理外,还提供了数据统计,数据查询,图表统计,报表打印等。为方便操作,设置有部分常用功能快捷工具栏,菜单项都设置有快捷键。它多方面把握用户的财务情况,科学的统计数据。本系统可根据使用者的实际情况,设置收入、支出类型,以适应社会不同阶层,不同行业人士的应用。本软件为单用户系统,没有权限设置,更保证了数据的安全性。数据分为两大模块,即收支明细和转账明细,详细反映了各经济业务,往来账的情况。本家庭财务管理系统的主要功能有:l 用户管理:即使用者资料管理,主要功能为登录系统用户名和密码的修改,用

3、户基本资料的设置。l 收支类型设置:即根据使用者实际情况设置收入和支出的项目名称,如收入类型有:工资、补贴、股票收入等,反映经济来源的详细情况。如支出类型有:电话费、伙食、购物、水电费等,详细反映资金的花费去向,花费时间,发生金额等。l 快捷调用Windows提供的“记事本”和“计算器”。方便用户进行日志记载和财务计算操作。l 数据维护:即各项经济业务数据的增加、编辑、删除操作。收支明细和转账明细分开操作,根据当前标签显示的数据所属模块自动判断操作数据对象。且可通过双击数据列表,对当前数据进行编辑修改。l 数据导入及图表统计功能:通过导入功能可以获取外部数据,以达到添加数据的目的,如Excel

4、电子表格数据的导入,分为收支数据和转账数据的导入。图表统计是指用立方图的形式显示数据量,分别显示收入、支出、转入、转出图例,使统计数据的查看更加直观。l 数据查询功能:该功能根据标签当有显示的是收支明细还是转账明细判断查询功能。查询条件可根据收入/支出、收支类型、转入/转出、发生金额、发生日期、录入日期查询。查询结果显示在标签的相应数据表格中,以便对其进行操作维护。其中发生日期和录入日期以及发生金额可根据区间查询。l 数据统计:统计总收入额、总支出额、总转出额、总转入额,根据总的收支,转账额计算统计余额。l 报表打印:即提供数据的打印输出。 3系统介绍31 面向对象编程介绍面向对象(Objec

5、t-Oriented,OO)方法是一种非常实用的软件开发方法,他一出现就受到软件技术人员的青睐,现已经成为计算机科学研究的一个重要领域,并逐渐成为软件开发的主要方法。面向对象方法以客观世界中的对象为中心,起分析和设计思想符合人们的思维方式,分析和结果与客观世界的实际比较接近,容易被人们所接受。 本系统就是使用面向对象的开发语言Visual C+6.0开发环境,自然就应当采用面向对象的相关方法来分析和设计系统;再者,把系统中的实体对象化,使分析和设计的结果更容易让人理解。Peter Coad 和 Edward Yourdon 提出下列等式识别面向对象方法:面向对象=对象(Object)+ 分类(

6、classification)+ 继承(inheritance)+ 消息通信(communication with message)(1) 对象:在计算机系统中,对象是指一组属性以及这组属性上的专用操作的封装体。属性可以是一些数据,也可以是另一个对象。每个对象都有它自己的属性值,表示该对象的状态。对象中的属性只能通过该对象所提供的操作来存取或修改。操作也称为方法或服务,它规定了对象的行为,表示对象所能提供的服务。一个对象通常可由对象名、属性和操作三部分组成。(2) 类:类是一组具有相同属性和相同操作的对象的集合。一个类总的每个对象都是这个类的一个实例(Instance)。(3) 封装性:封装是

7、一种信息隐蔽技术,用户只能看到对象封装界面上的信息,对象的内部实现对用户是隐蔽的。也就是说要将对象的信息(也就是对象的属性)和对象所能执行的动作(也就是对象的方法)包装起来,这样就可以让使用者可以用深入不了解内部的运作原理,就可以对其进行操作。例如:在vc中我们要使用的一个控件,我们不必了解其中给一个属性是怎样传给对象的,也不要知道当我们调用一个对象控件的方法时,对象在其中为我们作了些什么,我们所要作的仅仅是要符合它的使用规范对其进行简单的使用即可。封装的目的是使用者和生产者分离,使对象的定义和实现分开。(4) 继承:继承是类间的一种基本关系,是在某个类的层次关联中不同的类共享属性和操作的一种

8、机制。一个父类可以有多个子类,这些子类都是父类的特例,父类描述了子类的公共属性何操作。一个子类可以继承它的父类总的属性和操作,这些属性和操作在子类中不必定义,子类中还可以定义自己的属性和操作。子类只有惟一的一个父类,这种继承成为单一继承。一个子类也可以有多个父类,可以从多个父类中继承特性,这种继承称为多重继承。(5) 消息:消息是对象间通信的手段,一个对象通过向另一对象发送消息来请求其服务。消息只告诉接收对象需要完成什么操作,但并不指示接收者怎样完成操作。消息完全由接收者解释,接收者独立决定采用什么方法来完成所需的操作。多态性:多态性是指同一个操作作用于不同的对象可以有不同的解释,并产生不同的

9、执行结果。与多态性密切相关的一个概念就是动态绑定。传统的程序设计语言把过程调用与目标代码的连接放在程序运行前进行(称为静态绑定),而动态绑定则是把这种连接推迟到运行时才进行。在一般与特殊关系中,子类是父类的一个特例,所以父类对象可以出现的地方,也允许其子类对象出现。因此再运行过程中,当一个对象发送消息请求服务时,要根据接收对象的具体情况将请求的操作与实现的方法进行连接,即动态绑定。5.系统详细设计实施5.2 登录界面与主界面设计1.登录模块用于用户身份及密码的验证,一个系统仅供一个用户使用。点击“确定”按钮对用户所输入的用户名和密码进行验证,首先打开数据库中存有用户资料的数据表,对数据库中用户

10、名,密码和用户输入的进行比较,如果一致则载入主窗体,否则弹出对话框提示密码或用户名错误,登录失败,并清空用户名和密码文本框。实现代码如下:Set db = OpenDatabase(App.Path & "data.mdb") 连接数据库Set re = db.OpenRecordset("user")打开用户数据表If Text1.Text = re.Fields(0) And Text2.Text = re.Fields(1) Then Unload Me Load Form_main Form_main.ShowElse MsgBox &q

11、uot;对不起,用户名或密码不正确!", 16, "错误" Text1.Text = "" Text2.Text = "" Text1.SetFocusEnd If输入框检测是否按回车确认,该功能是为方便操作设计,代码如下:Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then Command1_ClickEnd Sub1. 主界面设计,即主要操作界面,工作区。主窗体的载入需对该系统进行初始化,包括数据库中数据的统计及信息的显示等,初始显示全部

12、数据库中数据记录,对资金合计,收支统计值显示在主窗体左侧的统计数据区。并在左下载显示系统当前的详细时间,利用时间控件实现时间以秒为单位变化。选项框标签选择,即在标签框中选择是浏览收支明细还是转账明细,根据所选判断数据网格中显示数据。同时根据用户当前所选择浏览的数据区,菜单中搜索部分会自动变化自身的可用性。这样增强了系统的功能的逻辑性。实现代码如下:Private Sub SSTab1_Click(PreviousTab As Integer)dbname = App.PathIf Right(dbname, 1) <> "" Then dbname = dbna

13、me + ""dbname = dbname + "data.mdb"connSTR = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbname & "Persist Security Info=False"Adodc1.ConnectionString = connSTRSelect Case PreviousTab 判断当前所选标签 Case "0" Adodc1.RecordSource = "select

14、 * from jzmx" Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 DataGrid1.Refresh inorout.Enabled = False 将部分菜单项设为不可用 inouttype.Enabled = False zrorzc.Enabled = True dg2 Case "1" Adodc1.RecordSource = "select * from szmx" Adodc1.Refresh Set DataGrid2.DataSource = Adodc1 DataG

15、rid2.Refresh inorout.Enabled = True inouttype.Enabled = True zrorzc.Enabled = False dg1End SelectEnd Sub当用户在数据网络显示区中选择某项数据后,选择了菜单或者工具栏中的“删除数据”功能,首先判断用户当前选择的数据是属于收支明细的还是转账明细的数据,且在数据库中搜索是否有该数据,如果有然后对数据库中数据进行删除操作,在删除之前会弹出对话框需要用户确实是否真要删除数据,如果点“是”删除数据后,将不可恢复。删除数据代码:Private Sub deldata_Click()dbname = App

16、.PathIf Right(dbname, 1) <> "" Then dbname = dbname + ""dbname = dbname + "data.mdb"connSTR = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbname & "Persist Security Info=False"Adodc1.ConnectionString = connSTRSelect Case SSTab1.Ta

17、b Case "0" Set db = OpenDatabase(App.Path & "data.mdb") Set re = db.OpenRecordset("szmx") Do While Not re.EOF 判断在网格中当前选择的数据项 If re.Fields(0) = Trim(Str(DataGrid1.Row + 1) Then yesorno = MsgBox("您确定要删除这条数据吗?", 33, "确认") If yesorno = 1 Then re.Dele

18、te MsgBox "数据已经成功删除.", , "删除成功" 重新在数据网格中显示数据开始strsql = "select * from szmx"Adodc1.RecordSource = strsqlAdodc1.RefreshSet DataGrid1.DataSource = Adodc1DataGrid1.Refresh Exit Do Else Exit Sub End If End If re.MoveNext Loop If re.EOF = True Then MsgBox "对不起,没有该项."

19、;, , "错误" End If Case "1" Set db = OpenDatabase(App.Path & "data.mdb") Set re = db.OpenRecordset("jzmx") Do While Not re.EOF If re.Fields(0) = Trim(Str(DataGrid2.Row + 1) Then yesorno = MsgBox("您确定要删除这条数据吗?", 33, "确认") If yesorno = 1 Th

20、en re.Delete MsgBox "数据已经成功删除.", , "删除成功" strsql = "select * from jzmx"Adodc1.RecordSource = strsqlAdodc1.RefreshSet DataGrid2.DataSource = Adodc1DataGrid2.Refresh Exit Do End IfEnd Ifre.MoveNextLoopIf re.EOF = True ThenMsgBox “对不起,没有该项.”, , “错误”End IfEnd SelectEnd Sub

21、增加新的记录rptdata.AddNewrptdata.Fields(“序号”) = rptDBUsers.Fields(“序号”)rptdata.Fields(“收入支出”) = rptDBUsers.Fields(“收入支出”)rptdata.Fields(“收支类型”) = rptDBProfile.Fields(“收支类型”)rptdata.Fields(“发生日期”) = rptDBProfile.Fields(“发生日期”)rptdata.Fields(“发生金额”) = rptDBProfile.Fields(“发生金额”)rptdata.Fields(“录入日期”) = rpt

22、DBProfile.Fields(“录入日期”)rptdata.Fields(“备注”) = rptDBProfile.Fields(“备注”) 对数据更新操作 rptdata.Update 移到下一条记录 rptDBUsers.MoveNextWend Set UnboundReport.DataSource = rptdata UnboundReport.Show Case “1” rptdata.Fields.Append “序号”, adChar, 20, adFldFixed rptdata.Fields.Append “转入转出”, adChar, 30, adFldFixed r

23、ptdata.Fields.Append “转账日期”, adDate, 40, adFldFixed rptdata.Fields.Append “转账金额”, adSingle, 40, adFldFixed rptdata.Fields.Append “录入日期”, adDate, 40, adFldFixed rptdata.Fields.Append “备注”, adChar, 50, adFldFixed If rptDBUsers.State = adStateOpen Then rptDBUsers.CloserptDBUsers.Open “Select * from jzm

24、x”, dbConnect, adOpenDynamic 将数据记录指针移到第一条 If Not rptDBUsers.EOF ThenrptDBUsers.MoveFirst End If打开数据记录集rptdata.Open遍历数据所有记录 While Not rptDBUsers.EOF If rptDBProfile.State = adStateOpen Then rptDBProfile.Close rptDBProfile.Open “Select * from jzmx where 序号 = ” & rptDBUsers.Fields(“序号”) & “”, d

25、bConnect, adOpenDynamic 移动指针到第一条记录 If Not rptDBProfile.EOF ThenrptDBProfile.MoveFirst End If增加新的记录rptdata.AddNewrptdata.Fields(“序号”) = rptDBUsers.Fields(“序号”)rptdata.Fields(“转入转出”) = rptDBUsers.Fields(“转入转出”)rptdata.Fields(“转账日期”) = rptDBProfile.Fields(“转账日期”)rptdata.Fields(“转账金额”) = rptDBProfile.Fi

26、elds(“转账金额”)rptdata.Fields(“录入日期”) = rptDBProfile.Fields(“录入日期”)rptdata.Fields(“备注”) = rptDBProfile.Fields(“备注”)对数据更新操作rptdata.Update移到下一条记录rptDBUsers.MoveNextWendSet DataReport2.DataSource = rptdata显示打印窗体DataReport2.ShowEnd SelectEnd Sub打开Windows记事本代码(计算器代码类似):Private Sub notpad_Click()Dim pid As L

27、ongpid = Shell(App.Path + "notepad.exe", vbNormalFocus)If pid = 0 Then MsgBox "无法打开记事本!", vbOKOnly + vbExclamation, "打开程序出错"End IfEnd Sub5.3 系统基本设置模块设计1. 用户设置,包括用户资料及登录密码的修改。其中密码修改部分首先要求输入旧密码,并对“新密码”及“确认新密码”进行对比,如果这两项验证其中有一项不成立,即不能进行密码的修改。实现代码如下: Set db = OpenDatabase(A

28、pp.Path & "data.mdb") Set re = db.OpenRecordset("user") If Text7.Text <> re.Fields(1) Then MsgBox "您的旧密码输入错误.", , "错误" Else If Text8.Text = Text9.Text Then re.Edit re.Fields(1) = Text8.Text re.Update Text7.Text = "" Text8.Text = ""

29、; Text9.Text = "" MsgBox "密码已经成功修改.", , "修改成功" Else MsgBox "两次输入的新密码不相同,请重新输入.", , "错误" Text8.Text = "" Text9.Text = "" End If End If2. 收支类型设置添加收支类型,根据个人的实际情况添加,编辑,删除收入和支出类型,通过在左侧的列表框中选择数据项在右侧的文本框同步显示所选择的数据,以便对该项数据进行操作。实现代码如下: Set

30、 db = OpenDatabase(App.Path & "data.mdb") Set re = db.OpenRecordset("outType") If Text11.Text <> "" Then re.AddNew re.Fields(0) = Text11.Text re.Update List2.AddItem Text11.Text MsgBox "成功添加.", , "成功" Else MsgBox "添加项目不允许为空.", , &

31、quot;错误" End If Label13.Caption = "共" + Str(List2.ListCount) + " 项"删除收支类型项代码:If Trim(Text11.Text) = "" Then MsgBox "请选择要删除的项!", vbCritical + vbOKOnly, "提示" Exit SubEnd IfDim yorn As Stringyorn = MsgBox("您确定要删除该支出类型吗?", vbQuestion + vbY

32、esNo, "提示")If yorn = vbYes Then Set db = OpenDatabase(App.Path & "data.mdb") Set re = db.OpenRecordset("outType") Do While Not re.EOF If List2.Text = re.Fields(0) Then re.Delete MsgBox "数据已成功删除.", , "删除成功" Exit Do End If re.MoveNext Loop List2.Cl

33、ear re.MoveFirst Do While Not re.EOF List2.AddItem re.Fields(0) re.MoveNext LoopEnd If5.5 搜索模块设计5.5.1 按发生金额搜索按发生金额搜索可以选择是按某个特定的数字进行搜索,或者选择某个数值区间进行搜索。执行搜索代码如下:If Option1.Value = True Then If Text1.Text = "" Then MsgBox "对不起,搜索条件不能为空.", , "错误" Else aa = Text1.Text dbname

34、= App.Path If Right(dbname, 1) <> "" Then dbname = dbname + "" dbname = dbname + "data.mdb" connSTR = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbname & "Persist Security Info=False" Form_main.Adodc1.ConnectionString = connSTR s

35、trsql = "select * from szmx where 发生金额=" + aa Form_main.Adodc1.RecordSource = strsql Set Form_main.DataGrid1.DataSource = Form_main.Adodc1 Unload Me End IfEnd IfIf Option2.Value = True Then If Text2.Text = "" Or Text3.Text = "" Then MsgBox "对不起,搜索条件不能为空.", , &

36、quot;错误" Else If Val(Text2.Text) > Val(Text3.Text) Then aa = Text3.Text bb = Text2.Text Else aa = Text2.Text bb = Text3.Text End If dbname = App.Path If Right(dbname, 1) <> "" Then dbname = dbname + "" dbname = dbname + "data.mdb" connSTR = "Provider=

37、Microsoft.Jet.OLEDB.4.0;Data Source=" & dbname & "Persist Security Info=False" Form_main.Adodc1.ConnectionString = connSTR If aa = bb Then strsql = "select * from szmx where 发生金额='" + aa + "'" Else strsql = "select * from szmx where 发生金额>=&q

38、uot; + aa + " And" + " 发生金额<=" + bb End If Form_main.Adodc1.RecordSource = strsql Set Form_main.DataGrid1.DataSource = Form_main.Adodc1 Unload Me End IfEnd If5.5.2按发生日期或录入日期搜索按发生日期或者录入日期搜索实现原理基本相同,该搜索功能可以根据特定的日期搜索,也可以搜索处在某个日期区别的所有数据。现实执行搜索代码如下:If Option1.Value = True Then If MaskEdBox1.Text = "" Then MsgBox "对不起,搜索条件不能为空.", , "错误" Else aa = MaskEdBox1.Text dbname = App.Path If Right(dbname, 1) <> "" Then dbname = dbname + "" dbname = dbname + "data.mdb" connSTR = "Provider=Microsoft.Jet.OLEDB.4.0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论