收藏 分享(赏)

计算器程序设计.C++_MFC.doc

上传人:gnk289057 文档编号:6806555 上传时间:2019-04-22 格式:DOC 页数:21 大小:234.50KB
下载 相关 举报
计算器程序设计.C++_MFC.doc_第1页
第1页 / 共21页
计算器程序设计.C++_MFC.doc_第2页
第2页 / 共21页
计算器程序设计.C++_MFC.doc_第3页
第3页 / 共21页
计算器程序设计.C++_MFC.doc_第4页
第4页 / 共21页
计算器程序设计.C++_MFC.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、课程设计报告课程名称: VC+课程设计 设计题目: 计算器 专业班级: 通信工程 1202 班 姓 名: 赵博 学 号: 120404209 时 间: 2015 年 7 月 14 日 指导教师: 赵柏山 2目 录1.课程设计的要求 32.功能描述 33.设计步骤 3 4.运算流程图 75.运行效果与不足 86. 总结 97. 参考文献及开发环境9附录:程序代码 93简易计算器(MFC)1课程设计的要求多功能计算器:要求所编写的的计算器能够完成加、减、乘、除、基本函数的运算,类似于 Windows 附件中的计算器。2. 功能描述(1)包含的功能有:加、减、乘、除运算,开方、倒数、求余等功能。(2

2、)计算器上数字 09 为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。(3)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。(4)计算功能基本上是用系统内部函数。(5)“0”不能做除数。(6)“Backspace”按钮可以清除上一次输入的数据,“Clear”按钮可以清除所有已输入的数据从头计算。3. 设计步骤(1)选择 FileNewlProject 命令,选择 MFC AppWizard(exe)创建 Project 名为“计算器”,按确定。在弹出界面选择创建对话框,单击“完成”按钮。(2)在生成的设计界面中加入控件,得到计算器应用界面。如图:4(3)为控件

3、编辑框编辑 ID,如图:按钮名称 ID 用途0 IDC_BUTTON_0 按键 01 IDC_ BUTTON_1 按键 12 IDC_ BUTTON_2 按键 23 IDC_ BUTTON_3 按键 34 IDC_ BUTTON_4 按键 45 IDC_ BUTTON_5 按键 56 IDC_ BUTTON_6 按键 67 IDC_ BUTTON_7 按键 78 IDC_ BUTTON_8 按键 89 IDC_ BUTTON_9 按键 9. IDC_ BUTTONpt 按键 .5+/- IDC_ BUTTONor 正负+ IDC_ BUTTONjia 加- IDC_ BUTTONjian 减*

4、 IDC_ BUTTONcheng 乘/ IDC_ BUTTONchu 除Clear IDC_ BUTTONC 清零Backspace IDC_ BUTTONbk 退格1/x IDC_ BUTTONdao 倒数sqrt IDC_ BUTTONfang 开方% IDC_ BUTTONbai 求余= IDC_ BUTTONdeng 等于编辑框 IDC_EDIT1 显示数据输入输出(4)进入 ClassWizard 界面选择 Message Maps 为控件插入消息映射,插入消息函数,实现控件命令功能。如图:6(5) 进入 ClassWizard 界面 Message Varibles 为编辑框添加

5、成员变量m_stredit 用以显示结果。如图:(6)在“计算器 Dlg.h”中加入在主要成员函数和成员变量的申明,在“计算器 Dlg.cpp”中加入主要成员函数实现过程和成员变量的初始化。7在头文件中“计算器 Dlg.h”中 public 下添加int sos; /操作附鉴别符int cal;CString m_str2; /存放按下操作符之前 m_stredit 的值CString m_str1; /中间变量,当前 m_stredit 的值在 “计算器 Dlg.cpp”中要定义各种数学运算添加#include “math.h“4.运算流程图NYYNYN开始输入数据于函数单目运算符双目运算符

6、编辑框关联的变量保存到 m_str1输入数据于函数进行运算运算是否合法运算结果保存到 m_str2是否用保存的结果继续进行运算弹出对话框显示错误是否开始新的计算结束m_str 清零85 运行效果和不足例如:-7+9=21/2=0.52/0 不能运算等等9不足:0 可以作为数字的开头,而且小数点可以打多个,希望可以通过以后的学习解决这些缺点。6 总结课程设计到此已告一段落,经过团队的努力,在三周的实践中课程设计基本完成了。从中学到很多有用的知识,也积累了不少宝贵的经验。虽然在此次课程设计我们只是针对性的去学习对对话框应用程序的编程模式,但也体会到了 MFC 这类库的博大精深。想全部了解这样一个类

