简易计算器实验报告

时间:2024.3.31

 简易计算器实验报告

实 验 题 目         简易计算器        

学 生 姓 名          吴云              

学       号         2013051205          

所 在 学 院         计算机学院         

年 级 班 级          计科5           

成都信息工程学院 计算机学院


一、        题目:简易计算器

     题目概述:

·          学习MFC的应用,做出相对精美的界面;学习面向对象的思想,即用C++,考虑到 类。

·          模仿Windows的计算器,用图形界面实现加减乘除开根号求倒数等等基本操作。

·          实现括号运算。

二、        开发环境

Win7操作系统的电脑一台 + VC6.0编程软件

三、        设计步骤

(一)界面设计:

首先打开VC++6.0 建立一个MFC的基本对话框,添加所需的按钮的编辑框如下图:

(二)添加变量:

点击菜单栏的:查看->建立类向导->添加成员变量:
给编辑框添加一个CString类型的变量m_result。

(三)为按钮添加事件:

为按钮和编辑框改了名字和ID后点击每一个按钮,为每一个按钮添加一个对应的事件,即:为每一个按钮添加算法代码。

(四)个性化程序:

即修改程序一些细节的地方,如程序的图标,程序的界面颜色、图案等等。。

(五)调试并运行程序:

将写好的程序调试好了后运行。

四、        程序的主要函数及其释义:

 void CCalculatorDlg::OnButton1()   //按下数字键1时出现的事件

{

       // TODO: Add your control notification handler code here

       if(fff == 1){                 //当fff == 0时,此时刚算完上次的数据,再按数字键时自动清空上次的数据

              m_result = _T("");   //对字符串处理需要_T()函数实现

              fff = 0;                 

       }

       m_result += _T("1");

       UpdateData(FALSE);  //将数据送到编辑窗口

}

void CCalculatorDlg::OnButton2()   //按下数字键2时出现的事件,同上

{

       // TODO: Add your control notification handler code here

       if(fff == 1){

              m_result = _T("");

              fff = 0;

       }

       m_result += _T("2");

       UpdateData(FALSE);

}

void CCalculatorDlg::OnButton3()   //  3

{

       // TODO: Add your control notification handler code here

       if(fff == 1){

              m_result = _T("");

              fff = 0;

       }

       m_result += _T("3");

       UpdateData(FALSE);

}

void CCalculatorDlg::OnButton4()   //  4

{

       // TODO: Add your control notification handler code here

       if(fff == 1){

              m_result = _T("");

              fff = 0;

       }

       m_result += _T("4");

       UpdateData(FALSE);

}

void CCalculatorDlg::OnButton5()   //  5

{

       // TODO: Add your control notification handler code here

       if(fff == 1){

              m_result = _T("");

              fff = 0;

       }

       m_result += _T("5");

       UpdateData(FALSE);

}

void CCalculatorDlg::OnButton6()   //  6

{

       // TODO: Add your control notification handler code here

       if(fff == 1){

              m_result = _T("");

              fff = 0;

       }

       m_result += _T("6");

       UpdateData(FALSE);

}

void CCalculatorDlg::OnButton7()   //  7

{

       // TODO: Add your control notification handler code here

       if(fff == 1){

              m_result = _T("");

              fff = 0;

       }

       m_result += _T("7");

       UpdateData(FALSE);

}

void CCalculatorDlg::OnButton8()   //  8

{

       // TODO: Add your control notification handler code here

       if(fff == 1){

              m_result = _T("");

              fff = 0;

       }

       m_result += _T("8");

       UpdateData(FALSE);

}

void CCalculatorDlg::OnButton9()   //  9

{

       // TODO: Add your control notification handler code here

       if(fff == 1){

              m_result = _T("");

              fff = 0;

       }

       m_result += _T("9");

       UpdateData(FALSE);

}

void CCalculatorDlg::OnButton10()   //  0

