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下的科学计算器

《VC++程序设计》实验报告题目科学计算器院、系(部)计算机科学与技术学院专业及班级学号姓名日期2012年11月11日1 题目要求仿照Windows系统自带计算器做的一个小型科学计算器。

2 功能需求整个系统具有的功能:响应各个数字键,实现加、减、乘、除、x^y、lnx、x!、sinx、cosx、tanx、二进制、二进制转换八进制、清空、求倒数等基本功能;3 总体设计3.1 系统模块3.2 系统业务处理流程整体流程图4 详细设计1)在对话框类的头文件“CalculatorDlg.h”头部添加:#include "math.h“2)在对话框类的定义中添加下列函数声明:afx_msg void OnNumberKey(UINT nID);//处理数字键单击事件的消息响应函数afx_msg void OnOperationKey(UINT nID);//处理操作键单击事件的消息响应函数3)在对话框的可执行文件的消息映射中添加如下代码:ON_COMMAND_RANGE(IDC_NUMBER1,IDC_NUMBER10,OnNumberKey)ON_COMMAND_RANGE(IDC_NUMBER_PlusMinus,IDC_NUMBER_Equal ,OnOperationKey)4)在对话框的可执行文件中添加OnNumberKey(UINT nID)和OnOperationKey(UINT nID)的实现代码5)在对话框类中定义如下变量:double number1,number2;//number1和number1用于存储将要进行运算的数字int NumberState,OperationState;//NumberState用于标示是将数值赋给number1或是number1//OperationState用于表示计算器所要执行的操作6)为IDC_EDIT_PUTOUT添加映射变量m_Cnumber7)在对话框的构造函数中初始化变量m_number = 0.0;NumberState=1;8)为对话框添加计算函数void cal(),用于计算void CCalculatorDlg::cal() //计算函数{m_number=atof(m_Cnumber);switch(OperationState){case 1:m_number=(double)number1/number2; NumberState=1;m_Cnumber.Format("%g",m_number); UpdateData(FALSE);break;case 2:m_number=number1*number2;NumberState=1;m_Cnumber.Format("%g",m_number); UpdateData(FALSE);break;case 3:m_number=number1+number2;NumberState=1;m_Cnumber.Format("%g",m_number); UpdateData(FALSE);break;case 4:m_number=number1-number2;NumberState=1;m_Cnumber.Format("%g",m_number); UpdateData(FALSE);break;case 5:m_number=pow(number1,number2);NumberState=1;m_Cnumber.Format("%g",m_number); UpdateData(FALSE);break;}number1=m_number;OperationState=0;}9)OnNumberKey(UINT nID)函数void CCalculatorDlg::OnNumberKey(UINT nID) {CString n;switch (nID){case IDC_BUTTON1:n="1";break;case IDC_BUTTON2:n="2";break;case IDC_BUTTON3:n="3";break;case IDC_BUTTON4:n="4";break;case IDC_BUTTON5:n="5";break;case IDC_BUTTON6:n="6";break;case IDC_BUTTON7:n="7";break;case IDC_BUTTON8:n="8";break;case IDC_BUTTON9:n="9";break;case IDC_BUTTON0:n="0";break;}if (NumberState==1){m_Cnumber=m_Cnumber+n;number1=atof(m_Cnumber);UpdateData(FALSE);}else{m_Cnumber=m_Cnumber+n;number2=atof(m_Cnumber);UpdateData(FALSE);}//处理除数为零的情况,如果显示除,则零按钮不显示,否则显示if (Zero=FALSE){Zero=TRUE;m_Zero.ShowWindow(SW_SHOW);}else{m_Zero.ShowWindow(SW_SHOW);}}10)OnOperationKey(UINT nID)函数void CCalculatorDlg::OnOperationKey(UINT nID){m_number=atof(m_Cnumber);switch(nID){case IDC_BUTTON_PlusMinus:m_number=-m_number;if (NumberState==1){number1=m_number;}else{number2=m_number;}m_Cnumber.Format("%g",m_number);UpdateData(FALSE);case IDC_BUTTON_BackSpace:int n;n=m_Cnumber.GetAllocLength();m_Cnumber=m_Cnumber.Left(n-1);UpdateData(FALSE);break;case IDC_BUTTON_Divide:cal();if (Zero=TRUE){m_Zero.ShowWindow(SW_HIDE);Zero=FALSE;}OperationState=1;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_BUTTON_Multiply:cal();OperationState=2;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_BUTTON_Add:cal();OperationState=3;m_number=0;m_Cnumber="";NumberState=2;case IDC_BUTTON_Subtract:cal();OperationState=4;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_CIFANG:cal();OperationState=5;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_BUTTON_Clear:number1=number2=m_number=0;m_Cnumber.Format("%g",m_number);UpdateData(FALSE);m_Cnumber="";NumberState=1;break;case IDC_BUTTON_Sqrt:number1=m_number=sqrt(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_BUTTON_Derivative:number1=m_number=(double)1/number1;m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_BUTTON_Equal:cal();break;}}11)添加剩余的操作按键,(此处只写一个,如tan(),cos(),n!,x^y等详细函数看源代码void CCalculatorDlg::OnSin(){// TODO: Add your control notification handler code herem_number=atof(m_Cnumber);m_number=sin(m_number*3.1415926/180);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);}12)二进制转换核心代码void CCalculatorDlg::OnBinary(){// TODO: Add your control notification handler code hereconst int size=sizeof(int)*8; //转换成4*8=32位二进制char str[size+1]; //来存储二进制转换结果m_number=atof(m_Cnumber);bit(m_number,str,size);m_Cnumber.Format("%s",str);UpdateData(FALSE);}char *CCalculatorDlg::bit(int m_number,char*array,int size){for(int i=size-1;i>=0;i--,m_number>>=1) //m_number>>=1向右移一位array[i]='0'+(1&m_number); //判断每一位是0还是1 array[size]='\0';return array;}13)二进制转换八进制核心代码void CCalculatorDlg::OnOctal(){// TODO: Add your control notification handler code hereUpdateData(TRUE);int i,j,m;int sum;sum=0;m = m_Cnumber.GetLength();for(i=m-1; i>=0; i-- )sum+= ((m_Cnumber[i]-'0')<<(m-i-1));//<<是位操作符,表示二进制数向左移位,如001变为010,等效于sum+=((s[i]-'0')*2^(m-i-1));这样应该清楚了,如0101==0*2^3+1*2^2+0*2^1+1*2^0;即转为十进制if(sum==0){m_Cnumber = "0";}int a[10];i=0;while(sum){a[i]=sum%8;//这部分是十进制转八进制的,原理同上。

