MFC计算器设计

课程名称:Visual C++面向对象与可视化程序设计实验项目:计算器设计姓名:专业:计算机科学与技术班级:学号:计算机科学与技术学院实验教学中心2016 年11月19日哈尔滨理工大学计算机科学与技术学院实验报告实验项目名称:计算器设计( 2课时)一、实验目的1.灵活使用MFC应用程序设计2.设计计算器二、实验内容设计一个简单的计算器,可以实现加法,减法,除法,乘法,取模,开平方,输入数字要求可以输入小数,可以连加。

具有清空,回退功能。

三、实验步骤1.启动VS打2012开新建项目2.出现的New对话框的Projects标签内选择MFC应用程序3.Projects Name指定项目的名字,在Location中指定路径后按OK按钮4.选择创建类型,(例如基于对话框),确定项目类型后按Finish完成。

5.编写实验代码四、实验结果五、程序代码// project_1Dlg.h : 头文件//#pragma once#include "afxwin.h"// Cproject_1Dlg 对话框class Cproject_1Dlg : public CDialogEx{// 构造public:Cproject_1Dlg(CWnd* pParent = NULL); // 标准构造函数void Equal2();void Cproject_1Dlg::AddDigit(char numKey);// 对话框数据enum { IDD = IDD_PROJECT_1_DIALOG };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:HICON m_hIcon;long double m_op1,m_op2,m_result;int m_operation;int i,s;long double r;long double m_m;long double data[50];bool st1,st2;bool pflag;long double p;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:double m_num;CEdit m_control_e;BOOL m_inv;BOOL m_hp;// CString m_sd;CString m_sd;afx_msg void OnClicked1x();afx_msg void OnClickedAdd();afx_msg void OnClickedB1();afx_msg void OnClickedB2();afx_msg void OnClickedB3();afx_msg void OnClickedB4();afx_msg void OnClickedB5();afx_msg void OnClickedB6();afx_msg void OnClickedB7();afx_msg void OnClickedB8();afx_msg void OnClickedB9();afx_msg void OnClickedB10();afx_msg void OnClickedClaer();afx_msg void OnClickedClaer2();afx_msg void OnClickedBp();afx_msg void OnClickedBp2();afx_msg void OnClickedBsp();afx_msg void OnClickedM();afx_msg void OnClickedMc();afx_msg void OnClickedMm();afx_msg void OnClickedMod();afx_msg void OnClickedSqrt();afx_msg void OnClickedMr();afx_msg void OnClickedSubract();afx_msg void OnClickedMul();afx_msg void OnClickedDevide();afx_msg void OnChangeEdit1();afx_msg void OnClickedEqual();};// project_1Dlg.cpp : 实现文件//#include "stdafx.h"#include "project_1.h"#include "project_1Dlg.h"#include "afxdialogex.h"#include<math.h>#ifdef _DEBUG#define new DEBUG_NEW#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx{public:CAboutDlg();// 对话框数据enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()// Cproject_1Dlg 对话框Cproject_1Dlg::Cproject_1Dlg(CWnd* pParent /*=NULL*/) : CDialogEx(Cproject_1Dlg::IDD, pParent), m_num(0), m_sd(_T("")){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void Cproject_1Dlg::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, m_num);DDX_Control(pDX, IDC_EDIT1, m_control_e);DDX_Text(pDX, IDC_sd, m_sd);}BEGIN_MESSAGE_MAP(Cproject_1Dlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_1x, &Cproject_1Dlg::OnClicked1x)ON_BN_CLICKED(IDC_ADD, &Cproject_1Dlg::OnClickedAdd) ON_BN_CLICKED(IDC_b1, &Cproject_1Dlg::OnClickedB1)ON_BN_CLICKED(IDC_b2, &Cproject_1Dlg::OnClickedB2)ON_BN_CLICKED(IDC_b3, &Cproject_1Dlg::OnClickedB3)ON_BN_CLICKED(IDC_b4, &Cproject_1Dlg::OnClickedB4)ON_BN_CLICKED(IDC_b5, &Cproject_1Dlg::OnClickedB5)ON_BN_CLICKED(IDC_b6, &Cproject_1Dlg::OnClickedB6)ON_BN_CLICKED(IDC_b7, &Cproject_1Dlg::OnClickedB7)ON_BN_CLICKED(IDC_b8, &Cproject_1Dlg::OnClickedB8)ON_BN_CLICKED(IDC_b9, &Cproject_1Dlg::OnClickedB9)ON_BN_CLICKED(IDC_b10, &Cproject_1Dlg::OnClickedB10)ON_BN_CLICKED(IDC_claer, &Cproject_1Dlg::OnClickedClaer)ON_BN_CLICKED(IDC_claer2, &Cproject_1Dlg::OnClickedClaer2) ON_BN_CLICKED(IDC_bp, &Cproject_1Dlg::OnClickedBp)ON_BN_CLICKED(IDC_bp2, &Cproject_1Dlg::OnClickedBp2)ON_BN_CLICKED(IDC_bsp, &Cproject_1Dlg::OnClickedBsp)ON_BN_CLICKED(IDC_M, &Cproject_1Dlg::OnClickedM)ON_BN_CLICKED(IDC_MC, &Cproject_1Dlg::OnClickedMc)ON_BN_CLICKED(IDC_MM, &Cproject_1Dlg::OnClickedMm)ON_BN_CLICKED(IDC_MOD, &Cproject_1Dlg::OnClickedMod)ON_BN_CLICKED(IDC_sqrt, &Cproject_1Dlg::OnClickedSqrt)ON_BN_CLICKED(IDC_MR, &Cproject_1Dlg::OnClickedMr)ON_BN_CLICKED(IDC_SUBRACT, &Cproject_1Dlg::OnClickedSubract) ON_BN_CLICKED(IDC_mul, &Cproject_1Dlg::OnClickedMul)ON_BN_CLICKED(IDC_devide, &Cproject_1Dlg::OnClickedDevide) ON_EN_CHANGE(IDC_EDIT1, &Cproject_1Dlg::OnChangeEdit1)ON_BN_CLICKED(IDC_EQUAL, &Cproject_1Dlg::OnClickedEqual) END_MESSAGE_MAP()// Cproject_1Dlg 消息处理程序BOOL Cproject_1Dlg::OnInitDialog(){CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。

