简易计算器实验报告.docx

上传人:b****5 文档编号:5018023 上传时间:2022-12-12 格式:DOCX 页数:15 大小:167.23KB
下载 相关 举报
简易计算器实验报告.docx_第1页
第1页 / 共15页
简易计算器实验报告.docx_第2页
第2页 / 共15页
简易计算器实验报告.docx_第3页
第3页 / 共15页
简易计算器实验报告.docx_第4页
第4页 / 共15页
简易计算器实验报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

简易计算器实验报告.docx

《简易计算器实验报告.docx》由会员分享,可在线阅读,更多相关《简易计算器实验报告.docx(15页珍藏版)》请在冰豆网上搜索。

简易计算器实验报告.docx

简易计算器实验报告

 

简易计算器实验报告

 

实验题目简易计算器

学生姓名吴云

学号**********

所在学院计算机学院

年级班级计科5班

 

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

一、题目:

简易计算器

题目概述:

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

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

∙实现括号运算。

二、开发环境

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

三、设计步骤

(一)界面设计:

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

(二)添加变量:

点击菜单栏的:

查看->建立类向导->添加成员变量:

给编辑框添加一个CString类型的变量m_result。

(三)为按钮添加事件:

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

为每一个按钮添加算法代码。

(四)个性化程序:

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

(五)调试并运行程序:

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

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

voidCCalculatorDlg:

:

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

{

//TODO:

Addyourcontrolnotificationhandlercodehere

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

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

fff=0;

}

m_result+=_T("1");

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

}

voidCCalculatorDlg:

:

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

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(fff==1){

m_result=_T("");

fff=0;

}

m_result+=_T("2");

UpdateData(FALSE);

}

voidCCalculatorDlg:

:

OnButton3()//3

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(fff==1){

m_result=_T("");

fff=0;

}

m_result+=_T("3");

UpdateData(FALSE);

}

voidCCalculatorDlg:

:

OnButton4()//4

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(fff==1){

m_result=_T("");

fff=0;

}

m_result+=_T("4");

UpdateData(FALSE);

}

voidCCalculatorDlg:

:

OnButton5()//5

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(fff==1){

m_result=_T("");

fff=0;

}

m_result+=_T("5");

UpdateData(FALSE);

}

voidCCalculatorDlg:

:

OnButton6()//6

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(fff==1){

m_result=_T("");

fff=0;

}

m_result+=_T("6");

UpdateData(FALSE);

}

voidCCalculatorDlg:

:

OnButton7()//7

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(fff==1){

m_result=_T("");

fff=0;

}

m_result+=_T("7");

UpdateData(FALSE);

}

voidCCalculatorDlg:

:

OnButton8()//8

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(fff==1){

m_result=_T("");

fff=0;

}

m_result+=_T("8");

UpdateData(FALSE);

}

voidCCalculatorDlg:

:

OnButton9()//9

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(fff==1){

m_result=_T("");

fff=0;

}

m_result+=_T("9");

UpdateData(FALSE);

}

voidCCalculatorDlg:

:

OnButton10()//0

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(fff==1){

m_result=_T("");

fff=0;

}

m_result+=_T("0");

UpdateData(FALSE);

}

voidCCalculatorDlg:

:

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

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(fff==1){

m_result=_T("");

fff=0;

}

m_result+=_T(".");

UpdateData(FALSE);

}

voidCCalculatorDlg:

:

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

{

//TODO:

Addyourcontrolnotificationhandlercodehere

fff=0;

m_result=_T("3.14159265358979");

UpdateData(FALSE);

}

voidCCalculatorDlg:

:

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

{

//TODO:

Addyourcontrolnotificationhandlercodehere

n=1;

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

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

}

voidCCalculatorDlg:

:

OnBUTTONjian()//‘减’,同理

{

//TODO:

Addyourcontrolnotificationhandlercodehere

n=2;

data=strtod(m_result,NULL);

m_result=_T("");

}

