设为首页 加入收藏

TOP

【C++自学之旅】MFC计算器设计
2016-09-20 12:03:27 】 浏览:304
Tags:自学 之旅 MFC 计算器 设计

自学C++,看了一段时间孙鑫C++视频,想着还是自己实践一个吧,于是花了半天时间做了一个计算器,基本功能正常,仅供一同学习的初学者参考!

建立一个基本对话框工程,利用Contrl画出如下界面。

图1.

给编辑框添加float变量m_abc。

图2.

并且在C**Dlg中添加如下变量

图3

在C**Dlg的OnInitDialog()中将上述变量初始化

图4

给上述图1中的控件添加成员函数.

图5

图6

到目前为止,准备工作已经做好。

下面我对图3中的变量进行解释:

我以加法为例:

m_abc=num_a+num_b;

num_contrl:当前录入的是num_a,还是num_b。(0为num_a 1为num_b)

num_JJCC:此次运算的运算符。(1-4,分别表示加减乘除)

num_point:是否有小数点。(0表示没有小数点,1表示有小数点)

num_point_times:小数点后面的位数。(用于中间运算)

下面是按钮0-9的程序:

void CJSQQDlg::OnButton0() //数字0

{

// TODO: Add your control notification handler code here

float num;

char i;

num=1;

if(0==num_contrl)//录入num_a

{

if(0==num_point)//没有小数点

{

num_a=num_a*10+0;//当前num_a的数值,如果按下数字5,将0改为5即可。

}

else if(1==num_point)//有小数点

{

num_point_times++;//记录小数点位数

for(i=1;i<=num_point_times;i++)

{

num=10*num;

}

num=0/num;//此处0表示录入的数字是0,如果按下数字5,将0改为5即可。

num_a=num_a+num;//得出num_a的值

}

UpdateData();//在编辑框中显示num_a的值

m_abc=num_a;

UpdateData(false);

}

else if(1==num_contrl)//录入num_b,与录入num_a一样,只需少许修改即可。

{

if(0==num_point)

{

num_b=num_b*10+0;//0改为-

}

else if(1==num_point)

{

num_point_times++;

for(i=1;i<=num_point_times;i++)

{

num=10*num;

}

num=0/num;//0改为--

num_b=num_b+num;

}

UpdateData();

m_abc=num_b;

UpdateData(false);

}

}

小数点:

void CJSQQDlg::OnButton_Point()

{

// TODO: Add your control notification handler code here

num_point=1;

}

等于符号:

void CJSQQDlg::OnButton_DengYu()

{

// TODO: Add your control notification handler code here

num_contrl=3;//按下等于符号后,不再录入其他数据

if(0==num_JJCC)

return;

if(1==num_JJCC)//+

{

UpdateData();

m_abc=num_a+num_b;

UpdateData(false);

}

if(2==num_JJCC)//-

{

UpdateData();

m_abc=num_a-num_b;

UpdateData(false);

}

if(3==num_JJCC)//*

{

UpdateData();

m_abc=num_a*num_b;

UpdateData(false);

}

if(4==num_JJCC)//÷

{

UpdateData();

m_abc=num_a/num_b;

UpdateData(false);

}

}

加减乘除的:

void CJSQQDlg::OnButton_Jia()

{

// TODO: Add your control notification handler code here

num_contrl=1;

num_point=0;

num_point_times=0;

num_JJCC=1;

}

void CJSQQDlg::OnButton_Jian()

{

// TODO: Add your control notification handler code here

num_contrl=1;

num_point=0;

num_point_times=0;

num_JJCC=2;

}

void CJSQQDlg::OnButton_Cheng()

{

// TODO: Add your control notification handler code here

num_contrl=1;

num_point=0;

num_point_times=0;

num_JJCC=3;

}

void CJSQQDlg::OnButton_Chu()

{

// TODO: Add your control notification handler code here

num_contrl=1;

num_point=0;

num_point_times=0;

num_JJCC=4;

}

CE按钮:

void CJSQQDlg::OnButtonCE()

{

// TODO: Add your control notification handler code here

num_a=0;

num_b=0;

num_contrl=0;

m_abc=0;

num_point=0;

num_point_times=0;

UpdateData();

m_abc=0;

UpdateData(false);

}

制作完成:

至此一个计算器制作完毕了,希望对大家有所帮助,由于是制作完毕后才一步一步的编写此文,难免有所疏漏,还望谅解,有不明之处,可以给我留言!

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++基础复习心得3 下一篇osgearth入门图解-用VC++做一个地..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目