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






