c++实现计算器毕业课程设计报告.docx

上传人:b****1 文档编号:15032738 上传时间:2023-06-29 格式:DOCX 页数:18 大小:165.35KB
下载 相关 举报
c++实现计算器毕业课程设计报告.docx_第1页
第1页 / 共18页
c++实现计算器毕业课程设计报告.docx_第2页
第2页 / 共18页
c++实现计算器毕业课程设计报告.docx_第3页
第3页 / 共18页
c++实现计算器毕业课程设计报告.docx_第4页
第4页 / 共18页
c++实现计算器毕业课程设计报告.docx_第5页
第5页 / 共18页
c++实现计算器毕业课程设计报告.docx_第6页
第6页 / 共18页
c++实现计算器毕业课程设计报告.docx_第7页
第7页 / 共18页
c++实现计算器毕业课程设计报告.docx_第8页
第8页 / 共18页
c++实现计算器毕业课程设计报告.docx_第9页
第9页 / 共18页
c++实现计算器毕业课程设计报告.docx_第10页
第10页 / 共18页
c++实现计算器毕业课程设计报告.docx_第11页
第11页 / 共18页
c++实现计算器毕业课程设计报告.docx_第12页
第12页 / 共18页
c++实现计算器毕业课程设计报告.docx_第13页
第13页 / 共18页
c++实现计算器毕业课程设计报告.docx_第14页
第14页 / 共18页
c++实现计算器毕业课程设计报告.docx_第15页
第15页 / 共18页
c++实现计算器毕业课程设计报告.docx_第16页
第16页 / 共18页
c++实现计算器毕业课程设计报告.docx_第17页
第17页 / 共18页
c++实现计算器毕业课程设计报告.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c++实现计算器毕业课程设计报告.docx

《c++实现计算器毕业课程设计报告.docx》由会员分享,可在线阅读,更多相关《c++实现计算器毕业课程设计报告.docx(18页珍藏版)》请在冰点文库上搜索。

c++实现计算器毕业课程设计报告.docx

c++实现计算器毕业课程设计报告

(此文档为word格式,下载后您可任意编辑修改!

得分:

信电工程学院

课程设计报告

基于VC的表达式计算器软件设计

课程:

程序设计综合训练1

班级:

12软嵌2班

学号:

姓名:

谢文靖

指导教师:

朱丽

 

2013年6月28日

目录

1引言1

1.1课题背景-----2

1.2课程设计目的

2需求分析-5

2.2系统功能模块

2.3设计要求-----6

3系统实现8

3.1对话框界面设计

3.2数值计算功能的实现0

4程序关键代码及运行结果-12

5总结与体会

1引言

1.1课题背景

计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。

要实现计算功能,可以用VC++的知识编写程序来解决此问题。

该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。

该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用.

1.2课程设计目的

本课程是一门实践性很强的课程,既要熟练掌握相关概念,又要动手编程,还要上机调试运行。

同时,本课程也注重提高学生编写技术文档和技术文档阅读的能力。

学生通过本课程的学习实践,将学习和强化软件开发的能力、文档写作能力、英语阅读能力、软件使用能力等。

为今后计算机编程的学习和工作打下良好、扎实的理论实践基础。

2需求分析

2.1系统功能模块

1)输入的符号,数字从左向右显示;点击“=”输出结果,在输出行显示

2)支持加减乘除运算;

3)支持“xˆy”的运算;

4)括号“(”“)”的使用;

5)支持混合运算;

6)功能键“ANS”,“CLEAR”,“BACKSPACE”的使用;

7)计算器的输入方式:

支持鼠标点击计算器键输入;

8)计算器计算结果的输出方式:

在计算器窗口的输出行显示

9)算数运算的数据类型:

整数和浮点数;

10)特殊情况的计算;

11)以上所有的运算都是在10进制下进行.

1)输入的符号,数字从右向左显示。

先输入“8”

8

再输入“×”

8*

点击“=”输出结果,在输出行显示.

2)支持加减乘除运算.

a.乘法计算:

8*3

24

b.加法计算

1+0

1

c.减法计算

8-3

5

d.除法运算(特殊情况见10.B)

94