7、库,今后还需多下功夫。本次课程设计我们完成了一个简易计算器应用软件,在此期间,遇上了不少的技术难题,但是经过努力,通过查找资料,难题还是一个个被解决了,从中学到了许多课堂上没学到的东西,这是很值得高兴的。经过设计的各个环节,从中学到了很多,锻炼了系统的设计的能力,培养了团队分工合作精神。这样对我们以后在工作中或学习中得到很好的锻炼,为用 VC+编辑软件奠定基础。在本次实践期间对简易计算器的设计虽然大体实现各个控件的功能,但仍存在许多的不足与漏洞,还待以后的不断学习进一步完善。7 参考文献及开发环境参考文献:1Visual C+ 7.0 起步进阶 ,国防工业出版社 武装 等编著2Visual C

8、+ 基础教程 ,西安电子科技大学出版社,2006.6开发环境:Microsoft Visual C+ 6.0 附录. 程序代码/ 计算器 Dlg.cpp : implementation file/#include “stdafx.h“/#include “stdlib.h“#include “计算器.h“#include “计算器 Dlg.h“#include “math.h“#ifdef _DEBUG10#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog u

9、sed for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Im

10、plementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAP11BEGIN_MESSAGE_MAP(CAboutDlg,

11、 CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMyDlg dialogCMyDlg:CMyDlg(CWnd* pParent /*=NULL*/): CDialog(CMyDlg:IDD, pParent)/AFX_DATA_INIT(CMyDlg)m_stredit = _T(“);/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon =

12、AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CMyDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CMyDlg)DDX_Text(pDX, IDC_EDIT1, m_stredit);DDV_MaxChars(pDX, m_stredit, 15);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CMyDlg, CDialog)/AFX_MSG_MAP(CMyDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON

13、_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON9, OnButton9)ON_BN_CLICKED(IDC_BUTTON6, OnButton6)ON_BN_CLICKED(IDC_BUTTON0, OnButton0)ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_BN_CLICKED(IDC_BUTTON3, OnButton3)ON_BN_CLICKED(IDC_BUTTON4, OnButton4)12ON_BN_CLICKED(IDC_BU

14、TTON5, OnButton5)ON_BN_CLICKED(IDC_BUTTON7, OnButton7)ON_BN_CLICKED(IDC_BUTTON8, OnButton8)ON_BN_CLICKED(IDC_BUTTONbk, OnBUTTONbk)ON_BN_CLICKED(IDC_BUTTONbai, OnBUTTONbai)ON_BN_CLICKED(IDC_BUTTONfang, OnBUTTONfang)ON_BN_CLICKED(IDC_BUTTONdao, OnBUTTONdao)ON_BN_CLICKED(IDC_BUTTONpt, OnBUTTONpt)ON_BN_

15、CLICKED(IDC_BUTTONjia, OnBUTTONjia)ON_BN_CLICKED(IDC_BUTTONjian, OnBUTTONjian)ON_BN_CLICKED(IDC_BUTTONcheng, OnBUTTONcheng)ON_BN_CLICKED(IDC_BUTTONchu, OnBUTTONchu)ON_BN_CLICKED(IDC_BUTTONor, OnBUTTONor)ON_BN_CLICKED(IDC_BUTTONC, OnButtoncls)ON_BN_CLICKED(IDC_BUTTONdeng, OnBUTTONdeng)/AFX_MSG_MAPEND

16、_MESSAGE_MAP()/ CMyDlg message handlersBOOL CMyDlg:OnInitDialog()CDialog:OnInitDialog();/ Add “About.“ menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMen

17、u);13/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE); / Set big iconSetIcon(m_hIcon, FALSE); / Set small icon/ TODO: Add extra initialization herem_stredit=“0.“; /对显示屏进行初始化,显示 0UpdateData(FALSE);return TRU

18、E; / return TRUE unless you set the focus to a controlvoid CMyDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the docume

19、nt/view model,/ this is automatically done for you by the framework.void CMyDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangle14int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon =

20、 GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/ The system calls this to obtain the cursor to display while the user drags/ the minimized window.HC

21、URSOR CMyDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CMyDlg:OnButton0() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_stredit=“0.“)m_stredit=“;m_stredit+=0;UpdateData(FALSE);void CMyDlg:OnButton1() / TODO: Add your control notification handler code

22、 hereUpdateData(TRUE);if(cal=1)else if(m_stredit=“0.“)m_stredit=“;m_stredit+=1;UpdateData(FALSE);15void CMyDlg:OnButton2() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_stredit=“0.“)m_stredit=“;m_stredit+=2;UpdateData(FALSE);void CMyDlg:OnButton3() / TODO

23、: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_stredit=“0.“)m_stredit=“;m_stredit+=3;UpdateData(FALSE);void CMyDlg:OnButton4() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_stredit=“0.“)m_stredit=“;m_stredit+=4;Update

24、Data(FALSE);void CMyDlg:OnButton5() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_stredit=“0.“)16m_stredit=“;m_stredit+=5;UpdateData(FALSE);void CMyDlg:OnButton6() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_

