c面向对象程序设计MFC简单计算器实验报告

合集下载

C课程设计简易计算器实验报告

C课程设计简易计算器实验报告

《程序设计基础》(C++)课程设计报告计算器姓名:班级:学号:指导教师:成绩:完成时间:完成地点:计算器1 基本功能描述计算器包含基本的四则运算、开方、倒数、相反数(正负)等运算。

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

同时包含清除功能。

2 设计思路如图1是计算器总流程图,输完第一个操作数后,若点击双目运算符,则把m_edit 传递给op1,并传递给变量calculator相对运算符对应的值,输入的第二个操作数传递给op2,点击等号根据calculator的值进行相应运算并输出结果。

若点击的是单目运算符,则直接对其处理得出结果。

若点击清零,则m_edit等于0。

设计思路流程图如下(见下页)。

图1 计算器设计思路总流程图3 软件设计创建步骤打开Microsoft Visual C++ ,选择新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名Calculator及其所在位置。

将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成。

MFC AppWizard建立基于对话窗口的程序框架。

界面设计1、创建控件在对话框上的合适的位置画出编辑框和下压式按钮。

如图2所示。

图2 绘制编辑框在按钮和编辑框属性对话框中输入控件的ID值和标题属性。

如图3所示。

图3 Push Button属性按照上面的操作过程编辑其他按钮和编辑框等对象的属性。

表1 各对象属性对象ID 标题或说明编辑框IDC_EDIT1 结果显示按钮IDC_BUTTON0 0按钮IDC_BUTTON1 1按钮IDC_BUTTON2 2按钮IDC_BUTTON3 3按钮IDC_BUTTON4 4按钮IDC_BUTTON5 5按钮IDC_BUTTON6 6按钮IDC_BUTTON7 7按钮IDC_BUTTON8 8按钮IDC_BUTTON9 9按钮IDC_ BUTTONneg +/-按钮IDC_ BUTTONpot .按钮IDC_ BUTTONadd +按钮IDC_BUTTONsub -按钮IDC_BUTTONmul *按钮IDC_BUTTONdiv /按钮IDC_BUTTONsqrt sqrt按钮IDC_BUTTONCE CE完成后界面如图4所示。

简单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实践报告

c++课程设计实验报告——科学计算器学号:03109613 姓名:徐洁月院系专业:建筑环境与设备工程目录一、课题名称······················································二、问题陈述三、设计目标和设计任务四、解题算法思想五、数据结构描述六、测试数据七、运行情况分析八、设计小结九、心得体会参考资料提交日期一.课题名称科学计算器的设计二.问题陈述三.设计目标和设计任务 3.1初期对自我的要求通过实践加强对程序设计语言课程知识点的理解和掌握,培养对课程知识综合运用能力、实际分析问题能力及编程能力,养成良好的编程习惯。

通过实践进一步领会程序设计的特点和应用,提高运用c++ 语言以及面向对象知识解决实际问题的能力。

通过实践掌握用c++ 语言编写面向对象的实用程序的设计方法,对面向对象方法和思想增加感性的认识;学会利用c++程序设计语言编写出一些短小、可靠的windows实用程序,切实提高面向对象的程序设计能力。

为后续的相关课程的学习打下基础。

3.2设计目标和任务要求实现具有加,减,乘,除基本四则运算功能要求能够实现二进制,八进制,十进制,十六进制转换设计基于mfc框架的,具有友好界面的windows应用程序科学计算器要求具有运算优先级别,包括运算符号的优先级判断,实现基于括号的优先级控制科学计算器要求具有科学函数计算功能,主要包括三角函数(具有角度与弧度的切换),指数函数,对数函数等四.解题算法思想4.1 算法基本流程1)用户通过键盘或者计算机上的按钮输入计算表达式2)这时所输入的表达式在用户看来是数学运算符号,我们要做的就是将数学表达式转换成字符串3)查看整个算式中的括号是否都左右匹配,如果不匹配则推出并提示用户并退出。

程序设计实践 计算器程序实验报告

程序设计实践 计算器程序实验报告

