使用C++中类和指针进行记账系统的设计

在完成C++函数,指针和类等相关语言的学习后。我们进行实操训练。

#include <iostream>
using namespace std;
#include <string>

void mulu()
{
    cout << " *****************************" << endl;
    cout << " *****  1、收入          *****" << endl;
    cout << " *****  2、支出          *****" << endl;
    cout << " *****  3、收入记录      *****" << endl;
    cout << " *****  4、支出记录      *****" << endl;
    cout << " *****  5、查询余额      *****" << endl;
    cout << " *****  0、退出系统      *****" << endl;
    cout << " *****************************" << endl;
}

首先调用出头文件,在这里我们用到<iostream>和<string>两个头文件。

第二部创建页面菜单,代码如上。

struct income
{
    double i_money = 0;
    string i_time = "0";
    string i_reason = "0";
};

struct cost
{
    double c_money = 0;
    string c_time = "0";
    string c_reason = "0";
};

定义收入与支出类,设置的属性有:收入金额,收入时间,收入原因(支出同理)

struct costbooks
{
    struct cost c_money[10000];
    int cost_size = 0;
};
struct incomebooks
{
    struct income i_money[10000];
    int income_size = 0;
};

定义costbooks与incomebooks,让数据计算与数据调用通过次类进行处理

void income(incomebooks*abs)
{
    cout << "请输入收入金额:   " << endl;
    double income;
    cin >> income;
    abs->i_money[abs->income_size].i_money = income;

    cout << "请输入收入原因:   " << endl;
    string ireason;
    cin >> ireason;
    abs->i_money[abs->income_size].i_reason = ireason;

    cout << "请输入收入时间:   " << endl;
    string itime;
    cin >> itime;
    abs->i_money[abs->income_size].i_time = itime;
    abs->income_size++;
    system("pause");           //结束
    system("cls");             //进行清屏操作
}
void cost(costbooks*abc)
{
    cout << "请输入支出金额:   " << endl;
    double cost;
    cin >> cost;
    abc->c_money[abc->cost_size].c_money = cost;

    cout << "请输入支出原因:   " << endl;
    string creason;
    cin >> creason;
    abc->c_money[abc->cost_size].c_reason = creason;

    cout << "请输入支出时间:   " << endl;
    string ctime;
    cin >> ctime;
    abc->c_money[abc->cost_size].c_time = ctime;
    abc->cost_size++;
    system("pause");
    system("cls");
}

定义收入函数,输出此三种信息,让用户进行填写,并将填写的内容通过指针的方式保存在相应的变量里(支出同理)

void allmoney(incomebooks* abs, costbooks* abc,double a)
{
    for (int i = 0; i < abc->cost_size; i++)
    {
        a = a - abc->c_money[i].c_money;
    }

    for (int j = 0; j < abs->income_size; j++)
    {
        a = a + abs->i_money[j].i_money;
    }

    cout << "您现在的余额是:  " << a;
    system("pause");
    system("cls");
}

添加余额查询函数,通过指针查找,用for循环遍历用户存入的信息,将收入相加,减去支出。得到余额结果a,进行清屏。

void showibooks(incomebooks*abs)
{
    for (int i = 0; i < abs->income_size; i++)
    {
        cout << "收入金额:  " << abs->i_money[i].i_money << "\t";
        cout << "收入原因:  " << abs->i_money[i].i_reason << "\t";
        cout << "收入时间:  " << abs->i_money[i].i_time << endl;
    }
    system("pause");
    system("cls");
}

void showcbooks(costbooks*abc)
{
    for (int i = 0; i < abc->cost_size; i++)
    {
        cout << "支出金额:  " << abc->c_money[i].c_money << "\t";
        cout << "支出原因:  " << abc->c_money[i].c_reason << "\t";
        cout << "支出时间:  " << abc->c_money[i].c_time << endl;
    }
    system("pause");
    system("cls");
}

若用户想单独调查收入与支出记录,我们设置了两个相对应的函数,同查询余额一个道理,利用指针与for循环遍历信息,将每一次支出与收入记录调出,得到相应功能。

int main()
{
    incomebooks abs;
    costbooks abc;
    double money = 0;
    mulu();
    int select = 0;
    cin >> select;
    while (true)
    {
        switch (select)
        {
        case 1:
            income(&abs);
            break;
        case 2:
            cost(&abc);
            break;
        case 3:
            showibooks(&abs);
            break;
        case 4:
            showcbooks(&abc);
            break;
        case 5:
            allmoney(&abs, &abc, money);
            break;
        case 0:
            cout << "欢迎下次使用";
            return 0;
            break;
        }
        mulu();
        cin >> select;
    }
}

最后设置主函数,将指针与目录菜单调入,在菜单项目选择以实现相应的功能时,采用while与Switch选择语句,Switch相应的选择项与菜单序号对应,利用变量select来接受用户的选择,在每一次选择函数结束后,用break关键字跳出循环,再进入大循环,知道用户选择0来结束应用。

代码小白,若有问题与错误请在评论区指正。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值