VB课程设计实验报告-大学生日常支出管理系统.doc_第1页
VB课程设计实验报告-大学生日常支出管理系统.doc_第2页
VB课程设计实验报告-大学生日常支出管理系统.doc_第3页
VB课程设计实验报告-大学生日常支出管理系统.doc_第4页
VB课程设计实验报告-大学生日常支出管理系统.doc_第5页
免费预览已结束,剩余5页可下载查看

下载本文档

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

文档简介

vb程序设计试验报告实验题目:大学生日常支出管理系统姓 名: 学 号: 09114115 指导老师: vb课程设计报告 大学生日常支出管理系统一、 功能描述大学生日常支出管理系统:实现对大学生在校期间的日常支出管理,包括日常收入与支出明细,及按月,按年的收入与支出汇总等。本程序包含账目总览,记账,查询功能。账目总览:总体查询本月平均开销,余额,及每天平均开销。记账:记录每笔收入、支出,以及借贷情况。查询功能:可以按开销方式查询花费金额,和收入方式查询收入状况。二、 详细设计构成模块:1、 登录界面 输入密码,判断是否正确,并判断是否允许登录2、 账目总览 总览本月开销情况。3、 记账本 记录具体账目信息,借贷款情况。4、 查询账目 分类查询本月开销及借贷情况。5、 用户设置 设置用户登录密码,确保账户管理的保密性。设计思想: 实现财务管理系统主要是数据库的操作。本系统数据用数据库存储,在程序中用data和adodc控件实现对数据的读取。在数据的输出上,采用datagrid输出总体数据,用label和text控件输出单条记录。用户登录界面,在用户正确输入密码之前,toolbar控件设为不可用,用户无法操作。当密码正确时toolbar控件enable属性为true,用户可操作,同时密码框和登录按钮消失,仅留下背景界面。为保证用户使用时的隐私性,在用户设置中可以自由修改密码。修改时先由数据库中读取旧密码,与用户输入的密码对比,不相同则禁止用户修改。当密码正确时,再判断两次输入的新密码是否相同,不相同则禁止修改。主窗体采用mdi窗体,但每次只允许一个窗体打开。为了保证效果,在每个窗体的form_resize()过程中写入语句“me.windowstate = 2”,以保证每次打开都是最大化显示。当用户单击toolbar上的按钮触发打开相应窗口时,都会先关闭其他窗口,使mdi窗体中始终都只有一个窗体处于打开状态,使得程序窗口不至混乱。在借贷功能上,为防止用户误输入,在还款日期的输入上,先检测日期是否大于当前日期,如不大于,则提示用户重新输入。具体设计登录窗口private sub command1_click()data1.refreshif txt_pass = data1.recordset.fields(0).value then 判断密码是否正确msgbox 欢迎回来!, vbokonly, 登陆成功!mdi_main.toolbar.enabled = true 工具栏可用txt_pass.visible = false 隐藏登录按钮command1.visible = falseelsemsgbox 密码错误!, vbokonly, 错误end ifend sub账目总览:dim str_jd as stringdim str_sz as stringprivate sub sz() 定义显示收支的过程dim int_count as integerdim int_income as integerdim int_pay as integerdim int_charge as integerdim int_ave as integerdim int_avew as integerdim dat_datef as datedim dat_datel as datedatearry = split(date, -) 把日期拆分成年月日dat_datef = cdate(datearry(0) & - & datearry(1) & - & 1) 设定本月第一天的日期dat_datel = cdate(datearry(0) & - & datearry(1) + 1 & - & 1) - 1 设定本月最后一天的日期if data_come.recordset.recordcount = 0 then 如果记录数为0则收入为0 int_come = 0else for int_count = 0 to data_come.recordset.recordcount - 1 做循环读入数据 int_income = int_income + data_come.recordset.fields(0) data_come.recordset.movenext next int_count data_come.recordset.movefirstend ifif data_pay.recordset.recordcount = 0 then 如果记录是为0则支出为0 int_pay = 0else for int_count = 0 to data_pay.recordset.recordcount - 1 循环读入数据 int_pay = int_pay + data_pay.recordset.fields(0) data_pay.recordset.movenext next int_count data_pay.recordset.movefirstend ifint_charge = int_income - int_pay 计算余额int_ave = int_pay / (date - dat_datef)int_avew = int_charge / (dat_datel - date)str_sz = 今天是 & date & vbcrlf & vbcrlf & 本月总收入 & int_income & 元 + vbcrlf & 本月总支出 & int_pay & 元 & vbcrlf & 本月剩余资金 & int_charge & 元str_sz = str_sz & vbcrlf & vbcrlf & 本月已过 & date - dat_datef & 天 & vbcrlf & 平均每天消费 & int_ave & vbcrlf & vbcrlf & 本月还剩 & dat_datel - date & 天str_sz = str_sz & vbcrlf & 预计每天可消费 & int_avew & 元end subprivate sub jd()dim int_count as integerdim int_lend as integerdim int_borrow as integerdim dat_datef as datedim dat_datel as datedatearry = split(date, -)dat_datef = cdate(datearry(0) & - & datearry(1) & - & 1)dat_datel = cdate(datearry(0) & - & datearry(1) + 1 & - & 1) - 1if data_lend.recordset.recordcount = 0 then int_lend = 0else for int_count = 0 to data_lend.recordset.recordcount - 1 int_lend = int_lend + data_lend.recordset.fields(0) data_lend.recordset.movenext next int_count data_lend.recordset.movefirstend ifif data_borrow.recordset.recordcount = 0 then int_borrow = 0else for int_count = 0 to data_borrow.recordset.recordcount - 1 int_borrow = int_borrow + data_borrow.recordset.fields(0) data_borrow.recordset.movenext next int_count data_borrow.recordset.movefirstend ifstr_jd = 今天是 & date & vbcrlf & vbcrlf & 本月借入 & int_lend & 元 + vbcrlf & 本月贷出 & int_borrow & 元end subprivate sub cmd_jd_click()lbl_title.caption = 本月基本借贷情况如下txt_show = str_jd 输出数据end subprivate sub cmd_sz_click()lbl_title.caption = 本月基本收支情况如下txt_show = str_sz 输出数据end subprivate sub form_resize()me.windowstate = 2sz 加载过程jdend sub记账本:private sub cmd_adddc_click()dim str_date as stringstr_date = txt_byear & - & txt_bmonth & - & txt_bdayif txt_bmoney = or txt_bpeople = or str_date lbl_date.caption or val(txt_bmoney) = 0 then 判断数据的合理性 msgbox 请正确输入信息!else data_borrow.refresh data_borrow.recordset.addnew data_borrow.recordset.fields(0) = val(txt_bmoney) 更新数据 data_borrow.recordset.fields(1) = txt_bpeople data_borrow.recordset.fields(2) = str_date data_borrow.recordset.fields(3) = lbl_date data_borrow.recordset.update txt_bmoney = 清空文本框 txt_bpeople = txt_byear = txt_bmonth = txt_bday = end ifend subprivate sub cmd_addjr_click()dim str_date as stringstr_date = txt_year & - & txt_month & - & txt_dayif txt_money = or txt_people = or str_date lbl_date.caption or val(txt_money) = 0 then 判断数据的合理性 msgbox 请正确输入信息!else data_lend.refresh data_lend.recordset.addnew data_lend.recordset.fields(0) = val(txt_money) data_lend.recordset.fields(1) = txt_people data_lend.recordset.fields(2) = str_date data_lend.recordset.fields(3) = lbl_date.caption data_lend.recordset.update txt_money = txt_people = txt_year = txt_month = txt_day = end ifdata_lend.recordset.movelastend subprivate sub cmd_addsr_click()if txt_income = or combo_come.text = or val(txt_income) = 0 then 判断数据的合理性 msgbox 请检查数据的完整性!else data_come.refresh data_come.recordset.addnew 更新数据 data_come.recordset.fields(0) = val(txt_income) data_come.recordset.fields(1) = combo_come.text data_come.recordset.fields(2) = lbl_date.caption data_come.recordset.updatetxt_income = 清空文本框data_come.recordset.movelastend ifend subprivate sub cmd_addzc_click()if txt_pay = or combo_pay.text = or val(txt_pay) = 0 then 判断数据的合理性 msgbox 请检查数据的完整性!else data_pay.refresh data_pay.recordset.addnew 更新数据 data_pay.recordset.fields(0) = val(txt_pay) data_pay.recordset.fields(1) = combo_pay.text data_pay.recordset.fields(2) = lbl_date data_pay.recordset.update txt_pay = 清空文本框data_pay.recordset.movelastend ifend subprivate sub cmd_delborrow_click()if data_borrow.recordset.recordcount 0 then 判断记录数是否为0 data_borrow.recordset.delete 删除数据 data_borrow.refreshelse msgbox 无记录!end ifend subprivate sub cmd_delincome_click()if data_come.recordset.recordcount 0 then 判断记录数是否为0 data_come.recordset.delete 删除数据 data_come.refreshelse msgbox 无记录! end ifend subprivate sub cmd_dellend_click()if data_lend.recordset.recordcount 0 then data_lend.recordset.delete data_lend.refreshelse msgbox 无记录! end ifend subprivate sub cmd_delpay_click()if data_pay.recordset.recordcount 0 then data_pay.recordset.delete data_pay.refreshelse msgbox 无记录! end ifend subprivate sub form_load()lbl_date.caption = dateend sub账目查询:private sub command1_click()dim int_comeall as integerdim int_count as integerdim str_datef as stringdim str_datel as stringdatearry = split(date, -) 分割日期dat_datef = datearry(0) & - & datearry(1) & - & 1 计算本月第一天dat_datel = datearry(0) & - & datearry(1) + 1 & - & 1 计算本月最后一天condition = 收入.来源= + combo_come.text + and 收入.日期 = + dat_datef + and 收入.日期= + dat_datef + and 支出.日期 + dat_datel + 设定搜索条件adodc_pay.recordsource = select * from 支出 where + conditionadodc_pay.refreshfor int_count = 0 to adodc_pay.recordset.recordcount - 1 int_payall = int_payall + adodc_pay.recordset.fields(0) 计算收入总和next int_countlbl_showpay.caption = int_payallend subprivate sub command3_click()dim int_count as integerdim int_lend as integerfor int_count = 0 to adodc_lend.recordset.recordcount - 1 计算借入总额 int_lend = int_lend + adodc_lend.recordset.fields(0)next int_countlabel5.caption = 总借入 & int_lend & 元end subprivate sub command4_click()dim int_count as integerdim int_borrow as integerfor int_count = 0 to adodc_borrow.recordset.recordcount - 1 int_borrow = int_borrow + adodc_borrow.recordset.fields(0) 计算贷出总额next int_countlabel6

温馨提示

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

评论

0/150

提交评论