VB 2.docx

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

VB 2.docx

《VB 2.docx》由会员分享,可在线阅读,更多相关《VB 2.docx(17页珍藏版)》请在冰点文库上搜索。

VB 2.docx

VB2

 

 

VB程序语言设计

课程大作业

 

题目名称:

____科学计算器__________________

班级:

_____10020742____________________

姓名:

_____方虎________________________

学号:

_____24_________________________

课程教师:

温海骏_____________________

学期:

2012-2013学年第2学期

完成时间:

2013年5月16号

1.设计思路

我的基本思路是在窗体上建立三个控件数组,第一个控件数组有十五个命令按钮,分别实现加、减、乘、除、倒数、乘方、正玄、余玄、正切、In、n!

函数、进制、弧度转换等函数功能;第二个控件数组作包括十二个命令按钮,用来进行计算器的数据输入;第三个控件数组为基本的运算符号,实现基本加减乘除和乘方运算。

退格、清除、等于、退出作为独立的命令按钮。

2.设计目标

本科学计算器是一种能实现加、减、乘、除、倒数、乘方、正玄、余玄、正切、In、n!

函数、进制、弧度转换等运算功能,并带有存储器、统计框等,基本实现了Windows自带计算器的所有功能。

要实现计算器的这些功能就用到我们所学的VB知识编写程序来实现运算功能并解决问题。

3.总体设计结构与功能

1.设计框架和计算器整体形象

2.主要功能模块的计算设计思路,以及对应的N-S流程图,说明本功能的特点,其各功能的代码如下

首先对0到9进行赋值和设置

PrivateSubn0_Click()

Form1.Caption="输入"

Ift.Text="0"Then

t.Text="0"

GoToE

EndIf

Ifinputn=1Thent.Text=t.Text+"0"

Ifinputn=0Thent.Text="0"

E:

inputn=1

dengyu.SetFocus

EndSub

PrivateSubn1_Click()

Form1.Caption="输入"

Ift.Text="0"Then

t.Text="1"

GoToE

EndIf

Ifinputn=1Thent.Text=t.Text+"1"

Ifinputn=0Thent.Text="1"

E:

inputn=1

dengyu.SetFocus

EndSub

PrivateSubn2_Click()

Form1.Caption="输入"

Ift.Text="0"Then

t.Text="2"

GoToE

EndIf

Ifinputn=1Thent.Text=t.Text+"2"

Ifinputn=0Thent.Text="2"

E:

inputn=1

dengyu.SetFocus

EndSub

PrivateSubn3_Click()

Form1.Caption="输入"

Ift.Text="0"Then

t.Text="3"

GoToE

EndIf

Ifinputn=1Thent.Text=t.Text+"3"

Ifinputn=0Thent.Text="3"

E:

inputn=1

dengyu.SetFocus

EndSub

PrivateSubn4_Click()

Form1.Caption="输入"

Ift.Text="0"Then

t.Text="4"

GoToE

EndIf

Ifinputn=1Thent.Text=t.Text+"4"

Ifinputn=0Thent.Text="4"

E:

inputn=1

dengyu.SetFocus

EndSub

PrivateSubn5_Click()

Form1.Caption="输入"

Ift.Text="0"Then

t.Text="5"

GoToE

EndIf

Ifinputn=1Thent.Text=t.Text+"5"

Ifinputn=0Thent.Text="5"

E:

inputn=1

dengyu.SetFocus

EndSub

PrivateSubn6_Click()

Form1.Caption="输入"

Ift.Text="0"Then

t.Text="6"

GoToE

EndIf

Ifinputn=1Thent.Text=t.Text+"6"

Ifinputn=0Thent.Text="6"

E:

inputn=1

dengyu.SetFocus

EndSub

PrivateSubn7_Click()

Form1.Caption="输入"

Ift.Text="0"Then

t.Text="7"

GoToE

EndIf

Ifinputn=1Thent.Text=t.Text+"7"

Ifinputn=0Thent.Text="7"

E:

inputn=1

dengyu.SetFocus

EndSub

PrivateSubn8_Click()

Form1.Caption="输入"

Ift.Text="0"Then

t.Text="8"

GoToE

EndIf

Ifinputn=1Thent.Text=t.Text+"8"

Ifinputn=0Thent.Text="8"

E:

inputn=1

dengyu.SetFocus

EndSub

PrivateSubn9_Click()

Form1.Caption="输入"

Ift.Text="0"Then

t.Text="9"

GoToE

EndIf

Ifinputn=1Thent.Text=t.Text+"9"

Ifinputn=0Thent.Text="9"

E:

inputn=1

dengyu.SetFocus

EndSub

再在对小数点进行赋值

PrivateSubdot_Click()

Form1.Caption="输入"

IfInStr(t.Text,".")=0Thent.Text=t.Text+"."

Ifinputn=0Thent.Text="0."

inputn=1

dengyu.SetFocus

EndSub

取负运算的设置

PrivateSubqufu_Click()

Form1.Caption="取负"

t.Text=0-Val(t.Text)

