个人收支管理 课程设计报告文档格式.docx
- 文档编号:16195784
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:19
- 大小:205.20KB
个人收支管理 课程设计报告文档格式.docx
《个人收支管理 课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《个人收支管理 课程设计报告文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
“添加”和“返回”按钮可用,另外两个不可用,同时文本框不能进行文字输入。
单击“添加”后,文本框才能编辑,并清空原有的内容。
在文本框中输入新的类别后选择“确定”即可添加。
单击列表框中的某一项时,其内容显示在文本框中,同时“删除”和“修改”才能使用。
单击“修改”按钮后,在文本框中进行修改,“确定”后修改操作完成。
单击“删除”按钮时,从列表框中删除所选类别。
图3参数设置
(1)图4参数设置
(2)
②通过“密码修改”选项卡(图5)可能修改密码。
若“新密码”和“再输入一次”中的输入密码不一致,则会提示用户重新输入。
图5参数设置(3)
(4)单击程序主界面上的“日常流水账”按钮,进入日常收支的原始资料输入窗口。
该窗口主要由“收入记账”和“支出记账”两个选项卡组成(图6和图7)。
考虑到流水账的内容较多,因此进入该窗体时窗体底部的列表只显示已输入的本月的收支情况。
其中的日期输入使用Windows公共控件中的DTPicker控件,,单击该控件后面的下拉箭头可以弹出日期选择框。
该控件默认显示当天的时间,以便用户直接输入其他信息。
“收入类别”和“支出类别”使用了组合框,其中显示了“参数设置”窗体中所设置的收入和支出类别,用户只需从中选择即可。
添加新的收支信息时,现在“日期”、“金额”、“收入类型”和“备注”(一条关于收支的简短说明)中输入或选择适当的内容,然后单击“保存”按钮即可,窗体底部的列表框中显示已输入的信息。
单击“取消”按钮则会清空各文本框的内容。
添加完毕后,单击“流水账”窗口右上角的“返回”按钮即可返回主界面。
图6流水账
(1)图7流水账
(2)
(5)从主界面上选择“查询统计”,进入“查询统计”窗口(图8,9,10)。
该窗口由三张选项卡组成,既可以单独统计收入或支出的情况,也可以查询某一时间段内总的收入和支出情况。
“收入查询”和“支出查询”根据实际需要共设置了两种查询方式:
一种是查询某个时间段内的总收入和支出,另外一种是查询某一时间段内某一收入和支出类别的收支情况。
通过“请选择查询方式”中的两个单选框来选择这两种模式。
“收入支出对比”选项卡显示某一段时间内总的收入和支出情况。
图8查询统计
(1)图9查询统计
(2)
图10查询统计(3)
知识点:
1.多模块程序设计;
2.DTPicker控件的使用;
3.自定义数据类型;
4.动态数组;
5.SSTab或TabStrip控件的使用。
二、课程设计的详细设计
整个程序使用多个控件数组,使代码简洁清晰。
使用KeyPress事件控制密码的输入。
(1)登陆窗口:
在用户设置密码后,通过将密码文件(password.txt)中的数据和文本框中的数据进行对比来判断密码输入的正误情况。
用两个数组来储存两者的数据,并进行比较。
使用静态变量x并结合if语句来保证密码三次输入错误后能退出程序。
(2)参数设置窗口:
①收入(支出)类别窗口:
使用列表框的ListCount,ListIndex,List,RemoveIterm,AddIterm等属性使用户不能输入已有的类别(使用For循环,其中上界是Listleibie(Index).ListCount-1)以及对新类别进行各项操作。
②密码修改窗口:
用两个数组来储存并比较两个文本框中的数据,且结合Mid函数和For循环。
在保存密码时还需对其加密(如在原密码后+123456)。
(3)流水账窗口:
保存数据时,使用Print语句可以避免“查询统计”窗口中的数据出现双引号。
另外,各项数据(日期、金额、类型、备注)间使用Space函数保证每项数据的位置是确定的,“查询统计”中提取数据。
(4)查询统计窗口:
使用循环语句将文件中的数据一个个的提取出来,之后使用Mid函数提取相应的数据(时间、金额、类型、备注),并与条件比较,符合的加入列表框中。
三、程序调试过程
【问题1】:
查询统计中提取各项数据(时间、金额、类型、备注)的代码比较繁琐。
【解决办法】:
在流水账中保存各项数据时,使用Space函数保证各项数据在文件中的储存位置时确定的。
【问题2】:
由于收入和支出的各项操作基本相同,所以代码重复且繁琐。
使用控件数组,且灵活运用控件数组的Index值。
【问题3】:
在参数设置中删除或修改新类型后,保存的文件中的数据并没有变化
对类型的添加,删除或修改,可在窗体卸载时保存。
四、更上一层楼
五、课程设计总结
控件数组能够使程序代码简洁清晰。
在出现错误时可以使用加断点、使用监视窗口、语句调试等方法发现并改正错误。
这次的课程设计让我掌握了SSTab控件、DTPicker控件和控件数组的使用,以及列表框的许多属性。
六、源程序代码
登陆窗体:
OptionExplicit
OptionBase0
=====================================================================================
PrivateSubCommand1_Click()‘确定
DimsAsString:
StaticxAsInteger
x=x+1'
判断密码输入错误的次数
OpenApp.Path&
"
\password.txt"
ForInputAs#1'
取出密码文件中的密码
DoWhileNotEOF
(1)
Input#1,s
Loop
Close#1
Ifs="
"
Then'
空密码时直接进入主界面
zhujiemian.Show
Unloaddenglu
ExitSub
EndIf
IfVal(Text1.Text)+123456=sThen
UnloadMe
Else
MsgBox"
密码错误,请重新输入!
16,"
错误"
Ifx=3ThenEnd'
三次错误退出程序
EndSub
PrivateSubCommand2_Click()‘退出
End
PrivateSubtext1_keypress(KeyAsciiAsInteger)
IfKeyAscii<
>
8And(KeyAscii<
48OrKeyAscii>
57)ThenKeyAscii=0
主界面窗体:
PrivateSubCommand1_Click()‘显示流水账窗口
liushuizhang.Show
PrivateSubCommand2_Click()‘显示查询统计窗口
chaxuntongji.Show
PrivateSubCommand3_Click()‘显示参数设置窗口
canshushezhi.Show
PrivateSubCommand4_Click()‘退出
参数设置:
PrivateSubCommand13_Click()'
修改密码的“确定”按钮
DimiAsLong,jAsLong
i=Val(Text3.Text)+123456
j=Val(Text4.Text)+123456
Ifi<
jThen
设置的密码没有一致"
48,"
注意"
Print#3,i
密码设置成功!
====================================================================================
PrivateSubCommand14_Click()'
修改密码中的“取消”
Text3.Text="
Text4.Text="
PrivateSubcmdok_Click(IndexAsInteger)'
添加类型名称
DimaAsInteger
Iftextleixing(Index).Text="
Then
请输入类型名!
Fora=0ToListleixing(Index).ListCount-1'
若列表框中已有,则不添加
Iftextleixing(Index).Text=Listleixing(Index).List(a)Then
Next
Listleixing(Index).AddItemtextleixing(Index).Text'
添加收入类别
textleixing(Index).Text="
'
清空文本框
textleixing(Index).SetFocus
PrivateSubcmdgai_Click(IndexAsInteger)'
修改内容
IfListleixing(Index).ListIndex>
-1Then
textleixing(Index).Text=Listleixing(Index).Text
Listleixing(Index).RemoveItemListleixing(Index).ListIndex
PrivateSubcmddelete_Click(IndexAsInteger)'
删除内容
PrivateSubcmdadd_Click(IndexAsInteger)'
单击“添加”按钮
cmdok(Index).Default=True
cmdgai(Index).Enabled=True
cmddelete(Index).Enabled=True
textleixing(Index).Enabled=True
PrivateSubcmdcancel_Click(IndexAsInteger)'
单击“取消”按钮
PrivateSubcmdback_Click(IndexAsInteger)
PrivateSubCommand15_Click()
PrivateSubForm_Load()
DimIndexAsInteger,int1AsInteger,str1AsString,iAsInteger
SSTab1.Tab=0
ForIndex=0To1
cmdgai(Index).Enabled=False'
按钮和文本框点击无效
cmddelete(Index).Enabled=False
textleixing(Index).Enabled=False
Listleixing(Index).Clear
\收入类别.txt"
ForInputAs#1
\支出类别.txt"
ForInputAs#2
ForOutputAs#3
Fori=1To2
DoUntilEOF(i)
int1=int1+1
Input#i,str1
Ifstr1="
Listleixing(i-1).AddItemstr1
Nexti
Close1,2
PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)
IfUnloadMode=0Then
PrivateSubform_Unload(CancelAsInteger)
DimiAsInteger,jAsInteger
ForOutputAs#1
ForOutputAs#2
Fori=0To1
Forj=1ToListleixing(i).ListCount
Print#i+1,Listleixing(i).List(j-1)
Close
PrivateSublistleixing_Click(IndexAsInteger)
PrivateSubText3_KeyPress(KeyAsciiAsInteger)
PrivateSubText4_KeyPress(KeyAsciiAsInteger)
流水账窗体:
PrivateSubcmdclean_Click(IndexAsInteger)'
清空
Txtmoney(Index).Text="
Txtbeizhu(Index).Text="
cbleixing(Index).Text="
PrivateSubcmdbaocun_Click(IndexAsInteger)'
保存
DimstrAsString,str1AsString,dat1AsDate,sng1AsSingle,str2AsString
DimiAsInteger,jAsInteger,kAsInteger
Ifcbleixing(Index).Text="
OrTxtmoney(Index).Text="
类型和金额不能为空!
"
64"
dat1=Format(DTPdate(Index).Value,"
yyyy/mm/dd"
)
str1=cbleixing(Index).Text
sng1=Val(Txtmoney(Index).Text)
str2=Txtbeizhu(Index).Text
i=22-Len(CStr(dat1))
j=18-Len(CStr(str1))
k=20-Len(CStr(sng1))
Listresult(Index).AddItemdat1&
Space(i)&
str1&
Space(j)&
sng1&
Space(k)&
str2
:
\收入记帐.txt"
ForAppendAs#1
\支出记帐.txt"
ForAppendAs#2
Print#Index+1,dat1&
PrivateSubcmdfanhui_Click()
DimsAsString,xAsS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 个人收支管理 课程设计报告 个人 收支 管理 课程设计 报告