vb黄兰计算器.docx

上传人:b****5 文档编号:15180944 上传时间:2023-07-02 格式:DOCX 页数:23 大小:245.81KB
下载 相关 举报
vb黄兰计算器.docx_第1页
第1页 / 共23页
vb黄兰计算器.docx_第2页
第2页 / 共23页
vb黄兰计算器.docx_第3页
第3页 / 共23页
vb黄兰计算器.docx_第4页
第4页 / 共23页
vb黄兰计算器.docx_第5页
第5页 / 共23页
vb黄兰计算器.docx_第6页
第6页 / 共23页
vb黄兰计算器.docx_第7页
第7页 / 共23页
vb黄兰计算器.docx_第8页
第8页 / 共23页
vb黄兰计算器.docx_第9页
第9页 / 共23页
vb黄兰计算器.docx_第10页
第10页 / 共23页
vb黄兰计算器.docx_第11页
第11页 / 共23页
vb黄兰计算器.docx_第12页
第12页 / 共23页
vb黄兰计算器.docx_第13页
第13页 / 共23页
vb黄兰计算器.docx_第14页
第14页 / 共23页
vb黄兰计算器.docx_第15页
第15页 / 共23页
vb黄兰计算器.docx_第16页
第16页 / 共23页
vb黄兰计算器.docx_第17页
第17页 / 共23页
vb黄兰计算器.docx_第18页
第18页 / 共23页
vb黄兰计算器.docx_第19页
第19页 / 共23页
vb黄兰计算器.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

vb黄兰计算器.docx

《vb黄兰计算器.docx》由会员分享,可在线阅读,更多相关《vb黄兰计算器.docx(23页珍藏版)》请在冰点文库上搜索。

vb黄兰计算器.docx

vb黄兰计算器

Vb程序设计

软件工程课程设计报告

《简单计算器的设计》

专业:

机械类

班级:

13级

学号:

1308020111

姓名:

黄兰

指导教师:

翟任何

 

第一章系统简介-3-

1.1课程设计名称-3-

1.2任务要求-3-

1.3开发环境-3-

第二章可行性分析-3-

2.1技术可行性-3-

2.2经济可行性-3-

2.3系统流程图-3-

第三章需求分析-4-

3.1确定对系统的综合要求-4-

3.2分析系统的数据要求-5-

第四章总体设计-5-

4.1设想供选择的方案及选择合理方案-5-

4.2设计软件结构图-5-

第五章详细设计及代码实现-6-

5.1结构程序设计-6-

5.2界面设计-6-

5.3过程设计-7-

5.3.1主程序的设计-7-

5.3.20-9的数字键设计-10-

5.3.3运算符号键设计-10-

5.3.4其他功能键设计-12-

5.3.5其他辅助设计-15-

第六章调试分析过程描述-16-

6.1利用vb的调试进行-16-

6.2易错边界点调试-17-

 

第一章系统简介

1.1课程设计名称

1、课程设计名称《简单科学计算器的设计》

1.2任务要求

简单计算器主要有一下几个任务:

1.具有小数点后10位以上的精度。

2.可以输入0~9、00、小数点等数字或数学符号,并能对数字取反。

3.能够计算加、减、乘、除四则运算。

4.可以计算倒数、开方、百分运算。

1.3开发环境

科学计算器主要在visualbasic6.0中开发。

由于vb的开发要简单好用,同时为了学习vb的程序编制。

第二章可行性分析

2.1技术可行性

前辈们已经做过的,市面上有很多的计算器。

使用vb6.0能够实现这个软件的编程。

2.2经济可行性

这个经济效益肯定不超过其开发的成本。

但是开发成本低,周期短。

主要用于练习vb编程。

2.3系统流程图

第三章需求分析

3.1确定对系统的综合要求

1.功能需求:

这个功能实现是的能够实现简单的运算,同时适用于记账的简单功能。

不需要太强大的功能。

2.性能需求:

计算速度快,计算出错率低,用户使用习惯的符合,操作简单。

3.可靠性和可用性需求:

在计算一百万次不发生错误。

