面向对象程序设计大作业 2

合集下载

面向对象程序设计作业二

面向对象程序设计作业二

对Win32程序结构的认识:
对消息的处理是我们Win32程序的根本,因而我们就从消息的生命周期来着手讲解, 消息生命周期可以简单的概括成几个过程:
a. 消息产生: Windows 监控所有的具有输入事件硬件设备,当系统收到设备输入事件时,Windows 将对应的事件转成消息,从而消息就产生了;
b. 消息投递: 每个消息都有一个目标窗体接收,而目标窗体应用程序都会有消息队列,当Windows 产生消息后就直接投递到其消息队队中,从而实现了Windows 消息到应用程序的传递;
c. 消息处理: 应用程序自身会不断的从自己的消息队列中获取消息并进行消息转换以及消息分发给Windows,由Windows 回调应用程序的消息处理函数,每一个消息必须被处理,若用户发现自己不关心的消息时并系统去处理,从而实现了用户的行为得到了交互。

吉林大学2020大作业-2面向对象程序设计

吉林大学2020大作业-2面向对象程序设计

吉林大学2020大作业-2面向对象程序设计一、1.类型转换:每个函数都可以强制将一个表达式转换成某种特定数据类型。

自动(隐式)类型转换不会导致数据丢失。

数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。

变量是用来存储值的所在处;它们有名字和数据类型。

变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。

在声明变量时也可指定它的数据类型。

所有变量都具有数据类型,以决定能够存储哪种数据。

2.调用;调用是将程序的执行交给其他的代码段,通常是一个子例程,同时保存必要的信息,从而使被调用段执行完毕后返回到调用点继续执行。

3.用户界面:用户界面(User Interface)是指对软件的人机交互、操作逻辑、界面美观的整体设计。

好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由、充分体现软件的定位和特点。

4.预处理:程序设计语言的预处理的概念:在编译之前进行的处理。

C语言的预处理主要有三个方面的内容:1.宏定义;2.文件包含;3.条件编译。

预处理命令以符号“#”开头。

5.语句;一个语法上自成体系的单位,它由一个词或句法上有关连的一组词构成。

6.图标:图标是图纸标题栏的简称。

图标的作用是表示本张图纸的类别、图名、项目名称、图纸编号等,以便从图纸目录中能迅速查找到所需要的图纸。

7.派生;指在词根上加上派生词缀以构成新词的方法。

8.警告:警告是一种警戒性的纪律制裁方式,也是最轻微的一种制裁方式9.数组:所谓数组,是有序的元素序列。

若将有限个类型相同的变量的集合命名,那么这个名称为数组名。

组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。

10.全局变量:全局变量是编程术语中的一种,源自于变量之分。

变量分为局部与全局,局部变量又可称之为内部变量。

面向对象程序设计实验(二)2024

面向对象程序设计实验(二)2024

面向对象程序设计实验(二)引言概述:本文档旨在介绍面向对象程序设计实验(二)的相关内容。

实验(二)主要涉及面向对象程序设计中的基本概念和实践技巧。

通过本次实验,学生可以进一步巩固对于面向对象程序设计的理解和应用能力。

正文内容:1. 类与对象1.1 定义类和对象的基本概念1.2 区分类和对象的特点和属性1.3 类的成员变量与成员函数的关系1.4 类的继承与派生的用法和作用1.5 类型转换和类型检查的重要性和技巧2. 封装和继承2.1 封装的原则和目的2.2 不同类型的访问控制修饰符的应用与实践2.3 继承的基本概念和实现方法2.4 多态性的应用与实例解析2.5 接口与抽象类的定义和使用3. 异常处理3.1 异常处理的基本原则和作用3.2 异常的分类与处理方式3.3 异常处理的语法和使用方法3.4 异常处理的常见问题和解决策略3.5 异常处理的最佳实践和注意事项4. 面向对象设计的思想和原则4.1 面向对象设计的核心概念和思维方式4.2 SOLID设计原则的介绍和实践应用4.3 设计模式的分类和使用场景4.4 常用设计模式的详细介绍和实例应用4.5 面向对象设计的常见问题和解决策略5. 实践与案例分析5.1 针对实验要求的代码设计与实现5.2 对实验结果的分析和评价5.3 面向对象程序设计思想在实验中的运用和效果5.4 实际项目中的面向对象设计相关问题的解决方法5.5 实验总结和下一步改进计划总结:通过本次面向对象程序设计实验(二),学生能够更好地理解和应用面向对象的基本概念和设计原则,并能够灵活运用相关技巧进行程序开发和问题解决。

