您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 北邮小学期计算机实习报告
2012年计算机实习报告1计算机实习报告姓名:大学霸班级:xxxxxxxxx学号:xxxxxxxxx小班序号:xx指导老师:苗建松题目:基于mfc的科学计算器邮箱:xxxxxxxxx@qq.com2012年计算机实习报告2题目mfc科学计算器实验报告一.功能说明1.1总体功能说明科学计算器包括双目运算和单目运算功能。双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,反正余弦,对数,开方,百分数,整数的进制转换等运算。可对输入任意操作数或直接点击常数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。出现错误会给出相应提示,同时包含清除,退格,退出功能以及有与所有按钮相对应的菜单项。1.2用户界面界面功能:此计算器与现实中的科学计算器类似,每个键都有负责的功能,分为数字键(0,1,……),运算键(+,-,……),功能键(sin,cos,……),进制转换按钮(二进制,……)及界面顶部的编辑框。数字键负责输入操作数,功能键负责执行不同的功能,进制转换按钮可以把结果转换至不同的进制并显示出来,点击等号键输出结果。点击左上方红叉可退出此计算器程序1.3使用方法操作数输入:第一种方法,通过单击数字键,正负号,小数点,百分号或常数输入所需的操作数输入结果会在编辑框中显示;第二种方法,单击编辑框,当编辑框中出现I型光标时,直接使用键盘输入所需的操作数。2012年计算机实习报告3四则运算及幂:在进行四则运算及幂此类双目运算时,先输入第一个操作数,然后单击所需的双目操作符,接着输入第二个操作数,运算完成。接下来要是点击等号“=”则输出运算结果;输入数字就进行新的运算;再单击双目操作符就是进行连算,将结果第一个操作数进行新的运算。三角函数,乘方开方,对数运算:此类属于单目运算,输入操作数,单击操作符,进行单目类运算,运算结果会直接显示在编辑框内。特色之处在于当操作数不在运算符运算函数的定义域内时,程序会弹出消息框报错并清楚错误数据。进制转换按钮:使用方法与单目操作符类似,先输入要转换的十进制数,点击其他进制,屏幕上就会显示转换后的结果。此功能仅限于整数的转换。退格及清除数据按钮(CE,C):如果数据输入有误,点击CE会将编辑框中的数据的最后一位消去,点击C会清除当前存储的数据,重新进行计算。二.程序设计说明2.1总体设计框架2012年计算机实习报告4计算器总流程图2.2关键算法描述结束jieY开始输入数据子函数编辑框关联的量保存至m_nTemp1输入数据子函数进行运算运算是否合法把结果保存到m_strResult所有数据清零弹出对话框显示ERRORNY是否用保存的结果继续进行运算N双目运算符单目运算符是否开始新一轮的计算YN2012年计算机实习报告52.2.1数字键的程序:voidCTestDlg::OnBnClickedBtn0(){//TODO:在此添加控件通知处理程序代码ClickNum(0);}voidCTestDlg::OnBnClickedBtn1(){//TODO:在此添加控件通知处理程序代码ClickNum(1);}voidCTestDlg::OnBnClickedBtn2(){//TODO:在此添加控件通知处理程序代码ClickNum(2);}voidCTestDlg::OnBnClickedBtn3(){//TODO:在此添加控件通知处理程序代码ClickNum(3);}voidCTestDlg::OnBnClickedBtn6(){//TODO:在此添加控件通知处理程序代码ClickNum(6);}voidCTestDlg::OnBnClickedBtn4(){//TODO:在此添加控件通知处理程序代码ClickNum(4);}voidCTestDlg::OnBnClickedBtn5(){//TODO:在此添加控件通知处理程序代码ClickNum(5);2012年计算机实习报告6}voidCTestDlg::OnBnClickedBtn7(){//TODO:在此添加控件通知处理程序代码ClickNum(7);}voidCTestDlg::OnBnClickedBtn8(){//TODO:在此添加控件通知处理程序代码ClickNum(8);}voidCTestDlg::OnBnClickedBtn9(){//TODO:在此添加控件通知处理程序代码ClickNum(9);}2.2.2ClickNum函数voidCTestDlg::ClickNum(constchar*strNum){UpdateData(TRUE);if(m_IsFirstNum){m_strResult=;m_IsFirstNum=FALSE;//若是数值的第一个数字,则清空编辑框,显示第一个数字}m_strResult=m_strResult+strNum;//若是后续数字,则直接添加到原有数字后面UpdateData(FALSE);}2.2.3四则运算及幂的程序voidCTestDlg::OnBnClickedBtnAdd()//加号函数控件{//TODO:在此添加控件通知处理程序代码Compute(m_chOper);2012年计算机实习报告7m_chOper='+';}voidCTestDlg::OnBnClickedBtnResult()//等号函数控件{//TODO:在此添加控件通知处理程序代码Compute(m_chOper);m_chOper='=';}voidCTestDlg::OnBnClickedBtnMult()//乘号函数控件{//TODO:在此添加控件通知处理程序代码Compute(m_chOper);m_chOper='*';}voidCTestDlg::OnBnClickedBtnSub()//减号函数控件{//TODO:在此添加控件通知处理程序代码Compute(m_chOper);m_chOper='-';}voidCTestDlg::OnBnClickedBtnDiv()//除号函数控件{//TODO:在此添加控件通知处理程序代码Compute(m_chOper);m_chOper='/';}voidCTestDlg::OnBnClickedBtnPow()//幂函数控件{//TODO:在此添加控件通知处理程序代码Compute(m_chOper);m_chOper='P';}2.2.4compute函数voidCTestDlg::Compute(charchOper)//操作符函数2012年计算机实习报告8{UpdateData(TRUE);m_nTemp2=atof(m_strResult);//将CString类型化为浮点型switch(chOper){case'+':m_nTemp2=m_nTemp1+m_nTemp2;break;case'-':m_nTemp2=m_nTemp1-m_nTemp2;break;case'*':m_nTemp2=m_nTemp1*m_nTemp2;break;case'/':if(m_nTemp2)//判断被除数是否为零m_nTemp2=m_nTemp1/m_nTemp2;else{MessageBox(ERROR:被除数不能为0);OnBnClickedBtnC();}break;case'P':if(m_nTemp10&&modf(m_nTemp2,&m_nTemp2)!=0){MessageBox(ERROR:负数只有整数幂);OnBnClickedBtnC();}elsem_nTemp2=pow(m_nTemp1,m_nTemp2);default:break;}m_nTemp1=m_nTemp2;m_strResult.Format(%g,m_nTemp2);//将浮点型化为2012年计算机实习报告9CString型m_IsFirstNum=TRUE;m_point=FALSE;UpdateData(FALSE);}2.2.5正负号的程序voidCTestDlg::OnBnClickedBtnSign()//正负号控件{//TODO:在此添加控件通知处理程序代码UpdateData(TRUE);m_nTemp2=atof(m_strResult)*(-1);m_strResult.Format(%g,m_nTemp2);m_nTemp2=0;UpdateData(FALSE);}2.2.6百分号的程序voidCTestDlg::OnBnClickedBtnPercent()//百分数函数控件{//TODO:在此添加控件通知处理程序代码UpdateData(TRUE);m_nTemp2=atof(m_strResult)/100;m_strResult.Format(%g,m_nTemp2);m_nTemp2=0;m_IsFirstNum=TRUE;UpdateData(FALSE);}2.2.7小数点的程序voidCTestDlg::OnBnClickedBtnPoint()//小数点函数控件{//TODO:在此添加控件通知处理程序代码if(m_point){}else{2012年计算机实习报告10ClickNum(.);m_point=TRUE;}}2.2.8三角函数数的程序voidCTestDlg::OnBnClickedBtnSin()//正弦函数控件{//TODO:在此添加控件通知处理程序代码UpdateData(TRUE);doubleang=atof(m_strResult)/180*pi;//弧度转换m_nTemp2=sin(ang);m_strResult.Format(%g,m_nTemp2);m_nTemp2=0;m_IsFirstNum=TRUE;UpdateData(FALSE);}voidCTestDlg::OnBnClickedBtnCos()//余弦函数控件{//TODO:在此添加控件通知处理程序代码UpdateData(TRUE);doubleang=atof(m_strResult)/180*pi;//弧度转换m_nTemp2=cos(ang);m_strResult.Format(%g,m_nTemp2);m_nTemp2=0;m_IsFirstNum=TRUE;UpdateData(FALSE);}voidCTestDlg::OnBnClickedBtnTan()//正切函数控件{//TODO:在此添加控件通知处理程序代码UpdateData(TRUE);doubleang=atof(m_strResult)/180*pi;//弧度转换m_nTemp2=tan(ang);m_strResult.Format(%g,m_nTemp2);m_nTemp2=0;m_IsFirstNum=TRUE;2012年计算机实习报告11UpdateData(FALSE);}2.2.9反三角函数的程序voidCTestDlg::OnBnClickedBtnArcsin()//反正弦函数控件{//TODO:在此添加控件通知处理程序代码UpdateData(TRUE);if((atof(m_strResult))=(-1)&&(atof(m_strResult))=1)//定义域判断{m_nTemp2=asin(atof(m_strResult))/pi*180;//角度转换m_strResult.Format(%g,m_nTemp2);m_nTemp2=0;}else{MessageBox(ERROR:定义域[-1,1]);OnBnClickedBtnC();}m_IsFirstNum=TRUE;UpdateData(FALSE);}voidCTestDlg::OnBnClickedBtnArccos()//反余弦函数控件{//TODO:在此添加控件通知处理程序代码UpdateData(TRUE);if((atof(m_strResult))=(-1)&&(atof(m_strResult))=1)//定义域
本文标题:北邮小学期计算机实习报告
链接地址:https://www.777doc.com/doc-2639345 .html