IfMid(t.Text,1,1)="."Thent.Text="0"+t.Text

IfMid(t.Text,1,2)="-."Thent.Text="-0"+Mid(t.Text,2)

dengyu.SetFocus

EndSub

加减乘除的设置和赋值

PrivateSubjia_Click()

m=cal()

Form1.Caption="加法运算"

inputn=0

number1=Val(t.Text)

operation=1

dengyu.SetFocus

EndSub

PrivateSubjian_Click()

m=cal()

Form1.Caption="减法运算"

inputn=0

number1=Val(t.Text)

operation=2

dengyu.SetFocus

EndSub

PrivateSubcheng_Click()

m=cal()

Form1.Caption="乘法运算"

inputn=0

number1=Val(t.Text)

operation=3

dengyu.SetFocus

EndSub

PrivateSubchu_Click()

m=cal()

Form1.Caption="除法运算"

inputn=0

number1=Val(t.Text)

operation=4

dengyu.SetFocus

EndSub

百分数的设置和赋值

PrivateSubbaifen_Click()

Form1.Caption="转化为百分数"

inputn=0

t.Text=Val(t.Text)*100

IfMid(t.Text,1,1)="."Thent.Text="0"+t.Text

IfMid(t.Text,1,2)="-."Thent.Text="-0"+Mid(t.Text,2)

dengyu.SetFocus

EndSub

取倒数运算的赋值语句

PrivateSubdaoshu_Click()

Form1.Caption="取倒数"

inputn=0

t.Text=CDbl

(1)/Val(t.Text)

IfMid(t.Text,1,1)="."Thent.Text="0"+t.Text

IfMid(t.Text,1,2)="-."Thent.Text="-0"+Mid(t.Text,2)

dengyu.SetFocus

EndSub

等于号的赋值语句

PrivateSubdengyu_Click()

Form1.Caption="运算结果"

m=cal()

EndSub

取对数的赋值语句(ln和log)

PrivateSubln_Click()

Form1.Caption="取自然数对数"

inputn=0

Ift.Text>0Thent.Text=Log(Val(t.Text))/Log(2.71828183)

IfMid(t.Text,1,1)="."Thent.Text="0"+t.Text

IfMid(t.Text,1,2)="-."Thent.Text="-0"+Mid(t.Text,2)

dengyu.SetFocus

EndSubPrivateSubduishu_Click()

Form1.Caption="对数运算"

inputn=0

Ift.Text>0Thent.Text=Log(Val(t.Text))

IfMid(t.Text,1,1)="."Thent.Text="0"+t.Text

IfMid(t.Text,1,2)="-."Thent.Text="-0"+Mid(t.Text,2)

dengyu.SetFocus

EndSub

对sin、cos、tan语句的赋值

PrivateSubsine_Click()

Form1.Caption="正弦"

inputn=0

DimnAsDouble

n=Val(t.Text)/180*3.14159265358979

t.Text=Sin(n)

IfMid(t.Text,1,1)="."Thent.Text="0"+t.Text

IfMid(t.Text,1,2)="-."Thent.Text="-0"+Mid(t.Text,2)

dengyu.SetFocus

EndSub

PrivateSubcose_Click()

Form1.Caption="余弦"

inputn=0

DimnAsDouble

n=Val(t.Text)/180*3.14159265358979

t.Text=Cos(n)

IfMid(t.Text,1,1)="."Thent.Text="0"+t.Text

IfMid(t.Text,1,2)="-."Thent.Text="-0"+Mid(t.Text,2)

dengyu.SetFocus

EndSub

PrivateSubtane_Click()

Form1.Caption="正切"

inputn=0

DimnAsDouble

n=Val(t.Text)/180*3.14159265358979

t.Text=Tan(n)

IfMid(t.Text,1,1)="."Thent.Text="0"+t.Text

IfMid(t.Text,1,2)="-."Thent.Text="-0"+Mid(t.Text,2)

dengyu.SetFocus

EndSub

对平方和开方语句的赋值

PrivateSubpingfang_Click()

Form1.Caption="平方"

inputn=0

t.Text=Val(t.Text)^2

IfMid(t.Text,1,1)="."Thent.Text="0"+t.Text

dengyu.SetFocus

EndSub

PrivateSubkaifang_Click()

Form1.Caption="开方运算"

inputn=0

IfVal(t.Text)<0ThenGoToE

t.Text=Sqr(Val(t.Text))

IfMid(t.Text,1,1)="."Thent.Text="0"+t.Text

IfMid(t.Text,1,2)="-."Thent.Text="-0"+Mid(t.Text,2)

E:

dengyu.SetFocus

EndSub

阶乘运算的赋值

PrivateSubjiecheng_Click()

Form1.Caption="阶乘运算"

inputn=0

IfVal(t.Text)<0OrVal(t.Text)-Int(Val(t.Text))<>0ThenGoToE

t.Text=fac(CLng(Val(t.Text)))

E:

dengyu.SetFocus

EndSub

存储的设置赋值能够调出记忆1和记忆2

PrivateSubsto_Click()

Ifstatics=1Then

