- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象程序设计
----简单计算器的设计
一、问题描述
简单计算器的基本功能如下:
四则运算,例如加减乘除等;
除了整数的运算也可实现小数的各类运算;
判断非法操作,例如判定1/0为非法操作;
其他特性;
这个简易计算器只实现以上所述功能,即实现简单计算。
二、设计思路
计算器起始运行在归零状态,此时只接受数字输入,当按下一个数字按钮时,计算器只显示用户输入第一个操作数,用户在该状态下可以继续输入数字。
1.当第一个数字输入完成后,可以接受第二个操作数。
2.在数字输入结束进行运算后,按下=按钮可以根据前面按下的操作符计算结果显示,表示计算完成。
3.在上述计算过程中都可以接受双击等号回到清零状态。
三、功能函数设计:
1.数字按钮
这个是通过最基本的OnButton()将0~9十个数字按钮的单击消息处理函数用类向导全部关联到此,适文本框应该只是显示当前单击的数字;
2.小数点按钮函数OnDecimal
这个函数主要是实现小数点在计算器的相关功能
3.列表在算法的函数OnSelchangeOperatorList()
这一类按钮包括“+”“-”“*”“/”,它们的单击消息在同一个处理函数中进行处理,以同样的方法把这四个按钮的单击操作关联到此函数中,使四则运算法则在列表中通过选择去实现。
4.“=”符号函数OnEnquall()
实现计算器中等号的功能,双击时也可使编辑框的数字归零。
四、编码实现:
int calculator_type_i;
double count=10,value=0;
double Input_data_int=0,Input_data_dec=0;
double Inputdata1=0,Inputdata2=0;
char datatostr_buffer[10];
bool decimal=FALSE;
以上代码是添加的全局变量,为正确获取键盘输入供所有按钮函数使用。
// TODO: Add extra initialization here
m_OperatorBox.AddString(-);
m_OperatorBox.AddString(*);
m_OperatorBox.AddString(/);
m_OperatorBox.AddString(+);
以上代码是初始化列表框,并使其在程序运行时具有“加”“减”“乘”“除”可选择功能。
void CMyCalculatorDlg::On1Button()
{
if(decimal)
{
Input_data_dec=Input_data_dec+1/count;
count=10*count;
}
else Input_data_int=10*Input_data_int+1;
value=Input_data_int+Input_data_dec;
_gcvt(value,10,datatostr_buffer);
m_ShowResultEdit=(LPCTSTR)datatostr_buffer;
// TODO: Add your control notification handler code here
UpdateData(false);
}
void CMyCalculatorDlg::On2Button()
{
if(decimal)
{
Input_data_dec=Input_data_dec+2/count;
count=10*count;
}
else Input_data_int=10*Input_data_int+2;
value=Input_data_int+Input_data_dec;
_gcvt(value,10,datatostr_buffer);
m_ShowResultEdit=(LPCTSTR)datatostr_buffer; // TODO: Add your control notification handler code here
UpdateData(false);
}
void CMyCalculatorDlg::On3Button()
{if(decimal)
{
Input_data_dec=Input_data_dec+3/count;
count=10*count;
}
else Input_data_int=10*Input_data_int+3;
value=Input_data_int+Input_data_dec;
_gcvt(value,10,datatostr_buffer);
m_ShowResultEdit=(LPCTSTR
您可能关注的文档
- 2ASK信号的仿真设计.doc
- 2×300MW发电厂电气部分初步设计.doc
- 2万立方米天给水处理厂设计.doc
- 2国内外典型路面设计方法.ppt
- 2桂林市城市商业网点规划修编说明081216.doc
- 2版随机实验设计指导方案.doc
- 2环境工程设计的前期工作2.ppt
- 3000立方米LPG球罐设计说明方案.doc
- 300MW机组八级热力系统和燃烧系统设计淮南烟煤说明方案.doc
- 30m3立式储油罐结构设计.doc
- 人教版九年级英语全一册单元速记•巧练Unit13【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit9【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit11【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit14【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit8【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit4【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit13【单元测试·基础卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit7【速记清单】(原卷版+解析).docx
- 苏教版五年级上册数学分层作业设计 2.2 三角形的面积(附答案).docx
- 人教版九年级英语全一册单元速记•巧练Unit12【单元测试·基础卷】(原卷版+解析).docx
文档评论(0)