基于mfc编程的计算器开发与实现本科学位论文.docx

上传人:b****2 文档编号:17875846 上传时间:2023-08-04 格式:DOCX 页数:27 大小:381.92KB
下载 相关 举报
基于mfc编程的计算器开发与实现本科学位论文.docx_第1页
第1页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第2页
第2页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第3页
第3页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第4页
第4页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第5页
第5页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第6页
第6页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第7页
第7页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第8页
第8页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第9页
第9页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第10页
第10页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第11页
第11页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第12页
第12页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第13页
第13页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第14页
第14页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第15页
第15页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第16页
第16页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第17页
第17页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第18页
第18页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第19页
第19页 / 共27页
基于mfc编程的计算器开发与实现本科学位论文.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于mfc编程的计算器开发与实现本科学位论文.docx

《基于mfc编程的计算器开发与实现本科学位论文.docx》由会员分享,可在线阅读,更多相关《基于mfc编程的计算器开发与实现本科学位论文.docx(27页珍藏版)》请在冰点文库上搜索。

基于mfc编程的计算器开发与实现本科学位论文.docx

基于mfc编程的计算器开发与实现本科学位论文

提供全套,各专业毕业设计

 

PINGDINGSHANUNIVERSITY

实训论文(设计)

 

 

题目:

基于MFC编程的计算器

开发与实现

院(系):

软件学院

专业年级:

13级网络工程师

姓名:

姚龙龙

学号:

131530439

指导教师:

徐向艺

2014年11月2日

 

基于MFC编程的计算器开发与实现

摘要

 

关键词:

Vc++6.0MFC代码编辑器结构功能图程序流程图类向导

 

目录

(采用系统自动生成目录)

1绪论1

1.1项目设计的目的1

1.2项目设计的意义1

1.3项目的主要内容和基本结构1

1.4本章小结1

2工具及核心功能介绍2

2.1开发工具2

2.1.1VisualC++的概述2

2.1.2VisualC++的特点2

2.1.3项目和项目工作区2

2.1.4代码编辑器2

2.2项目结构和程序流程2

2.2.1结构功能图3

2.2.2程序流程图3

2.3核心模块功能实现4

2.3.1四则运算模块实现4

2.3.2特殊运算模块实现5

2.3.3删除整个字符串模块实现6

3系统运行环境及截图7

3.1窗口数字和元素按钮的类向导建立7

3.2按钮响应函数7

3.3运行函数10

附录10

心得16

参考文献16

1绪论

1.1项目设计的目的

1、巩固并加深学生对C++语言程序设计知识的理解;

2、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;

3、灵活应用类库模式下编写程序的技巧。

4、能够熟练掌握MFC中的各个控件,消息的添加和处理,能够独立完成一些简单的算法,并且能够具体实现一些功能。

5、掌握书写程序设计开发文档的能力。

6、掌握将具体问题抽象为类与对象的方法。

1.2项目设计的意义

通过这次实训使我们掌握基本软件开发的能力,增强对相关专业知识的感性认识,提高应用所学知识在实践中发现问题,分析问题,解决问题的能力。

1.3项目的主要内容和基本结构

课题名称:

计算器的实现

说明:

利用MFC实现一个计算器基本的功能,能执行简单的运算。

要求:

(1)用“计算器”的标准视图执行简单的计算。

基本结构:

(1)组成:

简易计算器由编辑框,数字按钮,功能按钮组成。

1.4本章小结

在前面已经基本明确了本课程报告制作的目的,要求,以及简易计算器的功能,外形的要求,为后期的制作,明确了努力方向。

2工具及核心功能介绍

2.1开发工具

2.1.1VisualC++的概述

MicrosoftVisualC++是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。

它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。

它以拥有“语法高亮”,IntelliSense(自动完成功能)以及高级除错功能而著称。

比如,它允许用户进行远程调试,单步执行等。

还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。

其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。

这些特征明显缩短程式编辑、编译及连结花费的时间,在大型软件计划上尤其显著。

2.1.2VisualC++的特点

(1)VC++6.0作为一个主流的开发平台一直深受编程爱好者的喜爱,是当下主流的Windows平台上的编程环境。

