《面向对象程序设计大作业 2.pdf》由会员分享,可在线阅读,更多相关《面向对象程序设计大作业 2.pdf(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象程序设计大作业面向对象程序设计大作业计算器类完成时间:2013 年 5 月 25 日计算器类计算器类1.编程目的设计实现计算器类,能进行整数及实数的加、减、乘、除、平方、开方等基本运算,及能进行二进制,十进制,八进制,十六进制数值之间的转换,以及能进行三角函数的计算。2.系统简介本程序利用类完成了十进制下的四则运算(加,减,乘,除),可以把十进制转化为二进制、八进制、十六进制,可以进行一些常用的函数运算(比如sin、cos、tan、sqrt 等)。程序设计语言采用 Visual C+6.0,程序运行平台 Windows7,程序通过调试运行实现了设计目标。刚开始时出现主要的运算界面,然后
2、进行选择1-3.选择1,则进行一般运算;选择2,则进行三角函数运算;选择3,则进行进制的转换。若选择1,则又分为1-7个选择,利用 if.else if.else.语句来实现。若选择1,进行加法运算;选择2,进行减法运算;选择3,进行乘法运算;选择4,进行除法运算;选择5,进行取余运算;选择6,幂运算;选择7,开方运算。三角函数和进制转换与此类同。3.编程思路本程序分为三类:(1)实现了十进制下的四则运算(加、减、乘、除),还可以进行平方、开方的运算及幂的运算;(2)实现十进制转换为二进制、八进制、十六进制。(3)进行三角函数的基本运算。建立一个文件,该文件包含三个类程序分别为 classTr
3、igonometric、classHexBinDecOct、class Calculate 且分别对应三角函数运算、进制转换、一般运算,最后是一个主函数。4 总体设计(附类图)编程实现计算器,用类来完成。首先,编写的是三角函数(sin、cos、tan)的实现类;其次,一般运算(加、减、乘、除、开方、幂)类;最后是,把十进制转换为二进制、八进制、十六进制。具体程序实现如下图表示:计算器类 class一般运算 class calculate三角函数 class Trigonometric进制转换 class HexBinDecOct幂运算 class calculate mi+sum():doub
4、le一般运算类 class Calculate-num1:double加法运算 class calculate add+sun():double-num2:double+getnum1():double+set3num1():void+getnum2():double+set3num2():void+sum():double减法运 class calculate subtract+sum():double乘法运算 class calculate mulitiplicat+sum():double开方法运算 class calculate kaifang+sum():double除法运算 cla
5、ss calculate divide+sum():double取余法运算class calculate mod+sum():double三角函数 class Trigonometric-number:double+getnumber:double+set1():void+Sin():double+cos():double+tan():double进制转换 classHexBinDecOct-str2100:char-str8100:char-str16100:char-number:int+getnumber():int+set3():void十进制转换为二进制+two():char十进制转
6、换为八进制+eight():char5.关键技术说明十进制转换为十六进制+sixteen():char面向对象设计方法的核心概念类,利用类可以实现对数据的封装及隐蔽。在面向对象程序设计中,程序模块是由类构成的,类是对逻辑上相关的函数与数据的封装,它是对问题的抽象描述。类成员的访问控制属性包括三种:公有类型(public)、私有类型(privite)、保护类型(protected)。公有类型成员定义了类的外部接口,公有成员用 public关键字声明,在类外只能访问类的公有成员。私有成员在关键字 privite 后面声明,如果私有成员紧接着类名称,则关键字可以省略。私有成员只能被本类的成员函数访问
7、,来自类外的任何访问都是非法的。保护类型成员的性质和私有成员的性质相似,其差别在于继承过程中对产生的新类影响不同。本程序包含公有成员和私有成员,不含保护类成员。分别为 classTrigononetric、class Calculate、class HexBinDecOct6.源代码#include#include#include using namespace std;#define pi 3.14159265/*/class Trigonometric/三角函数实现private:double number;/要操作的数 char ch2;/选择控制public:void print1()
8、;/界面输出void set1(double num)/传值给操作函数number=num;void Trigonometric:print1()couttt 进入三角函数的运算endl;couttt 请输入一个弧度数:number;set1(number);couttt 1.求 sin(a)endl;couttt 2.求 cos(a)endl;couttt 3.求 tan(a)endl;couttt 4.求全部!ch2;back3:if(ch2=1)coutsin(number)=sin(number)endl;else if(ch2=2)coutcos(number)=cos(number
9、)endl;else if(ch2=3)couttan(number)=tan(number)endl;else if(ch2=4)coutsin(number)=sin(number)endl;coutcos(number)=cos(number)endl;couttan(number)=tan(number)endl;elsecouttt 输入有误!请重新选择:ch2;goto back3;/*/class HexBinDecOct/进制转换private:char str2100;/存储二进制char str8100;/存储八进制char str16100;/存储十六进制char ch2
10、;/选择控制int number;/要转换的十进制数public:void print2();void set2(double num)number=num;void conversionAll(int number);/全部转换char sixteen(int number);/转换为十六进制char eight(int number);/转换为八进制 char two(int number);/转换为二进制;void HexBinDecOct:print2()cout欢迎使用进制转换:endl;couttt 请输入一个数:number;set2(number);couttt*endl;co
11、uttt*1.十进制转换为二进制*endl;couttt*2.十进制转换为八进制*endl;couttt*3.十 进 制 转 换 为 十 六 进 制*endl;couttt*4.十进制转换为二、八、十六进制 *endl;couttt*endl;couttt*ch2;back4:if(ch2=1)/1.十进制转换为二进制couttwo(number)endl;else if(ch2=2)/十进制转换为八进制couteight(number)endl;*请选择:1-4else if(ch2=3)/十进制转换为十六进制coutsixteen(number)endl;else if(ch2=4)/十
12、进 制 转 换 为 二、八、十 六 进 制conversionAll(number);else coutch2;/重新选择goto back4;/重新转换char HexBinDecOct:two(int number)int N=number;cout转换为二进制数为:endl;int aa20;int temp;temp=N;int num;=0;num-)coutaanum;coutendl;return 0;char HexBinDecOct:eight(int number)cout 请输入一个十进制正整数:;cout number=1)aindex=number%8;index+;
13、number/=8;for(int i=index-1;i=0;i-)cout ai;cout (8)endl;return 0;char HexBinDecOct:sixteen(int number)cout请输入一个十进制数:endl;char*p;p=itoa(number,str16,10);coutstr16=str16endl;coutp=pendl;/将整型数 n 按十六进制转换为字符串并输出 p=itoa(number,str16,16);cout转换为十六进制为:str16endl;return 0;void HexBinDecOct:conversionAll(int n
14、umber)coutnumber;char str210;char str810;char str1610;itoa(number,str2,2);itoa(number,str8,8);itoa(number,str16,16);couttt*endl;couttt*1.转换为二进制 *str2endl;couttt*2.转换为八进制 *str8endl;couttt*3.转换为十六进制*str16endl;couttt*请选择:1-3 *endl;couttt*endl;/*/class Calculate/一般计算private:double sum;/存储运算结果 char ch2;/
15、选择控制 double num1,num2;/两个操作数public:void set3(double num1,double num2)/赋值num2=num2;num1=num1;void print3();double add(double num1,double num2);/加double subtract(double num1,double num2);/减double multiplication(double num1,double num2);/乘double divide(double num1,double num2);/除double mod(double num1,
16、double num2);/取余double mi(double num1,double num2);/幂double kaifang(double num1);/开方;void Calculate:print3()couttt 请输入两个数:num1num2;set3(num1,num2);couttt*endl;couttt*1.加法运算 *endl;couttt*2.减法运算 *endl;couttt*3.乘法运算 *endl;couttt*4.除法运算 *endl;couttt*5.取余运算 *endl;couttt*6.幂运算 *endl;couttt*7.开方运算 *endl;co
17、uttt*endl;coutch2;back2:if(ch2=1)/1.加法运算coutttnum1+num2=add(num1,num2)endl;else if(ch2=2)/2.减法运算coutttnum1-num2=subtract(num1,num2)endl;else if(ch2=3)/3.乘法运算coutttnum1*num2=multiplication(num1,num2)endl;else if(ch2=4)/4.除法运算coutttnum1/num2=divide(num1,num2)endl;else if(ch2=5)/5.取余运算coutttnum1%num2=m
18、od(num1,num2)endl;else if(ch2=6)/6.幂运算coutttnum1num2=mi(num1,num2)endl;else if(ch2=7)/7.开方运算couttnum1=kaifang(num1)endl;else couttt 输入有误!请重新选择:ch2;goto back2;double Calculate:add(double num1,double num2)return sum=num1+num2;double Calculate:subtract(double num1,double num2)return sum=num1-num2;doubl
19、e Calculate:multiplication(double num1,double num2)return sum=num1*num2;double Calculate:divide(double num1,double num2)if(num2!=0)return sum=num1/num2;elsereturn 0;double Calculate:mod(double num1,double num2)if(num2!=0)return sum=(int)num1%(int)num2;elsereturn 0;double Calculate:mi(double num1,dou
20、ble num2)if(num2=0)return sum=1;elsereturn sum=pow(num1,num2);double Calculate:kaifang(double num1)if(num1=0)return sum=sqrt(num1);elsereturn 0;/*/int main()/int num1=0,num2=0,number=0;Trigonometric tri;/三角函数对象HexBinDecOct hex;/进制转换对象Calculate cal;/一般计算对象char ch1,ch3;back1:docouttt*欢迎使用计算器*endl;cout
21、tt*主菜单*endl;couttt*endl;couttt*1.基本运算 *endl;couttt*2.三角函数 *endl;couttt*3.进制转换 *endl;couttt*endl;couttt*请选择:1-3 *endl;couttt*ch1;if(ch1=1)/1.基本运算cal.print3();else if(ch1=2)/2.三角函数tri.print1();else if(ch1=3)/3.进制转换hex.print2();elsecout输入有误!endl;goto back1;coutagain?(y/n)ch3;while(ch3=y|ch3=Y);return 0
22、;7.测试(主界面及各功能模块的运行图及说明)开始运行的界面:(一)、一般运算的界面:(1)加法的界面:(减法类似)(2)运行乘法的界面(除法类似不在列出):(3)幂运算:(4)开方运算:可以从图中看到,当进行开方运算时需输入两个数,但是第二个数没影响,程序运行第一个数且运行正确。(二)、三角函数的运算界面:(以 sin 函数为例)(三)、进制的转换界面:(1)、十进制转换为二进制(3)十进制转换为八进制:(3)十进制转换为十六进制:(4)十进制转换为二进制、八进制、十六进制从上述图中可以看出 12 转换为二进制、八进制、十六进制分别为 1100、14、c。进制转换程序第四步可以看做前三步的检验。8.系统评价及展望优点:该系统比较完善的完成了题目要求,可以进行四则运算,平方、开方、幂运算,三角函数基本运算及进制的转换。程序一目了然,容易理解。缺点:程序不能进行四则混合运算,三角函数的混合运算及进制之间的相互转换。展望:运用 c+编写程序能够使程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强,对于编制、设计和调试一些大型的软件尤为重要。本程序还可以增加一些函数的运算,例如三角函数的混合运算、对数函数及进制的相互转换。