首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++:记账类余额记录

C++:记账类余额记录
EN

Stack Overflow用户
提问于 2017-05-30 15:49:29
回答 2查看 117关注 0票数 0

我正在尝试创建一个程序,这样我就可以跟踪我的资金和我欠钱的人,或者计划花钱的人等等。

然而,我不确定如何让计算机记录我从"cin“输入的内容。

注意:我在下面的程序中没有使用cin,但我假设它是相同的。

目前,我设置了账户余额,然后将其记入贷方,但信息并未存储。我希望下一次使用该程序时,余额将是最后一次输入的最终余额。

请参考我的代码:

代码语言:javascript
复制
#include <iostream>
#include <vector>
#include <string>
using namespace std;
//Class creation

class account
{ 
public:
   account(float a)
   {
      bal = a;
      std::cout<<"Account made"<<endl;
   }
   void debit(float debit);
   void credit(float credit);
   void printbal(){cout<<"Your Balance is "<<bal<<endl;}
private:
   float bal;
};

//Constructor

void account::debit(float x)
{

  bal = bal + x;
  cout<<"Debiting balance"<<endl;
}

//credit function
void account::credit( float x)
{

  bal = bal - x;
  cout<<"Crediting balance"<<endl;
}

int main()
{
  account bank(12);
  bank.account::printbal();
  bank.account::credit(20);
  bank.account::printbal();
  return 0;
}

当我编译时,我得到:

代码语言:javascript
复制
$./a.out  
Account made  
Your Balance is 12  
Crediting balance  
Your Balance is -8  

并在再次完成时得到完全相同的结果。我希望第二次它会说:

代码语言:javascript
复制
Account made  
Your Balance is -8  
Crediting balance  
Your Balance is -28  

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-05-30 15:52:52

变量不是持久化的,你必须将你的信息存储在永久存储器中。

你可以做的是,在每次你的程序结束时,将余额存储在一个文件或数据库中。在下一次运行中,您必须做的第一件事是从文件或DB中检索结果并对其执行操作。

票数 1
EN

Stack Overflow用户

发布于 2017-05-30 17:37:57

问题是您没有使用永久内存来存储帐户数据。

每次执行该程序时,都会发生相同的事情:

操作系统为您的程序反转一些内存,并执行main函数。它在保留内存中的某处创建一个余额为12的帐户变量。然后,将balance变量减少20,然后程序结束。

当程序结束时,操作系统取回先前保留的内存。这意味着你的变量和它的内容永远丢失了。

当您再次运行您的应用程序时,同样的事情也会发生,操作系统可能会为您的可执行文件分配不同的内存部分(不可能在第一次执行时存储bank变量的位置写入)。

底线是:如果你想让你的数据在不同的执行中存活下来,你必须在磁盘或者其他的持久性内存(文件、数据库、云等)上进行存储!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44256505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档