程序设计实践设计报告课题名称:简易计算器设计与实现学生姓名:班级:班内序号:学号:日期:1.课题概述1.1课题目标和主要内容本案例以编写基于MFC的简易计算器软件为例,通过学习MFC事件驱动机制、MFC界面设计、MFC控件使用,并掌握MFC应用程序的设计方法,独立完成一个MFC的一个MFC的应用程序。

本案例的重点是学习如何使用MFC基本控件和事件驱动机制完成一个Windows下交互式应用软件。

本次实验所用的开发平台为Visual Studio 2008。

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

(2)事件驱动函数:例如:void CdckcalculatorDlg::OnBnClickedBtn1(){// TODO: 在此添加控件通知处理程序代码ClickNum("1");}此模块处理的是程序如何响应鼠标的单击,主要由消息映射和消息处理函数两部组成。

(3)运算函数:例如:void CdckCalculatorDlg::onButtonN(int n){if( m_coff == 1.0)m_second = m_second*10 + n;//作为整数输入数字时骸else{ m_second = m_second + n*m_coff; //作为小数输入数字m_coff *= 0.1; }UpdateDisplay(m_second);//更新编辑框的数字显示}此模块是本实验的核心内容,它控制着整个程序的逻辑功能,它所实现的主要是逻辑运算以及数据交换。

MFC计算器程序报告

MFC计算器程序报告

C++课程设计实验报告学号姓名院系专业一、课题名称简易的计算器设计。

二、问题陈述编写一个计算器程序,能够进行四则运算、取模等运算要求:1、个人完成;2、运用对话框编写,界面上只能有一个输出框,数据通过按钮输入到程序,并显示在输出框中;当按下运算符后再输入数据,输出框中应显示新数据;运算结果也显示在输出框中。

3、四则运算、取模运算是最低要求,程序能正确执行;4、界面设计美观、合理;5、独立完成;三、设计目标和设计任务编写一个计算器程序,能够进行四则运算、取模、乘方、立方,并且给计算器程序添加背景。

四、解题算法思想1.创建一个基于对话框的项目2. 给对话框加入相应的操作按钮3. 给按钮加上代码,设置属性4. 为实现四则运算、取模等操作添加必要函数五、程序算法过程①选择File→New菜单命令,选择Project选项卡,并选择MFC AppWizard(exe), name 命名为calculator;选择应用程序基于对话框,即Dialog based。

多次单击next,最后单击Finish后,系统弹出一对话框,如下图:②使用按钮控件、文本编辑框控件和组控件,将他们加入到对话框中,并通过更改按钮控件的属性中的标题部分。

选中所有按钮,在属性中的Extended Style中选中Modal frame,使其达到下图效果:(注意,在布局按钮时,为了使按钮总体整齐美观,可以先创建一行或一列按钮,使他们保持整齐后,按住Ctrl键,选中这一行或一列按钮,再移动鼠标,即可生成另一行或一列按钮;也可以通过Layout菜单中的指令对其进行布局)③鼠标右击按钮控件,选择属性,即可对其ID进行更改,各ID与标题内容对应如下:ID 标题ID 标题IDC_BUTTON0 0 IDC_BUTTONCLS 清零IDC_BUTTON1 1 IDC_ADD +IDC_BUTTON2 2 IDC_PLUS -IDC_BUTTON3 3 IDC_MULTIPL Y *IDC_BUTTON4 4 IDC_DEVIDE /IDC_BUTTON5 5 IDC_EQUALL =IDC_BUTTON6 6 IDC_QUM 取模|IDC_BUTTON7 7 IDC_SQU 平方IDC_BUTTON8 8 IDC_CUB 立方IDC_BUTTON9 9④在对话框非控件部分单击鼠标右键,打开类向导ClassWizard,将数字按钮0~9关联到函数OnEnternum(),方法为单击数字按钮ID,然后单击Message中的BN_CLICKED,最后单击右侧的Add Function,在其中输入函数名即可。

c语言实验报告计算器

c语言实验报告计算器

c语言实验报告计算器C 语言实验报告计算器一、实验目的本次 C 语言实验的主要目的是通过编写程序实现一个简单的计算器功能,加深对 C 语言基本语法、数据类型、控制结构和函数的理解和运用,提高编程能力和解决实际问题的能力。

二、实验要求1、实现基本的四则运算(加、减、乘、除)功能。

2、能够处理用户输入的合法表达式,并输出计算结果。

3、具备错误处理能力,如除数为 0 、输入不合法等情况。

三、实验环境本次实验使用的编程环境是 Visual Studio Code,编译器为 GCC。

四、算法设计与思路(一)整体思路首先,需要从用户那里获取输入的表达式。

然后,对表达式进行解析和计算。

在计算过程中,需要根据运算符的优先级进行相应的运算。

为了实现这个过程,可以使用栈来存储运算符和操作数。

(二)具体算法1、定义一个栈来存储运算符,另一个栈来存储操作数。

2、逐字符读取输入的表达式。

如果是数字字符,则将其转换为数字并压入操作数栈。

如果是运算符,则根据运算符的优先级进行处理。

如果当前运算符的优先级高于栈顶运算符的优先级,则将其压入运算符栈。

否则,从操作数栈中弹出两个操作数,从运算符栈中弹出一个运算符,进行相应的运算,并将结果压入操作数栈。

3、当表达式读取完毕后,依次从运算符栈和操作数栈中弹出元素进行计算,直到运算符栈为空,此时操作数栈中的唯一元素即为表达式的计算结果。

五、代码实现```cinclude <stdioh>include <stdlibh>include <ctypeh>//定义栈的最大容量define MAX_SIZE 100//定义操作符栈typedef struct {char itemsMAX_SIZE;int top;} OperatorStack;//定义操作数栈typedef struct {double itemsMAX_SIZE;int top;} OperandStack;//初始化操作符栈void initOperatorStack(OperatorStack stack) {stack>top =-1;}//初始化操作数栈void initOperandStack(OperandStack stack) {stack>top =-1;}//判断操作符栈是否为空int isOperatorStackEmpty(OperatorStack stack) {return stack>top ==-1;}//判断操作数栈是否为空int isOperandStackEmpty(OperandStack stack) {return stack>top ==-1;}//操作符入栈void pushOperator(OperatorStack stack, char op) {if (stack>top < MAX_SIZE 1) {stack>items++stack>top = op;} else {printf("Operator stack overflow!\n");exit(1);}}//操作数入栈void pushOperand(OperandStack stack, double num) {if (stack>top < MAX_SIZE 1) {stack>items++stack>top = num;} else {printf("Operand stack overflow!\n");exit(1);}}//操作符出栈char popOperator(OperatorStack stack) {if (!isOperatorStackEmpty(stack)){return stack>itemsstack>top;} else {printf("Operator stack underflow!\n");exit(1);}}//操作数出栈double popOperand(OperandStack stack) {if (!isOperandStackEmpty(stack)){return stack>itemsstack>top;} else {printf("Operand stack underflow!\n");exit(1);}}//获取操作符的优先级int getPriority(char op) {switch (op) {case '+':case '':return 1;case '':case '/':return 2;default:return -1;}}//计算表达式double calculate(char expression) {OperatorStack opStack;OperandStack numStack; initOperatorStack(&opStack);initOperandStack(&numStack);int i = 0;while (expressioni!='\0'){if (isdigit(expressioni)){double num = 0;while (isdigit(expressioni)){num = num 10 +(expressioni '0');i++;}if (expressioni ==''){double fraction = 01;i++;while (isdigit(expressioni)){num +=(expressioni '0') fraction; fraction /= 10;i++;}}pushOperand(&numStack, num);} else if (expressioni =='('){pushOperator(&opStack, expressioni);i++;} else if (expressioni ==')'){while (opStackitemsopStacktop!='('){double num2 = popOperand(&numStack);double num1 = popOperand(&numStack);char op = popOperator(&opStack);if (op =='+'){pushOperand(&numStack, num1 + num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op =='/'){if (num2 == 0) {printf("Division by zero!\n");exit(1);}pushOperand(&numStack, num1 / num2);}}popOperator(&opStack);i++;} else {while (!isOperatorStackEmpty(&opStack) &&getPriority(opStackitemsopStacktop) >= getPriority(expressioni)){double num2 = popOperand(&numStack);double num1 = popOperand(&numStack);char op = popOperator(&opStack);if (op =='+'){pushOperand(&numStack, num1 + num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op =='/'){if (num2 == 0) {printf("Division by zero!\n");exit(1);}pushOperand(&numStack, num1 / num2);}}pushOperator(&opStack, expressioni);i++;}}while (!isOperatorStackEmpty(&opStack)){double num2 = popOperand(&numStack);double num1 = popOperand(&numStack);char op = popOperator(&opStack);if (op =='+'){pushOperand(&numStack, num1 + num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op =='/'){if (num2 == 0) {printf("Division by zero!\n");exit(1);}pushOperand(&numStack, num1 / num2);}}return popOperand(&numStack);}int main(){char expression100;printf("Enter an expression: ");scanf("%s", expression);double result = calculate(expression);printf("Result: %f\n", result);return 0;}```六、实验结果与分析(一)测试用例及结果以下是一些测试用例及其对应的结果:1、输入:"2 + 3",输出:50000002、输入:"5 2",输出:30000003、输入:"3 4",输出:120000004、输入:"6 / 2",输出:30000005、输入:"2 + 3 4",输出:140000006、输入:"(2 + 3) 4",输出:200000007、输入:"5 / 0",输出:Division by zero!(二)结果分析从测试结果来看,程序能够正确计算基本的四则运算表达式,包括有括号的情况。

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();// 将“关于...”菜单项添加到系统菜单中。

C++-MFC计算器编程课程设计实践报告

C++-MFC计算器编程课程设计实践报告

中南大学本科生课程设计(实践)设计报告(程序设计基础)题MFC编程科学计算器目学生1104120502学号学生郭斌繁姓名指导蔡旭晖教师学院交通运输工程学院专业交通运输类1205班班级计算机基础教学实验中心2013年7月1日程序设计(C++)实践报告1.引言C++语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序:(1) C++是一个更好的C,它保持了C S言的优点,大多数的C程序代码略作修改或不作修改就可在C++的集成环境下调试和运行。

这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。

(2) C++是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。

这对于设计、编制和调试一些大型的软件尤为重要。

⑶C++集成环境不仅支持C++程序的编译和调试,而且也支持C程序的编译和调试。

通常,C++ 程序环境约定:当源程序文件的扩展名为c.时,则为C程序;而当源程序文件的扩展名为cpp.时,则为C++?序。

(4)C++语句非常简练,对语法限制比较宽松,因此C++语法非常灵活。

其优点是给用户编程带来书写上的方便。

其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误。

次课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。

并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。

(1).设计目标利用MFC程序开发工具设计一款可以进行简单计算及部分科学计算的计算器。

在设计当中将综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的应用程序系统。

通过此设计进一步提高自己的动手能力,并能使自己清楚的知道开发一个应用程序的思想、方法和流程。

(2).选题分析此次实践所选题目中除了简单的加减乘除运算程序之外还包括了余弦函数、双曲余弦函数、度分秒的转换和X的y次方及y次根号下x的运算程序。

c计算器实验报告

c计算器实验报告

简单计算器姓名: 周吉祥实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。

实验内容:(1)体系设计:程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,运算结果能正确显示,可以清楚数据等。

(2)设计思路:1)先在Visual C++ 中建立一个MFC工程文件,名为calculator.2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单选框3)设计按钮,并修改其相应的ID与Caption.4)选择和设置各控件的单击鼠标事件。

