软件课程设计实验报告(可视化)1

更新时间:2023-05-23 07:28:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

软件课程设计实验报告(可视化)

《软件课程设计》报告

班 级: 信安10-1 姓 名: 学 号: 指导老师:

中国矿业大学计算机科学与技术学院

软件课程设计实验报告(可视化)

第三阶段 可视化编程

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)给相应的数字和运算符按钮添加相关的函数和变量;

软件课程设计实验报告(可视化)

4.详细设计与编码:

(1)启动Visual C++,新建一个Visual C++项目,选用MFC应用程序模板,工程名称为“简单计算器”;

(2)在应用程序向导的“程序类型”选项中选择“基本对话”,然后按照步骤完成项目的建立;

软件课程设计实验报告(可视化)

软件课程设计实验报告(可视化)

软件课程设计实验报告(可视化)

软件课程设计实验报告(可视化)

(3)在Resource View窗口中打开主对话框资源IDD_MY_DIALOG,利用资源编辑器创建所需要的对话框模板;

(4)右击个控件,打开Properties窗口,从中设置个控件的属性; 编辑框:IDC_EDIT_PUTOUT 默认设置; 按钮: IDC_NUMBER1 Caption:“1” 按钮: IDC_NUMBER2 Caption:“2”

软件课程设计实验报告(可视化)

按钮: IDC_NUMBER3 Caption:“3” 按钮: IDC_NUMBER4 Caption:“4” 按钮: IDC_NUMBER5 Caption:“5” 按钮: IDC_NUMBER6 Caption:“6” 按钮: IDC_NUMBER7 Caption:“7” 按钮: IDC_NUMBER8 Caption:“8” 按钮: IDC_NUMBER9 Caption:“9” 按钮: IDC_NUMBER10 Caption:“0” 按钮: IDC_NUMBER11 Caption:“+/-” 按钮: IDC_NUMBER12 Caption:“退格” 按钮: IDC_NUMBER13 Caption:“/” 按钮: IDC_NUMBER14 Caption:“*” 按钮: IDC_NUMBER15 Caption:“+” 按钮: IDC_NUMBER16 Caption:“—” 按钮: IDC_NUMBER17 Caption:“C” 按钮: IDC_NUMBER18 Caption:“Sqrt” 按钮: IDC_NUMBER19 Caption:“1/X” 按钮: IDC_NUMBER20 Caption:“=”

(5)为CMyDlg类中对应的控件添加消息映射函数:

在“简单计算器Dlg.h”文件中添加下述代码: afx_msg void OnNumberKey(UINT nID); afx_msg void OnOperationKey(UINT nID); 如下图:

在“简单计算器Dlg.cpp”文件中添加下述代码:

ON_COMMAND_RANGE(IDC_NUMBER1,IDC_NUMBER10,OnNumberKey) ON_COMMAND_RANGE(IDC_NUMBER11,IDC_NUMBER20,OnOperationKey)

如下图:

(6)从Class Wizard为CMyDlg 类中的IDC_EDIT_PUTOUT控件添加变量类型为double,变量名称为m_number的变量;

如下图:

软件课程设计实验报告(可视化)

(7)为CMyDlg

类添加以下变量和函数;

(8)为OnNumberKey()函数添加如下代码,完成数字按钮被单击时记录运算数的功能;

//数字按钮被单击,完成记录运算数的功能 void CMyDlg::OnNumberKey(UINT nID) {

int n=0; //获取数字 switch(nID) {

case IDC_NUMBER1:n=1;break; case IDC_NUMBER2:n=2;break; case IDC_NUMBER3:n=3;break; case IDC_NUMBER4:n=4;break; case IDC_NUMBER5:n=5;break; case IDC_NUMBER6:n=6;break; case IDC_NUMBER7:n=7;break; case IDC_NUMBER8:n=8;break; case IDC_NUMBER9:n=9;break; case IDC_NUMBER10:n=0;break; }

//变更运算符

if(NumberState==1) { m_number=m_number*10+n; number1=m_number; UpdateData(FALSE); }

//第二运算符

软件课程设计实验报告(可视化)

else { m_number=m_number*10+n; number2=m_number; UpdateData(FALSE); } }

(9)为OnOperationKey()函数添加如下代码,完成操作符按钮被单击时完成运算的功能;

//操作符按钮被单击,完成运算功能

void CMyDlg::OnOperationKey(UINT nID) {

//操作符号 switch(nID) {

case IDC_NUMBER11: //负号 m_number=-m_number; if(NumberState==1) number1=m_number; else number2=m_number; UpdateData(FALSE); break;

case IDC_NUMBER12: //退格 m_number=(int)m_number/10; if(NumberState==1) number1=m_number; else number2=m_number; UpdateData(FALSE); break;

case IDC_NUMBER13: // / OperationState=1; m_number=0; UpdateData(FALSE); NumberState=2; break;

case IDC_NUMBER14: // OperationState=2; m_number=0;

软件课程设计实验报告(可视化)

UpdateData(FALSE); NumberState=2; break;

case IDC_NUMBER15: // OperationState=3; m_number=0; UpdateData(FALSE); NumberState=2; break;

case IDC_NUMBER16: //~ OperationState=4; m_number=0; UpdateData(FALSE); NumberState=2; break;

case IDC_NUMBER17: // C number1=number2=m_number=0; UpdateData(FALSE); NumberState=1; break;

case IDC_NUMBER18: //sqrt number1=m_number=sqrt(number1); UpdateData(FALSE); break;

case IDC_NUMBER19: // 1/X number1=m_number=(double)1/number1; UpdateData(FALSE); break;

case IDC_NUMBER20: //等号 cal(); NumberState=1; break; } }

(10)为cal()函数添加如下代码,完成运算的功能; void CMyDlg::cal() {

switch(OperationState)

软件课程设计实验报告(可视化)

//运算符 { //除 case 1: m_number=(double)number1/number2; NumberState=1; UpdateData(FALSE); break; //乘 case 2: m_number=number1*number2; NumberState=1; UpdateData(FALSE); break; //加 case 3: m_number=number1+number2; NumberState=1; UpdateData(FALSE); break; //减 case 4: 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”

软件课程设计实验报告(可视化)

(2)

进行操作:“20”、“-”、“12”、“=” 结果输出:“8”

(3)

进行操作:“5”、“*”、“12”、“=” 结果输出:“60”

软件课程设计实验报告(可视化)

(4)

进行操作:“12”、“/”、“2”、“=” 结果输出:“6”

(5)

进行操作:“9”、“sqrt” 结果输出:“3”

软件课程设计实验报告(可视化)

(6)

进行操作:“5”、“1/X” 结果输出:“0.2”

7.设计体会:

(1)此次实验设计步骤较多,设计过程中出想的问题也较多,实验中通过了多次的修改与调试后才得到了最终的预期结果。通过这次实验,收获很多,积累了经验;初步了解并学会了MFC的基础编程。 (2)注:在本次实验中,添加按钮时的顺序要符合按钮对应的“IDC_NUMBER”,一旦存在不符合的现象,就会出现使按钮功能失效的情况。

软件课程设计实验报告(可视化)

本文来源:https://www.bwwdw.com/article/qzd4.html

Top