VC6_C++计算器与进制转换工具设计步骤加代码
C#编写简易计算器(附源代码)超详细

超详细一、因为计算器设计的控件太多,不便使用控制台应用程序完成,所以这里使用Windows窗体应用程序,并命名为Calc,如下图所示:二、向窗体中拖入需要的控件,如下图所示:(完成效果图)结果显示区(作者博客左边的文本框)是TextBox控件,并修改其name为txtShow ,按键0~9为Button控件,并将其name分别修改为btn_0、btn_1、btn_2、btn_3、btn_4、btn_5、btn_6、btn_7、btn_8、btn_9;按键【负数】的name值修改为btn_sign,按键【.】的name 修改为btn_dot,按键【+ - * /】的name值分别修改为btn_add、btn_sub、btn_mul、btn_div,按键【=】的name值修改为btn_equ,按键【倒数】的name值修改为btn_rev,按键【平方】的name值修改为btn_sqr,按键【开方】的name值修改为btn_sqrt。
右边的计算器图片空间是PictureBox,作者博客控件是LinkLabel,可以不添加,以上所有控件均可按照需求添加,只保留自己需要的按钮控件和textbox控件即可。
三、代码部分(含解释),采用switch多分支语句编写using System;using System.Drawing;using System.Collections;using ponentModel;using System.Windows.Forms;using System.Data;namespace Calc{///<summary>/// QQ:479340056 温柔一刀C#简易计算器的实现///</summary>public class CalcForm : System.Windows.Forms.Form{private System.Windows.Forms.Button btn_0;private System.Windows.Forms.Button btn_1;private System.Windows.Forms.Button btn_2;private System.Windows.Forms.Button btn_3;private System.Windows.Forms.Button btn_4;private System.Windows.Forms.Button btn_5;private System.Windows.Forms.Button btn_6;private System.Windows.Forms.Button btn_7;private System.Windows.Forms.Button btn_8;private System.Windows.Forms.Button btn_9;private System.Windows.Forms.Button btn_add;private System.Windows.Forms.Button btn_sub;private System.Windows.Forms.Button btn_mul;private System.Windows.Forms.Button btn_div;private System.Windows.Forms.Button btn_sqrt;private System.Windows.Forms.Button btn_sign;private System.Windows.Forms.Button btn_equ;private System.Windows.Forms.Button btn_dot;private System.Windows.Forms.Button btn_rev;private System.Windows.Forms.TextBox txtShow;private System.Windows.Forms.Button btn_sqr;private PictureBox pictureBox1;private LinkLabel linkLabel1;///<summary>///必需的设计器变量。
简易计算器C语言代码

简易四则运算计算器计算机工具地历史而言,中国古代最早采用地一种计算工具叫筹策,又叫做算筹,这种算筹多用竹子制成,也有用木头,兽骨充当材料的,大约270枚一束,放在布袋里可随身携带。
直到今天仍在使用的住算盘,是中国古代计算工具领域中的另一项发明明代时的住算盘已经与现代的住算盘几乎相同。
17世纪初,西方国家的计算工具有了较大的发展。
英国数学家纳尔发现了“纳皮尔算筹”;英国牧师奥却德发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘涂,乘方和开方运算,甚至可以计算三角函数,指数函数和对数函数。
这些计算工具不仅带动了计算的发展,也为现代计算器发展尊定了良好的基础,成为现代社会应用广泛的计算工具,如手机,操作系统上附带的多功能计算器。
项目设计目的掌握模块的划分;掌握结构体定义;掌握栈的操作;掌握函数的定义;掌握栈的基本操作;掌握VC的基本绘图库;掌握鼠标的响应操作;目设计内容设计一个含有界面的计算器,输入一个包含括号的表达式,使用栈数据类型实现整数的四则运算操作,开方运算。
项目设计要求根据分析,系统要求实现以下几点基本功能:可通过按钮输入数字、运算符;能通过按钮实现退格、清除功能;实现加、减、乘、除、开方运算功能;实现括号运算;显示运算结果;良好的交互界面。
项目详细设计功能模块图根据系统功能要求,主要含有四大模块,分别是计算器界面设计模块、计算器按键控制模块、四则混合运算模块、计算器记忆处理模块。
计算器界面设计模块:调用VC图形系统函数和字符函数画出计算器的界面,包括24个按钮和一个文本输入框。
计算机按键控制模块:计算器通过键盘按键值的判断,执行相应的操作,如接收数字输入等。
计算器计算处理模块。
计算处理模块主要完成可以包括括号的表达式运算,运算包括加,减,乘,除、开方。
计算处理模块在按键控制模块中被调用执行。
处理模块是通过栈来实现的,分别定义了两个顺序栈,一个用来存放操作符栈,一个用来存放操作数栈。
计算器记忆处理模块。
数据结构—进制转换完整C语言代码

#define TRUE 1
#define FALSE 0
#define OK 0
#define ERROR -1
typedef struct SNode{
int data;
struct SNode *next;
}SNode;
typedef struct{
int length;
SNode *top;
S->top=p;S->length++;
return OK;
}
int Pop(STACK *S,int *e){
SNode *p;
if(S->top==NULL) return ERROR;
p=S->top;*e=p->data;
S->top=p->next;S->length--;
return OK;
else printf("%d",*e);
}
}
/*本程序使用栈的顺序表示法,本人自己编写并已在turbo c中调试,100%可正确运行,若移植到VC6.0环境中,只需修改部分即可*/
/*THE END*/
/*以下为链栈实现方式*/
#include <stdio.h>
#include <stdlib.h>
{
Push(&S,m%n);
m=m/n;
}
printf("the arranged NO. is:");
while(!Empty(S))
{
Pop(&S,e);
if(*e>9) printf("%c",*e+'A'-10);
c语言制作简单的计算器

c语言制作简单的计算器在计算机编程领域中,C语言是一种广泛使用的编程语言之一。
它具有简单易学的特点,并且能够进行复杂的计算和逻辑处理。
今天,我们就来学习一下如何使用C语言来制作一个简单的计算器。
首先,我们需要明确我们计算器的功能和界面设计。
本次制作的计算器将具有基本的四则运算功能,即加法、减法、乘法和除法。
我们将在控制台中实现计算器的操作,并通过简单的用户界面进行交互。
接下来,我们需要创建一个C语言程序的框架。
首先,我们需要包含头文件,以便在程序中使用各种函数和变量。
我们可以使用"#include" 来引入头文件,例如:```c#include <stdio.h>```然后,我们需要定义主函数 `main()`。
在这个函数中,我们将编写计算器的逻辑代码。
让我们开始编写函数吧!首先,我们需要声明一些变量来存储用户输入的数字和运算符。
我们可以使用 `int` 来定义整数变量,并用 `char` 定义字符变量。
例如:```cint num1, num2, result;char operator;```接下来,我们需要提示用户输入要进行的运算,并读取用户输入的数字和运算符。
我们可以使用 `printf` 和 `scanf` 函数来完成这个任务,例如:```cprintf("请输入第一个数字: ");scanf("%d", &num1);printf("请输入运算符(+, -, *, /): ");scanf(" %c", &operator);printf("请输入第二个数字: ");scanf("%d", &num2);```注意,我们在读取运算符之前添加了空格,这是为了消除输入缓冲区中可能残留的换行符等字符。
接下来,我们需要编写代码来进行实际的计算操作。
进制转换器小程序的程序设计及代码示例

进制转换器小程序的程序设计及代码示例一、介绍进制转换器是一种常见的工具程序,它可以将不同进制的数字相互转换,例如将二进制转换为十进制,十进制转换为八进制等。
本文将会介绍进制转换器小程序的程序设计思路以及代码示例。
二、程序设计思路1. 用户界面设计:进制转换器小程序的用户界面应该简洁明了。
可以通过输入框让用户输入待转换的数字,再通过下拉列表或选项按钮让用户选择待转换的进制类型。
最后,通过一个文本框或文本标签来显示转换结果。
2. 进制转换算法:根据用户选择的进制类型,将输入的数字应用对应的转换算法进行转换。
常见的进制转换算法包括二进制转十进制、十进制转二进制、十进制转八进制、十进制转十六进制等。
3. 错误处理:在用户输入数字时,需要进行有效性检查,确保用户输入的内容符合要求。
若输入不合法,应给出相应的错误提示信息。
三、代码示例下面是一个简单的进制转换器小程序的代码示例,使用Python语言编写:```pythonfrom tkinter import *def convert():input_num = input_entry.get()input_base = base_var.get()try:if input_base == "二进制":output_num = str(int(input_num, 2))elif input_base == "八进制":output_num = str(int(input_num, 8))elif input_base == "十进制":output_num = str(int(input_num, 10))elif input_base == "十六进制":output_num = str(int(input_num, 16))output_label.configure(text="转换结果:" + output_num)except ValueError:output_label.configure(text="输入无效!请检查输入内容。
VC++计算器与进制转换工具设计

VC++计算器与进制转换工具设计长春理工大学电子信息工程学院1004112班33号李鹤男VC++计算器与进制转换工具设计一、总体设计1、功能说明VC++计算器与进制转换工具设计的设计按软件工程的方法进行,系统具有良好的界面;必要的交互信息;简约美观的效果。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
(1)包含的功能有:加、减、乘、除运算,开方、平方,三角函数等功能。
(2)给对话框添加菜单。
(3)计算功能基本上是用系统内部函数。
(4)程序可以能自动判断输入数据的正确性,不出现多于一个小数点、以0开头等不正常现象。
(5)“A C”按钮可以清除所有已输入的数据从头计算。
二、软件设计1、计算器工程创建(1)打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名02exam62及其所在位置点击确定,如图1所示。
图1新建MFC AppWizard工程(2)将弹出MFC AppWizard-step 1对话框,选择基本对话框点击完成,如图2所示。
图2基本对话框(3)这样,MFC AppWizard就建立了一个基于对话窗口的程序框架,如图3所示。
图3基本对话窗口2、计算器开发步骤(1)创建控件在资源视图ResourceView中,选择Dialog中ID为IDD_MY_DIALOG的对话框,删除对话框上已有的控件。
然后利用控件工具箱,按照图4所示在该对话框上添加控件图4Edit属性对话框(2)各个控件的属性设置如表图5Push Button属性(3)计算器界面布局完成之后,双击各个按钮,添加消息响应函数,如按钮1的消息函数添加如图6所示双击按钮1即可图6添加消息函数(4)修改编辑框Edit的ID为:IDC_EDIT_INPUT。
按下“Ctrl+W”弹出ClassWizard对话框,在该对话框属性页MemberVariables上,选择IDC_EDIT_INPUT控件,利用Add Variables 增加两个变量如图7所示图7添加变量(5)在CMyDlg的头文件中定义变量,代码如下public:enum CACU_TYPE {ADD=0,SUB,MUL,DIV,NOTYPE};CACU_TYPE m_curType;bool m_bNextNumber; //判断是否是参与运算的第二个数float m_PreData; //保存参与运算的第一个数(6)在ClassView中,利用鼠标选中“CMyDlg”,按下鼠标右键弹出如图8所示对话框,点击Add Member Function 增加成员函数,函数具体声明如图9所示图8选择增加成员函数图9添加函数(7)为刚增加的SetInfo函数添加函数定义,代码如下void CMyDlg::SetInfo(char c){if(m_bNextNumber)m_editCurData.SetWindowText("");m_bNextNumber = false;CString str;m_editCurData.GetWindowText(str); //得到的是字符串类型if(str=="0") //单独只有一个零时,要先把零去掉str="";str+=c;m_editCurData.SetWindowText(str);}(8)为函数OnButton1()~OnButton9()依次添加代码,如下所示(数字1-9)void CMyDlg::OnButton1(){SetInfo('1');}······void CMyDlg::OnButton9(){SetInfo('9');}(9)为函数OnButton10()添加代码如下void CMyDlg::OnButton10(){if(m_bNextNumber)m_editCurData.SetWindowText("");m_bNextNumber = false;CString str;m_editCurData.GetWindowText(str);if(str!="0") //不是单个零的时候,即前面有数字,则在后面加零;否则是单个零时,就不变化,保持单个零str+='0';m_editCurData.SetWindowText(str);}(10)为函数OnButtonDot添加代码如下(小数点)void CMyDlg::OnButtonDot(){CString str;m_editCurData.GetWindowText(str);if(str.Find('.')==-1) //输入数中,没有找到小数点,可以加入一个小数点,如果有小数点,就不能再加了str+='.';m_editCurData.SetWindowText(str);}(11)为函数OnButtonAc()添加代码如下(清零)void CMyDlg::OnButtonAc(){m_CurData=0;m_PreData=0;m_curType = NOTYPE;UpdateData(FALSE);}(12)为函数OnButtonAdd( )添加代码如下(加)void CMyDlg::OnButtonAdd(){UpdateData(TRUE);//取回控件上的变量m_PreData = m_curData;m_bNextNumber = TRUE;m_curType = ADD;}(13)为函数OnButtonSub( )添加代码如下(减)void CMy02exam62Dlg::OnButtonSub(){// TODO: Add your control notification handler code hereUpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = SUB;}(14)为函数OnButtonMul( )添加代码如下(乘)void CMy02exam62Dlg::OnButtonMul(){// TODO: Add your control notification handler code here UpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = MUL;}(15)为函数OnButtonDiv( )添加代码如下(除)void CMy02exam62Dlg::OnButtonDiv(){// TODO: Add your control notification handler code here UpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = DIV;}(16)为函数OnButtonSin( )添加代码如下(正弦)void CMy02exam62Dlg::OnButtonSin(){// TODO: Add your control notification handler code here UpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = SIN;}(17)为函数OnButtonCos( )添加代码如下(余弦)void CMy02exam62Dlg::OnButtonCos(){// TODO: Add your control notification handler code here UpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = COS;}(18)为函数OnButtonTan( )添加代码如下(正切)void CMy02exam62Dlg::OnButtonXy(){// TODO: Add your control notification handler code here UpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = TAN;}(19)为函数OnButtonKf( )添加代码如下(开方)void CMy02exam62Dlg::OnButtonKf(){// TODO: Add your control notification handler code here UpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = KF;}(20)为函数OnButtonPF( )添加代码如下(平方)void CMy02exam62Dlg::OnButtonPf(){// TODO: Add your control notification handler code here UpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = PF;}(21)为函数OnButtonBack( )添加代码如下(退格)void CMy02exam62Dlg::OnButtonBack(){// TODO: Add your control notification handler code here if(m_bNextNumber)m_editCurData.SetWindowText("");m_bNextNumber = false;CString str;m_editCurData.GetWindowText(str);str = str.Left(str.GetLength() - 1);if(str == "")str ='0';m_editCurData.SetWindowText(str);}(22)为函数OnButtonEqual ( )添加代码如下(等于)void CMy02exam62Dlg::OnButtonQueal(){// TODO: Add your control notification handler code here UpdateData(TRUE);// 取回参与运算的第二个变量switch(m_curType){case ADD:m_CurData = m_PreData + m_CurData;break;case SUB:m_CurData = m_PreData - m_CurData;break;case MUL:m_CurData = m_PreData * m_CurData;break;case DIV:m_CurData = m_PreData / m_CurData;break;case KF:m_CurData = m_CurData * m_CurData;break;case PF:m_CurData = sqrt(m_CurData);break;case SIN:m_CurData = m_CurData * 3.1415926/180;m_CurData = sin(m_CurData);break;case COS:m_CurData = m_CurData * 3.1415926/180;m_CurData = cos(m_CurData);break;case TAN:m_CurData = m_CurData * 3.1415926/180;m_CurData = tan(m_CurData);break;};UpdateData(FALSE);(23)编译运行程序,实现加法,减法、乘法及除法,正弦,余弦,正切,开方,平方,退格,清零功能,完成简易计算器3、进制转换工具设计步骤(1)打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择Win32 Console Application 工程,输入工程名02exam62及其所在位置点击确定,如图10所示图10选择工程(2)将弹出Win32 Console Application 1对话框,选择Hello Word点击完成,如图11所示。
c语言进制的转换

c语言进制的转换C语言进制的转换一、引言在计算机科学领域中,进制是一个非常重要的概念。
而在C语言中,进制的转换是一项常见的操作。
本文将深入探讨C语言中的进制转换,包括二进制、八进制和十六进制之间的转换,并讨论其应用场景和实际用途。
二、二进制转换二进制是计算机中最基本的进制,由0和1两个数字组成。
在C语言中,使用前缀"0b"来表示二进制数。
例如,二进制数"1010"可以用C语言表示为0b1010。
要将二进制数转换为十进制数,只需按权展开法计算即可。
例如,二进制数"1010"转换为十进制数的计算过程为:(1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (0 * 2^0) = 8 + 0 + 2 + 0 = 10三、八进制转换八进制是基于8个数字(0-7)的进制。
在C语言中,使用前缀"0"来表示八进制数。
例如,八进制数"12"可以用C语言表示为012。
要将八进制数转换为十进制数,同样使用权展开法进行计算。
例如,八进制数"12"转换为十进制数的计算过程为:(1 * 8^1) + (2 * 8^0) = 8 + 2 = 10四、十六进制转换十六进制是基于16个数字(0-9, A-F)的进制。
在C语言中,使用前缀"0x"来表示十六进制数。
例如,十六进制数"1A"可以用C语言表示为0x1A。
要将十六进制数转换为十进制数,同样使用权展开法进行计算。
其中,A对应10,B对应11,以此类推。
例如,十六进制数"1A"转换为十进制数的计算过程为:(1 * 16^1) + (10 * 16^0) = 16 + 10 = 26五、进制转换的应用场景进制转换在计算机科学中具有广泛的应用场景。
其中,二进制转换为十进制常见于计算机内部数据的表示和处理过程中。
c语言进制转换算法代码

c语言进制转换算法代码c语言的进制转换是研究计算机原理时非常重要的知识,它能够帮助我们更有效更准确的记录信息和处理计算问题。
下面我们就来介绍c语言中进制转换的基本算法代码:一、进制转换的基本步骤1. 确定源进制和目标进制,比如从十进制转换为八进制、十六进制;2. 将源进制数据转换为相应的目标进制数据,比如8进制转换为10进制;3. 将转换后的目标进制数据输出到屏幕或者其他输出设备中。
二、c语言进制转换算法代码1. 八进制转换为十进制:long octalToDecimal(long n){long dec_value = 0; // 十进制数int i = 0;while(n != 0){dec_value += (n%10) * pow(8,i);n = n/10;i++;}return dec_value;}2. 十进制转换为八进制:long DecimalToOctal(long n) {int i=1;long octal_value=0;while (n!=0){octal_value+=(n%8)*i;n/=8;i*=10;}return octal_value;}3. 八进制转换为十六进制:long octalToHexadecimal(long n) {long dec_value = 0; // 十进制数int base = 1;while (n != 0){long temp = n % 10;dec_value += temp * base;n = n / 10;base = base * 8;}// 将十进制数转换为十六进制long rem;long hex_value = 0; // 十六进制数long i = 1;while (dec_value != 0){rem = dec_value % 16;hex_value = hex_value+ rem*i;dec_value = dec_value / 16;i = i * 10;}return hex_value;}4. 十进制转换为十六进制:long DecToHex(long n){long rem,hex=0, i=1;while(n!=0){rem = n % 16;hex = hex + rem * i;n /= 16;i *= 10;}return hex;}总结:以上就是c语言中进制转换的基本算法代码,深入理解这些程序的运行原理,能够帮助我们更深入了解编程的基本原理,也为我们后续c编程奠定更良好的基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成都信息工程学院面向对象程序设计开发文档题目:计算器和进制转换工具学院:控制工程学院班级:自动化学生姓名:学号:2011指导教师:姚禁止除作者外他人复制上传本文档到百度文库和豆丁网这类网站!!!二〇一二年十二月十三日课程名称:面向对象的程序设计学院:控制工程学院班级:自动化学生姓名:学号: 2011 指导教师:摘要本设计实现了一个简单的计算器,该计算器不仅实现了简单的四则运算功能,还实现了三角函数计算功能,而且具有简洁大方的图文外观。
此设计按照软件工程的方法进行,系统具有良好的界面和必要的交互信息,使操作人员能快捷简单地进行操作,充分降低了数字计算的难度和节约了时间。
编写一个简单的DOS窗口运行的工具,实现将任意的十进制整数转换成R进制数(R在2-16之间)。
本系统开发平台为Windows 7,程序设计语言采用C++,在程序设计中,采用了结构化与面向对象两种解决问题的方法。
关键词:程序设计;计算器;MFC;按钮控件;进制转换目录引言 (1)第一章概述 (2)1.1 可行性分析 (2)1.2 需求分析 (2)第二章总体设计 (2)2.1 功能说明 (2)第三章软件设计 (3)3.1 计算器工程创建 (3)3.2 计算器开发步骤 (5)3.3 进制转换工具设计步骤 (13)结论 (18)引言计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求平方等简单运算的工具。
要实现计算功能,可以用VC++的知识编写程序来解决此问题。
用。
在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。
本课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算。
在日常工作中,有时会需要对数字进行进制的转换,但是笔算往往速度慢,而且有时会计算错误,所以编译一个简单的进制转换工具能使得计算变得简单。
第一章概述在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以一些进行高级的科学计算。
编程实现将任意的十进制整数转换成R进制数(R在2-16之间),使得进制转换避免笔算的失误。
1.1 可行性分析本设计第一是简单计算器,日常计算机使用中,常常涉及到一些有关计算的问题,一个小型的计算器软件变得非常有用,该校型计算器需要空间资源较少,对电脑其他程序的应用影响较小。
它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性;醒目美观的软件封面。
使用人员能快捷简单地进行操作。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
本设计第二是编程实现将任意的十进制整数转换成R进制数(R在2-16之间),使得进制转换避免笔算的失误。
1.2 需求分析本软件主要用于计算机windowsXP以上版本的用户的使用,这次课程设计一般是实现简单计算器的功能。
包含正余弦,平方,开方,三角函数等运算。
可对输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。
包含清除,退格,退出功能以及有与所有按钮相对应的菜单项。
第二章总体设计2.1 功能说明它的设计按软件工程的方法进行,系统具有良好的界面;必要的交互信息;简约美观的效果。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
(1)包含的功能有:加、减、乘、除运算,开方、平方,三角函数等功能。
(2)给对话框添加菜单。
(3)计算功能基本上是用系统内部函数。
(4)程序可以能自动判断输入数据的正确性,不出现多于一个小数点、以0开头等不正常现象。
(5)“A C”按钮可以清除所有已输入的数据从头计算。
第三章软件设计3.1 计算器工程创建(1)打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名02exam62及其所在位置点击确定,如图3-1所示。
图3-1 新建MFC AppWizard工程(2)将弹出MFC AppWizard-step 1对话框,选择基本对话框点击完成,如图3-2所示。
图3-2 基本对话框(3)这样,MFC AppWizard就建立了一个基于对话窗口的程序框架,如图3-3所示。
图3-3 基本对话窗口3.2 计算器开发步骤1、创建控件在资源视图ResourceView中,选择Dialog中ID为IDD_MY_DIALOG的对话框,删除对话框上已有的控件。
然后利用控件工具箱,按照图3-4所示在该对话框上添加控件图3-4 Edit属性对话框(2)图3-5 Push Button属性(3)计算器界面布局完成之后,双击各个按钮,添加消息响应函数,如按钮1的消息函数添加如图3-6所示双击按钮1即可图3-6添加消息函数(4)修改编辑框Edit的ID为:IDC_EDIT_INPUT。
按下“Ctrl+W”弹出ClassWizard对话框,在该对话框属性页MemberVariables上,选择IDC_EDIT_INPUT控件,利用Add Variables 增加两个变量如图3-7所示:图3-7添加变量(5)在CMyDlg的头文件中定义变量,代码如下:public:enum CACU_TYPE {ADD=0,SUB,MUL,DIV,NOTYPE};CACU_TYPE m_curType;bool m_bNextNumber; //判断是否是参与运算的第二个数float m_PreData; //保存参与运算的第一个数(6)在ClassView中,利用鼠标选中“CMyDlg”,按下鼠标右键弹出如图4所示对话框,点击Add Member Function 增加成员函数,函数具体声明如图3-9所示:图3-8选择增加成员函数图3-9添加函数(7)为刚增加的SetInfo函数添加函数定义,代码如下:void CMyDlg::SetInfo(char c){if(m_bNextNumber)m_editCurData.SetWindowText("");m_bNextNumber = false;CString str;m_editCurData.GetWindowText(str); //得到的是字符串类型if(str=="0") //单独只有一个零时,要先把零去掉str="";str+=c;m_editCurData.SetWindowText(str);}(8)、为函数OnButton1()~OnButton9()依次添加代码,如下所示:(数字1-9)void CMyDlg::OnButton1(){SetInfo('1');}······void CMyDlg::OnButton9(){SetInfo('9');}九、为函数OnButton10()添加代码如下:void CMyDlg::OnButton10(){if(m_bNextNumber)m_editCurData.SetWindowText("");m_bNextNumber = false;CString str;m_editCurData.GetWindowText(str);if(str!="0") //不是单个零的时候,即前面有数字,则在后面加零;否则是单个零时,就不变化,保持单个零str+='0';m_editCurData.SetWindowText(str);}十、为函数OnButtonDot添加代码如下:(小数点)void CMyDlg::OnButtonDot(){CString str;m_editCurData.GetWindowText(str);if(str.Find('.')==-1) //输入数中,没有找到小数点,可以加入一个小数点,如果有小数点,就不能再加了。
str+='.';m_editCurData.SetWindowText(str);}十一、为函数OnButtonAc()添加代码如下:(清零)void CMyDlg::OnButtonAc(){m_CurData=0;m_PreData=0;m_curType = NOTYPE;UpdateData(FALSE);}十二、为函数OnButtonAdd( )添加代码如下。
(加)void CMyDlg::OnButtonAdd(){UpdateData(TRUE);//取回控件上的变量m_PreData = m_curData;m_bNextNumber = TRUE;m_curType = ADD;}十三、为函数OnButtonSub( )添加代码如下。
(减)void CMy02exam62Dlg::OnButtonSub(){// TODO: Add your control notification handler code hereUpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = SUB;}十四、为函数OnButtonMul( )添加代码如下。
(乘)void CMy02exam62Dlg::OnButtonMul()// TODO: Add your control notification handler code hereUpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = MUL;}十五、为函数OnButtonDiv( )添加代码如下。
(除)void CMy02exam62Dlg::OnButtonDiv(){// TODO: Add your control notification handler code hereUpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = DIV;}十六、为函数OnButtonSin( )添加代码如下。
(正弦)void CMy02exam62Dlg::OnButtonSin(){// TODO: Add your control notification handler code hereUpdateData(TRUE);//取回控件上的变量m_PreData = m_CurData;m_bNextNumber = TRUE;m_curType = SIN;}十七、为函数OnButtonCos( )添加代码如下。