C++类的设计编程示例

一、银行账户类

【问题描述】

定义银行账户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:
    // 默认构造函数,将余额初始化为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

#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; // 初始化长度为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,表示程序正常结束
}

四、圆类

【问题描述】

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

#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.mfbz.cn/a/586956.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024五一杯数学建模B题思路分析 - 未来新城背景下的交通需求规划与可达率问题

文章目录 1 赛题选题分析 2 解题思路详细的思路过程放在文档中 ! ! &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;3 最新思路更新 1 赛题 B题 未来新城背景下的交通需求规划与可达率问题 随着城市化的持续发展&#xff0c;交通规划在新兴城市建设中显得尤为关…

Linux搭建靶场

提前准备&#xff1a; 文章中所使用到的Linux系统&#xff1a;Ubantu20.4sqlilabs靶场下载地址&#xff1a;GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based. 一. 安装phpstudy phpstudy安装命令&#xff1a;wget -O install.sh h…

Map和Set基础

目录 一、导论 二、Map 三、Set 本文找先不涉及两种数据结构的底层&#xff0c;目标是&#xff1a; 理解Map和Set的大体框架&#xff0c;了解他们有什么用&#xff0c;用在哪里的&#xff0c;然后再从浅层深入底层。 小编认为&#xff1a; 先了解也下Map和Set大体是用来做…

Mysql--创建数据库

一、创建一个数据库 “db_classes” mysql> create database db_classes; mysql> show databases; -------------------- | Database | -------------------- | db_classes | | information_schema | | mysql | | performance_schema | |…

开通Jetbrains个人账号,赠送这些付费插件

开通Jetbrains个人账号&#xff0c;或者Jetbrains现成账号的, 可赠送以下付费插件 现成账号&#xff1a;https://web.52shizhan.cn/activity/xqt8ly 个人账号&#xff1a;https://web.52shizhan.cn/legal 账号支持全家桶系列&#xff1a;AppCode,CLion,DataGrip,GoLand,Intell…

Codeforces Round 941 (Div. 2) (A~D)

1966A - Card Exchange 题意&#xff1a; 思路&#xff1a;手玩一下发现当存在某个数字个数超过k个&#xff0c;那么就能一直操作下去。那么答案就是k-1. void solve() {cin >> n >> m;map<int,int>mp;int maxx 1;for(int i 0 ; i < n ; i ){int x;c…

手把手教数据结构与算法:优先级队列(银行排队问题)

队列 基本概念 队列的定义 队列&#xff08;Queue&#xff09;&#xff1a;队列是一种常见的数据结构&#xff0c;遵循先进先出&#xff08;First-In-First-Out, FIFO&#xff09;的原则。在队列中&#xff0c;元素按照进入队列的顺序排列。队列是一个线性的数据结构&#x…

深入解析yolov5,为什么算法都是基于yolov5做改进的?(一)

YOLOv5简介 YOLOv5是一种单阶段目标检测算法&#xff0c;它在YOLOv4的基础上引入了多项改进&#xff0c;显著提升了检测的速度和精度。YOLOv5的设计哲学是简洁高效&#xff0c;它有四个版本&#xff1a;YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x&#xff0c;分别对应不同的模型大小…

深度学习从入门到精通——词向量介绍及应用

词向量介绍 词向量&#xff08;Word embedding&#xff09;&#xff0c;即把词语表示成实数向量。“好”的词向量能体现词语直接的相近关系。词向量已经被证明可以提高NLP任务的性能&#xff0c;例如语法分析和情感分析。词向量与词嵌入技术的提出是为了解决onehot的缺陷。它把…

pytorch中创建maskrcnn模型

0.模型输入/输出参数参见 链接: pytorch的mask-rcnn的模型参数解释 核心代码 GeneralizedRCNN(这里以mask-rcnn来解释说明) # 通过输入图像获取fpn特征图,注意这里的backbone不是直接的resnet,而是fpn化后的 features self.backbone(images.tensors) # 由于是mask-rcnn,故而…

