计算机VB实习报告.docx
《计算机VB实习报告.docx》由会员分享,可在线阅读,更多相关《计算机VB实习报告.docx(25页珍藏版)》请在冰豆网上搜索。
计算机VB实习报告
2010夏季计算机实习报告
班级:
姓名:
学号:
班内序号:
目录
一.实习目的…………………………………………………………3
二.实习要求…………………………………………………………3
1.算术运算测试程序……………………………………………….3
2.倒计时器………………………………………………………….3
3.动画……………………………………………………………….3
4.矩阵计算器
三.设计流程及关键代码……………………………………………3
1.算术运算测试程序
1.1设计思路……………………………………………………………….3
1.2设计框图……………………………………………………………….4
1.3窗口截图……………………………………………………………….4
1.4设计故障及解决方法………………………………………………….6
2.倒计时器
2.1设计思路……………………………………………………………….6
2.2设计框图……………………………………………………………….6
2.3窗口截图……………………………………………………………….7
2.4设计故障及解决方法………………………………………………….7
3.动画
3.1设计思路……………………………………………………………….7
3.2设计框图……………………………………………………………….8
3.3窗口截图……………………………………………………………….8
3.4设计故障及解决方法………………………………………………….9
4.矩阵计算器
4.1设计思路……………………………………………………………….9
4.2设计框图……………………………………………………………….9
4.3窗口截图……………………………………………………………….10
4.4设计故障及解决方法………………………………………………….10
四.实习总结…………………………………………………………11
附:
程序源代码……………………………………………………12
1.算术运算测试系统源代码………………………………………12
2.倒计时器源代码…………………………………………………15
3.矩阵计算器源代码………………………………………………16
一.实习目的
通过本次计算机实习,学习和运用一些常见的计算机软件,在实习过程中培养了我们发现问题、解决问题的能力,在编程和制作小程序的过程中充分发挥了我们的想象力、创造力,激发我们主动学习的潜能。
在学习中进步和提高,锻炼了我们的自学能力,对我们将来步入社会奠定了很好的基础。
二.实习任务
1、算术运算测试程序
制作一个可供小学数学运算的程序。
0—100整数加减乘除四则运算,如结果为小数四舍五入保留小数点后两位。
根据输入题数出题,题目应为随机,每次应不一样。
如:
题目数=3
77-55=
33*3=
100/3=
判断是否正确,如不正确给出正确答案,并计算分数,分数为正确题目的百分比(四舍五入取整数)。
如:
77-55=22对
33*3=99对
100/3=33错结果应为33.33
分数为:
67分
2.倒计时器
制作一个倒计时器,输入倒计时时间后,显示剩余时间,时间到后有提示音和提示画面。
3.动画
以每位同学自己为原型设计一组功夫动画,时间不少于20秒,动作不重复
4.矩阵计算器
可输入矩阵,并最大可进行10*10矩阵运算,可进行矩阵的加,乘,转置和求秩的运算。
三.设计流程及关键代码
1.算术运算测试程序
1.1设计思路
看到题目要求之后,首先确定所需要使用的软件(VB),用基本代码实现所要求的功能,在实现基本功能之后,逐渐对四则运算系统进行完善和修改。
a)修改逐个出题的出题模式,改成当输入题目数时,所有题目同时出现在窗口内。
可以选用数组控件的模式进行实现。
b)修改由于窗体的大小限制只能出有限个题目的问题,加入了表格控件,由于表格控件不支持输入,所以嵌套一个text使其支持输入,实现可同时出几万道题目。
c)对运算系统进行创新修改,分别设计了“低级”、“中级”、“高级”的难度区别,使学生在做测试时逐渐的提高。
d)修改程序出现的bug,对输入题目数一栏进行了限定只能输入数字。
对控件设计了在系统需要时才能使用,不使用时锁定的功能等。
e)对操作界面进行美观设计和在功能上的创意设计,例如:
在开始界面加入了带音效的命令按钮;根据不同的测试结果出现不同的音乐;对背景图片进行美观设计。
1.2设计框图
1.3窗口截图
图1.1进入系统页面
图1.2难度选择页面
图1.3难度为低级的操作页面
图1.4难度为高级的操作页面
1.4设计故障及解决方法
a)在进行使用数组控件时,加入语句未能实现数组控件的加载和卸载,通过反复修改代码发现是语句连接有误,最终实现所要实现的功能。
b)在进行加入表格控件时,由于之前所安装的为精简版,发现不能加载,安装中文全版之后可以使用。
c)由于表格控件不支持输入,所以不能实现在其上进行输入答案的功能,在查阅相关书籍之后,发现可以通过嵌套一个text来实现。
问题顺利解决。
2.倒计时器
2.1设计思路
根据倒计时的要求,确定选用VB作为编码工具。
倒计时输入的时间格式分为时、分、秒,分别输入自己想要倒计的时间可以进行倒计时,并显示剩余时间,时间到后有提示音和提示画面。
在实现这些功能的基础之上,对其进行完善和修改。
a)在进入倒计时系统之前设计加入了一个欢迎的动画画面,画面温馨而有趣。
b)加入了滚动标题栏,使倒计时带有时间滚动的急迫感,增加一种人们的时间观念。
c)弹出的欢迎画面使用了椭圆形窗体,会使人眼前一亮,耳目一新。
d)对输入的时间进行了只能输入数字的处理,并能自动识别输入的大于60秒的秒数为几时几分几秒。
e)对界面进行美观设计,使其看起来生动而有趣。
2.2设计框图
2.3窗口截图
图2.1倒计时系统欢迎动画画面
图2.2倒计时系统主页面
2.4设计故障及解决方法
a)在进行输入倒计时时间的限定不能输入字母的时候,只要加入相应的语句就会连带着出现其他的问题,刚开始一直修改不好,后经同学指点方得要领,修改成功。
b)插入音乐的路径等一些常见问题。
3.动画
3.1设计思路
通过实习的要求,选用了flash软件,以自己为原型进行功夫设计,我选用小时候经常玩的游戏“魂斗罗”作为设计模型,把自己当成主人公加入其中,更多的是为了回味童年的欢乐。
在设计当中,选用魂斗罗里面的经典画面和场景,把我加入其中,进行动画功夫设计。
3.2设计框图
3.3窗口截图
图3.2爆炸的桥我在空中飞舞
图3.3结尾
3.4设计故障及解决方法
由于对软件的操作不熟练,在制作过程中总会出现各种各样的问题,同学之间相互探讨和研究,共同解决问题。
比如:
帧的插入,关键帧的插入还有补间动画,场景的选择删除和连接,背景图片和音乐的插入等等。
为了保证Flash动画的连贯性和美观性,对每一帧基本都进行了图片的修改和设计,工程量比较大,也考验人的耐心。
在其的制作中也学到了很多新的知识。
4.矩阵计算器
4.1设计思路
选择了矩阵计算器,用VB编写,考虑到使用的方便和便捷性,我对矩阵的运算进行了分类,加法和乘法编码在一个窗体,转置和求矩阵的秩编码在另外一个窗体内,实现其所需要的功能。
并对其进行完善和修改。
a)对矩阵的操作界面进行了美观设计。
使其看起来美观。
b)使用了闪烁标题栏的功能,增加矩阵计算器的可观性。
c)对按钮进行了音效设定。
d)增加的窗体伸缩的功能,方便用户进行使用。
4.2设计框图
4.3窗口截图
图4.1进入系统画面
图4.2矩阵加法和乘法运算界面
4.4设计故障及解决方法
a)矩阵计算器最难的部分就是秩的运算,在实现秩运算的时候,又重新复习了一遍线性代数里面的求秩的方法,在用代码一步一步实现。
b)在进行闪烁标题栏设计的时候,功能相对复杂,代码所需要加入的函数总是出现错误,后经翻阅书籍发现是错误的定义了函数。
c)在进行窗体伸缩功能设计的时候timer2在使用的时候本身是已经定义了可以进行伸展的功能只是在运行时不能实现,后经反复修改语句发现必须要在另一个函数定义里面也需要加入这些语句才能实现。
四.实习总结
通过两个多星期的学习和实践,培养了自己独立思考问题、解决问题的能力,激发了自我学习的潜能。
在进行软件编程的时候,由于都是刚刚接触新的编程语言,对语言不够熟悉,在编程过程中就会出现各种问题,包括下标越界、函数未定义等等。
尤其是在编写第一个四则运算程序的时候印象很深刻,在用数组控件和插入表格控件的时候语句编写总是出现错误,不能实现我所需要的功能,所以就翻阅我所能看到的书进行学习和修改,用了整整一天的时间,终于修改成功,兴奋喜悦的心情难以用语言来描述,只是我在想,编程是一种艺术,是一种能控制你心情大喜大悲的有力工具,当你怎么查也查不出错误的时候很痛苦,当你千辛万苦终于把你的代码修改成功的时候,那种成功喜悦的心情很是愉悦,兴奋也许就只是莫过于此。
在用FLASH制作动画的时候,以自己为原型进行功夫设计,我就想到了小时候经常玩的游戏魂斗罗,所以就把自己当成了游戏里面的主人公进行动画设计,也算是当成一种童年的回忆。
转眼之间小学期就要结束了,在小学期当中发现自己学会了很多,尤其是在编程语言方面,学到了很多新的知识,也懂得如何在最快的时间内写完程序,如何最好最快的改程序。
还有以前就一直想学FLASH,总是由于各种各样的原因没有时间学成,这次正好利用了这次机会学习FLASH,对利用FLASH如何制作动画也了解了。
总之,小学期让我收获了很多,也学到了很多,希望以后还会有这样的机会。
附:
程序关键部分源代码
1.算术运算测试系统源代码
【高级运算程序关键部分源代码】
PrivateSubCommand1_Click()
OnErrorResumeNext
DimnAsInteger,iAsInteger
DimVAsSingle
Dims1AsString
DimzAsInteger
n=Val(Text1.Text)
ReDima(n-1)
ReDimB(n-1)
ReDimC(n-1)
ReDimD(n-1)
ReDimOp(n-1)
ReDimAnswer(n-1)
MSFlexGrid1.Rows=n+1
Fori=0Ton-1
a(i)=Rnd*100
B(i)=1+Rnd*99
Op(i)=Rnd*3
IfOp(i)=1Anda(i)
z=a(i)
a(i)=B(i)
B(i)=z
EndIf
IfOp(i)=3AndB(i)=0Then
B(i)=B(i)+1
EndIf
MSFlexGrid1.TextMatrix(i+1,0)=i+1
MSFlexGrid1.TextMatrix(i+1,1)=a(i)&OpName(Op(i))&B(i)&"="
MSFlexGrid1.TextMatrix(i+1,2)=""
MSFlexGrid1.TextMatrix(i+1,3)=""
MSFlexGrid1.TextMatrix(i+1,4)=""
SelectCaseOp(i)
Case0
Answer(i)=a(i)+B(i)
Case1
Answer(i)=a(i)-B(i)
Case2
Answer(i)=a(i)*B(i)
Case3
Answer(i)=Format(a(i)/B(i),"0.##")
IfRight(Answer(i),1)="."ThenAnswer(i)=Left(Answer(i),Len(Answer(i))-1)
EndSelect
Nexti
Text2.Text=""
F1=False
EndSub
DimiAsInteger
Dimn2AsInteger,n3AsInteger
n2=0
n3=0
Fori=1ToMSFlexGrid1.Rows-1
IfMSFlexGrid1.TextMatrix(i,2)=Answer(i-1)Then
MSFlexGrid1.TextMatrix(i,3)="对"
n2=n2+1
Else
MSFlexGrid1.TextMatrix(i,3)="错"
EndIf
MSFlexGrid1.TextMatrix(i,4)=Answer(i-1)
n3=n3+1
Nexti
Text6.Text=Format(n2*100/n3,"0")
WindowsMediaPlayer1.URL="F:
\22.WAV"
WindowsMediaPlayer1.Controls.play
IfText6.Text<60Then
MsgBox"你的成绩是"&Text6.Text&"分,小朋友要努力哦!
~",vbOKOnly,"成绩"
ElseIfText6.Text>=60AndText6.Text<90Then
MsgBox"你的成绩是"&Text6.Text&"分,再接再厉,你会更优秀!
~",vbOKOnly,"成绩"
ElseIfText6.Text>=90Then
MsgBox"哇,你的成绩是"&Text6.Text&"分,很优秀,真厉害!
~",vbOKOnly,"成绩"
EndIf
EndSub
PrivateSubCommand3_Click()
Form4.Show
Form2.Hide
EndSub
PrivateSubCommand4_Click()
DimanAsInteger
an=MsgBox("真的想退出吗?
",vbYesNoCancel+vbQuestion,"退出")
Ifan=vbYesThen
End
EndIf
EndSub
PrivateSubForm_Load()
Form2.Hide
Form2.Top=(Screen.Height-Form2.Height)/2
Form2.Left=(Screen.Width-Form2.Width)/2
Randomize
OpName(0)="+"
OpName
(1)="-"
OpName
(2)="*"
OpName(3)="/"
WithMSFlexGrid1
.ColWidth(0)=1000
.ColWidth
(1)=2000
.ColWidth
(2)=800
.ColWidth(3)=800
.ColWidth(4)=1200
.TextMatrix(0,0)="序号"
.TextMatrix(0,1)="题目"
.TextMatrix(0,2)="答案"
.TextMatrix(0,3)="对错"
.TextMatrix(0,4)="标准答案"
EndWith
F1=False
WindowsMediaPlayer1.URL="F:
\22.WAV"
WindowsMediaPlayer1.Controls.stop
EndSub
PrivateSubMSFlexGrid1_EnterCell()
WithMSFlexGrid1
If.Col=2Then
Text2.Left=.Left+.CellLeft
Text2.Top=.Top+.CellTop
Text2.Width=.CellWidth
Text2.Height=.CellHeight
Text2.Text=.Text
Text2.Visible=True
Else
Text2.Visible=False
EndIf
EndWith
EndSub
PrivateSubMSFlexGrid1_Scroll()
Text2.Visible=False
EndSub
PrivateSubText1_Change()‘限定只能输入数字
IfIsNumeric(Text1.Text)Then
IfInt(Text1.Text)=Text1.TextThen
IfText1.Text<=0Then
MsgBox"你输入的数不符合要求",vbOKOnly,"温馨提示"
Command1.Enabled=False
Else
Command1.Enabled=True
EndIf
IfText1.Text>=300Then
MsgBox"你出的题太多了!
",vbOKOnly,"温馨提示"
Command1.Enabled=False
Else
Command1.Enabled=True
EndIf
EndIf
ElseIfText1.Text<>""Then
MsgBox"你输入的不符合要求",vbOKOnly,"温馨提示"
Command1.Enabled=False
Else
Command1.Enabled=True
EndIf
F1=True
EndSub
PrivateSubText2_Change()
MSFlexGrid1.Text=Text2.Text
EndSub
2.倒计时器关键部分源代码
PrivateSubCommand3_Click()‘重置功能
Text1.Text=""
Text2.Text=""
Text3.Text=""
Label1.Caption="00:
00:
00"
Command1.Caption="开始"
Command1.Enabled=True
EndSub
PrivateSubText1_KeyPress(KeyAsciiAsInteger)‘限定只能输入数字
DimNumbersAsString
Numbers="1234567890"+Chr(8)+Chr(46)
IfInStr(Numbers,Chr(KeyAscii))=0Then
KeyAscii=0
EndIf
EndSub
PrivateSubTimer1_Timer()‘计时功能
IfText1.Text=""AndText2.Text=""AndText3.Text=""Then
Timer1.Enabled=False
Else
Timer1.Enabled=True
h=Val(Text1.Text)
m=Val(Text2.Text)
s=Val(Text3.Text)
n=h*3600+m*60+s
Ifn>0Then
n=n-1
h=n\3600
m=(nMod3600)\60
s=n-h*3600-m*60
Text1.Text=CStr(h)
Text2.Text=CStr(m)
Text3.Text=CStr(s)
Label1.Caption=Format(h,"00")&":
"&Format(m,"00")&":
"&Format(s,"00")
Else
Ifn=0Then
Timer1.Enabled=False
Command1.Enabled=True
Text1.Text=""
Text2.Text=""
Text3.Text=""
Form2.Show
Form1.Hide
WindowsMediaPlayer1.URL="F:
\22.WAV"
WindowsMediaPlayer1.Controls.play
EndIf
EndIf
EndIf
EndSub
3.矩阵计算器关键部分源代码
PrivateSubCommand3_Click()‘矩阵加法
Picture3.Cls
Ifm=0Orn=0Orp=0Orq=0Then
MsgBox"请先输入矩阵",vbOKOnly,"提示"
GoTolab:
EndIf
Ifm<>pOrn<>qThen
MsgBox"请输入行数和列数相同的矩阵才可相加",vbOKOnly,"提示"
EndIf
Ifm=pAndn=qThen
Label1.Caption="+"
ReDimc(1Tom,1Ton)AsInteger
Fori=1Tom
Forj=1Ton
c(i,j)=a(i,j)+b(i,j)
Picture3.Printc(i,j);
Nextj
Picture3.Print
Nexti
EndIf
lab:
EndSub
PrivateSubCommand4_Click()‘矩阵乘法
Picture3.Cls
Ifm=0Orn=0Orp=0Orq=0Then
MsgBox"请先输入矩阵",vbOKOnly,"提示"
GoTolab:
EndIf
Ifn<>pThen
MsgBox"请输入A矩阵列数和B矩阵行数相等的矩阵再做乘积",vbOKOnly,"提示"
EndIf
Ifn=pThen
Label1.Caption="x"
ReDimc(1Tom,1Toq)AsInteger
Fori=1Tom
Forj=1Toq
Fork=1Ton
c(i,j)=a(i,k)*b(k,j)+c(i,j)
Nextk
Picture3.Printc(i,j);
Nextj
Picture3.Pri