{

       // TODO: Add your control notification handler code here

       if(fff == 1){

              m_result = _T("");

              fff = 0;

       }

       m_result += _T("0");

       UpdateData(FALSE);

}

void CCalculatorDlg::OnButton11()   //按下‘.’后出现的事件

{

       // TODO: Add your control notification handler code here

       if(fff == 1){

              m_result = _T("");

              fff = 0;

       }

       m_result += _T(".");

       UpdateData(FALSE);

}

void CCalculatorDlg::OnBUTTONpi()   // 按下‘PI’后出现的事件

{

       // TODO: Add your control notification handler code here

       fff = 0;

       m_result = _T("3.14159265358979");

       UpdateData(FALSE);

}

void CCalculatorDlg::OnBUTTONjia()   //  按下‘+’键,后发生的事件

{

       // TODO: Add your control notification handler code here

       n = 1;

       data = strtod(m_result,NULL);  // 将之前输入的字符串转化为double型的数并保存起来

       m_result = _T("");                       //清空输入屏

}

void CCalculatorDlg::OnBUTTONjian()   //      ‘减’,同理

{

       // TODO: Add your control notification handler code here

       n = 2;

       data = strtod(m_result,NULL);

       m_result = _T(""); 

}

void CCalculatorDlg::OnBUTTONchen()   //     乘

{

       // TODO: Add your control notification handler code here

       n = 3;

       data = strtod(m_result,NULL);

       m_result = _T(""); 

}

void CCalculatorDlg::OnBUTTONchu()      //     除

{

       // TODO: Add your control notification handler code here

       n = 4;

       data = strtod(m_result,NULL);

       m_result = _T(""); 

}

void CCalculatorDlg::OnBUTTONcifang() //     次方

{

       // TODO: Add your control notification handler code here

       n = 5;

       data = strtod(m_result,NULL);

       m_result = _T(""); 

}

void CCalculatorDlg::OnBUTTONDel()      //     退格

{

       // TODO: Add your control notification handler code here

              m_result = m_result.Left(m_result.GetLength() - 1);

              UpdateData(FALSE);

}

void CCalculatorDlg::OnBUTTONdengyu()       //     等于,按下‘=’键后发生的事件

{

       // TODO: Add your control notification handler code here

       if(n==1)  //加

       {

              data += strtod(m_result,NULL);    //将先前保存的数据与后输入的数据相加

              m_result.Format(_T("%lf"), data);              //将数据转化为CString型并显示在屏上

              UpdateData(FALSE);            //刷新显示数据

       }

       if(n==2)  //减   同上类似

       {

              data -= strtod(m_result,NULL);

              m_result.Format(_T("%lf"),data);

              UpdateData(FALSE);

       }

       if(n==3)  //乘

       {

              data *= strtod(m_result,NULL);

              m_result.Format(_T("%lf"),data);

              UpdateData(FALSE);

       }

       if(n==4)  //除

       {

              if(strtod(m_result,NULL) == 0){        // 如果判断出被除数为0,就在输出框中输出以下文字。

                     GetDlgItem(IDC_EDIT1)->SetWindowText("error!除数不能为0!");

              }

              else{

                     data /= strtod(m_result,NULL);

                     m_result.Format(_T("%lf"),data);

                     UpdateData(FALSE);

              }

       }

       if(n==5)         //当判断运算符为‘次方’时,根据幂底数的正负性有不同的情况

       {

              if(data > 0){

                     data = exp(strtod(m_result,NULL)*log(data));

                     m_result.Format(_T("%lf"),data);

                     UpdateData(FALSE);

              }

              else if(data == 0){

                     data = 0;

                     m_result.Format(_T("%lf"),data);

                     UpdateData(FALSE);

              }

              else{

                     if((int)strtod(m_result,NULL) - strtod(m_result,NULL) != 0)    //如计算(-2)^3.2时,即指数有小数,输入以下文字。

                            GetDlgItem(IDC_EDIT1)->SetWindowText(“该计算结果无意义!”);

                     else{                            // 如计算(-2)^3时,即指数没小数

                            double i = strtod(m_result,NULL), data1 = data;

                            for(; i >1; i--)

                            {

                                   data *= data1;

                            }

                            m_result.Format(_T("%lf"),data);

                            UpdateData(FALSE);

                     }

              }

       }

       fff = 1;

}