2.25

2)支持求次方(xˆy)运算。

求次方(xˆy)运算:

“ˆ”为次方(xˆy)在输入行中的显示符号

4ˆ2

16

4)“(”“)”的使用。

(括号的使用)

要使用“(”“)”的时候,先点击“(”,再输入数字或符号,内容输入完毕以后,点击“)”,完成“(”“)”的所有功能。

例如:

2×(2+2)=?

2

2*(

 

2*(2+2

2*(2+2)

2*(2+2)

8

5)支持混合运算。

附:

运算符的优先级表

优先级

功能键

显示

结合律

(、)

(、)

自左向右

xˆy、1x

ˆ、~

自左向右

×、÷

*、

自左向右

﹢﹣

﹢﹣

自左向右

例如:

(5+2)×5=?

(5+2)*5

35

6)功能键“CLEAR”及“BACKSPACE”的使用。

a.“CLEAR”为清0键。

只要按下“CLEAR”键,输入行所有字符清0,输出行回到原始状态。

输入前:

(5+2)*5

输入后:

0

b.“BACKSPACE”为退格键。

当输入任何数字或运算符,只要按下“BACKSPACE”键,字符位自右向左消去一位。

(注:

初始的“0”不能被删除)

输入前:

(5+2)*5

输入后:

(5+2)*

C.“ANS”为变量储存器。

当一次结果被清除后,只要按下“ANS”键就会显示这个结果。

如:

5+2

7

按“CLEAR”键后,再按“ANS”键就会这样

77

7

7)计算器的输入方式:

只支持鼠标点击计算器键输入;

8)计算器计算结果的输出方式:

在计算器窗口的输出行显示。

9)算数运算的数据类型:

整数和浮点数。

a.输入行最大显示的字符数32位,每个运算符算一位;

b.“(”,“)”各占一个字符位;

c.输出行最大显示的字符数为32位;

d.纯小数显示的最大字符数为小数点后30位,整数及小数点各占一位;

若纯小数为负数,则显示最大字符数为小数点后29位,“-”占一位;

e.输入行在未输入任何数字的时候,显示“0”,只占一个字符位;当输入任何数字时。

“0”消失,输入的的数字取代“0”;当输入任何运算符时。

默认之前输入数字“0”;

f.点击“=”键后方可显示数字或字母或汉字。

10)特殊情况的运算

A.运算结果整数部分超出32位,显示Infinity(无穷大);出现运算异常!

9999*

Infinity

B.除数为0的情况,提示用户被除数不能为零!

10

除零错误

C.在运算时,若结果为纯小数,小数位超过30位,则超出的字符舍弃。

23

0.6

若舍弃超出部位后,结果全为0,则结果为0

199^99

0

D.在运算时,若结果的整数位不为0

a.总位数在最大字符位内,则直接显示;

b.总位数在最大字符位以外,整数部分在最大字符位以内,则只优先显示整数部位,弃掉32位以后的字符

53

1.6666

E.当用户输入“^0”时,若“^0”之前的算式或数字的值为0,点击“=”后,输出界面显示“底数不能为0”

11)以上所有的运算都是在10进制下进行

2.2设计要求

(1)了解Windows编程的基础知识,掌握MFC应用程序的基本知识。

(2)理解需求分析过程,掌握需求分析文档编写。

(3)理解面向对象程序设计的基本思路和方法。

(4)掌握用VC++开发MFC应用程序的一般步骤和方法。

(5)掌握基于对话框的应用程序的编写,主要包括文本框和按钮等。

(6)掌握后缀表达式算法。

(7)掌握VC++开发工具的使用。

包括资源管理,项目创建,运行调试等。

(8)完成表达式的计算器应用程序,实现基本的加、减、乘、除等四则运算,且支持包括括号的表达式运算功能。

3系统实现

3.1对话框界面设计

3.2数值计算实现

例如:

2×(2+2)=?

2