5)为编辑框添加double类型的关联变量m_edit1.6)在中添加头文件,然后添加public成员。

7)打开文件,在构造函数中,进行成员初始化和完善各控件的响应函数代码。

(3)程序清单:添加的public成员:double tempvalue; 法 2.减法 3.乘法 4.除法int append; //判断后面是否添加数字成员初始化:CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/): CDialog(CCalculatorDlg::IDD, pParent){//{{AFX_DATA_INIT(CCalculatorDlg)m_edit1 = ;//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);tempvalue=0;result=0;sort=0;append=0;}各控件响应函数代码:void CCalculatorDlg::OnButton1() //按钮“1”{// TODO: Add your control notification handler code here if(append==1)result=0;result=result*10+1;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton2() //按钮“2”{// TODO: Add your control notification handler code here if(append==1)result=0;result=result*10+2;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton3() //按钮“3”{// TODO: Add your control notification handler code here if(append==1)result=0;result=result*10+3;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton4() //按钮“4”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+4;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton5() //按钮“5”{// TODO: Add your control notification handler code here if(append==1)result=0;result=result*10+5;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton6() //按钮“6”// TODO: Add your control notification handler code here if(append==1)result=0;result=result*10+6;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton7() //按钮“7”{// TODO: Add your control notification handler code here if(append==1)result=0;result=result*10+7;m_edit1=result;append=0;UpdateData(FALSE);void CCalculatorDlg::OnButton8() //按钮“8”{// TODO: Add your control notification handler code here if(append==1)result=0;result=result*10+8;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton9() //按钮“9”{// TODO: Add your control notification handler code here if(append==1)result=0;result=result*10+9;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONzero() //按钮“0”{// TODO: Add your control notification handler code here if(append==1)result=0;result=result*10+0;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONequal() //按钮“=”{// TODO: Add your control notification handler code here switch(sort){case 1:result=result+tempvalue;break;case 2:result=tempvalue-result;break;case 3:result=result*tempvalue;break;case 4:result=tempvalue/result;break;}m_edit1=result;sort=0;append=1;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONclean() //按钮“退出”{// TODO: Add your control notification handler code here tempvalue=0;result=0;m_edit1=;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONplus() //按钮“+”{// TODO: Add your control notification handler code here sort=1;tempvalue=result;m_edit1=0;append=1;}void CCalculatorDlg::OnBUTTONminus() //按钮“-”{// TODO: Add your control notification handler code here sort=2;tempvalue=result;append=1;}void CCalculatorDlg::OnBUTTONmulti() //按钮“*”{// TODO: Add your control notification handler code here sort=3;tempvalue=result;m_edit1=0;append=1;}void CCalculatorDlg::OnBUTTONdiv() //按钮“/”{// TODO: Add your control notification handler code here sort=4;tempvalue=result;append=1;}(4)程序调试:简单计算器测试与思考:1.小结:A.在做上面那个简单计算器的时候,遇到的问题很少,而且差不多都是些很小的问题,很容易就解决了B.刚开始,在老师没讲课之前,不知道如何设置响应事件,经老师讲解后,很快就解决了C.在运行的调试的时候,发现计算器的减法与除法的功能出错,原来是减数与被减数、除数与被除数的位置互换了;还有,连续点击“=”时显示结果会不停变动,解决方法是:加“sort=0;”语句;另外,在点击“=”后,再点击数字键时,会发现点击的相应数字会显示在原显示结果的后面,解决方法是:加“append=1;”语句。

