c++简单计算器课程设计要点Word文件下载.docx
《c++简单计算器课程设计要点Word文件下载.docx》由会员分享,可在线阅读,更多相关《c++简单计算器课程设计要点Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
本课程设计的目的和任务:
(1)巩固和加深学生对C语言课程的基本知识的理解和掌握;
(2)掌握C语言编程和程序调试的基本技能;
(3)利用C语言进行简单软件设计的基本思路和方法;
(4)提高运用C语言解决实际问题的能力。
2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)
一、用C实现如下功能:
使用C语言编写一个类似于Windows附件提供的计算器软件,实现计算器的基本功能,能进行浮点数的加、减、乘、除、乘方和求模运算。
二、撰写课程设计报告或课程设计总结课程设计报告要求:
总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及格记。
3、主要参考文献
[1]揣锦华.面向对象程序设计与VC++实践.西安电子科技大学出版社,2005
[2]张建宏,汤练兵,马德骏.计算机程序设计基础-C语言程序设计.科学出版社,2006
[3]陈清华.VisualC++课程设计案例精选与编程指导.东南大学出版社,2004
[4]谭浩强,c++程序设计(第二版),清华大学出版社,2011
4、课程设计工作进度计划
课程设计时间为两周,分四个阶段完成:
1.分析设计阶段。
引导学生自主学习和钻研问题,明确设计要求,找出实现方法,按照需求分析、总体设计、详细设计这几个步骤进行。
这一阶段前第1-2天完成。
2.编码调试阶段:
根据设计分析方案编写C语言代码,然后调试该代码,实现课题要求的功能。
这一阶段在第3-7天完成。
3.总结报告阶段:
总结设计工作,写出课程设计说明书,要求学生写出需求分析、总体设计、详细设计、编码、测试的步骤和内容。
这一阶段在第8-9天完成。
4.考核阶段。
这一阶段在第10天完成。
指导教师(签字)
日期
年月日
教研室意见:
学生(签字):
接受任务时间:
年月日
注:
任务书由指导教师填写。
课程设计(论文)指导教师成绩评定表
题目名称
评分项目
分值
得分
评价内涵
工作
表现
20%
01
学习态度
6
遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。
02
科学实践、调研
7
通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。
03
课题工作量
按期圆满完成规定的任务,工作量饱满。
能力
水平
35%
04
综合运用知识的能力
10
能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。
05
应用文献的能力
5
能独立查阅相关文献和从事其他调研;
能提出并较好地论述课题的实施方案;
有收集、加工各种信息及获取新知识的能力。
06
设计(实验)能力,方案的设计能力
能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;
研究思路清晰、完整。
07
计算及计算机应用能力
具有较强的数据运算与处理能力;
能运用计算机进行资料搜集、加工、处理和辅助设计等。
08
对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)
具有较强的数据收集、分析、处理、综合的能力。
成果
质量
45%
09
插图(或图纸)质量、篇幅、设计(论文)规范化程度
符合本专业相关规范或规定要求;
规范化符合本文件第五条要求。
设计说明书(论文)质量
30
综述简练完整,有见解;
立论正确,论述充分,结论严谨合理;
实验正确,分析处理科学。
11
创新
对前人工作有改进或突破,或有独特见解。
成绩
指导教师评语
指导教师签名:
年 月 日
摘要
本课程设计将实现一个简单计算器。
其类似于Windows附件中自带的计算器。
这个计算器不仅实现了简单的四则运算功能,还实现了高级的科学计算功能,而且具有简洁大方的图文外观。
它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性使用人员能快捷简单地进行操作。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
在课程设计中,系统开发平台为Windows2000XP,程序设计设计语言采用VisualC++,在程序设计中,采用了结构化与面向对象两种解决问题的方法。
关键词:
程序设计,计算器,MFC,按钮控件
摘要Ι
1前言
简单计算器包括双目运算和单目运算功能。
双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,阶乘,对数,开方,倒数等运算。
可对输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。
出现错误会给出相应提示,同时包含清除,退格,退出功能以及有与所有按钮相对应的菜单项。
1.1课题背景
计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。
要实现计算功能,可以用VC++的知识编写程序来解决此问题。
该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。
该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。
1.2课程设计目的
在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。
在程序设计中,可以用两种方法解决问题:
一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。
由于多个函数均需要访问某些数据,这些数据常被设计为全局变量。
而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为C++程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。
1.3可行性分析
本设计是简单计算器。
日常计算机使用中,常常涉及到一些有关计算的问题,一个小型的计算器软件变得非常有用,该校型计算器需要空间资源较少,对电脑其他程序的应用影响较小。
它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性;
醒目美观的软件封面。
使用人员能快捷简单地进行操作。
1.4需求分析
本软件主要用于计算机windows2000/XP以上版本的用户的使用,这次课程设计一般是实现简单计算器的功能。
要程序能实现:
加,减,乘,除,开方,倒数等运算功能;
还要实现数据的输入,输出,计算,显示及程序退出等功能。
另外还可以实现多种科学计算的功能,如:
三角函数的计算,弧度与角度间的转换,对数指数的计算等等。
2相关技术分析
如图是整个计算器的流程图,打开计算器程序,输入数据,调用输入数据子程序。
子程序开始时m_num为零。
按下数字按钮后,判断m_num的正负号,对其进行相关处理,然后在判断是否有小数点,处理后输出结果。
回到总流程图中,输完第一个操作数后,若按下双目运算符,则把m_num存入num2,按下输入第二个操作数并算出结果。
若按下的是单目运算符,则直接对其处理得出结果。
若按下清零,则m_num等于0.在运算中还要判断运算是否合法,以及结果是否超出显示范围,以做出相关提示,按下清零。
算出后把结果保存至num2。
若需用算出的结果继续运算则回到输入完第一个操作数后,若不需要则判断试否需要开始新一轮的运算,不需要则结束。
它的设计按软件工程的方法进行,系统具有良好的界面;
必要的交互信息;
简约美观的效果。
即可单机按钮进行操作,也可直接通过键盘直接输入。
(1)包含的功能有:
加、减、乘、除运算,开方、求倒数等功能[1].
(2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。
(3)给对话框添加菜单。
(4)制定高级按钮控件,该按钮具有不规则的形状,可以根据用户鼠标的位置和单击状态的不同,显示不同的颜色[3]。
(5)制定高级编辑控件,该编辑控件可以指定文本文字的字体和颜色。
(6)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。
(7)实现对话框的扩展功能[2]。
(8)计算功能基本上是用系统内部函数。
(9)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。
图2.1输入数据子函数流程图
图2.2简单计算器总流程图
3设计与实现
3.1算法的实现
3.1.1头文件
首先对于一个程序的实现,我们需要运用很多的类,而对于我们的一个简单的程序来说,再编写一个类是很麻烦的。
头文件可以定义很多宏定义,就是一些全局静态变量的定义,在这样的情况下,只要修改头文件的内容,程序就可以做相应的修改,不用亲自跑到繁琐的代码内去搜索。
所以我们需要应用前辈的经验,他们将很多的头文件写好,以便我们使用。
对于我所设计的简单计算器,就将应用很多的头文件。
如:
#include<
iostream>
map>
string>
cctype>
3.1.2取字符
在一个简易计算器中,计算器值得输入与输出也是至关重要的,在本程序中,首先应用枚举理出计算式所有可能出现的值,C++编程语言作为一种强大的语言,在写程序的时候,我们常常需要为某个对象关联一组可选的alternative属性,所以我们常常就需要建立一个取值范围,在本函数中应用enumTOKENvalue{…}
枚举函数;
同时运用switch()函数来进行去自字符运算,这个函数的代码如下:
enumToken_value{//首先定义Taken_value为enum函数,Token_value为枚举类型,枚举了该语言中的各种终结符标记(token)值。
NAME,NUMBER,END,
PLUS='
+'
MINUS='
-'
MUL='
*'
DIV='
/'
PRINT='
;
'
ASSIGN='
='
LP='
('
RP='
)'
};
//中间所包含的就是枚举中的成员
定义:
Token_valuecurr_tok=PRINT;
//curr_tok:
在get_token中设置,在expr、term、prim中的switch中使用。
它表示的是当前读入的标记的类别,用来控制分类别的求值及其它处理。
map<
string,double>
table;
//number_value:
在get_token中设置,在prim中使用。
它表示的是当前读入数的字面值。
doublenumber_value;
//table:
在prim中设置,在prim中使用。
它表示的是已经读入的符号名对应数值,符号名可以增加,对应数值通过引用类型隐含地赋值。
string