简单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面向对象程序设计MFC简单计算器实验报告

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

c面向对象程序设计M F C简单计算器实验报告Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#计算机与信息工程学院《程序设计基础》课程设计报告题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东学生学号:专业班级:电子信息工程(1)班指导教师:高攀1 课程设计的题目编写一个能实现简单功能的计算器2 题目要求1. 有一个计算器图形。

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

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

4. 屏幕、图形颜色、形状自定3 总体设计总体框架图1 系统框架系统功能说明在VC++中绘制计算器界面,各控件的设置对0~9控件设定相应的ID和其他属性:图2 “1”控件设置对“+、-、*、\”控件设定相应的ID和其他属性:图2 “+”控件设置对其它控件设定相应的ID和其他属性:图3 其它控件设置主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。

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

4 程序详细设计系统主调模块图5 程序流程图各模块详细设计建立的变量,控件的命名,对应的消息处理函数对应表double poz; 按钮的处理函数void CCalcDlg::OnPt(){point_flag=TRUE; && buffer[i+1]==0)之前那位}m_Dis=strtod(buffer,NULL);整个大的程序的实现分8个功能,每个功能都通过一个相应的函数来实现.在调试时分别进行调试,使得调试更方便些.在编写各个函数只是按着题目要求的去完成,后来经指导老师指导后,发现了很多自己欠缺的地方,又一次将程序整体进行调试.最后把程序完善了许多。

MFC设计简单的计算器范文

MFC设计简单的计算器范文

石家庄经济学院实验报告学院:专业: 计算机信息工程学院计算机实验中心制《Windows程序设计》实验报告姓名学号日期实验室计算机软件技术实验指导教师设备编号实验题目实验9 对话框一、实验目的1. 掌握对话框类的定义及使用2. 掌握对话框的数据交换和检验二、实验内容1.编写一个基于对话框的程序,当用户点击对话框上的按钮时弹出一个模态对话框,显示的对话框中央显示出当前时间。

