面向对象程序设计大作业报告Word下载.docx

上传人:b****4 文档编号:17382192 上传时间:2022-12-01 格式:DOCX 页数:18 大小:137.19KB
下载 相关 举报
面向对象程序设计大作业报告Word下载.docx_第1页
第1页 / 共18页
面向对象程序设计大作业报告Word下载.docx_第2页
第2页 / 共18页
面向对象程序设计大作业报告Word下载.docx_第3页
第3页 / 共18页
面向对象程序设计大作业报告Word下载.docx_第4页
第4页 / 共18页
面向对象程序设计大作业报告Word下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

面向对象程序设计大作业报告Word下载.docx

《面向对象程序设计大作业报告Word下载.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计大作业报告Word下载.docx(18页珍藏版)》请在冰豆网上搜索。

面向对象程序设计大作业报告Word下载.docx

进制转换;

三角函数实现;

退出程序。

用户首先进行选择,如果输入正确,则根据选择调用相应的函数,否则提示用户重新进行输入,直到输入正确。

(5)主程序:

主程序比较简单,只是调用了menu()函数。

(6)程序中用到的其他函数

system(“pause”);

表示按任意键继续;

system(“cls”);

表示将屏幕上的所有内容清除,为了让界面整洁。

5.关键技术说明

(1)加减乘除平方进本运算模块

对于字符串和整数之间的转化利用了c语言中的函数atoi();

通过调用类中的getnum()函数来判断除数是否为0。

在进行进制转换时用到了栈,直接运用STL中的stack,包含在头文件stack中。

具体方法是:

首先将要进行转换的数转化成10进制,然后将10进制转化成目的进制。

转化成10进制的代码:

基本思想是:

对于n进制数abcdefg,转换成10进制数为:

a*n^6+b*n^5+c*n^4+d*n^3+e*n^2+f*n^1+g*n^0

将十进制数m转换成n进制的思想是:

不断将m%n放入栈中,直到m=0,然后依次输出栈的栈顶元素,直到栈为空。

考虑到对于16进制的数,数中可能会输入ABCDEF或者abcdef,所以将输入的数字转换成字符串形式,并进行判断转换。

首先定义:

chara[8][6]={"

log"

"

log10"

sin"

asin"

cos"

acos"

tan"

atan"

};

数组中包含的是三角函数。

对数组进行遍历,同时通过函数strcmp()判断要计算的函数是否在其中,有的话调用函数直接进行计算,否则,提示用户重新进行输入。

类中三角函数的实现直接调用了C语言中math.h头文件中的函数。

通过函数atof()将字符串转化为flaot类型的数。

6.源代码

calculator.h

#ifndefCALCULATOR_H

#defineCALCULATOR_H

classcalculator