void CCalculatorDlg::OnButtonAc()    //AC,即按清除键。

{

       // TODO: Add your control notification handler code here

       m_result = _T("");

       UpdateData(FALSE);

}

void CCalculatorDlg::OnBUTTONsin() //sin

{

       // TODO: Add your control notification handler code here

       data = sin(strtod(m_result,NULL));

       m_result.Format(_T("%lf"),data);

       UpdateData(FALSE);

       fff = 1;

}

void CCalculatorDlg::OnBUTTONcos()      //cos

{

       // TODO: Add your control notification handler code here

       data = cos(strtod(m_result,NULL));

       m_result.Format(_T("%lf"),data);

       UpdateData(FALSE);

       fff = 1;

}

void CCalculatorDlg::OnBUTTONtan()       //tan

{

       // TODO: Add your control notification handler code here

       data = tan(strtod(m_result,NULL));

       m_result.Format(_T("%lf"),data);

       UpdateData(FALSE);

       fff = 1;

}

void CCalculatorDlg::OnBUTTONsqrt()     //sqrt,即取平方根

{

       // TODO: Add your control notification handler code here

if(strtod(m_result,NULL) < 0){

              GetDlgItem(IDC_EDIT1)->SetWindowText("根号下不能负数哦~~");

       }

       else{

              data = sqrt(strtod(m_result,NULL));

              m_result.Format(_T("%lf"),data);

              UpdateData(FALSE);

       }    

fff = 1;

}

void CCalculatorDlg::OnBUTTONjiecheng()      //阶乘

{

       // TODO: Add your control notification handler code here

       data = strtod(m_result,NULL);

       double i =data-1;

       for(;i > 0; i--)

       {

              data *= i;

       }

       m_result.Format(_T("%lf"),data);

       UpdateData(FALSE);

       fff = 1;

}

void CCalculatorDlg::OnBUTTONlog()      //lg

{

       // TODO: Add your control notification handler code here

       data = log10(strtod(m_result,NULL));

       m_result.Format(_T("%lf"),data);

       UpdateData(FALSE);

       fff = 1;

}

void CCalculatorDlg::OnBUTTONln()               //ln

{

       // TODO: Add your control notification handler code here

       data = log(strtod(m_result,NULL));

       m_result.Format(_T("%lf"),data);

       UpdateData(FALSE);

       fff = 1;

}

void CCalculatorDlg::OnBUTTONzhengfu()      //正负取反

{

       // TODO: Add your control notification handler code here

       data = -strtod(m_result,NULL);

       m_result.Format(_T("%lf"),data);

       UpdateData(FALSE);

}

void CCalculatorDlg::OnBUTTONdaoshu()               //1/x

{

       // TODO: Add your control notification handler code here

       data = 1/(strtod(m_result,NULL));

       m_result.Format(_T("%lf"),data);

       UpdateData(FALSE);

       fff = 1;

}

void CCalculatorDlg::OnBUTTONguanyu()  //关于本软件,即点击关于本软件按钮

{

       // TODO: Add your control notification handler code here

       GetDlgItem(IDC_EDIT1)->SetWindowText("本软件由吴云制作,新手一个,不足之处还请谅解...O(∩_∩)O");

}

五、        程序运行展示:

这是我自己画得程序图标,没有copy哦,虽然很丑。。。

这是我们程序打开的界面,是不是很简洁?很符合简易计算器这个称号吧。。。

这是当我们输入除数为零时显示的画面,既有英文又有中文,中西结合哦。。。

