欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    第11讲进制转换计算器.ppt

    • 资源ID:2908075       资源大小:314.02KB        全文页数:31页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第11讲进制转换计算器.ppt

    1,第11讲 进制转换计算器,2,3,本讲主要内容,1. 单选按钮控件 2. 复选框控件,4,1. 单选按钮控件,单选按钮时一个圆圈和文本标签组合,当它被选中时,圆圈中就标上一个黑点。单选按钮通常是分组使用,同一组的单选按钮具有互斥性,即某一单选按钮被选中会清除同组内其他单选按钮的选中状态。 通过将某一单选按钮Properties中General选项卡中勾选Group标识某一组开始,直到下一个Group标识出现,其顺序是Tab键顺序(单击菜单Layout|Tab Order命令)。,5,1. 单选按钮控件,操作步骤: (1)打开Integer Calculator工程,添加2个单选按钮,如下图所示,其ID值分别为IDC_RADIODEC和IDC_RADIOOCT。,6,2. 单选按钮控件,(2)选中IDC_RADIODEC控件Properties中General选项卡中Group选项。 (3)打开ClassWizard的Member Variables选项卡,为IDC_RADIODEC添加关联变量m_nHex,如下图所示,并在CIntegerCalculatorDlg类的构造函数中将其初始值改为0,表示10进制为默认选项。 。,7,1. 单选按钮控件,8,1. 单选按钮控件,(4)为打开ClassWizard的Message Maps选项卡,为IDC_RADIODEC和IDC_RADIOOCT添加BN_CLICKED消息,生成OnRadiodec()和OnRadiooct()函数,并添加如下代码 :,9,1. 单选按钮控件,void CIntegerCalculatorDlg:OnRadiodec() CButton *p8 = (CButton*)GetDlgItem(IDC_B8); /通过ID得到按钮控件对象的指针 p8-EnableWindow(TRUE); /使按钮可用 CButton *p9 = (CButton*)GetDlgItem(IDC_B9); p9-EnableWindow(TRUE); transform(); /进制转换 ,其中GetDlgItem()函数的功能是根据控件ID获取对话框中控件的句柄,其函数声明为: CWnd* GetDlgItem(int nID) const; 其中nID为控件的ID值。,而EnableWindow()函数是CWnd类的成员函数,功能是使窗口允许或禁止,其函数声明为: BOOL EnableWindow( BOOL bEnable = TRUE ); 其中bEnable为TRUE,则窗口被允许,为FALSE,则窗口将被禁止。,10,void CDialog10Dlg:OnRadiooct() / TODO: Add your control notification handler code here CButton *p8 = (CButton*)GetDlgItem(IDC_B8); /通过ID得到按钮控件对象的指针 p8-EnableWindow(FALSE); /使按钮不可用 CButton *p9 = (CButton*)GetDlgItem(IDC_B9); p9-EnableWindow(FALSE); transform(); /进制转换 ,11,1. 单选按钮控件,(5)编写transform()函数,在IntegerCalculatorDlg.h文件中添加函数声明void transform();,在IntegerCalculatorDlg.cpp文件中添加如下代码。 void CIntegerCalculatorDlg:transform() UpdateData(TRUE); /获得数据 if(m_nHex = 0) /10进制单选按钮被选中 m_nValue = octToDec(m_nValue); /将8进制转换为10进制 else /8进制单选按钮被选中 char s830; itoa(m_nValue,s8,8); /将10进制转换为8进制 m_nValue = atoi(s8); UpdateData(FALSE); /更新界面,显示转换后结果 ,octToDec()函数为自定义函数,功能是将8进制数值转换为10进制数值,同样10进制转换为8进制,我们也可以参照上面的思路编写一个转换函数,也可以采用现有的库函数进行转换。,itoa()函数的功能是将整数转换为字符串,其原型为: char *itoa(int value,char *string,int radix); 其中参数含义为: value:待转换整数。string:转换后字符串指针 radix:转换基数,可以是2进制、8进制、10进制和16进制。,atoi()函数的功能是将字符串转换为整数,转换过称谓跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('/0')才结束转换,并将结果返回。其函数原型为: int atoi(const char *nptr); 其中参数含义为: nptr:待转换字符串。,12,1. 单选按钮控件,其中octToDec()函数为自定义函数,功能是将10进制数值转换为8进制数值,函数代码如下: int CIntegerCalculatorDlg:octToDec(int value) int result=0; /结果变量 int num = 0; /次幂变量 while (value != 0) int low = value%10; /取个位数 int mul = 1; for(int i=0;inum;i+) /该位数为8的num次幂 mul *= 8; result = result + low*mul; /累加结果 num+; value = value/10; /去掉个位数 return result; /返回计算结果 ,13,1. 单选按钮控件,(6)修改计算过程,在OnBequal()函数做如下修改: void CIntegerCalculatorDlg:OnBequal() m_nOperand2 = m_nValue; if(m_nHex = 1) /如果是8进制 m_nOperand1 = octToDec(m_nOperand1); /将运算数转换为10进制 m_nOperand2 = octToDec(m_nOperand2); switch(m_nOperator) if(m_nHex = 1) /如果是8进制 char s830; itoa(m_nValue,s8,8); /将计算结果以8进制显示 m_nValue = atoi(s8); ,14,2. 复选框按钮,为了实现进制功能的开启与关闭,我们采用复选框控件作为切换控件。 标准的复选框在文本标签旁边有一个方框,当该选项被选中时,方框内出现一个“”号,当该项未被选中时,方框内空白。,15,2. 复选框按钮,添加复选框的操作步骤: (1)打开Integer Calculator工程,添加复选框控件IDC_CHECKHEX。,16,2. 复选框按钮,(2)打开ClassWizard的Message Maps选项卡,为IDC_ CHECKHEX添加BN_CLICKED消息,生成OnCheckhex ()函数。,17,2. 复选框按钮,(3)在OnCheckhex ()函数中添加如下代码 : void CIntegerCalculatorDlg:OnCheckhex() CButton *pHex = (CButton*)GetDlgItem(IDC_CHECKHEX); /如果复选框选中 if(BST_CHECKED=pHex-GetCheck() CButton *pDec = (CButton*)GetDlgItem(IDC_RADIODEC); pDec-EnableWindow(TRUE); CButton *pOct = (CButton*)GetDlgItem(IDC_RADIOOCT); pOct-EnableWindow(TRUE); ,GetCheck()函数的功能是获得复选框的选中状态,其函数声明为: int GetCheck() const; 其返回值为 0:按钮处于未选中状态。 1:按钮处于选中状态。 2:按钮状态不定(仅当按钮风格为BS_3STATE或BS_AUTO3STATE时)如果按钮是其它风格,则返回0。 为了代码清晰,系统为其做了宏定义: #define BST_UNCHECKED 0x0000 #define BST_CHECKED 0x0001 #define BST_INDETERMINATE 0x0002,18,2. 复选框按钮,(3)在OnCheckhex ()函数中添加如下代码 : else CButton *pDec = (CButton*)GetDlgItem(IDC_RADIODEC); pDec-EnableWindow(FALSE); CButton *pOct = (CButton*)GetDlgItem(IDC_RADIOOCT); pOct-EnableWindow(FALSE); ,19,2. 复选框按钮,(4)为了使对话框在初始运行时保持正常状态,需在OnInitDialog()函数中添加如下代码: BOOL CIntegerCalculatorDlg:OnInitDialog() SetIcon(m_hIcon, FALSE); / Set small icon CButton *pDec = (CButton*)GetDlgItem(IDC_RADIODEC); pDec-EnableWindow(FALSE); CButton *pOct = (CButton*)GetDlgItem(IDC_RADIOOCT); pOct-EnableWindow(FALSE); ,20,2. 复选框按钮,(5)编译、链接、运行。,21,3. 补充案例,【例7-9】 世界杯知识小测验 该问卷调查包括3道题目,两道单选题,一道多选题,单选题选项采用单选按钮控件实现,多选题选项采用复选框控件实现。,22,3. 补充案例,实现步骤: (1)创建基于对话框的Survey工程。 (2)删除对话框中原有的“确定”、“取消”按钮和静态文本控件,然后添加4个单选按钮控件、3个复选框控件、4个静态文本控件和1个按钮,并修改Caption。,23,3. 补充案例,(3)修改控件ID,单选按钮控件ID依次为IDC_EURO、IDC_AFRI、IDC_SPAIN、IDC_HOLLAND,复选框控件ID依次为IDC_ITALY、IDC_FRANCE、IDC_BRAZIL,按钮控件ID为IDC_SUBMIT。,24,3. 补充案例,(4)修改控件的Tab Order,单击菜单Layout|Tab Order命令,通过鼠标点击修改为下图所示顺序。,25,3. 补充案例,(5)将控件IDC_EURO和IDC_SPAIN的General选项卡中Group选项选中。 (6)修改对话框Caption为“世界杯知识小测验”。 (7)为控件添加关联变量,如下图所示。,26,3. 补充案例,27,3. 补充案例,(8)为按钮控件IDC_SUBMIT添加消息响应函数,单击菜单View|ClassWizard命令,在Message Maps选项卡中为IDC_SUBMIT按钮添加BN_CLICKED消息响应函数OnSubmit()。,28,3. 补充案例,(9)在函数OnSubmit()中添加代码如下: void CSurveyDlg:OnSubmit() UpdateData(TRUE); /获得用户操作 if(m_nHost = -1 | m_nChampion = -1) /检查题目是否做完 AfxMessageBox(“题目未完成,请填写完整!“); return; int nCount = 0; /答对题目数量,29,3. 补充案例,if(m_nHost = 1) /第一题答案为非洲 nCount+; if(m_nChampion = 0) /第二题答案为西班牙 nCount+; /第三题答案为意大利和法国 if(m_bItaly = TRUE ,30,3. 补充案例,(10)编译、链接、运行。,31,作业,作业: 1)习题7-06,7-09;,

    注意事项

    本文(第11讲进制转换计算器.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开