精品科学计算器毕业论文.docx
《精品科学计算器毕业论文.docx》由会员分享,可在线阅读,更多相关《精品科学计算器毕业论文.docx(32页珍藏版)》请在冰豆网上搜索。
精品科学计算器毕业论文
(此文档为word格式,下载后您可任意编辑修改!
)
徐州师范大学物电学院
课程设计报告
课程名称:
计算机程序设计实训
题目:
科学计算器
专业班级:
电子科学与技术
学生姓名:
徐金富
指导教师:
赵纪平
物电学院教务部印制
说明:
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,thedesigncalculatorcanalsoexpediteRenmenefficiency,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
1x
Button
IDC_LN_BUTTON
ln
Button
IDC_CE_BUTTON
√
完成后界面如图3-5所示
图3-5
3.2.2程序运行时初始化
1)jianyijisuanqiDlg.cpp里加上头文件#include"math.()
{
TODO:
Addyourcontrolnotificationfile
#include"stdafx.overrides
{{AFX_VIRTUAL(CAboutDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);DDXDDVsupport
}}AFX_VIRTUAL
Implementation
protected:
{{AFX_MSG(CAboutDlg)
}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
:
IDD)
{
{{AFX_DATA_INIT(CAboutDlg)
}}AFX_DATA_INIT
}
voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
{{AFX_DATA_MAP(CAboutDlg)
}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
{{AFX_MSG_MAP(CAboutDlg)
NomessagedoesnotrequireasubsequentDestroyIconinWin32
m_=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
voidCJSQDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
{{AFX_DATA_MAP(CJSQDlg)
DDX_Text(pDX,IDC_M_EDIT,m_M);
DDX_Text(pDX,IDC_SHOW_EDIT,m_Show);
}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CJSQDlg,CDialog)
{{AFX_MSG_MAP(CJSQDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_NUM0_BUTTON,OnNum0Button)
ON_BN_CLICKED(IDC_NUM1_BUTTON,OnNum1Button)
ON_BN_CLICKED(IDC_NUM2_BUTTON,OnNum2Button)
ON_BN_CLICKED(IDC_NUM3_BUTTON,OnNum3Button)
ON_BN_CLICKED(IDC_NUM4_BUTTON,OnNum4Button)
ON_BN_CLICKED(IDC_NUM5_BUTTON,OnNum5Button)
ON_BN_CLICKED(IDC_NUM6_BUTTON,OnNum6Button)
ON_BN_CLICKED(IDC_NUM7_BUTTON,OnNum7Button)
ON_BN_CLICKED(IDC_NUM8_BUTTON,OnNum8Button)
ON_BN_CLICKED(IDC_NUM9_BUTTON,OnNum9Button)
ON_BN_CLICKED(IDC_FU7_BUTTON,OnFu7Button)
ON_BN_CLICKED(IDC_BACKSPACE_BUTTON,OnBackspaceButton)
ON_BN_CLICKED(IDC_CE_BUTTON,OnCeButton)
ON_BN_CLICKED(IDC_FU6_BUTTON,OnFu6Button)
ON_BN_CLICKED(IDC_C_BUTTON,Onclear)
ON_BN_CLICKED(IDC_FU1_BUTTON,OnFu1Button)
ON_BN_CLICKED(IDC_FU2_BUTTON,OnFu2Button)
ON_BN_CLICKED(IDC_FU3_BUTTON,OnFu3Button)
ON_BN_CLICKED(IDC_FU4_BUTTON,OnFu4Button)
ON_BN_CLICKED(IDC_EQUAL_BUTTON,OnEqualButton)
ON_BN_CLICKED(IDC_KE1_BUTTON,OnKe1Button)
ON_BN_CLICKED(IDC_SIN_BUTTON,OnSinButton)
ON_BN_CLICKED(IDC_COS_BUTTON,OnCosButton)
ON_BN_CLICKED(IDC_TAN_BUTTON,OnTanButton)
ON_BN_CLICKED(IDC_KE2_BUTTON,OnKe2Button)
ON_BN_CLICKED(IDC_LN_BUTTON,OnLnButton)
ON_BN_CLICKED(IDC_LOG_BUTTON,OnLogButton)
ON_BN_CLICKED(IDC_KE3_BUTTON,OnKe3Button)
ON_BN_CLICKED(IDC_KE4_BUTTON,OnKe4Button)
ON_BN_CLICKED(IDC_MOD_BUTTON,OnModButton)
ON_BN_CLICKED(IDC_FU5_BUTTON,OnFu5Button)
ON_BN_CLICKED(IDC_M1_BUTTON,OnM1Button)
ON_BN_CLICKED(IDC_M2_BUTTON,OnM2Button)
ON_BN_CLICKED(IDC_MR_BUTTON,OnMrButton)
ON_BN_CLICKED(IDC_MC_BUTTON,OnMcButton)
ON_WM_CTLCOLOR()
}}AFX_MSG_MAP
END_MESSAGE_MAP()
CJSQDlgmessagethesystemcommandrange.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
Settheiconforthisdialog.Theframeworkdoesthisautomatically
whentheapplication'smainwindowisnotadialog
SetIcon(m_,TRUE);Setbigicon
SetIcon(m_,FALSE);Setsmallicon
TODO:
AddextrainitializationTRUE;returnTRUEunlessyousetthefocustoacontrol
}
voidCJSQDlg:
:
OnSysCommand(UINTnID,LPARAMlParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog:
:
OnSysCommand(nID,lParam);
}
}
Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
todrawtheicon.ForMFCapplicationsusingthedocumentviewmodel,
thisisautomaticallydoneforyoubytheframework.
voidCJSQD