城院VB测量程序设计上机报告.docx
- 文档编号:12546756
- 上传时间:2023-04-20
- 格式:DOCX
- 页数:17
- 大小:165.27KB
城院VB测量程序设计上机报告.docx
《城院VB测量程序设计上机报告.docx》由会员分享,可在线阅读,更多相关《城院VB测量程序设计上机报告.docx(17页珍藏版)》请在冰豆网上搜索。
城院VB测量程序设计上机报告
*****大学
上机实验报告
课程名称:
测量程序设计与应用
专业:
测绘工程
班级学号:
**
姓名:
FA
任课教师:
201*-201*学年第一学期
上机实验a:
角度与弧度
一、实验目的与要求
编制一个角度与弧度互化程序。
通过上机实践,掌握基本控件、语法,了解角度、弧度转化过程。
要求:
角度与弧度能灵活转换,角度度分秒显示在其合理范围内,程序代码逻辑严密。
二、实验安排
课时安排2小时,独立上机操作。
三、实验原理和过程
1、算法
弧度=[(度+分÷60+秒÷3600)×π]÷180
角度=*度*分*秒
度=弧度×(180÷π)……取度的整数部分
分=度的小数部分×60……取分的整数部分
秒=分的小数部分×60……取秒的整、小数部分
2、框图
属性控件设置
对象
属性
设置
Lable1
Caption
角度:
度
Lable2
Caption
弧度
Lable4
Caption
分
Lable5
Caption
秒
Lable6
Caption
1111111
Text1
Text
空
Text2
Text
空
Text3
Text
空
Text4
Text
空
Command1
Caption
角度->弧度
Command2
Caption
弧度->角度
Command3
Caption
清零
Form1
Caption
角度弧度换算
界面布局
3、验证算例
以259°24′38″为例,根据如上算法得:
(取π=3.14)
弧度=[(259+24÷60+38÷3600)×3.14]÷180=4.525273025
角度=259°24′38″(因小数取位而稍有差异)
度=4.52527302×(180÷3.14)=259.4105556……取度的整数部分
分=0.4105556×60=24.633336……取分的整数部分
秒=0.633336×60=38.00016……取秒的整、小数部分
根据如上验算过程可知:
此算法可完成角度和弧度的换算,完全符合作业要求。
四、程序代码
算法部分:
ConstPi=3.141592654
PrivateSubCommand1_Click()--角度换弧度
a=(Text1.Text)
b=Text2.Text
c=Text3.Text
d=a+b/60+c/3600--度
d=d*Pi/180--弧度
Text4.Text=Format(d,"##0.000000")
EndSub
PrivateSubCommand2_Click()--弧度换角度
d=Text4.Text
d=d*180/Pi
a=Int(d)--度
d=(d-a)*60
b=Int(d)--分
d=(d-b)*600
c=Int(d)/10#--秒
Text1.Text=a
Text2.Text=b
Text3.Text=c
EndSub
五、程序调试
调试时出现问题:
解决方法:
根据If语句的语法关系,在语句最后加EndIf。
六、实验运行结果
运行界面
角度化弧度演示
弧度化角度演示
七、小结
通过此次上机实践,更深层次的了解了If语句的单分支结构、双分支结构与多分支结构的语法特点,了解了Msgbox语句的作用与特点。
体会到了编程需要严密、
上机实验b:
字母游戏
一、实验目的与要求
编制一个游戏程序,含:
登陆界面、注册界面与游戏界面。
通过上机实践,掌握登陆界面的Combo控件、登陆次数辨识与登陆账号记录;注册界面的账号注册、记录及保存账号密码;游戏界面的时间控件和Frame控件。
该程序需满足账号登陆记录、账号注册、账号密码保存、游戏使用顺畅等游戏程序的基本要求。
二、实验安排
课时安排2小时,独立上机操作。
三、实验原理和过程
1、算法
登陆界面
OLD函数、split函数、Dountil语句和APP.Path当前路径。
注册界面
OLD函数、split函数、Dountil语句和APP.Path当前路径。
游戏界面
2、框图
登陆界面
--界面布局
属性控件设置
对象
属性
设置
Lable1
Caption
密码
Lable2
Caption
字母小游戏
Lable3
Caption
用户名
Combo1
Text
空
Text2
Text
空
Command1
Caption
登陆
Command2
Caption
退出
Command3
Caption
注册
Form1
Caption
游戏登陆
注册界面
--界面布局
属性控件设置
对象
属性
设置
Lable1
Caption
用户名
Lable2
Caption
密码
Lable3
Caption
确认密码
Text1
Text
空
Text2
Text
空
Text3
Text
空
Command1
Caption
确定
Command2
Caption
退出
Form3
Caption
游戏注册
游戏界面
--界面布局
属性控件设置
对象
属性
设置
Frame1
Caption
字母小游戏
Lable1
Caption
显示分数
Lable2
Caption
Lable2
Lable3
Caption
显示时间
Lable4
Caption
分数:
Lable5
Caption
时间:
Timer1
Timer2
Command1
Caption
开始
Command2
Caption
退出
Form2
KeyPreview
Ture
Form2
Left
4425
3、验证算例
登陆界面、注册界面
OLD函数:
为自定义函数,可调用已有的文件。
Split函数:
可将某一行数据依据某字符分隔开。
Dountil语句:
为DO循环语句,可使条件重复执行。
APP.Path:
可将文件保存在当前路径,可调用当前路径文件。
游戏界面
Chr()函数:
为转换函数,能将ACSII码转换成字符。
Val()函数:
为转换函数,将数字字符串转换成数值。
Int(N)函数:
为转换函数,取小于等于N的最大整数。
四、程序代码
登陆界面代码:
DimOLDAsString--定义函数
DimXAsInteger
DimO()AsString
Dimuser()AsInteger
PrivateSubCommand1_Click()
OpenApp.Path&"\user.dat"ForInputAs#1--导入文档数据
DoUntilEOF
(1)--循环导入
LineInput#1,OLD
IfOLD=Combo1.Text&","&Text2.TextThen
Form2.Show
Form1.Hide:
Close#1:
ExitSub
EndIf
Loop
Close#1
MsgBox"用户名或密码有误,请重新输入",1+48,"error"--报告错误
Combo1.Text=""
Text2.Text=""
X=X+1
IfX=3Then
MsgBox"错误3次,退出程序!
",1+48,"error":
UnloadMe
EndIf
EndSub
PrivateSubForm_Load()
OpenApp.Path&"\user.dat"ForInputAs#1'--记录已登入用户名
iuser=0
DoUntilEOF
(1)
LineInput#1,OLD
O()=Split(OLD,",")
iuser=iuser+1
Loop
Close#1
ReDimuser(iuser-1)
OpenApp.Path&"\user.dat"ForInputAs#1'
j=0
DoUntilEOF
(1)
LineInput#1,OLD
O()=Split(OLD,",")
user(j)=O(0)
j=j+1
Loop
Close#1
Forj=0Toiuser-1
Combo1.AddItem(user(j))
Nextj
EndSub
注册界面代码:
DimOLD,O()AsString
PrivateSubCommand1_Click()
IfLen(Text2)<>6Then
MsgBox"密码格式错误,密码应为6位!
"--设置密码格式
Text2.Text=""
Text3.Text=""
ElseIfText2.Text=Text3.TextThen'
OpenApp.Path&"\user.dat"ForInputAs#1'--保存密码
DoUntilEOF
(1)
LineInput#1,OLD
O()=Split(OLD,",")
IfO(0)=Text1.TextThenMsgBox"该用户名已注册!
":
Close#1:
ExitSub--逻辑判断
Loop
Close#1
OpenApp.Path&"\user.dat"ForAppendAs#1
Print#1,Text1.Text&","&Text2.Text'
Close#1
MsgBox"注册成功!
"
ElseIfText1.Text=""AndText2.Text=""Then
MsgBox"请输入用户名和密码!
"
Text3.Text=""
Text1.SetFocus
ElseIfText1.Text=""Then
MsgBox"请输入用户名!
"
Text1.SetFocus
ElseIfText2.Text=""Then
MsgBox"请输入密码!
"
Text3.Text=""
Text2.SetFocus
ElseIfText3.Text=""Then
MsgBox"请再次输入密码!
"
Text3.SetFocus
ElseIfText2.Text<>Text3.TextThen
MsgBox"密码不相符,请重输!
"
Text2.Text=""
Text3.Text=""
EndIf
EndSub
游戏界面代码:
DimspeedAsInteger
Subinit()
Label2.Caption=Chr(Int(Rnd*26)+49)--设置游戏字母
speed=1200
Label2.Left=Int(Rnd*Frame1.Width)
Label2.Top=Frame1.Top'
EndSub
PrivateSubCommand1_Click()--设置属性
init
Timer1.Interval=1000
Timer2.Interval=1000
Timer1.Enabled=True
Timer2.Enabled=True
Command1.Visible=False
Label3.Caption=120
Label1.Caption=0
EndSub
PrivateSubForm_KeyPress(KeyAsciiAsInteger)
IfChr(KeyAscii)=Label2.CaptionThen--分数计算
init
Label1.Caption=Val(Label1.Caption)+1
Else
Label1.Caption=Val(Label1.Caption)-1
EndIf
EndSub
PrivateSubForm_Load()
Randomize
Timer1.Enabled=False
Timer2.Enabled=False
EndSub
PrivateSubTimer1_Timer()
Label2.Top=Label2.Top+speed
IfLabel2.Top>Frame1.HeightThen
init
EndIf
EndSub
PrivateSubTimer2_Timer()--设置计时器属性
Label3.Caption=Val(Label3.Caption)-1
IfVal(Label3.Caption)<=0Then
Timer1.Enabled=False
Timer2.Enabled=False
Label2.Caption=""
SelectCaseVal(Label1.Caption)--判定成绩结果
CaseIs<60
MsgBoxvbCrLf+"你真菜!
努力吧!
"
CaseIs>=60
MsgBoxvbCrLf+"恩--!
还可以有进步!
"
CaseIs>=100
MsgBoxvbCrLf+"哈。
。
。
满分!
"
CaseIs>150
MsgBoxvbCrLf+"好厉害啊!
"
EndSelect
EndIf
EndSub
五、程序调试
登陆界面
调试时出现问题:
解决方法:
将路径语句改成OpenApp.Path&"\user.dat"ForAppendAs#1’当前路径。
注册界面
调试时出现问题:
解决方法:
此语句中用到If…ElseIf语句和Dountil语句,二者都为循环语句。
Dountil语句中嵌套If…ElseIf语句,If循环语句完整,Do循环缺少Loop,故在Dountil语句最后加上Loop。
游戏界面
调试时出现问题:
敲击键盘无效,游戏窗口字母不消失,分数无变化。
解决方法:
检查窗体属性,修改KeyPreview属性为Ture。
六、实验运行结果
登陆界面
1、运行界面2、选取已记录用户名
3、报错
4、登陆成功5、成功进入游戏界面
注册界面
1、进入注册界面2、注册界面
4、输入用户名、密码5、注册成功6、报错
游戏界面
1、游戏运行界面2、游戏结果
七、小结
通过编辑登陆界面、注册界面与游戏界面,了解了Combo控件、时间控件、Frame控件的使用;了解了If循环、Do循环及循环语句的嵌套;学会了
记录与导出已
欢迎各位VB爱好者互助交流:
群号:
310412208
QQ:
953060949
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 城院 VB 测量 程序设计 上机 报告