C++类的设计编程示例

embedded/2024/10/21 11:26:48/

一、银行账户类

【问题描述】

定义银行账户BankAccount类。

私有数据成员:余额balance(整型)。

公有成员方法:

无参构造方法BankAccount():将账户余额初始化为0;

带参构造方法BankAccount(int m):将账户余额初始化为指定的参数。

int getbalance() 方法:返回账户余额。

void withdraw(int m) 取款方法:从账户余额中提取m指定的款额,如果余额不足,给出” 余额不足”。

void deposit(int m) 存款方法:将m指定的款项存到账户。

在main方法中构造银行账户,对其进行存取款操作。

其中操作类型类型为d表示存款,w表示取款,每次操作后打印账户余额。

【输入形式】

账户余额

存取款操作数

操作类型 金额
【输出形式】

操作后的账户余额

#include <iostream>
using namespace std;// 定义一个名为BankAccount的类
class BankAccount {
private:int balance; // 私有成员变量,用于存储余额public:// 默认构造函数,将余额初始化为0BankAccount() {balance = 0;}// 带参数的构造函数,将余额初始化为给定的金额BankAccount(int m) {balance = m;}// 公有成员函数,用于获取当前余额int getbalance() {return balance;}// 公有成员函数,用于从账户中取款void withdraw(int m) {if (balance < m) { // 检查余额是否足够进行取款cout << "余额不足。"; // 如果余额不足,则显示错误消息} else {balance -= m; // 如果余额足够,则从余额中减去取款金额}cout << "余额:" << balance << endl; // 显示更新后的余额}// 公有成员函数,用于向账户中存款void deposit(int m) {balance += m; // 将存款金额加到余额中cout << "余额:" << balance << endl; // 显示更新后的余额}
};// 主函数
int main() {int initialBalance, numOps;cin >> initialBalance >> numOps; // 输入初始余额和操作次数BankAccount account(initialBalance); // 创建一个具有初始余额的BankAccount对象char opType;int amount;// 循环执行操作for (int i = 0; i < numOps; i++) {cin >> opType >> amount; // 输入操作类型和金额// 根据操作类型执行相应的操作if (opType == 'w') { // 如果操作类型是取款account.withdraw(amount); // 调用withdraw方法进行取款} else if (opType == 'd') { // 如果操作类型是存款account.deposit(amount); // 调用deposit方法进行存款}}return 0;
}

二、日期时间类

【问题描述】

设计并实现一个日期类,可以:
日期是由日期和时间组成的一个对象。
日期设定(包括年月日)、时间设定(包括时分秒);
日期时间设定(包括年月日时分秒);
利用重载实现键盘输入的数据设定日期时间;
输出日期(格式:yyyy-mm-dd hh:nn:ss)
写main函数应用这个类。

【输入形式】

2021 3 23 9 14 2
【输出形式】

2021-03-23 09:14:02

#include <iostream>
#include <iomanip> // 引入iomanip头文件,用于格式化输出using namespace std;// 定义一个DateTime类
class DateTime {
private:int year; // 年int month; // 月int day; // 日int hour; // 时int minute; // 分int second; // 秒public:// 设置日期void setDate(int y, int m, int d) {year = y;month = m;day = d;}// 设置时间void setTime(int h, int min, int sec) {hour = h;minute = min;second = sec;}// 设置日期和时间void setDateTime(int y, int m, int d, int h, int min, int sec) {year = y;month = m;day = d;hour = h;minute = min;second = sec;}// 从输入中设置日期和时间void setDateTimeFromInput() {cin >> year >> month >> day >> hour >> minute >> second; // 输入年、月、日、时、分、秒}// 输出日期和时间void printDateTime() {cout << setfill('0') << setw(4) << year << "-" // 格式化输出年份<< setw(2) << setfill('0') << month << "-" // 格式化输出月份<< setw(2) << setfill('0') << day << " " // 格式化输出日期<< setw(2) << setfill('0') << hour << ":" // 格式化输出小时<< setw(2) << setfill('0') << minute << ":" // 格式化输出分钟<< setw(2) << setfill('0') << second << endl; // 格式化输出秒数}
};// 主函数
int main() {DateTime dt; // 创建DateTime对象dt.setDateTimeFromInput(); // 从输入设置日期和时间dt.printDateTime(); // 输出日期和时间return 0;
}

在C++中,setw和setfill是iomanip库中的函数,用于格式化输出。这些函数可以用于设置字段宽度和填充字符,以便在输出时对齐和美化输出结果。

  • setw(n)函数设置字段宽度为n。它影响后续输出操作的字段宽度,使得输出的结果占据指定的字符数。如果输出的内容不够宽度n,将会用空格填充到指定的宽度。

  • setfill(c)函数设置填充字符为c。它指定了在宽度设置后,输出结果不足指定宽度时所使用的填充字符。默认情况下,填充字符是空格。

三、矩形类

【问题描述】

编写程序求长方形的周长和面积

