资源描述
中南大学
本科生课程设计(实践)任务书、设计汇报
(C++程序设计)
题 目
简单计算器
学生姓名
李珍勤
指导老师
李大扬
学 院
资源加工和生物工程学院
专业班级
无机非金属材料1302班
学生学号
计算机基础教学试验中心
06 月26 日
简单计算器制作
摘要:MFC,calculator,加减乘除
关键词:计算器
1 计算器开发设计思想
(1) 试验目标:模拟日常生活中所用计算器,自行设计一个简单体系设计:
(2) 程序是一个简单计算器,能正确输入数据,能实现加、减、乘、除等算术运算,能进行简单三角运算,运算结果能正确显示,能够清楚数据等。
(3) 设计思绪:
(4) 先在Visual C++ 6.0中建立一个MFC工程文件,名为calculator.
(5) 在对话框中添加合适编辑框、按钮、静态文件、复选框和单选框
(6) 设计按钮,并修改其对应ID和Caption.
(7) 选择和设置各控件单击鼠标事件。
(8) 为编辑框添加double类型关联变量m_edit1.
(9) 在calculatorDlg.h中添加math.h头文件,然后添加public组员。
(10) 打开calculatorDlg.cpp文件,在结构函数中,进行组员初始化和完善各控件响应函数代码。
(11) 计算器程序,实现简单计算功效。
2 计算器源代码及系统设计介绍
添加public组员:
double tempvalue; //存放中间变量
double result; //存放显示结果值
int sort; //判定后面是何种运算:1.加法 2.减法 3.乘法 4.除法
int append; //判定后面是否添加数字
l 组员初始化:
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;
}
l 各控件响应函数代码:
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);
}
简单计算器:
运行测试:
3 计算器开发体会
A. 在做上面那个简单计算器时候,碰到问题极少,而且差不多全部是些很小问题,很轻易就处理了
B. 刚开始不知道怎样设置响应事件,怎样把这些小程序连接形成一个系统。
C. 在运行调试时候,发觉计算器减法和除法功效犯错,原来是减数和被减数、除数和被除数位置交换了;还有,连续点击“=”时显示结果会不停变动,处理方法是:加“sort=0;”语句;另外,在点击“=”后,再点击数字键时,会发觉点击对应数字会显示在原显示结果后面,处理方法是:加“append=1;”语句
D. 以后,在做后面测试和思索时,碰到问题就很多了。其中最棘手就是Backspace键和连续四则运算实现,其次就是SQRT,tan,tanh,AC等了解和响应代码编写,再者就是正负号和小数点处理,其工程量很大。
E. 不过还有很多细节问题处理不了,比如小数后面零因为是double型而不是字符型,所以显示不出来,还有连续四则运算实现不了,不过连续单一运算还是能够运行。
F. 经过此次试验,我首次认识了MFC,了解到其功效强大,及其实用性之强,只不过我还只是接触到其冰山一角而已,要想真正地掌握MFC还有很长路要走,还要投入更多精力。
展开阅读全文