在win7系统32位的电脑中程序崩溃每5000次出现一次。

4.出错处理:

提示用户在什么系统下正确安装,提示用户正确的使用方法。

3.2分析系统的数据要求

这里只有简单的数学运算并没有复杂的数据转换是很小型的系统软件。

第四章总体设计

4.1设想供选择的方案及选择合理方案

由于市面上有很多成熟的计算器程序,但是要使用最简单的,最能体现在买卖中的所运用的计算就可以了,让用户可以很好的去操作。

在需求分析中已经知道了所需要的功能。

因此这里,只有选择前面的方案。

先利用vb去实现再利用Java实现跨平台。

4.2设计软件结构图

第五章详细设计及代码实现

5.1结构程序设计

5.2界面设计

5.3过程设计

5.3.1主程序的设计

第一步给所有的用上的都定义和赋值,解释:

'''operand----------------------------操作数

'''Calculation-------------------------计算

'''operationsymbols---------------运算符号

'''decimal----------------------------小数点

'''plus---------------------------------加

'''minus------------------------------减

'''multiply----------------------------乘

'''divide-------------------------------除

'''Percent------------------------------百分比

'''equalto----------------------------等于

'''amount------------------------------合计;等同,接近

'''inverse;reciprocal-------------------------------倒数

'''SquareRoot-------------------------------------平方根

DimLastInputAsString'上次输入操作的类别

DimNumOperandAsInteger'操作数数量

DimOperationSymbolsAsString'运算符号

DimDecimalFlag'小数点状态

DimOperation_1'操作数1的值

DimOperation_2'操作数2的值

DimTimeAsInteger'0的使用次数

第二步对操作数赋值,满足条件则可以运算:

'***************对操作数赋值,满足条件则可以运算

PrivateSubChooseOperand()

IfLastInput="数字"Then

NumOperand=NumOperand+1

EndIf

SelectCaseNumOperand

Case1

Operation_1=LabelOut.Caption

Case2

Operation_2=LabelOut.Caption

Calculation

EndSelect

IfLastInput<>"运算符号"Then

LastInput="运算符号"

EndIf

DecimalFlag=False

EndSub

第三步定义简单运算通用过程Calculation():

'***************定义简单运算通用过程Calculation()

PrivateSubCalculation()

SelectCaseOperationSymbols

Case"+"

Operation_1=Val(Operation_1)+Val(Operation_2)

Case"-"

Operation_1=Val(Operation_1)-Val(Operation_2)

Case"*"

Operation_1=Val(Operation_1)*Val(Operation_2)

Case"/"

IfVal(Operation_2)=0Then

Operation_1="ERROR!

除数不能为零!

"

Beep

Else

Operation_1=Val(Operation_1)/Val(Operation_2)

EndIf

Case"="

Operation_1=Operation_2

CaseElse

EndSelect

LabelOut.Caption=Operation_1'结果输出

NumOperand=1'操作数个数置1

DecimalFlag=False

Time=0

EndSub

第四步定义处理数字按钮过程:

'***************定义处理数字按钮过程

PrivateSubNumber(numAsInteger)

IfTime<>0AndVal(LabelOut.Caption)=0AndDecimalFlag=FalseThen

LabelOut.Caption=""

EndIf

IfLastInput<>"数字"Then

LabelOut.Caption="."

EndIf

IfDecimalFlagThen

IfLeft(LabelOut.Caption,1)="."AndLastInput="运算符号"Then

LabelOut.Caption=""

EndIf

LabelOut.Caption=LabelOut.Caption&num

Else

Tmp=LabelOut.Caption

IfVal(Tmp)=0Then

LabelOut.Caption=num&"."

Else

Tmp=Left(Tmp,Len(Tmp)-1)

LabelOut.Caption=Tmp&num&"."

EndIf

EndIf

Tmp=""

LastInput="数字"

EndSub

第五步接受键盘输入的运算操作:

'*****************接受键盘输入的运算操作

PrivateSubForm_KeyPress(KeyAsciiAsInteger)

SelectCaseKeyAscii

Case8'退格键

CallCommandBackSpace_Click

Case37'%百分号

CallCommandPercent_Click

Case42'*号

CallCommandMultiply_Click

Case43'+号

CallCommandPlus_Click

Case45'-号

CommandMinus.Value=True

'CallCommandMinus_Click'与CommandMinus.Value=True作用相同

Case46'小数点

CallCommandDecimal_Click

Case47'/号

CallCommandDivide_Click

CaseAsc(0)'48为字符零的Ascii值

CallCommand0_Click

'Command0.Value=True‘与CallCommand0_Click作用相同

CaseAsc(0)ToAsc(9)'49To57数字键1至9的Ascii值

Char=Chr(KeyAscii)

Number(Char)

Case61'=键

CallCommandEqual_Click

EndSelect

EndSub

这是最关键的主程序,这是这个计算器的核心,把主程序写好后后面的工作就很好完成了。

5.3.20-9的数字键设计

'***************数字键1至9

PrivateSubCommand_Click(IndexAsInteger)

CallNumber(Index)

'Number(Index)

EndSub

'***************数字键0

PrivateSubCommand0_Click()

IfVal(LabelOut.Caption)=0AndDecimalFlag=FalseThen

Time=Time+1

EndIf

IfTime>=2Then

Else

Number(0)

EndIf

EndSub

5.3.3运算符号键设计

'***************加法

PrivateSubCommandPlus_Click()

CallChooseOperand

OperationSymbols="+"

EndSub

'***************减法;负号

PrivateSubCommandMinus_Click()

CallChooseOperand

OperationSymbols="-"

EndSub

'***************乘法

PrivateSubCommandMultiply_Click()

CallChooseOperand

OperationSymbols="*"

EndSub

'**************除法

PrivateSubCommandDivide_Click()

CallChooseOperand

OperationSymbols="/"

EndSub

'*************求平方根

PrivateSubCommandSquareRoot_Click()

IfVal(LabelOut.Caption)<0Then

Operation_1="ERROR!

被开方数不能为负值!

"

Beep

Else

Operation_1=Sqr(Val(LabelOut.Caption))

EndIf

LabelOut.Caption=Operation_1

EndSub

'*************当前操作数的百分比

PrivateSubCommandPercent_Click()

IfOperationSymbols="="OrLastInput="数字"Then

SelectCaseNumOperand

Case1

IfOperationSymbols="/"AndVal(LabelOut.Caption)=0Then

Calculation

Else

Operation_2=LabelOut.Caption

Calculation

Var=Val(LabelOut.Caption)

Var=Var/100

LabelOut.Caption=Str(Var)

EndIf

CaseElse

Var=Val(LabelOut.Caption)

Var=Var/100

LabelOut.Caption=Str(Var)

EndSelect

NumOperand=0

EndIf

EndSub

'****************求倒数,用除法

PrivateSubCommandReciprocal_Click()

IfLastInput="数字"Then

NumOperand=NumOperand+1

EndIf

SelectCaseNumOperand

Case1

Operation_1=LabelOut.Caption

Case2

Operation_2=LabelOut.Caption

Calculation

EndSelect

IfNumOperand=0And(LastInput="无"OrLastInput="负值"OrOperationSymbols<>"")Then

Else

Operation_2=Operation_1

Operation_1=1

OperationSymbols="/"

Calculation

NumOperand=0

OperationSymbols=""

EndIf

EndSub

'*************等于

PrivateSubCommandEqual_Click()

CallChooseOperand

OperationSymbols="="

EndSub

5.3.4其他功能键设计

'***************正负号键转化

PrivateSubCommandSign_Click()

IfLastInput<>"负值"AndLeft(LabelOut.Caption,1)<>"-"Then

Tmp=LabelOut.Caption

LabelOut.Caption="-"&Tmp

Tmp=""

LastInput="数字"

EndIf

EndSub

'***************小数点插入,实现小数

PrivateSubCommandDecimal_Click()

IfLastInput="无"OrLastInput="运算符号"Then

LabelOut.Caption="0."

ElseIfLastInput="负值"Then

LabelOut.Caption="-0."

ElseIfLastInput="数字"Then

IfDecimalFlagThen

EndIf

IfNotDecimalFlagThen

Tmp=LabelOut.Caption

IfRight(Tmp,1)="."Then

Else

Tmp=Tmp&"."

EndIf

LabelOut.Caption=Tmp

Tmp=""

EndIf

EndIf

DecimalFlag=True

LastInput="数字"

EndSub

'**************退格键

PrivateSubCommandBackSpace_Click()

Tmp=LabelOut.Caption

IfOperation_1=0Then

IfLen(Tmp)=0OrLen(Tmp)=2Then

Tmp="0."

EndIf

IfLen(Tmp)>2Then

SelectCaseRight(Tmp,1)

Case"."

IfLen(Tmp)=6AndLeft(Tmp,1)="-"Then

Tmp="0."

ElseIfLen(Tmp)=4Then

Tmp="0."

Else

Tmp=Left(Tmp,Len(Tmp)-3)

Tmp=Tmp+"."

EndIf

CaseElse

IfLen(Tmp)<=4AndLeft(Tmp,1)="-"Then

Tmp="0."

Else

Tmp=Left(Tmp,Len(Tmp)-2)

EndIf

EndSelect

EndIf

Else

IfLen(Tmp)=0OrLen(Tmp)=1Then

Tmp="0."

EndIf

IfLen(Tmp)>1Then

SelectCaseRight(Tmp,1)

Case"."

IfLen(Tmp)=3AndLeft(Tmp,1)="-"Then

Tmp="0."

ElseIfLen(Tmp)=2Then

Tmp="0."

Else

Tmp=Left(Tmp,Len(Tmp)-2)

Tmp=Tmp+"."

EndIf

CaseElse

IfLen(Tmp)<=2AndLeft(Tmp,1)="-"Then

Tmp="0."

Else

Tmp=Left(Tmp,Len(Tmp)-1)

EndIf

EndSelect

EndIf

EndIf

IfTmp="."ThenTmp="0."

LabelOut.Caption=Tmp

EndSub

'**************当前显示结果置零

PrivateSubCommandCE_Click()

LabelOut.Caption="0."

DecimalFlag=False

LastInput="运算符号"

EndSub

'**************再次初始化窗体Form

PrivateSubCommandC_Click()

Form_Load

EndSub

'***************设定变量、窗体和控件的值

PublicSubClearData()

LabelOut.Caption="0."

LastInput="无"

NumOperand=0

OperationSymbols=""

DecimalFlag=False

Time=0

Operation_1=""

Operation_2=""

LabelOut.BackColor=vbBlack

LabelOut.ForeColor=vbGreen

LabelOut.FontSize=12

LabelOut.AutoSize=False

Form1.KeyPreview=True

EndSub

5.3.5其他辅助设计

'**************当前显示结果置零

PrivateSubCommandCE_Click()

LabelOut.Caption="0."

DecimalFlag=False

LastInput="运算符号"

EndSub

'**************再次初始化窗体Form

PrivateSubCommandC_Click()

Form_Load

EndSub

'***************设定变量、窗体和控件的值

PublicSubClearData()

LabelOut.Caption="0."

LastInput="无"

NumOperand=0

OperationSymbols=""

DecimalFlag=False

Time=0

Operation_1=""

Operation_2=""

LabelOut.BackColor=vbBlack

LabelOut.ForeColor=vbGreen

LabelOut.FontSize=12

LabelOut.AutoSize=False

Form1.KeyPreview=True

EndSub

'***************初始化窗体,设置变量及参数状态

'(本程序目前未使用菜单项功能,如工具、帮助、编辑;运行时可以用箭头键来调整默认的按钮,进而可用Enter键来按下它)

PrivateSubForm_Load()

CallClearData

EndSub

第六章调试分析过程描述

6.1利用vb的调试进行

1.做逐语句调试

没有问题

2.做逐过程分析

分析出来没有问题

6.2易错边界点调试

1.用函数1-1.2=

0点无法输出

2.用正负号转换按钮不能转换,不过简单功能能够实现不影响使用

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

当前位置:首页 > 医药卫生 > 基础医学

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

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