25、stredit=“0.“)m_stredit=“;m_stredit+=6;UpdateData(FALSE);void CMyDlg:OnButton7() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_stredit=“0.“)m_stredit=“;m_stredit+=7;UpdateData(FALSE);void CMyDlg:OnButton8() / TODO: Add your control notification handler cod

26、e hereUpdateData(TRUE);if(cal=1)else if(m_stredit=“0.“)m_stredit=“;m_stredit+=8;UpdateData(FALSE);void CMyDlg:OnButton9() / TODO: Add your control notification handler code hereUpdateData(TRUE);17if(cal=1)else if(m_stredit=“0.“)m_stredit=“;m_stredit+=9;UpdateData(FALSE);void CMyDlg:OnBUTTONbk() / TO

27、DO: Add your control notification handler code hereUpdateData(TRUE);m_stredit=m_stredit.Left(m_stredit.GetLength()-1);UpdateData(FALSE);void CMyDlg:OnBUTTONbai() / TODO: Add your control notification handler code hereUpdateData();m_str1=m_stredit;m_stredit=“;sos=6;UpdateData(FALSE);void CMyDlg:OnBUT

28、TONfang() / TODO: Add your control notification handler code hereUpdateData(TRUE);double f1,f3;m_str1=m_stredit;f1=atof(m_str1);if(f10)MessageBox(“负数没有平方根!“);elsef3=sqrt(f1);m_stredit.Format(“%f“,f3);UpdateData(false);void CMyDlg:OnBUTTONdao() 18/ TODO: Add your control notification handler code her

29、eUpdateData(TRUE);double f1,f3;m_str1=m_stredit;f1=atof(m_str1);if (f1=0)MessageBox(“被除数不能为 0!“);elsef3=1/f1;m_stredit.Format(“%f“,f3);UpdateData(FALSE);void CMyDlg:OnBUTTONpt() / TODO: Add your control notification handler code hereUpdateData();m_stredit+=“.“;cal=1;UpdateData(FALSE);void CMyDlg:OnB

30、UTTONjia() / TODO: Add your control notification handler code hereUpdateData(TRUE);m_str1=m_stredit;m_stredit=“;sos=1;UpdateData(FALSE);void CMyDlg:OnBUTTONjian() / TODO: Add your control notification handler code hereUpdateData(TRUE);m_str1=m_stredit;19m_stredit=“;sos=2;UpdateData(FALSE);void CMyDl

31、g:OnBUTTONcheng() / TODO: Add your control notification handler code hereUpdateData(TRUE);m_str1=m_stredit;m_stredit=“;sos=3;UpdateData(FALSE);void CMyDlg:OnBUTTONchu() / TODO: Add your control notification handler code hereUpdateData();m_str1=m_stredit;m_stredit=“;sos=4;UpdateData(FALSE);void CMyDl

32、g:OnBUTTONor() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(m_stredit.Left(1)=-) /截取 m_str1 左边的第一个字符-m_stredit=m_stredit.Right(m_stredit.GetLength()-1);elsem_stredit=-+m_stredit;/sos=5;UpdateData(FALSE);void CMyDlg:OnButtoncls() / TODO: Add your control notification han

33、dler code hereUpdateData(TRUE);m_stredit=“;sos=0;20UpdateData(FALSE);void CMyDlg:OnBUTTONdeng() / TODO: Add your control notification handler code heredouble f1,f2,f3;int f4,f5,f6;/%运算符操作数只能是整型switch(sos)case 1:UpdateData(TRUE);m_str2=m_stredit;f1=atof(m_str1);f2=atof(m_str2);f3=f1+f2;m_stredit.Form

34、at(“%f“,f3);UpdateData(FALSE);break;case 2:UpdateData(TRUE);m_str2=m_stredit;f1=atof(m_str1);f2=atof(m_str2);f3=f1-f2;m_stredit.Format(“%f“,f3);UpdateData(FALSE);break;case 3:UpdateData(TRUE);m_str2=m_stredit;f1=atof(m_str1);f2=atof(m_str2);f3=f1*f2;m_stredit.Format(“%f“,f3);UpdateData(FALSE);break;

35、case 4:UpdateData(TRUE);m_str2=m_stredit;f1=atof(m_str1);f2=atof(m_str2);if(f2=0)21MessageBox(“被除数不能为零!“);elsef3=f1/f2;m_stredit.Format(“%f“,f3);UpdateData(FALSE);break;case 6:UpdateData(TRUE);m_str2=m_stredit;f4=atoi(m_str1);/将字符型转化为整型,下面做相应修改f5=atoi(m_str2);f6=int(f4)%int(f5);m_stredit.Format(“%d“,f6);UpdateData(FALSE);break;

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报