经费管理系统设计说明.doc
精品文档,仅供学习与交流,如有侵权请联系网站删除管理信息系统设计实训项目 部门经费管理系统部门经费管理系统是基于部门预算情况下一个单位内科室经费使用的管理软件,主要用于科室中各个项目的账目处理、管理等工作,是一套操作简便、功能完善的小型软件。一、系统简介 1、账目管理轻松便捷部门预算实行之后,许多项目如何在一年内合理使用是部门主管的一项主要工作,之前采用手工记账的方式既不方便工作量又大,并且不利于费用使用的分析,采用计算机软件管理是解决这个问题的最佳途径。本软件就是根据工作中的实际需要开发的小型系统。2、操作简单方便本软件在开发过程中得到了会计人员的大力帮助,在操作方面尽最大可能按照常规工作思路来设计软件的操作流程,界面说明简单明了,功能方面颇具人性化,比如一些常规科目的处理只需要在空白处双击鼠标即可。3、系统平台要求系统在windows98以上操作系统均可以使用。同时具有两种版本的系统,既可以安装成单机版本也可以安装成网络版本。二、系统安装2.1、网络版本系统安装 客户端:进入安装目录直接运行setup即可,要求环境:windows98/xp/2000。服务器端: 1、安装Microsoft SQL server并运行企业管理器 2、进入控制台子项数据库 3、在“数据库”选项上点击鼠标右键,选择“所有任务”“还原数据库” 输入数据库名称为“jfgl” 选择“从设备”选择子目录“电教管理2000”中的jfglbf文件即可4、在“安全性”选项中设置新的登录用户“lgq”,密码为空。2.2、单机版本系统安装客户端:进入安装目录直接运行setup即可,要求环境:windows98/xp/2000。数据库设置:单机版本需要设置odbc,具体如下:1、 进入控制面版,打开数据源odbc窗口 2、选择“添加”进入以下界面: 3、选择“Microsoft Access Driver(*.mdb)进入以下界面:4、输入数据源名称“JFGL”,选择“选择”按钮进入下一界面: 5、选择数据库“xxjfdata.mdb”,点击“确定”即可。三、系统功能说明 3.1、登录界面输入合法的用户名称、口令即可进入主界面,此处允许用户三次登录验证。3.2、主菜单界面 主菜单界面包括项目维护、账目处理、账目查询、系统维护、帮助等5个部分。3.3、项目维护 项目维护包括项目增加、项目删除、项目修改三个子菜单。 3.3.1、项目增加 该项功能可以增加部门项目的内容,每个项目包括项目代码、项目名称、费用、部门名称三个方面,增加过程中不能为空。3.3.2、项目删除:通过此项功能可以删除掉未使用项目的内容,项目一旦启用,就不能删除。3.3.3、项目修改通过此项功能可以修改项目代码、项目名称、项目费用等内容3.4、账目处理 账目处理包括报账、销账和账目更改三个子菜单。 3.4.1、报账 该项功能是本软件的核心部分,通过这项功能可以处理日常发生的每一笔账目,同时在总项目中对发生的费用进行扣除,具体界面如下:操作要领:单击编号文本框会自动产生编号,单击报账日期会自动将当前系统日期填入文本框,账目摘要中可以填入内容,也可以通过双击鼠标弹出常用科目窗口选择常用科目,通过“项目部门选择”按钮选择隶属项目和部门,通过组合框选择经手人。点击“报销确认”即可弹出以下界面。在此界面中扣除所报账目在总项目中的费用3.4.2、销账通过该项功能可以消除错报或不需要的账目。可报账功能相反。选中要消除的账目,点击销账确认即可,弹出总帐处理对话框,在总帐中消除掉已报的账目费用。3.4.3、账目更正通过此项可以更正错报的账目,注意只能更正部分内容。 3.5、账目查询账目查询可以提供总帐查询、明细查询。3.5.1、总帐查询总帐查询分为“按总帐查询”和“按部门查询”,采用标签形式处理,具体如下:3.5.2、明细查询:明细查询分为“部门查询”、“日期查询”、“经手人查询”具体如下:3.6、系统维护 系统维护由用户设置、辅助数据、初始化三个部分组成 3.6.1、用户设置 用户设置可以对本系统的用户名称、口令、权限作相应的设置。3.6.2、辅助数据辅助数据设置包括部门设置、工作人员设置、常规科目设置三个部分3.6.3、初始化 初始化将对项目数据库和明细帐数据库起到清空的作用。四、源代码程序设计 4.1、登录界面Private Sub Command1_Click()Dim yh As StringDim mma As StringAdodc1.RefreshAdodc1.Recordset.MoveFirstDo While Adodc1.Recordset.EOF = False yh = Adodc1.Recordset.Fields("yhm") mma = Adodc1.Recordset.Fields("mima") If yh = UCase$(Trim(Text1.Text) And mma = UCase$(Trim(Text2.Text) Then mainmenu.Show Unload Me Exit Sub End If Adodc1.Recordset.MoveNextLoopMsgBox "用户名或口令错误,请重新输入!", vbOKCancel, "信息提示"Text1.Text = ""Text2.Text = ""Text1.SetFocusEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text2.SetFocus End IfEnd SubPrivate Sub Text2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command1.SetFocus End IfEnd Sub4.2、主菜单界面 主菜单界面包括项目维护、账目处理、账目查询、系统维护、帮助等5个部分。Private Sub bz_Click()bzcl.Show vbModalEnd SubPrivate Sub Form_Load()If fm.Adodc1.Recordset.Fields("xmwh") = True Then menu1.Enabled = TrueElse menu1.Enabled = FalseEnd IfIf fm.Adodc1.Recordset.Fields("zmcl") = True Then menu2.Enabled = TrueElse menu2.Enabled = FalseEnd IfIf fm.Adodc1.Recordset.Fields("zmcx") = True Then menu3.Enabled = TrueElse menu3.Enabled = FalseEnd IfIf fm.Adodc1.Recordset.Fields("xtwh") = True Then menu4.Enabled = TrueElse menu4.Enabled = FalseEnd IfEnd SubPrivate Sub fzsj_Click()fzsjb.Show vbModalEnd SubPrivate Sub menu13_Click()zmgz.Show vbModalEnd SubPrivate Sub menu43_Click()csh.Show vbModalEnd SubPrivate Sub mxcxx_Click()mxzcx.Show vbModalEnd SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.Index Case 1 xmzjf.Show vbModal Case 2 xmscf.Show vbModal Case 3 xmxgf.Show vbModal Case 4 bzcl.Show vbModal Case 5 xzcl.Show vbModal Case 6 xmcx.Show vbModal Case 7 mxzcx.Show vbModal Case 8 setuser.Show vbModal Case 9 fzsjb.Show vbModalEnd SelectEnd SubPrivate Sub xmsc_Click()xmscf.Show vbModalEnd SubPrivate Sub xmxg_Click()xmxgf.Show vbModalEnd SubPrivate Sub xmzj_Click()xmzjf.Show vbModalEnd SubPrivate Sub xz_Click()xzcl.Show vbModalEnd SubPrivate Sub yhsz_Click()setuser.Show vbModalEnd SubPrivate Sub zzcx_Click()xmcx.Show vbModalEnd Sub4.3、项目维护 项目维护包括项目增加、项目删除、项目修改三个子菜单。 4.3.1、项目增加Private Sub Command1_Click()If Trim(Text1.Text) = "" Or Trim(Text2.Text) = "" Or Trim(Text3.Text) = "" Then MsgBox "数据项不能为空,请输入完整数据", vbOKCancel, "信息提示" Exit SubEnd IfIf Adodc1.Recordset.RecordCount <> 0 ThenAdodc1.Recordset.MoveFirstDo While Adodc1.Recordset.EOF = False If Trim(Text1.Text) = Trim(Adodc1.Recordset.Fields("xmdm") Then MsgBox "项目代码重复,不能添加", vbOKCancel, "信息提示" Exit Sub Else Adodc1.Recordset.MoveNext End IfLoopAdodc1.Recordset.AddNew Adodc1.Recordset.Fields("xmdm") = Trim(Text1.Text) Adodc1.Recordset.Fields("xmnr") = Trim(Text2.Text) Adodc1.Recordset.Fields("xmfy") = Trim(Text3.Text) Adodc1.Recordset.Fields("yyfy") = Val("0") Adodc1.Recordset.Fields("xmye") = Adodc1.Recordset.Fields("xmfy") - Adodc1.Recordset.Fields("yyfy") Adodc1.Recordset.Fields("bmmc") = Trim(DataCombo1.Text) Adodc1.Recordset.Update DataGrid1.RefreshElse Adodc1.Recordset.AddNew Adodc1.Recordset.Fields("xmdm") = Trim(Text1.Text) Adodc1.Recordset.Fields("xmnr") = Trim(Text2.Text) Adodc1.Recordset.Fields("xmfy") = Trim(Text3.Text) Adodc1.Recordset.Fields("yyfy") = Val("0") Adodc1.Recordset.Fields("xmye") = Adodc1.Recordset.Fields("xmfy") - Adodc1.Recordset.Fields("yyfy") Adodc1.Recordset.Fields("bmmc") = Trim(DataCombo1.Text) Adodc1.Recordset.Update DataGrid1.Refresh End IfEnd SubPrivate Sub DataGrid1_Click()Text1.Text = ""Text2.Text = ""Text3.Text = ""End SubPrivate Sub Form_Load()Text1.Text = ""Text2.Text = ""Text3.Text = ""End Sub4.3.2、项目删除:Private Sub Command1_Click()If Adodc1.Recordset.Fields("yyfy") <> 0 Then MsgBox "当前项目已经启用不能删除", vbOKCancel, "信息提示" Exit SubEnd IfIf MsgBox("确实删除当前项目吗?", vbOKCancel, "信息提示") = vbOK ThenAdodc1.Recordset.DeleteAdodc1.Recordset.UpdateDataGrid1.RefreshText1.Text = Adodc1.Recordset.Fields("xmdm")Text2.Text = Adodc1.Recordset.Fields("xmnr")Text3.Text = Adodc1.Recordset.Fields("xmfy")Text4.Text = Adodc1.Recordset.Fields("yyfy")Text5.Text = Adodc1.Recordset.Fields("xmye")Text6.Text = Adodc1.Recordset.Fields("bmmc")Else Exit SubEnd IfEnd SubPrivate Sub DataGrid1_Click()Text1.Text = Adodc1.Recordset.Fields("xmdm")Text2.Text = Adodc1.Recordset.Fields("xmnr")Text3.Text = Adodc1.Recordset.Fields("xmfy")Text4.Text = Adodc1.Recordset.Fields("yyfy")Text5.Text = Adodc1.Recordset.Fields("xmye")Text6.Text = Adodc1.Recordset.Fields("bmmc")End SubPrivate Sub Form_Load()Text1.Text = Adodc1.Recordset.Fields("xmdm")Text2.Text = Adodc1.Recordset.Fields("xmnr")Text3.Text = Adodc1.Recordset.Fields("xmfy")Text4.Text = Adodc1.Recordset.Fields("yyfy")Text5.Text = Adodc1.Recordset.Fields("xmye")Text6.Text = Adodc1.Recordset.Fields("bmmc")End Sub4.3.3、项目修改Private Sub Command1_Click()Dim dmbg1 As StringDim dmbg2 As StringDim sqltxt As StringDim rs As ADODB.Recordset dmbg1 = Trim(Adodc1.Recordset.Fields("xmdm")If MsgBox("确实修改当前项目吗?", vbOKCancel, "信息提示") = vbOK Then Adodc1.Recordset.Fields("xmdm") = Trim(Text1.Text) Adodc1.Recordset.Fields("xmnr") = Trim(Text2.Text) Adodc1.Recordset.Fields("xmfy") = Trim(Text3.Text) 'Adodc1.Recordset.Fields("yyfy") = 0 Adodc1.Recordset.Fields("xmye") = Adodc1.Recordset.Fields("xmfy") - Adodc1.Recordset.Fields("yyfy") Adodc1.Recordset.Update DataGrid1.Refresh Text1.Text = Adodc1.Recordset.Fields("xmdm") Text2.Text = Adodc1.Recordset.Fields("xmnr") Text3.Text = Adodc1.Recordset.Fields("xmfy") Text4.Text = Adodc1.Recordset.Fields("yyfy") Text5.Text = Adodc1.Recordset.Fields("xmye") Text6.Text = Adodc1.Recordset.Fields("bmmc") dmbg2 = Adodc1.Recordset.Fields("xmdm") sqltxt = "select * from zmmxz where lsxm='" + dmbg1 + "'" Set rs = exesql(sqltxt) If rs.RecordCount <> 0 Then rs.MoveFirst Do While Not rs.EOF rs.Fields("lsxm") = dmbg2 rs.MoveNext Loop Else Exit Sub End IfElse Exit SubEnd IfEnd SubPrivate Sub DataGrid1_Click()Text1.Text = Adodc1.Recordset.Fields("xmdm")Text2.Text = Adodc1.Recordset.Fields("xmnr")Text3.Text = Adodc1.Recordset.Fields("xmfy")Text4.Text = Adodc1.Recordset.Fields("yyfy")Text5.Text = Adodc1.Recordset.Fields("xmye")Text6.Text = Adodc1.Recordset.Fields("bmmc")End SubPrivate Sub Form_Load()Text1.Text = Adodc1.Recordset.Fields("xmdm")Text2.Text = Adodc1.Recordset.Fields("xmnr")Text3.Text = Adodc1.Recordset.Fields("xmfy")Text4.Text = Adodc1.Recordset.Fields("yyfy")Text5.Text = Adodc1.Recordset.Fields("xmye")Text6.Text = Adodc1.Recordset.Fields("bmmc")End Sub4.4、账目处理 账目处理包括报账、销账和账目更改三个子菜单。 4.4.1、报账 该项功能是本软件的核心部分,通过这项功能可以处理日常发生的每一笔账目,同时在总项目中对发生的费用进行扣除,具体界面如下:Dim res As IntegerDim cn As StringPrivate Sub Command1_Click()If Text3.Text = "" Or Text4.Text = "" Or DataCombo1.Text = "" Or Text1.Text = "" Or Text2.Text = "" Or Text5.Text = "" Or Text6.Text = "" Then MsgBox "项目不能为空,请输入数据!", vbOKCancel, "信息提示" Exit SubEnd IfIf Adodc1.Recordset.RecordCount <> 0 Then Adodc1.Recordset.MoveFirstDo While Adodc1.Recordset.EOF = False If Trim(Text1.Text) = Trim(Adodc1.Recordset.Fields("bh") Then MsgBox "项目代码重复,不能添加", vbOKCancel, "信息提示" Exit Sub Else Adodc1.Recordset.MoveNext End IfLoopIf MsgBox("确实报销该账目吗?", vbOKCancel, "信息提示") = vbOK Then Adodc1.Recordset.AddNew Adodc1.Recordset.Fields("bh") = Trim(Text1.Text) Adodc1.Recordset.Fields("bzrq") = Trim(Text2.Text) Adodc1.Recordset.Fields("zmzy") = Trim(Text3.Text) Adodc1.Recordset.Fields("fy") = Trim(Text4.Text) Adodc1.Recordset.Fields("lsxm") = Trim(Text5.Text) Adodc1.Recordset.Fields("BMMC") = Trim(Text6.Text) Adodc1.Recordset.Fields("jsr") = Trim(DataCombo1.Text) Adodc1.Recordset.UpdateElse Exit SubEnd IfElse If MsgBox("确实报销该账目吗?", vbOKCancel, "信息提示") = vbOK Then Adodc1.Recordset.AddNew Adodc1.Recordset.Fields("bh") = Trim(Text1.Text) Adodc1.Recordset.Fields("bzrq") = Trim(Text2.Text) Adodc1.Recordset.Fields("zmzy") = Trim(Text3.Text) Adodc1.Recordset.Fields("fy") = Trim(Text4.Text) Adodc1.Recordset.Fields("lsxm") = Trim(Text5.Text) Adodc1.Recordset.Fields("BMMC") = Trim(Text6.Text) Adodc1.Recordset.Fields("jsr") = Trim(DataCombo1.Text) Adodc1.Recordset.Update Else Exit SubEnd IfEnd Ifjrzz.Show vbModalText1.Text = ""Text3.Text = ""Text4.Text = ""Text1.SetFocusEnd SubPrivate Sub Command2_Click()bmxmxz.Show vbModalEnd SubPrivate Sub Command3_Click()jrzz.Show vbModalEnd SubPrivate Sub Form_Load()End SubPrivate Sub Text1_Click()res = Adodc1.Recordset.RecordCountIf res = 0 Then Text1.Text = 1Else Adodc1.Recordset.MoveLast Text1.Text = Adodc1.Recordset.Fields("bh") + 1End IfEnd SubPrivate Sub Text2_Click()Text2.Text = DateEnd SubPrivate Sub Text3_DblClick()cgzm.Show vbModalEnd SubPrivate Sub Text3_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text4.SetFocus End IfEnd SubPrivate Sub Text4_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command2.SetFocus End IfEnd Sub操作要领:单击编号文本框会自动产生编号,单击报账日期会自动将当前系统日期填入文本框,账目摘要中可以填入内容,也可以通过双击鼠标弹出常用科目窗口选择常用科目,通过“项目部门选择”按钮选择隶属项目和部门,通过组合框选择经手人。点击“报销确认”即可弹出以下界面。在此界面中扣除所报账目在总项目中的费用Dim cn As StringPublic nPrivate Sub Command1_Click()If n = 1 Then MsgBox "该账目已经在总帐处理过?", vbOKCancel, "信息提示" Exit SubEnd Ifcn = "xmdm='" + Trim(Text2.Text) + "'" Adodc1.Recordset.MoveFirst Adodc1.Recordset.Find (cn) yy = Adodc1.Recordset.Fields("yyfy") Adodc1.Recordset.Fields("yyfy") = yy + Val(Trim(Text1.Text) Adodc1.Recordset.Fields("xmye") = Adodc1.Recordset.Fields("xmfy") - Adodc1.Recordset.Fields("yyfy") Adodc1.Recordset.Update n = 1End SubPrivate Sub Command2_Click()If n = 0 Then MsgBox "该账目还没有在总帐处理过!", vbOKCancel, "信息提示" Exit SubElseUnload MeEnd IfEnd SubPrivate Sub Form_Load()Text1.Text = bzcl.Text4Text2.Text = bzcl.Text5n = 0End Sub3.4.2、销账通过该项功能可以消除错报或不需要的账目。可报账功能相反。Private Sub Command1_Click()If MsgBox("确实销除该账目吗?", vbOKCancel, "信息提示") = vbOK Then Adodc1.Recordset.Delete 'Adodc1.Refresh Adodc1.Recordset.MoveFirst n = 0 Do While Adodc1.Recordset.EOF = False Adodc1.Recordset.Fields("bh") = 1 + n Adodc1.Recordset.MoveNext n = n + 1 Loop Else Exit SubEnd Ifzgxzcl.Show vbModal End SubPrivate Sub DataGrid1_Click() Text1.Text = Adodc1.Recordset.Fields("bh") Text2.Text = Adodc1.Recordset.Fields("bzrq") Text3.Text = Adodc1.Recordset.Fields("zmzy") Text4.Text = Adodc1.Recordset.Fields("fy") Text5.Text = Adodc1.Recordset.Fields("lsxm") Text6.Text = Adodc1.Recordset.Fields("jsr") Text7.Text = Adodc1.Recordset.Fields("bmmc")End SubPrivate Sub Form_Load()If Adodc1.Recordset.RecordCount <> 0 ThenText1.Text = Adodc1.Recordset.Fields("bh") Text2.Text = Adodc1.Recordset.Fields("bzrq") Text3.Text = Adodc1.Recordset.Fields("zmzy") Text4.Text = Adodc1.Recordset.Fields("fy") Text5.Text = Adodc1.Recordset.Fields("lsxm") Text6.Text = Adodc1.Recordset.Fields("jsr") Text7.Text = Adodc1.Recordset.Fields("bmmc")Else MsgBox "无记录,功能不能执行", vbOKCancel, "提示信息" Exit SubEnd IfEnd Sub4.4.3、账目更正通过此项可以更正错报的账目,注意只能更正部分内容。Private Sub Command1_Click()If MsgBox("确实更正该账目吗?", vbOKCancel, "信息提示") = vbOK Then Adodc1.Recordset.Fields("zmzy") = Trim(Text3.Text) Adodc1.Recordset.Fields("lsxm") = Trim(Text5.Text) Adodc1.Recordset.Fields("BMMC") = Trim(Text6.Text) Adodc1.Recordset.Fields("jsr") = Trim(DataCombo1.Text) Adodc1.Recordset.UpdateEnd IfEnd SubPrivate Sub Command2_Click()flag = 3bmxmxz.Show vbModalEnd SubPrivate Sub DataGrid1_Click() Text1.Text = Trim(Adodc1.Recordset.Fields("bh") Text2.Text = Trim(Adodc1.Recordset.Fields("bzrq") Text3.Text = Trim(Adodc1.Recordset.Fields("zmzy") Text4.Text = Trim(Adodc1.Recordset.Fields("fy") Text5.Text = Trim(Adodc1.Recordset.Fields("lsxm") Text6.Text = Trim(Adodc1.Recordset.Fields("BMMC") DataCombo1.Text = Trim(Adodc1.Recordset.Fields("jsr")End SubPrivate Sub Form_Load() Text1.Text = Trim(Adodc1.Recordset.Fields("bh") Text2.Text = Trim(Adodc1.Recordset.Fields("bzrq") Text3.Text = Trim(Adodc1.Recordset.Fields("zmzy") Text4.Text = Trim(Adodc1.Recordset.Fields("fy") Text5.Text = Trim(Adodc1.Recordset.Fields("lsxm") Text6.Text = Trim(Adodc1.Recordset.Fields("BMMC") DataCombo1.Text = Trim(Adodc1.Recordset.Fields("jsr")End SubPrivate Sub Text3_DblClick()flag = 2cgzm.Show vbModa