您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 软件课程设计实验报告(可视化)1
1《软件课程设计》报告班级:信安10-1姓名:学号:指导老师:中国矿业大学计算机科学与技术学院2第三阶段可视化编程1.题目:用你熟悉的一种可视化编程语言实现如下图所示的计算器。该计算器需要实现基础的数学运算,如加,减,乘,除。2.需求分析:设计一个MFC程序,能够实现基础的数学运算,例如:加、减、乘、除。根据题目要求,规定如下:测试数据:进行操作:“1”、“+”、“10”、“=”结果输出:“11”进行操作:“20”、“-”、“12”、“=”结果输出:“8”进行操作:“5”、“*”、“12”、“=”结果输出:“60”进行操作:“12”、“/”、“2”、“=”结果输出:“6”进行操作:“9”、“sqrt”结果输出:“3”进行操作:“5”、“1/X”结果输出:“0.2”3.概要设计(1)设计对话框如下:(2)编辑框用来输入和输出结果;(3)给相应的数字和运算符按钮添加相关的函数和变量;34.详细设计与编码:(1)启动VisualC++,新建一个VisualC++项目,选用MFC应用程序模板,工程名称为“简单计算器”;(2)在应用程序向导的“程序类型”选项中选择“基本对话”,然后按照步骤完成项目的建立;4567(3)在ResourceView窗口中打开主对话框资源IDD_MY_DIALOG,利用资源编辑器创建所需要的对话框模板;(4)右击个控件,打开Properties窗口,从中设置个控件的属性;编辑框:IDC_EDIT_PUTOUT默认设置;按钮:IDC_NUMBER1Caption:“1”按钮:IDC_NUMBER2Caption:“2”8按钮:IDC_NUMBER3Caption:“3”按钮:IDC_NUMBER4Caption:“4”按钮:IDC_NUMBER5Caption:“5”按钮:IDC_NUMBER6Caption:“6”按钮:IDC_NUMBER7Caption:“7”按钮:IDC_NUMBER8Caption:“8”按钮:IDC_NUMBER9Caption:“9”按钮:IDC_NUMBER10Caption:“0”按钮:IDC_NUMBER11Caption:“+/-”按钮:IDC_NUMBER12Caption:“退格”按钮:IDC_NUMBER13Caption:“/”按钮:IDC_NUMBER14Caption:“*”按钮:IDC_NUMBER15Caption:“+”按钮:IDC_NUMBER16Caption:“—”按钮:IDC_NUMBER17Caption:“C”按钮:IDC_NUMBER18Caption:“Sqrt”按钮:IDC_NUMBER19Caption:“1/X”按钮:IDC_NUMBER20Caption:“=”(5)为CMyDlg类中对应的控件添加消息映射函数:在“简单计算器Dlg.h”文件中添加下述代码:afx_msgvoidOnNumberKey(UINTnID);afx_msgvoidOnOperationKey(UINTnID);如下图:在“简单计算器Dlg.cpp”文件中添加下述代码:ON_COMMAND_RANGE(IDC_NUMBER1,IDC_NUMBER10,OnNumberKey)ON_COMMAND_RANGE(IDC_NUMBER11,IDC_NUMBER20,OnOperationKey)如下图:(6)从ClassWizard为CMyDlg类中的IDC_EDIT_PUTOUT控件添加变量类型为double,变量名称为m_number的变量;如下图:9(7)为CMyDlg类添加以下变量和函数;(8)为OnNumberKey()函数添加如下代码,完成数字按钮被单击时记录运算数的功能;//数字按钮被单击,完成记录运算数的功能voidCMyDlg::OnNumberKey(UINTnID){intn=0;//获取数字switch(nID){caseIDC_NUMBER1:n=1;break;caseIDC_NUMBER2:n=2;break;caseIDC_NUMBER3:n=3;break;caseIDC_NUMBER4:n=4;break;caseIDC_NUMBER5:n=5;break;caseIDC_NUMBER6:n=6;break;caseIDC_NUMBER7:n=7;break;caseIDC_NUMBER8:n=8;break;caseIDC_NUMBER9:n=9;break;caseIDC_NUMBER10:n=0;break;}//变更运算符if(NumberState==1){m_number=m_number*10+n;number1=m_number;UpdateData(FALSE);}//第二运算符10else{m_number=m_number*10+n;number2=m_number;UpdateData(FALSE);}}(9)为OnOperationKey()函数添加如下代码,完成操作符按钮被单击时完成运算的功能;//操作符按钮被单击,完成运算功能voidCMyDlg::OnOperationKey(UINTnID){//操作符号switch(nID){caseIDC_NUMBER11://负号m_number=-m_number;if(NumberState==1)number1=m_number;elsenumber2=m_number;UpdateData(FALSE);break;caseIDC_NUMBER12://退格m_number=(int)m_number/10;if(NumberState==1)number1=m_number;elsenumber2=m_number;UpdateData(FALSE);break;caseIDC_NUMBER13:///OperationState=1;m_number=0;UpdateData(FALSE);NumberState=2;break;caseIDC_NUMBER14://OperationState=2;m_number=0;11UpdateData(FALSE);NumberState=2;break;caseIDC_NUMBER15://OperationState=3;m_number=0;UpdateData(FALSE);NumberState=2;break;caseIDC_NUMBER16://~OperationState=4;m_number=0;UpdateData(FALSE);NumberState=2;break;caseIDC_NUMBER17://Cnumber1=number2=m_number=0;UpdateData(FALSE);NumberState=1;break;caseIDC_NUMBER18://sqrtnumber1=m_number=sqrt(number1);UpdateData(FALSE);break;caseIDC_NUMBER19://1/Xnumber1=m_number=(double)1/number1;UpdateData(FALSE);break;caseIDC_NUMBER20://等号cal();NumberState=1;break;}}(10)为cal()函数添加如下代码,完成运算的功能;voidCMyDlg::cal(){switch(OperationState)12//运算符{//除case1:m_number=(double)number1/number2;NumberState=1;UpdateData(FALSE);break;//乘case2:m_number=number1*number2;NumberState=1;UpdateData(FALSE);break;//加case3:m_number=number1+number2;NumberState=1;UpdateData(FALSE);break;//减case4:m_number=number1-number2;NumberState=1;UpdateData(FALSE);break;}number1=m_number;OperationState=0;}至此,程序编写完成,编译运行即可。5,用户使用说明:(1)打开程序;(2)按照需要执行操作;(3)单击“=”得出结果;(4)如果要继续运算,需要单击“C”来清零,或者点击“退格”来清零。6.测试分析:(1)进行操作:“1”、“+”、“10”、“=”结果输出:“11”13(2)进行操作:“20”、“-”、“12”、“=”结果输出:“8”(3)进行操作:“5”、“*”、“12”、“=”结果输出:“60”14(4)进行操作:“12”、“/”、“2”、“=”结果输出:“6”(5)进行操作:“9”、“sqrt”结果输出:“3”15(6)进行操作:“5”、“1/X”结果输出:“0.2”7.设计体会:(1)此次实验设计步骤较多,设计过程中出想的问题也较多,实验中通过了多次的修改与调试后才得到了最终的预期结果。通过这次实验,收获很多,积累了经验;初步了解并学会了MFC的基础编程。(2)注:在本次实验中,添加按钮时的顺序要符合按钮对应的“IDC_NUMBER”,一旦存在不符合的现象,就会出现使按钮功能失效的情况。16
本文标题:软件课程设计实验报告(可视化)1
链接地址:https://www.777doc.com/doc-3490680 .html