最新计算器黑盒测试实验报告.

合集下载

黑盒子实验报告_设计性实验

黑盒子实验报告_设计性实验

设计性实验黑盒子实验报告一、实验任务盒里的元件可能是:干电池、定值电阻、电容器、半导体二极管。

盒外可见的两接线端之间也可能为断路或短路的情况。

各元件连接在接线端(或插座)上,两个接线端(或插座)之间装接一个元件,元件之间不连成并联回路。

要求设计实验方案和检测步骤,判定盒内元件。

1.学习依据不同类型电学元件的特性对元件进行判别;2.进一步熟悉数字万用表等电学仪表的使用;3.根据实验室提供的仪器自行设计方案,检测黑盒子内元器件类型和位置,再进一步确定元件的物理量数值。

二、实验要求自行设计合理而又简捷的程序,对给出的黑盒子进行测试,判定盒中元件类型,并写出测试记录和作出判定的依据,对于电池,要判定其正负极,并测出其电动势,对于二极管,要判定其正负极,并测出二极管的正向导通压降,如果判断元件为电容和电阻,要求测出其数值。

(实验过程不得自行打开盒子)1、根据实验任务,查阅有关资料。

2、自拟实验步骤和直接测量数据的记录表格。

3、选择实验仪器(型号或规格)。

4、对实验方案作可行性报告分析。

5、根据设计实验方案,将测量的数据填入表中,正确写出实验测量结果。

6、对实验结果进行比较、分析、讨论。

三、实验仪器5JK 型暗盒实验箱、直流稳压电源、数字式万用表、电阻箱、开关、导线 四、实验内容1.判断有无干电池:可用电压表测两接线柱间电压,若有一定电图11 211 3 45 6 7 89 10 11 1213 14 15 16压,可确定为干电池,如当电压表接通时指针稍有摆动而又回到零位,则是电池与电容串联。

2判断有无二极管:设计电路如图,将电源与直流电流表串联,并串联一个定值电阻R,将导线连接两端钮,观察电流表读数,再交换连接两端钮,观察电流表读数,若两次读数,一次几乎为0,一次有一定的读数,可确定为二极管,并根据读数可确定二极管正负。

3.判断有无电容:当黑盒子两端钮间有电容C存在时,可用直流电源串联直流电压表或直流电流表接到两端钮。

黑盒测试实验报告

黑盒测试实验报告

实验报告书课程名称:软件测试实验题目:黑盒测试报告专业:教育技术学班级:教技142学生姓名:安卓指导老师:郭小雪所属学期:2017-2018学年第二学期一、引言1.1目的测试报告为三角形问题和找零钱最佳组合问题项目的黑盒测试报告,目的在于总结测试阶段的测试以及分析测试结果。

实验环境在Windows 2000(SP2) 或Windows XP 操作系统上,使用C++语言,工具作为开发环境(IDE)实验要求1.根据给出的程序分别使用等价类划分法、边界值分析法、判定表方法、因果图法、正交试验法、功能图法、错误推测法来设计相应的测试用例。

2.输入数据进行测试,填写测试用例。

二、实验原理黑盒测试原理:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。

软件的黑盒测试意味着测试要在软件的接口处进行。

这种方法是把测试对象看作一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。

因此黑盒测试又叫功能测试。

从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误。

实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但可能的输入进行测试。

这样看来,完全测试是不可能的,所以我们要进行有针对性的测试,通过制定测试案例指导测试的实施,保证软件测试有组织、按步骤,以及有计划地进行。

黑盒测试行为必须能够加以量化,才能真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一。

具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法等。

等价类划分的办法是把程序的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试用例。

每一类的代表性数据在测试中的作用等价于这一类中的其他值。

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

黑盒测试技术实验报告(最终5篇)

黑盒测试技术实验报告(最终5篇)

