科学计算器设计报告
- 格式:doc
- 大小:69.00 KB
- 文档页数:9
LSN科学计算器
摘要
MFC是微软基于Windows平台下的C++类库集合,包含了所有与系统相关的类,提供了应用程序框架和开发应用程序的工具,如应用程序向导,类向导,可视化资源设计等高效工具,用消息映射处理消息响应,大大简化了程序编写工作。对话框则是一种特殊类型的窗口,用其可以实现与用户交互的功能。
本科学计算器应用程序基于文档较少而交互较多的应用场合,就可以利用MFC的强大功能创建程序的基本框架——即通过App Wizard,Class Wizard,App Studio创建基于对话框的方式制作程序。本文则详细介绍了开发人员利用MFC开发此计算器程序的设计思路,该程序的功能和设计介绍,以及过程中遇到的困难与体会。
关键词:MFC 对话框控件变量消息处理函数
1 科学计算器开发设计思想
根据设计中的需求,该科学计算器主要实现用户交互功能。LSN科学计算器的功能主要包括列出式子进行四则运算,加减乘除运算(其中包括含括号的运算),还有函数的运算,包括三角函数运算,指数函数运算中的求平方,正数求开方,立方,以及进制转化等功能。采用MFC作为具体开发工具,设计出如下界面
操作具体过程应为先通过资源管理器绘出计算器窗口;再放置控件并设置控件属性;然后为控件连接变量;最后使用类向导创建消息处理函数。
在消息处理函数的确定过程中,首先考虑了各种数据的输入情况,字符串中只有数字时,有数字和运算符时,带括号时的三种情况,经过从网络和书本上查阅资料,了解了实现计算器功能的代码和方法,并分别设计出相应的函数解决问题,同时设计出计算结果的算法。另外函数的运算则通过包含Cmath文件,实现相应的功能。
2 科学计算器功能及系统设计介绍
(1)功能介绍
运行程序后,系统会弹出一个基于对话框的计算器界面;
在计算器程序中,主要通过一个编辑框来获取表达式和显示计算
结果,表达式可以通过键盘和单击按钮2种方式输入:可输入四则运算的(),+,—,*,/,和相应的数字。
在输入完表达式后,单击“=”后,开始对表达式进行运算,计算完成后,在编辑框中显示计算的结果;
计算器可以实现十进制转化为十六进制,八进制,二进制,其实现的操作为先输入一个十进制数,再单击按钮“转化为十六进制”,“转化为八进制”,“转化为二进制”。
此外,计算器还可以实现一些函数运算,实现操作与转化进制的方法相同,是先输入一个数字,在单击想要函数按钮,之后会在编辑框中显示计算的结果。
(2)系统设计介绍
建立的变量,控件的命名,对应的消息处理函数对应表ID CAPTION 消息处理函数或连接变量
IDD_EDIT1 编辑框m_strnum
IDC_0 0 On0
IDC_1 1 On1
IDC_2 2 On2
IDC_3 3 On3
IDC_4 4 On4
IDC_5 5 On5
IDC_6 6 On6
IDC_7 7 On7
IDC_8 8 On8
IDC_9 9 On9
IDC_PI πOnPI
IDC_DOT .OnDot
IDC_DIV / OnDiv
IDC_MUL * OnMul
IDC_MIN - OnMin
IDC_ADD + OnAdd
IDC_back 后退OnBac
IDC_AC Ac OnAc
IDC_LBR ( OnLbr
IDC_RBR ) OnRbr
IDC_EQUAL = OnEqual
IDC_POW2 平方OnPow2
IDC_POW3 立方OnPow3
IDC_NUM2 转化为二进制OnNum2
IDC_NUM8 转化为八进制OnNum8
IDC_NUM16 转化为十六进制OnNum16
IDC_SIN sin OnSin
IDC_COS cos OnCos
IDC_TAN tan OnTan
IDC_LOG ln OnLog
IDC_SQRT sqrt OnSqrt
变量说明:
bool function,clear; //在按下=.sin.cos.tan.sqrt.
开方等按钮时,两者会变成
true,用于判断输入的字符是第一个还是中间值
char b[10]; //用于存储四则运算中的运算符
double a[20]; //用于存储四则运算中的数字
CString str2,str7,str3; //过程中用到的对象
重要函数说明:
double GetaStr(CString str); //如果编辑框中只含数字,
负责识别小数与整数的函数,
主要用于三角函数,平方,立方,开方,
对数,以及进制的参数获得问题
int GetStr(CString str); //把编辑框中的字串分为数字
和运算符分别存储到b[10];a[20]中
double GetResult(); //四则运算中得出结果的函数
void Bracket(CString str0); //解决括号问题中str2,(即
括号里的字符串),str3(即括
号里的字符串)都存在时的情况void Bracket1(CString str0); //解决括号问题中str2(即
括号里的字符串)存在,而str3
(即括号里的字符串)不存在时的情况CString f(int n); //因为十六进制和二进制,八进制都不
同,需要把10.11.12.13.14.15这
些余数转化为 A.B.C.D.E.F,而此函数即
起这个作用
3 科学计算器开发体会
(1)实践出真知:
最先开始看书上关于MFC的综述介绍时,新概念很多,怎么看都
看不懂,非常生涩,觉得既然看都看不懂的东西怎么可能还做得出来,产生了畏难情绪,甚至前几节课都不太想做,后来发现室友轻松做出
简易计算器,问她原因时说:“先照着书上一步一步来,不懂的你别管,照着做,慢慢的就会懂些了的。”我猛然想到去年计算机基础课
程设计时,一开始对Frontpage也是一窍不通,甚至连PPt都不会做,最后还不是自己去图书馆查书找步骤,照着书上的例子做,最后才懂的,况且C++程序设计还系统学过课理论知识,肯定可以搞明白的。
于是我找到程序设计实践书上的对话框实例,一步一步的跟着做,尽
管当时只是很死板地照着做——进行步骤的原因不清楚,里面用到的