合集下载

简单MFC程序设计(编写一个小型计算器)

简单MFC程序设计(编写一个小型计算器)
} 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::OnButtonZhengfu() { UpdateData(); m_Num = 0-m_Num; UpdateData(FALSE); } void CTestDlg::OnButtonDengyu()
m_Num = m_Num * 10 + 8; } else m_Num = 8; } numflag = 1; mark=1; UpdateData(FALSE); } void CTestDlg::OnButtonNum9()
5
{ if(dotflag==1) { quan= quan*10; m_Num += 9 / (double)quan; } else { if(numflag==1) { m_Num = m_Num * 10 + 9; } else m_Num = 9; } numflag = 1; mark=1; UpdateData(FALSE);
是否为数字的 int 型标志 mark。
c) 然后考虑到在计算过程中 num1 和 num2 的储存状态有三种,num1==0 和
num2==0,也就是程序开始运行还没有开始录入数字的状态;num1!=0 和
num2==0,也就是第一个数字已经录入,第二个数字还没有录入的状态这时

北邮基于MFC的计算器设计

北邮基于MFC的计算器设计

1.课题概述1.1课题目标和主要内容本次课题以编写基于MFC的简易计算器为例,重点是学习如何使用MFC消息响应机制完成一个windows下的交互式软件。

本实验以visual studio 2008为平台。

1.2系统的主要功能基本功能单击数字键,显示当前数值单击“+”、“-”、“*”、“/”建进行运算单击“=”,显示运算结果单击“C”,清除已有结果扩展功能进行浮点运算进行倒数、开方运算2. 系统设计2.1 系统总体框架2.2 系统详细设计[1] 模块划分图及描述(1)对话框:实现与用户的交互,使用了两类控件:显示框和按钮。

(2)事件驱动函数:处理由鼠标单击响应到程序的问题,主要有映射和消息处理函数组成。

例如:void CCalculatorDlg::OnBnClickedButtonPoint(){m_coff = 0.1 ;}(3)运算函数:实现逻辑运算以及数据交换。

