课程设计报告报告vb家庭理财管理系统_第1页
课程设计报告报告vb家庭理财管理系统_第2页
课程设计报告报告vb家庭理财管理系统_第3页
课程设计报告报告vb家庭理财管理系统_第4页
课程设计报告报告vb家庭理财管理系统_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、-PAGE . z. -. .可修编.师大学物电学院课程设计报告课 程 名 称: 计算机程序设计实训题 目: 家庭理财管理系统专 业 班 级: 电子科学与技术0831学 生 姓 名:海龙学 生 学 号:08223013日 期:2010-12-16指 导 教 师:纪平物电学院教务部印制说明:1、报告中的第一、二、三项由学生在课程设计开始前填写,由指导教师指导并确认签字。2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩,并填写成绩评定表。3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。答辩小组成员应由2人及以上教师组成。答辩后学生根据答辩情况填写答辩记

2、录表。4、报告正文字数一般应不少于3000字,也可由指导教师根据本门课程设计的情况另行规定。5、平时表现成绩低于6分的学生,取消答辩资格,其该课程设计成绩按不及格处理。6、课程设计完成后,由指导教师根据完成情况写出总结。7、此表格式为师大学物理与电子工程学院提供的基本格式,指导教师可根据本门课程设计的特点及容做适当的调整。一、课程设计目的、任务和容要求:计算机语言程序设计是一门以编程实践为主的专业课,目的在于培养学生利用计算机语言进行软件开发所必需的基本思想和基本技能,进一步提高综合应用计算机语言的各种编程知识和技巧进行程序设计的能力,通过本次课程设计,学生应能达到具备设计功能较为复杂的应用程

3、序的能力,同时培养学生自主学习和独立创新的精神。任务如下: 1进行需求分析和概要设计,给出流程图。 2写出详细设计,熟悉其中采用的关键技术。3给出具体的编码实现并调试。4写课程设计报告提交源程序。容要求:设计并完成软件系统。要求:1应具有简洁友好的用户界面。2要求软件系统的功能完整。3要求程序具备正确性,可读性和运行的高效性。二、进度安排:第13天: 查找资料,进行需求分析和概要设计;第46天: 各模块的详细设计;第712天: 软件实现与调试;第1314天:写课程设计报告并提交源程序。三、主要参考文献:1白晓勇.Visual Basic案例精编M .:清华大学, 20072吴昌平.Visual

4、 Basic6.0程序设计M:人民邮电2008 指导教师签字:年月日-. z. -. .可修编.目 录摘 要IIAbstractII1 概述11.1基本思路12 设计方案简述22.1 基本方法2 2.2程序流程图 23 详细设计43.1 设计架构44设计结果及分析54.1数据库配置54.2 分支模块55总结 125.1设计体会与总结12参考文献 13.附录 主要程序代码14摘 要家庭理财管理信息系统可以对家庭的现金、银行存款、应收款和欠款进行管理,操作流程简介,使记账不再是会计的专利,统计分析全面,让用户对家庭财务状况一目了然。家庭理财管理系统使用的是VB编程,VB语言的突出特点是可视化设计,

5、它为用户提供了大量的界面元素容易开发。利用ADO控件可以实现数据库的连接,实现管理数据库的操作。VB语言通过事件来触发执行相应的事件过程,这就是事件驱动。所谓事件,就是对操作对象(比如窗体,控件等)进行操作(比如鼠标单击),从而产生的相应的响应。事件是窗体或控件识别的动作,在关联的事件过程中存在代码编辑器中。家庭管理系统就是基于事件操作的。本设计是基于vb的家庭理财管理系统,利用其提供的各种面向对象的开发工具实现个人家庭理财,从而可以有效地管理家庭收入与支出,解决了纸质化的理财,应用电脑帮助用户进行科学理财。关键词:可视化界面;ADO控件;模块设计 AbstractTheprogramisde

