教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 论文> 其他论文> 基于Visual C++计算器程序设计中CCalculatorDlg类的设计分析

基于Visual C++计算器程序设计中CCalculatorDlg类的设计分析

上传者:网友
|
翻新时间:2022-10-24

基于Visual C++计算器程序设计中CCalculatorDlg类的设计分析

摘 要 在Visual C++环境中进行计算器程序设计的整体思路是:计算器的运行界面相对较为简单,从CDialog类直接派生出计算器对话框类CCalculatorDlg;在IDD_CALCULATOR_DIALOG对话框上添加操作控件,作为人机交互;最后实现CCalculatorDlg类的相关代码编写。本文对在进行计算器程序设计时CCalculatorDlg类的设计方法及步骤进行了阐述。

关键词 Visual C++;计算器;CCalculatorDlg类

在Visual C++中开发计算器的系统目标有四则运算作为计算器的最基本功能必需具备;在日常工作中,要经常进行三角函数运算;用户使用计算器时,都习惯用数字键区操作,程序除使用鼠标操作外,要能接收键盘输入以实现四则运算。

1 计算器系统功能分析

1)加、减、乘、除四则运算。

(1)操作数的输入。

(2)实现指定的四则运算。

(3)结果的显示。包括输入操作数、运算结果、及出错信息的显示

2)三角函数运算。

(1)操作数的输入。

(2)实现指定的三角函数运算。

(3)结果的显示。包括输入操作数、运算结果及出错信息的显示

2 计算器程序设计中CCalculatorDlg类的设计方法及相关代码分析

1)通过MFC AppWizard(EXE)新建一个基于对话框的工程,工程名为:Calculator,向导会生成CAboutDlg,CCalculatorApp,CCalculatorDlg三个类,并自动添加初始代码,此时的CCalculatorDlg类骨架已由系统生成,下段将按我们的功能要求来逐步完善这个类。

2)将对话框IDD_CALCULATOR_DIALOG按照计算器界面要求进行布局。(图1)

3)定义程序操作状态中用到的数据类型;

(1)在计算器四则运算中,运算操作主要有加、减、乘、除。

//运算类型

enum Operator {OpNone, OpAdd, OpSubtract, OpMultiply, OpDivide };

图1 界面布局

(2)常用的三角函数运算有正弦、余弦、正切等,其他函数主要有对数、阶乘等。

//函数类型

enum Func { FuncSin, FuncTan, FuncCos, FuncSqrt, FuncSqre, FuncLn, FuncLog, FuncN, FuncRec, FuncExp, FuncNone};

(3)四则运算中存在的错误主要是除零等。

//运算错误类型

enum CalcError { ErrNone, ErrDivideByZero };

4)在CCalculatorDlg类中添加成员变量及方法。

根据类封装性要求,成员尽量定义为私有类型。

//运算类型

enum Operator {OpNone, OpAdd, OpSubtract, OpMultiply, OpDivide};

//函数类型

enum Func {FuncSin, FuncTan, FuncCos, FuncSqrt, FuncSqre, FuncLn, FuncLog,FuncN, FuncRec, FuncExp, FuncNone};

//运算错误类型

enum CalcError {ErrNone, ErrDivideByZero};

class CCalculatorDlg : public CDialog

{

private:

double m_dOperand;//操作数

double m_dTempOperand;//操作数或结果暂存

BOOL m_bDecimally;//小数标志

double m_dRatio;//小数倍率

double m_dDegToRad;//角度转弧度

Operator m_operator;//操作类型{ OpNone, OpAdd, OpSubtract, OpMultiply, OpDivide }

Func m_func;//当前函数

CalcError m_errorState;//出错类型

BOOL m_bOperandAvail;//操作数可用标志

void Calculate();//四则运算

void Run_Func();//函数计算

void UpdateDisplay();//更新显示内容

为Edit编辑框及角度选框按钮添加成员变量m_result,m_iDegree,以进行界面与数据交互。

图2 添加成员变量

系统自动生成的代码如下所示。

// Dialog Data

//{{AFX_DATA(CCalculatorDlg)

enum { IDD = IDD_CALCULATOR_DIALOG };

CString m_result;//待显示字符串 int m_iDegree;

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CCalculatorDlg)

public:

virtual BOOL PreTranslateMessage(MSG* pMsg);

protected:

virtual void DoDataExchange

(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

在类CCalculatorDlg构造函数中初始化各变量

// CCalculatorDlg dialog

CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/)

: CDialog(CCalculatorDlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CCalculatorDlg)

m_result = _T("");//运算结果属性

m_iDegree = -1;//角度弧度指示属性

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

m_hAccel=LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDD));

m_dRatio=0.1;//小数输入时初始倍率

m_bDecimally=false;//非小数

m_errorState = ErrNone;//运算无错误

m_bOperandAvail=FALSE;//操作数不可用

m_operator=OpNone;//运算不可用

}

在BOOL CCalculatorDlg::OnInitDialog()方法中加入如下代码

图3 对话框初始化

参考文献

[1]C++Primer Plus中文版.5版.人民邮电出版社.

[2]Visual C++ 技术内幕.4版.清华大学出版社.

[3]面向对象程序设计.经济科学出版社.

[4]王健南.基于VC++的小型计算器程序设计[J].农业网络信息,2009(12).

下载文档

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

网友最新关注

母亲节的礼物
一次献爱心活动
四川地震
想念学校的日子
如果爱下去,
平安校园
童年的烦恼
假如我永远十二岁
我读书我快乐
给妈妈的信
泱泱中华情
沉默是金
明日世界人生更美好
电脑—一个不可思议的物体
我们在一起
IQunix Pad铝合金鼠标垫
中移动咪咕,为内容而生
IT运维整合能耗及环境管理有助效率提升
主流游戏本新秀
联想新IT:助力运营商“互联网+”
俊知:光电混合缆组件
我眼中的小米年报真相分析
面向消费者 手机供应链破“订单式”思维
ATEN宏正:IT运维整合能耗环境管理
中国工程院院士倪光南:操作系统是信息技术制高点
将光网络资源作为一种服务SDON:光网络的下一站
赛锐西伯利亚系列游戏耳机全线升级
精细化资源经营SPTN技术演进方案和网络新特性
AMD显卡玩家必备
小进步铺平未来道路
21画家和牧童优秀教案设计三精品
画家和牧童优秀教案设计八精品
画家和牧童教学点评精品
小学语文二年级下册第五单元复习汇总案例精品
210语文园地五教案二(写一写)案例精品
奇妙的动物世界教案案例精品
语文园地五-教学实录
21画家和牧童优秀教案设计二精品
二下语文园地五之教材分析案例精品
21画家和牧童之教材分析精品
21画家和牧童优秀教案设计一精品
210语文园地五教案一案例精品
21画家和牧童优秀教案设计四精品
22我为你骄傲教案三最新
画家和牧童教学实录二附点评精品