西安石油大学大二(上)C++面向对象程序设计课件第3章程序
更新时间:2024-03-16 14:47:01 阅读量: 综合文库 文档下载
- 西安石油大学排面推荐度:
- 相关推荐
//Exam3-1.h
#include
class Complex {
private:
float real; //实部 float imag; //虚部 public:
Complex(float x = 0, float y = 0) //构造函数 {
real = x; imag = y; }
~Complex() //析构函数 {}
Complex Add(Complex x) //加 {
Complex z;
z.real = real + x.real; z.imag = imag + x.imag; return z; }
Complex Subtract(Complex x) //减 {
return Complex(real - x.real, imag - x.imag); }
Complex Multiply(Complex x) //乘 {
Complex z;
z.real = (real * x.real - imag * x.imag); z.imag = (real * x.imag + x.real * imag); return z; }
Complex Divide(Complex x) //除 {
Complex z;
float c = 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; return z; } }
void show() //输出 {
cout << \
cout << \ }
}; //注意:分号不能省略
//Exam3-3.cpp
#include \
void main(void) { }
z4 = x.Divide(y); cout << \z4.show();
z3 = x.Multiply(y); cout << \z3.show();
z2 = x.Subtract(y); cout << \z2.show(); z1 = x.Add(y); cout << \z1.show();
Complex x(1, 1), y(2, 2), z1, z2, z3, z4;
//定义对象
//Exam3-5.h
#include
private: };
//成员函数实现部分
Complex Complex::Add(const Complex x) const { }
Complex Complex::Subtract(const Complex x) const //减 { }
Complex Complex::Multiply(const Complex x) const //乘 { }
Complex Complex::Divide(const Complex x) const {
float c = x.real * x.real + x.imag * x.imag; if(c == 0) {
cout << \分母为0错! \
//除
return Complex(real * x.real - imag * x.imag,
real * x.imag + x.real * imag);
return Complex(real - x.real, imag - x.imag); return Complex(real + x.real, imag + x.imag);
//加
float real; float imag;
//实部 //虚部 //造函数
public:
Complex(float x = 0, float y = 0): {}
~Complex() {}
Complex Add(const Complex x) const;
//加 //减 //乘 //除 //输出
Complex Subtract(const Complex x) const; Complex Multiply(const Complex x) const; Complex Divide(const Complex x) const; void show(void) const;
//析构方法
real(x), imag(y)
}
exit(0);
else
return Complex((real * x.real + imag * x.imag) / c,
(x.real * imag - real * x.imag) / c);
}
void Complex::show(void) const
{ cout << \
cout << \
}
void main(void) { Complex x(1, 1), y(2, 2), z1, z2, z3, z4; z1 = x.Add(y); cout << \ z1.show();
z2 = x.Subtract(y); cout << \ z2.show(); z3 = x.Multiply(y); cout << \ z3.show();
z4 = x.Divide(y); cout << \ z4.show();
}
//Date.h
#include
class Date {
private: int month; //月
int day;
//日
//输出
//定义对象
};
int year; //年
public:
Date(int m = 1, int d = 1, int y = 2000): //构造函数1 {} { }
month = d.month; day = d.day; year = d.year;
//构造函数2
Date(Date &d)
month(m), day(d), year(y)
~Date(void) {}
void PrintDate(void) const { }
cout << month << \
//输出
//Exam3-6.cpp #include \
void main(void) { }
today.PrintDate(); someDay.PrintDate();
//打印当前日期 //打印默认值日期 //打印当前日期 //打印默认值日期 //打印默认值日期
Date today(8, 23, 2005); Date someDay;
Date someDay2(today); Date someArrayDay[4];
//使用构造函数1的对象定义 //使用默认值的对象定义 //使用构造函数2的对象定义 //使用默认值的数组对象定义
someDay2.PrintDate();
someArrayDay[0].PrintDate(); someArrayDay[3].PrintDate();
//Exam3-4.cpp
#include
class Array
{
private: double *arr; int size;
public:
Array(int sz = 100); ~Array(void);
};
Array::Array(int sz)
{ if(sz <= 0) { cout << \参数错!\ exit(0);
}
size = sz;
arr = new double[size];
}
Array::~Array(void)
{ delete []arr;
}
void main(void) { Array a(10);
}
//Exam3-14.cpp
#include
class Employee
{
private: char name[30];
float salary;
//Array类
//数组指针 //数组个数 //构造函数
//析构函数
//构造函数
//动态申请
//析构函数
//动态释放
//Employee类
//姓名 //薪水
};
static float allSalary;
//薪水总和,static成员变量 //构造函数
public:
Employee(char *n, float s) { }
~Employee(void) { }
static float GetAllSalary(void)
return allSalary;
//输出薪水总和
allSalary = allSalary - salary;
//析构函数
strcpy(name, n); salary = s;
allSalary = allSalary + salary;
{
}
float Employee::allSalary = 0;
void main(void) {
delete e2; delete e1; float all;
//Static成员变量赋初值
Employee *e1 = new Employee(\张三\all = Employee::GetAllSalary();
cout << \Employee *e2 = new Employee(\王四\all = Employee::GetAllSalary();
cout << \Employee *e3 = new Employee(\李五\all = Employee::GetAllSalary();
cout << \
all = Employee::GetAllSalary();
cout << \
all = Employee::GetAllSalary();
cout << \
}
delete e3;
all = Employee::GetAllSalary();
cout << \
【例3.1】 设计一个简单的银行贷记卡系统。 设计要求:
(1)客户余额的输出采用类似3元3角1分这样的形式。
(2)允许客户存款、取款和转账,并允许客户取款时透支,即允许客户欠款。 (3)设计一个主程序进行基本情况的演示。
设计分析:银行贷记卡是一种允许客户透支的新的银行业务。
银行贷记卡客户的操作允许存款、取款、转账和输出,并允许取款时透支。因此,银行贷记卡类应该有客户账号、姓名和余额成员变量;应该有存款、取款、转账和输出成员函数。
系统要求客户余额的输出采用类似3元3角1分这样的形式,这需要特殊处理,因此,应该把贷记卡类里的成员变量余额设计成一个余额类。余额类应该有余额成员变量;应该有加款、减款和输出成员函数。
贷记卡类和余额类之间是一种整体—部分模式(或称包含关系),即余额类是组成贷记卡类的一部分。
根据以上对银行贷记卡问题的设计分析,可以得到如图3.4所示的对象模型图。
贷记卡帐号姓名余额存款取款转帐输出余额余额加款减款输出 图3.2 银行贷记卡问题的对象模型图
余额类和贷记卡类设计如下:
//Account.h
#include
class Money {
private:
public:
//余额
float amount;
//余额类Money
};
Money(float a = 0): amount(a) {} ~Money() {}
void Add(const float x); void Sub(const float x); void Print(void) const;
//构造函数
//析构函数
//增加 //减少
void Money::Add(const float x) { }
void Money::Sub(const float x) { }
void Money::Print(void) const { }
int yuan = int(temp); cout << yuan << \元\float temp = amount; if(amount >= 0 ) { } else { }
cout << \欠款:\temp = -temp; cout << \余额:\
amount = amount - x; amount = amount + x;
//增加
//减少
//输出
int jiao = int((temp - yuan) * 10); cout << jiao << \角\
int fen = int(ceil(temp * 100 - yuan * 100.0 - jiao * 10.0)); cout << fen << \分\
class Account {
private: };
~Account() {}
//贷记卡类Account
long accountNo; char name[30]; Money remains;
//账号 //姓名 //余额 //构造函数
public:
Account(long a, char *n, Money r): { }
//析构函数
strcpy(name, n);
accountNo(a), remains(r)
void Add(const float x);
//存款 //取款 //输出
void Sub(const float x); void Print(void) const;
void transfer(Account &a, const float x); //转账
void Account::Add(const float x) { }
void Account::Sub(const float x) { }
remains.Sub(x); remains.Add(x);
//存款
//取款
void Account::transfer(Account &a, const float x) //转账 { }
void Account::Print(void) const { }
cout << \姓名:\cout << \账户:\remains.Print();
//输出
remains.Sub(x);
//当前对象余额减少 //对象a余额增加
a.remains.Add(x);
测试主函数设计如下:
//Exam3-16.cpp #include \
void main(void) { Account a1(100000, \张三\Account a2(100001, \李四\Account a3(100002, \王五\
//包含Account.h文件
a1.transfer(a2, 100); a2.Add(50); a3.Sub(100);
a1.Print();
a2.Print(); a3.Print();
}
程序运行结果如下:
姓名:张三 账户:100000 欠款:96元6角10分 姓名:李四 账户:100001 余额:190元4角2分 姓名:王五 账户:100002 欠款:600元5角0分
//客户a1转账给客户a2 //客户a2存款 //客户a3取款
//输出客户a1
测试主函数设计如下:
//Exam3-16.cpp #include \
void main(void) { Account a1(100000, \张三\Account a2(100001, \李四\Account a3(100002, \王五\
//包含Account.h文件
a1.transfer(a2, 100); a2.Add(50); a3.Sub(100);
a1.Print();
a2.Print(); a3.Print();
}
程序运行结果如下:
姓名:张三 账户:100000 欠款:96元6角10分 姓名:李四 账户:100001 余额:190元4角2分 姓名:王五 账户:100002 欠款:600元5角0分
//客户a1转账给客户a2 //客户a2存款 //客户a3取款
//输出客户a1
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 石油大学
- C++
- 西安
- 大二
- 程序设计
- 课件
- 面向
- 对象
- 程序
- 是否应当推迟法定退休年龄 反方一辩立论稿
- 11月6日隐患排查整改方案
- 松溪一中2013届高考语文复习即时测古今异义词答案
- 毕业论文日志l
- 走向海洋观后感
- 党纪法规和德廉知识学习测试题判断题解析(1)资料
- 南京大学《认识地球》题目大全
- 国有大型钢企管理问题与成本控制
- 计算机网络课程设计--中国石油大学校园网设计(finish)
- 山东省济宁市2014年中考数学试题(word版,含答案)
- 北航14秋《劳动法》在线作业二答案
- 空巢老人的生活现状与分析
- 中学教育学考点与要点归纳
- 精心设计课堂练习、努力提高课堂实效
- 2015春七年级数学下册 7.2《一元一次不等式》教案3(沪科版)
- 带答案的C语言
- 防汛保安工作自查报告
- 2018年学校综合实践活动课程实施方案
- 有机化学试卷及答案
- 我国东部深部找矿方向、找矿思路与勘查技术 - 图文