实验二 等价类划分法测试用例设计与执行

实验二
实验的目的和要求:
目的:
(1)掌握等价类划分方法的步骤;
(2)扩宽测试思维;
要求:能够用等价类划分的思想设计测试用例
实验内容:
问题陈述:
简单版本:三角形问题接受三个整数a、b和c作为输入,用作三角形的边。

程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。

改进版本:三角形问题接受三个整数a、b和c作为输入,用作三角形的边。

整数a、b和c必须满足以下条件:
c1:1<=a<=200 c4: a<b+c
c2: 1<=b<=200 c5: b<a+c
c3: 1<=c<=200 c6: c<a+b
实验步骤:
一、分析问题,得出等价类列表,分析三角形问题中给出和隐含的对输入条件的要求:(1)整数(2)三个数(3)非零数(4)正数(5)两边之和大于第三边(6)等腰(7)等边,如果a 、b 、c 满足条件(1 )~ (4 ),则输出下列四种情况之一:如果不满足条件(5),则程序输出
为“非三角形”。

如果三条边相等即满足条件(7),则程序输出为“等边三角形”。

如果只有两条边相等、即满足条件(6),则程序输出为“等腰三角形”。

如果三条边都不相等,则程序输出为“一般三角形”。

二、设计测试用例
import java.io.*;
class sanj{
public static int a,b,c;
public static void main(String arg[]) throws IOException{ try{
BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in)); //接收键值System.out.println("输入三边值,每个值输入后回车"); System.out.println("请输入:");
a=Integer.valueOf(stdin.readLine());
b=Integer.valueOf(stdin.readLine());
c=Integer.valueOf(stdin.readLine());
}catch(IOException e){
System.out.println("出现异常!");
System.exit(0);
}
if(a+b<c || a+c<b || b+c<a){
System.out.println("你输入的不能构成三角形");
}
if(a==b || a==c || b==c)
{
if(a==b && b==c) System.out.println("等边三角形"); else System.out.println("等腰三角形");
}
else System.out.println("一般三角形");
}
}。

合集下载

等价类划分法设计测试用例

等价类划分法设计测试用例
测试数据:1234,8972,8972;
期望结果:输入价类设计一个测试用例,设计结果如下:
测试数据
期望结果
覆盖的无效等价类
原密码空,1234,1234
无效输入

89727654cc,1234,1234
无效输入

1234,无新密码,无新密码
无效输入

1234,89727654cc,89727654cc
无效输入

1234,897276,123456
无效输入

现用等价类划分法设计测试用例,来测试系统的“修改密码”功能。
1、划分等价类并编号,下表等价类划分的结果
输入等价类
有效等价类
无效等价类
原密码
11-6位字符
2无字符
36位以上字符
新密码
41-6位字符
5小于1位字符
6大于6位字符
再次确认
⑦与新密码一致
7与新密码不一致
2、设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、④、⑦,设计的测试用例如下:

实验二等价类划分法测试用例设计与执行

实验二等价类划分法测试用例设计与执行

实验二实验的目的和要求:目的:(1)掌握等价类划分方法的步骤;(2)扩宽测试思维;要求:能够用等价类划分的思想设计测试用例实验内容:问题陈述:简单版本:三角形问题接受三个整数a、b和c作为输入,用作三角形的边。

程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。

改进版本:三角形问题接受三个整数a、b和c作为输入,用作三角形的边。

整数a、b和c必须满足以下条件:c1:1<=a<=200 c4: a<b+cc2: 1<=b<=200 c5: b<a+cc3: 1<=c<=200 c6: c<a+b实验步骤:一、分析问题,得出等价类列表,分析三角形问题中给出和隐含的对输入条件的要求:(1)整数(2)三个数(3)非零数(4)正数(5)两边之和大于第三边(6)等腰(7)等边,如果a 、b 、c 满足条件(1 )~ (4 ),则输出下列四种情况之一:如果不满足条件(5),则程序输出为“非三角形”。

如果三条边相等即满足条件(7),则程序输出为“等边三角形”。

