C++类的设计编程示例

一、银行账户类

【问题描述】

定义银行账户BankAccount类。

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

公有成员方法:

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

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

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

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

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

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

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

账户余额

存取款操作数

操作类型 金额

【输出形式】

操作后的账户余额

cpp 复制代码
#include <iostream>
using namespace std;

// 定义一个名为BankAccount的类
class BankAccount {
private:
    int balance; // 私有成员变量,用于存储余额

public:
    // 默认构造函数,将余额初始化为0
    BankAccount() {
        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

cpp 复制代码
#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。它指定了在宽度设置后,输出结果不足指定宽度时所使用的填充字符。默认情况下,填充字符是空格。

三、矩形类

【问题描述】

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

cpp 复制代码
#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; // 初始化长度为0
    mWidth = 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,表示程序正常结束
}

四、圆类

【问题描述】

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

cpp 复制代码
#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;
}
相关推荐
奋斗的小花生1 小时前
c++ 多态性
开发语言·c++
魔道不误砍柴功1 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
NiNg_1_2341 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
闲晨1 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
老猿讲编程1 小时前
一个例子来说明Ada语言的实时性支持
开发语言·ada
UestcXiye2 小时前
《TCP/IP网络编程》学习笔记 | Chapter 3:地址族与数据序列
c++·计算机网络·ip·tcp
Chrikk2 小时前
Go-性能调优实战案例
开发语言·后端·golang
幼儿园老大*2 小时前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
canyuemanyue2 小时前
go语言连续监控事件并回调处理
开发语言·后端·golang
杜杜的man2 小时前
【go从零单排】go语言中的指针
开发语言·后端·golang