简单计算器c++课程设计讲解 下载本文

9

图9 MFC ClassWizard对话框中的Member Variables选项卡

图10 m_str属性设置

2)给“0”按钮连接代码。在“0”按钮上单击鼠标右键,选择建立类向导菜单项,在弹出的对话框中选择Messages Maps选项卡,然后在Object IDs列表框中选择IDC_0_BUTTON1,在Messages列表框中选择BN_CLICKED项,即选择单击按钮事件,如图11所示。

1 9

10

图11 “0”按钮连接代码对话框

3 菜单的设计

选择插入/资源命令,将显示插入资源对话框,如图12所示。选择Menu,单击新建即可。

图12 插入资源对话框

10 1

11

Resoure View选项卡中打开Menu资源组,双击IDR_MENU1,然后给菜单添加相应的标题,并把每个菜单对应的ID值与相应的按钮的一致。如图13所示。

图13 菜单属性对话框

在对话框的任何一个空白域单击鼠标右键,然后在弹出的快捷菜单中选择属性命令,弹出对话属性对话框,如图14所示。在对话框中的菜单组合框中选择IDR_MENU1。

图14 对话属性对话框

最终得到的界面如图15所示。

图15 计算器完整界面

11 1

12

3.3 关键功能的实现

1)操作数、小数点以及双目运算符的输入

编辑框所关联的变量为m_str,程序开始时为零。每按下一个数字键按钮、双

目运算符按钮或小数点按钮,就把它累加到m_str里并刷新显示。BOOL型变量pass1判断之前是否有操作符输入,有,则pass为1;无,则为0。BOOL型变量pass2判断是否有小数点,有,则为0;无,则为1;BOOL型变量pass3判断之前是否有数字输入,有,则为0;无,则为1。

2)单目运算符功能的实现

由于所输入的操作数类型为String类,所以需要将其转化为数字才能进行

运算。首先,将比率rate赋值为10,将每一位输入的字符与’0’字符做差,得到他们ASCII值的差,在遇到小数点之前,将这些差值通过循环求和以及乘以rate值得到字符串所表达的数值的整数部分,然后,当遇到小数点时,将rate赋值为0.1,再通过类似的计算方法得到字符串所表达的数值的小数部分,最后,将所得数值的整数部分和小数部分合在一起赋值给变量a,再通过单目运算符作用于a上即可实现相应功能。

3)双目运算符功能的实现

由于所输入的操作数类型为String类,所以要通过与单目运算符中类似的方法将其转换为数值,再进行相关运算。对于双目运算符功能中操作数和操作符的区分,可以将它们分别存储在数组a[]中和数组b[]中加以区分,再进行计算。

4)退格键功能的实现

如果m_str中有字符串,则每次按下退位键都将去掉最右边一个字符剩下的字符串重新赋值给m_str,从而实现退位功能。如果,m_str中本来就没有字符串,则将字符’0’赋值给m_str。

5)正负号功能的实现

由于所输入的操作数类型为String类,所以要通过与单目运算符中类似的

方法将其转换为数值,再进行相关运算。对于正负号功能,只要在原来数值的前面加一个负号,即可实现相应功能。

12 1