VC++MFC计算器课程设计.docx

上传人:b****6 文档编号:5283157 上传时间:2022-12-14 格式:DOCX 页数:12 大小:111.75KB
下载 相关 举报
VC++MFC计算器课程设计.docx_第1页
第1页 / 共12页
VC++MFC计算器课程设计.docx_第2页
第2页 / 共12页
VC++MFC计算器课程设计.docx_第3页
第3页 / 共12页
VC++MFC计算器课程设计.docx_第4页
第4页 / 共12页
VC++MFC计算器课程设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

VC++MFC计算器课程设计.docx

《VC++MFC计算器课程设计.docx》由会员分享,可在线阅读,更多相关《VC++MFC计算器课程设计.docx(12页珍藏版)》请在冰豆网上搜索。

VC++MFC计算器课程设计.docx

VC++MFC计算器课程设计

Windows程序设计作业报告

设计题目:

MFC计算器

系别:

信息与自动化工程

专业:

电子与通信工程

姓名:

高小雨

学号:

2013704011

一、设计目的及要求

1.1设计目的

能够熟练掌握MFC中的各个控件,消息的处理与添加,能够独立完成一些简单的算法,并且能够具体实现一些功能,真正可以利用功能比较强大的MFC编译出较好的程序代码。

本设计完成的是一个具有比较齐全运算功能的计算器。

1.2设计要求

利用MicrosoftVisualC++的MFC制作一个多功能计算器,要求:

(1)能够实现最基本的加、减、乘、除四则基本运算;

(2)添加了计算类型,分别是弧度制、度数制;

(3)界面有正负、清空、等于方便用户计算使用;

(4)重点是此计算器具有倒数、多次方、开方、三角函数、反三角函数、指数、阶乘等高级运算。

1.3软件、硬件环境

本程序采用MicrosoftVisualC++6.0的英文版本进行编译。

VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。

二、课程设计步骤

2.1Windows消息处理机制的理解

首先编写程序需要对Windows程序的消息处理机制有个比较清晰的了解。

Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。

2.2界面的设计

仿照Windows附件里面的计算器,在Dialog视图中画好界面,主要使用的菜单中的相关控件,并合理布置各个按钮的位置,使界面更加整洁。

在各个控件的属性里依次定义好名称,之后屏幕显示的就是如图一样的可视计算器界面:

三、课程设计内容

3.1概要设计

依次将各个功能按钮设置相关的ID和控件类,一下为各类按键的一个举例,以下为数字0的属性设置,及其ID和标题名称,其余数字键属性设置与其相似。

下图是清零键C的属性,及其ID和标题名称

下图为四则运算加、减、乘、除中“+”的ID和标题名称

下图是弧度按键的属性设置

下图为计算器中三角函数和反三角函数的属性设置

下图是做的一个简单的运算,结果如图中的显示,为double型。

3.1.1程序总体框架描述

3.1.2程序常用类声明

按键0~9的ID设置

IDC_BUT0IDC_BUT1IDC_BUT2IDC_BUT3IDC_BUT4IDC_BUT5IDC_BUT6IDC_BUT7IDC_BUT8IDC_BUT9

计算类型的ID设置

弧度:

IDC_HUDU

角度:

IDC_JIAODU

次方的ID设置

10^x:

IDC_BUTTON_10Xx^y:

IDC_XDEY

2^x:

IDC_2DEXx^2:

IDC_BUTTON_SQRT

三角函数的ID设置

sin:

IDC_SINcos:

IDC_COStan:

IDC_TAN

tanh:

IDC_TANHarctan:

IDC_ARCTANarcos:

IDC_ARCCOS

cosh:

IDC_COSHarcsin:

IDC_ARCSINsinh:

IDC_SINH

四则运算的ID设置

+:

IDC_BUTTON_ADD-:

IDC_BUTTON_MINUS

*:

IDC_BUTTON_MUTIPLY/:

IDC_BUTTON_DIV

清空、等于、正负号、exp、ln、Log、1/x的ID设置

C:

IDC_BUTTON_CLEAR=:

IDC_BUTTON_EQUAL

+/—:

IDC_BUTTON_SIGNexp:

IDC_BUTTON_EXP

ln:

IDC_LNlog:

IDC_LOG1/x:

IDC_BUTTON_RECI

下图是基于基本对话框中的所有函数:

3.2主要代码

计算器主要功能的实现,0—9数字键的代码如下:

//用于数字按钮的调用

1.voidCCounterDlg:

:

onButtonN(intn)

2.{

3.if(m_coff==1.0)

4.m_second=m_second*10+n;//作为整数输入数字时

5.else

6.{

7.m_second=m_second+n*m_coff;//作为小数输入数字

8.

9.}

10.UpdateDisplay(m_second);//更新编辑框的数字显示

11.}

12.//添加各个按钮的消息响应函数

13.voidCCounterDlg:

:

OnBut0()

14.{

15.//TODO:

Addyourcontrolnotificationhandlercodehere

16.onButtonN(0);

17.}

18.////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

19.voidCCounterDlg:

:

OnBut9()

20.{

21.//TODO:

Addyourcontrolnotificationhandlercodehere

22.onButtonN(9);

23.}