实验的实践部分更加加深了对面向对象程序设计的理解和实际应用能力的培养。

这些知识和技能对于学生未来的软件开发和项目管理工作具有重要意义。

NET面向对象程序设计第2次作业-继承多态

NET面向对象程序设计第2次作业-继承多态

1、假设你正着手开发两个软件项目,两个程序中分别包含下面的类:程序一: Airplane,jet engines,wings,Airplane body,passenger seats和cockpit 程序二:person,student,employee,undergraduate,graduate,secretary,cleaner和director哪一个更适合于使用继承?为什么?另一个程序更适合于使用哪一个概念?2、假设一个类 Animal 有一个公有方法Move.如果Dog类为Animal 的派生类,能按mydog.move( );的形式对Dog类的某个形式调用Move方法吗?即使没有在Dog类中指定此方法,还能调用吗?可以3、Animal类中的Move方法头如下所示: Public void Move(),可以在Dog类中覆盖这一方法吗?为什么?4、Animal还包含一个私有实例变量name。

你能从Dog类的定义内部访问name吗?这是优点还是缺点?5、Animal类还包含一个私有函数成员。

你能从Dog类的定义内部调用此函数吗?6、Animal包含另一个方法,其方法头如下:Protected virtual void MoveAdistance(int distance)一位编程同事在派生类Dog中编写了如下的头来覆盖Animal地方法:Public override int MoveAdistance(double distance)此方法头有几个错误,请找出并纠正。

7、你能防止某个类作为一个基类吗?如果能,如何做?8、为什么从派生类的一个构造函数中调用积累构造函数常常有用?9、根据前面的几个问题,Animal类已经形成一个带一个int类型参数的构造函数。

一位程序员同事用一个构造函数实现了Dog类,而构造函数中并没有显示定义任何构造函数初始化器。

这样做为什么会导致编译器错误?10、Animal类还配备了一个复杂的方法用于返回基本动物细胞的新陈代谢水平。

C++ 面向对象作业二

C++ 面向对象作业二

声明一个哺乳动物Mammal类,再由此派生出狗Dog类,声明一个Dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序。

Class Mammal{Public:Mammal(){cout<<”call Mammal”<<endl;}~Mammal(){cout<<delete base class <<endl ;l }}Class Dog:public Mammal{Dog(){};~Dog(){}}定义一个国家基类Country,包含国名、首都、人口等属性,派生出省类Province,增加省会城市、人口数量属性Class Country{Public:Char name[20],Char captal[20],Long int Cperson,Public:Country(){};}Class Provice:public Country{Char city[20];Long int Ppeople;Public:Provice();}定义一个车基类Vehicle,含私有成员speed,weight。

派生出自行车类Bicycle,增加high 成员;汽车类Car,增加seatnum成员。

从Bicycle和Car中派生出摩托车类Motocycle。

Class Vehicle{Int speed;Int weight;}Class Bicycle:public Vehicle{Int high;}Class Car:public Vehicle{Int seatnum;}Class Motocycle:public Bicycle,public Car{}建立一个基类Building ,用来存储一座楼房的层数、房间数以及它的总平方英尺数。

建立派生类Housing,继承Building,并存储下面的内容:卧室和浴室的数量,另外,建立派生类Office,继承Building,并存储灭火器和电话的数目。

奥鹏吉大21年春季《面向对象程序设计》在线作业二_2.doc

奥鹏吉大21年春季《面向对象程序设计》在线作业二_2.doc

1.设 x、 y为已定义的类名,下列声明x类的对象x1的语句中正确的是( )A.static x x1;B.public x x1=new x(int 123);C.y x1;D.xx1=x();【参考答案】: B2.编译并且执行以下代码,会出现什么情况( )。

?public?class?Q{?public?static?void?main(String?argv[]){?int?anar[]=new?int[]{1,2,3};?System.out.println(anar[1]);?}?}A.1B.有错误,数组anar在初始化以前不能正常输出C.2D.有错误,数组的大小没有定义。

