西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx

上传人:b****1 文档编号:13879034 上传时间:2023-06-18 格式:DOCX 页数:16 大小:27.21KB
下载 相关 举报
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第1页
第1页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第2页
第2页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第3页
第3页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第4页
第4页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第5页
第5页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第6页
第6页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第7页
第7页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第8页
第8页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第9页
第9页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第10页
第10页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第11页
第11页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第12页
第12页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第13页
第13页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第14页
第14页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第15页
第15页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx

《西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx》由会员分享,可在线阅读,更多相关《西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx(16页珍藏版)》请在冰点文库上搜索。

西安石油大学大二上C++面向对象程序设计课件第3章程序1.docx

西安石油大学大二上C++面向对象程序设计课件第3章程序1

//Exam3-1.h

#include

#include

classComplex

{

private:

floatreal;//实部

floatimag;//虚部

public:

Complex(floatx=0,floaty=0)//构造函数

{

real=x;

imag=y;

}

~Complex()//析构函数

{}

ComplexAdd(Complexx)//加

{

Complexz;

z.real=real+x.real;

z.imag=imag+x.imag;

returnz;

}

ComplexSubtract(Complexx)//减

{

returnComplex(real-x.real,imag-x.imag);

}

ComplexMultiply(Complexx)//乘

{

Complexz;

z.real=(real*x.real-imag*x.imag);

z.imag=(real*x.imag+x.real*imag);

returnz;

}

ComplexDivide(Complexx)//除

{

Complexz;

floatc=x.real*x.real+x.imag*x.imag;

if(c==0)

{

cout<<"分母为0错!

";

exit(0);

}

else

{

z.real=(real*x.real+imag*x.imag)/c;

z.imag=(x.real*imag-real*x.imag)/c;

returnz;

}

}

voidshow()//输出

{

cout<<"realis"<

cout<<"imagis"<

}

};//注意:

分号不能省略

 

//Exam3-3.cpp

#include"Exam3-1.h"

voidmain(void)

{

Complexx(1,1),y(2,2),z1,z2,z3,z4;//定义对象

z1=x.Add(y);

cout<<"z1is:

";

z1.show();

z2=x.Subtract(y);

cout<<"z2is:

";

z2.show();

z3=x.Multiply(y);

cout<<"z3is:

";

z3.show();

z4=x.Divide(y);

cout<<"z4is:

";

z4.show();

}

 

//Exam3-5.h

#include

#include

classComplex

{

private:

floatreal;//实部

floatimag;//虚部

public:

Complex(floatx=0,floaty=0):

//造函数

real(x),imag(y)

{}

~Complex()//析构方法

{}

ComplexAdd(constComplexx)const;//加

ComplexSubtract(constComplexx)const;//减

ComplexMultiply(constComplexx)const;//乘

ComplexDivide(constComplexx)const;//除

voidshow(void)const;//输出

};

//成员函数实现部分

ComplexComplex:

:

Add(constComplexx)const//加

{

returnComplex(real+x.real,imag+x.imag);

}

ComplexComplex:

:

Subtract(constComplexx)const//减

{

returnComplex(real-x.real,imag-x.imag);

}

ComplexComplex:

:

Multiply(constComplexx)const//乘

{

returnComplex(real*x.real-imag*x.imag,

real*x.imag+x.real*imag);

}

ComplexComplex:

:

Divide(constComplexx)const//除

{

floatc=x.real*x.real+x.imag*x.imag;

if(c==0)

{

cout<<"分母为0错!

";

exit(0);

}

else

returnComplex((real*x.real+imag*x.imag)/c,

(x.real*imag-real*x.imag)/c);

}

voidComplex:

:

show(void)const//输出

{

cout<<"realis"<

cout<<"imagis"<

}

voidmain(void)

{

Complexx(1,1),y(2,2),z1,z2,z3,z4;//定义对象

z1=x.Add(y);

cout<<"z1is:

";

z1.show();

z2=x.Subtract(y);

cout<<"z2is:

";

z2.show();

z3=x.Multiply(y);

cout<<"z3is:

";

z3.show();

z4=x.Divide(y);

cout<<"z4is:

";

z4.show();

}

 

//Date.h

#include

classDate

{

private:

intmonth;//月

intday;//日

intyear;//年

public:

Date(intm=1,intd=1,inty=2000):

//构造函数1

month(m),day(d),year(y)

{}

Date(Date&d)//构造函数2

{

month=d.month;

day=d.day;

year=d.year;

}

~Date(void)

{}

voidPrintDate(void)const//输出

{

cout<

}

};

//Exam3-6.cpp

#include"Date.h"

voidmain(void)

{

Datetoday(8,23,2005);//使用构造函数1的对象定义

DatesomeDay;//使用默认值的对象定义

DatesomeDay2(today);//使用构造函数2的对象定义

DatesomeArrayDay[4];//使用默认值的数组对象定义

today.PrintDate();//打印当前日期

someDay.PrintDate();//打印默认值日期

someDay2.PrintDate();//打印当前日期

someArrayDay[0].PrintDate();//打印默认值日期

someArrayDay[3].PrintDate();//打印默认值日期

}

 

//Exam3-4.cpp

#include

#include

classArray//Array类

{

private:

double*arr;//数组指针

intsize;//数组个数

public:

Array(intsz=100);//构造函数

~Array(void);//析构函数

};