如果只有两条边相等、即满足条件(6),则程序输出为“等腰三角形”。

如果三条边都不相等,则程序输出为“一般三角形”。

二、设计测试用例import java.io.*;class sanj{public static int a,b,c;public static void main(String arg[]) throws IOException{ try{BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in)); //接收键值a=Integer.valueOf(stdin.readLine()); b=Integer.valueOf(stdin.readLine()); c=Integer.valueOf(stdin.readLine()); }catch(IOException e){ System.exit(0);}if(a+b<c || a+c<b || b+c<a){}if(a==b || a==c || b==c){}}}。

用等价类划分方法为该程序进行测试用例设计

用等价类划分方法为该程序进行测试用例设计

用等价类划分方法为该程序进行测试用例设计在软件测试中,测试用例设计是非常重要的一部分。

等价类划分方法是一种常用的测试用例设计方法,它可以帮助测试人员快速有效地设计测试用例,同时提高测试覆盖率和测试效率。

等价类划分方法的基本原理是将输入和输出的数据分为若干个
等价类,每个等价类中的数据具有相同的性质和功能。

在测试用例设计中,我们只需要选择每个等价类中的一个代表性数据进行测试,就可以覆盖整个等价类的测试需求。

例如,在一个登录系统中,用户名和密码都是输入数据。

我们可以将用户名和密码的输入数据分为三个等价类:有效输入、无效输入和边界输入。

有效输入是指符合要求的用户名和密码,无效输入是指不符合要求的用户名和密码,边界输入是指用户名和密码的输入达到最小和最大范围的情况。

根据等价类划分方法,我们可以选择代表性数据进行测试。

例如,我们可以选择一个有效的用户名和密码进行测试,一个无效的用户名和密码进行测试,一个边界输入的用户名和密码进行测试,这样就可以覆盖所有的测试需求。

总之,等价类划分方法是一种非常有效的测试用例设计方法,它可以帮助测试人员快速高效地设计测试用例,提高测试覆盖率和测试效率。

在实际的软件测试中,测试人员应该根据需求和输入输出特点,合理运用等价类划分方法进行测试用例设计。

- 1 -。

等价类划分法测试用例设计与执行

等价类划分法测试用例设计与执行

等价类划分法测试用例设计与执行下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!一、概述等价类划分法是一种测试用例设计方法,通过将输入数据分成等价类来设计测试用例,以达到尽可能覆盖各种情况的目的。

软件测试用例2(等价类).

软件测试用例2(等价类).
…… …… ……
两位整数加法等价类划分
划分等价类
等价类划分
设计等价类表
序号
1
功能项
两位整数加法
有效等价类
-99≤加数取值≤99
编号
2
无效等价类
加数取值<-99 加数取值>99
编号
1 3
2
……
……
……
……
……
等价类划分
设计测试用例
– 为等价类表中的每一个等价类分配一个唯一的编号 – 设计一个测试用例,使它能够尽量覆盖尚未覆盖的有效等价类。 重复该操作,从而使所有有效等价类均被覆盖
如果使用单选按钮选择“性别”作为输入 值,且要求正确输入为“女”,则有效等 价类是“女”,无效等价类是“男” 。
六条确定等价类的原则4
等价类划分典型参考
4. 若已划分的某等价类中的各元素在程序中的处理方式 不同,则应将此等价类进一步划分成更小的等价类。
在两位整数加法器中,考虑到程序中可能 存在的正数和负数的处理方式不同,故对 等价类进行了进一步的细化。
等价类划分
等价类的假设
– 如果等价类中的一个测试用例能够捕获缺陷,那么选 择该等价类中的其他测试用例也能够捕获该缺陷。
– 如果等价类中的一个测试用例不能捕获缺陷,那么选 择该等价类中的其他测试用例也不能够捕获该缺陷。
六条确定等价类的原则1
等价类划分典型参考
1. 若某个输入条件说明了一个必须成立的情况,则可划 分一个有效等价类和一个无效等价类 。
等价类典型按理
等价类典型按理
测试用例设计方法
第2章:等价类
等价类划分基本概念
等价类划分就是解决如何选择适当的数据子集来 代表整个数据集的问题,通过降低测试的数目去 实现“合理的”覆盖,覆盖了更多的可能数据, 以发现更多的软件缺陷。输入的整数值在-99到99

等价类划分实验指导书

等价类划分实验指导书

等价类划分实验指导书1.实验目的掌握等价类划分的测试用例设计方法。

2.实验环境硬件:PC机操作系统:Windows测试工具:TestPlatform3.实验内容1.实验一:登录功能等价类划分在各种输入条件下,测试程序的登录对话框功能。

用户名和密码的规则如下:1)用户名长度为6至10位(含6位和10位)2)用户名由字符(a-z、A-Z)和数字(0-9)组成3)不能为空、空格和特殊字符4)密码规则同用户名规则2.实验二:三角形程序等价类划分一个程序读入3个整数,把这三个数值看作一个三角形的3条边的长度值。

