ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:161.49KB ,
资源ID:4645393      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4645393.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(利用MFC编译一个简单的计算器.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

利用MFC编译一个简单的计算器.docx

1、利用MFC编译一个简单的计算器目录一.设计题目。 2二.设计目的和内容。 2三.基本功能描述。 3四.设计思路。 3五.软件设计:设计步骤、界面设计、关键功能的实现。 4a)设计步骤。 4b)界面设计。 5c)关键功能的实现。 6六.附录。 9一.设计题目。小型计算器程序的编写.二.设计目的和内容。【设计目的】1 学习Visual C+的MFC开发程序的步骤。2 综合运用所学的类、继承和多态的知识。3 进一步掌握程序的调试方法。【设计内容】 1 利用MFC的向导,创建基于对话框的应用程序,添加按钮、编辑框等控件;2 实现算术加、减、乘、除等运算;3 选做:三角函数的运算、对数运算、指数运算、进

2、制转换等。三.基本功能描述。具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数,然后输出结果,按CE键清屏。四.设计思路。a) 首先考虑对所有按键分为两类,数字类和符号类。0,1,2,3,4,5,6,7,8,9为数字类,+,-,*,/为符号类。数字在计算过程中最多需要保存两个,所以定义了两个double型变量num1和num2来进行存储,符号需要一个char型变量cal来存储。b) 为显示数字的编辑框设立一个double型的关联变量m_Num,为显示符号的编辑框设立一个CString型的关联变量m_result,设立一个int

3、型的小数点标志dotflag,设立一个int型的键入数字标志numflag,设立一个long型的小数部分权值quan,最后为了防止用户输入错误,设立一个判断输入是否为数字的int型标志mark。c) 然后考虑到在计算过程中num1和num2的储存状态有三种,num1=0和num2=0,也就是程序开始运行还没有开始录入数字的状态;num1!=0和num2=0,也就是第一个数字已经录入,第二个数字还没有录入的状态这时候把m_Num的值赋给num1,m_Num归零;num1!=0和num2!=0,把m_Num的值赋给num2,m_Num归零,令m_Num等于num1和num2合并后的值。五.软件设计

4、:设计步骤、界面设计、关键功能的实现。a)设计步骤。1.添加头文件。将test.cpp改为test.h将其添加到计算器Dlg.cpp : implementation file中,如下:#include test.h。2.成员函数及其释义。void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()CTestDlg:CTestDlg(CWnd* pParent /*=NULL*/) : CDia

5、log(CTestDlg:IDD, pParent) m_Num =0.0; m_result = _T(); m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CTestDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT_DISPLAY, m_Num); DDX_Text(pDX, IDC_EDIT2_SIGNS, m_result);BEGIN_MESSAGE_MAP(CTestDlg, CDialog) ON

6、_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON_NUM1, OnButtonNum1) ON_BN_CLICKED(IDC_BUTTON_NUM2, OnButtonNum2) ON_BN_CLICKED(IDC_BUTTON_NUM3, OnButtonNum3) ON_BN_CLICKED(IDC_BUTTON_NUM4, OnButtonNum4) ON_BN_CLICKED(IDC_BUTTON_NUM5, OnButtonNum5) ON_BN_CLICKED(IDC_BUTT

7、ON_NUM6, OnButtonNum6) ON_BN_CLICKED(IDC_BUTTON_NUM7, OnButtonNum7) ON_BN_CLICKED(IDC_BUTTON_NUM8, OnButtonNum8) ON_BN_CLICKED(IDC_BUTTON_NUM9, OnButtonNum9) ON_BN_CLICKED(IDC_BUTTON_ZHENGFU, OnButtonZhengfu) ON_BN_CLICKED(IDC_BUTTON_DENGYU, OnButtonDengyu) ON_BN_CLICKED(IDC_BUTTON_NUM0, OnButtonNum

8、0) ON_BN_CLICKED(IDC_BUTTON_CLEAR, OnButtonClear) ON_BN_CLICKED(IDC_BUTTON_MULTIPLY, OnButtonMultiply) ON_BN_CLICKED(IDC_BUTTON_DIVIDE, OnButtonDivide) ON_BN_CLICKED(IDC_BUTTON_PLUS, OnButtonPlus) ON_BN_CLICKED(IDC_BUTTON_MINUS, OnButtonMinus) ON_BN_CLICKED(IDC_BUTTON_DOT, OnButtonDot) /AFX_MSG_MAPE