Array:

:

Array(intsz)//构造函数

{

if(sz<=0)

{

cout<<"参数错!

"<

exit(0);

}

size=sz;

arr=newdouble[size];//动态申请

}

Array:

:

~Array(void)//析构函数

{

delete[]arr;//动态释放

}

voidmain(void)

{

Arraya(10);

}

 

//Exam3-14.cpp

#include

#include

classEmployee//Employee类

{

private:

charname[30];//姓名

floatsalary;//薪水

staticfloatallSalary;//薪水总和,static成员变量

public:

Employee(char*n,floats)//构造函数

{

strcpy(name,n);

salary=s;

allSalary=allSalary+salary;

}

~Employee(void)//析构函数

{

allSalary=allSalary-salary;

}

staticfloatGetAllSalary(void)//输出薪水总和

{

returnallSalary;

}

};

floatEmployee:

:

allSalary=0;//Static成员变量赋初值

voidmain(void)

{

floatall;

Employee*e1=newEmployee("张三",100);

all=Employee:

:

GetAllSalary();

cout<<"AllSalary="<

Employee*e2=newEmployee("王四",200);

all=Employee:

:

GetAllSalary();

cout<<"AllSalary="<

Employee*e3=newEmployee("李五",300);

all=Employee:

:

GetAllSalary();

cout<<"AllSalary="<

deletee1;

all=Employee:

:

GetAllSalary();

cout<<"AllSalary="<

deletee2;

all=Employee:

:

GetAllSalary();

cout<<"AllSalary="<

deletee3;

all=Employee:

:

GetAllSalary();

cout<<"AllSalary="<

}

 

【例3.1】设计一个简单的银行贷记卡系统。

设计要求:

(1)客户余额的输出采用类似3元3角1分这样的形式。

(2)允许客户存款、取款和转账,并允许客户取款时透支,即允许客户欠款。

(3)设计一个主程序进行基本情况的演示。

设计分析:

银行贷记卡是一种允许客户透支的新的银行业务。

银行贷记卡客户的操作允许存款、取款、转账和输出,并允许取款时透支。

因此,银行贷记卡类应该有客户账号、姓名和余额成员变量;应该有存款、取款、转账和输出成员函数。

系统要求客户余额的输出采用类似3元3角1分这样的形式,这需要特殊处理,因此,应该把贷记卡类里的成员变量余额设计成一个余额类。

余额类应该有余额成员变量;应该有加款、减款和输出成员函数。

贷记卡类和余额类之间是一种整体—部分模式(或称包含关系),即余额类是组成贷记卡类的一部分。

根据以上对银行贷记卡问题的设计分析,可以得到如图3.4所示的对象模型图。

图3.2银行贷记卡问题的对象模型图

余额类和贷记卡类设计如下:

//Account.h

#include

#include

#include

classMoney//余额类Money

{

private:

floatamount;//余额

public:

Money(floata=0):

amount(a)//构造函数

{}

~Money()//析构函数

{}

voidAdd(constfloatx);//增加

voidSub(constfloatx);//减少

voidPrint(void)const;

};

voidMoney:

:

Add(constfloatx)//增加

{

amount=amount+x;

}

voidMoney:

:

Sub(constfloatx)//减少

{

amount=amount-x;

}

voidMoney:

:

Print(void)const//输出

{

floattemp=amount;

if(amount>=0)

{

cout<<"余额:

";

}

else

{

cout<<"欠款:

";

temp=-temp;

}

intyuan=int(temp);

cout<

intjiao=int((temp-yuan)*10);

cout<

intfen=int(ceil(temp*100-yuan*100.0-jiao*10.0));

cout<

}

classAccount//贷记卡类Account

{

private:

longaccountNo;//账号

charname[30];//姓名

Moneyremains;//余额

public:

Account(longa,char*n,Moneyr):

//构造函数

accountNo(a),remains(r)

{

strcpy(name,n);

}

~Account()//析构函数

{}

voidAdd(constfloatx);//存款

voidSub(constfloatx);//取款

voidtransfer(Account&a,constfloatx);//转账

voidPrint(void)const;//输出

};

voidAccount:

:

Add(constfloatx)//存款

{

remains.Add(x);

}

voidAccount:

:

Sub(constfloatx)//取款

{

remains.Sub(x);

}

voidAccount:

:

transfer(Account&a,constfloatx)//转账

{

remains.Sub(x);//当前对象余额减少

a.remains.Add(x);//对象a余额增加

}

voidAccount:

:

Print(void)const//输出

{

cout<<"姓名:

"<

cout<<"账户:

"<

remains.Print();

}

测试主函数设计如下:

//Exam3-16.cpp

#include"Account.h"//包含Account.h文件

voidmain(void)

{

Accounta1(100000,"张三",Money(3.31));

Accounta2(100001,"李四",Money(40.42));

Accounta3(100002,"王五",Money(-500.50));

a1.transfer(a2,100);//客户a1转账给客户a2

a2.Add(50);//客户a2存款

a3.Sub(100);//客户a3取款

a1.Print();//输出客户a1

a2.Print();

a3.Print();

}

程序运行结果如下:

姓名:

张三

账户:

100000

欠款:

96元6角10分

姓名:

李四

账户:

100001

余额:

190元4角2分

姓名:

王五

账户:

100002

欠款:

600元5角0分

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2