例如:void CCalculatorDlg::OnBnClickedButtonSqrt(){if( m_second==0){ m_first=sqrt(m_first);UpdateDisplay(m_first); }else{ m_second=sqrt(m_second);UpdateDisplay(m_second); }}[2] 类关系图及描述class CCalculatorDlg : public CDialogEx{// 构造public:CCalculatorDlg(CWnd* pParent = NULL); // 标准构造函数//对话框数据enum { IDD = IDD_CALCULATOR_DIALOG };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:HICON m_hIcon;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:int m_duType; //角度和弧度判断double m_first; //存储一次运算的第一个操作数及一次运算的结果double m_second; //存储一次运算的第二个操作数CString m_operator; //存储运算符double m_coff; //存储小数点的系数权值CString m_display; //编辑框IDC_DISPLAY的关联变量,显示计算结果afx_msg void OnBnClickedHudu();afx_msg void OnBnClickedJiaodu();void UpdateDisplay(double dck);void Calculate(void);void onButtonN(int n);afx_msg void OnBnClickedButton1();afx_msg void OnBnClickedButton2();afx_msg void OnBnClickedButton3();afx_msg void OnBnClickedButton4();afx_msg void OnBnClickedButton5();afx_msg void OnBnClickedButton6();afx_msg void OnBnClickedButton7();afx_msg void OnBnClickedButton8();afx_msg void OnBnClickedButton9();afx_msg void OnBnClickedButton0();afx_msg void OnBnClickedButtonPoint();afx_msg void OnBnClickedButtonSign();afx_msg void OnBnClickedButtonAdd();afx_msg void OnBnClickedButtonMinus();afx_msg void OnBnClickedButtonMutiply();afx_msg void OnBnClickedButtonDiv();afx_msg void OnBnClickedButtonClear();afx_msg void OnBnClickedButtonSqrt();afx_msg void OnBnClickedButtonReci();afx_msg void OnBnClickedButtonEqual(); [3] 程序流程图及描述(2.3 关键算法分析算法1:UpdateDisplay[1] 算法功能:更新显示数据。

mfc计算器程序设计详细

mfc计算器程序设计详细

mfc计算器程序设计详细
MFC是Microsoft基础类的缩写,用于Windows下的GUI程序开发,封装了许多常用的功能,其中包括控件、多线程、消息传递等等。

下面我们将基于MFC来编写一个简单的计算器程序。

首先,我们需要创建一个MFC应用程序并添加一个对话框。

然后,我们需要在对话框中添加各种控件,比如按钮、文本框、标签等等。

在这个例子中,我们需要添加数字按钮、运算符按钮和一个显示结果
的文本框。

接着,我们需要定义各种事件函数,比如数字按钮的点击事件、
运算符按钮的点击事件等等。

在这些事件函数中,我们需要根据相应
的操作完成对应的计算,并将结果显示到文本框中。

当然,我们还需
要处理一些特殊情况,比如输入非法字符、除以0等等。

最后,我们需要将所有的控件和事件函数进行绑定,使得程序能
够正常地运行。

这个过程中,我们将使用MFC提供的消息映射机制来
处理鼠标和键盘事件,以及相应的消息传递机制来更新界面。

总之,在MFC的帮助下编写一个计算器程序不仅方便快捷,而且
代码逻辑清晰,可读性好。

MFC计算器设计

MFC计算器设计

课程名称:Visual C++面向对象与可视化程序设计实验项目:计算器设计姓名:专业:计算机科学与技术班级:学号:计算机科学与技术学院实验教学中心2016 年11月19日哈尔滨理工大学计算机科学与技术学院实验报告实验项目名称:计算器设计( 2课时)一、实验目的1.灵活使用MFC应用程序设计2.设计计算器二、实验内容设计一个简单的计算器,可以实现加法,减法,除法,乘法,取模,开平方,输入数字要求可以输入小数,可以连加。

具有清空,回退功能。

三、实验步骤1.启动VS打2012开新建项目2.出现的New对话框的Projects标签内选择MFC应用程序3.Projects Name指定项目的名字,在Location中指定路径后按OK按钮4.选择创建类型,(例如基于对话框),确定项目类型后按Finish完成。

5.编写实验代码四、实验结果五、程序代码// project_1Dlg.h : 头文件//#pragma once#include "afxwin.h"// Cproject_1Dlg 对话框class Cproject_1Dlg : public CDialogEx{// 构造public:Cproject_1Dlg(CWnd* pParent = NULL); // 标准构造函数void Equal2();void Cproject_1Dlg::AddDigit(char numKey);// 对话框数据enum { IDD = IDD_PROJECT_1_DIALOG };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:HICON m_hIcon;long double m_op1,m_op2,m_result;int m_operation;int i,s;long double r;long double m_m;long double data[50];bool st1,st2;bool pflag;long double p;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:double m_num;CEdit m_control_e;BOOL m_inv;BOOL m_hp;// CString m_sd;CString m_sd;afx_msg void OnClicked1x();afx_msg void OnClickedAdd();afx_msg void OnClickedB1();afx_msg void OnClickedB2();afx_msg void OnClickedB3();afx_msg void OnClickedB4();afx_msg void OnClickedB5();afx_msg void OnClickedB6();afx_msg void OnClickedB7();afx_msg void OnClickedB8();afx_msg void OnClickedB9();afx_msg void OnClickedB10();afx_msg void OnClickedClaer();afx_msg void OnClickedClaer2();afx_msg void OnClickedBp();afx_msg void OnClickedBp2();afx_msg void OnClickedBsp();afx_msg void OnClickedM();afx_msg void OnClickedMc();afx_msg void OnClickedMm();afx_msg void OnClickedMod();afx_msg void OnClickedSqrt();afx_msg void OnClickedMr();afx_msg void OnClickedSubract();afx_msg void OnClickedMul();afx_msg void OnClickedDevide();afx_msg void OnChangeEdit1();afx_msg void OnClickedEqual();};// project_1Dlg.cpp : 实现文件//#include "stdafx.h"#include "project_1.h"#include "project_1Dlg.h"#include "afxdialogex.h"#include<math.h>#ifdef _DEBUG#define new DEBUG_NEW#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx{public:CAboutDlg();// 对话框数据enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()// Cproject_1Dlg 对话框Cproject_1Dlg::Cproject_1Dlg(CWnd* pParent /*=NULL*/) : CDialogEx(Cproject_1Dlg::IDD, pParent), m_num(0), m_sd(_T("")){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void Cproject_1Dlg::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, m_num);DDX_Control(pDX, IDC_EDIT1, m_control_e);DDX_Text(pDX, IDC_sd, m_sd);}BEGIN_MESSAGE_MAP(Cproject_1Dlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_1x, &Cproject_1Dlg::OnClicked1x)ON_BN_CLICKED(IDC_ADD, &Cproject_1Dlg::OnClickedAdd) ON_BN_CLICKED(IDC_b1, &Cproject_1Dlg::OnClickedB1)ON_BN_CLICKED(IDC_b2, &Cproject_1Dlg::OnClickedB2)ON_BN_CLICKED(IDC_b3, &Cproject_1Dlg::OnClickedB3)ON_BN_CLICKED(IDC_b4, &Cproject_1Dlg::OnClickedB4)ON_BN_CLICKED(IDC_b5, &Cproject_1Dlg::OnClickedB5)ON_BN_CLICKED(IDC_b6, &Cproject_1Dlg::OnClickedB6)ON_BN_CLICKED(IDC_b7, &Cproject_1Dlg::OnClickedB7)ON_BN_CLICKED(IDC_b8, &Cproject_1Dlg::OnClickedB8)ON_BN_CLICKED(IDC_b9, &Cproject_1Dlg::OnClickedB9)ON_BN_CLICKED(IDC_b10, &Cproject_1Dlg::OnClickedB10)ON_BN_CLICKED(IDC_claer, &Cproject_1Dlg::OnClickedClaer)ON_BN_CLICKED(IDC_claer2, &Cproject_1Dlg::OnClickedClaer2) ON_BN_CLICKED(IDC_bp, &Cproject_1Dlg::OnClickedBp)ON_BN_CLICKED(IDC_bp2, &Cproject_1Dlg::OnClickedBp2)ON_BN_CLICKED(IDC_bsp, &Cproject_1Dlg::OnClickedBsp)ON_BN_CLICKED(IDC_M, &Cproject_1Dlg::OnClickedM)ON_BN_CLICKED(IDC_MC, &Cproject_1Dlg::OnClickedMc)ON_BN_CLICKED(IDC_MM, &Cproject_1Dlg::OnClickedMm)ON_BN_CLICKED(IDC_MOD, &Cproject_1Dlg::OnClickedMod)ON_BN_CLICKED(IDC_sqrt, &Cproject_1Dlg::OnClickedSqrt)ON_BN_CLICKED(IDC_MR, &Cproject_1Dlg::OnClickedMr)ON_BN_CLICKED(IDC_SUBRACT, &Cproject_1Dlg::OnClickedSubract) ON_BN_CLICKED(IDC_mul, &Cproject_1Dlg::OnClickedMul)ON_BN_CLICKED(IDC_devide, &Cproject_1Dlg::OnClickedDevide) ON_EN_CHANGE(IDC_EDIT1, &Cproject_1Dlg::OnChangeEdit1)ON_BN_CLICKED(IDC_EQUAL, &Cproject_1Dlg::OnClickedEqual) END_MESSAGE_MAP()// Cproject_1Dlg 消息处理程序BOOL Cproject_1Dlg::OnInitDialog(){CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。

MFC设计计算器论Word版

MFC设计计算器论Word版

南京信息工程大学C++面向对象程序设计课程作业报告设计课题:计算器的设计专业班级:自动化2班学生姓名:学生学号:指导教师:成绩:二○一一年六月二十日计算器的设计一、设计目的学会用MFC设计一个简易计算器,能够求实数的四则运算以及求倒数和平方根,可自己增加功能。

二、需求分析系统目标:设计的计算器至少能够进行简单的四则运算和求倒数求反以及开方运算。

主体功能:实现简单的四则运算和求倒数求反以及开方运算。

开发环境:操作系统:windows XP;编程环境:microsoft visual C++ 6.0 。

三、总体设计思路系统流程图:图1(流程图)基本功能划分:1.加法运算2.减法运算3.乘法运算4.除法运算5.求倒数6.求平方根7.求余数8.取反9.Backspace 功能 10.清零功能 11.操作帮助四、详细设计流程图:图2(流程图)(1)创建工程启动Microsoft Visual利用AppWizard向导,创建一个工程“Calculator”。

选择基本表,Click完成。

(2)设计对话框界面①看到如下界面,Delete删除页面上全部原配控件。

②利用MFC自带的控件选项编辑计算器界面③设计的界面如下当然作为“所见即所得”的MFC控件设计,干净整齐的界面是基本要求,界面是否整洁明了甚至会影响用户的心情。

各控件的属性设置见下表:表1:各个控件控件类型控件的ID 控件的CaptionButton Button Button Button Button Button Button Button Button Button Button Button Button Button Button Button Button IDC_Num0IDC_Num1……IDC_Num9IDC_DotIDC_SignIDC_SubIDC_MulIDC_DivIDC_ClearIDC_SqrtIDC_ReciIDC_EqualIDC_ModIDC_BackspaceIDC_ClearIDC_Help1……9.+/-+-*/sqrt1/x=%BackspaceClearHelp(3)为编辑框“IDC_DISPLAY”连接成员变量为编辑框“IDC_DISPLAY”连接一个CString类型的成员变量m_display,用来显示操作数和运算结果。

MFC计算器课程设计报告

MFC计算器课程设计报告

MFC表达式计算器课程设计报告题目:利用MFC框架编写简易表达式计算器【分析】一.设计过程1.Windows消息处理机制的理解首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。

Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。

还有用户消息,比如鼠标的单击,双击,键盘的键入等。

2.界面的设计1)界面的初步设计仿照Windows附件里面的计算器,在资源视图中画好界面,如图:2)修改每个static的属性ID CAPTIONIDD_STA TIC4 简易表达式计算器IDC_STATIC1 待求表达式IDC_STATIC2 运算结果IDC_STATIC3 系统当前时间3)修改每个button的属性IDC_BUTTON1 等于(=)IDC_BUTTON2 全清(C)IDC_BUTTON3 清除(A) 结果如下图:4)修改每个button的处理机制在类向导Classwizard窗口中进行,如下图:其他button按钮的修改类似5)修改每个edit的类型和名称在类向导Classwizard窗口中进行:单击Add Variable按钮,在如下窗口中进行修改其他edit的修改类似最终结果如下:注:主要使用到Layout菜单中的Align功能对各个按钮进行对齐,使界面更加整洁。

拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。

6)系统菜单的添加在Menu的IDR_MENU1中添加系统菜单:同理在“帮助”菜单中添加“关于”。

二.设计步骤1. 添加头文件将Calculate.cpp(见附录)改为Calculate.h将其添加到计算器Dlg.cpp : implementation file中,如下:#include "Calculate.h"。

2.成员函数及其释义:void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CMyDlg dialogCMyDlg::CMyDlg(CWnd* pParent /*=NULL*/): CDialog(CMyDlg::IDD, pParent){//{{AFX_DATA_INIT(CMyDlg)// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CMyDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CMyDlg)DDX_Control(pDX, IDC_EDIT3, m_time);DDX_Control(pDX, IDC_EDIT2, m_result);DDX_Control(pDX, IDC_EDIT1, m_input);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMyDlg, CDialog)//{{AFX_MSG_MAP(CMyDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_WM_TIMER()ON_BN_CLICKED(IDC_BUTTON3, OnButton3)ON_COMMAND(ID_ABOUT, OnAbout)ON_COMMAND(ID_QUIT, OnQuit)//}}AFX_MSG_MAPEND_MESSAGE_MAP()////////////////////////////////////////////////////////////////////////////// CMyDlg message handlers3.OnButton1()按钮的处理函数双击“等于(=)”按钮,添加如下代码:void CMyDlg::OnButton1(){// TODO: Add your control notification handler code hereCString str;char *ch;m_input.GetWindowText(str);ch = (LPSTR)(LPCTSTR)str;char ch2[50];strcpy(ch2,ch);Cal a(ch2);if(!a.OK){m_result.SetWindowText("表达式不合法!");// 表达式不合法,判别出来并给出相应的错误提示}else{if(a.Sign){m_result.SetWindowText("除数为零!");// 表达式不合法,可以判别出来并给出相应的错误提示}else{str.Format("%lf",a.GetV());m_result.SetWindowText(str);}}}以OnButton1()作为求值处理函数,函数的功能是单击等于(=)按钮,运算结果显示在IDC_EDIT2中4.OnButton2()按钮的处理函数双击“清除(C)”按钮,添加如下代码:void CMyDlg::OnButton2(){// TODO: Add your control notification handler code herem_result.SetWindowText("0");m_input.SetWindowText("");m_input.SetFocus();}//函数的功能是把上次输入的表达式清空5.OnButton3()按钮的处理函数双击“全清(A)”按钮,添加如下代码:void CMyDlg::OnButton3(){// TODO: Add your control notification handler code herem_input.SetWindowText("");m_input.SetFocus();}//函数的功能是把上次输入的表达式和运算结果都清除6.OnTimer(UINT nIDEvent)处理函数CWnd::SetTimer(1,500,NULL);//设置时间每隔500ms更新一次。

MFC计算器设计实验报告.

计算机学院课程设计报告课程名称:面向对象程序设计课程设计课程设计题目:基于Winform的多功能计算器的设计与实现姓名:专业:软件工程年级:08软件学号:指导教师:2010年12 月20 日目录1.设计目的 (3)2.设计要求 (3)3.设计方案 (3)(1)计算器的用例图: (3)(2)计算器的类图: (6)(3)计算器的顺序图: (6)(4)计算器协作图 (7)(5)计算器的状态图: (7)(6)计算器的活动图: (8)(7)计算器系统框图: (8)4设计内容: (9)(1)创建工程: (9)(2) 设计用户界面 (9)(3)添加代码 (11)5 测试结果: (15)6 总结: (17)7.参考文献: (17)1.设计目的利用C++语言,编写一个类似windows XP系统的计算器,实现计算器的基本功能,从而利用这次的设计,达到更加了解C++语言,了解面向对象的设计方法,加深对面向对象设计过程的了解等目的。

2.设计要求(1)利用面向对象的知识并参照Windows XP系统附件下的“科学型计算器”设计开发一个多功能的计算器;(2)不限制采用的开发平台和编程语言;(3)要求用UML描述设计过程;(4)要求用系统/程序运行时的截图描述实现的测试过程,系统的功能说明;(5)用原代码(加注释)描述主要的功能实现过程及算法;(6)提交纸质打印课程设计报告及项目工程原代码(所有人刻录在一张光碟中,两份,一份用以存档)。

3.设计方案(1)计算器的用例图:用例名称:四则运算。

参与执行者:用户。

前置条件:计算器已开启。

主事件流:用户输入操作数一。

用户选择加、减、乘、除四则运算中的一种算法。

用户输入操作数二,计算出结果,作为下一次计算的操作数一。

后置条件:显示计算结果。

用例名称:三角函数。

参与执行者:用户。

前置条件:计算器已开启。

主事件流:用户输入操作数一。

选择所要操作的三角函数,计算出结果。

所得的结果作为下一次计算的操作数一。

MFC多功能计算器的设计

设计题目:MFC多功能计算器一.系统实现(开发工具)V isual C++6.0 是Microsoft公司在1998年推出的基于Windows 9X和Windows NT的优秀集成开发环境。

该环境为用户提供了良好的可视化编程环境,程序员可以里利用该开发环境轻松地访问C++源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。

Visual C++6.0不仅包括编译器,而且它还包括许多有用组件,通过这些组件的协同工作,可以在Visual C++6.0集成环境中轻松地完成创建源文件,编辑资源,以及对程序的编译,连接和调试等各项工作。

VC++6.0是Windows 95/98、XP或Windows NT下的一个应用程序,本身对软硬件没有特殊要求。

就是说它对环境的要求与Windows 95/98、Windows NT 要求是一致的。

硬件要求:一般在586以上的处理器、16MB以上内存、100MB以上的硬盘。

软件要求:Windows 95/98或Windows NT3.51以上版本。

VC++ 6.0系统可以在一张CD盘上,也可以在“Visual Studio( Visual C++、Visual Foxpro)”等产品的第一张CD盘上。

一般都有一个VC的自动安装程序,也可以执行VC6目录下的setup.exe,在安装包的提示下进行,对初学者可采用“典型安装”方式。

在安装好VC 6.0系统后,有时根据需要添加或删除某些部件,可插入CD 盘重新执行setup.exe安装程序,安装程序会检测当前系统安装VC6的足件,用户单击“添加/删除”按钮后,在“安装维护”对话框中选定要添加的部件或撤消选定要删除的部件。

二.基本功能描述简单计算器包括双目运算和单目运算功能。

双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,阶乘,对数,开方,进制转换等运算。

可对输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。

mfc设计科学计算器课程设计

mfc设计科学计算器课程设计一、课程目标知识目标:1. 让学生掌握MFC(Microsoft Foundation Classes)的基本概念和原理,理解其在设计科学计算器中的应用。

2. 使学生了解科学计算器的基本功能,如标准运算、三角函数、对数等,并运用MFC实现这些功能。

3. 帮助学生掌握Visual C++编程环境中MFC的使用方法,培养其运用MFC 进行软件开发的能力。

技能目标:1. 培养学生运用MFC设计界面、处理用户输入和输出结果的能力。

2. 让学生学会使用MFC中的事件处理机制,实现科学计算器的功能按键响应。

3. 提高学生的问题分析能力,使其能够根据实际需求设计合理的MFC程序结构。

情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养其主动学习和探究的精神。

2. 培养学生的团队协作意识,使其在编程实践中学会与他人分享和交流。

3. 引导学生认识到科技发展对社会进步的重要性,激发其创新精神和责任感。

课程性质:本课程为实践性较强的课程,结合理论讲解和实际操作,帮助学生掌握MFC设计科学计算器的技能。

学生特点:学生具备一定的C++编程基础,对MFC有一定了解,但实际应用能力较弱。

教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,提高学生的实际编程能力。

在教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. MFC基础回顾:重温MFC的基本概念、框架结构和主要类的功能,重点掌握CWnd、CDialog、CString等类的使用方法。

相关教材章节:第一章 MFC概述,第二章 MFC类和对象。

2. 科学计算器功能设计:介绍科学计算器的基本功能,如标准运算、三角函数、对数等,并分析如何利用MFC实现这些功能。

相关教材章节:第三章 MFC控件编程,第四章 MFC绘图与界面设计。

3. 界面设计与实现:讲解如何使用MFC设计科学计算器的界面,包括窗口、菜单、按钮等控件的使用方法。

MFC计算器课程设计

计算器实验报告2013年6月11日星期二系统设计要求用MFC制作一个计算器,它能在实数范围内进行加、减、乘、除运算。

在运算时要考虑运算符的优先顺序。

要求能显示输入的算式和输出的结果。

设计思路充分利用CString 的功能:1.读入表达式在该过程中,只需要考虑会输入哪些算式,不需要考虑算式的合理性。

2.解析表达式2.1 将CString类的表达式转化为易操作的char类字符数组。

2.2 在运算时,要区分运算符和数字,将它们分别存到两个数组中,由于加减乘除运算符都是二元的,所以数字的个数一定比运算符的个数多一个。

3. 运算3.1 在运算时,第i 个运算符要做的是将第i 个数字与第i+1个数字相运算,运算完后将值赋给第i 个数字,而i 后面的每一个数字都可以往前面挪一个;运算符自运算过的运算符后的每一个都可以往前挪一个。

形象地表示为:在进行一次运算后,若后面补过来的运算符是与它同等级的,则此时的i 依旧没变,所以再对该i 进行运算。

3.2 运算符的优先级。

乘除的优先级大于加减,所以先对乘除进行以上的计算,同样同等级的i 不变,若变化后的b[i]不为乘除,则i++,看下一个运算符。

4.附加功能4.1 括号括号采用递归运算。

运算的函数得到一个CString类型的形参,返回一个float 型的值。

要处理括号,则截取括号里的字符串,递归调用运算的函数,将返回的值存到float 型的数组中去。

4.2 三角函数,指数函数,对数函数采用和括号相类似的方式,在解析时,若读到有三角函数,则递归计算三角函数括号内的式子,将返回的值用<cmath>中的函数计算。

4.3十进制与十六进制的转换将十六进制转化为十进制,只要从左向右,第i个数字乘以16的i-1次幂即可;将十进制转化为十六进制,则要将对16取模,再将得到的char数组倒置一下。

系统功能模块图系统流程图类的层次图关键程序代码1.显示输入UpdateData(true);m_strInput+="0";UpdateData(false);2.将CString转化为字符数组const int len=m_strInput.GetLength();char m[100];memcpy(m,m_strInput,len);3.将存在字符数组的数字转为float型数字存在float型的数组里for(i=0;i<len;){int c=0,j=i;if(m[j]>='0'&&m[j]<='9'){while(m[j]>='0'&&m[j]<='9'){num[countNum]=num[countNum]*10+(m[j]-'0');j++;c++;} //没有小数点的读法if(m[j]=='.'){c++;float t=static_cast<float>(0.1);j++;while((m[j]-'0'>=0)&&(m[j]-'0'<=9)){num[countNum]+=t*static_cast<float>(m[j]-'0');t*=static_cast<float>(0.1);j++;c++;}} //有小数点countNum++;}//取数字4.取运算符if(m[i]=='+'||m[i]=='-'||m[i]=='*'||m[i]=='/'){op[countOperator]=m[i];c++;countOperator++;} //取运算符5.运算(以乘法为例)for(i=0;i<countOperator;) //先计算乘除{if(op[i]=='*'||op[i]=='/'){if(op[i]=='*'){count1++;num[i]*=num[i+1];op[i]=op[i+1];int j;for(j=i+1;j<countNum-1;j++) //每算完一次后该数字后面的数字都往前挪一个,运算符也都往前挪一个{num[j]=num[j+1];}num[j]=0;for(j=i+1;j<countOperator-1;j++){op[j]=op[j+1];}op[j]='0';}}elsei++;6.遇括号和cmath中的函数递归(以括号为例)CString b=a;b = b.Left(b.Find(')'));b = b.Right(b.GetLength()-1-b.ReverseFind('('));num[countNum]=Processing(b);c+=2+b.GetLength();countNum++;7.左右括号不符合报错if(m_strInput.Find('(')*m_strInput.ReverseFind(')')<0)AfxMessageBox("Syntax Error!");总结1.功能:该计算器能在实数范围内进行加减乘除四则混合运算,并通过加括号改变运算次序,能计算三角函数值(弧度制),能计算指数函数和对数函数(以e为底),能将数字在十进制与十六进制间进行转化。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档