#include<iostream>
using namespace std;// 定义矩形类 Rectangle
class Rectangle                           
{
public:Rectangle(void); // 默认构造函数声明Rectangle(float length, float width);  // 带参数的构造函数声明~Rectangle(void); // 析构函数声明float getArea(); // 计算面积的成员函数声明float getGirth(); // 计算周长的成员函数声明
private:float mLength; // 长度私有成员变量float mWidth; // 宽度私有成员变量
};// 默认构造函数定义
Rectangle::Rectangle(void)
{mLength = 0; // 初始化长度为0mWidth = 0; // 初始化宽度为0
}// 带参数的构造函数定义
Rectangle::Rectangle(float length, float width)
{mLength = length; // 初始化长度为给定值mWidth = width; // 初始化宽度为给定值
}// 析构函数定义
Rectangle::~Rectangle(void)
{
}// 计算面积的成员函数定义
float Rectangle::getArea()
{return mLength * mWidth; // 返回长度乘以宽度的结果
}// 计算周长的成员函数定义
float Rectangle::getGirth()
{return 2 * (mLength + mWidth); // 返回周长的计算结果
}// 主函数
int main()
{float m, n; // 定义两个浮点数变量 m 和 n,用于存储输入的长度和宽度                                    cout << "Input the Length and Width: "; // 提示用户输入长度和宽度cin >> m >> n; // 从标准输入流读取用户输入的长度和宽度                               Rectangle r1(m, n); // 创建一个具有给定长度和宽度的矩形对象cout<<"The Area is: "<<r1.getArea()<<endl; // 输出矩形的面积Rectangle r2(m, n); // 创建另一个具有给定长度和宽度的矩形对象cout<<"The Perimeter: "<<r2.getGirth()<<endl; // 输出矩形的周长return 0; // 返回0,表示程序正常结束
}

四、圆类

【问题描述】

编写程序求圆的周长与面积

#include<iostream>
using namespace std;const float PI = 3.14; class Circle {
private:float radius;public:Circle(float r): radius(r) {}float getArea() {return PI * radius * radius;}float getGirth() {return 2 * PI * radius;}
};int main()
{float r;cout << "请输入半径长度";cin >> r;                                     Circle c1(r);                            cout<<"圆的面积为:"<<c1.getArea()<<endl;Circle c2(r);cout<<"圆的周长为:"<<c2.getGirth()<<endl;
}


http://www.ppmy.cn/embedded/26942.html

相关文章

企业私服中使用Maven,标准的setting.xml文件

Maven Maven是一个项目管理和理解工具。它主要服务于以下几个方面: 构建管理:Maven可用于构建和管理任何基于Java平台的项目。 依赖管理:Maven有一个中央仓库,用于保存大量常用的库文件。当进行项目构建时,Maven会自动下载所需的库文件到本地仓库,这极大地简化了库文件…

Vue.js 3 应用开发与核心源码解析 阅读笔记

https://www.dedao.cn/ebook/reader?idV5R16yPmaYOMqGRAv82jkX4KDe175w7xRQ0rbx6pNgznl9VZPLJQyEBodb89mqoO 2022年出的书&#xff0c;针对Vue的版本是3.2.28&#xff0c;当前的版本是 3.4.21。 本书的一大特色是对Vue 3.x的核心源码&#xff08;响应式原理、双向绑定实现、虚…

泛型类,泛型方法,泛型接口,泛型的上界

在Java中&#xff0c;泛型&#xff08;Generics&#xff09;是一种机制&#xff0c;它允许程序员在定义类、接口和方法时使用类型参数。这些类型参数在实例化时会被实际的类型&#xff08;如Integer、String等&#xff09;所替换。泛型提供了编译时的类型检查&#xff0c;增加了…

net lambda 、 匿名函数 以及集合(实现IEnumerable的 如数组 、list等)

匿名函数&#xff1a;》》》 Action a1 delegate(int i) { Console.WriteLine(i); }; Lambda:>>> Aciont a1 (int i) > { Console.WriteLine(i); }; 可以简写 &#xff08;编译器会自动根据委托类型 推断&#xff09; Action a1 &#xff08;i&#xff09;> {…

鸿蒙OpenHarmony【小型系统 烧录】(基于Hi3516开发板)

烧录 针对Hi3516DV300开发板&#xff0c;除了DevEco Device Tool&#xff08;操作方法请参考烧录)&#xff09;外&#xff0c;还可以使用HiTool进行烧录。 前提条件 开发板相关源码已编译完成&#xff0c;已形成烧录文件。客户端&#xff08;操作平台&#xff0c;例如Window…

【opencv4.8.1 源码编译】windows10 OpenCV 4.8.1源码编译并实现 CUDA 12加速

Windows 下使用 CMake3.29.2 Visual Studio 2022 编译 OpenCV 4.8.1 及其扩展模块cuda12.0teslaT4显卡 记录自己在编译时踩过的坑&#xff0c;避免下次再犯或者给有需要的人。 在实际使用中&#xff0c;如果是对处理时间要求比较高的场景&#xff0c;使用OpenCV处理图片数据很…

全面展示自动驾驶最新发展动态“2024上海国际自动驾驶技术展会”

随着科技的飞速发展和人们生活水平的提高&#xff0c;汽车作为交通工具的角色正在逐渐转变&#xff0c;它已经不仅仅是一个简单的移动工具&#xff0c;而是成为了一种智能设备&#xff0c;融入了我们的生活之中。2024年上海自动驾驶及新能源汽车展会&#xff0c;就是这一变革的…

Java_从入门到JavaEE_04

一、基本转义字符 含义&#xff1a;具有特殊意义的字符本身 字符含义\"表示一个双引号字符\’表示一个单引号字符\\表示一个斜杠字符\n表示换行\t表示水平制表 ​ print():输出 ​ println():输出换行 System.out.println("\"1122\"");System.out.pri…