《基于mfc的面向对象多功能计算器设计》由会员分享,可在线阅读,更多相关《基于mfc的面向对象多功能计算器设计(36页珍藏版)》请在金锄头文库上搜索。
1、基于 MFC 的面向对象多功能计算器设计一、需求分析1、设计背景计算器是日常生活中十分便捷有效的工具,计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。但是目前很多计算器的功能过于简单化,精确度也不高。本次设计的基于 MFC 的 VC+面向对象多功能计算器,实现了功能的多样化,使用非常简单和方便,增加了使用者的选择性,应用范围大为提高,更加符合现在社会使用者的要求。2、计算器功能系统具有良好的界面;必要的交互信息;简约美观的效果。使用人员能快捷简单地进行操作。即可单机按钮进行操作,也可直接通过键盘直接输入。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间.该计算
2、器不但功能上比一般的计算器多很多,而且精度上也提高了不少。根据目前的背景分析所知道的社会需求以及本人平时在课堂上蒋老师所讲的知识,参考相关资料,本次设计所实现的功能:1) 一般计算机所具有的加、减、乘、除、开方、清零功能2) 进行二进制、八进制、十进制、十六进制之间的转换3) 有退格功能4) 进行度数和弧度的 Sin 、arcSin 、Cos、 arcCos 、Cot 、arcCot 、Tan 、arcTan 运算5) 进行 xy x2 x3 运算6) 进行 ln log 运算7) 输出结果的精确度为小数点后六位8) 程序可以能自动判断输入数据的正确性和操作数据的正确性,若有错去会提醒。二、概
3、要设计1. 设计基础Microsoft Visual C+提供了利用 MFC 编写程序的方法,这大大提高了软件的开发,提高编程的效率。MFC 提供了大量预定义的类和支持代码,可以处理许多标准 Windows 编程任务,如生成窗口和处理消息,加入各种复杂的特性,如工具栏、OLE 支持、Active 控件非常的方便和高效。本次软件即是基于 MFC进行设计,基于 MFC 库类进行对对话框界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用消息函数完成数据的输入输出,实现计算功能。使用 C+,在 VC 下进行编写。2. 软件主体框架总体设计思路流程图如图 1选择想要的运算显示结果选择操作
4、数单击按钮 , 响应函数功能图 1 计算器总体设计思路流程图3、详细设计1、程序流程及解释1.1 图 2 为主要关系图:图 2 主要关系图1.2 功能模块流程图举例1)输入数字的流程图,以输入数字 1 为例(如图 3):m _ E D I T = m _ E D I T + 1 调用 S e t D l g I t e m T e x t ( I D C_ E D I T 1 , m _ E D I T ) 输入1开始结束按下 “ 1 ” 键图 3 输入数字 1 流程图2)四则运算、x2、x3、xy、取模、log、ln 和开方运算的流程图(以开方运算为例,如图 4)是否为 1 6 进制 是否为
5、 2 进制是否为 8 进制是否为 1 0 进制按下 s q u 1 ;s q u 2 = s q u 1 * s q u 1按下 s q u 1 ;s q u 2 = s q u 1 * s q u 1按下 s q u 1 ;s q u 2 = s q u 1 * s q u 1按下 t e m p 1 ;t e m p 2 = t e m p 1 * t e m p 1调用m _ E D I T . F o r m a t ( % X , s q u 2 ) ;S e t D l g I t e m T e x t ( I D C_ E D I T 1 , m _ E D I T ) 得出结
6、果调用m _ E D I T . F o r m a t ( % s , c h ) ; S e t D l g I t e m T e x t ( I D C_ E D I T 1 , m _ E D I T ) 得出结果调用m _ E D I T . F o r m a t ( % o , s q u 2 ) ;S e t D l g I t e m T e x t ( I D C_ E D I T 1 , m _ E D I T ) ; 得出结果调用m _ E D I T . F o r m a t ( % f , t e m p 2 ) ;S e t D l g I t e m T e
7、 x t ( I D C_ E D I T 1 , m _ E D I T ) ; 得出结果开始结束NYNNY Y图 4 开方运算流程图3)三角函数运算流程图,以 sin 运算为例,如图 5s i n t e m p = a t o f ( ( L PC T S T R ) m _ E D I T ) ; m _ E D I T . F o r m a t ( %f , s i n ( s i n t e m p ) ;s i n t e m p = a t o f ( ( L P C TS T R ) m _ E D I T ) ;m _ E D I T . F o r m a t ( %
8、f , s i n ( s i n t e m p * P I /1 8 0 ) ) ;调用 S e t D l g I t e m T e x t ( I D C_ E D I T 1 , m _ E D I T ) 得出结果开始结束NY是否是度数 ?输入数字图 5 sin 运算流程图2、函数模块#include stdafx.h#include Calculator.h#include CalculatorDlg.h#include math.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE =
9、 _FILE_;#endif#define PI 3.1415926535897932384626433832795/ CAboutDlg dialog 应用程序class CAboutDlg : public CDialogpublic:CAboutDlg();enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataExchange* pDX);protected:DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)void CA
10、boutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()/ CCalculatorDlg dialogCCalculatorDlg:CCalculatorDlg(CWnd* pParent): CDialog(CCalculatorDlg:IDD, pParent)m_EDIT = _T();temp=_T();op=#;a=b=r=0;first=second=result=0;m_hIcon = Af
11、xGetApp()-LoadIcon(IDR_MAINFRAME);void CCalculatorDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, m_EDIT);BEGIN_MESSAGE_MAP(CCalculatorDlg, CDialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON0, OnButton0)ON_BN_CLICKED(IDC_BU
12、TTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_BN_CLICKED(IDC_BUTTON3, OnButton3)ON_BN_CLICKED(IDC_BUTTON4, OnButton4)ON_BN_CLICKED(IDC_BUTTON5, OnButton5)ON_BN_CLICKED(IDC_BUTTON6, OnButton6)ON_BN_CLICKED(IDC_BUTTON7, OnButton7)ON_BN_CLICKED(IDC_BUTTON8, OnButton8)ON_BN_CLICKED(IDC_BUTTON
13、9, OnButton9)ON_BN_CLICKED(IDC_BUTTONA, OnButtona)ON_BN_CLICKED(IDC_BUTTONB, OnButtonb)ON_BN_CLICKED(IDC_BUTTONC, OnButtonc)ON_BN_CLICKED(IDC_BUTTOND, OnButtond)ON_BN_CLICKED(IDC_BUTTONE, OnButtone)ON_BN_CLICKED(IDC_BUTTONF, OnButtonf)ON_BN_CLICKED(IDC_BTN_BACK, OnBtnBack)ON_BN_CLICKED(IDC_BTN_DOT,
14、OnBtnDot)ON_BN_CLICKED(IDC_BTN_AC, OnBtnAc)ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)ON_BN_CLICKED(IDC_BTN_DECREASE, OnBtnDecrease)ON_BN_CLICKED(IDC_BTN_MULTI, OnBtnMulti)ON_BN_CLICKED(IDC_BTN_DIV, OnBtnDiv)ON_BN_CLICKED(IDC_BTN_EQUAL, OnBtnEqual)ON_BN_CLICKED(IDC_BTN_SIGN, OnBtnSign)ON_BN_CLICKED(IDC_BTN
15、_HEX, OnBtnHex)ON_BN_CLICKED(IDC_BTN_DEC, OnBtnDec)ON_BN_CLICKED(IDC_BTN_OCT, OnBtnOct)ON_BN_CLICKED(IDC_BTN_BIN, OnBtnBin)ON_BN_CLICKED(IDC_BTN_DEGRESS, OnBtnDegress)ON_BN_CLICKED(IDC_BTN_MOD, OnBtnMod)ON_BN_CLICKED(IDC_BTN_SQUARE, OnBtnSquare)ON_BN_CLICKED(IDC_BTN_CUBE, OnBtnCube)ON_BN_CLICKED(IDC
16、_BTN_RADIANS, OnBtnRadians)ON_BN_CLICKED(IDC_BTN_SIN, OnBtnSin)ON_BN_CLICKED(IDC_BTN_ARCSIN, OnBtnArcsin)ON_BN_CLICKED(IDC_BTN_COS, OnBtnCos)ON_BN_CLICKED(IDC_BTN_ARCCOS, OnBtnArccos)ON_BN_CLICKED(IDC_BTN_TAN, OnBtnTan)ON_BN_CLICKED(IDC_BTN_ARCTAN, OnBtnArctan)ON_BN_CLICKED(IDC_BTN_COT, OnBtnCot)ON_BN_CLICKED(IDC_BTN_ARCCOT, OnBtnArccot)ON_BN_CLICKED(IDC_BTN_XY, OnBtnXy)ON_BN_CLICK