6、signedby a language called Visual Basic,which is good for avisualized program.The project is called a familyfinancial management which can help you control your money more effiectly.The language of Visual Basic is a very poewer language for puter programming especially for the visualized screen .VB

7、language through the event to trigger the e*ecution of the correspondingevent procedure, which is based event driven. The so-called events, that isthe operating object (such as forms, controls, etc.) to operate (such as a mouse click), to produce the appropriate response. Event is a form or control

8、action identified in the course of events associated with a code editor. Home management system is event-based operations.Keywords:video ; ADO control active ;model designing-. z. .可修编.1 概述1.1 基本思路本设计是基于vb的家庭理财管理系统,利用其提供的各种面向对象的开发工具实现个人家庭理财,从而可以有效地管理家庭收入与支出,解决了纸质化的理财,应用电脑帮助人民进行科学理财,形象生动,具有一定的可实用性家庭理

9、财系统是一种管理系统,开发容主要是后台的数据库建立、维护以及前台的相应应用程序的开发。它应该能够为每个家庭的管理者提供充足的信息和快捷的查询手段,大大的方便家庭的管理者的合理理财。作为计算机应用的一部分,使用计算机对家庭理财进行管理,具有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、性好、寿命长、成本低等。这些优点能够极提高家庭财务管理的效率,也是家庭理财的科学化、正规化管理,与先进科学技术接轨的重要条件。VB的主窗口由标题栏、菜单栏、工具栏、工具箱、工程窗口、工程资源管理器、属性窗口、窗体布局窗口组成。工程资源管理器窗口中的文件分为:窗体文件(.frm)、标准模块文

10、件(.bas)、类模块文件(.cls)、工程文件(.vbp)、工程组文件(.vbg)和资源文件(.res)。本家庭理财管理系统就是通过建立许多窗口文件,然后将这些窗口文件组合成一个模块建立一个工程。通过ADO控件,结合SQL语言又可以实现数据库的操作。家庭理财管理系统主要使用于家庭对财务状况的管理和查询,记录日常的收支情况,对银行账户状态的管理,家庭对外债关系的管理以及家庭的投资理财。开发工具主要采用Visual Basic 6.0 Microsoft Access 2003,VB主要是用来实现系统管理、理财项目管理、日常管理、查询管理、修改管理、统计报告管理、投资理财管理这七个功能的。总体见

11、图1-1数据库登陆信息管理数据库综合信息管理退出信息管理图1-1 思路图2设计方案简述2.1基本方法本设计利用了数据库报表,采用ADO控件实现了家庭理财管理系统的所有可视化界面,类似于MFC编写应用程序向导,ADO对象可以在所有支持和OLE的平台上使用,如VB,VC+等等。OLE DB是一种低层数据访问界面接口,它是一套部件对象模型()接口,支持大量可用于数据源的DBMS功能,利用SQL语言,连接数据库。SQL全称是结构化查询语言”,最最早的是IBM的圣约瑟研究室开发的一种查询语言。建立了表格,并在表格中插入了所需要的数据。台数据库使用Access,前台开发工具使用Visual Basic。本

12、系统采用目前比较流行的ADO数据访问技术,并将每个数据库表的字段和操作封装到类中,从而成功地将面向对象的程序设计思想应用到数据库应用程序设计中。这也是本系统的特色和优势。具体如图2-1整体布局。图2-1 整体布局2.2程序流程图基于整体布局情况和程序运行结果及步骤,家庭理财管理系统的登陆界面是一个密码登陆系统,此界面与程序主题界面是分开的,提示用户输入密码,并根据用户预先设置的密码进行核对,如果两次输入密码不正确就会自动退出(次数可以设置)。进入登陆界面后,就进行财产管理,根据具体情况可以具体处理并画出饼形图,形象直观,科学导用户理财。当用户单击退出界面后,程序便退出系统。具体如图2-2家庭理