MFC计算器设计实验报告.

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)计算器的用例图:用例名称:四则运算。

参与执行者:用户。

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

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

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

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

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

用例名称:三角函数。

参与执行者:用户。

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

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

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

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

C++-MFC计算器编程课程设计实践报告

C++-MFC计算器编程课程设计实践报告

中南大学本科生课程设计(实践)设计报告(程序设计基础)题MFC编程科学计算器目学生1104120502学号学生郭斌繁姓名指导蔡旭晖教师学院交通运输工程学院专业交通运输类1205班班级计算机基础教学实验中心2013 年 7 月1日程序设计(C++)实践报告1.引言C++语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序:(1)C++是一个更好的C,它保持了C语言的优点,大多数的C程序代码略作修改或不作修改就可在C++的集成环境下调试和运行。

这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。

(2)C++是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。

这对于设计、编制和调试一些大型的软件尤为重要。

(3)C++集成环境不仅支持C++程序的编译和调试,而且也支持C程序的编译和调试。

通常,C++程序环境约定:当源程序文件的扩展名为c.时,则为C程序;而当源程序文件的扩展名为cpp.时,则为C++程序。

(4)C++语句非常简练,对语法限制比较宽松,因此C++语法非常灵活。

其优点是给用户编程带来书写上的方便。