这个程序要打印出信息,说明这个三角形是不等边的、是等腰的、还是等边的。

针对该程序使用等价类划分法设计测试用例。

4.实验步骤1.使用自己的帐号密码登陆TestPlatform,见下图:2.选中实验对应的项目目录,在项目管理中新增项目,项目标识和项目名称均为“实验名-学生姓名”。

安全设定选择项目仅对特定的部门及人员公开,并在“请选择公开的人员”中选择老师对其公开。

见下图:3.选中新建项目下的默认版本,在需求管理中新增需求(如实验一新增的需求为登录)。

见下图:4.在测试设计中切换“测试设计源数据”为“需求”,则可以看到新增的需求项。

见下图:5.选中新增的需求项,选择域测试法设计用例。

见下图:6.在参数管理中增加输入,选中输入增加等价类,选中等价类增加样点(常用值或者边界值)。

见下图:7.勾选需要使用的输入,点击下一步。

见下图:8.分析结果中将不需要的测试用例前的勾去除,点击完成。

见下图:9.在测试用例列表中可以看到刚才设计好的测试用例。

见下图:5.实验要求1.等价类划分要完整,不能只考虑一个有效等价类和一个无效等价类。

2.选取样点时多从用户实际使用角度考虑常用值和边界值。

等价类划分法测试用例的设计与实现

引用:
[1] 范明红,浦云明,汪志华 . 等价类测试与划分研究 [J]. 计算机技术与发展 .2009(07).
[2] 浦云明,陈黎震 . 基于划分的等价类测试 [J]. 计算机工 程与设计 .2009(19).
[3] 李刚,姚红 . 软件测试用例设计的方法与实现 [J]. 大众 科技 .2012(01).
b、设计有效等价类需要的测试用例。为覆盖①、⑤、⑧三 个有效等价类,可以设计一个共用的测试用例 ;
c、为每一个无效等价类至少设计一个测试用例。 实例 4 保险公司计算保费费率的程序 某保险公司的人寿保险的保费计算方式为 :投保额 × 保险 费率其中,保险费率依点数不同而有别,10 点及 10 点以上保险 费率为 0.6%,10 点以下保险费率为 0.1% ;而点数又是由投保人 的年龄、性别、婚姻状况和抚养人数来决定。 a、分析程序规格说明中给出和隐含的对输入条件的要求, 列出等价类表(包括有效等价类和无效等价类)。 ■年龄 :一位或两位非零整数,值的有效范围为 1~99 ■性别 :一位英文字符,只能取值‘M’或’F’ ■婚姻 :字符,只能取值‘已婚’或‘未婚’ ■抚养人数 :空白或一位非零整数(1~9) ■点数 :一位或两位非零整数,值的范围为 1~99 b、根据(1)中的等价类表,设计能覆盖所有等价类的测试 用例。 4 总结 本文讨论了如何使用等价类划分法来设计测试用例。
(1)按照区间划分在输入条件规定了取值范围或值的个数的 情况下,可以确定一个有效等价类和两个无效等价类。
例 :程序输入条件为小于 100 大于 10 的整数 x,则有效等价 类为 10 < x < 100,两个无效等价类为 x ≤ 10 和 x ≥ 100。
(2)按照数值划分在规定了一组输入数据(假设包括 n 个输 入值),并且程序要对每一个输入值分别进行处理的情况下,可 确定 n 个有效等价类(每个值确定一个有效等价类)和一个无效 等价类(所有不允许的输入值的集合)。