13、财管理程图。3详细设计3.1设计架构基本设计框架如图3-1设计架构。家庭理财系统管理理财分析管理系统借还钱管理系统银行储蓄管理系统系统管理基础数据管理系统日常收支管理系统图3-1 设计架构 设计框架简述家庭理财管理系统主要由六个分支管理系统构成,系统管理又分为:导出数据库,导入数据库,重新登录,退出。基础数据和管理系统又分为:收支项目管理,家庭成员管理。日常收支管理系统又分为:日常收入,日常支出。银行储蓄管理系统又分为:活期账户,定期储蓄。借还钱管理系统又分为:借入款,借出款。理财分析又分为:查询明细,理财报告。4设计结果及分析4.1数据库配置因为采用的是Microsoft Access数据库

14、,所以配置非常简单。只要保证数据库的配置路径正确就可以了。此家庭理财管理系统用的路定是:Str_path = App.Path & & databaseMoneyMIS.mdb如图4-1所示。 图4-1 数据库4.2分支模块各分支模块设计Visual Basic 语言程序设计是按窗体分类后进行模块化设计的,所以此家庭理财管理系统按照每个模块的功能逐一添加了相应的窗体后,在每个模块中添加相应的函数,然后连接数据库,使得每个模块的添加,修改,删除都能随时保持与数据库的及时更新,从而实现智能管理。(1)密码系统可以修改密码,输入旧密码,然后输入新密码,再次输入新的密码后,如果新密码与原密码相同,则可

15、以修改密码否则提示密码不一致。VB语言通过事件来触发执行相应的事件过程,这就是事件驱动。所谓事件,就是对操作对象(比如窗体,控件等)进行操作(比如鼠标单击),从而产生的相应的响应。这样我们输入密码后,如果正确就可以进入系统。事件是窗体或控件识别的动作,在关联的事件过程中存在代码编辑器中。如图4-2-1所示。 图4-2-1 密码登陆(2)添加家庭成员可以添加修改删除成员列表,自动更新数据库,使得处理非常方便简洁。利用ADO控件连接数据库,使用SQL语言查询化结构语言直接操纵数据库。如图4-2-2所示。 图4-2-2 添加家庭成员(3)日常收入与支出可以添加日期,方式,金额,项目,去向,人员,备注

16、等,然后以表格形式呈现出来。当然也可以添加,删除,修改,保存.。如图4-2-3和图4-2-4所示。 图4-2-3 日常收入 图4-2-4 日常支出 借入款与借出款系统自动弹出一个对话框,显示当前记录,得款人,借款金额,出借人,借款日期,借款原因.,可以添加,修改,保存。借款原因这一项,可以帮助家庭进行反思,总结觉悟,从而有效利用家庭财产,受利益最大化。借入款与借出款配合,帮助家庭理财管理系统,然用户可以一目了然的看出具体的借钱情况,从而可以规划一下具体的钱财,有助于用户实时了解本年,或是本月具体情况,并可以根据具体情况做出具体的处理。在对话框我们给出了具体的记录,用户则根据具体的记录作出判断。

17、具体如图4-2-5,4-2-6所示。 图4-2-5 借入款 图4-2-6 借出款查询查询项目可以分为日常收入与日常支出。同时还可以按日期或是方式或是金额或是项目。系统自动会根据操作者所选的具体规则在对话框的下半部分显示具体的日常收入与日常支出。如图4-2-7,4-2-8所示。 图4-2-7 日常支出 图4-2-8 日常收入饼图饼图可以根据一定的比例形象的描绘出收入情况与支出情况,可以按照给定的比例形象生动的绘制出一定的饼状图形,采用不同的颜色,根据实际的数据,按照先后一定的顺序,配合表格,画出图形。饼图画出之后,可以选择具体的统计方式,可以按照人员统计方式进行统计,当然也可以按照具体的项目进行

