c++大作业计算器类.docx
- 文档编号:24611770
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:17
- 大小:196.18KB
c++大作业计算器类.docx
《c++大作业计算器类.docx》由会员分享,可在线阅读,更多相关《c++大作业计算器类.docx(17页珍藏版)》请在冰豆网上搜索。
c++大作业计算器类
面向对象程序设计大作业
------计算器类
学院名称信息科学与工程学院
专业班级
学生姓名
学号
指导教师
完成时间:
2013年05月26日
计算器类
1.编程目的
巩固了所学《C++语言程序设计》的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力;掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。
2.系统简介
此计算器的编写应用了类的实现,函数的调用以及类的封装等C++中的基本知识;基本上实现了加减乘除运算,三角函数运算,开平方运算,各种进制之间的转换等;此计算器使用简洁,易于操作。
3.编程思路
(1)因为要实现计算器的相关功能,而且要求计算加减乘除平方基本运算,二进制,十进制,八进制,十六进制之间的转换,三角函的计算,所以要根据情况依次设计;
(2)三角函数运算,因为在库函数中就有三角函数,所以可以直接使用,只不过参数是以弧度制传入的,所以存在这个缺点;
(3)进制转换
只需考虑十进制转换为二进制、八进制、十六进制,其他进制之间的转换没有考虑;
(4)其他运算
在其他运算菜单下设置了常用的几种函数,例如开方、角度与弧度的转换、e底数与自然底数的运算等;
4.总体设计(附类图)
计算器类图
calculate
+number:
double
+ch2:
char
+print1:
void
+set1():
void
+str2[10]:
void
+str8[10]:
void
+str10[10]:
void
+set2(doublenum):
void
+print2:
void
+conversionAll():
void
+sixteen(intnumber):
char
+eight(intnumber):
char
+two(intnumber):
char
+HexBinDecOct:
void
+sum:
double
+ch2:
char
+num1,num2:
double
+set3():
void
+print3():
void
+add():
double
+subtract():
double+multiplication():
double
+divide():
double
+sqrt():
double
+power():
double
+calculate:
void
+ch4:
char
+print4():
void
+set5():
void
+jibenyunsuan:
void
5.关键技术说明
函数类的定义,各种函数的实现等。
6.源代码
这是一个计算器的源程序:
#include
#include
#include
usingnamespacestd;
#definepi3.14159265
/********************************************************/
classTrigonometric
{//三角函数实现
private:
doublenumber;//要操作的数
charch2;//选择控制的数
public:
voidprint1();//界面输出
voidset1(doublenum)//传值给操作函数
{number=num;
}
};
voidTrigonometric:
:
print1()
{//三角函数的菜单
cout<<"\t\t请输入一个弧度数(数):
"< cin>>number; set1(number); cout<<"\t\t1.求sin(a)"< cout<<"\t\t2.求cos(a)"< cout<<"\t\t3.求tan(a)"< cout<<"\t\t4.求asin(a)"< cout<<"\t\t5.求acos(a)"< cout<<"\t\t6.求atan(a)"< cout<<"请选择功能序号: "<<""; cin>>ch2; back3: if(ch2=='1') cout<<"sin("< elseif(ch2=='2') cout<<"cos("< elseif(ch2=='3') cout<<"tan("< elseif(ch2=='4') cout<<"asin("< elseif(ch2=='5') cout<<"acos("< elseif(ch2=='6') cout<<"atan("< else { cout<<"\t\t输入有误! 请重新选择: "< cin>>ch2; gotoback3; } } /********************************************************/ classHexBinDecOct {//进制转换 private: charstr2[10];//存储二进制 charstr8[10];//存储八进制 charstr16[10];//存储十六进制 charch2;//选择控制 intnumber;//要转换的数 public: voidprint2(); voidset2(doublenum) {number=num;} voidconversionAll(intnumber);//全部转换 charsixteen(intnumber);//转换为十六进制 chareight(intnumber);//转换为八进制 chartwo(intnumber);//转换为二进制 }; voidHexBinDecOct: : print2() { cout<<"\t\t请输入一个十进制数: "< cin>>number; set2(number); cout<<"\t\t*1.十进制转换为二进制*"< cout<<"\t\t*2.十进制转换为八进制*"< cout<<"\t\t*3.十进制转换为十六进制*"< cout<<"\t\t*4.十进制转换为二、八、十六进制*"< cout<<"\t\t*请选择相应的功能: "<<""; cin>>ch2; back4: if(ch2=='1')//1.十进制转换为二进制 cout<<"\t\t"< "< elseif(ch2=='2')//十进制转换为八进制 cout<<"\t\t"< "< elseif(ch2=='3')//十进制转换为十六进制 cout<<"\t\t"< "< elseif(ch2=='4')//十进制转换为二、八、十六进制 conversionAll(number); else { cout<<"\t\t输入有误! 请重新选择: "< cin>>ch2;//重新选择 gotoback4;//重新转换 } } charHexBinDecOct: : two(intnumber) { itoa(number,str2,2); return*str2; } charHexBinDecOct: : eight(intnumber) { itoa(number,str8,8); return*str8; } charHexBinDecOct: : sixteen(intnumber) { itoa(number,str16,16); return*str16; } voidHexBinDecOct: : conversionAll(intnumber) { itoa(number,str2,2); itoa(number,str8,8); itoa(number,str16,16); cout<<"\t\t*1.转换为二进制: "< cout<<"\t\t*2.转换为八进制: "< cout<<"\t\t*3.转换为十六进制: "< } /*********************************************************/ classCalculate { private: doublesum;//存储运算结果 charch2;//选择控制 doublenum1,num2;//两个操作数 public: voidset3(doublenum1,doublenum2)//赋值 {num2=num2;num1=num1;} voidprint3(); doubleadd(doublenum1,doublenum2);//加 doublesubtract(doublenum1,doublenum2);//减 doublemultiplication(doublenum1,doublenum2);//乘 doubledivide(doublenum1,doublenum2);//除 doublesqrt(doublenum1);//开方 doublepower(doublenum1,doublenum2);//乘方 }; voidCalculate: : print3() { cout<<"\t\t请输入两个数: "< cin>>num1>>num2; set3(num1,num2); cout<<"\t\t***【菜单选项】***"< cout<<"\t\t*1.加法运算*"< cout<<"\t\t*2.减法运算*"< cout<<"\t\t*3.乘法运算*"< cout<<"\t\t*4.除法运算*"< cout<<"\t\t*5.乘方运算*"< cout<<"\t\t******************"< cout<<"\t\t请输入相应的功能序号: "<<""; cin>>ch2; back2: if(ch2=='1') {//1.加法运算 cout<<"\t\t"< } elseif(ch2=='2') {//2.减法运算 cout<<"\t\t"< } elseif(ch2=='3') {//3.乘法运算 cout<<"\t\t"< } elseif(ch2=='4') {//4.除法运算 cout<<"\t\t"< } elseif(ch2=='5') {//5.乘方运算 cout< } else { cout<<"\t\t输入有误! 请重新选择: "< cin>>ch2; gotoback2; } } doubleCalculate: : add(doublenum1,doublenum2)//实现加法 { returnsum=num1+num2; } doubleCalculate: : subtract(doublenum1,doublenum2)//实现减法 { returnsum=num1-num2; } doubleCalculate: : multiplication(doublenum1,doublenum2)//实现乘法 { returnsum=num1*num2; } doubleCalculate: : power(doublenum1,doublenum2)//实现除法 { returnsum=pow(num1,num2); } doubleCalculate: : divide(doublenum1,doublenum2) { if(num2==0) returnsum=num1/num2; elsereturn0; } classjibenyunsuan { private: doublenumber;//要操作的数 charch4;//选择控制 public: voidprint4();//界面输出 voidset5(doublenum)//传值给操作函数 {number=num;} }; voidjibenyunsuan: : print4() { cout<<"\t\t请输入一个数: "< cin>>number; set5(number); cout<<"\t\t1.求sqrt(a)"< cout<<"\t\t2.求ln(a)"< cout<<"\t\t3.求log10(a)"< cout<<"\t\t4.角度与弧度转换"< cout<<"请选择功能序号: "<<""; cin>>ch4; back5: if(ch4=='1') cout<<"sqrt("< elseif(ch4=='2') { if(number<0) cout<<"输入的数值错误(因为定义域为正数)\n"<<""; else cout<<"log("< elseif(ch4=='3') { if(number<0) cout<<"输入的数值错误(因为定义域为正数)\n"<<""; else cout<<"log10("< } elseif(ch4=='4') cout<<"("< else { cout<<"\t\t输入有误! 请重新选择: "< cin>>ch4; gotoback5; } } /********************************************************/ intmain() { intnum1=0,num2=0,number=0; Trigonometrictri;//三角函数对象 HexBinDecOcthex;//进制转换对象 jibenyunsuanji; Calculatecal;//一般计算对象 charch1,ch3; back1: { do{ cout<<"\t\t***计算器程序测试****"< cout<<"\t\t*****【主菜单】******"< cout<<"\t\t*[1]加减乘除*"< cout<<"\t\t*[2]三角函数*"< cout<<"\t\t*[3]进制转换*"< cout<<"\t\t*[4]其他运算*"< cout<<"\t\t#请选择相应功能的序号: "<<""; cin>>ch1; system("cls"); if(ch1=='1') {//1.基本运算 cal.print3(); } elseif(ch1=='2') {//2.三角函数 tri.print1(); } elseif(ch1=='3') {//3.进制转换 hex.print2(); } elseif(ch1=='4') {//3.进制转换 ji.print4(); } else { cout<<"输入有误! "< gotoback1; } cout<<"again? (y/n)"< cin>>ch3; }while(ch3=='y'||ch3=='Y'); }; return0; } 7.测试(主界面及各功能模块的运行图及说明) (1)欢迎界面 (2)进行加减乘除运算 输入1,选择加减乘除运算,界面如下: 输入1与2,进行加法运算 进行减法运算 进行乘法运算 进行乘方运算 (3)进行三角函数运算 输入3,进行三角函数运算,结果如下: (4)进行进制运算 (5)其他运算 8.系统评价及展望 评价: 操作方便,提供了菜单选项,并给出了足够的选择信息以及提示信息; 展望: 此计算器还有一定的缺点需要改进,例如运算不够合理,运算不全等,还可以进行很大的优化。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 作业 计算器