进制转换计算器

  • 格式:doc
  • 大小:173.00 KB
  • 文档页数:11

一.功能概述本应用是讲从数字键盘输入的某进制的数据按要求转换成其他进制的数据,以实现进制转换。

本例程是基于对话框的工程,用一个对话框作为应用程序的主窗口,同时实例通过各种控件实现进制转换功能。

其中,控件主要包括以下类型:编辑框,命令按钮、静态文本、群组框、单选按钮、复选框。

其中主要控件功能为:·“输入数据”和“转换数据”编辑框,分别用于显示输入的数矩和转换的结果。

·“转换为八进制”、“转换为十六进制”、“转换为十进制”三个命令按钮。

用于将输入的数据转换为其他的进制。

“重新开始”按钮用于将输入的数据和转换的数据清空。

·“八进制”、“十进制”、“十六进制”单选按钮对应输入数据的进制。

同时为防止输入某进制下无效的按钮,对进制无效的按钮施予静止。

本实例中默认输入为十进制。

·0-9按钮和A-F按钮做为数字键盘·“输入数据加进制符号”和“转换数据加进制符号”·“数据格式显示选择”群组框中两个复选框作为一组。

..应用程序实例界面二.实现步骤步骤一选择file | new 命令,打开new对话框,选择project选项卡,设置工程名为Calculator,然后单击OK按钮。

如下图所示:..步骤二打开下图所示对话框,选择基本对话框,其余设置均采用默认操作,单击“完成”按钮完成整个工程的创建,如下图:..步骤三在应用程序的主窗口的对话框资源中添加控件,并为对话框中的各个控件添加成员变量和消息响应函数。

控件标题控件类型ID号风格输入数据静态文本IDC_STATIC 默认转换数据静态文本IDC_STATIC 默认输入数据编辑控件IDC_EDIT_INPUT 默认转换数据编辑控件IDC_EDIT_OUTPUT 默认0 按钮IDC_BUTTON_0 默认1 按钮IDC_BUTTON_1 默认2 按钮IDC_BUTTON_2 默认3 按钮IDC_BUTTON_3 默认4 按钮IDC_BUTTON_4 默认5 按钮IDC_BUTTON_5 默认..添加成员变量和消息响应函数..步骤四通过上述步骤完成各个控件的添加和控制,下面将对对话框进和控件进行编程,以实现目标功能①数字键按钮初始状态的设定。

由于默认的进制为十进制,所以0~9折十个数字的默认状态是enable。

因为系统的所有命令按钮的默认状态是enable,所以需要在初始化的时候将A~F的状态设置为disable。

选择class view 选项卡,双击CCalculatorDig下面的OnInitDialog()并在return钱添加如下代码:m_button_A.EnableWindow(FALSE);m_button_B.EnableWindow(FALSE);..m_button_C.EnableWindow(FALSE);m_button_D.EnableWindow(FALSE);m_button_E.EnableWindow(FALSE);m_button_F.EnableWindow(FALSE);②在程序运行过程中,数字键按钮的状态需要根据对三个单选按钮的选择而定。

它们的事件函数代码分别如下:void CCalculatorDig::OnRADIOo(){char_radio='O';value=0;m_button_8.EnableWindow(FALSE);m_button_9.EnableWindow(FALSE);m_button_A.EnableWindow(FALSE);m_button_B.EnableWindow(FALSE);m_button_C.EnableWindow(FALSE);m_button_D.EnableWindow(FALSE);m_button_E.EnableWindow(FALSE);m_button_F.EnableWindow(FALSE);}void CCalculatorDig::OnRADIOd(){char_radio='D';value=0;m_button_8.EnableWindow(TRUE);m_button_9.EnableWindow(TRUE);m_button_A.EnableWindow(FALSE);m_button_B.EnableWindow(FALSE);m_button_C.EnableWindow(FALSE);m_button_D.EnableWindow(FALSE);m_button_E.EnableWindow(FALSE);m_button_F.EnableWindow(FALSE);}void CCalculatorDig::OnRADIOh(){char_radio='H';..value=0;m_button_8.EnableWindow(TRUE);m_button_9.EnableWindow(TRUE);m_button_A.EnableWindow(TRUE);m_button_B.EnableWindow(TRUE);m_button_C.EnableWindow(TRUE);m_button_D.EnableWindow(TRUE);m_button_E.EnableWindow(TRUE);m_button_F.EnableWindow(TRUE);}③给数字按钮添加代码,0~7相似以0为例代码如下:void CCalculatorDig::OnButton0(){// TODO: Add your control notification handler code hereint i_chekinput=m_CHECK_INPUT;//.GetState();//获取“数据输入”复选框的状态,1:表示选中switch(char_radio){case 'D':value=value*10+0;str.Format("%d",value);//将输入数据转化为字符串if(i_chekinput==1)//str=str+"d";break;case 'O':value=value*8+0;str.Format("%o",value);//将输入数据转化为字符串if(i_chekinput==1)//str=str+"o";break;case 'H':value=value*16+0;str.Format("%x",value);//将输入数据转化为字符串if(i_chekinput==1)//str=str+"H";break;}m_inputedit=str;UpdateData(FALSE);..}④8,9不考虑八进制输入一8为例代码如下:void CCalculatorDig::OnButton8(){int i_chekinput=m_CHECK_INPUT;//.GetState();//获取“数据输入”复选框的状态,1:表示选中switch(char_radio){case 'D':value=value*10+8;str.Format("%d",value);//将输入数据转化为字符串if(i_chekinput==0)//str=str+"D";break;case 'H':value=value*16+8;str.Format("%x",value);//将输入数据转化为字符串if(i_chekinput==0)//str=str+"H";break;}m_inputedit=str;UpdateData(FALSE);// TODO: Add your control notification handler code here}⑤A~F以A为例代码如下:void CCalculatorDig::OnButtonA(){int i_chekinput=m_CHECK_INPUT;//.GetState();//获取“数据输入”复选框的状态,1:表示选中value=value*16+0x0A;str.Format("%x",value);//将输入数据转化为字符串if(i_chekinput==0)//str=str+"H";// TODO: Add your control notification handler code here}⑥三个转换按钮事件的编写代码如下:void CCalculatorDig::OnBUTTONtod(){// TODO: Add your control notification handler code here..int i_checkoutput=m_CHECK_OUTPUT;//.GetState();str.Format("%d",value);if(i_checkoutput==1)str=str+"D";m_outpuedit=str;UpdateData(FALSE);//}void CCalculatorDig::OnBUTTONtoh(){int i_checkoutput=m_CHECK_OUTPUT;//.GetState();str.Format("%0x",value);if(i_checkoutput==0)str=str+"h";m_outpuedit=str;UpdateData(FALSE);// TODO: Add your control notification handler code here }void CCalculatorDig::OnBUTTONtoo(){int i_checkoutput=m_CHECK_OUTPUT;//.GetState();str.Format("%o",value);if(i_checkoutput==0)str=str+"o";m_outpuedit=str;UpdateData(FALSE);// TODO: Add your control notification handler code here}上述代码中str为全局变量,把输入的数据转换为CString类型的字符串以供显示。