模拟计算器程序C++
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告课程设计题目:模拟计算器程序
学生姓名:
专业:
班级:
指导教师:
2011年11 月24 日
东华理工大学
课程设计评分表
学生姓名:陈春英班级:10211303 学号:1021130304 课程设计题目:模拟计算器程序
目录
1.设计目标……………………………………………………………
2.设计内容……………………………………………………………
3.设计思想……………………………………………………………
4.设计说明……………………………………………………………
5.设计步骤……………………………………………………………
6.主要成员函数关系图………………………………………………
7.程序主要代码………………………………………………………
8. 难点分析……………………………………………………………
9. 总结…………………………………………………………………
模拟计算器
1.设计目标
了解Windows应用程序的结构与DOS程序的不同,掌握应用MFC类库编写Windows应用程序的基本模式。
2.设计内容
以简易计算器为例,通过对简单应用软件计算器的设计,编制、调试,实现简单的加,减,乘,除等运算,以学习应用MFC库类编写对话框的原理,加深对C++类的学习及应用。
3. 设计思想
基于MFC库类对对话框界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用消息函数完成数据的输入输出,实现计算功能。
生成简单的应用软件。
4.设计说明
(1)包含的功能有:加、减、乘、除运算等功能。
(2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。
(3)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。
(4)计算功能基本上是用系统内部函数。
(5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。
(6)“CE”按钮可以清除所有已输入的数据从头计算
5. 设计步骤
(1)选择FileNewlProject命令,选择MFC AppWizard(exe)创建Project名为Caa,按确定。
在弹出界面选择创建对话框,单击Finish按钮
(3)为控件编辑框编辑ID,如图:
按钮名称ID 用途
0 IDC_0 按键0
1 IDC_1 按键1
2 IDC_2 按键2
3 IDC_3 按键3
4 IDC_4 按键4
5 IDC_5 按键5
6 IDC_6 按键6
7 IDC_7 按键7
8 IDC_8 按键8
9 IDC_9 按键9
. IDC_dian 按键.
+/- IDC_zhengfu 正负
+ IDC_jia 加
- IDC_jian 减
* IDC_cheng 乘
/ IDC_chu 除
CE IDC_qinglin 清零
sqrt IDC_sqrt 开方
x*x IDC_pingfang 平方
= IDC_dengyu 等于编辑框IDC_E1 显示数据输入输出
(4)进入ClassWizard界面选择Message Maps为控件插入消息映射,插入消息函数,实现控件命令功能。
如图:
(5) 进入ClassWizard界面Message Varibles为编辑框添加成员变量m_result 用以显示结果。
如图
6. 主要成员函数关系图
7. 程序主要代码
# include <iostream.h>
class calculator
按钮0—9.函数如:6.主要
处理数字输入 OnOperandInput( )
计算Calculate( )
显示输出UpdateDisplay( )
按 钮 + - * / . = 函数如:Onjia( ). Onjian( ).Oncheng( ) ...
…
按 钮 sqrt x*x 函数: Onsqrt ( ).Onpingfang( )
{
public: //外部接口
friend void see ();
friend void function(char i);
friend void caculate(double a,char op,double b);
private:
char op,i,D; // op定义为某个运算符号
double a,b;
double answer;
};
void function(char i) //定义功能函数
{
char op,D;
double a,b;
if(i=='A')
{
system("cls"); //如果是A,则清屏,调用清屏函数see ();
cout<<"请输入两个数及运算符"<<endl; //实现二次操作的语句
cin>>a>>op>>b;
cout<<"按‘=’号计算结果"<<endl;
cin>>D;
if(D=='=')
{
caculate(a,op,b); // 调用计算函数
}
}
if(i=='C')
{ see ();
cout<<"请输入两个数及运算符"<<endl;
cin>>a>>op>>b;
cout<<"按‘=’号计算结果"<<endl;
cin>>D;
if(D=='=')
{
caculate(a,op,b); // 调用计算函数
}
}
if(i!='A' || i!='C')
{
cout<<"输入有错!请重新输入。
"<<endl;
cout<<"清屏按A!,清除按C"<<endl;
cin>>i;
function(i);
}
}
void caculate(double a,char op,double b) //定义计算函数
{
char i;
double answer;
cout<<"\t\t\t\t\t\t"<<"输出结果:";
switch(op) //用switch语句定义加减乘除{
case'+':answer=a+b;
cout<<a<<'+'<<b<<'='<<answer<<endl;
break;
case'-':answer=a-b;
cout<<a<<'-'<<b<<'='<<answer<<endl;
break;
case'*':answer=a*b;
cout<<a<<'*'<<b<<'='<<answer<<endl;
break;
case'/':
if(b!=0)
{
answer=a/b;
cout<<a<<'/'<<b<<'='<<answer<<endl;
break;
}
else
{
cout<<"error!"<<endl;
break;
}
default:cout<<"error!"<<endl;
}
cout<<"清屏按A!,清除按C"<<endl;
cin>>i;
function(i);
}
void see ()
{
cout<<"\t"<<"---------------------------------------------------------------"<<endl;
cout<<"\t"<<" 欢迎使用计算器"<<endl;
cout<<"\t"<<"---------------------------------------------------------------"<<endl;
cout<<endl;
cout<<endl;
}
cpp
#include<iostream.h>
#include<stdlib.h> //包含清屏函数的头文件
#include"2.h"
calculator c;
void main()
{
see ();
char op,i,D; // op定义为某个运算符号
double a,b;
cout<<"输入两个数及运算符:";
cin>>a>>op>>b;
cout<<"按‘=’号计算结果"<<endl;
cin>>D;
if(D=='=')
{
caculate(a,op,b); // 调用计算函数
}
}
8.难点分析
在利用MFC编写计算器过程中,遇到的技术上的问题,及解决方法。
例如:
⑴.计算数输入的处理
在程序中使用m_operand来存储当前的输入。
而程序只使用一个函数来处理所有数字输入,也就是说每次单击数字按钮就会调用该函数。
由于计算数不仅仅是个位数,因此用户可能需要单击几个数字按钮来完成一个计算数的输入,这样在每次输入时都必须将输入的数字累加入m_operand中。
而且对于小数输入和整数输入也必须采取不同的累加方式。
如对整数的输入,累加方式为:
m_operand=m_operand*10+n;其中n为输入的数字。
而对于小数输入,累加方式为:m_operand=m_operand+n*10i ;其中n为数字,i为小数位数。
因此在程序中还需设立布尔型变量m_coff 的值来标识当按下按钮小数点的时候来确定调用哪个累加方式。
⑵.自定义消息处理函数、成员函数、变量
在添加自定义函数、变量时需注意函数及变量的声明在头文件中如:CaaDlg.h ;而函数的实现部分及变量的初始在执行文件中如:CaaDlg.cpp 。
值得提醒的是手动添加消息处理函数时,需声明在头文件
//{{AFX_MSG(CCaaDlg) …//}}AFX_MSG中的部分。
而添加消息映射在执行文件
//{{AFX_MSG_MAP(CCaaDlg) …//}}AFX_MSG_MAP中的部分。
最后将消息处理函数添加到执行文件末即可。
9.总结
课程设计到此已告一段落,经过团队的努力,在将近一个月的实践中课程设计基本完成了。
从中学到很多有用的知识,也积累了不少宝贵的经验。
从一开始对MFC这样一个陌生的类库名词,在不断的翻阅书籍学习中开始渐渐的有所了解,虽然在此次课程设计我们只是针对性的去学习对对话框应用程序的编程模式,但也体会到了MFC这类库的博大精深。
想全部了解这样一个类库,今后还需多下功夫。
本次课程设计我们完成了一个简易计算器应用软件,在此期间,遇上了不少的技术难题,但是经过努力,通过查找资料,难题还是一个个被解决了,从中学到了许多课堂上没学到的东西,这是很值得高兴的。
经过设计的各个环节,从中学到了很多,锻炼了系统的设计的能力,培养了团队分工合作精神。
这样对我们以后在工作中或学习中得到很好的锻炼,为用VC++编辑软件奠定基础。
在本次实践期间对简易计算器的设计虽然大体实现各个控件的功能,但仍存在许多的不足与漏洞,还待以后的不断学习进一步完善。
参考文献:
[1]《Visual C++ 7.0 起步进阶》,国防工业出版社武装等编著
[2]《Visual C++ 基础教程》,西安电子科技大学出版社,2006.6
开发环境:
Microsoft Visual C++ 6.0
Microsoft Visual C++ 7.0。