(2)VC++6.0必须具备良好的C/C++的基础,必要的英语阅读能力也是必不可少的,因为大量的技术文档多以英文形式发布。

2.1.3项目和项目工作区

(1)项目截图

(2)项目工作区

VisualC++6.0有自己的项目工作管理区,方便用户在进行项目开发时的对项目的管理和操作。

项目管理区提供三种视图供用户选择,分别是Classview,Resourceview,和Fileview。

在实际的操作中给用户提供了很大的方便。

2.1.4代码编辑器

VC++6.0的代码编辑器使用起来也是十分的方便。

用户可以同时打开多个文档,这适用于用户在进行多文件操作,可以对多个文件内的代码进行编辑。

当然用户也可以最大化当前正在浏览的文件,这样只能对当前文件内的代码进行编辑操作。

2.2项目结构和程序流图

2.2.1结构功能图

序号

文件名

主要功能

备注

1

+

加法求和

两个操作数

2

-

减法求差

两个操作数

3

*

乘法求积

两个操作数

4

/

除法求商

两个操作数

5

%

求模

两个操作数

6

Sqrt

求平方根

一个操作数

7

1/x

求导数

一个操作数

8

Back

退格

一个操作数

9

+/-

转换正负

一个操作数

10

C/CE

寄存器清零

11

=

等于

 

2.2.2程序流程图

2.3核心模块功能实现

2.3.1四则运算模块实现

1.加法

voidCCalcDlg:

:

OnBnClickedAdd()

{

if(!

b_Start)

{

return;

}

if(en_LastSignl==en_none)

{

en_LastSignl=en_add;

}

RunOperation(en_LastSignl);

en_LastSignl=en_add;

}

2.减法

voidCCalcDlg:

:

OnBnClickedAdd()

{

if(!

b_Start)

{

return;

}

if(en_LastSignl==en_none)

{

en_LastSignl=en_add;

}

RunOperation(en_LastSignl);

en_LastSignl=en_add;

}

3.乘法

voidCCalcDlg:

:

OnBnClickedMul()

{

if(!

b_Start)

{

return;

}

if(en_LastSignl==en_none)

{

cs_Num[1]="1";

en_LastSignl=en_mul;

}

RunOperation(en_LastSignl);

en_LastSignl=en_mul;

}

4.除法

voidCCalcDlg:

:

OnBnClickedDivide()

{

if(!

b_Start)

{

return;

}

if(en_LastSignl==en_none)

{

cs_Num[1]="1";

en_LastSignl=en_div;

}

RunOperation(en_LastSignl);

en_LastSignl=en_div;

}

2.3.2特殊运算模块

voidCCalcDlg:

:

RunOperation(eum_signle_signl)

{

doublesum=0;

doublenAdd1;

doublenAdd2;

nAdd1=atof(cs_Num[0]);

nAdd2=atof(cs_Num[1]);

switch(e_signl)

{

caseen_add:

sum=nAdd1+nAdd2;

break;

caseen_sub:

sum=nAdd1-nAdd2;

break;

caseen_mul:

sum=nAdd1*nAdd2;

break;

caseen_div:

sum=nAdd1/nAdd2;

break;

caseen_none:

sum=nAdd1;

break;

}

cs_Num[0].Format("%.3lf",sum);

SetDlgItemText(IDC_EDIT_SHOW,cs_Num[0]);

if(!

b_Hasport&&-1==cs_Num[0].Find('.'))

{

CStringtemp;

GetDlgItemText(IDC_EDIT_SHOW,temp);

temp+=".";

SetDlgItemText(IDC_EDIT_SHOW,temp);

}

m_i=1;

b_Hasport=FALSE;

b_Start=FALSE;

cs_Num[m_i]="0";

}

voidCCalcDlg:

:

PutIntoNum(intn)

{

CStringtem_i;

tem_i.Format("%d",n);

CStringtemp;

if(!

b_Start)

{

cs_Num[m_i]=tem_i;

b_Start=TRUE;

SetDlgItemText(IDC_EDIT_SHOW,cs_Num[m_i]);

if(!

b_Hasport)

{

GetDlgItemText(IDC_EDIT_SHOW,temp);

temp+=".";

SetDlgItemText(IDC_EDIT_SHOW,temp);

}

return;

}

cs_Num[m_i]+=tem_i;

SetDlgItemText(IDC_EDIT_SHOW,cs_Num[m_i]);

if(!

b_Hasport)

{

GetDlgItemText(IDC_EDIT_SHOW,temp);

temp+=".";

SetDlgItemText(IDC_EDIT_SHOW,temp);

}

}

