面向对象程序设计大作业报告Word下载.docx
《面向对象程序设计大作业报告Word下载.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计大作业报告Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
进制转换;
三角函数实现;
退出程序。
用户首先进行选择,如果输入正确,则根据选择调用相应的函数,否则提示用户重新进行输入,直到输入正确。
(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.系统评价及展望