可视化程序设计考查办法-计算器.doc_第1页
可视化程序设计考查办法-计算器.doc_第2页
可视化程序设计考查办法-计算器.doc_第3页
可视化程序设计考查办法-计算器.doc_第4页
可视化程序设计考查办法-计算器.doc_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络教育陕西师范大学远程教育学院考查课科目可视化程序设计考查办法姓 名学 号专 业计算机应用技术批 次12年秋层 次高中起点专科学习中心知金教育上海数字化学习中心目录1 系统分析31.1 功能需求分析32 系统概要设计32.1系统功能32.2 界面设计42.3 控件属性52.4 菜单栏7第3章 代码设计83.1 变量的声明83.2 基本运算代码83.3 函数运算代码123.4 进制转换器代码16第4章 总结181 系统分析1.1 功能需求分析随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们所认识,它已进入人类社会的各个领域并发挥越来越重要的作用。计算机软件系统能够为用户提供丰富的手段。 作为计算机应用的一部分,使用计算机进行数学运算,具有着其他方式无法比拟的优点,能极大地提高运算效率,是国家科学化、信息化管理,与世界接轨的重要条件。 因此,开发一套这样的计算器软件成为很有必要的事情,在下面的各个章节中,我们将以开发一套计算器软件为例,谈谈其开发过程和其中所涉及到的问题及解决办法2 系统概要设计2.1系统功能本计算器能实现普通的数学运算,如加、减、乘、除,还能够进行平方、立方、高次幂、开平方、阶乘、常用对数、自然对数、倒数、三角函数和反三角函数运算,进制之间的转换,以及数字的保存和读取。2.2 界面设计应用Visual Basic开发工具,根据Windows计算器界面模型,修改后制作了本计算器界面,本计算器包含4个窗体。窗体Form1为科学计算器界面,命名为“科学.frm”,上面有CommandButton控件、Label控件、TextBox控件、Frame控件和OptionButton控件,布局如图2-1所示:图2-1 窗体Form1窗体Form2为进制转换器界面,命名为“转换.frm”,上面有CommandButton控件、Label控件、TextBox控件和Frame控件,布局如图2-2所示:图2-2 窗体Form2窗体From4为标准计算器界面,命名为“标准.frm”。标准计算器界面是科学计算器界面除去函数运算和进制转换器后的部分,布局如图2-3所示:图2-3 窗体Form4窗体Form5为关于界面,仅注明了软件的作者和制作日期,命名为“关于.frm”。2.3 控件属性窗体Form1中对象的属性设置如下表所示:表2-1 窗体Form1中与基本运算有关的属性设置对象名称(Name)属性属性值窗体Form1Caption计算器文本框Text1Text空LockedTrue命令按钮cmdshuzi(09)Caption09命令按钮cmdshuzi(10)Caption.命令按钮cmdzhengfuCaption+/-命令按钮cmdyunsuan(03)Caption+ - 命令按钮cmddengyuCaption=命令按钮cmdCECaptionCE命令按钮cmdCCaptionC命令按钮cmdcunchu(02)CaptionMC MR M+标签Label1CaptionM表2-2 窗体Form1中与函数运算和进制转换有关的属性设置对象名称(Name)属性属性值命令按钮cmdhanshu(0)Captionsin命令按钮cmdhanshu(1)Captioncos命令按钮cmdhanshu(2)Captiontan命令按钮cmdhanshu(3)Captionarcsin命令按钮cmdhanshu(4)Captionarcos命令按钮cmdhanshu(5)Captionarctan命令按钮cmdhanshu(6)Captionn!命令按钮cmdhanshu(7)Captionlog命令按钮cmdhanshu(8)Captionln命令按钮cmdhanshu(9)Captionx2命令按钮cmdhanshu(10)Captionx3命令按钮cmdhanshu(12)Captionsqr命令按钮cmdhanshu(13)Caption1/x命令按钮cmdyunsuan(4)Captionxy命令按钮cmdpaiCaption框架Frame1Caption空单选按钮Option1Caption十六进制单选按钮Option2Caption十进制单选按钮Option3Caption八进制单选按钮Option4Caption二进制命令按钮Command1Caption进制转换器窗体Form2中对象的属性设置如下表所示:表2-3 窗体Form2对象的属性设置对象名称(Name)属性属性值窗体Form2Caption进制转换器框架Frame1CaptionR进制转换为十进制框架Frame2Caption十进制转换为R进制标签Label1Caption输入进制R:标签Label2Caption输入R进制数:标签Label3Caption输入十进制数:标签Label4Caption输入进制R:命令按钮Command1Caption转换为十进制命令按钮Command2Caption转换为R进制文本框Text16Text空窗体Form4为窗体Form1去掉函数运算和进制转换后的部分,窗体Form5仅用标签注明作者和日期,在此不再列表赘述。2.4 菜单栏 根据使用的的需求,使用者有时需要计算器进行复杂的函数运算,而有时只需要基本的运算,故计算器需要在科学计算器和标准计算器之间转换。科学计算器与标准计算器之间的转换以及打开进制转换器是通过菜单栏实现的。第3章 代码设计3.1 变量的声明Option Explicit 强制显式声明Dim s1 As String 以字符串存放第一个数Dim s2 As String 以字符串存放第二个数Dim t1 As String 存放临时字符串Dim t2 As String 存放存储器的字符串Dim b As Boolean 为假时,输入第一个数。为真时,输入第二个数Dim sign As Boolean 连算时,判断是否在等号后Dim p1 As Integer 存放运算符:0、1、2、3分别为加、减、乘、除Dim p2 As Integer 存放函数Dim p3 As Integer 存放存储运算3.2 基本运算代码 基本运算指数字的输入、清除,加减乘除基本运算和存储器,以下详细介绍与基本运算有关的代码。3.2.1 数字的输入 数字09及小数点执行的操作相似,均用于输入数字,且是一组相同类型的控件,具有相同的属性,故建立一控件数组。具体代码如下:Private Sub cmdshuzi_Click(Index As Integer) 输入数字 If sign Then s1 = 判断是否是连算产生的结果 If b = False Then t1 = s1 Else t1 = s2 If Index 1 And Left(t1, 1) = 0 And Mid(t1, 2, 1) . Then 删除多余的零 t1 = Right(t1, Len(t1) - 1) 第一个数字为0并且第二个字符不是小数点时去掉前面的零 End If Text1.Text = t1 If Not b Then s1 = t1 Else s2 = t1 sign = FalseEnd Sub代码中出现的函数:CStr:将任意类型装换位字符,转换时不在前面加空格。InStr:返回一个字符串在另一个字符串中第一次出现的位置。Left:从字符串左边取出n个字符。Mid:从第m位开始取出n个字符。3.2.2 正负号的改变Private Sub cmdzhengfu_Click() 改变正负号 If b = False Then t1 = s1 Else t1 = s2 If Len(t1) 0 And Left(t1, 1) = - Then t1 = Right(t1, Len(t1) - 1) 去掉负号 Else t1 = - & t1 添加负号 End If Text1.Text = t1 If Not b Then s1 = t1 Else s2 = t1End Sub3.2.3 基本运算的实现将加、减、乘、除四命令按钮定义为一控件数组,使用select case来判断计算器的使用者选择的是哪种运算。具体代码如下:Private Sub cmdyunsuan_Click(Index As Integer) 基本运算,判断运算符,是否进行连算 p1 = Index If Len(Trim(s1) 0 And Len(Trim(s2) 0 Then Call cmddengyu_Click 连算时调用 End If If Len(Trim(s1) 0 And Len(Trim(s2) = 0 Then 输入第二个数 b = True End If If Len(Trim(s1) = 0 Then 输入第一个数 b = False End If sign = FalseEnd SubPrivate Sub cmddengyu_Click() 计算结果 If Len(Trim(s1) = 0 Then b = False Exit Sub 第一个数还未输入,退出 End If Dim ys1 As Double Dim ys2 As Double ys1 = Val(s1) 将字符型改为数值型进行运算 ys2 = Val(s2) Select Case p1 Case 0 加 Text1.Text = ys1 + ys2 Case 1 减 Text1.Text = ys1 - ys2 Case 2 乘 Text1.Text = ys1 * ys2 Case 3 除 If ys2 = 0 Then MsgBox 除数不能为零。, 16, 出错提醒 Exit Sub Else Text1.Text = ys1 / ys2 End If Case 4 高次幂运算 Text1.Text = ys1 ys2 End Select s1 = Text1.Text 将运算结果作为第一个数 s2 = b = False sign = TrueEnd Sub代码中出现的函数:Trim:去掉字符串的前导空格和末尾空格。Len:返回字符串中字符数量。3.2.4 清除数据清除数据有两个按钮:C和CE。点击按钮C时,计算器复位,文本框中显示的数据和计算器中所有的运算数据全部归零。而点击按钮CE时,仅是清除计算器文本框中显示的数字,用于输入错误时重新输入数据。这两个按钮的具体代码如下:Private Sub cmdC_Click() 清除所有数据 t1 = t2 = s1 = s2 = Text1.Text = End SubPrivate Sub cmdCE_Click() 仅清除text1中的数据 If b = False Then s1 = 清除刚刚输入的第一个数 Else s2 = 清除刚刚输入的第二个数 End If t1 = Text1.Text = End Sub3.2.5 存储器 当存储器中存有数据时,Label中的M显示。具体代码如下:Private Sub cmdcunchu_Click(Index As Integer) 存储器 Dim cc1 As Double Dim cc2 As Double p3 = Index Select Case p3 Case 0 清除存储器的数据 t2 = Label1.Visible = False Case 1 If t2 Then 显示存储器存储的数据 Text1.Text = t2 s1 = t2 b = True sign = True Label1.Visible = True End If Case 2 cc1 = Val(t2) cc2 = Val(Text1.Text) + cc1 t2 = cc2 Label1.Visible = True s1 = s2 = b = False End SelectEnd Sub3.3 函数运算代码函数运算包括三角函数、幂、开方、倒数、对数等运算。其中,高次幂运算(xy)与加减乘除运算类似,列入控件数组cmdyunsuan。其他的为另一控件数组,名为cmdhanshu,仍然使用select case来判断计算器的使用者选择的是哪种运算。具体代码如下:Private Sub cmdhanshu_Click(Index As Integer) 进行函数运算 Dim hs1 As Single 存放输入的数(涉及到三角函数运算时,此数值为角度) Dim hs2 As Single 存放将角度转换为弧度后的数值 Dim hs3 As Single 中间量 Dim hs4 As Single 存放运算结果(涉及到三角函数运算时,此数值为角度) Dim int1 As Integer 存放进行阶乘运算的整数 s1 = s2 = hs1 = Val(Text1.Text) hs2 = hs1 * 3.14159265358979 / 180 将角度转换为弧度 p2 = Index Select Case p2 Case 0 正弦 hs4 = Sin(hs2) Text1.Text = hs4 Case 1 余弦 hs4 = Cos(hs2) Text1.Text = hs4 Case 2 正切 hs4 = Tan(hs2) Text1.Text = hs4 Case 3 反正弦 If hs1 1 Or hs1 1 Or hs1 -1 Then MsgBox 数据超出反余弦函数的定义域,请重新输入。, 16, 出错提醒 Exit Sub ElseIf hs1 = -1 Then Text1.Text = 180 ElseIf hs1 = 1 Then Text1.Text = 0 Else hs3 = Atn(-hs1 / Sqr(-hs1 * hs1 + 1) + 2 * Atn(1) hs4 = hs3 * 180 / 3.14159265358979 Text1.Text = hs4 End If Case 5 反正切 hs3 = Atn(hs1) hs4 = hs3 * 180 / 3.14159265358979 Text1.Text = hs4 Case 6 阶乘 int1 = Int(hs1) 返回整数部分,进行阶乘运算 hs4 = jiecheng(int1) Text1.Text = hs4 Case 7 常用对数 If hs1 = 0 Then MsgBox 数据不符合对数函数的定义域,请重新输入。, 16, 出错提醒 Exit Sub Else hs4 = Log(hs1) / Log(10) Text1.Text = hs4 End If Case 8 自然对数 If hs1 = 0 Then MsgBox 数据不符合对数函数的定义域,请重新输入。, 16, 出错提醒 Exit Sub Else hs4 = Log(hs1) Text1.Text = hs4 End If Case 9 平方 hs4 = hs1 * hs1 Text1.Text = hs4 Case 10 立方 hs4 = hs1 3 Text1.Text = hs4 Case 12 开平方 If hs1 0 Then MsgBox 被开方数不能为负数,请重新输入。, 16, 出错提醒 Exit Sub Else hs4 = Sqr(hs1) Text1.Text = hs4 End If Case 13 求倒数 If hs1 = 0 Then MsgBox 0没有倒数,请重新输入。, 16, 出错提醒 Exit Sub Else hs4 = 1 / hs1 Text1.Text = hs4 End If End Select s1 = Text1.Text s2 = b = False sign = TrueEnd SubPrivate Function jiecheng(n As Integer) As Long 定义n!的函数 Dim i As Integer, f As Long i = 1 f = 1 Do f = f * i i = i + 1 Loop While i n + 1 jiecheng = fEnd Function进行三角函数运算时要注意角度值和弧度制的转换,进行反三角函数运算时应用了数学公式,进行阶乘运算时使用了函数过程的调用。3.4 进制转换器代码数制转换就是将一个十进制整数m换成R(二、八、十、十六)进制字符串,或把一个R进制数转换为一个十进制整数m。十进制转换为R进制的算法:将m不断除R取余数,直到商为零,以反序得到余数结果,则该数即为转换结果。R进制转换为十进制的算法:将R进制数的每位的数码乘以该位上的位权并加和,即可得到对应的十进制数。进制转换器的具体代码如下:Private Function todec(ByVal idec As String, ByVal ibase As Integer) As Integer Dim i As Integer, s As String * 1, Y As Integer Y = 0 For i = 1 To Len(idec) s = Mid(idec, i, 1) Select Case s Case 0 To 9 Y = Y + Val(s) * ibase (Len(idec) - i) Case A To F Y = Y + (Asc(s) - 55) * ibase (Len(idec) - i) End SelectNext i todec = Y En

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论