2.3.3删除整个字符串模块实现

voidCCalcDlg:

:

InitAllDate()

{

en_LastSignl=en_none;

b_Hasport=FALSE;

b_Start=FALSE;

b_Hasmul=FALSE;

b_Hasdiv=FALSE;

cs_Num[0]="0";

cs_Num[1]="0";

m_i=0;

SetDlgItemText(IDC_EDIT_SHOW,cs_Num[m_i]+".");

}

3系统运行环境及截图

3.1窗口数字和元素按钮类向导的建立

3.1.1窗口数字

在窗口输入数字后,编辑框内会显示操作者输入的操作数,即可实现基本的算数要求。

3.1.2元素按钮的类向导建立

1)元素按钮建立

在中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。

在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出PushButton属性对话框,在该对话框中输入控件的ID值和标题属性,如下图所示。

按照上面的操作过程编辑其他按钮和编辑框等对象的属性。

表3-1各按钮和编辑框等对象的属性

对象

ID

标题或说明

编辑框

IDC_EDIT1

结果显示

按钮

IDC_BUTTON0

0

按钮

IDC_BUTTON1

1

按钮

IDC_BUTTON2

2

按钮

IDC_BUTTON3

3

按钮

IDC_BUTTON4

4

按钮

IDC_BUTTON5

5

按钮

IDC_BUTTON6

6

按钮

IDC_BUTTON7

7

按钮

IDC_BUTTON8

8

按钮

IDC_BUTTON9

9

按钮

IDC_zhengfuhao

+/-

按钮

IDC_BUTTONPoint

.

按钮

IDC_BTN_ADD

+

按钮

IDC_BTN_SUB

-

按钮

IDC_BTN_MUL

*

按钮

IDC_BTN_DIV

/

按钮

IDC_Sqrt

sqrt

按钮

IDC_daoshu

1/x

按钮

IDC_equal

=

按钮

IDC_Back

Backspace

按钮

IDC_CE

CE

按钮

IDC_C

C

完成后界面如下图所示:

2)元素类向导的建立:

在中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。

在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出PushButton类向导对话框,在该对话框中设置单击函数,如下图所示:

依次将每个按钮按照上面的方法创建类向导,建立单击函数即可。

3.2按钮响应函数

控件

消息

函数功能

IDC_zhengfuhao

BN_CLICKED

处理正负号单击按钮

IDC_BUTTONPoint

BN_CLICKED

处理小数点单击按钮

IDC_equal

BN_CLICKED

处理等于单击按钮

IDC_daoshu

BN_CLICKED

处理倒数单击按钮

IDC_baifenbi

BN_CLICKED

处理百分比单击按钮

IDC_Sqrt

BN_CLICKED

处理开平方单击按钮

IDC_BTN_ADD

BN_CLICKED

处理加号单击按钮

IDC_BTN_SUB

BN_CLICKED

处理减号单击按钮

IDC_BTN_MUL

BN_CLICKED

处理乘号单击按钮

IDC_BTN_DIV

BN_CLICKED

处理除号单击按钮

IDC_Back

BN_CLICKED

处理退格键单击按钮

IDC_CE

BN_CLICKED

处理清零单击按钮

IDC_C

BN_CLICKED

处理归零单击按钮

3.3运行函数

virtualBOOLOnInitDialog();

afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);

afx_msgvoidOnPaint();

afx_msgHCURSOROnQueryDragIcon();

afx_msgvoidOnButton5();

afx_msgvoidOnButton7();

afx_msgvoidOnzhengfuhao();

afx_msgvoidOnBUTTONPoint();

afx_msgvoidOnButton1();

afx_msgvoidOnButton0();

afx_msgvoidOnButton2();

afx_msgvoidOnButton3();

afx_msgvoidOnBack();

afx_msgvoidOnbaifenbi();