{

private:

intnum;

doublenum2;

intscal;

//几进制

chartri[10];

//三角函数

floatang;

//弧度

public:

calculator(inta);

//加减乘除

calculator(doublea);

//计算除法

calculator(inta,intb);

//进制转换

calculator(floata,char*s);

voidshow();

voidshow2();

//除法输出

intgetnum();

calculatoroperator+(constcalculator&

c2);

//加

calculatoroperator-(constcalculator&

//减

calculatoroperator*(constcalculator&

//乘

calculatoroperator/(constcalculator&

//除

calculatoroperator^(constcalculator&

//平方

voidscalechange();

voidTriFunction();

voidCos();

voidSin();

voidLog();

voidLog10();

voidAsin();

voidAcos();

voidTan();

voidAtan();

#endif

calculator.cpp

#include<

iostream>

iomanip>

cstdlib>

stack>

cmath>

cstring>

#include"

calculator.h"

usingnamespacestd;

voidmenu();

calculator:

:

calculator(inta)

num=a;

}

calculator(doublea)

num2=a;

calculator(inta,intb)

scal=b;

calculator(floata,char*s)

ang=a;

strcpy(tri,s);

voidcalculator:

show()

cout<

<

"

结果为:

num<

endl;

show2()

setprecision(3)<

num2<

calculatorcalculator:

operator+(constcalculator&

c2)

returncalculator(num+c2.num);

operator-(constcalculator&

returncalculator(num-c2.num);

operator*(constcalculator&

returncalculator(num*c2.num);

operator/(constcalculator&

returncalculator(1.0*num/c2.num);

operator^(constcalculator&

returncalculator(num*num);

intcalculator:

getnum()

returnnum;

scalechange()

inta,b,i,j=1,n;

i=1;

a=0;

想要转换成几进制的数?

请输入:

;

cin>

>

n;

if(scal==16)//转换成十进制

{

for(i=strlen(num3)-1;

i>

=0;

i--)

{

if(num3[i]>

='

A'

&

&

num3[i]<

F'

a+=j*(num3[i]-'

+10);

elseif(num3[i]>

a'

f'

else

0'

);

j*=scal;

}

}

else//转换成十进制

a+=j*(num3[i]-'

stack<

int>

s;

while(a)

s.push(a%n);

a/=n;

scal<

进制数"

num3<

转换成"

n<

进制数为:

"

while(!

s.empty())

cout<

s.top()<

s.pop();

system("

pause"

cls"

menu();

Cos()

计算结果为:

cos(ang)<

Sin()

sin(ang)<

Log()

log(ang)<

Log10()

log10(ang)<

Asin()

asin(ang)<

Acos()

acos(ang)<

Tan()

tan(ang)<

Atan()

atan(ang)<

TriFunction()

inti,j=0;

chara[8][6]={"

for(i=0;

i<

8;

i++)

if(strcmp(a[i],tri)==0)

j=1;

break;

if(j==0)

您输入的三角函数表达式有误!

请重新进行输入!

system("

menu();

else

switch(i)

case0:

Log();

case1:

Log10();

case2:

Sin();

case3:

Asin();

case4:

Cos();

case5:

Acos();

case6:

Tan();

case7:

Atan();

main.cpp

voidmenu()

intn;

endl<

欢迎使用本计算器,请根据提示选择相应的功能"

1、加减乘除平方基本运算。

2、进制转换。

3、三角函数实现。

0、退出程序。

请做出你的选择:

switch(n)

case1:

charexpress[100];

chara[100],b[100];

charc;

inti,count;

cout<

请输入加减乘除表达式(表达式形式为a@b=@代表加减乘除平方,以回车表示结束)"

示例:

(1)23+45

(2)23-22(3)4*4(4)12/3(5)4^2"

cout<

注:

本计算器计算的是整数的基本运算。

请输入你的表达式:

cin>

express;

count=0;

for(i=0;

strlen(express);

{

if(express[i]=='

+'

||express[i]=='

-'

*'

/'

^'

break;

else

a[count++]=express[i];

}

c=express[i];

i++;

for(;

b[count++]=express[i];

calculatorc1(atoi(a));

calculatorc2(atoi(b));

switch(c)

case'

{

calculatorc3(c1+c2);

c3.show();

system("

menu();

}

calculatorc3(c1-c2);

calculatorc3(c1*c2);

if(c2.getnum()==0)

{

cout<

除数为0!

system("

menu();

break;

}

calculatorc3(c1/c2);

c3.show2();

calculatorc3(c1^c2);

default:

您输入的运算符有误!

system("

menu();

break;

case2:

intm,mm;

请输入需要进制转换的数和转换成的几进制的数:

本计算器针对的是整数之间的进制转换。

需要转换的数和该数的进制:

m>

mm;

calculatorc(m,mm);

c.scalechange();

case3:

inti,j;

charexp[100];

请输入三角函数表达式(示例:

sin(0),cos(0),tan(0),log(0)等):

本计算器计算的类型是弧度的三角函数。

exp;

chara[10],b[10];

memset(a,0,sizeof(a));

memset(b,0,sizeof(b));

j=0;

strlen(exp);

if(exp[i]=='

('

a[j++]=exp[i];

)'

b[j++]=exp[i];

calculatorc(atof(b),a);

c.TriFunction();

case0:

谢谢使用本计算器,程序作者:

韩邵杰"

exit(0);

break;

default:

您的选择有误!

请重新进行选择!

intmain()

return0;

7.测试(主界面及各功能模块的运行图及说明)

(1)程序运行后的界面:

(2)选择1进行加减乘除平方运算:

(3)按任意键继续之后回到界面

(1),然后减输入乘除平方进行测试:

(4)除法运算除数为0时:

(5)进制转换:

10进制转换成16进制:

十进制转换成2进制:

8进制转换成2进制:

2进制转换成16进制:

16进制转换成8进制:

(6)三角函数测试:

(7)选择0退出程序:

8.系统评价及展望

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

当前位置:首页 > 医药卫生 > 预防医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1