这是我们的程序当输入一个负数取根号时,就会出现这一句温馨的提醒。。。

这是点击程序的关于本软件时,出现响应事件,本来想加上作者电话和QQ的,当时,几番思量后,还是算了。。。。

六、        感悟和心得:

经过本次简易计算器的制作,巩固了C语言学到的知识,学到了MFC可视化界面基本的编程方法,对C++面向对象的编程思想有了更深刻的理解,增加了编写程序的能力。对类的类的封装和设计也有了一种新的认识,丰富了自己的知识,增添了自己对专业的兴趣和热爱之情。

更多相关推荐:
计数器实验报告

实验4计数器及其应用一实验目的1学习用集成触发器构成计数器的方法2掌握中规模集成计数器的使用及功能测试方法二实验原理计数器是一个用以实现计数功能的时序部件它不仅可用来计脉冲数还常用作数字系统的定时分频和执行数字...

计算器实验报告 (1)

HTML网页实验报告院系计算机控制与工程学院班级计1241学号姓名完成日期1一实验名称设计一个网页计算器二需求分析计算器是日常生活中十分便捷有效的工具能实现加减乘除开方求倒数等简单运算的工具要实现计算功能可以用...

计算器实验报告

目录一系统开发的背景1二系统分析与设计1一二计算器的主要功能1系统模块结构设计1三系统的设计与实现2一二计算器的初始界面2一般计算3三解一元二次方程5四计算银行本利和5四系统测试7一二测试主函数MAIN7测试一...

C#计算器实验报告

C计算器实验报告班级学号20xx13432姓名蔡启林一实验目的和要求设计一个简单计算器具有一般计算功能能进行基本的加减乘除运算还具有求根号倒数等功能特点是能进行不同进制的运算和不同进制间的转换主要的工作主要是操...

计算器实验报告

计科系实验报告单

模拟计算器实验报告

课程设计报告课程设计题目:模拟机算器程序学生姓名:专业:网络工程班级:指导教师:20XX年11月27日东华理工大学课程设计评分表学生姓名:XXX班级:XXX学号:21课程设计题目:模拟机算器程序目录一.课程设计…

计算器实验报告

人机交互实验报告简单计算器的功能实现院系信息工程学院专业08软件工程二班组员姓名楚婕周培富胡伟李文竹指导教师陈姝20xx年11月21日目录一实验目的3二实验内容3三实验设计的基本思想和方法要求31软件开发方式4...

简易计算器实验报告

目录1概述12系统软件设计121设计目标和实现方法122整体方案论证13系统硬件的设计231复位电路的设计232时钟振荡器电路的设计333输入电路的设计434输出电路的设计74系统程序的设计与介绍941读键输入...

C++语言计算器的实验报告

1题目简单计算器2实验目的模仿日常生活中所用的计算器自行设计一个简单的计算器程序实现简单的计算功能3实验主要硬件软件环境Window7VisualC604实验内容1体系设计程序是一个简单的计算器能正确输入数据能...

java计算器实验报告

实验报告实验名称课程名称Java程序设计学生姓名号成绩指导教师实验日期专业班级学一实验目的综合应用所学的知识分析问题解决问题提高实际编程能力及程序调试能力二实验内容及要求三实验仪器与设备Eclipse四问题分析...

mfc计算器实验报告

C程序设计设计性实验C程序设计设计性实验报告实验项目名称高级计算器设计与开发专业班级姓名学号实验起止日期起于年月日止于年月日实验目的学会用语言和数据结构知识实现表达式的解析与计算学会使用动态链接库技术进行编程学...

嵌入式--计算器--实验报告

计算器设计实验报告一实验设计主要分工04009320文斌算法设计LCD显示04张希界面按钮控件设计文件内容读取共同调试完善设计二程序设计实现功能效果1支持整数小数基本加减乘除运算2有优先级的判别计算优先级由高到...

计算器实验报告(47篇)