黑盒测试技术实验报告(最终5篇)第一篇:黑盒测试技术实验报告黑盒测试技术—三角形问题实验报告一、问题描述输入三个整数a、b、c,分别作为三角形的三条边,通过程序判断这三条边是否能构成三角形?如果能构成三角形,则判断三角形的类型并输出(等边三角形、等腰三角形、一般三角形),如果不构成三角形输出不能构成三角形。

要求:(1)输入三个整数a、b、c,必须满足以下条件:1≤a≤200;1≤b≤200;1≤c≤200。

(2)容错处理:输入空值的提示;输入的值满足类型的提示;(3)不限制开发环境,不限制开发语言;(4)尽可能不对自己的程序进行测试设计。

(5)请分别采用边界值分析法、等价类分析法、决策表分析法、基于场景分析法设计测试用例;(6)正文格式(除源代码用小五号单倍行距),其他行距固定值 20,字号小四。

二、程序主要源代码(标注:测试的源代码是哪位同学(学号姓名)编写的。

)三、程序界面(截图)四、设计测试用例1.用边界值测试方法设计测试用例用边界值分析法设计测试用例,按照下列步骤进行:((1)分析各变量取值三角形三条边的取值范围都是1-200,所以边长A 的边界点为 1 和 200,边长 B的边界点为 1 和 200,边长 C 的边界点为 1 和 200。

((2)测试用例数输入条件边界值测试数据 A 1,200 0,1,2,199,200,201 B 1,200 0,1,2,199,200,201 C 1,200 0,1,2,199,200,201设计测试用例(给出所有测试用例)三角形问题的测试用例测试用例编号输入数据预期输出测试结果 a b c 1 0 100 100 边长 A 不合法边长 A 不合法1 100 100 等腰三角形等腰三角形 3 2 100 100 等腰三角形等腰三角形 4 199 100 100 等腰三角形等腰三角形 5 200 100 100 不是三角形不是三角形 6 201 100 100 边长 A 不合法边长 A 不合法100 0 100 边长 B 不合法边长 B 不合法100 1 100 等腰三角形等腰三角形 9 100 2 100 等腰三角形等腰三角形 10 100 199 100 等腰三角形等腰三角形 11 100 200 100 不是三角形不是三角形 12 100 201 100 边长 B 不合法边长 B 不合法100 100 0 边长 C 不合法边长 C 不合法100 100 1 等腰三角形等腰三角形 15 100 100 2 等腰三角形等腰三角形 16 100 100 199 等腰三角形等腰三角形 17 100 100 200 不是三角形不是三角形181****0201边长 C 不合法边长 C 不合法2.用等价类测试方法设计测试用例((1)首先分析题目中给出的条件和隐含的输入要求,输入条件如下:条件:1<=边长 A<=200,1<=边长 B<=200,1<=边长 C<=200 隐含条件:A输入条件有效等价类无效等价类是否是三角形1.1<=A<=2002.1<=B<=2003.1<=C<=2004.A200 8.B<1 || B>200 9.C<1 ||C>200 10.A>=B+C 11.B>=A+C 12.C>=A+B 等腰三角形13.A=B&&B!=C 14.A=C&&C!=B 15.B=C&&C!=A 16.A!=B&&A!=C&&B!=C 等边三角形17.A=B=C 18.A!=B 19.A!=C 20.B!=C(3)设计测试用例,覆盖上表中的等价类,如表1-3 表所示。

黑盒测试实验报告

黑盒测试实验报告

一、实验目的1、能熟练应用功能性测试技术进行测试用例设计;2、对测试用例进行优化设计;二、实验内容题目11、题目内容描述三角形问题:输入三个整数a、b、c,分别作为三角形的三条边,通过程序判断着三条边是否能够成三角形。

如果能够成三角形,则判断三角形的类型(等边三角形、等腰三角形、一般三角形)。

要求输入三个整数a、b、c,必须满足以下条件:1<=a<=100;1<=b<=100;1<=c<=100。

2、测试用例的编写3、测试结果分析A、测试结果列表:B、测试结果截图:C、分析结果:有以上结果可知:用例7和用例16失败可得出该程序考虑不周全。

当输入数据为小数时,程序无法输出正确结果,另外,当输入数据不是一个数的时候,程序也无法输出正确结果。

4、实验思考三角形问题的关键在我看来是隐含的对输入条件的要求:1.正数 2.3个数 3.整数 4.非零数 5.两边之和大于第三边6. 等腰三角形7.等边三角形,对这些输入条件进行考虑并选择测试数据测试,运用等价类测试法,一个三角形问题就基本可以解决了。

通过这次软件测试实验,我学到了很多东西。

这次的实验内容是三角形问题,首先我根据需求规格说明书和所应具有的功能位依据,确定了有效等价类和无效等价类,从而画出了等价类表;然后我又根据等价类表写出了测试用例表。

接着在C++环境下编写出了相应的程序,再根据测试用例表,测试出相应的结果。

虽然是一个简单的测试,但是我认识到,测试效果的好坏很大程度上取决于是否采用好的测试过程,所以应该先精心设计好测试过程,然后再认真执行这些过程,而不是盲目的进行测试。

附录:程序代码主要函数(判断输入数据的函数)void CMyDlg::OnBTNJudge(){// TODO: Add your control notification handler code hereUpdateData();if(!(this->m_num1+this->m_num2<=this->m_num3 || this->m_num1+this->m_num3<=this->m_num2 || this->m_num2+this->m_num3<=this->m_num1) && (this->m_num1>=1 && this->m_num1<=100) && (this->m_num2>=1 && this->m_num2<=100)&&(this->m_num3>=1 && this->m_num3<=100)) {if (this->m_num1==this->m_num2 && this->m_num1==this->m_num3) MessageBox(" 等边三角形",NULL,MB_OK);else if (this->m_num1==this->m_num2 || this->m_num1==this->m_num3 || this->m_num2==this->m_num3)MessageBox(" 等腰三角形",NULL,MB_OK);elseMessageBox(" 一般三角形",NULL,MB_OK);}else{if(this->m_num1<1||this->m_num1>100||this->m_num2<1||this->m_num2>1 00||this->m_num3<1||this->m_num3>100)MessageBox(" 输入有误",NULL,MB_OK);elseMessageBox(" 不是三角形",NULL,MB_OK);}}。

白盒测试和黑盒测试实验报告

白盒测试和黑盒测试实验报告

软件质量保证与测试实验指导计算机工程学院测试环境配置1.settingJunit(1)startEclipseSelectwindows-preferences-java-buildpath–classpathvariables(2)clicknew,thefigureofnewvariableentryisshown.(3)name JUNIT_LIBselectfile-选择JUnit插件所对应的JAR文件所在地,在Eclipse的安装目录的plugins目录中2.JUNIT的组成框架其中,junit.framework和junit.runner是两个核心包。

junit.framework负责整个测试对象的框架junit.runner负责测试驱动Junit的框架又可分为:A、被测试的对象。

B、对测试目标进行测试的方法与过程集合,可称为测试用例(TestCase)。

C、测试用例的集合,可容纳多个测试用例(TestCase),将其称作测试包(TestSuite)。

D、测试结果的描述与记录。

(TestResult)。

E、每一个测试方法所发生的与预期不一致状况的描述,称其测试失败元素(TestFailure)F、JUnitFramework中的出错异常(AssertionFailedError)。

JUnit框架是一个典型的Composite模式:TestSuite可以容纳任何派生自Test 的对象;当调用TestSuite对象的run()方法是,会遍历自己容纳的对象,逐个调用它们的run()方法。

3.JUnit中常用的接口和类Test接口——运行测试和收集测试结果Test接口使用了Composite设计模式,是单独测试用例(TestCase),聚合测试模式(TestSuite)及测试扩展(TestDecorator)的共同接口。

它的publicintcountTestCases()方法,它来统计这次测试有多少个TestCase,另外一个方法就是publicvoid run(TestResult),TestResult是实例接受测试结果,run方法执行本次测试。

软件测试实验报告黑盒测试判定表

软件测试实验报告黑盒测试判定表

广西师范大学计信学院《软件测试技术》课程实验实验报告题目:黑盒测试法--判定表法班级:学号:姓名:完成日期:实验二黑盒测试法——判定表法实验目的:1.掌握因果图、判定表的方法2.掌握按判定表设计测试用例实验时间:4学时实验内容:1、题目一:隔一天日期问题功能描述:输入年份、月、日;输出:输入日期在日历上的隔一天日期。

如输入1912年12月15日,应输出1912年12月17日。

要求:(1) 读源码并分析程序,给出问题规定的可能采取的操作(即列出所有的动作桩)。

(2) 画出简化后的决策表,设计测试用例。

(3) 执行测试用例,进行测试记录和缺陷统计,给出缺陷报告。

2.程序设计及测试(以下任选一个),要求撰写测试报告(格式参照实验一)。

(1)请自己设计象棋走马问题程序,要求给出需求说明书,采用因果图法或综合采用所学黑盒测试法设计测试用例,并执行测试用例,进行缺陷统计和分析,并修正Bug。

(2)请设计实现简单的计算器功能,要求给出需求说明书,综合采用所学黑盒测试方法设计测试用例集合,并执行测试用例,进行缺陷统计和分析,并修正Bug。

实验过程:实验1:(1)动作桩:A1:day+2 A2:day=2 A3:day=1 A4:month+1 A5:moth=1 A6:year+1 A7:不可能有效等价类:Year:Y1{year是闰年} Y2{year不是闰年}Month:M1{month=4、6、9、11} M2:{month=1、3、5、7、8、10}M3{month=12} M4{month=2}Day:D1{1<=day<=26} D2{day=27} D3{day=28} D4{day=29} D5{day=30}D6{day=31}缺陷:当结果日期需要跳至下一个月时,结果会显示两次。

实验2:条件桩:1、棋子落在棋盘外2、落点未与起点构成日字型3、落点处有己方棋子4、落点处的临近交叉点5、落点处无棋子6、落点处对方棋子不是老将M:1、2、3、4动作桩:1、不移动棋子2、移动棋子3、除去对方棋子4、提示战胜对方,游戏结束#include <iostream>using namespace std;void main(){cout<<"象棋走马问题,根据情况选择回答0、是或1、否"<<endl;cout<<"“马”的落点处是否在棋盘外"<<endl;int a,b,c,d;cin>>a;cout<<"“马”的落点与起点是否不成“日”字型"<<endl;cin>>b;cout<<"“马”的落点处是否有其他己方棋子"<<endl;cin>>c;cout<<"“马”的落点临近交叉点是否有棋子"<<endl;cin>>d;int x,y;cout<<"“马”的落点处是否有棋子"<<endl;cin>>x;cout<<"“马”的落点出的棋子是否为老将"<<endl;cin>>y;if(a==0&&b==0&&c==0&&d==0)cout<<"不移动棋子"<<endl;if(a==1&&b==1&&c==1&&d==1&&x==1)cout<<"移动棋子"<<endl;if(a==1&&b==1&&c==1&&d==1&&x==0&&y==1)cout<<"移动棋子并出去对方棋子"<<endl;if(a==1&&b==1&&c==1&&d==1&&x==0&&y==0)cout<<"移动棋子并提示战胜对方,游戏结束"<<endl;if(a>1||b>1||c>1||d>1||x>1||y>1)cout<<"输入不规范"<<endl;}程序缺陷:每次运行程序,即使中途就出现输入不规范,但是仍要到最后才能提示出来。

黑盒测试实验报告

黑盒测试实验报告

黑盒测试实验报告软件测试实验报告----黑盒测试一.实验内容使用黑盒测试技术设计一个自动售货机上的系统。

自定义自动售货机只卖三种饮料:可口可乐,雪碧,百事可乐,单价分别为2.5元,2.5两元,2元。

假设输入饮料类别及需要的数量,如果输入的金额数足够,直接送出饮料,退回零钱,如果输入的金额不够,有提示可以继续输入钱币。

自动售货机运行界面如下:二、黑盒测试(1)测试用例一(2)测试用例二具体操作实践如下:三代码#include void main(){int n,m,i;for(i=0;i<100;i++){cout<<"欢迎使用自动售货机系统!\" ;cout<<"请选择商品\";cout<< "1 可口可乐2.5元\";cout<< "2 雪碧2.5元\";cout<< "3 百事可乐2元\";cout<< " 4 结束购物\";cin>>n;if(n==1){cout<<"你选择的是可口可乐\";cout<<"请选择投币种类\";cout<< "1 2.5元\";cout<< "2 3元\";cout<< "3 5元\";cout<< "4 1元\";cin>>m;if(m==1){cout<<"付款金额正好,请取走商品\";}else if(m==2){cout<<"找您0.5元\";}else if(m==3){ cout<<"找您2.5元\";} else {cout<<”钱不够!”;}}if(n==2){cout<<"你选择的是雪碧\";cout<<"请选择投币种类\";cout<< "1 2.5元\";cout<< "2 3元\";cout<< "3 5元\";cout<< "4 1元\";cin>>m;if(m==1){cout<<"付款金额正好,请取走商品\";}else if(m==2){cout<<"找您0.5元\";}else if(m==3){ cout<<"找您2.5元\";} else {cout<<”钱不够!”;}}if(n==3){"你选择的是百事可乐\";cout<<"请选择投币种类\";cout<< "1 2.5元\";cout<< "2 3元\";cout<< "3 5元\";cout<< "4 1元\";cin>>m;if(m==1){cout<<"找您0.5元\\\";}else if(m==2){cout<<"找您1元\";}else if(m==3){ cout<<"找您2元\";} else {cout<<”钱不够!”;}}if(n==4)cout<<"谢谢惠顾!"<<="">}。

黑盒测试软件测试实验报告2

黑盒测试软件测试实验报告2
void main()
{
int year;
int month,maxmonth=12;
int day,maxday;
printf("请输入年份:(1000~3000)");
scanf("%d",&year);
if(year<1000 || year>3000)
{
printf("输入错误!请从新输入!\n");
软件测试与质量课程实验报告
实验2:黑盒测试法实验
姓名
院系
学号
任课教师
实验指导教师
实验地点
实验时间
实验目的
系统地学习和理解黑盒测试的基本概念、原理
熟悉和掌握等价类划分法,边界值分析法和决策表方法
掌握测试用例编写要点
实验内容
1.编写一个程序,循环从标准输入读入某雇员的工作时间(以小时计)和每小时的工资数,计算并输出他的工资。若雇员月工作小时超过40小时,则超过部分按原工资的1.5倍的加班工资来计算。若雇员月工作小时超过50小时,则超过50的部分按原工资的3倍的加班工资来计算,而40到50小时的工资仍按照原工资的1.5倍的加班工资来计算。
日期

预期输出
1--3
6
15/28/29
2013
2013年4月16/29/30日
4
6
30
2013
2013年7月1日
5
6
31
2013
输入错误,请重新输入
6--9
3
15/28/29/30
2013
2013年3月16/29/30/31日
10
3
31
2013
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、测试目的设计测试用例、使用各种测试方法进行计算器的测试,并对测试结果进行分析二、测试内容1.软件说明:实现一个小的计算器程序,只需要完成加、减、乘、除运算,设计测试用例,并对测试结果进行分析,同时计算器运行稳定。

2、设计测试用例3、执行测试4、测试结果分析5、源代码三、测试步骤(一)、计算器界面2、设计测试用例(1)等价类测试:1、4个等价类测试用例的分析过程如下:测试用例加减乘除预期输出整型55+50 78-24 15*25 36/4 正常运算小数25.3+12.7 14.3-11.7 25.6*12.8 50.2/20.7 正常运算负数-20+-21 (-15)-(-14) -12*-12 -16/-5 正常运算无效输入E1+t2 G4-k5 I5*l6 Ff/se 非法操作无法输入2、对应测试的结果分析:整型:1.加(55+50)2.减(78-24)3.乘(15*25)4.除(36/4)小数1.加(25.3+12.7)2.减(14.3-11.7)3.乘(25.6*12.8)4.除(50.2/20.7)负数6.加 -20+-217.减(-15)-(-14)8.乘-12*-129.除 -16/-5(其中算式写法错误导致正常运算错误)无效输入1.加(E1+t2):程序中无效数字无法正常输入,程序无法进行。

2.减(G4-k5)程序中无效数字无法正常输入,程序无法进行。

(同上)3.乘(I5*l6)程序中无效数字无法正常输入,程序无法进行。

(同上)4.除(Ff/se)程序中无效数字无法正常输入,程序无法进行。

(同上)5.(2)边界值法设计测试:加法:1、计算器4个标准等价类测试用例的分析过程如下:测试用例被加数加数预期输出Test1 0 10 正常运算Test2 1 10 正常运算Test3 40 10 正常运算Test4 55.5 10 正常运算Test5 -70 10 正常运算Test6 10 10 正常运算Test7 101 10 正常运算Test8 10 0 不能运算Test9 10 1 正常运算Test10 10 40 正常运算Test11 10 55.5 正常运算Test12 10 -78 正常运算Test13 10 100 正常运算Test14 10 101 正常运算2、对应测试与结果:测试结果运算均属正常,对应的部分的示图如下:Test1结果:Test2结果:Test3结果:Test4结果:Test5结果:Test6结果:减法:1、计算器4个标准等价类测试用例的分析过程如下:测试用例被减数减数预期输出Test1 0 10 正常运算Test2 1 10 正常运算Test3 40 10 正常运算Test4 55.5 10 正常运算Test5 -78 10 正常运算Test6 100 10 正常运算Test7 101 10 正常运算Test8 10 0 不能运算Test9 10 1 正常运算Test10 10 40 正常运算Test11 10 55.5 正常运算Test12 10 -78 正常运算Test13 10 100 正常运算Test14 10 101 正常运算2、对应测试与结果:测试结果运算均属正常,对应的部分的示图如下:Test1结果:Test3结果:Test4结果:Test5结果:Test6结果:乘法1、计算器4个标准等价类测试用例的分析过程如下:2、对应测试与结果:测试结果运算均属正常,对应的部分的示图如下:Test1结果:Test3结果:Test4结果:Test5结果:Test6结果:除法1、计算器4个标准等价类测试用例的分析过程如下:测试用例被除数除数预期输出Test1 0 10 正常运算Test2 1 10 正常运算Test3 40 10 正常运算Test4 55.5 10 正常运算Test5 -78 10 正常运算Test6 100 10 正常运算Test7 101 10 正常运算Test8 10 0 正常运算Test9 10 1 正常运算Test10 10 40 正常运算Test11 10 55.5 正常运算Test12 10 -78 正常运算Test13 10 100 正常运算Test14 10 101 正常运算2、对应测试与结果:对应的部分的示图如下:Test1结果:Test2结果:Test3结果:Test8结果:附录:源代码CCalculateDlg::CCalculateDlg(CWnd* pParent /*=NULL*/): CDialog(CCalculateDlg::IDD, pParent){//{{AFX_DATA_INIT(CCalculateDlg)m_parameter = 0.0;//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);CalculatePara = 0;CalculateResult = 0;Ispoint = false;Sumpoint = 0;}void CCalculateDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CCalculateDlg)DDX_Text(pDX, IDC_EDIT, m_parameter);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CCalculateDlg, CDialog)//{{AFX_MSG_MAP(CCalculateDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_clear, Onclear)ON_BN_CLICKED(IDC_calculate, Oncalculate)ON_BN_CLICKED(IDC_para1, Onpara1)ON_BN_CLICKED(IDC_para2, Onpara2)ON_BN_CLICKED(IDC_para3, Onpara3)ON_BN_CLICKED(IDC_para4, Onpara4)ON_BN_CLICKED(IDC_para5, Onpara5)ON_BN_CLICKED(IDC_para6, Onpara6)ON_BN_CLICKED(IDC_para7, Onpara7)ON_BN_CLICKED(IDC_para8, Onpara8)ON_BN_CLICKED(IDC_para9, Onpara9)ON_BN_CLICKED(IDC_para0, Onpara0)ON_BN_CLICKED(IDC_point, Onpoint)ON_BN_CLICKED(IDC_minus, Onminus)ON_BN_CLICKED(IDC_plus, Onplus)ON_BN_CLICKED(IDC_subtrack, Onsubtrack)ON_BN_CLICKED(IDC_multiply, Onmultiply)ON_BN_CLICKED(IDC_divide, Ondivide)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////// // CCalculateDlg message handlersBOOL CCalculateDlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization herereturn TRUE; // return TRUE unless you set the focus to a control}void CCalculateDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework.void CCalculateDlg::OnPaint(){if (IsIconic())CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the user drags // the minimized window.HCURSOR CCalculateDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}void CCalculateDlg::Onclear(){UpdateData(true);m_parameter = 0;CalculatePara = 0;CalculateResult = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);// TODO: Add your control notification handler code here}void CCalculateDlg::Oncalculate(){UpdateData(true);CalculatePara = m_parameter;switch(CalculateExpre){case'+':CalculateResult += CalculatePara;m_parameter = CalculateResult;break;case'-':CalculateResult -= CalculatePara;m_parameter = CalculateResult;break;case'*':CalculateResult *= CalculatePara;m_parameter = CalculateResult;break;case'/':if (CalculatePara){CalculateResult /= CalculatePara;m_parameter = CalculateResult;}else{m_parameter = 0;MessageBox("除数不能为零!");}break;}// TODO: Add your control notification handler code hereCalculatePara = 0;CalculateResult = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);}void CCalculateDlg::Onpara1(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 1;}else{CalculatePara = m_parameter + 1/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara2(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 2;}else{CalculatePara = m_parameter + 2/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara3(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 3;}else{CalculatePara = m_parameter + 3/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara4()UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 4;}else{CalculatePara = m_parameter + 4/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara5(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 5;}else{CalculatePara = m_parameter + 5/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara6(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 6;}else{CalculatePara = m_parameter + 6/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara7(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 7;}else{CalculatePara = m_parameter + 7/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara8(){UpdateData(true);if (!Ispoint)CalculatePara = m_parameter*10 + 8;}else{CalculatePara = m_parameter + 8/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara9(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 9;}else{CalculatePara = m_parameter + 9/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara0(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 0;else{Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpoint(){Ispoint = true;Sumpoint = 1;// TODO: Add your control notification handler code here}void CCalculateDlg::Onminus(){UpdateData(true);m_parameter = 0 - m_parameter;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onplus(){UpdateData(true);CalculateResult = m_parameter;CalculateExpre = '+';m_parameter = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onsubtrack(){UpdateData(true);CalculateResult = m_parameter;CalculateExpre = '-';m_parameter = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onmultiply(){UpdateData(true);CalculateResult = m_parameter;CalculateExpre = '*';m_parameter = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Ondivide(){UpdateData(true);CalculateResult = m_parameter;CalculateExpre = '/';m_parameter = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);// TODO: Add your control notification handler code here }。

相关文档
最新文档