18、统计。应用两种不同的统计方式,可以满足用户不同的方面,也可以满足用户的不同侧重点,本次饼图只是统计了2010年的不同情况,具体的统计哪一年和那一个月是由在窗体中添加不同代码加以实现的,通过不同代码,可以实现不同年月份的统计统计饼图也可以根据收入情况或者是支出情况是支出情况作出调整。具体情况如图4-2-9所示。 图4-2-9 饼图5总结51设计体会与总结通过这十几天的计算机课程设计,我学会了将一种技能转移到另外一种技能上的本领。首先要感我的指导老师纪平老师,通过老师的VC+及MFC的课程讲解,让我学会的不仅仅是一种语言,更是一种编程的思想与算法。我编程主要是通过VB,通过对图书馆资料和网上的资料

19、查询,我对VB有了一些初步的认识,通过此次课程设计更加深了我运用VB语言,利用ADO控件操作数据库的能力。同时我想在新时代的大背景下,我们运用程序的设计可以实现许多无纸化管理。这更符合环保的要求。由此可见计算机程序实训培养了我们学生实际的操作能力,这也符合新世纪环保节约的要求,同时意义也是很重大的。通过此次设计我对VB也有了更全面的认识。VB语言通过事件来触发执行相应的事件过程,这就是事件驱动。所谓事件,就是对操作对象(比如窗体,控件等)进行操作(比如鼠标单击),从而产生的相应的响应。VB的主要特点:1可视化编程2事件驱动3面向对象4数据库管理功能 5结构化程序设计语言。我想在以后的学习及工作

20、中我会更加努力学习,不断丰富我的计算机程序设计能力。参考文献1白晓勇.Visual Basic案例精编M .:清华大学, 20072吴昌平.Visual Basic6.0程序设计M:人民邮电2008附录 主要程序代码(1)公共模块设计代码Public Str_path As StringPublic ame As String 登陆时传用户名Public Cdate1 As String 传日期(收入情况列表)Public Cdate2 As String 传日期Public AA As Boolean 判断是否选择月份ADO编程模型连接数据库Public Function Connectst

21、ring() As StringDim Str_path As StringStr_path = App.Path & & databaseMoneyMIS.mdbConnectstring = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & Str_path & ;Persist Security Info=FalseEnd FunctionADO编程模型连接数据库Public Function E*eCutesql(ByVal Sql As String, Msgstring As String) As ADODB.Recordset Dim

