在完成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来结束应用。
代码小白,若有问题与错误请在评论区指正。