如何快速搭建nginx服务

华子目录 nginx简介概念特点nginx框架nginx关键工作机制 nginx正向代理功能nginx反向代理功能nginx反向代理的工作流程代理本质 nginx负载均衡部署nginx常用命令systemctl系列nginx自带命令 nginx配置文件主配置文件/etc/nginx/nginx.conf内容结构模块分析配置分析注意示例 ngi…

Android创建快捷方式到桌面

效果图 参考 https://blog.51cto.com/u_16175498/8811197https://blog.51cto.com/u_16175498/8811197 权限 <uses-permission android:name"com.android.launcher.permission.INSTALL_SHORTCUT" /> 实现 if (Build.VERSION.SDK_INT > Build.VERSION_C…

【已解决】Python Selenium chromedriver Pycharm闪退的问题

概要 根据不同的业务场景需求&#xff0c;有时我们难免会使用程序来打开浏览器进行访问。本文在pycharm中使用selenium打开chromedriver出现闪退问题&#xff0c;根据不断尝试&#xff0c;最终找到的问题根本是版本问题。 代码如下 # (1) 导入selenium from selenium import …

C++ stack、queue以及deque

1、stack和queue常用接口 严格来说栈和队列的实现是容器适配器 1、常用接口&#xff1a; 栈&#xff1a;top、push、pop、size、emptystack - C Reference (cplusplus.com) 队列&#xff1a;top、push、pop、swap、size、emptyqueue - C Reference (cplusplus.com) 2、deque&a…

Android手势识别面试问题及回答

问题 1: 如何在Android中实现基本的手势识别&#xff1f; 答案: 在Android中&#xff0c;可以通过使用GestureDetector类来实现基本的手势识别。首先需要创建一个GestureDetector的实例&#xff0c;并实现GestureDetector.OnGestureListener接口来响应各种手势事件&#xff0c…

ubuntu安装mysql时候修改root密码

前情&#xff1a; 使用set password for rootlocalhost ‘passwd’&#xff1b; set password for ‘root’‘localhost’‘passwd’&#xff1b; update user set passwordpassword(‘passwd’) where user‘root’ and host ‘localhost’; flush privileges; 以上方法均报…

定制开发AI智能名片商城小程序:玩转积分制度的成功案例

在数字化浪潮席卷而来的今天&#xff0c;企业营销方式不断创新&#xff0c;力求在众多竞争对手中脱颖而出。其中&#xff0c;积分制度以其直观、有效的特点&#xff0c;成为了众多企业的营销利器。某时尚品牌“潮流前线”便是其中的佼佼者。他们通过定制一款AI智能名片商城小程…

德国著名自动化公司Festo设计了一款仿生蜜蜂,仅重34g,支持多只蜜蜂编队飞行!...

德国著名的气动元件研发及自动化解决方案供应商Festo公司近日展示了一款仿生蜜蜂&#xff08;BionicBee&#xff09;&#xff0c;重量只有34g&#xff0c;却完全可以实现自主飞行&#xff0c;还支持多只相同的蜜蜂机器人编队飞行。 BionicBee 重约 34 克&#xff0c;长 22 厘米…

二叉树的前序,中序,后序遍历

二叉树可以分为左子树&#xff0c;右子树和根节点。同时左子树和右子树又可以分为新的左子树和右子树加上新的根节点&#xff0c;以此类推。 二叉树的前序&#xff0c;中序&#xff0c;后序遍历也叫前根遍历&#xff0c;中根遍历&#xff0c;后根遍历或者前序遍历&#xff0c;…

【Vue 2.x】学习vue之三路由

文章目录 Vue三路由第十章1、vue中的路由vue的应用分为a、多页面应用b、单页面应用 2、路由的基本应用1、基础2、使用3、加载 3、vue组件的分类1、普通组件2、路由组件 4、路由的嵌套5、路由传递Query参数1、拼接参数传递2、路由传递对象 6、简化路由1、命名路由 7、parms传递参…