基于c++的记账小工具

116 阅读2分钟

明白你的钱去了哪里

不敢看成绩的是学生,不敢看钱包的是成年人,都不敢看的是大学生(doge),相信好多人都有月初潇洒,月中后悔,月末剁手的经历吧

项目简介

我基于c++开发了一款记账小软件,支持增删改查

MarsCode是什么?

MarsCode对话框官方回答:MarsCode是一个在线的集成开发环境(IDE),它专注于提供一个高效、便捷的编程环境,特别是在教育领域。MarsCode支持多种编程语言,包括Python、Java、C++等,并且提供了实时的代码编辑、调试和运行功能。

MarsCode的特点包括:

  1. 实时协作:支持多人实时协作编程,适用于团队项目或教学场景。
  2. 代码自动补全:提供智能的代码自动补全功能,帮助开发者提高编码效率。
  3. 语法高亮:支持多种编程语言的语法高亮,使代码更加易读。
  4. 调试工具:内置调试工具,方便开发者进行代码调试。
  5. 版本控制:集成了Git版本控制系统,方便管理代码版本。
  6. 云端存储:所有代码和项目都存储在云端,用户可以随时随地访问和编辑。

MarsCode的目标是为开发者和学习者提供一个简单、易用且功能强大的编程环境,帮助他们更高效地编写代码。

为什么开发

信好多人都有月初潇洒,月中后悔,月末剁手的经历吧,目的在于让你知道你的钱去了哪里

编写过程

1.首先我问了豆包

屏幕截图 2024-12-11 151845.png

2.然后手搓个ui(QTDesigner)

屏幕截图 2024-12-11 151033.png

3.接下来是对应功能的实现(均由豆包给出在本地调试)

4.插入记录

void MainWindow::on_buttonAdd_clicked()
{
    // 获取用户输入的描述和金额
    QString description = ui->lineEditDescription->text();
    double amount = ui->amountSpinBox->value();

    // 创建QSettings对象并保存记录
    QSettings settings("MyCompany", "MyApp");
    int size = settings.beginReadArray("records");
    settings.endArray();

    settings.beginWriteArray("records", size);
    settings.setArrayIndex(size);
    settings.setValue("description", description);
    settings.setValue("amount", amount);
    settings.endArray();
}

5.删除记录

void MainWindow::on_buttonClear_clicked() {
    QModelIndex index = ui->listView->currentIndex();
    QSettings settings("MyCompany", "MyApp");
    if (!index.isValid()) {
        QMessageBox::warning(this, "删除错误", "请选择要删除的项!");
        return;
    }

    // 从 entries 中删除对应项
    entries.removeAt(index.row());

    // 更新视图
    updateListView();
}

6.搜索

void MainWindow::on_buttonSearch_clicked() {
    QString searchText = ui->searchLineEdit->text();

    // 简单的搜索功能,显示匹配的结果
    if (searchText.isEmpty()) {
        updateListView(); // 如果搜索框为空,显示所有结果
        return;
    }

    model->clear(); // 清空模型
    for (const AccountEntry &entry : entries) {
        if (entry.getLabel().contains(searchText, Qt::CaseInsensitive)) {
            QStandardItem *item = new QStandardItem(entry.getLabel() + ": " +
                                                    QString::number(entry.getAmount()) + " at " +
                                                    entry.getDateTime().toString());
            model->appendRow(item);
        }
    }
}

其他项目文件就不放了哈

项目结构大体是这样

屏幕截图 2024-12-11 151430.png

其余文件请移步此处