9、ND_MESSAGE_MAP()b)界面设计。1.仿照Windows附件里面的计算器,在资源视图中画好界面,如图1:图 12.修改每个button的属性,如图2:图 23.修改每个button的处理机制,如图:在类向导Classwizard窗口中进行,如下图3:图 3其他button按钮的修改类似。4.修改每个edit的类型和名称,如图4:在类向导Classwizard窗口中进行:图 4单击Add Variable按钮,在如下窗口中进行修改,如图5:图 5另一个edit的修改类似。c)关键功能的实现。1. OnButtonNum8()按钮的处理函数。void CTestDlg:OnButton

10、Num8() if(dotflag=1) quan= quan*10; m_Num += 8 / (double)quan; else if(numflag=1) m_Num = m_Num * 10 + 8; else m_Num = 8; numflag = 1; mark=1; UpdateData(FALSE); 其他数字按钮的处理函数均与其类似。2. OnButtonMultiply()按钮的处理函数。void CTestDlg:OnButtonMultiply() UpdateData(); num1 = m_Num; cal = *; numflag = 0; dotflag =

11、 0; quan = 1; m_result=*; mark=0; UpdateData(FALSE);其他符号按钮的处理函数均与其类似。3. OnButtonDot()按钮的处理函数。void CTestDlg:OnButtonDot() UpdateData(); dotflag = 1; m_Num += 0.0; m_result=.; UpdateData(FALSE);4. OnButtonClear()按钮的处理函数。void CTestDlg:OnButtonClear() UpdateData(); m_Num =0; m_result= ; num1 = 0; num2 =

12、 0; numflag=0; dotflag=0; quan=1; mark=0; UpdateData(FALSE); 5. OnButtonDengyu()按钮的处理函数。void CTestDlg:OnButtonDengyu() if(mark=1) num2 = m_Num; switch(cal) case +: m_Num = num1 + num2;cal=0;break; case -: m_Num = num1 - num2;cal=0; break; case *: m_Num = num1 * num2;cal=0;break; case /: m_Num = num1

13、 / num2;cal=0; break; numflag = 0; dotflag = 0; quan = 1; UpdateData(FALSE); else MessageBox(error);6. OnButtonZhengfu()按钮的处理函数。void CTestDlg:OnButtonZhengfu() UpdateData(); m_Num = 0-m_Num; UpdateData(FALSE);六.附录。1.调试。 图 6 图 724/62.测试结果。图 8结果=4.3.关键源代码。void CTestDlg:OnButtonNum1() if(dotflag=1) qua

14、n=10*quan;m_Num += 1 / (double)quan; else if(numflag=1) m_Num = 10*m_Num+ 1; else m_Num =1; numflag = 1; mark=1; UpdateData(FALSE);void CTestDlg:OnButtonNum2() if(dotflag=1) quan = quan*10; m_Num += 2 / (double)quan; else if(numflag=1) m_Num = m_Num * 10 + 2; else m_Num = 2; numflag = 1; mark=1; Upd

15、ateData(FALSE); void CTestDlg:OnButtonNum3() if(dotflag=1) quan= quan*10; m_Num += 3 / (double)quan; else if(numflag=1) m_Num = m_Num * 10 + 3; else m_Num = 3; numflag = 1; mark=1; UpdateData(FALSE); void CTestDlg:OnButtonNum4() if(dotflag=1) quan= quan*10; m_Num += 4 / (double)quan; else if(numflag

16、=1) m_Num = m_Num * 10 + 4; else m_Num = 4; numflag = 1; mark=1; UpdateData(FALSE); void CTestDlg:OnButtonNum5() if(dotflag=1) quan= quan*10; m_Num += 5 / (double)quan; else if(numflag=1) m_Num = m_Num * 10 + 5; else m_Num = 5; numflag = 1; mark=1; UpdateData(FALSE); void CTestDlg:OnButtonNum6() if(

17、dotflag=1) quan= quan*10; m_Num += 6 / (double)quan; else if(numflag=1) m_Num = m_Num * 10 + 6; else m_Num = 6; numflag = 1; mark=1; UpdateData(FALSE); void CTestDlg:OnButtonNum7() if(dotflag=1) quan= quan*10; m_Num += 7 / (double)quan; else if(numflag=1) m_Num = m_Num * 10 + 7; else m_Num = 7; numf