【参考答案】: C3.设 x = 1 , y = 2 , z = 3,则表达式 y+=z--/++x 的值是( )A.3B.3.5C.4D.5【参考答案】: A4.给出如下代码: class test{ private int m; public static voidfun() { // some code... } } 如何使成员变量m 被函数fun()直接访问( )。

A.将private int m 改为protected int mB.将private int m 改为 public int mC.将private int m 改为 static int mD.将private int m 改为 int m【参考答案】: C5.类Teacher和Student是类Person的子类; Person p; Teacher t; Student s; //p, t and s are all non-null. if(t instanceof Person) { s = (Student)t; } 最后一句语句的结果是( )。

A.将构造一个Student对象;B.表达式是合法的;C.表达式是错误的; D.编译时正确,但运行时错误。

奥鹏2020年6月福师《面向对象的程序设计》在线作业二.doc

奥鹏2020年6月福师《面向对象的程序设计》在线作业二.doc

1.在UML中,包含关系表示为虚线箭头加()字样。

A.includeB.extendC.associationD.generalization【参考答案】: A2.对象约束语言是一种()语言,它主要用于表示UML模型中施加于模型上的约束。

A.面向对象B.过程化C.形式化D.结构性【参考答案】: C3.瀑布模型由B.M.Boehm于()年首先提出。

A.1960B.1971C.1970D.1988【参考答案】: C4.UML的四层模型体系结构中,元元模型层通常称为()层A.M0B.M1C.M2D.M3【参考答案】: D5.对象约束语言,简称(),它是一种用于施加在指定的模型元素上约束的语言。

A.OCLB.ODLC.DAOD.DDL【参考答案】: A6.RUP的核心工作流中,分为()个核心过程工作流和3个核心支持工作流。

A.4B.5C.6D.7【参考答案】: C7.要表示一个构造型,可以将构造型名称用一对()括起来,然后放置在构造型模型元素名字的邻近。

A.圆括号B.方括号C.尖括号D.无需括号【参考答案】: C8.时序图是以()为序的表示方法,主要用来描述对象之间的时间顺序。

A.空间B.时间C.随机D.线性【参考答案】: B9.在UML中,扩展关系表示为虚线箭头加()字样。

A.includeB.extendC.associationD.generalization【参考答案】: B10.类中属性的可见性主要包括()。

A.公有B.私有C.其它D.受保护【参考答案】: ABD11.UML中的事物可分为以下几类()A.结构事物B.动作事物C.分组事物D.注释事物【参考答案】: ABCD12.组件图中通常包含以下几个元素。

A.组件B.接口C.依赖关系D.关联关系【参考答案】: ABC13.UML中的视图大致分为如下几种()A.用例视图B.逻辑视图C.组件视图D.并发视图E.配置视图【参考答案】: ABCDE14.系统建立模型的过程就将任务划分为(),几个阶段连续的迭代的过程。

面向对象程序设计技术-作业2

面向对象程序设计技术-作业2

作业二一、写出下列程序运后的输出结果1. #include<iostream.h>void SB(char ch){switch(ch){case 'A':case 'a':cout<<"well!";break;case 'B':case 'b':cout<<"good!";break;case 'C':case 'c':cout<<"pass!";break;default:cout<<"bad!";break;} }void main(){char a1='b',a2='C',a3='f';SB(a1);SB(a2);SB('A');cout<<endl; }======== 屏幕输出如下 ======== Xuehao: xxxx name: xxxxgood!pass!well!Press any key to continue_===============================2. #include<iostream.h>#include<stdlib.h>double SD(int a,int b,char op){ double x;switch(op){case '+':x=double(a)+b;break;case '-':x=double(a)-b;break; case '*':x=double(a)*b;break; case '/': if (b) x=double(a)/b;else exit(1);break;default:exit(1); }return x; }void main(){int x=20,y=12;cout<<SD(x,y,'-')<<' ';cout<<SD(x,y,'*')<<' ';cout<<SD(x+y,y-2,'/')<<endl; } ======== 屏幕输出如下 ======== Xuehao: xxxx name: xxxx8 240 3.2Press any key to continue_===============================3. #include<iostream.h>void main(){int s=0;for(int i=1;i<6;i++)s+=i*i;cout<<"s="<<s<<endl; }======== 屏幕输出如下 ======== Xuehao: xxxx name: xxxxs=55Press any key to continue_===============================4. #include <iostream.h>void main(){int s=0;for( int i=1;;i++){if(s>50)break;if(i%3==0)s+=i; }cout<<"i,s="<<i<<","<<s<<endl; } ======== 屏幕输出如下 ======== Xuehao: xxxx name: xxxxi,s=19,63Press any key to continue_===============================5. #include <iostream.h>void main(){int s1=0,s2=0;for(int i=0;i<10;i++)if(i%2)s1+=i;else s2+=i;cout<<s1<<' '<<s2<<endl; }======== 屏幕输出如下 ======== Xuehao: xxxx name: xxxx25 20Press any key to continue_===============================6. #include <iostream.h>void main(){int n=10,y=1;while(n--){y++;++y;}cout<<"y*y="<<y*y<<endl; }======== 屏幕输出如下 ========Xuehao: xxxx name: xxxxy*y=441Press any key to continue_===============================二、写出下列每个函数的功能1. #include <iostream.h>int SA(int a,int b){if(a>b)return 1;elseif(a==b) return 0;else return -1; }功能:判断a和b,如果a>b返回1;a=b返回0;a<b返回-12. #include <iostream.h>int SC(int a,int b,int c){if(a>=b && a>=c) return a;if(b>=a && b>=c) return b;if(c>=a && c>=b) return c; }功能:返回a,b,c三个数中的最大数3. int SE(int n){int x;cin>>x;if(n==1) return x; int m=x;while(--n){cin>>x;m+=x; }return m; }功能:计算n个数的累加和4. double SF(double x,int n){double p=1,s=1;for(int i=1;i<=n;i++){p*=x;s+=p/(i+1); }return s; }功能:计算1+X/2+X2/3…+X n/(n+1) 5. #include <math.h>bool SG(int x){int a=int(sqrt(x));int i=2;while(i<=a){if(x%i==0) break;i++; }if (i<=a) return 0;else return 1; }功能:判断X是否为素数,若是素数返回1,不是素数返回06. float FH(){float x,y=0,n=0;cin>>x;while(x!=-100){n++;y+=x;cin>>x; }if(n==0) return y;else return y/n; }功能:输入N个数,返回N个数的平均值,如果N=0,返回0,当输入值为-100时结束输入开始计算。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象程序设计大作业计算器类完成时间:2013 年 5月25日计算器类1.编程目的设计实现计算器类,能进行整数及实数的加、减、乘、除、平方、开方等基本运算,及能进行二进制,十进制,八进制,十六进制数值之间的转换,以及能进行三角函数的计算。

2.系统简介本程序利用类完成了十进制下的四则运算(加,减,乘,除),可以把十进制转化为二进制、八进制、十六进制,可以进行一些常用的函数运算(比如sin、cos、tan、sqrt等)。

程序设计语言采用Visual C++6.0,程序运行平台Windows 7,程序通过调试运行实现了设计目标。

刚开始时出现主要的运算界面,然后进行选择1-3.选择1,则进行一般运算;选择2,则进行三角函数运算;选择3,则进行进制的转换。

若选择1,则又分为1-7个选择,利用if...else if...else...语句来实现。

若选择1,进行加法运算;选择2,进行减法运算;选择3,进行乘法运算;选择4,进行除法运算;选择5,进行取余运算;选择6,幂运算;选择7,开方运算。

三角函数和进制转换与此类同。

3.编程思路本程序分为三类:(1)实现了十进制下的四则运算(加、减、乘、除),还可以进行平方、开方的运算及幂的运算;(2)实现十进制转换为二进制、八进制、十六进制。

(3)进行三角函数的基本运算。

建立一个文件,该文件包含三个类程序分别为class Trigonometric、class HexBinDecOct、class Calculate且分别对应三角函数运算、进制转换、一般运算,最后是一个主函数。

4总体设计(附类图)编程实现计算器,用类来完成。

首先,编写的是三角函数(sin、cos、tan)的实现类;其次,一般运算(加、减、乘、除、开方、幂)类;最后是,把十进制转换为二进制、八进制、十六进制。

具体程序实现如下图表示:5.关键技术说明面向对象设计方法的核心概念——类,利用类可以实现对数据的封装及隐蔽。

在面向对象程序设计中,程序模块是由类构成的,类是对逻辑上相关的函数与数据的封装,它是对问题的抽象描述。

类成员的访问控制属性包括三种:公有类型(public)、私有类型(privite)、保护类型(protected)。

公有类型成员定义了类的外部接口,公有成员用public 关键字声明,在类外只能访问类的公有成员。

私有成员在关键字privite后面声明,如果私有成员紧接着类名称,则关键字可以省略。

私有成员只能被本类的成员函数访问,来自类外的任何访问都是非法的。

保护类型成员的性质和私有成员的性质相似,其差别在于继承过程中对产生的新类影响不同。

本程序包含公有成员和私有成员,不含保护类成员。

分别为class Trigononetric、class Calculate、class HexBinDecOct6.源代码#include <iostream>#include <cmath>#include <stdlib.h>using namespace std;#define pi 3.14159265/************************************************************/class Trigonometric{//三角函数实现private: double number;//要操作的数char ch2;//选择控制public: void print1();//界面输出void set1(double num)//传值给操作函数{number=num;}};void Trigonometric::print1(){cout<<"\t\t进入三角函数的运算"<<endl;cout<<"\t\t请输入一个弧度数:"<<endl;cin>>number; set1(number);cout<<"\t\t 1.求sin(a)"<<endl;cout<<"\t\t 2.求cos(a)"<<endl;cout<<"\t\t 3.求tan(a)"<<endl;cout<<"\t\t 4.求全部!"<<endl;cin>>ch2;back3:if(ch2=='1')cout<<"sin("<<number<<")="<<sin(number)<<endl;else if(ch2=='2')cout<<"cos("<<number<<")="<<cos(number)<<endl;else if(ch2=='3')cout<<"tan("<<number<<")="<<tan(number)<<endl;else if(ch2=='4'){cout<<"sin("<<number<<")="<<sin(number)<<endl;cout<<"cos("<<number<<")="<<cos(number)<<endl;cout<<"tan("<<number<<")="<<tan(number)<<endl;}else{cout<<"\t\t输入有误!请重新选择:"<<endl;cin>>ch2;goto back3;}}/************************************************************/class HexBinDecOct{//进制转换private: char str2[100];//存储二进制char str8[100];//存储八进制char str16[100];//存储十六进制char ch2;//选择控制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;cout<<"\t\t请输入一个数:"<<endl;cin>>number;set2( number);cout<<"\t\t***********************************"<<endl;cout<<"\t\t * 1.十进制转换为二进制*"<<endl;cout<<"\t\t * 2.十进制转换为八进制*"<<endl;cout<<"\t\t * 3.十进制转换为十六进制*"<<endl;cout<<"\t\t * 4.十进制转换为二、八、十六进制 *"<<endl;cout<<"\t\t *请选择:1-4 *"<<endl;cout<<"\t\t***********************************"<<endl;cin>>ch2;back4:if(ch2=='1')//1.十进制转换为二进制cout<<two(number)<<endl;else if(ch2=='2')//十进制转换为八进制cout<<eight(number)<<endl;else if(ch2=='3')//十进制转换为十六进制cout<<sixteen(number)<<endl;else if(ch2=='4')//十进制转换为二、八、十六进制conversionAll(number);else {cout<<"\t\t输入有误!请重新选择:"<<endl;cin>>ch2;//重新选择goto back4;//重新转换}}char HexBinDecOct::two(int number){int N=number;cout<<"转换为二进制数为:"<<endl;int aa[20];int temp;temp = N;int num;int i=0;while(temp !=0){num = temp%2;aa[i] = num;i++;temp = temp/2;}for(num=i-1;num>=0;num--){cout<<aa[num];}cout<<endl;return 0;}char HexBinDecOct::eight(int number){cout << "请输入一个十进制正整数:"; cout << number << "(10) = ";int a[100];int index = 0;while(number >= 1){a[index] = number%8;index++;number /= 8;}for(int i=index-1; i>=0; i--)cout << a[i];cout << "(8)" << endl;return 0;}char HexBinDecOct::sixteen(int number){cout<<"请输入一个十进制数:"<<endl;char *p;p=itoa(number,str16,10);cout<<"str16="<<str16<<endl;cout<<"p="<<p<<endl; //将整型数n按十六进制转换为字符串并输出p=itoa(number,str16,16);cout<<"转换为十六进制为:"<<str16<<endl;return 0;}void HexBinDecOct::conversionAll(int number){cout<<"请输入一个数字:";cin>>number;char str2[10];char str8[10];char str16[10];itoa(number, str2, 2);itoa(number, str8, 8);itoa(number, str16, 16);cout<<"\t\t********************"<<endl;cout<<"\t\t* 1.转换为二进制 *"<<str2<<endl;cout<<"\t\t* 2.转换为八进制 *"<<str8<<endl;cout<<"\t\t* 3.转换为十六进制*"<<str16<<endl;cout<<"\t\t* 请选择:1-3 *"<<endl;cout<<"\t\t********************"<<endl;}/******************************************************* *****/class Calculate{//一般计算private: double sum;//存储运算结果char ch2;//选择控制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,double num2);//取余double mi(double num1,double num2);//幂double kaifang(double num1);//开方};void Calculate::print3(){cout<<"\t\t请输入两个数:"<<endl;cin>>num1>>num2;set3( num1,num2);cout<<"\t\t*******************"<<endl;cout<<"\t\t* 1.加法运算 *"<<endl;cout<<"\t\t* 2.减法运算 *"<<endl;cout<<"\t\t* 3.乘法运算 *"<<endl;cout<<"\t\t* 4.除法运算 *"<<endl;cout<<"\t\t* 5.取余运算 *"<<endl;cout<<"\t\t* 6.幂运算 *"<<endl;cout<<"\t\t* 7.开方运算 *"<<endl;cout<<"\t\t*******************"<<endl;cout<<"\t\t请输入菜单项(1-8):";cin>>ch2;back2:if(ch2=='1'){// 1.加法运算cout<<"\t\t"<<num1<<'+'<<num2<<'='<<add(num1,num2)<<endl ;}else if(ch2=='2'){// 2.减法运算cout<<"\t\t"<<num1<<'-'<<num2<<'='<<subtract(num1,num2)<<endl;}else if(ch2=='3'){// 3.乘法运算cout<<"\t\t"<<num1<<'*'<<num2<<'='<<multiplication(num1, num2)<<endl;}else if(ch2=='4'){// 4.除法运算cout<<"\t\t"<<num1<<'/'<<num2<<'='<<divide(num1,num2)<<e ndl;}else if(ch2=='5'){// 5.取余运算cout<<'\t\t'<<num1<<'%'<<num2<<'='<<mod(num1,num2)<<endl ;}else if(ch2=='6'){//6.幂运算cout<<'\t\t'<<num1<<'^'<<num2<<'='<<mi(num1,num2)<<endl;}else if(ch2=='7'){//7.开方运算cout<<'\t'<<num1<<'='<<kaifang(num1)<<endl;}else{ cout<<"\t\t输入有误!请重新选择:"<<endl;cin>>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;}double 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,double 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:{do{cout<<"\t\t*****欢迎使用计算器**********"<<endl;cout<<"\t\t*****主菜单**********"<<endl;cout<<"\t\t* *"<<endl;cout<<"\t\t* 1. 基本运算 *"<<endl;cout<<"\t\t* 2. 三角函数 *"<<endl;cout<<"\t\t* 3. 进制转换 *"<<endl;cout<<"\t\t* *"<<endl;cout<<"\t\t* 请选择:1---3 *"<<endl;cout<<"\t\t*********************"<<endl;cin>>ch1; if(ch1=='1'){// 1.基本运算cal.print3();}else if(ch1=='2'){// 2.三角函数tri.print1();}else if(ch1=='3'){// 3.进制转换hex.print2();}else{cout<<"输入有误!"<<endl;goto back1;}cout<<"again?(y/n)"<<endl;cin>>ch3;}while(ch3=='y'||ch3=='Y');};return 0;}7.测试(主界面及各功能模块的运行图及说明)开始运行的界面:(一)、一般运算的界面:(1)加法的界面:(减法类似)(2)运行乘法的界面(除法类似不在列出):(3)幂运算:(4)开方运算:可以从图中看到,当进行开方运算时需输入两个数,但是第二个数没影响,程序运行第一个数且运行正确。

相关文档
最新文档