22、 n As ADODB.Connection Dim Rst As ADODB.Recordset Dim Stokens() As String 数组 On Error GoTo e*ecutesql_error Stokens = Split(Sql) 将sql语句按关键字保存在数组中 Set n = New ADODB.Connection n.Open Connectstring If InStr(INSERT,DELETE,UPDATE, UCase$(Stokens(0) Then n.E*ecute Sql Msgstring = Stokens(0) & 查询成功 Else S

23、et Rst = New ADODB.Recordset Rst.Open Trim$(Sql), n, adOpenKeyset, adLockOptimistic 重服务器中提取符合要求的记录集 Set E*eCutesql = Rst Msgstring = 查询到 & Rst.RecordCount & 条记录 End Ife*ecutesql_e*it: Set Rst = Nothing 释放记录集 Set n = Nothing 释放连接语句 E*it Functione*ecutesql_error: Msgstring = 查询错误: & Err.Description Re

24、sume e*ecutesql_e*itEnd Function(2)借入借出模块代码Dim Mydb As New ADODB.RecordsetDim Mydb1 As New ADODB.RecordsetDim Str_te*t As StringDim strflag As StringPrivate Sub cmd_close_Click() Unload MeEnd SubPrivate Sub cmd_add_Click() t*t_man.Locked = False t*t_way.Locked = False t*t_money.Locked = False bo1.Lo

25、cked = False Check1.Enabled = True DTPicker1.Enabled = True t*t_man.Te*t = t*t_way.Te*t = t*t_money.Te*t = bo1.Te*t = strflag = 添加 Cmdsave.Enabled = TrueEnd SubPrivate Sub cmd_del_Click() Dim A As Boolean A = MsgBo*(是否真的要删除这条记录?, vbOKCancel + 32 + 256, 删除) If A = True Then E*eCutesql delete from 借入

26、where 得款人= & t*t_man.Te*t & , Str_te*t MsgBo* 记录已删除!, , 删除 If Mydb.RecordCount 0 Then Mydb.MoveNe*t If Mydb.EOF Then Mydb.MoveLast Call Db Call Bangding Label7.Caption = Mydb.RecordCount End If End IfEnd SubPrivate Sub cmd_edit_Click() On Error Resume Ne*t Dim A As Boolean t*t_man.Locked = False t*t

27、_way.Locked = False t*t_money.Locked = False bo1.Locked = False Check1.Enabled = True DTPicker1.Enabled = True strflag = 修改 Cmdsave.Enabled = TrueEnd SubPrivate Sub Cmdsave_Click() On Error Resume Ne*t Dim A As Boolean If strflag = 添加 Then A = MsgBo*(是否添加前记录?, vbYesNo + 32, 添加记录) If A = True Then E*

28、eCutesql insert into 借入 values( & t*t_man.Te*t & , & t*t_money.Te*t & , & bo1.Te*t & , & Format(DTPicker1.Value, yyyy-mm-dd) & , & t*t_way.Te*t & , & Check1.Value & ), Str_te*t MsgBo* 数据已经保存!, vbOKOnly + 64, 成功 Call Db Label7.Caption = Mydb.RecordCount End If ElseIf strflag = 修改 Then A = MsgBo*(是否修改

29、前记录?, vbYesNo + 32, 添加记录) If A = True Then Mydb.Update Mydb.Requery Call Db MsgBo* 数据修改成功!, vbOKOnly + 64, 成功 End If End If t*t_man.Locked = True t*t_way.Locked = True t*t_money.Locked = True bo1.Locked = True Check1.Enabled = False DTPicker1.Enabled = False Cmdsave.Enabled = FalseEnd SubPrivate Sub

30、 bo1_Change() Set Mydb1 = E*eCutesql(select from 成员, Str_te*t) Set bo1.DataSource = Mydb1 For I = 1 To Mydb1.RecordCount bo1.AddItem (Mydb1.Fields(0) Mydb1.MoveNe*t If Mydb1.EOF Then E*it For Ne*t IEnd SubPrivate Sub mand1_Click() On Error Resume Ne*t Call Db Mydb.MoveFirst Call BangdingEnd SubPriva

31、te Sub mand3_Click() On Error Resume Ne*t Call Db Mydb.MoveNe*t If Mydb.EOF Then MsgBo* 这已经是最后一条记录了!, vbOKOnly + 32, 注意 Mydb.MoveLast End If Call BangdingEnd SubPrivate Sub mand2_Click() On Error Resume Ne*t Mydb.MovePrevious If Mydb.BOF Then MsgBo* 这已经是第一条记录了!, vbOKOnly + 32, 注意 Mydb.MoveFirst End

32、If Call BangdingEnd SubPrivate Sub mand4_Click() On Error Resume Ne*t Call Db Mydb.MoveLast Call BangdingEnd SubPrivate Sub Form_Load() On Error Resume Ne*t Call Db Call Bangding Cmdsave.Enabled = False Check1.Value = 0 Label7.Caption = Mydb.RecordCount DTPicker1.Value = Date t*t_man.Locked = True t

33、*t_way.Locked = True t*t_money.Locked = True bo1.Locked = True Check1.Enabled = False DTPicker1.Enabled = FalseEnd SubPrivate Function Db() Set Mydb = E*eCutesql(select * from 借入, Str_te*t)End FunctionPrivate Function Bangding() On Error Resume Ne*t Set t*t_man.DataSource = Mydb Set t*t_money.DataSo

34、urce = Mydb Set DTPicker1.DataSource = Mydb Set t*t_way.DataSource = Mydb Set Check1.DataSource = Mydb t*t_man.DataField = 得款人 t*t_money.DataField = 金额 DTPicker1.DataField = 日期 t*t_way.DataField = 出借原因 Check1.DataField = 已还 Set bo1.DataSource = Mydb bo1.DataField = 出借人End Function(3)主函数代码Private Sub

35、 mnu_bg_yue_Click() frm_list.Show 0, frm_main 参数,让frm_main为主窗体打开多个子体End SubPrivate Sub mnu_c*_shouru_Click() frm_query.Show 0, frm_mainEnd SubPrivate Sub mnu_bz_zt_Click()End SubPrivate Sub mnu_c*_Click() frm_query.Show 0, frm_mainEnd SubPrivate Sub mnu_rcgl_dq_Click() frm_fi*.Show 0, frm_mainEnd Su

36、bPrivate Sub mnu_rcgl_hq_Click() frm_live.Show 0, frm_mainEnd SubPrivate Sub mnu_rcgl_jc_Click() frm_borrowgo.Show 0, frm_mainEnd SubPrivate Sub mnu_rcgl_jr_Click() frm_borrowin.Show 0, frm_mainEnd SubPrivate Sub mnu_rcgl_sr_Click() frm_intake.Show 0, frm_mainEnd SubPrivate Sub mnu_rcgl_zc_Click() f

37、rm_e*pend.Show 0, frm_mainEnd SubPrivate Sub mnu_*t_shz_Click() frm_login.Show Unload MeEnd SubPrivate Sub mnu_*t_*g_Click() frm_password.Show 0, frm_mainEnd SubPrivate Sub mnu_*t_*u_Click() frm_project.Show 0, frm_mainEnd SubPrivate Sub mnu_*y_family_Click() frm_family.Show 0, frm_mainEnd SubPrivat

38、e Sub mnue*it_Click()Unload MeEnd SubPrivate Sub mnuinput_Click()Call FileInEnd SubPrivate Sub mnuout_Click()Call FileGoEnd SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As MSctlLib.Button) Select Case Button.Inde* Case 1 Call mnu_*t_*u_Click Case 2 Call mnu_*y_family_Click Case 3 Call mnu_*t_*g_

39、Click Case 5 Call FileGo Case 6 Call FileIn Case 8 Call mnu_rcgl_sr_Click Case 9 Call mnu_rcgl_zc_Click Case 10 Call mnu_rcgl_hq_Click Case 11 mnu_bg_yue_Click Case 13 Call mnu_c*_Click Case 15 Unload Me End SelectEnd SubPrivate Function FileGo() On Error GoTo 1 Dim A, B As String monDialog1.ShowSav

40、e A = monDialog1.FileName B = App.Path & & databaseMoneyMIS.mdb Set fs = CreateObject(Scripting.FileSystemObject) fs.CopyFile B, A MsgBo* 数据库导出成功!, vbOKOnly + 64, 成功 E*it Function1: MsgBo* 数据库导出失败!, vbOKOnly + 64, 失败End FunctionPrivate Function FileIn() On Error GoTo 1 Dim A, B, C, D As String C = M

41、sgBo*(是否真的导入数据库,导入新数据库后,将覆盖原来的所有录?, vbYesNo + 48 + 256, 警告) If C = vbYes Then monDialog1.ShowOpen A = monDialog1.FileName B = App.Path & & databaseMoneyMIS.mdb D = CurDir() & & MoneyMIS.mdb Set Fs1 = CreateObject(Sfcripting.FileSystemObject) Fs1.DeleteFile D, True Fs1.CopyFile A, B MsgBo* 数据库导入成功!,

42、vbOKOnly + 64, 成功 Else MsgBo* 数据库导入失败!, vbOKOnly + 64, 失败 End If E*it Function1: MsgBo* 数据库导入失败!, vbOKOnly + 64, 失败End Function(4)密码代码Dim Mydb As New ADODB.RecordsetDim Str_te*t As StringPrivate Sub mand1_Click() On Error Resume Ne*t Dim Password As String Dim Newpassword As String Password = Te*t1.

43、Te*t Newpassword = Te*t2.Te*t Set Mydb = E*eCutesql(SELECT pass from user1 WHERE user= & ame & , Str_te*t) MsgBo* select pass from user1 where user= & ame & If Not Password = Mydb.Fields(0) Then MsgBo* 原密码输入错误!, vbOKOnly + 32, 注意 Te*t2.Te*t = Te*t3.Te*t = Te*t2.SetFocus Else If Te*t3.Te*t Newpasswor

44、d Then MsgBo* 你两次输入密码不一致,请重新输入!, vbOKOnly + 32, 注意 Te*t1.SetFocus Else E*eCutesql UPDATE user1 SET pass= & Newpassword & where user= & ame & , MsgBo* 密码更改成功!, vbOKOnly + 64, 注意 Unload Me End If End IfEnd SubPrivate Sub mand2_Click() Unload Me frm_main.ShowEnd Sub(5)项目代码Dim Mydb1 As ADODB.RecordsetDi

45、m Mydb2 As ADODB.RecordsetDim Mydb3 As ADODB.RecordsetDim Mydb4 As ADODB.RecordsetDim Str_te*t As StringPrivate Function Db1() Set Mydb1 = E*eCutesql(select * from 收入项目, Str_te*t) Set MSHFle*Grid1.DataSource = Mydb1End FunctionPrivate Function Db2() Set Mydb2 = E*eCutesql(select * from 支出项目, Str_te*

46、t) Set MSHFle*Grid2.DataSource = Mydb2End FunctionPrivate Sub cmd_add_Click() Te*t1.Locked = FalseEnd SubPrivate Sub cmd_cancel_Click() Unload MeEnd SubPrivate Sub cmd_del_Click() On Error Resume Ne*t Dim A As Boolean Set Mydb3 = E*eCutesql(select * from 收入项目 where value= & Te*t1.Te*t & , Str_te*t)

47、If SSTab1.Tab = 0 Then A = MsgBo*(是否删除当前记录, vbYesNo + 32 + 256, 删除记录) If A = True Then Mydb3.Delete Mydb3.MoveNe*t If Mydb3.EOF Then Mydb.MoveLast Mydb3.Requery Call Db1 End If Else Set Mydb4 = E*eCutesql(select * from 支出项目 where value= & Te*t1.Te*t & , Str_te*t) A = MsgBo*(是否删除当前记录, vbYesNo + 32 +

48、256, 删除记录) If A = True Then Mydb4.Delete Mydb4.MoveNe*t If Mydb4.EOF Then Mydb2.MoveLast Mydb4.Requery Call Db2 End If End IfEnd SubPrivate Sub cmd_save_Click() On Error Resume Ne*t Dim A As Boolean If SSTab1.Tab = 0 Then A = MsgBo*(是否添加前记录, vbYesNo + 32, 添加记录) If A = True Then E*eCutesql insert int

49、o 收入项目 values( & Te*t1.Te*t & ), Str_te*t Mydb1.MoveLast Call Db1 MsgBo* 收入项目添加成功!, vbOKOnly + 64, Te*t1.Te*t = End If Else A = MsgBo*(是否添加前记录, vbYesNo + 32, 添加记录) If A = True Then E*eCutesql insert into 支出项目 values( & Te*t1.Te*t & ), Str_te*t Mydb2.MoveLast Call Db2 MsgBo* 支出项目添加成功!, vbOKOnly + 64,

50、 Te*t1.Te*t = End If End IfEnd SubPrivate Sub Form_Load() Te*t1.Locked = True Call Db1 Call Db2End SubPrivate Sub MSHFle*Grid1_Click() Te*t1.Te*t = MSHFle*Grid1.Te*tMatri*(MSHFle*Grid1.Row, 1)End SubPrivate Sub MSHFle*Grid2_Click() Te*t1.Te*t = MSHFle*Grid2.Te*tMatri*(MSHFle*Grid2.Row, 1)End Sub(6)查

51、询代码Dim Mydb As New ADODB.RecordsetDim Mydb1 As New ADODB.RecordsetDim Mydb2 As New ADODB.RecordsetDim Mydb3 As New ADODB.RecordsetDim Mydb4 As New ADODB.RecordsetDim Mydb5 As New ADODB.RecordsetDim Mydb10 As New ADODB.RecordsetDim Mydb11 As New ADODB.RecordsetDim Mydb12 As New ADODB.RecordsetDim Str

52、_te*t As StringDim Riqi, Riqi1, Riqi3, Riqi4Private Sub Chk_date1_Click() If Chk_date1.Value = 1 Then Chk_mode1.Value = 0 Chk_money1.Value = 0 Chk_project1.Value = 0 End IfEnd SubPrivate Sub Chk_mode1_Click() If Chk_mode1.Value = 1 Then Chk_money1.Value = 0 Chk_project1.Value = 0 Chk_date1.Value = 0

53、 End IfEnd SubPrivate Sub Chk_money1_Click() If Chk_money1.Value = 1 Then Chk_mode1.Value = 0 Chk_project1.Value = 0 Chk_date1.Value = 0 End IfEnd SubPrivate Sub Chk_project1_Click() If Chk_project1.Value = 1 Then Chk_mode1.Value = 0 Chk_date1.Value = 0 Chk_money1.Value = 0 End IfEnd SubPrivate Sub

54、mand1_Click() If Chk_date.Value = 1 Then Call Criqi End If If Chk_mode.Value = 1 Then Call Mode End If If Chk_money = 1 Then Call Money End If If Chk_project.Value = 1 Then Call Project End IfEnd SubPrivate Sub mand2_Click() Unload MeEnd SubPrivate Sub mand3_Click() If Chk_date1.Value = 1 Then Call

55、Criqi1 End If If Chk_mode1.Value = 1 Then Call Mode1 End If If Chk_money1 = 1 Then Call Money1 End If If Chk_project1.Value = 1 Then Call Project1 End IfEnd SubPrivate Sub mand4_Click() Unload MeEnd SubPrivate Function Criqi() Riqi = Format(DTPicker1.Value, yyyy-mm-dd) Riqi1 = Format(DTPicker2.Value

56、, yyyy-mm-dd) Set Mydb = E*eCutesql(select * from 收入 where 日期 between & Riqi & and & Riqi1 & , Str_te*t) Set MSHFle*Grid1.DataSource = MydbEnd FunctionPrivate Function Mode() Set Mydb1 = E*eCutesql(select * from 收入 where 方式= & bo1.Te*t & , Str_te*t) Set MSHFle*Grid1.DataSource = Mydb1End FunctionPri

57、vate Function Money() On Error Resume Ne*t Set Mydb2 = E*eCutesql(select * from 收入 where 金额= & t*t_money.Te*t, Str_te*t) Set MSHFle*Grid1.DataSource = Mydb2End FunctionPrivate Function Project() Set Mydb3 = E*eCutesql(select * from 收入 where 项目= & bo2.Te*t & , Str_te*t) Set MSHFle*Grid1.DataSource =

58、Mydb3End FunctionPrivate Sub Form_Load() On Error Resume Ne*t Dim A, B Set Mydb4 = E*eCutesql(select * from 收入项目, Str_te*t) A = Mydb4.RecordCount For I = 1 To A bo2.AddItem Mydb4.Fields(0) Mydb4.MoveNe*t If Mydb4.EOF Then E*it For Ne*t I Set Mydb5 = E*eCutesql(select * from 支出项目, Str_te*t) B = Mydb5.RecordCount F

温馨提示

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

评论

0/150

提交评论