科学计算器课程设计.docx
- 文档编号:27909701
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:60
- 大小:267.53KB
科学计算器课程设计.docx
《科学计算器课程设计.docx》由会员分享,可在线阅读,更多相关《科学计算器课程设计.docx(60页珍藏版)》请在冰豆网上搜索。
科学计算器课程设计
徐州师范大学物电学院
课程设计报告
课程名称:
计算机程序设计实训
题目:
科学计算器
专业班级:
电子科学与技术
说明:
1、报告中的第一、二、三项由学生在课程设计开始前填写,由指导教师指导并确认签字。
2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩,并填写成绩评定表。
3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。
答辩小组成员应由2人及以上教师组成。
答辩后学生根据答辩情况填写答辩记录表。
4、报告正文字数一般应不少于3000字,也可由指导教师根据本门课程设计的情况另行规定。
5、平时表现成绩低于6分的学生,取消答辩资格,其该课程设计成绩按不及格处理。
6、课程设计完成后,由指导教师根据完成情况写出总结。
7、此表格式为徐州师范大学物理与电子工程学院提供的基本格式,指导教师可根据本门课程设计的特点及内容做适当的调整。
一、课程设计目的、任务和内容要求:
《计算机语言程序设计》是一门以编程实践为主的专业课,目的在于培养学生利用计算机语言进行软件开发所必需的基本思想和基本技能,进一步提高综合应用计算机语言的各种编程知识和技巧进行程序设计的能力,通过本次课程设计,学生应能达到具备设计功能较为复杂的应用程序的能力,同时培养学生自主学习和独立创新的精神。
任务如下:
1.进行需求分析和概要设计,给出流程图。
2.写出详细设计,熟悉其中采用的关键技术。
3.给出具体的编码实现并调试。
4.写课程设计报告提交源程序。
内容要求:
设计并完成软件系统。
要求:
1.应具有简洁友好的用户界面。
2.要求软件系统的功能完整。
3.要求程序具备正确性,可读性和运行的高效性。
二、进度安排:
第1~3天:
查找资料,进行需求分析和概要设计;
第4~6天:
各模块的详细设计;
第7~12天:
软件实现与调试;
第13~14天:
写课程设计报告并提交源程序。
三、主要参考文献:
【1】王敬栋VisualC++课程设计案例精编(M)北京:
中国水利水电出版社2006
【2】夏崇镨任海军VsiualC++课程设计案例精编(M)北京:
清华大学出版社2008
【3】郑阿奇VisualC++实用教程(M)北京:
电子工业出版社2010
【4】陈清华.VisualC++课程设计案例精选与编程指导(M)南京.东南大学出版社,2004
【5】夏崇镨任海军VsiualC++课程设计案例精编(M)北京:
清华大学出版社2002
指导教师签字:
年月日
摘要………………………………………………………………………………………II
Abstract…………………………………………………………………………………...II
1绪论…………………….……………………………………………………………1
1.1背景、目的…………………………………………………………………………1
1.2简易计算器的功能……………………………………………………..……………1
2设计方案简述………………………………………………………….………………2
2.1输入流程分析……………………………………………………..…………………2
2.2计算流程分析……………………………………………………..…………………2
3详细设计……………………………………………………………..……………..4
3.1起始设计步骤……………………………………………………..…………………4
3.1界面设计……………………………………………………..………………………5
4设计结果及分析………………………………………………..…….……………..10
4.1测试设计结果…………………………………………….…………………………10
4.2设计分析….…………………………………………………..……………………10
5总结……..…………………………………………………..………………………….12
参考文献….………………..………………………………..………………………….…13
附录程序代码……...………………………………..………………………….………14
摘要
随着计算机网络通信技术、微电子技术的快速发展,作为21世纪的接班人,跟上时代的前进步伐,这就需要适应能够适应现实生活的节奏,现实生活中,很多时候要经行计算来处理一些事务,设计计算器可以帮助人们避免繁琐的计算,也可以加快人们办事效率,设计中运用MFC设计的是简单计算器,包括双目运算和单目运算功能。
双目运算符包含基本的四则运算及乘幂功能,单目运算符包含三角函数,反三角函数,阶乘,对数,开方,倒数等方面的运算。
可对输入任意的操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。
当出现错误会给出相应提示。
关键词:
简单计算器;MFC;计算
Abstract
Withthecomputernetworkcommunicationtechnology,therapiddevelopmentofmicroelectronicstechnology,asthesuccessortothe21stcentury,keepupthepaceofthetimes,whichneedtoadapttoadapttotherhythmofreallife,reallife,manytimestobecalculatedbythelinedealwithsomematters,thedesigncalculatorcanhelppeopleavoidcomplicatedcalculations,youcanalsoexpediteRenmenefficiency,thedesignofMFCdesignistheuseofsimplecalculator,includingtheeyesandtheunaryoperatorfunction.Binocularoperatorsincludebasicarithmetic,andpowerfunctions,unaryincludetrigonometricfunctions,inversetrigonometricfunctions,factorial,logarithm,squareroot,reciprocalandotheraspectsofoperations.Theoperationcanenteranynumber,includingdecimalsandintegers,andpositiveandnegativeforalloftheaboveoperationsandtocontinuousoperation.Whenanerrorwillgiveaprompt.
Keywords:
SimpleCalculator;MFC;Calculation
1绪论
1.1背景、目的
21世纪,随着科技的发展,人们生活节奏的加快,要想跟上时代的前进步伐,这需要我们适应能够适应现实生活的节奏,而生活中有很多方面需要进行计算,如统计,测量,等等各方面需要处理大量的计算任务,如果只靠人脑通过笔来计算,那效率低下,还烦琐。
而且容易出错,这就需要处理事件快捷的工具——计算器。
目前所有计算机带自带计算器,大大的方便人们的计算,处理事务,本设计中,运用MFC实现计算器的功能。
同样可以方便生活中处理计算类的事件,避免烦琐的计算,提高人们的处理计算事件的办事效率,而且计算不会出错。
当输入有错时候,可以自动提示错误。
计算器的发展已经经过几十年的过程,现在的计算器种类繁多,运算功能强大,在各行各业中均有应用,它的发展让人们节省了很多时间精力,计算器的发展正在向各个方向延伸,每个行业所需要的计算有差别,这就发展了各种类型单独的计算器,计算的运算速度,计算数字的庞大也在不断向前发展,本设计中的简易计算器,可以实现简单的单目和双目运算,方便一些简单事务的处理。
1.2简易计算器的功能
计算器的功能多少决定了计算器的实用价值,本设计中的简易计算器实现的主要功能有:
1)简单的四则运算:
加、减、乘、除以及取百分数
2)开方、幂运算、倒数、对数、阶乘、平方
3)正弦、余弦、正切
这些功能都是很常见的需要计算器功能,它可以帮助人们完成很多需要计算处理的功能。
所以次简易计算器很有实用价值,可以很好的帮助使用者,让计算变的简单化,不必去进行复杂的笔算,很大程度上的减轻了使用者的精神上的损耗,也很大程度上提高了使用者的办事效率。
2设计方案简述
2.1输入流程分析
如图2-1是整个计算器的流程图,打开计算器程序,输入数据,调用输入数据子程序。
子程序开始时m_show为零。
按下数字按钮后,判断m_show的正负号,对其进行相关处理,然后在判断是否有小数点,处理后输出结果。
图2-1输入数据子函数流程图
2.2计算流程分析
回到总流程图中,输完第一个操作数后,若按下双目运算符,则把m_show存入data1,按下输入第二个操作数并算出结果。
若按下的是单目运算符,则直接对其处理得出结果。
若按下清零,则m_
show等于0.在运算中还要判断运算是否合法,以及结果是否超出显示范围,以做出相关提示,按下清零。
算出后把结果保存至m_show中。
若需用算出的结果继续运算则当按下运算符号时,将自动先将m_show的数字保存到data1中再进行运算。
科学计算器总流程图如图2-2所示
图2—2科学计算器总流程图
3详细设计过程
3.1起始设计步骤
1.打开MicrosoftVisualC++6.0,在文件中点击新建,在弹出框内选择MFCAppWizard[exe]工程,输入工程名jianyijisuanqi及其所在位置,点击确定.
2.将弹出MFCAppWizard-step1对话框,选择基本对话框,点击完成.新建工程信息如图3-1
图3-1
这样,MFCAppWizard就建立了一个基于对话窗口的程序框架,如图3-2所示
图3-2
3.2界面设计
3.2.1.创建控件
在图2所示的ResoureView选项卡中打开Dialog资源组,双击IDD_JIANYIJISUANQI_DIALOG,在右边的窗口中显示出待编辑的对话框。
开始摆放控件,包括编辑框和按钮的创建。
其中按钮的创建以“1”为例进行介绍,其他按钮的创建可参照它进行操作。
1)在图3-2中Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。
在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit属性对话框,如图3-3所示,在该对话框中输入ID属性,再选择styles中将Aligntest中选择Right。
图3-3
2)在图3-2中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。
在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出PushButton属性对话框,如图3-4所示,在该对话框中输入控件的ID值和标题属性。
图3-4
按照“1”的操作过程编辑完成其他按钮和编辑框等对象的属性。
各按钮与编辑框等对象的属性如表
3-1、3-2、3-3、3-4所示
表3-1数字按钮和编辑框等对象的属性
控件类型
ID
属性设计
EditBOX
IDC_SHOW_EDIT
Button
IDC_NUM1_BUTTON
1
Button
IDC_NUM2_BUTTON
2
Button
IDC_NUM3_BUTTON
3
Button
IDC_NUM4_BUTTON
4
Button
IDC_NUM5_BUTTON
5
Button
IDC_NUM6_BUTTON
6
Button
IDC_NUM7_BUTTON
7
Button
IDC_NUM8_BUTTON
8
Button
IDC_NUM9_BUTTON
9
Button
IDC_NUM0_BUTTON
0
表3-2.四则运算的按钮对象属性
Button
IDC_FU1_BUTTON
+
Button
IDC_FU2_BUTTON
-
Button
IDC_FU3_BUTTON
×
Button
IDC_FU4_BUTTON
÷
表3-3三角函数集反三角函数的属性
Button
IDC_SIN_BUTTON
sin
Button
IDC_COS_BUTTON
cos
Button
IDC_TAN_BUTTON
tan
表3-4其他按钮的属性
Button
IDC_LOG_BUTTON
log
Button
IDC_MOD_BUTTON
mod
Button
IDC_KE2_BUTTON
x^2
Button
IDC_KE4_BUTTON
10^x
Button
IDC_FU7_BUTTON
.
Button
IDC_EQUAL_BUTTON
=
Button
IDC_FU5_BUTTON
%
Button
IDC_FU6_BUTTON
+/-
Button
IDC_BACKSPACE_BUTTON
回删
Button
IDC_C_BUTTON
清零
Button
IDC_KE1_BUTTON
1/x
Button
IDC_LN_BUTTON
ln
Button
IDC_CE_BUTTON
√
完成后界面如图3-5所示
图3-5
3.2.2程序运行时初始化
1)jianyijisuanqiDlg.cpp里加上头文件#include"math.h"
以及定义#definepi3.14159265358979
2)"jianyijisuanqiDlg.h"中变量的定义
booldecimal=0;//判断是否小数
doubledata2=0;
doubledata1=0;
doubledata_dec=0;
doubledata_int=0;//输入数据整数与小数部分
doublevalue=0;
doublecount=10;
inttype;//存放运算类型
3.2.3.连接变量和代码
1)给编辑框连接变量。
在编辑框上单击鼠标右键,在弹出菜单中选择“建立类向导”菜单项,弹出MFCClassWizard对话框,选择MemberVariables选项卡,再将Classname中选择CjianyijisuanqiDlg.双击IDC_SHOW_EDIT,弹出AddMenberVariable,连接变量为m_show,变量类型设定为cstring型。
如图3-6所示。
图3-6
2)给“1”按钮连接代码。
在“1”按钮上单击鼠标右键,选择“建立类向导”菜单项,在弹出的对话框中选择MessagesMaps选项卡,然后在ObjectIDs列表框中双击选择IDC_NUM1_BUTTON,在Messages列表框中选择双击BN_CLICKED项,即给“1”按钮选择单击按钮事件,如图3-7所示
图3-7“1”按钮链接代码对话框
即对应的添加按钮“1”的代码
voidCJSQDlg:
:
OnNum1Button()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData();
if(m_Flag==1)
{
m_Flag=0;
m_Show="";
m_Show+='1';
}
else
{
if(m_Show=="0")
{
m_Show="";
}
m_Show+='1';
}
UpdateData(false);
}
其他按钮如参照按钮“1”来连接代码,详细代码见附录。
4设计结果及分析
4.1测试设计结果
1).输入“100”,“-”,“28.5”,“=”,得到结果如图4-1所示
图4-1
2).输入”60”,”cos”运行结果如图4-2所示
图4-2
4.2设计分析
4.2.1操作数的输入
编辑框所关联的变量为m_show,程序开始时为0。
每按下一个数字键按钮,就把它累加到m_show里并刷新显示。
BOOL型变量用docimal来判断是否有小数点和一个整型数data_int来表示小数点后的数据的位数。
当docimal=1时,表示有小数点,否则则表示无小数点。
按下小数点按钮后执行docimal=1。
当按下一个数字键时,首先根据
decimal判断是否按下小数点,若有即运行count=count*10,则为此次键入的数所处的位数,将键入的数除以count然后累加到编辑框所关联的变量m_show上,若没有则把m_show乘以10,然后累加到编辑框所关联的变量m_show上。
4.2.2单目运算符功能的实现
由于单目运算符中必须有执行运算的函数,因而头文件中要加入math.h,如m_show=sqrt(m_show).按下按钮即可实现其功能。
4.2.3双目运算符功能的实现
双目运算符需要两个操作数才能运算,所以在执行双目运算符按钮的函数代码中,要把m_show中的值保存到变量data1中,然后把m_show清零。
这样即可保存第一个操作数。
运算在实现部分在“=”中实现,过程4.2.4中阐述的。
4.2.4等于按钮的功能实现
我们在每个函数中运用了type来定义运算类型,每个函数的type不同(如加法type=0;减法type=1);在等于号按钮的实现时候,我们用switch(type)来实现,当case0时候,实现加法运算value=data1+data2;break;当case1时候,同样实现减法运算value=data1-data2;break;用break来跳出函数,结束运算,现实结果。
5总结
在此我要感谢赵纪平老师,她严谨的治学态度、追求卓越的生活精神,特别是她教课时候的激情深深地感染着我。
我还要感谢所有关心帮助过我的同学。
基于VC++下的设计,可以看出VC++它的多态性,继承性,封装性的优越特点,这让编译设计更加的简单方便,特别是它的继承性。
使用MFC减少了大量建立Windows程序时必须编写的代码,由于VC++的继承和封装,正是由于MFC编程方法充分利用了面向对象技术优点,使的设计程序编程时极少需要关心对象方法的实现细节,而只需要简单的调用自己已有对象的方法就可以了。
简单的说,MFC的优点可以归结为以下几点:
(1)MFC是C++的MicrosoftWindows应用程序的编程接口。
(2)MFC开发的应用程序使用了标准化的结构。
(3)使用MFC开发的应用程序不仅小,而且运行快。
(4)VisualC++工具降低了编码的复杂性。
(5)MFC库功能丰富
经过长达2个星期的VC++课程设计和多番测试,终于将设计的简易计算器能够完成功能描述内容中的全部功能。
在本学期中我们开设了《VisualC++实用教程》课的MFC部分皆为需要实践内容,在开始着手程序设计时,有些功能感觉无从下手,都不知道要干什么。
正所谓“纸上谈兵终觉浅,觉知此事要躬行。
”所以在本学期末的课程设计是很及时、很必要的。
这样不仅能够加深我们对MFC程序设计的掌握,而且还及时、真正的做到了学以致用。
让我感受到了:
学完VC++后做课程设计得基本功过硬,设计过程中不得有半点马虎。
同时在实践过程中提高自己找错纠错能力,通常错误就那几种,多练习就熟练了。
同时在设计过程中多思考,能否更好的完成实现。
设计过程中我们要善于查找资料提高自己的信息搜索查询能力,要善于利用并能更哈的利用网络来获得知识,获得帮助。
在面临无从下手等这些问题只要找到相关的资料就会得到提示从而理解所要解决问题的大致方向。
当我们有了明确的目的,就可以发挥自己的头脑来完成实现它了。
在设计过程中我们要善于思考。
在程序设计过程中总会有些实现难点和最初完成程序时免不了的有许多不足,这就需要自己根据代码及实现的功能去认真思考并解决遇到的难点。
只有这样不断纠正不断思考,才能完成程序设计功能目的,才能在实践中不断提升自己。
通过本次的课程设计让我学到了并收获了很多,不仅仅巩固了先前学的MFC程序设计知识,让我认识到了自己很多的不足,而且此次课程设计还培养了我的动手实践能力,让我的创造性思维得到拓展。
它还让我感受到了实践的重要性。
参考文献
【1】郑阿奇VisualC++实用教程(M)北京:
电子工业出版社2010
【2】王敬栋VisualC++课程设计案例精编(M)北京:
中国水利水电出版社2006
【3】夏崇镨任海军VsiualC++课程设计案例精编(M)北京:
清华大学出版社2008
【4】陈清华.VisualC++课程设计案例精选与编程指导(M)南京.东南大学出版社,2004
【5】夏崇镨任海军VsiualC++课程设计案例精编(M)北京:
清华大学出版社2002
附录
程序代码
//JSQDlg.cpp:
implementationfile
//
#include"stdafx.h"
#include"JSQ.h"
#include"JSQDlg.h"
#include"math.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CAboutDlgdialogusedforAppAbout
classCAboutDlg:
publicCDialog
{
public:
CAboutDlg();
//DialogData
//{{AFX_DATA(CAboutDlg)
enum{IDD=IDD_ABOUTBOX};
//}}AFX_DATA
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implement
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 科学 计算器 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)