18、lag = 1; mark=1; UpdateData(FALSE); void CTestDlg:OnButtonNum8() if(dotflag=1) quan= quan*10; m_Num += 8 / (double)quan; else if(numflag=1) m_Num = m_Num * 10 + 8; else m_Num = 8; numflag = 1; mark=1; UpdateData(FALSE); void CTestDlg:OnButtonNum9() if(dotflag=1) quan= quan*10; m_Num += 9 / (double)q

19、uan; else if(numflag=1) m_Num = m_Num * 10 + 9; else m_Num = 9; numflag = 1; mark=1; UpdateData(FALSE);void CTestDlg:OnButtonNum0() if(dotflag=1) quan= quan*10; m_Num += 0 / (double)quan; else if(numflag=1) m_Num = m_Num * 10 + 0; else m_Num = 0; numflag = 1; mark=1; UpdateData(FALSE);void CTestDlg:

20、OnButtonZhengfu() UpdateData(); m_Num = 0-m_Num; UpdateData(FALSE);void CTestDlg:OnButtonDengyu() if(mark=1) num2 = m_Num; switch(cal) case +: m_Num = num1 + num2;cal=0;break; case -: m_Num = num1 - num2;cal=0; break; case *: m_Num = num1 * num2;cal=0;break; case /: m_Num = num1 / num2;cal=0; break;

21、 numflag = 0; dotflag = 0; quan = 1; UpdateData(FALSE); else MessageBox(error);void CTestDlg:OnButtonClear() UpdateData(); m_Num =0; m_result= ; num1 = 0; num2 = 0; numflag=0; dotflag=0; quan=1; mark=0; UpdateData(FALSE); void CTestDlg:OnButtonMultiply() UpdateData(); num1 = m_Num; cal = *; numflag

22、= 0; dotflag = 0; quan = 1; m_result=*; mark=0; UpdateData(FALSE);void CTestDlg:OnButtonDivide() UpdateData(); num1 = m_Num; cal = /; numflag = 0; dotflag = 0; quan = 1; m_result=/; mark=0; UpdateData(FALSE);void CTestDlg:OnButtonPlus() UpdateData(); num1 = m_Num; cal = +; numflag = 0; dotflag = 0;

23、quan = 1; m_result=+; mark=0; UpdateData(FALSE);void CTestDlg:OnButtonMinus() UpdateData(); num1 = m_Num; cal = -; numflag = 0; dotflag = 0; quan = 1; m_result=-; mark=0; UpdateData(FALSE);void CTestDlg:OnButtonDot() UpdateData(); dotflag = 1; m_Num += 0.0; m_result=.; UpdateData(FALSE);class CTestD

24、lg : public CDialogpublic: int mark; long quan; int numflag; int dotflag; char cal; double num2; double num1; CTestDlg(CWnd* pParent = NULL); / standard constructor enum IDD = IDD_TEST_DIALOG ; double m_Num; CString m_result; protected: virtual void DoDataExchange(CDataExchange* pDX);/ Implementatio

25、nprotected: HICON m_hIcon; virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnButtonNum1(); afx_msg void OnButtonNum2(); afx_msg void OnButtonNum3(); afx_msg void OnButtonNum4(); afx_msg void OnBu

26、ttonNum5(); afx_msg void OnButtonNum6(); afx_msg void OnButtonNum7(); afx_msg void OnButtonNum8(); afx_msg void OnButtonNum9(); afx_msg void OnButtonZhengfu(); afx_msg void OnButtonDengyu(); afx_msg void OnButtonNum0(); afx_msg void OnButtonClear(); afx_msg void OnButtonMultiply(); afx_msg void OnButtonDivide(); afx_msg void OnButtonPlus(); afx_msg void OnButtonMinus(); afx_msg void OnButtonDot(); DECLARE_MESSAGE_MAP();

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

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