VB计算器项目算法结构分析

还是做得不太好,多多指教啊,关注这方面的

初始化:显示屏数字【dataout.Caption】为0

1.第一个因数的提取

当是第一次点击数字时(程序初始化时,结果已经计算出准备下一次时,清零键按下时)

--【dataout.Caption】=””

--【dataout.Caption】=dataout.Caption& Index

解释:此处的目的是:点击后初始的显示屏数字变为点击的数字,之后点击的进行拼接

当不是第一次点击时

--【dataout.Caption】=dataout.Caption& Index

需要考虑的问题是:此处计算机工作标准resflag是未完成的

此出预先解释下,数字0-9,符号+-*/是两个数字数组按钮控制的,关于如何做出来,以数字0-9按钮为例:

这 10 个按钮使用的名称都是num,

只是 Index 属性不同,就好象一个数组,创立一组按钮的方法是,先在窗体上建

立一个按钮(num),然后在 num上击鼠标右键,选择复制(Copy),

然后在窗体上任意部位击右键,选择粘贴(Paste),系统会提示是否创建控件组,

选择“是”,重复上面步骤,直至创立 10个按钮为止。

2关于符号的提取

符号数组sign对应的每一个元素都有唯一的Index

当触发时,完成两件事:

1.情况:需考虑【dataout.Caption】的非法性,

行为:将【dataout.Caption】赋值给全局变量Num1,需要字符串到数值的转换,有 
value,clng,cint各种。考虑到小数的计算,使用了value

办法:【dataout.Caption】!=“”

2.情况:需考虑当+-*/点击多次时

行为:将每个符号对应的index赋值给全局变量signope(rate)

办法:当点击多次时,直接不管他,使用exit sub

3.关于结果的结算

利用”=”按钮的点击操作

3.1对第二个因数的取值

首先解释为什么上图中为什么在将第一个因数提取后将【dataout.Caption】清空?

因为这个版本的计算器是利用显示屏的字符串来转换为浮点型数字来确定的,如果为了   效果将+-*/(其他符号如(),sin,con,tan等)显示在屏上的话,第二个因数很难提取, 迄今还未想好,(大神看到的话,提示下,谢啦)不得不用这种方法来提取

Eg:     Num2=val(dataout.Caption);

3.2要考虑该操作是在计算状态下的操作,否则结果已经计算完成,当你不停点击”=”    按钮,内存中的因数:num1和Num2仍不停操作

解决办法:利用resflag标志位:

If  not resflag  then

计算

Else

显示屏显示上一个计算结果

3.2根据全局变量符号标志来确定+-*/操作

在符号按钮数组中,利用Index(是不是和上2类似)确定,使用VB中的select语句。

问题1:考虑分母为0的情况

办法:在是除法且分母为零时,特别输出为“无穷”

问题2:当只用一个因数,却按下一个符号时,令显示屏显示第一个因数

当直接按下=按钮,令显示屏显示上一个结果

注意的地方:结果计算完成后、清零按钮后,就要像程序刚启动时思考了:

计算完成后的状态改变标志位:计算完成标志resflag清0,小数点标志清0,第一个数标志清0

额外按钮,直接贴代码吧,晕了

Backspace按钮:

清零C按钮

小数点按钮.

避免多次出现小数点

时间: 2024-08-14 16:14:06

VB计算器项目算法结构分析的相关文章

Android项目目录结构分析

项目结构如下图所示,使用不同sdk版本建立的项目项目结构有所不同,总体相同,高版本增加了一些包结构 1.src 和java项目一样src存放项目源代码 2.gen 自动生成,其中R.java文件也是自动生成,ADT 插件自动根据res中文件的变化修改R.java文件,将res中的资源对应一个16进制地址,用于在在代码中引用到这些资源文件. 3.bin 项目编译输出的目录,里面有apk文件 4.res 存放资源文件 a. drawable存放图片 (1)drawable-hdpi里面存放高分辨率的

VS2010下创建的VB.NET项目打包发布安装包的流程