2*(

 

2*(2+2

2*(2+2)

2*(2+2)

8

4程序关键代码及运行结果

#include

#include

#include"Stack.(doublea,doubleb,charc,double&d)

{

switch(c)

{

case'+':

d=a+b;

cout<

returntrue;

case'-':

d=a-b;

cout<

returntrue;

case'*':

d=a*b;

cout<

returntrue;

case'':

if(b==0)

throwCString("除零错误!

");

cout<

d=ab;

returntrue;

case',':

cout<

d=pow(a,b);

returntrue;

default:

returnfalse;

}

}

if(array[num-40][pre-40]>0)将符号压栈

{

op.Add((char)num);

}

else

{

charmid;

while(array[num-40][pre-40]<=0)

{

if(pre==40&&num==41)排除(数字)情况,保留数字()非法情况

{

if(i>0)

{

intMyCheck=(int)name.at(i-1);

if(MyCheck<=57&&MyCheck>=48||MyCheck==41)

{

break;

}

else

throwCString("括号中的表达式不合法");

}

else

throwCString("出现未匹配的)");

}

try

{

op.Delete(mid);

}

catch(CStringe)

{

throwCString("出现未匹配的)");

}

doubledata1,data2;

try

{

data.Delete(data2);

data.Delete(data1);

}

catch(CStringe)

{

throwCString("缺少操作数");

}

if(!

jisuan(data1,data2,mid,data1))

{

result=0;

throwCString("表达式异常");

}

data.Add(data1);

pre=(int)op.Top();

}

CompuetrDlg.cpp:

实现文件

#include"stdafx.=GetSystemMetrics(SM_CXICON);

intcyIcon=GetSystemMetrics(SM_CYICON);

CRectrect;

GetClientRect(&rect);

intx=(rect.Width()-cxIcon+1)2;

inty=(rect.Height()-cyIcon+1)2;

绘制图标

dc.DrawIcon(x,y,m_);

}

else

{

CRectrect;

CPaintDCdc(this);

GetClientRect(rect);

dc.FillSolidRect(rect,RGB());设置背景颜色

CDialog:

:

OnPaint();

CDialog:

:

OnPaint();

}

}

Compuetr.cpp:

定义应用程序的类行为。

#include"stdafx.FALSE;

}

stack

#include

#include

#include

usingnamespacestd;

template

classLinkedStack;

template

classNode

{

friendLinkedStack;

private:

Tdata;

Node*link;

};

template

classLinkedStack

{

public:

LinkedStack(){top=0;length=0;}

~LinkedStack();

boolisEmpty()const

{

returntop==0;

}

boolisFull()const;

TTop()const;

LinkedStack&Add(constT&x);

LinkedStack&Delete(T&x);

intgetLength(){returnlength;}

private:

Node*top;

intlength;

};

template

LinkedStack:

:

~LinkedStack()

{

Node*next;

while(top)

{

next=top->link;

deletetop;

top=next;

}

}

template

boolLinkedStack:

:

isFull()const

{

try

{

Node*p=newNode;

deletep;

returnfalse;

}

catch(bad_alloc&e)

{

returntrue;

}

}

template

TLinkedStack:

:

Top()const

{

if(isEmpty())

throwCString("堆栈空异常!

");

returntop->data;

}

template

LinkedStack&LinkedStack:

:

Add(constT&x)

{

Node*p=newNode;

p->data=x;

p->link=top;

top=p;

length++;

return*this;

}

template

LinkedStack&LinkedStack:

:

Delete(T&x)

{

if(isEmpty())

throwCString("堆栈空异常!

");

x=top->data;

Node*p=top;

top=top->link;

deletep;

length--;

return*this;

}

5总结与体会

计算器虽然是我们生活中常见的一样工具,但不知道实现这样一个工具,说实话不是很简单,对于我这个学习一般的人来说,很难!

计算器虽小,但包含了一些简单却又重要的功能,包括加减乘除,次方,括号等一些基本功能,它方便了大众的日常生活中遇到的计算问题。

完成这个任务,说实话很艰难,但挺了过来,坚持了过来,所谓凡事贵在坚持,所以要学会坚持,坚持就是胜利。

一个人的力量是有限的,学会与人合作,积极请教他人谦虚学习是必要的,它只会让你更加的进步,会更好。

所以这个任务让我学到了很多,坚持,努力,合作,进取,积极向上,天下无难事,只要肯用心!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2