其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误。

次课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。

并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。

(1).设计目标利用MFC程序开发工具设计一款可以进行简单计算及部分科学计算的计算器。

在设计当中将综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的应用程序系统。

通过此设计进一步提高自己的动手能力,并能使自己清楚的知道开发一个应用程序的思想、方法和流程。

(2).选题分析此次实践所选题目中除了简单的加减乘除运算程序之外还包括了余弦函数、双曲余弦函数、度分秒的转换和X的y次方及y次根号下x的运算程序。

c++面向对象程序设计MFC简单计算器试验报告

c++面向对象程序设计MFC简单计算器试验报告

计算机与信息工程学院《程序设计基础》课程设计报告题目名称: 60.编写一个能实现简单功能的计算器学生姓名:刘沛东学生学号:专业班级:电子信息工程(1)班指导教师:高攀1 课程设计的题目编写一个能实现简单功能的计算器2 题目要求1. 有一个计算器图形。

2. 能实现加、减、乘、除及乘方的运算。

3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色例如:输入数字1 时,在计算器图形上的1键变为红色。

屏幕、图形颜色、形状自定4.3 总体设计3.1 总体框架开始键入第一个按钮键入第二个按结系统框架1 图 3.2 系统功能说明在VC++6.0中绘制计算器界面,各控件的设置ID0~9对控件设定相应的和其他属性:“1”控件设置2 图 -+对“、、ID”控件设定相应的和其他属性:*、\“图 2 +”控件设置和其他属性:对其它控件设定相应的ID其它控件设置3图使界面更加整洁。

