欢迎来到天天文库
浏览记录
ID:47499871
大小:894.90 KB
页数:46页
时间:2020-01-12
《软件课程设计-基于MFC的多功能计算器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、题目基于MFC的多功能计算器设计一、设计目标编写一个计算器。二、语言环境编程语言:C++开发环境:VS2017目标软件运行平台:Windows64位机三、软件功能:1.图形化界面。2.实现计算器的功能。3.输入加减乘除表达式,可以计算其结果。4.基本功能:计算表达式,计算阶乘,计算组合数,次幂,求次幂后取余,简单的分数加减乘除计算。5.扩展功能:在以上功能完成的基础上,可完成更高精度的计算,实现简单高精度的加减乘除阶乘运算。基于MFC的多功能计算器设计摘要计算器是人们日常生活中常见的电子产品之一,在人们的生活中有着非常广泛的应用,随着科学的进步,计算器的种类
2、和功能也更加丰富。本次课程设计旨在基于MFC框架设计一个多功能计算器,能够实现含括号的表达式计算,三角函数、开方、阶乘、排列组合等数学计算,进制转换,超过longlong范围的整数运算以及简单的分数四则运算。此次设计的多功能计算器是基于MFC的框架,以C++编程语言完成的,计算器使用中缀表达式求值的算法计算含括号的表达式,使用C++标准库函数进行相应的数学计算,利用Boost库实现高精度的整数运算。本计算器不仅功能丰富,而且具有美观、功能清晰且操作方便的界面。经多次测试,本计算器能即时准确地获得所需的计算结果,并且能在输入错误时进行相应处理,充分降低了计算时
3、的难度,节约了时间。通过本次课程设计,掌握了MFC基本框架,对基本算法有了更加深入的了解。关键词:多功能计算器;MFC;C++编程语言;表达式计算;高精度目录课题分析3总体设计3详细设计43.1普通计算与科学计算43.2高精度计算73.3其他计算83.3.1分数计算83.3.2组合数计算83.3.3进制转换8程序调试与问题解决94.1输入表达式错误引发程序异常94.2输入表达式格式有误94.3计算排列组合溢出10运行结果10总结12课题分析本次设计为多功能计算器,需要实现多种功能,为了使界面更加美观,功能更加清晰明了,也为了让使用者便于操作,因此本计算器使用
4、MFC中的TabControl控件对计算器进行分页[1],将计算器分为了四个板块,分别为:普通计算、科学计算、高精度计算和其他计算。普通计算板块不仅可以实现普通四则运算、次幂及取模的运算,还可以通过使用中缀表达式求值的算法计算表达式的值[2];科学计算板块不仅包含普通计算板块中的功能,还可以进行三角函数、阶乘、根号以及对数的运算;高精度板块可以实现大整数的加减乘除次幂与取模计算;其他板块中含有分数的四则运算、组合数计算以及进制转换功能。程序总体功能框图如图1。图1程序功能框图总体设计图2所示为整体设计流程框图。由于本次课程设计要实现的功能较多,如果放到一个页
5、面上,既不美观,功能也不清晰,于是本计算器使用了MFC中的TabControl控件,将计算器分为四个部分,每个部分拥有不同的功能。打开本计算器后,计算器的变量自动初始化,接着用户选择自己所需要的功能模块进行操作。选择普通计算或者科学计算页面后,用户需要点击计算器上的按钮来输入所需计算的表达式,用户所输入的表达式会在编辑框中显示出来,当用户按下等于后,计算器会执行操作,计算当前编辑框中的值,并将结果返回到结果框中进行显示;否则,计算器会继续等待用户输入。选择高精度计算的页面后,用户可以进行超过64位整数的加减乘除、次幂以及取模的连续运算。用户通过按钮输入两个变
6、量以及运算符,按下等号即可得到答案,接着用户可以选择继续按下运算符,使用本次得到的答案作为变量继续运算,也可以重新输入进行运算。选择其他计算的页面之后,可以看到该页面分为三个部分,分别是分数计算、组合数计算和进制转换。在分数计算部分,用户通过键盘输入分数的分子和分母,可以进行两个分数之间的加减乘除运算;在组合数计算部分,用户输入两个整数n和m,点击计算后可以得到A(n,m)与C(n,m)的值;在进制转换部分,用户输入一个数字,选择当前数字的进制后,再点击需要转换的进制即可得到转换后的结果。图2整体设计流程图详细设计3.1普通计算与科学计算科学计算板块与普通计
7、算板块相比,新增了圆周率的按钮与三角函数、阶乘、根号与对数的计算,其他功能与普通计算板块一致,因此一起说明。首先,给编辑框添加类型为Value的控件变量,变量类型为CString,变量名为result。接下来为每个按键添加事件处理程序,并且给清空键C添加bool型变量Restarted,初始化为true;给等号添加bool型变量OperatorPressed,初始化为true;给小数点添加bool型变量pt,初始化为false;给左括号和右括号分别添加int型变量cntleft和cntright,初始化为0。每个按键的事件处理程序如下所述:(1)按下0到9的
8、数字按钮。先将编辑框中的内容更新到编辑框所对应的变量
此文档下载收益归作者所有