voidCCalculatorDlg:

:

OnBUTTONchen()//乘

{

//TODO:

Addyourcontrolnotificationhandlercodehere

n=3;

data=strtod(m_result,NULL);

m_result=_T("");

}

voidCCalculatorDlg:

:

OnBUTTONchu()//除

{

//TODO:

Addyourcontrolnotificationhandlercodehere

n=4;

data=strtod(m_result,NULL);

m_result=_T("");

}

voidCCalculatorDlg:

:

OnBUTTONcifang()//次方

{

//TODO:

Addyourcontrolnotificationhandlercodehere

n=5;

data=strtod(m_result,NULL);

m_result=_T("");

}

voidCCalculatorDlg:

:

OnBUTTONDel()//退格

{

//TODO:

Addyourcontrolnotificationhandlercodehere

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

UpdateData(FALSE);

}

voidCCalculatorDlg:

:

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

{

//TODO:

Addyourcontrolnotificationhandlercodehere

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);

}

elseif(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时,即指数没小数

doublei=strtod(m_result,NULL),data1=data;

for(;i>1;i--)

{

data*=data1;

}

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

UpdateData(FALSE);

}

}

}

fff=1;

}

 

voidCCalculatorDlg:

:

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

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_result=_T("");

UpdateData(FALSE);

}

 

voidCCalculatorDlg:

:

OnBUTTONsin()//sin

{

//TODO:

Addyourcontrolnotificationhandlercodehere

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

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

UpdateData(FALSE);

fff=1;

}

voidCCalculatorDlg:

:

OnBUTTONcos()//cos

{

//TODO:

Addyourcontrolnotificationhandlercodehere

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

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

UpdateData(FALSE);

fff=1;

}

voidCCalculatorDlg:

:

OnBUTTONtan()//tan

{

//TODO:

Addyourcontrolnotificationhandlercodehere

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

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

UpdateData(FALSE);

fff=1;

}

voidCCalculatorDlg:

:

OnBUTTONsqrt()//sqrt,即取平方根

{

//TODO:

Addyourcontrolnotificationhandlercodehere

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;

}

 

voidCCalculatorDlg:

:

OnBUTTONjiecheng()//阶乘

{

//TODO:

Addyourcontrolnotificationhandlercodehere

data=strtod(m_result,NULL);

doublei=data-1;

for(;i>0;i--)

{

data*=i;

}

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

UpdateData(FALSE);

fff=1;

}

voidCCalculatorDlg:

:

OnBUTTONlog()//lg

{

//TODO:

Addyourcontrolnotificationhandlercodehere

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

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

UpdateData(FALSE);

fff=1;

}

voidCCalculatorDlg:

:

OnBUTTONln()//ln

{

//TODO:

Addyourcontrolnotificationhandlercodehere

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

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

UpdateData(FALSE);

fff=1;

}

voidCCalculatorDlg:

:

OnBUTTONzhengfu()//正负取反

{

//TODO:

Addyourcontrolnotificationhandlercodehere

data=-strtod(m_result,NULL);

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

UpdateData(FALSE);

}

voidCCalculatorDlg:

:

OnBUTTONdaoshu()//1/x

{

//TODO:

Addyourcontrolnotificationhandlercodehere

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

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

UpdateData(FALSE);

fff=1;

}

voidCCalculatorDlg:

:

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

{

//TODO:

Addyourcontrolnotificationhandlercodehere

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

}

 

五、程序运行展示:

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

这是我们程序打开的界面,是不是很简洁?

很符合简易计算器这个称号吧。

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

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

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

六、感悟和心得:

经过本次简易计算器的制作,巩固了C语言学到的知识,学到了MFC可视化界面基本的编程方法,对C++面向对象的编程思想有了更深刻的理解,增加了编写程序的能力。

对类的类的封装和设计也有了一种新的认识,丰富了自己的知识,增添了自己对专业的兴趣和热爱之情。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1