Align菜单中的Layout主要使用到功能对各个按钮进行对其,控件用于处理鼠标的ButtonEdit拖出的控件有上面的一个控件用于显示数字,消息。

4 程序详细设计系统主调模块4.1.图5 程序流程图4.2各模块详细设计变量定义:double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。

double m_Dis; //Edit控件上需要显示的数字BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。

double numfirst; //保存计算过程中的前一个数字,double numsecond;//保存计算过程中的第二个数字char op;//记录当前的计算符号,可以为'+','-','*','/','=','c','n'变量初始化:poz=1;m_Dis = 0.0;numfirst=0;numsecond=0;op=0;4.4.2 设计思路a)首先考虑对所有按键分为两类,数字类和符号类,0,1,2,3,4,5,6,7,8,9为数字类,+,-,*,/,=为符号类。

mfc计算器实验报告

mfc计算器实验报告

C++程序设计设计性实验报告实验项目名称:高级计算器设计与开发专业班级:;姓名:;学号:实验起止日期:起于年月日止于年月日实验目的:学会用C++语言和数据结构知识实现表达式的解析与计算;学会使用动态链接库技术进行编程;学会编辑、编译、运行MFC应用程序的基本过程.学会MFC可视化编程技术。

实验要求:1.能完成双精度型数值的加、减、乘、除计算;编程中使用了动态连接库技术.2.能完成双精度型数值的加、减、乘、除计算;编程中使用了动态连接库技术;能实现表达式的输入,解析与计算实验内容:1.C++语言的顺序结构,分支结构,循环结构,函数,结构体,指针,MFC可视化编程技术。

2.数据结构中的二叉树数据组织、存贮、后序遍历及其操作。

3. 使用动态链接库进行函数模块的设计,实现计算功能。

实验具体方案:按照系统设计要求,用Visual C++设计和开发一个MFC应用程序---高级计算器。

计算器的界面设计、计算功能实现、算式计算和动态链接库的使用等。

提交由需求分析:系统设计说明、系统技术文档、系统使用说明书和源程序代码为附录构成的实验报告。

需求分析:系统设计说明1.计算器界面计算器界面包括主题“高级计算器”和背景图片以及电子日历。

在计算区上有显示文本框和数字按钮以及运算符按钮。

在计算区上部分有运算模式选择模块和小提示语句。

2.模块功能简介系统分为多个模块,分别为计算模块、错误分析模块、界面显示模块和模式选择模块。

其中计算模块用来进行各种基本的加、减、乘、除的运算并且显示运算结果;错误分析模块用来进行错误处理;界面显示模块用来美化计算器界面;模式选择模块用来进行运算模式的选择和切换,以实现不同的运算要求。

3.系统结构图系统技术文档1.系统各模块主要流程图(1) 单步运算流程图(2) 算式运算流程图2.软件总体测试方案与测试记录运行程序,然后查看计算器界面和设计是否相同,进行运算模式的切换,看是否能正确的进行模式切换,查看日历显示是否正确。

基于vc++mfc的科学计算器程序实验报告

基于vc++mfc的科学计算器程序实验报告

