您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 简单MFC程序设计(编写一个小型计算器)
1青岛理工大学课程实验报告课程名称C++面向对象程序设计班级实验日期姓名学号实验成绩实验名称实验五简单MFC程序设计(编写一个小型计算器)实验目的及要求1.学习使用VisualC++的MFC开发程序的步骤。2.综合运用所学类、继承和多态的只是开发程序。3.进一步熟练掌握程序调试方法。实验环境学校机房计算机VisualC++6.0实验内容1.利用MFC的向导创建基于对话框的应用程序,添加按钮、编辑框等控件。2.实现算术“加、减、乘、除”的运算。3.选做添加计算三角函数运算、对数运算、指数运算、进制转换等功能。算法描述及实验步骤a)首先考虑对所有按键分为两类,数字类和符号类。0,1,2,3,4,5,6,7,8,9为数字类,+,-,*,/为符号类。数字在计算过程中最多需要保存两个,所以定义了两个double型变量num1和num2来进行存储,符号需要一个char型变量cal来存储。b)为显示数字的编辑框设立一个double型的关联变量m_Num,为显示符号的编辑框设立一个CString型的关联变量m_result,设立一个int型的小数点标志dotflag,设立一个int型的键入数字标志numflag,设立一个long型的小数部分权值quan,最后为了防止用户输入错误,设立一个判断输入是否为数字的int型标志mark。c)然后考虑到在计算过程中num1和num2的储存状态有三种,num1==0和num2==0,也就是程序开始运行还没有开始录入数字的状态;num1!=0和num2==0,也就是第一个数字已经录入,第二个数字还没有录入的状态这时候把m_Num的值赋给num1,m_Num归零;num1!=0和num2!=0,把m_Num的2值赋给num2,m_Num归零,令m_Num等于num1和num2合并后的值。调试过程及实验结果总结小型计算器这个实验涉及了本书很多相关的知识,而且都是很重要的知识,比如类与对象,构造函数,友元函数等相关重点,通过实践发现自己对相关知识掌握的不牢,以后还要加强学习。附录关键源代码voidCTestDlg::OnButtonNum1(){if(dotflag==1){quan=10*quan;m_Num+=1/(double)quan;}else{if(numflag==1){m_Num=10*m_Num+1;}elsem_Num=1;}numflag=1;mark=1;UpdateData(FALSE);}3voidCTestDlg::OnButtonNum2(){if(dotflag==1){quan=quan*10;m_Num+=2/(double)quan;}else{if(numflag==1){m_Num=m_Num*10+2;}elsem_Num=2;}numflag=1;mark=1;UpdateData(FALSE);}voidCTestDlg::OnButtonNum3(){if(dotflag==1){quan=quan*10;m_Num+=3/(double)quan;}else{if(numflag==1){m_Num=m_Num*10+3;}elsem_Num=3;}numflag=1;mark=1;UpdateData(FALSE);}voidCTestDlg::OnButtonNum4(){if(dotflag==1){quan=quan*10;m_Num+=4/(double)quan;4}else{if(numflag==1){m_Num=m_Num*10+4;}elsem_Num=4;}numflag=1;mark=1;UpdateData(FALSE);}voidCTestDlg::OnButtonNum5(){if(dotflag==1){quan=quan*10;m_Num+=5/(double)quan;}else{if(numflag==1){m_Num=m_Num*10+5;}elsem_Num=5;}numflag=1;mark=1;UpdateData(FALSE);}voidCTestDlg::OnButtonNum6(){if(dotflag==1){quan=quan*10;m_Num+=6/(double)quan;}else{if(numflag==1){m_Num=m_Num*10+6;}elsem_Num=6;5}numflag=1;mark=1;UpdateData(FALSE);}voidCTestDlg::OnButtonNum7(){if(dotflag==1){quan=quan*10;m_Num+=7/(double)quan;}else{if(numflag==1){m_Num=m_Num*10+7;}elsem_Num=7;}numflag=1;mark=1;UpdateData(FALSE);}voidCTestDlg::OnButtonNum8(){if(dotflag==1){quan=quan*10;m_Num+=8/(double)quan;}else{if(numflag==1){m_Num=m_Num*10+8;}elsem_Num=8;}numflag=1;mark=1;UpdateData(FALSE);}voidCTestDlg::OnButtonNum9()6{if(dotflag==1){quan=quan*10;m_Num+=9/(double)quan;}else{if(numflag==1){m_Num=m_Num*10+9;}elsem_Num=9;}numflag=1;mark=1;UpdateData(FALSE);}voidCTestDlg::OnButtonNum0(){if(dotflag==1){quan=quan*10;m_Num+=0/(double)quan;}else{if(numflag==1){m_Num=m_Num*10+0;}elsem_Num=0;}numflag=1;mark=1;UpdateData(FALSE);}voidCTestDlg::OnButtonZhengfu(){UpdateData();m_Num=0-m_Num;UpdateData(FALSE);}voidCTestDlg::OnButtonDengyu()7{if(mark==1){num2=m_Num;switch(cal){case'+':m_Num=num1+num2;cal=0;break;case'-':m_Num=num1-num2;cal=0;break;case'*':m_Num=num1*num2;cal=0;break;case'/':m_Num=num1/num2;cal=0;break;}numflag=0;dotflag=0;quan=1;UpdateData(FALSE);}elseMessageBox(error);}voidCTestDlg::OnButtonClear(){UpdateData();m_Num=0;m_result='';num1=0;num2=0;numflag=0;dotflag=0;quan=1;mark=0;UpdateData(FALSE);}voidCTestDlg::OnButtonMultiply(){UpdateData();num1=m_Num;cal='*';numflag=0;dotflag=0;quan=1;m_result='*';mark=0;UpdateData(FALSE);}voidCTestDlg::OnButtonDivide()8{UpdateData();num1=m_Num;cal='/';numflag=0;dotflag=0;quan=1;m_result='/';mark=0;UpdateData(FALSE);}voidCTestDlg::OnButtonPlus(){UpdateData();num1=m_Num;cal='+';numflag=0;dotflag=0;quan=1;m_result='+';mark=0;UpdateData(FALSE);}voidCTestDlg::OnButtonMinus(){UpdateData();num1=m_Num;cal='-';numflag=0;dotflag=0;quan=1;m_result='-';mark=0;UpdateData(FALSE);}voidCTestDlg::OnButtonDot(){UpdateData();dotflag=1;m_Num+=0.0;m_result='.';UpdateData(FALSE);}classCTestDlg:publicCDialog9{public:intmark;longquan;intnumflag;intdotflag;charcal;doublenum2;doublenum1;CTestDlg(CWnd*pParent=NULL);//standardconstructorenum{IDD=IDD_TEST_DIALOG};doublem_Num;CStringm_result;protected:virtualvoidDoDataExchange(CDataExchange*pDX);//Implementationprotected:HICONm_hIcon;virtualBOOLOnInitDialog();afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);afx_msgvoidOnPaint();afx_msgHCURSOROnQueryDragIcon();afx_msgvoidOnButtonNum1();afx_msgvoidOnButtonNum2();afx_msgvoidOnButtonNum3();afx_msgvoidOnButtonNum4();afx_msgvoidOnButtonNum5();afx_msgvoidOnButtonNum6();afx_msgvoidOnButtonNum7();afx_msgvoidOnButtonNum8();afx_msgvoidOnButtonNum9();afx_msgvoidOnButtonZhengfu();afx_msgvoidOnButtonDengyu();afx_msgvoidOnButtonNum0();afx_msgvoidOnButtonClear();afx_msgvoidOnButtonMultiply();afx_msgvoidOnButtonDivide();afx_msgvoidOnButtonPlus();afx_msgvoidOnButtonMinus();afx_msgvoidOnButtonDot();DECLARE_MESSAGE_MAP()};
本文标题:简单MFC程序设计(编写一个小型计算器)
链接地址:https://www.777doc.com/doc-4216348 .html