24.//用于显示数据

25.voidCCounterDlg:

:

UpdateDisplay(doublen)

26.{

27.m_display.Format(_T("%f"),n);//将double型转换成字符型

28.inti=m_display.GetLength();

29.while(m_display.GetAt(i-1)=='0')//格式化输出,将输出结果后的零截去

30.{m_display.Delete(i-1,1);i--;}

31.UpdateData(false);//更新编辑框变量m_display

32.}

33.//用于计算结果

34.voidCCounterDlg:

:

Calculate(void)

35.{

36.//将前一次数据与当前数据进行运算,作为下一次的第一操作数,并在编辑框显示

37.switch(m_operator.GetAt(0))

38.{

39.case'+':

40.m_first+=m_second;

41.break;

42.case'-':

43.m_first-=m_second;

44.break;

45.case'*':

46.m_first*=m_second;

47.break;

48.case'/':

49.if(fabs(m_second)<=0.000001)//求m_second的绝对值如果为零时

50.{

51.m_display="除数设置有误";

52.UpdateData(false);

53.return;

54.}

55.else

56.m_first/=m_second;break;

57.}

58.m_second=0.0;

59.m_coff=1.0;

60.m_operator=_T("+");

61.UpdateDisplay(m_first);//更新编辑框显示内容

62.}

63.

64.voidCCounterDlg:

:

OnButtonAdd()

65.{

66.//TODO:

Addyourcontrolnotificationhandlercodehere

67.Calculate();

68.m_operator="+";//-*与之相同

69.}

70.voidCCounterDlg:

:

OnButtonDiv()

71.{

72.//TODO:

Addyourcontrolnotificationhandlercodehere

73.Calculate();

74.m_operator.Format(_T("%s"),"/");

75.}

76.//添加三角函数一个函数

77.voidCCounterDlg:

:

TrigFunction()

78.{

79.switch(m_duType)

80.{

81.case0:

82.m_second=m_second;//弧度

83.break;

84.case1:

85.m_second=m_second*m_PI/180;//角度

86.break;

87.

88.}

89.}

90.voidCCounterDlg:

:

OnBnClickedHudu()

91.{

92.//TODO:

Addyourcontrolnotificationhandlercodehere

93.m_duType=0;//系统默认m_duType=0,计算器默认为弧度计算

94.}

95.

96.voidCCounterDlg:

:

OnBnClickedJiaodu()

97.{

98.//TODO:

Addyourcontrolnotificationhandlercodehere

99.m_duType=1;//主要是作为以后函数算法的判断标准

100.}

101.voidCCounterDlg:

:

OnSin()

102.{

103.//TODO:

Addyourcontrolnotificationhandlercodehere

104.TrigFunction();

105.m_second=sin(m_second);

106.UpdateDisplay(m_second);

107.}//其余的三角函数与之类似

108.//计算阶乘的代码

109.//添加函数intjiecheng(intn)利用递归返回阶乘值

110.intCCounterDlg:

:

jiecheng(intn)

111.{

112.if(n==0||n==1)

113.return1;

114.else

115.if(n>1)

116.returnn*jiecheng(n-1);//递归函数求阶乘f(n)=n*f(n-1)

117.}

118.//在n!

的按钮消息处理里,如果输入的不是整数则不能进行阶乘运算

119.voidCCounterDlg:

:

OnNjiecheng()

120.{

121.//TODO:

Addyourcontrolnotificationhandlercodehere

122.if((m_second-(int)m_second)>0)

123.{

124.m_display=("你输入的不是整数,请输入整数!

");

125.UpdateData(false);//如果是非整数,则结束运算,重新开始

126.return;

127.}

128.else

129.{

130.m_second=(int)jiecheng(m_second);

131.UpdateDisplay(m_second);

132.}

133.}

134.//次方代码

135.voidCCounterDlg:

:

OnButton10x()

136.{

137.//TODO:

Addyourcontrolnotificationhandlercodehere

138.m_second=pow(10,m_second);

139.UpdateDisplay(m_second);//刷新显示结果

140.}//其余的求次方与之类似

四、课程设计总结

本次MFC计算器的制作,学习到了MFC基本的编程方法,增加了自己独立制作程序的能力。

对MFC编程的理解进一步加深。

经过一个多星期的仔细研究,认真揣摩代码,在网上也查阅了不少相关资料,终于能够完整的编译出一套不错的计算器源程序,同时使其具备了很多高级的功能。

当然其中也遇到了许多问题,刚开始的时候按键设置好后,不显示数值,才发现数据改变后没有用UpdateDisplay(false)。

还有在自己写代码时发现,当除数为0的时候,程序出错,才想起来,除数不能为0,经过一番思索与多次尝试解决了这样的一个问题。

在用递归函数求阶乘时出现了求得的结果不对照,结果发现是递归函数用得不对,阶乘函数必须有一个返回值,且值不能为负。

本来想美化一下按键,结果自己水平有限,希望能得到老师的指点。

我以后会更加多多练习一些编程相关的知识,让自己在这方面的越来越熟练,编程技巧越来越丰富。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1