VS2010下创建的VB.NET项目打包发布安装包的流程  关于release 和debug 版本的问题: Visual   Studio   项目对程序的发布(Release)和调试(Debug)版本分别有单独的配置.生成调试版本的目的是用于调试,而生成发布版本的目的是用于版本的最终发布. 如果在Visual Studio 中创建程序,Visual Studio将自动创建这些配置并设置适当的默认选项和其他设置.在默认设置下: 程序的“调试”配置用全部符号调试信息编译,不进行优化.(优化会使调试

《团队-科学计算器-项目总结》

团队项目名称:科学计算器 团队名称: 加油啊 团队队长:黄妍 团队成员:鞠艳,李艾哲,吕爽,马璐,陶丽爽 经过了半学期,<现代软件工程-构建之法>这门课程即将接近尾声,在这半学期里,我们从个人组成了一个名为"加油啊"团队,我们从刚开始的手足无措到现在的游刃有余.在这个团队中,我们分工明确,互相合作,共同完成. 目前的计算器有标准型和科学型,我们团队做的项目是科学计算器,它是电子计算器的一种,可进行乘方.开方.指数.对数.三角函数.统计等方面的运算,又称为函数计算器.科学计算

Qt下的简易计算器项目

Qt是一个比较强大的跨平台软件,首次认真学习Qt就拿计算机项目来入门. 在Qt中创建好项目,在设计模式下利用Qt的表格布局,设计好界面 其中可以利用样式表改动界面属性 利用Qt中的信号与槽编写功能程序 1 #include "mainwindow.h" 2 #include "ui_mainwindow.h" 3 4 MainWindow::MainWindow(QWidget *parent) : 5 QMainWindow(parent), 6 ui(new U

bzoj2242: [SDOI2011]计算器 &amp;&amp; BSGS 算法

BSGS算法 给定y.z.p,计算满足yx mod p=z的最小非负整数x.p为质数(没法写数学公式,以下内容用心去感受吧) 设 x = i*m + j. 则 y^(j)≡z?y^(-i*m)) (mod p) 则 y^(j)≡z?ine(y^(i*m)) (mod p)(逆元) 由费马小定理y^(p-1)≡1 (mod p) 得 ine(y^m) = y^(p-m-1)  ine(y^(i*m)≡ine(y^((i?1)m))?y^(p-m-1)  1.首先枚举同余符号左面,用一个hash保存

VB洗牌算法产生随机数组

算法图示: 运行效果: 详细代码: Option Explicit '洗16张牌(0-15),方便用十六进制显示 Private Const CARDMAX = 15 Dim Card() As Long Private Sub 洗牌() Dim i&, l&, r&, t& l = CARDMAX For i = 0 To CARDMAX r = Rnd * l t = Card(l) Card(l) = Card(r) Card(r) = t l = l - 1 Nex

Swift开发之简单计算器项目

// //  ViewController.swift //  计算器 // //  Created by 悦兑科技 on 15/1/14. //  Copyright (c) 2015年 BSY. All rights reserved. // import UIKit class ViewController: UIViewController { var numOne = UITextField() var numTwo = UITextField() var cleanButton =

github开源项目-算法实现之路

算法编程 目录(?)[-] 挑战算法之路 Way to Algorithm 目录页 <挑战算法之路>的源代码可以从GitHub下载,网址链接:点击打开链接 也可以从GoogleCode下载,网址链接:点击打开链接 挑战算法之路 Way to Algorithm 西安交通大学计算机系 林荣彬 电子科技大学信软学院 NEWPLAN 目录页 第2版声明 ..........................................................................

团队-科学计算器-项目总结

一,目的 我们日常生活的开支,大额数字或者多倍小数的计算都需要计算器的帮助,处理数字的开方.正余弦都离不开计算器.虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格昂贵,操作不便不说,很多功能根本做不到.所以,我们可以想到设计开发一个属于自己的简单的计算器来完成我们的日常生活需求. 二,设计思路 "科学计算器 "是一个软件.整个软件程序分为三个个功能模块,一个TextView, 一个是BuTTon, 一个是监听 .其中TextView有1个显示框等TextV