城院VB测量程序设计上机报告.docx

上传人:b****1 文档编号:2259937 上传时间:2023-05-03 格式:DOCX 页数:17 大小:165.27KB
下载 相关 举报
城院VB测量程序设计上机报告.docx_第1页
第1页 / 共17页
城院VB测量程序设计上机报告.docx_第2页
第2页 / 共17页
城院VB测量程序设计上机报告.docx_第3页
第3页 / 共17页
城院VB测量程序设计上机报告.docx_第4页
第4页 / 共17页
城院VB测量程序设计上机报告.docx_第5页
第5页 / 共17页
城院VB测量程序设计上机报告.docx_第6页
第6页 / 共17页
城院VB测量程序设计上机报告.docx_第7页
第7页 / 共17页
城院VB测量程序设计上机报告.docx_第8页
第8页 / 共17页
城院VB测量程序设计上机报告.docx_第9页
第9页 / 共17页
城院VB测量程序设计上机报告.docx_第10页
第10页 / 共17页
城院VB测量程序设计上机报告.docx_第11页
第11页 / 共17页
城院VB测量程序设计上机报告.docx_第12页
第12页 / 共17页
城院VB测量程序设计上机报告.docx_第13页
第13页 / 共17页
城院VB测量程序设计上机报告.docx_第14页
第14页 / 共17页
城院VB测量程序设计上机报告.docx_第15页
第15页 / 共17页
城院VB测量程序设计上机报告.docx_第16页
第16页 / 共17页
城院VB测量程序设计上机报告.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

城院VB测量程序设计上机报告.docx

《城院VB测量程序设计上机报告.docx》由会员分享,可在线阅读,更多相关《城院VB测量程序设计上机报告.docx(17页珍藏版)》请在冰点文库上搜索。

城院VB测量程序设计上机报告.docx

城院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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2