等价类划分法测试用例

等价类划分法测试用例
等价类划分法是一种常用的黑盒测试用例设计方法,用于确定测试用例的输入域的子集。

这种方法主要基于对输入条件的分类,将所有可能的输入条件划分为若干个等价类,然后从每个等价类中选取一个具有代表性的值进行测试。

以下是等价类划分法的测试用例设计步骤:
1.确定输入条件:首先需要明确测试对象的功能和输入条件,确定测试用例的输入范围和类型。

2.确定等价类:根据输入条件的约束和取值范围,将所有可能的输入划分为若干个等价类。

等价类是指具有相同测试意义的输入条件,它们在测试中具有相同的效果。

3.编写等价类表:列出所有的等价类,包括有效等价类和无效等价类。

有效等价类是指符合程序规格说明要求的输入条件,而无效等价类则是指不符合规格说明要求的输入条件。

4.设计测试用例:针对每个等价类,设计一个或多个测试用例,使得每个测试用例都能覆盖该等价类的所有输入条件。

对于有效等价类,需要设计合理的输入数据来验证程序的正常工作情况;对于无效等价类,需要设计异常的输入数据来验证程序的容错性和错误处理能力。

5.执行测试:按照设计的测试用例进行测试,记录测试结果并进行分析。

如果测试结果与预期不符,需要对程序进行修改和优化。

需要注意的是,在使用等价类划分法设计测试用例时,需要遵循完备性、互斥性和代表性的原则。

完备性是指测试用例覆盖了所有可能的输入条件;互斥性是指每个等价类中的输入条件是唯一的;代表性是指每个等价类的代表值具有相似的测试意义。

二:测试用例设计白皮书--等价类划分方法

测试用例设计白皮书--等价类划分方法一.方法简介1.定义是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。

该方法是一种重要的,常用的黑盒测试用例设计方法。

2.划分等价类:等价类是指某个输入域的子集合。

在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。

等价类划分可有两种不同的情况:有效等价类和无效等价类。

1)有效等价类是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。

利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。

2)无效等价类与有效等价类的定义恰巧相反。

无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。

对于具体的问题,无效等价类至少应有一个,也可能有多个。

设计测试用例时,要同时考虑这两种等价类。

因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。

3.划分等价类的标准:1)完备测试、避免冗余;2)划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;3)并是整个集合:完备性;4)子集互不相交:保证一种形式的无冗余性;5)同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到"相同的执行路径"。

4.划分等价类的方法1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。

如:输入值是学生成绩,范围是0~100;2)在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和一个无效等价类;3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。

等价类划分法来测试

一、实验目的用等价类划分法、边界值分析法等来测试分析实例。

二、实验内容(一)、将ppt上所讲的三角形例子用程序语言实现,并按照等价类法设计测试用例,并对你的程序进行测试,分析测试结果(按步骤写出完整的过程)。

(二)、实现一个小的计算器程序,只需要完成加、减、乘、除运算,用等价类法设计测试用例,进行测试并分析。

然后假设运算数值的范围在0到100之间,使用边界值法设计测试用例,并测试(按步骤写出完整的过程)。

