1、摘 要个人财务管理信息系统是每一个个人管理个人财务收入和支出的不可缺少的一个管理信息系统,所以个人财务管理系统应该能够为每一个个人的管理者提供充足的信息和快捷的查询手段,方便个人管理者的合理理财。作为计算机应用的一部分,使用计算机对个人财务进行管理,有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高个人财务管理的效率,也是个人理财的科学化、正规化管理,与先进科学技术接轨的重要条件。关键词 管理信息系统;财务管理;个人理财目 录1 前言11.1 作业背景11.2 选题说明11.2.1 基本思路11.2.2 作业目标11.3
2、 工作业绩11.3.1 个人主要工作11.3.2 主要收获21.3.3 自我评定21.3.4 小组成员任务分工情况22 系统分析32.1 系统需求分析32.2 系统功能模块设计33 数据库分析和设计53.1 数据库分析53.2 创建数据库53.3 创建表63.3.1 基本信息表63.3.2 借出表63.3.3 借入表63.3.4 收入表73.3.5 收入项目表73.3.6 银行卡信息表73.3.7 支出表73.3.8 支出信息表84 系统界面设计94.1 创建工程和数据库连接模块94.2 添加控件94.3 系统主界面设计94.4 系统功能实现的各界面设计104.4.1 【项目管理】窗体的界面设
3、计104.4.2 【用户信息管理】窗体的界面设计104.4.3 【银行卡管理】窗体的界面设计104.4.4 【日常收入管理】窗体的界面设计104.4.5 【日常支出管理】窗体的界面设计104.4.6 【借入款项管理】窗体的界面设计104.4.7 【借出款项管理】窗体的界面设计104.4.8 【月度统计】窗体的界面设计104.4.9 【月份选择】窗体的界面设计115 系统代码设计125.1 主窗体代码设计125.2【日常收入】窗体代码设计125.3【日常支出】窗体代码设计125.4 【借入款项】窗体代码设计125.5 【借出款项】窗体代码设计125.6【月度统计】窗体代码设计125.7【银行交易
4、统计】窗体代码设计165.8【项目管理】窗体代码设计165.9【基本信息查询】窗体代码设计165.10【选择月份】窗体代码设计166 系统运行186.1 系统主界面操作186.2 项目管理操作186.3 日常收入、支出管理和银行账户信息操作186.4 借入款项、借出款项和用户个人信息管理操作186.5 月度统计管理操作19结束语20参考文献2121(论文)1 前言1.1 作业背景本文根据VB程序设计课程要求而做。课程作业要求如下:用VB开发一个实用的中小型信息系统。1 根据课程设计时间选择适当规模大小的设计题目,分小组进行设计。2 小组组长为组员分配任务,根据合理的安排,按照系统开发的流程及方
5、法,踏实地开展课程设计活动。3 课程设计活动中,撰写相关技术文档。最后提交详细的课程设计报告。4 开发出可上机运行的信息系统,通过上机检查。1.2 选题说明1.2.1 基本思路个人财务管理系统是一个简易的信息管理系统,它具有操作简单、效率高优点。该系统包括以下几个模块:项目管理模块、用户信息管理、银行账户管理、日常收入管理模块、日常支出管理模块、借入款项管理模块、借出款项管理模块、月度统计模块、月份选择模块。1.2.2 作业目标个人和个人的用户使用此软件,可以方便的进行个人理财,投资管理。用户可以将自己的每一笔收入和支出输入到数据库中,软件帮你理财。1.3 工作业绩1.3.1 个人主要工作系统
6、总体规划、主界面设计、用户信息管理模块、银行账户管理模块。1.3.2 主要收获1.3.3 自我评定 优 良 中 及格 不及格1.3.4 小组成员任务分工情况本组为本次课程设计,组长为:李想,小组所有成员分工如下:学号:0804060228 姓名:王伟 任务:项目管理模块、日常收入模块、日常支出模块、系统运行学号:0804060229 姓名:陈智校 任务:系统借款管理,借入款项模块、借出款项模块 学号:0804060230 姓名:李想 任务:系统总体规划、主界面设计、用户信息管理模块、银行账户管理模块学号:0804060231 姓名:魏丹 任务:数据库设计、月份选择模块、月度统计模块 2 系统分
7、析2.1 系统需求分析目前,个人对财务管理很大程度上仍局限于手工记录的管理方式,大部分的人采用传统的纸笔将每一笔收入和指出记录下来。这种方式不仅需要大量的时间,而且由于记录的结构不合理,还可能导致记录结果与实际不符的情况,给我们的生活带来诸多的不便。为了解决这个问题,更好的对个人财务进行合理的管理,我们开发了一个能实现以下功能的个人财务管理信息系统。(1)对收入和支出项目进行管理。(2)对日常收入记录进行管理。(3)对日常支出记录进行管理。(4)对借入款项记录进行管理。(5)对借出款项记录进行管理。(6)对选定的某一月份的收入和支出情况进行统计。(7)对用户信息进行管理。(8)对用户银行账户进
8、行管理。2.2 系统功能模块设计根据对系统需求的分析,个人财务管理信息系统主要划分为:项目管理模块、用户信息管理、银行账户管理、日常收入管理模块、日常支出管理模块、借入款项管理模块、借出款项管理模块、月度统计模块、月份选择模块。系统中的主要功能如图所示。个人财务管理信息系统项目管理用户信息管理银行账户管理日常收入管理日常支出管理借入款项管理借出款项管理月度统计月度选择图1 系统功能图系统各个功能:(1)项目管理模块:对收入和支出项目进行管理。可以添加新的收入、支出项目,修改、删除已存在的收入、支出项目。(2)日常收入管理模块:对日常收入记录进行管理。对日常收入记录进行管理,可以添加新的日常收入
9、的日期、方式、金额、来源及备注等信息,也可以对以保存的记录进行修改和删除。(3)日常支出管理模块:对日常支出记录进行管理。(4)借入款项管理模块:对借入款项记录进行管理。(5)借出款项管理模块:对借出款项记录进行管理。(6)月度统计管理模块:对选定的某一月份的收入和支出情况进行统计。(7)用户信息管理模块:对用户信息进行管理。(8)银行账户管理模块:对用户银行账户进行管理。3 数据库分析和设计3.1 数据库分析有别于传统的记录方式,数据库存储高效、准确、快捷。本系统采用的数据库是Access数据库。个人财务管理信息系统数据库主要用到的表包含收入项目表、支出项目表、收入表、支出表、借入表、借出表
10、、用户基本信息表、银行卡信息表等,如图2所示。图2 系统数据库3.2 创建数据库根据对系统需求的分析和数据库分析,接下来开始创建数据库。具体步骤如下。明确建立数据库的目的。即用数据库做哪些数据的管理,有哪些需求和功能。然后再决定如何在数据库中组织信息以节约资源,怎样利用有限的资源以发挥最大的效用。 确定所需要的数据表。在明确了建立数据库的目的之后,就可以着手把信息分成各个独立的主题,每一个主题都可以是数据库中的一个表。 确定所需要的字段。确定在每个表中要保存哪些信息。在表中,每类信息称作一个字段,在表中显示为一列。 确定关系。分析所有表,确定表中的数据和其他表中的数据有何关系。必要时,可在表中
11、加入字段或创建新表来明确关系。 改进设计。对设计进一步分析,查找其中的错误。创建表,在表中加入几个实际数据记录,看能否从表中得到想要的结果。需要时可调整设计。3.3 创建表3.3.1 基本信息表用来记录用户基本信息。表结构如图所示。图3 用户基本信息表3.3.2 借出表用来记录用户借出款项记录。表结构如图所示。图4 借出表3.3.3 借入表用来记录用户借入款项记录。表结构如图所示。图5 借入表3.3.4 收入表用来记录用户收入记录信息。表结构如图所示。图6 收入表3.3.5 收入项目表用来记录系统的收入项目。表结构如图所示。图7 收入项目表3.3.6 银行卡信息表用来记录用户银行卡交易等基本信
12、息。表结构如图所示。图8 银行信息表3.3.7 支出表用来记录用户支出记录。表结构如图所示。图9 支出表3.3.8 支出信息表用来记录系统的支出项目。表结构如图所示。图10 支出信息表4 系统界面设计4.1 创建工程和数据库连接模块首先为个人财务管理信息系统创建工程。在visual basic 6.0中创建一个标准的EXE工程,工程保存为“个人财务管理信息系统”。由于本系统经常读写数据库,所以将相关操作封装为函数的形式可以简化代码的编写,并且是代码简洁易懂。4.2 添加控件在开始创建各个模块界面以前,首先要把系统需要使用的控件添加到工具箱中。需要在工具箱中添加以下5个控件。1、 Microso
13、ft Hierarchical FlexGrid Control 6.0 该控件在系统中用于显示数据库中的记录。2、 Microsoft Tabbed Dialog Control 6.0该控件用于在项目管理和月度统计窗体中使用SSTab控件。3、 Microsoft Windows Common Control6.0该控件用于在系统中创建及使用Toolbar控件和Imagelist控件。4、 ADODC控件绑定控件通过ADO数据控件使用记录集内的数据,在有ADO控件将记录连接到数据库中的数据表,最终在窗口中显示数据记录。4.3 系统主界面设计添加窗体,修改属性“名称”为“frm_main”,
14、将该窗体的caption、picture等属性进行设置。选择【工具】中【菜单编辑器】菜单命令,打开【菜单编辑器】对话框。接下来为主窗体添加Toolbar控件和Imagelist控件添加图片,设置Toolbar控件的【图像列表】属性为“Imagelist”,然后设置其属性。主窗体用来根据选择显示不同的窗体,并不用于实现具体的功能,工具栏命令按钮的单击事件则会调用相应的菜单单击事件。4.4 系统功能实现的各界面设计4.4.1 【项目管理】窗体的界面设计该窗体主要用于对收入和支出项目进行管理。可以添加新的收入、支出项目,修改、删除已存在的收入、支出项目。4.4.2 【用户信息管理】窗体的界面设计该窗
15、体主要用于对用户信息进行管理。4.4.3 【银行卡管理】窗体的界面设计银行账户管理模块主要对用户银行账户进行管理。4.4.4 【日常收入管理】窗体的界面设计日常收入管理模块:对日常收入记录进行管理。对日常收入记录进行管理,可以添加新的日常收入的日期、方式、金额、来源及备注等信息,也可以对以保存的记录进行修改和删除。4.4.5 【日常支出管理】窗体的界面设计日常支出管理模块主要用于对日常支出记录进行管理。4.4.6 【借入款项管理】窗体的界面设计借入款项管理模块主要用于对借入款项记录进行管理。4.4.7 【借出款项管理】窗体的界面设计借出款项管理模块主要用于对借出款项记录进行管理。4.4.8 【
16、月度统计】窗体的界面设计月度统计模块主要用于对选定的某一月份的收入和支出情况进行统计。4.4.9 【月份选择】窗体的界面设计月度选择模块主要用于对选取某一月份进行统计。图21 月度选择模块5 系统代码设计5.1 主窗体代码设计主窗体的作用是:提供一个综合管理的界面,用户在这个界面中可以调用不同的功能窗体。5.2 【日常收入】窗体代码设计5.3 【日常支出】窗体代码设计【日常支出】窗体的设计思路与【日常收入】窗体相同。在【日常支出】窗体中,【金额】文本框活的焦点又失去焦点时,会判断文本框中输入的内容是否为空,以及是否为数字。如果为空,则提醒用户“请输入金额”;如果输入内容不是数字,则提醒用户“金
17、额只能输入数字”。5.4 【借入款项】窗体代码设计在窗体加载时,执行数据库查询语句,查询“借入”表,并将结果传回,然后设置Check1的默认值为“0”,Lable2的Caption值为数据记录个数。5.5 【借出款项】窗体代码设计5.6 【月度统计】窗体代码设计【月度统计】窗体加载时执行Activate事件,会对本月的收入、支出情况进行统计,并在窗体上显示出来。窗体代码设置如下:Dim Mydb As New ADODB.RecordsetDim Mydb1 As New ADODB.RecordsetDim Money As New ADODB.RecordsetDim Money1 As
18、New ADODB.RecordsetDim Str_text As StringPrivate Sub Command2_Click() frm_month.ShowEnd SubPrivate Sub Command3_Click() Unload MeEnd SubPrivate Sub Form_Activate() On Error Resume Next Dim A, B, C As Integer Dim D As StringDim Year1, Month1, Riqi, Riqi1, Riqi3, Riqi4 If aa = True Then Set Mydb = Exe
19、Cutesql(select * from 收入 where 日期 between & Cdate1 & and & Cdate2 & , ) Set MSHFlexGrid1.DataSource = Mydb Set Mydb1 = ExeCutesql(select * from 支出 where 日期 between & Cdate1 & and & Cdate2 & , ) Set MSHFlexGrid2.DataSource = Mydb1 Set Money = ExeCutesql(select sum(金额) from 收入 where 日期 between & Cdate
20、1 & and & Cdate2 & , ) A = Money.Fields(0) If IsNull(A) Then A = 0 End If Label2.Caption = ASet Money1 = ExeCutesql(select sum(金额) from 支出 where 日期 between & Cdate1 & and & Cdate2 & , ) B = Money1.Fields(0) If IsNull(B) Then B = 0 End If Label6.Caption = B C = A - B If C 0 Then D = 盈余 Else D = 透支 En
21、d If Label4.Caption = Format(Cdate1, yyyy年mm月) & , & 本月 & D & C & 元 Else Year1 = Year(Now) Month1 = Month(Now) Riqi = Year1 & - & Month1 Riqi1 = Year1 & - & Month1 + 1Set Mydb = ExeCutesql(select * from 收入 where 日期 between & Format(Riqi, yyyy-mm) & and & Format(Riqi1, yyyy-mm) & , Str_text) Set MSHF
22、lexGrid1.DataSource = Mydb Set MSHFlexGrid2.DataSource = Mydb1 Set Money = ExeCutesql(select sum(金额) from 收入 where 日期 between & Format(Riqi, yyyy-mm) & and & Format(Riqi1, yyyy-mm) & , ) A = Money.Fields(0) If IsNull(A) Then A = 0 End If Label2.Caption = ASet Money1 = ExeCutesql(select sum(金额) from
23、支出 where 日期 between & Format(Riqi, yyyy-mm) & and & Format(Riqi1, yyyy-mm) & , ) B = Money1.Fields(0) If IsNull(B) Then B = 0 End If Label6.Caption = BC = A - B If C 0 Then D = 盈余 Else C = Abs(C) D = 透支 End If Label4.Caption = Year(Now) & 年 & Month(Now) & 月 & , & 本月 & D & C & 元 End IfEnd SubPrivate
24、Sub Form_Load() On Error Resume Next Dim A, B, C As IntegerDim D As StringDim Year1, Month1, Riqi, Riqi1, Riqi3, Riqi4 Year1 = Year(Now) Month1 = Month(Now) Riqi = Year1 & - & Month1 Riqi1 = Year1 & - & Month1 + 1Set Mydb = ExeCutesql(select * from 收入 where 日期 between & Format(Riqi, yyyy-mm) & and &
25、 Format(Riqi1, yyyy-mm) & , Str_text)Set MSHFlexGrid1.DataSource = Mydb Set Mydb1 = ExeCutesql(select * from 支出 where 日期 between & Format(Riqi, yyyy-mm) & and & Format(Riqi1, yyyy-mm) & , Str_text) Set MSHFlexGrid2.DataSource = Mydb1 Set Money = ExeCutesql(select sum(金额) from 收入 where 日期 between & F
26、ormat(Riqi, yyyy-mm) & and & Format(Riqi1, yyyy-mm) & , ) A = Money.Fields(0) If IsNull(A) Then A = 0 End If Label2.Caption = A Set Money1 = ExeCutesql(select sum(金额) from 支出 where 日期 between & Format(Riqi, yyyy-mm) & and & Format(Riqi1, yyyy-mm) & , ) B = Money1.Fields(0) If IsNull(B) Then B = 0 En
27、d If Label6.Caption = B C = A - B If C 0 ThenD = 盈余 Else C = Abs(C) D = 透支 End If Label4.Caption = Year(Now) & 年 & Month(Now) & 月 & , & 本月 & D & C & 元End SubPrivate Sub MSHFlexGrid2_Click()End Sub5.7 【银行交易统计】窗体代码设计5.8 【项目管理】窗体代码设计5.9 【基本信息查询】窗体代码设计5.10 【选择月份】窗体代码设计代码设计如下:Dim Mydb As New ADODB.Record
28、setDim Riqi, Riqi1, Year1, Month As StringPrivate Sub Command1_Click() If Combo1.Text = Then MsgBox 请选择年份!, vbOKOnly + 32, 注意! Else If Combo2.Text = Then MsgBox 请选择月份!, vbOKOnly + 32, 注意! Else aa = True Year1 = Combo1.Text Month = Combo2.Text Riqi = Year1 & - & Month Riqi1 = Year1 & - & Month + 1 Cd
29、ate1 = Format(Riqi, yyyy-mm) Cdate2 = Format(Riqi1, yyyy-mm) Unload MeEnd If End IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Dim Y, M As Integer Y = 2000 For Y = Int(Year(Now) - 5) To Int(Year(Now) Combo1.AddItem Y Next Y M = 1 For M = 1 To 12Combo2.AddItem M Next MEn
30、d Sub6 系统运行6.1 系统主界面操作系统运行从主界面开始,这样才能调用其他窗体。选择【工程】【属性】菜单命令,在弹出的【个人财务管理系统工程属性】对话框中,选取【通用】选项卡下的【启动对象】下拉列表中的【frm_main】窗体,然后单击【确定】按钮。单击工程中的【启动】按钮或按【F5】快捷键运行系统,显示系统主界面,在主界面上选择不同的菜单命令或者单击不同的命令按钮,即可显示不同的窗体。6.2 项目管理操作选择【系统设置】【项目管理】菜单命令,或者单击工具栏中的【项目管理】按钮,即可进入【项目管理】界面。单击【添加】按钮,在【添加项目】文本框中输入“转账”,然后单击【保存】按钮,即可往
31、系统中添加一条收入项目。选中一条记录后单击【删除】按钮,即可把已经存在的收入项目删除。对支出项目的管理与此类似。6.3 日常收入、支出管理和银行账户信息操作单击工具栏中的【日常收入】按钮,即可进入【日常收入】管理界面。分别填写日常收入的相关信息后单击【添加】按钮,即可添加一条收入记录。选中一条记录,然后单击【删除】按钮,即可删除记录。对日常支出的管理和银行账户信息的管理与此类似。6.4 借入款项、借出款项和用户个人信息管理操作单击工具栏中的【借入款项】按钮,即可进入【借入款项】管理的界面。对借入款项的添加、修改和删除操作与对日常收入记录的管理类似。单击【首条】按钮,即可显示借入款项的第1条记录
32、信息。单击【上一条】、【下一条】按钮,可以浏览记录,单击【末条】按钮则会显示最后一条记录信息。借出款项管理和用户个人信息管理与此类似。6.5 月度统计管理操作单击工具栏中的【月度统计】按钮,即可进入【月度统计】管理界面。窗体加载时,会自动对当月进行统计,分别在【本月收入情况】和【本月支出情况】显示详细的记录,并在窗体下方显示月度盈余或透支总结。单击【其他月份】按钮,在弹出的【选择月份】窗口中选择相应的日期,然后单击【确定】按钮,则会在【月度统计】窗口中显示已选择月份的统计详情。 结束语本系统在设计之初,我对VB和SQL有一定的了解,在老师和同学的帮助下,根据所学的关于软件工程的知识,从最初的数据库设计到最后系统前台界面的设计及代码的实现经历了大约2周的时间,在这2周中,我们按照软件工程的生命周期方法学来完成设计,即系统的需求分析、数据库设计、程序设计、系统调试等开发步骤,分阶段地完成各设计任务设计过程中,由于要实现某些功能,互联网帮了我的大忙。网络资源是一个丰富的共享体系,我通过在VB.NET论坛上提出问题得到了很多热心网友的帮助,这坚定了我通过网络吸收知识的信心。参考文献1 Visual Basic从入门到精通. 第1版. 人民邮电出版社. 20102 龚沛曾,杨志强,陆慰民. Visual Basic程序设计教程. 第3版. 高等教育出版社. 2007