实验报告课程名称:windows软件开发实习实验项目:科学计算器工业大学实验报告(适用计算机程序设计类)专业班级:软件1006 学号:101201622 :鑫可实验名称:附件A 工业大学实验报告(适用计算机程序设计类)专业班级:软件1006 学号:101201622 :鑫可实验步骤或程序:一、关于Visual C++:Visual C++6.0由Microsoft开发, 它不仅是一个C++ 编译器,而且是一个基于Windows 操作系统的可视化集成开发环境(integrated development environment,IDE)。

Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。

这些组件通过过一个名为Developer Studio的组件集成为和谐的开发环境。

Microsoft的主力软件产品。

Visual C++是一个功能强大的可视化软件开发工具。

自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。

虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。

所以实际中,更多的是以Visual C++6.0为6平台。

Visual C++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。

比如,它允许用户进行远程调试,单步执行等。

还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。

其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。

这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。

二、设计要点1、基本要求:设计的系统界面要美观大方,操作合理,有必要的提示。

MFC实训_计算器

MFC实训_计算器

面向对象程序设计实训报告——简易计算器专业:电子信息工程学生姓名:唐伯虎学号: 9527指导教师:小行星2016年1月7 日1 总体设计1.1 设计任务使用Visual C++6.0 MFC编写一个计算器。

1.2 基本要求(1)按照题目要求独立设计计算器所需的所有按钮,并完成程序源码编写、调试及关键代码注释。

(40分)(2)能够实现+、-、*、/计算。

(10分)(3)能够实现对数及幂函数计算。

(15分)(4)能够实现三角函数及反三角函数计算。

(15分)1.3 发挥部分能够实现8,16,10,2进制之间相互转换。

(20分)2 方案设计2.1 需求性分析所谓计算器,就是要进行数值运算,提供1-9数字按键,让用户按下不同的数字键,可以是组合输入,然后再按下运算符按键实现两个或者多个数值的计算,因此在计算器中除了需要定义数字按键之外运算符按键也是必不可少的,但是运算符按键类型众多,实现的功能也是五花八门,有双目运算符,比如+ - * /这些,也有单目运算符,比如x^2,ln,sqrt,所针对的数字个数也不一样,因此在设计计算器之前需要明确好该计算器大致要实现怎样的功能,需要定义多少个按键,而不是什么按键都要添加,企图复杂化,这样一来,就会造成很多麻烦。

应该先从四则运算开始,然后逐一增加功能,循序渐进的进行,根据题目的要求,划分好制作的步骤先后顺序。

我在基本的要求基础上希望添加几个功能,分别是清除按键,这是少不了的,作用是初始化数据,清屏,然后是退格按键,在输入错误的情况下能够实现退格再输入;再次是Ans按键,用以保留上一次的运算结果,以备下次运算时需要;最后是圆周率PI,在需要用到圆周运算时不用输入3.1415……这么长的一段数值……但是这都是在完成基本功能的基础上添加的功能。

2.2 可行性分析本设计是简单计算器。

日常计算机使用中,常常涉及到一些有关计算的问题,一个小型的计算器软件变得非常有用,该校型计算器需要空间资源较少,对电脑其他程序的应用影响较小。

《c 面向对象程序设计简单计算器的设计》

《c  面向对象程序设计简单计算器的设计》

面向对象程序设计----简单计算器的设计一、问题描述简单计算器的基本功能如下:1.四则运算,例如加减乘除等;2.除了整数的运算也可实现小数的各类运算;3.判断非法操作,例如判定1/0为非法操作;4.其他特性;这个简易计算器只实现以上所述功能,即实现简单计算。

二、设计思路计算器起始运行在归零状态,此时只接受数字输入,当按下一个数字按钮时,计算器只显示用户输入第一个操作数,用户在该状态下可以继续输入数字。

1.当第一个数字输入完成后,可以接受第二个操作数。

2.在数字输入结束进行运算后,按下=按钮可以根据前面按下的操作符计算结果显示,表示计算完成。

3.在上述计算过程中都可以接受双击等号回到清零状态。

三、功能函数设计:1.数字按钮这个是通过最基本的OnButton()将0~9十个数字按钮的单击消息处理函数用类向导全部关联到此,适文本框应该只是显示当前单击的数字;2.小数点按钮函数OnDecimal这个函数主要是实现小数点在计算器的相关功能3.列表在算法的函数OnSelchangeOperatorList()这一类按钮包括“+”“-”“*”“/”,它们的单击消息在同一个处理函数中进行处理,以同样的方法把这四个按钮的单击操作关联到此函数中,使四则运算法则在列表中通过选择去实现。