三、实验环境Windows XP系统、Microsoft Visual Studio 2008四、实验步骤1、三角形:程序:using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1{class triangle{public bool tiaojian(double a, double b, double c){if ((a >= 1 & a <= 100) & (b >= 1 & b <= 100) & (c >= 1 & c <= 100)){Console.WriteLine("边的取值没有超出允许范围");if (a + b > c & b + c > a & a + c > b){Console.WriteLine("三边满足组成三角形");return true;}else{Console.WriteLine("非三角形");return false;}}else{if (a < 1 | a > 100)Console.WriteLine("a边的取值超出允许范围");}else if (b < 1 | b > 100){Console.WriteLine("b边的取值超出允许范围");}else if (c < 1 | c > 100){Console.WriteLine("c边的取值超出允许范围");}return false;}}static void Main(string[] args){Program gh = new Program();double a = 0, b = 0, c = 0;Console.WriteLine("请输入三角形的边长a");a = Convert.ToDouble(Console.ReadLine());Console.WriteLine("请输入三角形的边长b");b = Convert.ToDouble(Console.ReadLine());Console.WriteLine("请输入三角形的边长c");c = Convert.ToDouble(Console.ReadLine());if (gh.tiaojian(a, b, c)){if (a == b & a == c & b == c){Console.WriteLine("等边三角形");}else if ((a == b & b != c) | (a == c & c != a) | (b == c & a != b)){if (((a * a) == (b * b + c * c)) | ((b * b) == (a * a + c * c)) | ((c * c) == (b * b + a * a))){Console.WriteLine("等腰直角三角形");}else{Console.WriteLine("等腰三角形");}}else if (((a * a) == (b * b + c * c)) | ((b * b) == (a * a + c * c)) | ((c * c) == (b * b + a * a)))Console.WriteLine("直角三角形"); }else{Console.WriteLine("一般三角形"); }}Console.ReadLine();}}}等价类划分为以下几类:1、输入数据小于0或大于1002、输入数据不符合两边之和大于第三边3、输入数据符合三角形2、计算器界面:程序:public partial class FrmCalculator : Form{public FrmCalculator(){InitializeComponent();}private bool isDouble = false;//是否有小数private bool isSign = false;//运算符是否输入private bool isEnableBackSpace = false;//退格是否可用private bool isResult = false;//得到结果状态private string sencond;//第二个数private string first;//第一个数private string sign;//运算符private bool isCalcu = false;//是否使用运算符进行计算private bool isMinus = false;//是否为负数private bool isException = false;//是否抛异常private bool Switch = false;private Thread timeThr;//时间线程private bool thrIsStart = false;//线程开关//事件0-9private void button1_Click(object sender, EventArgs e) {if (Switch){if (isException){return;}Control c = (Control)sender;//如果当前操作数未点小数点则其最后一位必定为.if (!isDouble){//判断当前显示框内是否为初始值0.//截取除.外的字符串赋给txtDisthis.txtDis.Text = this.txtDis.Text.Substring(0, this.txtDis.Text.Length - 1);//如果txtDis为0 则为初始值将其清空if (this.txtDis.Text == "0")this.txtDis.Text = "";if (!isSign)//当前未输入运算符{//将但前字符串与原有字符串累加最后加.this.txtDis.Text += c.Text + ".";}else//已输入运算符{//将当前输入字符串后加. 直接赋值给txtDisthis.txtDis.Text = c.Text + ".";//将运算符标志位置成falsethis.isSign = false;//现在可以计算结果了this.isCalcu = true;}}else//当前操作数有小数点{if (!isSign)//当前未输入运算符{//将当前字符串与原字符串累加this.txtDis.Text += c.Text;}else//已输入运算符{//将当前字符串与原字符串累加this.txtDis.Text = "0." + c.Text;//将运算符标志位置成falsethis.isSign = false;//现在可以计算结果了this.isCalcu = true;}}this.isEnableBackSpace = true;}else{this.button24.Focus();}}//Cprivate void button11_Click(object sender, EventArgs e) {if (Switch){//调用清空方法Clear();}else{this.button24.Focus();}}//.private void button15_Click(object sender, EventArgs e) {if (Switch){if (isException){return;}//判断当前是否为小数if (!isDouble)isDouble = true;//打开退格开关this.isEnableBackSpace = true;}else{this.button24.Focus();}}//BackSpaceprivate void button10_Click(object sender, EventArgs e) {if (Switch){if (isException){return;}//退格开关打开if (this.isEnableBackSpace){//如果当前为整数if (!isDouble){//包括后面一位.和要减去的数字固减2 若等于"" 则为空值为0.if (this.txtDis.Text.Substring(0, this.txtDis.Text.Length - 2) == "") {this.txtDis.Text = "0.";}else{this.txtDis.Text = this.txtDis.Text.Substring(0,this.txtDis.Text.Length - 2) + ".";}}else{//为小数减一位this.txtDis.Text = this.txtDis.Text.Substring(0,this.txtDis.Text.Length - 1);//若不包含小数点if (!this.txtDis.Text.Contains(".")){//减到已成为整数后加.this.txtDis.Text += ".";//小数开关关闭isDouble = false;}}}}else{this.button24.Focus();}}private void btnChu_Click(object sender, EventArgs e){if (Switch){if (isException){return;}//拆箱Control c = (Control)sender;if (isCalcu)//如果是当前已经点击过运算符后又点击数字会打开运算符计算开关{//如果你再点运算符 isCalcu为true 表示可以计算isCalcu = false;//将结果标志位置成false 否则当前txtDis值无法赋值到sencondisResult = false;//调用方法Calcu();}//字符串处理//为整数甩掉最后一位.赋值小数则原值赋值if (!this.isDouble)this.first = this.txtDis.Text.Substring(0, this.txtDis.Text.Length - 1);elsethis.first = this.txtDis.Text;//运算符赋值sign = c.Text;//运算符标志位置成truethis.isSign = true;//小数点标志位支撑falsethis.isDouble = false;//退格开关关闭this.isEnableBackSpace = false;//结果开关关闭this.isResult = false;}else{this.button24.Focus();}}private void button14_Click(object sender, EventArgs e){if (Switch){if (isException){return;}//调用方法Calcu();//结果开关打开固定sencond值this.isResult = true;//相当于点了运算符计算结果isCalcu = false;}else{this.button24.Focus();}}private void Calcu(){//没有计算结果if (!this.isResult){//如果为整数去掉最后一位.if (!this.isDouble){this.sencond = this.txtDis.Text.Substring(0, this.txtDis.Text.Length - 1); }else{this.sencond = this.txtDis.Text;}}try{switch (this.sign){case"+":this.txtDis.Text = ((double.Parse(this.first)) +(double.Parse(this.sencond))).ToString();break;case"-":this.txtDis.Text = ((double.Parse(this.first)) -(double.Parse(this.sencond))).ToString();break;case"*":this.txtDis.Text = ((double.Parse(this.first)) *(double.Parse(this.sencond))).ToString();break;case"/":if (int.Parse(this.sencond) == 0){throw new MyException("除数不能为0.");}this.txtDis.Text = ((double.Parse(this.first)) /(double.Parse(this.sencond))).ToString();break;default:break;}}catch (MyException ex){this.txtDis.Text = ex.Message;isException = true;}catch (Exception ex){this.txtDis.Text = ex.Message;isException = true;}//结果不包含小数点则为整数if (!this.txtDis.Text.Contains(".")){//后加.this.txtDis.Text += ".";this.first = this.txtDis.Text.Substring(0, this.txtDis.Text.Length - 1);this.isDouble = false;}else{this.first = this.txtDis.Text;this.isDouble = true;}this.isSign = true;this.isEnableBackSpace = false;}public void Clear(){this.txtDis.Text = "0.";this.isSign = false;this.isResult = false;this.isEnableBackSpace = false;this.isDouble = false;this.isCalcu = false;this.isMinus = false;this.first = null;this.sencond = null;this.sign = null;isException = false;}//CEprivate void button12_Click(object sender, EventArgs e) {if (Switch){if (!isResult){if (this.first != null){if (!this.first.Contains(".")){this.txtDis.Text = this.first + "."; }if (this.first.Length != 0){this.txtDis.Text = this.first;}else{this.txtDis.Text = "0.";}this.isCalcu = false;}else{Clear();}}else{Clear();}}else{this.button24.Focus();}}private void button17_Click(object sender, EventArgs e){if (Switch){if (isException){return;}if (!isMinus){if (this.txtDis.Text.Length == 2 && this.txtDis.Text.Substring(0,this.txtDis.Text.Length - 1) == "0"){if (isDouble){this.txtDis.Text = "-" + this.txtDis.Text;isMinus = true;}}else{this.txtDis.Text = "-" + this.txtDis.Text;isMinus = true;}}else{this.txtDis.Text = this.txtDis.Text.Substring(1, this.txtDis.Text.Length - 1);isMinus = false;}}else{this.button24.Focus();}}//开关private void button24_Click(object sender, EventArgs e){if (this.button24.Text == "ON"){thrIsStart = false;this.button24.Text = "OFF";Clear();Switch = true;}else{this.button24.Text = "ON";Switch = false;ThrStart();}}private void ThrStart(){timeThr = new Thread(new ThreadStart(DisTime));thrIsStart = true;timeThr.Start();}private void DisTime(){while (thrIsStart){this.txtDis.Text = DateTime.Now.ToString();Thread.Sleep(1000);}}private void Form1_Load(object sender, EventArgs e){ThrStart();Control.CheckForIllegalCrossThreadCalls = false;}private void Form1_FormClosing(object sender, FormClosingEventArgs e) {thrIsStart = false;}private void FrmCalculator_KeyPress(object sender, KeyPressEventArgs e) {if (Switch){// Control c = (Control)sender;if (e.KeyChar >= '0' && e.KeyChar <= '9'){if (isException){return;}//如果当前操作数未点小数点则其最后一位必定为.if (!isDouble){//判断当前显示框内是否为初始值0.//截取除.外的字符串赋给txtDisthis.txtDis.Text = this.txtDis.Text.Substring(0, this.txtDis.Text.Length - 1);//如果txtDis为0 则为初始值将其清空if (this.txtDis.Text == "0")this.txtDis.Text = "";if (!isSign)//当前未输入运算符{//将但前字符串与原有字符串累加最后加.this.txtDis.Text += e.KeyChar.ToString() + "."; }else//已输入运算符{//将当前输入字符串后加. 直接赋值给txtDisthis.txtDis.Text = e.KeyChar.ToString() + ".";//将运算符标志位置成falsethis.isSign = false;//现在可以计算结果了this.isCalcu = true;}}else//当前操作数有小数点{if (!isSign)//当前未输入运算符{//将当前字符串与原字符串累加this.txtDis.Text += e.KeyChar.ToString();}else//已输入运算符{//将当前字符串与原字符串累加this.txtDis.Text = "0." + e.KeyChar.ToString();//将运算符标志位置成falsethis.isSign = false;//现在可以计算结果了this.isCalcu = true;}}this.isEnableBackSpace = true;}else if (e.KeyChar == '.'){this.button15.PerformClick();}else if (e.KeyChar == '+' || e.KeyChar == '-' || e.KeyChar == '*' || e.KeyChar == '/'){if (isException){return;}if (isCalcu)//如果是当前已经点击过运算符后又点击数字会打开运算符计算开关 {//如果你再点运算符 isCalcu为true 表示可以计算isCalcu = false;//将结果标志位置成false 否则当前txtDis值无法赋值到sencondisResult = false;//调用方法Calcu();}//字符串处理//为整数甩掉最后一位.赋值小数则原值赋值if (!this.isDouble)this.first = this.txtDis.Text.Substring(0, this.txtDis.Text.Length - 1);elsethis.first = this.txtDis.Text;//运算符赋值sign = e.KeyChar.ToString();//运算符标志位置成truethis.isSign = true;//小数点标志位支撑falsethis.isDouble = false;//退格开关关闭this.isEnableBackSpace = false;//结果开关关闭this.isResult = false;}else if (e.KeyChar == 13){this.button14.PerformClick();}else if (e.KeyChar == 8){this.button11.PerformClick();}this.button14.Focus();}else{this.button24.Focus();}if (e.KeyChar == 27){Application.Exit();}1. 等价类等价类1: Integer(整数)等价类2: Decimal fraction(小数)等价类3: Negative(负数)等价类4: Invalid input(无效输入)结果:整型,加:,减:,乘:,除。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档