计算器报告书VB.docx
《计算器报告书VB.docx》由会员分享,可在线阅读,更多相关《计算器报告书VB.docx(45页珍藏版)》请在冰豆网上搜索。
计算器报告书VB
河北联合大学
《软件设计基础(VB)》
课程设计报告
设计名称:
简易科学计算器
姓名:
学号:
----
专业班级:
-----
学院:
-----
设计时间=======
设计地点:
学校机房
成绩:
指导教师评语:
指导教师签字:
年月日
目录
1.课程设计目的
2.课程设计任务与要求
3.课程设计说明书
4.课程设计成果
5.程序调试过程
6.设计问题的不足和改进方案
7.课程设计心得
8.附录
9.参考文献
1.课程设计目的
《软件设计基础(VB)》课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖VB的知识点,又接近工程实际需要。
目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握VB这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。
2.课程设计任务与要求:
要求:
本次课程设计利用《软件设计基础(VB)》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。
要求:
1、对系统进行功能需求分析
2、设计合理的数据结构和系统框架
3、界面设计美观、清楚、合理
4、编程简练,程序功能齐全,能正确运行
5、具有一定的创新性
6、说明书、流程图要清楚
7、课题完成后必须按要求提交课程设计报告
任务:
1能够完成数值常数的四则运算及其他函数的求值运算包括sin,cos,tan,exp,log,ln,sqr,1/x,以及常数e和园周率π。
2支持键盘快捷运算(仅要求数字及运算符)。
3因为控件数目较多,要求采用控件数组,以减少事件处理的复杂程度,使程序简洁高效。
4出错处理:
操作数如果不符合数学上的定义,应该给出错误信息。
例:
0做除数,负数或0做真数等情况。
3.课程设计说明书
功能描述
1此程序增加了一个Form2窗体。
当在Form1上点击“优先级”按钮时弹出Form2窗体,以实现优先级运算,当在Form2上点击“简易科学”按钮时弹出Form1窗体,以实现简易科学计算
2可以按照题目要求进行数值的四则运算及其他特殊函数的运算。
3五个存储键可以实现数值的存取。
4在Form1窗体中支持键盘快捷运算。
5ON按钮可以进行初始化,清除内存中的数,OFF退出,CE清除显示。
6出错时有提示信息
⑵概要设计
主要写模块说明,模块结构图,系统流程图(例N-S流程图)(五号,宋体)
模块结构图:
根据功能分析,建立系统的体系结构,即将整个系统分解成若干子模块,用框图表示各功能模块之间的接口关系(如下图)。
简易文件系统功能框图
⑶详细设计
总体流程图:
各功能模块流程图:
1Selectcase流程图
2
控件数组的流程图
⑷代码实现
详细说明各功能模块的实现过程,所用到的算法、技巧等(附上代码)。
如:
本系统总共10个窗体:
form1~form10详细如下:
form1、首页
作用:
“进入应用程序”。
所用控件:
5个标签,4个时钟。
设计思路:
用时钟控制label1、2,3,4的运动。
单击label1,2,5和命令选择器可进入后面窗体,label3.无链接窗体,无label4。
详细内容:
属性较特殊的需要说明。
代码如下:
本系统总共两个窗体Form1和Form2
Form1
作用:
实现简易科学计算及一些特殊函数的计算。
所用控件:
40个按钮,1个文本框
设计思路:
①定义e时调用Function函数;
②计算三角函数时用n*3.14/180(n表示数字)进行弧度和角度的转换;
③计算对数时用公式b=Log(a)/Log(10);
④四则运算调用calc(op1,op,op2)进行计算;
⑤符号和存储键利用控件数组实现
过程代码:
Form1的代码:
Click事件的代码:
Dimn1AsInteger,n2AsInteger,n3AsInteger,n4AsInteger,n5AsInteger
Dimm1AsDouble,m2AsDouble,m3AsDouble,m4AsDouble,m5AsDouble'五个存储键对应的存储数
DimiAsInteger,pAsInteger,op(100)AsDouble,jAsInteger,kAsInteger
DimmAsInteger,nAsInteger,uAsInteger,vAsInteger,wAsInteger
Functione(ByValoAsInteger,tAsDouble)AsDouble'定义e函数
e=1:
t=1
Foro=1To100
t=t/o:
e=e+t
Ift<1E-24Then
ExitFor
EndIf
Nexto
EndFunction
PrivateSubCommand1_Click(IndexAsInteger)'设定各个按纽的功能
DimpiAsDouble,tempAsDouble,niAsDouble,kiAsDouble
DimaAsDouble,bAsDouble,cAsDouble
IfIndex=18Then'索引初始化按钮ON
n1=0:
n2=0:
n3=0:
n4=0:
n5=0'五个存储区都归零
Text1.Text=0'显示区归零
i=0:
j=0:
k=1:
m=1:
n=1:
v=0:
u=0:
w=0
op(u)=Text1.Text
EndIf
IfIndex=17Then'索引结束按钮OFF
End
EndIf
IfIndex=16Then'索引清除按钮CE
Text1.Text=0
i=0:
j=0:
k=1:
m=1:
n=1:
v=0:
u=0:
w=0
op(u)=Text1.Text
EndIf
IfIndex=15Then'索引等号
Ifw=1Then
Text1.Text=Text1.Text'x显示符号
Else
Ifj=1Then'j=1代表加
Text1.Text=op(u-1)+op(u)
ElseIfj=2Then
Text1.Text=op(u-1)-op(u)'j=2代表减
ElseIfj=3Then
Text1.Text=op(u-1)*op(u)'j=3代表乘
ElseIfj=4Then
Text1.Text=op(u-1)/op(u)'j=4代表除
EndIf
u=u+1'运算数下标的累加
v=0'防止连续连续运算时出现错误
EndIf
EndIf
IfIndex=1Then'索引数字1
Ifk=0Then
Text1.Text=1
Else
Ifm=1Then'小数点前有一位数
Text1.Text=Text1.Text*10+1
Else
Text1.Text=Text1.Text+1*10^(-n)
n=n+1'小数点位数的累加
EndIf
EndIf
k=k+1
op(u)=Text1.Text'初值赋给op(u)
w=0:
v=1
EndIf
IfIndex=2Then'同索引数字1
Ifk=0Then
Text1.Text=2
Else
Ifm=1Then
Text1.Text=Text1.Text*10+2
Else
Text1.Text=Text1.Text+2*10^(-n)
n=n+1
EndIf
EndIf
k=k+1
op(u)=Text1.Text
w=0:
v=1
EndIf
IfIndex=3Then'同索引数字1
Ifk=0Then
Text1.Text=3
Else
Ifm=1Then
Text1.Text=Text1.Text*10+3
Else
Text1.Text=Text1.Text+3*10^(-n)
n=n+1
EndIf
EndIf
k=k+1
op(u)=Text1.Text
w=0:
v=1
EndIf
IfIndex=4Then'同索引数字1
Ifk=0Then
Text1.Text=4
Else
Ifm=1Then
Text1.Text=Text1.Text*10+4
Else
Text1.Text=Text1.Text+4*10^(-n)
n=n+1
EndIf
EndIf
k=k+1
op(u)=Text1.Text
w=0:
v=1
EndIf
IfIndex=5Then'同索引数字1
Ifk=0Then
Text1.Text=5
Else
Ifm=1Then
Text1.Text=Text1.Text*10+5
Else
Text1.Text=Text1.Text+5*10^(-n)
n=n+1
EndIf
EndIf
k=k+1
op(u)=Text1.Text
w=0:
v=1
EndIf
IfIndex=6Then'同索引数字1
Ifk=0Then
Text1.Text=6
Else
Ifm=1Then
Text1.Text=Text1.Text*10+6
Else
Text1.Text=Text1.Text+6*10^(-n)
n=n+1
EndIf
EndIf
k=k+1
op(u)=Text1.Text
w=0:
v=1
EndIf
IfIndex=7Then
Ifk=0Then
Text1.Text=7
Else
Ifm=1Then
Text1.Text=Text1.Text*10+7
Else
Text1.Text=Text1.Text+7*10^(-n)
n=n+1
EndIf
EndIf
k=k+1
op(u)=Text1.Text
w=0:
v=1
EndIf
IfIndex=8Then'同索引数字1
Ifk=0Then
Text1.Text=8
Else
Ifm=1Then
Text1.Text=Text1.Text*10+8
Else
Text1.Text=Text1.Text+8*10^(-n)
n=n+1
EndIf
EndIf
k=k+1
op(u)=Text1.Text
w=0:
v=1
EndIf
IfIndex=9Then'同索引数字1
Ifk=0Then
Text1.Text=9
Else
Ifm=1Then
Text1.Text=Text1.Text*10+9
Else
Text1.Text=Text1.Text+9*10^(-n)
n=n+1
EndIf
EndIf
k=k+1
op(u)=Text1.Text
w=0:
v=1
EndIf
IfIndex=0Then'同索引数字1
Ifk=0Then
Text1.Text=0
Else
Ifm=1Then
Text1.Text=Text1.Text*10+0
Else
Text1.Text=Text1.Text+0*10^(-n)
n=n+1
EndIf
EndIf
k=k+1
op(u)=Text1.Text
w=0:
v=1
EndIf
IfIndex=10Then'索引小数点
m=-1
EndIf
IfIndex=11Then'索引加号
Ifv=0Then
u=u-1
EndIf
Ifj=1Then
Text1.Text=op(u-1)+op(u)
ElseIfj=2Then
Text1.Text=op(u-1)-op(u)
ElseIfj=3Then
Text1.Text=op(u-1)*op(u)
ElseIfj=4Then
Text1.Text=op(u-1)/op(u)
EndIf
Ifu=-1Then
u=0
EndIf
k=0
op(u)=Text1.Text
i=i+1:
j=1:
m=1:
n=1:
u=u+1:
v=0
EndIf
IfIndex=12Then'索引减号
Ifv=0Then
u=u-1
EndIf
Ifj=1Then
Text1.Text=op(u-1)+op(u)
ElseIfj=2Then
Text1.Text=op(u-1)-op(u)
ElseIfj=3Then
Text1.Text=op(u-1)*op(u)
ElseIfj=4Then
Text1.Text=op(u-1)/op(u)
EndIf
Ifu=-1Then
u=0
EndIf
k=0
op(u)=Text1.Text
j=2:
i=1+i:
m=1:
n=1:
u=u+1:
v=0
EndIf
IfIndex=13Then'索引乘号
Ifv=0Then
u=u-1
EndIf
Ifj=1Then
Text1.Text=op(u-1)+op(u)
ElseIfj=2Then
Text1.Text=op(u-1)-op(u)
ElseIfj=3Then
Text1.Text=op(u-1)*op(u)
ElseIfj=4Then
Text1.Text=op(u-1)/op(u)
EndIf
Ifu=-1Then
u=0
EndIf
k=0
op(u)=Text1.Text
j=3:
i=i+1:
m=1:
n=1:
u=u+1:
v=0
EndIf
IfIndex=14Then'索引除号
Ifv=0Then
u=u-1
EndIf
Ifj=1Then
Text1.Text=op(u-1)+op(u)
ElseIfj=2Then
Text1.Text=op(u-1)-op(u)
ElseIfj=3Then
Text1.Text=op(u-1)*op(u)
ElseIfj=4Then
Text1.Text=op(u-1)/op(u)
EndIf
Ifu=-1Then
u=0
EndIf
k=0
op(u)=Text1.Text
j=4:
i=i+1:
m=1:
n=1:
u=u+1:
v=0
EndIf
IfIndex=19Then'索引sin
a=Text1.Text
b=Sin(a*3.14/180)
Text1.Text=b
u=u+1:
v=0:
w=1
EndIf
IfIndex=20Then'索引cos
a=Text1.Text
b=Cos(a*3.14/180)
Text1.Text=b
u=u+1:
v=0:
w=1
EndIf
IfIndex=21Then'索引tan
a=Text1.Text
b=Tan(a*3.14/180)
Text1.Text=b
u=u+1:
v=0:
w=1
EndIf
IfIndex=22Then'索引exp
a=Text1.Text
b=Exp(a)
Text1.Text=b
u=u+1:
v=0:
w=1
EndIf
IfIndex=24Then'索引ln
IfText1.Text=0Then
MsgBox"0不能为真数"
ElseIfText1.Text<0Then
MsgBox"负数不能为真数"
Else
a=Text1.Text
b=Log(a)
Text1.Text=b
EndIf
u=u+1:
v=0:
w=1
EndIf
IfIndex=23Then'索引log
a=Text1.Text
IfText1.Text=0Then
MsgBox"0不能坐真数"
ElseIfText1.Text<0Then
MsgBox"负数不能坐真数"
Else
b=Log(a)/Log(10)
Text1.Text=b
EndIf
u=u+1:
v=0:
w=1
EndIf
IfIndex=25Then'索引sqr
a=Text1.Text
Ifa<0Then
MsgBox"负数不能开平方"
Else
b=Sqr(a)
Text1.Text=b
u=u+1:
v=0:
w=1
EndIf
EndIf
IfIndex=26Then'索引1/x
IfText1.Text=0Then
MsgBox"分母不能为0"
Else
a=Text1.Text
b=1/a
Text1.Text=b
EndIf
u=u+1:
v=0:
w=1
EndIf
IfIndex=28Then
'pi=2'求圆周率的函数
'temp=2
'ni=1
'Do
'pi=temp
'ki=2*ni
'temp=temp*(ki/(ki-1))*(ki/(ki+1))
'ni=ni+1
'LoopUntilAbs(pi-temp)<0.000000000000001
'text1.text=pi
Ifk=0Then
Text1.Text=3.1415926
Else
Ifm=1Then
Text1.Text=Text1.Text*10+3.1415926
Else
Text1.Text=Text1.Text+3.1415926*10^(-n)
n=n+1
EndIf
EndIf
k=k+1
op(u)=Text1.Text
w=0:
v=1
EndIf
IfIndex=29Then'索引e
Ifk=0Then
Text1.Text=2.732
Else
Ifm=1Then
Text1.Text=Text1.Text*10+2.732
Else
Text1.Text=Text1.Text+2.732*10^(-n)
n=n+1
EndIf
EndIf
k=k+1
op(u)=Text1.Text
w=0:
v=1
EndIf
IfIndex=31Then'索引m1
Ifn1=0Then
m1=Text1.Text
Else
Text1.Text=m1
op(u)=Text1.Text
EndIf
n1=n1+1
EndIf
IfIndex=32Then'索引m2
Ifn2=0Then
m2=Text1.Text
Else
Text1.Text=m2
op(u)=Text1.Text
EndIf
n2=n2+1
EndIf
IfIndex=33Then'索引m3
Ifn3=0Then
m3=Text1.Text
Else
Text1.Text=m3
op(u)=Text1.Text
EndIf
n3=n3+1
EndIf
IfIndex=30Then'索引m4
Ifn4=0Then
m4=Text1.Text
Else
Text1.Text=m4
op(u)=Text1.Text
EndIf
n4=n4+1
EndIf
IfIndex=27Then'索引m5
Ifn5=0Then
m5=Text1.Text
Else
Text1.Text=m5
op(u)=Text1.Text
EndIf
n5=n5+1
EndIf
EndSub
PrivateSubCommand2_Click()
Form1.Hide
Form2.Show
EndSub
PrivateSubForm_Load()
n1=0:
n2=0:
n3=0:
n4=0:
n5=0'五个存储数存储或输出的条件
Text1.Text=0'对各个值和循环条件进行初始化
i=0:
j=0:
k=1:
m=1:
n=1:
v=0:
u=0:
w=0'j的值对应相应的运算符,'m是判断