4.“=”符号函数OnEnquall()实现计算器中等号的功能,双击时也可使编辑框的数字归零。

四、编码实现:int calculator_type_i;double count=10,value=0;double Input_data_int=0,Input_data_dec=0;double Inputdata1=0,Inputdata2=0;char datatostr_buffer[10];bool decimal=FALSE;以上代码是添加的全局变量,为正确获取键盘输入供所有按钮函数使用。

// TODO: Add extra initialization herem_OperatorBox.AddString("-");m_OperatorBox.AddString("*");m_OperatorBox.AddString("/");m_OperatorBox.AddString("+");以上代码是初始化列表框,并使其在程序运行时具有“加”“减”“乘”“除”可选择功能。

MFC计算器编程设计报告

MFC计算器编程设计报告

MFC计算器编程设计报告地信091指导老师:2010.11.15一(题目:利用MFC框架编写简易计算器要求使用MFC框架在Visual Studio 6.0环境下编写一个简易的计算器,支持任意位数的加减乘数,正负转换,并且实现BackSpace CE C功能。

二(设计过程1. Windows消息处理机制的理解首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。

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

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

2. 界面的设计仿照Windows附件里面的计算器,在资源视图中画好界面,如图:主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。

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

3. 建立的变量,控件的命名,对应的消息处理函数对应表ID CAPTION Message Handler简易计算器 1.0 Beta1版 IDD_CALC_DIALOG N/A IDC_NUM0 0 OnNum0IDC_NUM1 1 OnNum1IDC_NUM2 2 OnNum2IDC_NUM3 3 OnNum3IDC_NUM4 4 OnNum4IDC_NUM5 5 OnNum5IDC_NUM6 6 OnNum6IDC_NUM7 7 OnNum7IDC_NUM8 8 OnNum8IDC_NUM9 9 OnNum9IDC_NEG +/- OnNegIDC_PT . OnPtIDC_DIV / OnDivIDC_MUL * OnMulIDC_MIN - OnMinIDC_ADD + OnAddIDC_BACKSPACE BACK OnBackspaceIDC_CE CE OnCeIDC_CLEAR C OnClearIDC_EQU = OnEquIDC_DIS N/A N/AOnCal(double num) 变量定义:double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9
OnNum9
IDC_NEG
+/-
OnNeg
IDC_PT
.
OnPt
IDC_DIV
/
OnDiv
IDC_MUL
*
OnMul
IDC_MIN
-
OnMin
IDC_ADD
+
OnAdd
IDC_BACKSPACE
BACK
OnBackspace
IDC_CE
CE
OnCe
图3 其它控件设置
主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用图5 程序流程图
各模块详细设
ID
CAPTION
Message Handler
IDD_CALC_DIALOG
简易计算器
N/A
IDC_NUM0
0
OnNum0
IDC_NUM1
1
OnNum1
IDC_NUM2
2
OnNum2
IDC_NUM3
3
OnNum3
IDC_NUM4
4
OnNum4
IDC_NUM5
5
OnNum5
IDC_NUM6
6
OnNum6
IDC_NUM7
7
OnNum7
IDC_NUM8
8
OnNum8
IDC_NUM9
计算机与信息工程学院
《程序设计基础》课程设计报告
题目名称:60.编写一个能实现简单功能的计算器
学生姓名:刘沛东
学生学号:54
专业班级:电子信息工程(1)班
指导教师:高攀
1
编写一个能实现简单功能的计算器
2
1. 有一个计算器图形。
2. 能实现加、减、乘、除及乘方的运算。
3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色
例如:输入数字1 时,在计算器图形上的1键变为红色。
4. 屏幕、图形颜色、形状自定
3
总体框架
图1 系统框架
系统功能说明
在VC++中绘制计算器界面,各控件的设置
对0~9控件设定相应的ID和其他属性:
图2“1”控件设置
对“+、-、*、\”控件设定相应的ID和其他属性:
图2“+”控件设置
对其它控件设定相应的ID和其他属性:
相关文档
最新文档