1. 题目:简单计算器
2. 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。
3. 实验主要硬件软件环境:Window 7Visual C++ 6.0
4. 实验内容:
(1) 体系设计:
程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,能进行简单三角运算,运算结果能正确显示,可以清楚数据等。
(2) 设计思路:
1) 先在Visual C++ 6.0中建立一个MFC工程文件,名为calculator.
2) 在对话框中添加适当的编辑框、按钮、静态文件、复选框和单选框
3) 设计按钮,并修改其相应的ID与Caption.
4) 选择和设置各控件的单击鼠标事件。
5) 为编辑框添加double类型的关联变量m_edit1.
6) 在calculatorDlg.h中添加math.h头文件,然后添加public成员。
7) 打开calculatorDlg.cpp文件,在构造函数中,进行成员初始化和完善各控件的响应函数代码。
(3) 程序清单:
● 添加的public成员:
double tempvalue; //存储中间变量
double result; //存储显示结果的值
int sort; //判断后面是何种运算:1.加法 2.减法 3.乘法 4.除法
int append; //判断后面是否添加数字
● 成员初始化:
CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCalculatorDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCalculatorDlg)
m_edit1 = 0.0;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
tempvalue=0;
result=0;
sort=0;
append=0;
}
● 各控件响应函数代码:
void CCalculatorDlg::OnButton1() //按钮“1”
{
// TODO: Add your control notification handler code here
if(append==1)result=0;
result=result*10+1;
m_edit1=result;
append=0;
UpdateData(FALSE);
}
void CCalculatorDlg::OnButton2() //按钮“2”
{
// TODO: Add your control notification handler code here
if(append==1)result=0;
result=result*10+2;
m_edit1=result;
append=0;
UpdateData(FALSE);
}
void CCalculatorDlg::OnButton3() //按钮“3”
{
// TODO: Add your control notification handler code here
if(append==1)result=0;
result=result*10+3;
m_edit1=result;
append=0;
UpdateData(FALSE);
}
void CCalculatorDlg::OnButton4() //按钮“4”
{
// TODO: Add your control notification handler code here
if(append==1)result=0;
result=result*10+4;
m_edit1=result;
append=0;
UpdateData(FALSE);
}
void CCalculatorDlg::OnButton5() //按钮“5”
{
// TODO: Add your control notification handler code here
if(append==1)result=0;
result=result*10+5;
m_edit1=result;
append=0;
UpdateData(FALSE);
}
void CCalculatorDlg::OnButton6() //按钮“6”
{
// TODO: Add your control notification handler code here
if(append==1)result=0;
result=result*10+6;
m_edit1=result;
append=0;
UpdateData(FALSE);
}
void CCalculatorDlg::OnButton7() //按钮“7”
{
// TODO: Add your control notification handler code here
if(append==1)result=0;
result=result*10+7;
m_edit1=result;
append=0;
UpdateData(FALSE);
}
void CCalculatorDlg::OnButton8() //按钮“8”
{
// TODO: Add your control notification handler code here
if(append==1)result=0;
result=result*10+8;
m_edit1=result;
append=0;
UpdateData(FALSE);
}
void CCalculatorDlg::OnButton9() //按钮“9”
{
// TODO: Add your control notification handler code here
if(append==1)result=0;
result=result*10+9;
m_edit1=result;
append=0;
UpdateData(FALSE);
}
void CCalculatorDlg::OnBUTTONzero() //按钮“0”
{
// TODO: Add your control notification handler code here
if(append==1)result=0;
result=result*10+0;
m_edit1=result;
append=0;
UpdateData(FALSE);
}
void CCalculatorDlg::OnBUTTONequal() //按钮“=”
{
// TODO: Add your control notification handler code here
switch(sort)
{
case 1:result=result+tempvalue;break;
case 2:result=tempvalue-result;break;
case 3:result=result*tempvalue;break;
case 4:result=tempvalue/result;break;
}
m_edit1=result;
sort=0;
append=1;
UpdateData(FALSE);
}
void CCalculatorDlg::OnBUTTONclean() //按钮“C”
{
// TODO: Add your control notification handler code here
tempvalue=0;
result=0;
m_edit1=0.0;
UpdateData(FALSE);
}
void CCalculatorDlg::OnBUTTONplus() //按钮“+”
{
// TODO: Add your control notification handler code here
sort=1;
tempvalue=result;
m_edit1=0;
append=1;
}
void CCalculatorDlg::OnBUTTONminus() //按钮“-”
{
// TODO: Add your control notification handler code here
sort=2;
tempvalue=result;
m_edit1=0;
append=1;
}
void CCalculatorDlg::OnBUTTONmulti() //按钮“*”
{
// TODO: Add your control notification handler code here
sort=3;
tempvalue=result;
m_edit1=0;
append=1;
}
void CCalculatorDlg::OnBUTTONdiv() //按钮“/”
{
// TODO: Add your control notification handler code here
sort=4;
tempvalue=result;
m_edit1=0;
append=1;
}
void CCalculatorDlg::OnRadio1() //按钮“Sin”
{
// TODO: Add your control notification handler code here
m_edit1=sin(result);
UpdateData(FALSE);
}
void CCalculatorDlg::OnRadio2() //按钮“Cos”
{
// TODO: Add your control notification handler code here
m_edit1=cos(result);
UpdateData(FALSE);
}
void CCalculatorDlg::OnRadio3() //按钮“Tan”
{
// TODO: Add your control notification handler code here
m_edit1=tan(result);
UpdateData(FALSE);
}
void CCalculatorDlg::OnRadio4() //按钮“Log10”
{
// TODO: Add your control notification handler code here
m_edit1=log10(result);
UpdateData(FALSE);
}
(4) 程序调试:
简单计算器:
测试与思考:
5. 小结:
A. 在做上面那个简单计算器的时候,遇到的问题很少,而且差不多都是些很小的问题,很容易就解决了
B. 刚开始,在老师没讲课之前,不知道如何设置响应事件,经老师讲解后,很快就解决了
C. 在运行的调试的时候,发现计算器的减法与除法的功能出错,原来是减数与被减数、除数与被除数的位置互换了;还有,连续点击“=”时显示结果会不停变动,解决方法是:加“sort=0;”语句;另外,在点击“=”后,再点击数字键时,会发现点击的相应数字会显示在原显示结果的后面,解决方法是:加“append=1;”语句
D. 后来,在做后面的测试与思考时,遇到的问题就很多了。其中最棘手的就是Backspace键和连续四则运算的实现,其次就是M系列按键(MS:保存;MC:清除;MR:读数;M+:数加)的理解和响应代码的编写,再者就是正负号和小数点的处理,其工程量非常大。
E. 但是还有很多细节问题解决不了,例如小数后面的零因为是double型的而不是字符型,所以显示不出来,还有连续的四则运算实现不了,不过连续的单一运算还是可以运行的。
F. 通过此次试验,我初次认识了MFC,了解到其功能的强大,及其实用性之强,只不过我还只是接触到其冰山一角而已,要想真正地掌握MFC还有很长的路要走,还要投入更多精力。
本文档为【C 语言计算器的实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。