Form1.Caption="存储数据按等号结束输入"

numarray(arraylen)=Val(t.Text)

arraylen=arraylen+1

t.Text=Str(arraylen)

inputn=0

Else

Form1.Caption="存储(选择M1或M2)"

storage=1

EndIf

dengyu.SetFocus

EndSubPrivateSubm1_Click()

Form1.Caption="记忆1"

Ifstorage=1Then

memory1=Val(t.Text)

storage=0

Else:

t.Text=memory1

EndIf

inputn=0

IfMid(t.Text,1,1)="."Thent.Text="0"+t.Text

IfMid(t.Text,1,2)="-."Thent.Text="-0"+Mid(t.Text,2)

dengyu.SetFocus

EndSub

PrivateSubm2_Click()

Form1.Caption="记忆2"

Ifstorage=1Then

memory2=Val(t.Text)

storage=0

Else:

t.Text=memory2

EndIf

inputn=0

IfMid(t.Text,1,1)="."Thent.Text="0"+t.Text

IfMid(t.Text,1,2)="-."Thent.Text="-0"+Mid(t.Text,2)

dengyu.SetFocus

EndSub

统计状态的设置和赋值语句

PrivateSubsta_Click()

Form1.Caption="进入统计状态"

statics=1

inputok=0

Forn=0To500

numarray(n)=0

Nextn

arraylen=0

EndSub

PrivateSubexitsta_Click()

Form1.Caption="退出统计状态"

statics=0

inputok=0

inputn=0

EndSub

清零键、退格、关闭的设置赋值语句

PrivateSubclear_Click()

Form1.Caption="清零"

inputn=0

t.Text=0

Ifstatics=1Then

Forn=0To500

numarray(n)=0

Nextn

arraylen=0

inputok=0

EndIf

dengyu.SetFocus

PrivateSubback_Click()

Form1.Caption="退格"

IfLen(t.Text)>=1Thent.Text=Left(t.Text,Len(t.Text)-1)

IfLen(t.Text)=0Thent.Text="0"

dengyu.SetFocus

EndSub

关闭程序

PrivateSubpoweroff_Click()

End

EndSub

EndSub

出现异常和不符合数学规律的提示

Functionave()AsDouble

DimsumAsDouble

sum=0

Forn=0Toarraylen

sum=sum+numarray(n)

Nextn

Ifarraylen=0Then

m=MsgBox("出错!

",vbOKOnly,"单击确定退出!

")

EndIf

ave=sum/arraylen

EndFunction

变量的赋值和函数调用的设置

Diminputn,operation,storage,statics,inputokAsInteger

Dimnumber1,memory1,memory2,numarray(500),arraylenAsDouble

Functionfac(aAsLong)AsLong

Dimr,nAsLong

r=1

Forn=1ToaStep1

r=r*n

Nextn

fac=r

EndFunction

Functioncal()

inputn=0

Dimnumber2AsDouble

number2=Val(t.Text)

SelectCaseoperation

Case1:

t.Text=number1+number2

Case2:

t.Text=number1-number2

Case3:

t.Text=number1*number2

Case4:

Ift.Text<>"0"Thent.Text=number1/number2

Case5:

Ifnumber2>number1Ornumber2-Int(number2)<>0_

Ornumber1-Int(number1)<>0Ornumber1<0Ornumber2<0_

Ornumber1>12OrNumber>12ThenGoToE

t.Text=fac(CLng(number1))/(fac(CLng(number2))*fac(CLng(number1)_

-CLng(number2)))

Case6:

Ifnumber2>number1Ornumber2-Int(number2)<>0_

Ornumber1-Int(number1)<>0Ornumber1<0_

Ornumber2<0Ornumber1>12OrNumber>12ThenGoToE

t.Text=fac(CLng(number1))/fac(CLng(number2))

Case7:

Ifnumber1<0Ornumber2<0ThenGoToE

t.Text=number1*number2/(number1+number2)

Case8:

t.Text=number1^number2

EndSelect

E:

operation=0

IfMid(t.Text,1,1)="."Thent.Text="0"+t.Text

IfMid(t.Text,1,2)="-."Thent.Text="-0"+Mid(t.Text,2)

EndFunction

3.运行结果分析

运行程序进行调试COS((56+120)*3

调试COS((56+120)*3)

结果正确=-0.97814760073

4.总结

对于正切值的计算和有关规定存在比较大的问题,由于对代码书写的不熟悉,导致在设计此代码的过程存在过大的问题。

经过翻阅书本及网络查询,最终得以完成代码的编写,此处的重难点在于正切函数存在无意义的特点,要重新根据这一点加以调试和代码的书写。

对此次科学计算器的编写的体会深刻。

在编写的过程当中加强了对vb的知识的巩固和理解。

Vb对于我来说,它还是比较难的,对其理解的不够深刻,认识的不够透彻。

我觉得光是学点理论知识是不够的,关键在于能够将理论转化为现实操作,自己动手才能让自己更清楚的理解和巩固知识。

 

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

当前位置:首页 > 自然科学 > 物理

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

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