afx_msgvoidOnButton4();

afx_msgvoidOnButton6();

afx_msgvoidOnButton8();

afx_msgvoidOnButton9();

afx_msgvoidOnC();

afx_msgvoidOnCe();

afx_msgvoidOndaoshu();

afx_msgvoidOnequal();

afx_msgvoidOnSqrt();

afx_msgvoidOnBtnDiv();

afx_msgvoidOnBtnMul();

afx_msgvoidOnBtnSub();

afx_msgvoidOnBtnAdd();

附录

计算器所在类的核心代码:

voidCJisuan3Dlg:

:

OnButton5()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

PutIntoNum(5);

}

voidCJisuan3Dlg:

:

OnButton7()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

PutIntoNum(7);

}

//-+

voidCJisuan3Dlg:

:

Onzhengfuhao()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(!

b_Start)

{

return;

}

CStringtemp;

GetDlgItemText(IDC_EDIT_SHOW,temp);

num=atof(temp);

num=0-num;

temp.Format("%lf",num);

SetDlgItemText(IDC_EDIT_SHOW,temp);

cs_Num[m_i]=temp;

}

voidCJisuan3Dlg:

:

OnBUTTONPoint()

 

//TODO:

Addyourcontrolnotificationhandlercodehere

//已有小数点时

if(b_Hasport)

{

return;

}

//无小数点

cs_Num[m_i]+=".";

b_Hasport=TRUE;

b_Start=TRUE;

SetDlgItemText(IDC_EDIT_SHOW,cs_Num[m_i]);

}

voidCJisuan3Dlg:

:

OnButton1()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

PutIntoNum

(1);

}

voidCJisuan3Dlg:

:

OnButton0()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(cs_Num[m_i]=="0")

{return;}

cs_Num[m_i]+="0";

SetDlgItemText(IDC_EDIT_SHOW,cs_Num[m_i]);

if(!

b_Hasport)

{

CStringtemp;

GetDlgItemText(IDC_EDIT_SHOW,temp);

temp+=".";

SetDlgItemText(IDC_EDIT_SHOW,temp);

}

}

voidCJisuan3Dlg:

:

OnButton2()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

PutIntoNum

(2);

}

voidCJisuan3Dlg:

:

OnButton3()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

PutIntoNum(3);

}

//退格键

voidCJisuan3Dlg:

:

OnBack()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(!

b_Start)

{

return;

}

doublenum;

CStringtemp;

intlen;

CHARtemp_ch[32];

GetDlgItemText(IDC_EDIT_SHOW,temp);

//AfxMessageBox(temp);

num=atof(temp);

sprintf(temp_ch,"%g",num);

num=0;

//AfxMessageBox(temp_ch);

len=strlen(temp_ch);

intte_i=len-1;

if(temp_ch[te_i]=='.')

te_i-=1,b_Hasport=FALSE;

temp_ch[te_i]='\0';

//////////////////////////////////////////////////////////////////////////

//AfxMessageBox(temp_ch);

if(strlen(temp_ch)==0)

{

temp_ch[0]='0';

temp_ch[1]='\0';

}

//////////////////////////////////////////////////////////////////////////

sscanf(temp_ch,"%lf",&num);

temp.Format("%g",num);

//AfxMessageBox(temp);

SetDlgItemText(IDC_EDIT_SHOW,b_Hasport?

temp:

temp+".");

cs_Num[m_i]=temp;

}

}

//%

voidCJisuan3Dlg:

:

Onbaifenbi()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(!

b_Start)

{

return;

}

doublenum;

CStringtemp;

GetDlgItemText(IDC_EDIT_SHOW,temp);

num=atof(temp);

num/=100;

temp.Format("%lf",num);

if(temp.Find('.')==-1)

SetDlgItemText(IDC_EDIT_SHOW,temp+".");

else

SetDlgItemText(IDC_EDIT_SHOW,temp);

}

voidCJisuan3Dlg:

:

OnButton4()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

PutIntoNum(4);

}

voidCJisuan3Dlg:

:

OnButton6()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

PutIntoNum(6);

}

voidCJisuan3Dlg:

:

OnButton8()

{

//TODO:

Addyourcontrolnotificationhandl

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2