程序界面如下图所示:2.试着编写一个可以完成计算器的基于对话框的应用程序,该应用程序具有“加”、“减”、“乘”、“除”的功能三、源代码及实验结果1.显示时间核心代码:class CMydialog : public CDialog{// Constructionpublic:C Mydialog(CWnd* pParent = NULL); // standard constructor// Dialog Data//{{AFX_DATA(CMydialog)e num { IDD = IDD_DIALOG1 };C String m_time;//}}AFX_DATA// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CMydialog)p rotected:v irtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL// Implementationprotected:// Generated message map functions//{{AFX_MSG(CMydialog)a fx_msg void On_OK();a fx_msg void On_Cancel();//}}AFX_MSGD ECLARE_MESSAGE_MAP()};CMydialog::CMydialog(CWnd* pParent /*=NULL*/): CDialog(CMydialog::IDD, pParent){//{{AFX_DATA_INIT(CMydialog)m_time = _T("");//}}AFX_DATA_INIT}void CMydialog::DoDataExchange(CDataExchange* pDX) {C Dialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CMydialog)D DX_Text(pDX, IDC_STA TIC1, m_time);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMydialog, CDialog)//{{AFX_MSG_MAP(CMydialog)O N_BN_CLICKED(IDC_BUTTON1, On_OK)O N_BN_CLICKED(IDC_BUTTON2, On_Cancel)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CMydialog message handlersvoid CMydialog::On_OK(){// TODO: Add your control notification handler code here C Dialog::OnOK();}void CMydialog::On_Cancel(){// TODO: Add your control notification handler code here C Dialog::OnCancel();}void CTest10_1Dlg::OnButton1(){// TODO: Add your control notification handler code here C Time time = CTime::GetCurrentTime();C Mydialog dlg;d lg.m_time = time.Format("%Y-%m-%d %H:%M:%S");U pdateData(FALSE);d lg.DoModal();}结果:图一2.计算器核心代码:CTest10_2Dlg::CTest10_2Dlg(CWnd* pParent /*=NULL*/): CDialog(CTest10_2Dlg::IDD, pParent){n um1 = 0;n um2 = 0;//{{AFX_DATA_INIT(CTest10_2Dlg)// m_result = _T("");m_result.Format("%g",num1);//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);e = 0;o perate = 'N';_Flag = FALSE;D otFlag = FALSE;}void CTest10_2Dlg::DoDataExchange(CDataExchange* pDX){C Dialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CTest10_2Dlg)D DX_Text(pDX, IDC_EDIT1, m_result);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CTest10_2Dlg, CDialog)//{{AFX_MSG_MAP(CTest10_2Dlg)O N_WM_SYSCOMMAND()O N_WM_PAINT()O N_WM_QUERYDRAGICON()O N_BN_CLICKED(IDC_BUTTON0, OnButton0)O N_BN_CLICKED(IDC_BUTTON1, OnButton1)O N_BN_CLICKED(IDC_BUTTON2, OnButton2)O N_BN_CLICKED(IDC_BUTTON3, OnButton3)O N_BN_CLICKED(IDC_BUTTON4, OnButton4)O N_BN_CLICKED(IDC_BUTTON5, OnButton5)O N_BN_CLICKED(IDC_BUTTON6, OnButton6)O N_BN_CLICKED(IDC_BUTTON7, OnButton7)O N_BN_CLICKED(IDC_BUTTON8, OnButton8)O N_BN_CLICKED(IDC_BUTTON9, OnButton9)O N_BN_CLICKED(IDC_BUTTON00, OnButton00)O N_BN_CLICKED(IDC_DOT, OnDot)O N_BN_CLICKED(IDC_BUTTON_, OnButton)O N_BN_CLICKED(IDC_ADD, OnAdd)O N_BN_CLICKED(IDC_MINUS, OnMinus)O N_BN_CLICKED(IDC_MUL, OnMul)O N_BN_CLICKED(IDC_DIV, OnDiv)O N_BN_CLICKED(IDC_COUNT, OnCount)//}}AFX_MSG_MAPEND_MESSAGE_MAP()void CTest10_2Dlg::OnButton0(){// TODO: Add your control notification handler code here P ress(0);}void CTest10_2Dlg::OnButton1(){// TODO: Add your control notification handler code here P ress(1);}void CTest10_2Dlg::OnButton2(){// TODO: Add your control notification handler code here P ress(2);}void CTest10_2Dlg::OnButton3(){// TODO: Add your control notification handler code here}void CTest10_2Dlg::OnButton4(){// TODO: Add your control notification handler code here P ress(4);}void CTest10_2Dlg::OnButton5(){// TODO: Add your control notification handler code here P ress(5);}void CTest10_2Dlg::OnButton6(){// TODO: Add your control notification handler code here P ress(6);}void CTest10_2Dlg::OnButton7(){// TODO: Add your control notification handler code here P ress(7);}void CTest10_2Dlg::OnButton8(){// TODO: Add your control notification handler code here P ress(8);}void CTest10_2Dlg::OnButton9(){// TODO: Add your control notification handler code here P ress(9);}void CTest10_2Dlg::OnButton00(){// TODO: Add your control notification handler code here // Flag00 = TRUE;P ress(0);}void CTest10_2Dlg::OnDot(){// TODO: Add your control notification handler code here D otFlag = TRUE;}void CTest10_2Dlg::OnButton(){// TODO: Add your control notification handler code here // operate = 'n';m_result = "-";U pdateData(FALSE);_Flag = TRUE;}void CTest10_2Dlg::OnAdd(){// TODO: Add your control notification handler code here o perate = '+';D otFlag = FALSE;_Flag = FALSE;}void CTest10_2Dlg::OnMinus(){// TODO: Add your control notification handler code here o perate = '-';D otFlag = FALSE;_Flag = FALSE;}void CTest10_2Dlg::OnMul(){// TODO: Add your control notification handler code here o perate = '*';D otFlag = FALSE;_Flag = FALSE;}void CTest10_2Dlg::OnDiv(){// TODO: Add your control notification handler code here o perate = '/';D otFlag = FALSE;_Flag = FALSE;}void CTest10_2Dlg::OnCount(){// TODO: Add your control notification handler code here s witch(operate){c ase '+':num1 += num2;break;c ase '-':num1 -= num2;break;c ase '*':num1 *= num2;break;c ase '/':if(num2 == 0){MessageBox("除数不可以是0!");return;}num1 /= num2;break;c ase 'n':num1 = 0 - num2;break;c ase 'N':break;}m_result.Format("%g",num1);U pdateData(FALSE);D otFlag = FALSE;_Flag = FALSE;n um1 = 0;n um2 = 0;e = 0;o perate = 'N';}void CTest10_2Dlg::Press(int n){i f(DotFlag){if(operate == 'N'){if(n){if(_Flag){num1 -= n*pow(0.1,e);}else{num1 += n*pow(0.1,e);}m_result.Format("%g",num1);}else{UpdateData(TRUE);m_result += '0';}}else{if(_Flag){num2 -= n*pow(0.1,e);}num2 += n*pow(0.1,e);m_result.Format("%g",num2);}}else{if(operate == 'N'){num1 *= 10;if(_Flag){num1 -= n;}else{num1 += n;}m_result.Format("%g",num1);}else{num2 *= 10;if(_Flag){num2 -= n;}else{num2 += n;}m_result.Format("%g",num2);}}++e;UpdateData(FALSE);}结果:整数加法:123+33小数加法:23.65+19.8 365.389*23 129.65/15负数-78+23四、实验总结计算器可以完成简单的整数、小数、正负数的加减乘除运算,不过结果不够精确,使用的数据类型是double型,格式转换时使用的“%g”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图3 其它控件设置
主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。
4
系统主调模块
图5 程序流程图
各模块详细设
ID
CAPTION
Message Handler
IDD_CALC_DIALOG
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
简易计算器
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
例如:输入数字1 时,在计算器图形上的1键变为红色。
4. 屏幕、图形颜色、形状自定
3
总体框架
图1 系统框架
系统功能说明
在VC++中绘制计算器界面,各控件的设置
对0~9控件设定相应的ID和其他属性:
图2“1”控件设置
对“+、-、*、\”控件设定相应的ID和其他属性:
图2“+”控件设置
对其它控件设定相应的ID和其他属性:
计算机与信息工程学院
《程序设计基础》课程设计报告
题目名称:60.编写一个能实现简单功能的计算器
学生姓名:刘沛东
学生学号:54
专业班级:电子信息工程(1)班
指导教师:高攀
1
编写一个能实现Βιβλιοθήκη 单功能的计算器21. 有一个计算器图形。
2. 能实现加、减、乘、除及乘方的运算。
3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色
相关文档
最新文档