当前位置: 首页 > article >正文

Qt项目实战:银行利息(贷款)计算器

目录

一.ui设计

二.初始化表单

三. 存款计算

四.贷款计算

五.效果

六.代码

1.h

2.cpp


一.ui设计

二.初始化表单

获取当前时间,并将开始日期设置为当前日期,将结束日期设置为当前日期加一年

三. 存款计算

1.从文本框获取当前资金、利率、定期期限和总年份等输入数据。

2.检查总年份是否是定期期限的整数倍,如果不是,则显示错误消息并聚焦到该输入框。

3.根据选中的存款类型(活期或定期)进行不同的计算:

4.活期:简单地按公式 moneyAll=moneyCurrent+(moneyCurrent×rate×years)moneyAll=moneyCurrent+(moneyCurrent×rate×years) 来计算最终金额。

5.定期:使用循环根据年数递增资金,每次都重新计算新的本金。

6.将结果显示在对应文本框中,并根据所选单选按钮将值复制到另一个文本框中。 如果两个文本框都有值,则计算它们之间的差额并显示。

四.贷款计算

1.获取开始和结束日期,并通过调用 daysTo() 方法计算两者之间相差多少天。

2.从文本框获取金额和利率,然后使用公式 result=money×rate×dayresult=money×rate×day 来计算结果。

3.将结果转换为字符串并显示在对应的输出文本框中,同时通过调试输出打印出天数以便开发者查看。

五.效果

六.代码

1.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;

private slots:
    void initForm();
    void on_btnCalc_clicked();
    void on_btnCalc2_clicked();
};

#endif // WIDGET_H

2.cpp

#pragma execution_character_set("utf-8")

#include "widget.h"
#include "ui_widget.h"
#include "qmessagebox.h"
#include "qdebug.h"

Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->initForm();
}

Widget::~Widget()
{
    delete ui;
}

void Widget::initForm()
{
    QDateTime now = QDateTime::currentDateTime();
    ui->dateStart->setDate(now.date());
    ui->dateEnd->setDate(now.date().addYears(1));
}

void Widget::on_btnCalc_clicked()
{
    //当前多少钱
    int moneyCurrent = ui->txtMoneyCurrent->text().toInt();
    //利息
    float rate = ui->txtRate->text().toFloat();
    //定期期限
    int year = ui->cboxYear->currentText().left(1).toInt();
    //总年份 必须是定期期限的倍数
    int years = ui->txtYears->text().toInt();
    //最终多少钱
    int moneyAll = 0;

    if (years % year != 0) {
        ui->txtYears->setFocus();
        QMessageBox::critical(this, "错误", "总年份必须是期限的整数倍数!");
        return;
    }

    if (ui->cboxType->currentIndex() == 0) {
        //傻瓜场景 直接计算
        moneyAll = moneyCurrent + (moneyCurrent * rate * years);
    } else {
        //真实场景 复利计算
        int count = years / year;
        for (int i = 0; i < count; ++i) {
            moneyCurrent = moneyCurrent + (moneyCurrent * rate * year);
        }
        moneyAll = moneyCurrent;
    }

    //计算下来3年期定期存款30年总金额翻2番到最初本金3倍 100W本金3年期自动续期30年=321W
    QString value = QString::number(moneyAll);
    ui->txtMoneyAll->setText(value);

    //拷贝到其他地方
    if (ui->rbtn1->isChecked()) {
        ui->txtValue1->setText(value);
    } else {
        ui->txtValue2->setText(value);
    }

    //计算两种存款方式的差额 比如1年期存3年和3年期存3年
    QString value1 = ui->txtValue1->text().trimmed();
    QString value2 = ui->txtValue2->text().trimmed();
    if (!value1.isEmpty() && !value2.isEmpty()) {
        int value = qAbs(value1.toInt() - value2.toInt());
        ui->txtValue->setText(QString::number(value));
    }
}

void Widget::on_btnCalc2_clicked()
{
    //计算天数
    QDateTime dateStart = ui->dateStart->dateTime();
    QDateTime dateEnd = ui->dateEnd->dateTime();
    int day = dateStart.daysTo(dateEnd);
    int money = ui->txtMoney2->text().toInt();
    float rate = ui->txtRate2->text().toFloat();
    int result = money * rate * day;
    ui->txtResult2->setText(QString::number(result));
    qDebug() << day;
}


http://www.kler.cn/a/384262.html

相关文章:

  • Gitlab新建用户无法收到邮件的问题解决办法
  • 在PHP8内,用Jenssegers MongoDB扩展来实现Laravel与MongoDB的集成
  • 【数学二】线性代数-向量-向量组的秩、矩阵得秩
  • 17、论文阅读:VMamba:视觉状态空间模型
  • 一种高度集成的数字化管理平台:城市管理综合执法系统(源码)
  • 基于ViT的无监督工业异常检测模型汇总
  • android camera data -> surface 显示
  • 北京美信时代渠道代理:运维后期维保服务策略
  • element-plus按需引入报错AutoImport is not a function
  • 利用Python 的爬虫技术淘宝天猫销量和库存
  • 基于SpringBoot的“校园交友网站”的设计与实现(源码+数据库+文档+PPT)
  • 「Mac畅玩鸿蒙与硬件26」UI互动应用篇3 - 倒计时和提醒功能实现
  • Zabbix监控架构
  • 提示工程(Prompt Engineering):大模型微调Prompt/Instruct Mode;稀疏向量与稠密向量进行词语编码
  • Scala访问控制权限详解与应用实践 #Scala #scala
  • 履带机器人(一、STM32控制部分--标准库)
  • MyBatis项目的创建和增删查改操作
  • 计算机的发展史
  • 动漫风格大模型和lora推荐
  • 【ShuQiHere】️使用 Tailscale 轻松构建安全、分布式网络
  • 51单片机教程(一)- 开发环境搭建
  • group_concat配置影响程序出bug
  • 前端预览word、excel、ppt
  • 使用onnxruntime c++ API实现yolov5m视频检测
  • 进入半导体行业需要具备哪些能力?
  • Scala的List