简易记账系统报告Word下载.docx
- 文档编号:8395303
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:36
- 大小:419.15KB
简易记账系统报告Word下载.docx
《简易记账系统报告Word下载.docx》由会员分享,可在线阅读,更多相关《简易记账系统报告Word下载.docx(36页珍藏版)》请在冰点文库上搜索。
可以由用户输入查询条件,查询相应的收支记录。
要求能够按发生日期和类型进行查询。
(5)统计:
可以按要求统计收支记录。
要求实现以下两种统计:
a)统计某一段时间内的收支金额,并将结果存入YG0136_TJ1.txt中;
b)统计总支出与总收入金额,并将结果存入YG0136_TJ2.txt中。
第二部分课程设计题目功能
1、系统功能模块框图设计:
程序设计模块图
(1)箭头表示数据传递的方向。
(2)Account是用户自定义类型,包括有金额、类型(收入/支出)、发生日期、收支说明、当前余额。
(3)记账数据文件名为:
“班名+序号_JZ”,如油工01班的36号同学所建的文件名应为:
YG0136_JZ.txt。
2、数据结构说明:
、标准模块中的变量
Typecheck'
定义记账信息记录类型
moneyAsCurrency'
作用为存储金额
day1AsDate'
作用为存储日期
leixingAsBoolean'
作用为存储类型
smoneyAsCurrency'
作用为存储当前余额
becauseAsString*120'
作用为存储收支说明
shouzhimoneyAsCurrency'
作用为存储当天所收入金额或所支出金额以便在修改时,金额变当前余额也随之变化。
EndType
PubliccheAscheck'
作用是定义che为check类型的变量存放到当前记录内容
PublicfilenameAsString'
作用是定义变量存放账户文件名,类型为字符型
Publicrec_noAsInteger'
作用是定义变量存放当前记录号,类型为整型
Publicrec_totalAsInteger'
作用是定义变量存放总记录数,类型为整型
Publicrec_longAsInteger'
作用是定义变量存放记录长度,类型为整型。
、在登入窗体的代码中的四个菜单名。
Openshuju‘打开数据文件菜单名
Szjl‘收支记录菜单名
Cx‘查询菜单名
Tj‘统计菜单名
、在修改收支记录窗体的代码中的两个变量X,I.
DimxAsInteger‘变量x为整型,作用为存储列表框中被单击后的文件记录号。
DimiAsInteger‘变量i为整型,作用是把文件号添加到列表框中的循环变量。
、在删除收支记录窗体的代码中的三个变量X,I,Y.
DimxAsInteger‘变量x为整型,作用为存储列表框中被单击后的文件记录号。
DimiAsInteger‘变量i为整型,作用是把文件号添加到列表框中的循环变量。
DimyAsInteger‘变量y为整型,作用是记录下Msgbox的返回值,以方便判断是否执行下面操作。
、在查询收支记录窗体的代码中的三个变量X,I,kong.
DimxAsInteger‘变量x为整型,作用为存储列表框中被单击的内容的数值型。
DimkongAsInteger‘变量kong为逻辑型,作用是记录是否查询到相应的记录。
、在统计收支记录窗体的代码中的七个变量I,tongjishouru1,tongjishouru2,tongjizhichu1,tongjizhichu2,day2,day3.
DimIasinteger‘变量i为整型,作用是把文件号添加到列表框中的循环变量。
Statictongjishouru1AsLong‘静态变量tongjishouru1为长整型,作用是存放收入记录中的金额之和。
Statictongjishouru2AsLong‘静态变量tongjishouru2为长整型,作用是存放收入记录中的当前余额之和。
Statictongjizhichu1AsLong‘静态变量tongjizhichu1为长整型,作用是存放支出记录中的金额之和。
Statictongjizhichu2AsLong‘静态变量tongjizhichu2为长整型,作用是存放支出记录中的当前余额之和。
Dimday2AsDate‘变量day2为日期型,作用是存放统计的开始时间。
Dimday3AsDate‘变量day3为日期型,作用是存放统计的结束时间。
、在按类型统计窗体的代码中的五个变量I,tongjishouru1,tongjishouru2,tongjizhichu1,tongjizhichu2,.
DimIasinteger‘变量i为整型,作用是把文件号添加到列表框中的循环变量。
Statictongjishouru1AsLong‘静态变量tongjishouru1为长整型,作用是存放收入记录中的金额之和。
3、详细设计:
一)、各个窗体界面的设计:
、主窗体的设置界面,加入了若干的菜单项和一个通用对话框,通用对话框用于确定文件的路径和名称。
、登入界面的设置(控件有2个文本框,2个标签,2个命令按钮),文本框1中输入了默认的用户名,方便于登入。
、新增收支记录窗体的设计(7个标签,3个文本框,3个组合框,1个框架,2个单选按钮,2个命令按钮)。
用于写入收支记录。
、修改和删除收支记录窗体的设计相似。
(8个标签用于显示各控件作用),(3个文本框,3个组合框,1个框架,2个单选按钮,2个命令按钮,用于填写收支记录,1个列表框用于显示文件的记录号。
修改收支记录窗体的界面
删除收支记录窗体的界面
查询收支记录窗体的设计。
(12个标签用于显示各控件作用),(3个文本框,6个组合框,3个框架,2个单选按钮,2个命令按钮,其中有3个组合框用于选择查询时间。
其它控件用于填写收支记录),1个列表框用于显示文件的记录号,2个复选框用于选择类型。
、按时间统计窗体界面,8个标签用于显示相应的信息。
上面3个复选框用于输入开始时间,下面3个复选框用于输入结束时间。
2个命令按钮进行相应操作。
、按类型统计窗体界面,1个标签,1个框架,2个单选按钮进行类型的选择。
二)、窗体的相应功能和代码的编写设计与结果的运行:
、当单击程序运行时的主窗口。
运行时除系统外,其它3个主菜单不可用。
单击系统后,选择登录。
弹出登录窗体(实现其功能的代码为Form2.Show'
将窗体2显示出来)
、弹出登录窗体后,输入相应的密码和用户名。
进行登录操作。
、当输入的密码有误时会弹出一个消息框。
实现该功能的代码为ElseIfText1.Text="
201060091"
AndText2.Text<
>
"
123456"
Then
MsgBox"
密码错误,请重试!
"
,"
登录"
Text2.SetFocus'
同理用户名有误时也弹出相应的消息框,其代码为
ElseIfText1.Text<
Then
无效的用户名,请重试!
Text1.SetFocus
、当密码输入正确后,界面如图所示,其他三个不可用的主菜单也变得可用。
其代码为
IfText1.Text="
AndText2.Text="
'
之前不可用的菜单项变得可用
Form1.openshuju.Enabled=True
Form1.szjl.Enabled=True
Form1.cx.Enabled=True
Form1.tj.Enabled=True
Me.Hide'
登入窗体隐藏
、当单击系统里面的打开数据文件
会弹出一个通用对话框,用来指定文件的路径和文件名,并将其传到模块中在各个窗体中通用。
其代码为:
CD1.Action=1'
令通用对话框为打开对话框
Module1.filename=CD1.filename'
将通用对话框中的路径存到模块中
、当单击收支记录时,再单击新增收支记录则可把相应的记录写入文件。
当添加了相应的记录,记录用3个组合框来存储日期,方便填写。
类型用单选按钮来选择,方便操作。
在写入记录时,现将里面的内容转化为相应的类型。
再将其赋值给在模块中的变量。
最后写入随机文件后会弹出一个消息框。
相关代码:
Staticrec_noAsInteger'
定义静态变量rec_no
rec_no=rec_total
OpenfilenameForRandomAs#1Len=rec_long'
将所写记录存到随机文件
che.money=Text1
che.smoney=Text2
che.day1=DateSerial(Val(Combo1.Text),Val(Combo2.Text),Val(Combo3.Text))
che.because=Text3
IfOption1.Value=TrueThen
che.leixing=True
che.shouzhimoney=money-smoney
Else
che.leixing=False
che.shouzhimoney=smoney-money
EndIf
rec_no=rec_no+1
Put#1,rec_no,che
MsgBox("
已添加成功,是否继续!
)
Close#1
、当单击收支记录时,再单击修改收支记录则可把相应的记录写入文件。
首先把相应的记录号写入列表框中。
当在列表框中选择了相应修改记录号时,相应的记录写到窗体中以供修改并记下该记录的记录号。
在修改金额时当前余额也随之改变。
在修改了相应的记录后,在将里面的内容转化为相应的类型。
然后将其赋值给在模块中的变量。
最后写入随机文件中该记录号的这一行中。
最后会弹出一个消息框。
a)、添加记录号到列表框中的代码:
Fori=1Torec_total'
把文件号添到列表框中
List1.AddItemi
Next
b)、当单击记录号窗体上出现相应记录的代码:
x=List1.ListIndex+1
OpenfilenameForRandomAs#1Len=rec_long
Get#1,x,che
Text1=che.money
Text2=che.smoney
Combo1.Text=Year(che.day1)
Combo2.Text=Month(che.day1)
Combo3.Text=Day(che.day1)
Text3=che.because
Ifche.leixing=TrueThen
Option1.Value=True
Else
Option2.Value=True
EndIf
c)、将修改后的记录存到随机文件的代码:
OpenfilenameForRandomAs#1Len=rec_long修改前
che.money=Text1
che.day1=DateSerial(Val(Combo1.Text),
Val(Combo2.Text),Val(Combo3.Text))
che.because=Text3
IfOption1.Value=TrueThen
che.leixing=True
che.leixing=False
che.shouzhimoney=smoney-money
Put#1,x,che
已修改成功,是否继续!
d)、当金额变当前余额也随之变化的代码:
PrivateSubText1_Change()
Ifche.leixing=TrueThen
Text2.Text=Val(Text1.Text)-Val(che.shouzhimoney)修改后
Text2.Text=Val(Text1.Text)+Val(che.shouzhimoney)
EndSub
、当单击收支记录时,再单击删除收支记录则可把相应的记录从文件中删除。
当在列表框中选择了相应删除记录号时,相应的记录写到窗体中以供删除并记下该记录的记录号,最后会弹出一个消息框是否确定删除,当确定时将除了删除的项之外的所有记录写到另一文件然后删除原文件,让该文件命名为原文件,并在列表框中移去该记录号。
DimtempnoAsInteger,xAsInteger,iAsInteger,yAsInteger
x=List1.ListIndex+1
tempno=rec_no
y=MsgBox("
是否确定删除"
1,"
删除"
Ify=2ThenGoToerrlab
OpenfilenameForRandomAs#1Len=rec_long
Openfilename&
.temp"
ForRandomAs#2Len=rec_long
Fori=1Torec_total
Ifi<
tempnoThen
Get#1,i,che
Put#2,,che
Close#2
Killfilename
Namefilename&
Asfilename
List1.RemoveItemx-1
errlab:
、当单击查询时,可以分别按时间、按类型、和时间与类型进行查询。
在查询里面写入一些判断的语句,在进行查找符合条件的结果。
并将结果显示在窗体上。
当没有相应的结果时,弹出消息框进行提示。
相关代码为:
如果有相应记录则kong为true,当kong为false时表明没相关记录
Ifkong=FalseThen
无所输入条件的记录"
48,"
错误"
若无相应结果这弹出:
、当再按时间查询中输入起止时间后查询时,若开始时间大于结束时间就会出现错误的提醒。
当没有错误时,就会进行时间的比较,满足条件的记录进行统计。
并将相应结果保存到顺序文件中。
相关的代码为:
开始时间为day2,结束时间为day3
Ifday2>
day3Then
时间输入错误,起始时间大于结束时间!
存入顺序文件的代码:
Open"
YG0136_TJ1.txt"
ForOutputAs#2
Print#2,"
支出中的总金额为"
&
tongjizhichu1&
,"
支出中剩余金额为"
tongjizhichu2,"
收入中的总金额为"
tongjishouru1&
tongjishouru2
顺序文件中的结果为:
支出中的总金额为1200,支出中剩余金额为110收入中的总金额为900,收入中的总金额为1900
、按类型统计,选择了相应的类型后进行统计。
先进行类型的判断,满足条件的记录进行统计。
Ifche.leixing=TrueAndOption1.Value=TrueThen
tongjishouru1=tongjishouru1+Val(che.money)
tongjishouru2=tongjishouru2+Val(che.smoney)
Open"
YG0136_TJ2.txt"
ElseIfche.leixing=FalseAndOption2.Value=TrueThen
tongjizhichu1=tongjizhichu1+Val(che.money)
tongjizhichu2=tongjizhichu2+Val(che.smoney)
tongjizhichu2
顺序文件中的选择收入后统计结果:
收入中的总金额为1100,收入中的总金额为2200
顺序文件中的选择支出后统计结果:
支出中的总金额为1200,支出中剩余金额为110
4、调试与测试:
、在编写新增记录时,没有将文件的每行固定长度传到模块中而用到了模块中的变量而出错了。
后来在窗体的load事件中写了这样的代码:
Module1.rec_long=Len(che)
OpenfilenameForRandomAs#1Len=rec_long
Get#1,1,che
Module1.rec_total=LOF
(1)/rec_long'
将总记录号读到标准模块中
在窗体加载时就将文件的长度和总记录号读到标准模块中。
这样问题就得到了解决。
、
第三部分课程设计总结
1、在这次实习中所取得的收获:
学会了多重窗体之间的连接,熟悉了随机文件的使用以及窗体中的各个控件的使用,还体会到了编写程序的思想。
一道编程题表面上看起来很困难,但当我们把它所要实现的功能想清楚,然后分步写代码来实现,这样我们的的编程设计就会变得简单。
2、在这次课程设计中所遇到的困难与解决方案:
、当刚开始拿到课程设计题时,感到无法下手。
不知先做哪一步,后来通过老师的讲解明白了应当先做一个登入界面,加入相应的菜单项。
在做若干个窗体来实现功能。
、在编写新增收支记录时,不知道如何将组合框里的内容转变为日期型,在这一过程中想了不同的方法来实现都没能够成功。
后来问老师后才知道是有内部函数可以来实现的。
如DateSerial可以实现。
、在编写修改收支记录时,不知道如何将文件里的日期型转变为组合框里的内容,在这一过程中想了不同的方法来实现都没能够成功。
后来问老师后明白了可以用Year,Month,day来实现。
、在编写删除收支记录时,写完后达不到相应的结果,总是出现错误。
后来看书后才发现2个文件的名称写的相同了当Killfilename时,将其都删除了。
把文件名改为不同的,后来实现了功能。
、在设计查询收支记录的界面时,我选择了用文本框来存放收支记录,后来虽然实现了功能,但是感觉有缺陷。
后来又思考了一下用一个列表框列出查询项,这样更加的清楚。
3、自己做的课程设计的不足之处:
、当登入系统后,没有选定指定文件也可以用其他的菜单选项,从而出错了。
、不能十分完美的实现个人记账效果。
4、将要改进的设想:
、应当在程序设计时,把指定文件选定后,收支记录的相关功能的菜单项才变得可用。
、在写一些代码来完善这个程序的功能。
如记录一个月的收支记录,可以实现与前面的资金有一定的联系。
附录程序清单
1、模块中的代码
Typecheck'
moneyAsCurrency'
存储金额
day1AsDate'
存储日期
存储类型
smoneyAsCurrency'
存储当前余额
存储收支说明
shouzhimoneyAsCurrency'
存储当天所收入金额或所支出金额
定义check类型的变量存放到当前记录内容
PublicfilenameAsString'
定义变量存放账户文件名
定义变量存放当前记录号
定义变量存放总记录数
Publicrec_longAsInteger'
定义变量存放记录长
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 记账 系统 报告