2014-01-19 75 views
0

我正在申請工資申請。應用程序應該允許用戶從一個帳戶(該帳戶是包含值1000的文本文件「shop」)中轉賬。將時間戳記寫入文件

用戶應該能夠進行儘可能多的轉賬,而不會透支賬戶。每筆交易也應該通過一個時間戳記錄在一個單獨的文件中,這就是我正在努力的一點。

目前與我使用的代碼時間戳創建罰款的文件「時間」,除了1040ED48之前出現的時間。有人知道爲什麼嗎?同樣,每次我進行交易時,「時間」文件都會被新的時間戳覆蓋。有沒有辦法將每個時間戳放在文件的不同行上,以防止它被完全覆蓋?對不起,如果這不明確。

#include <limits> 
#include "stdafx.h" 
#include <iostream> 
#include <fstream> 
#include <ctime> 
#include <string> 


int read_balance(void); 
void write_balance(int balance); 

using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 


    cout << "How much do you wish to transfer?" << endl; 


    int amount = 0; 

if (std::cin >> amount) 
{ 
    std::cout << "Transferred Amount:" << amount << "\n"; 
    int balance = read_balance(); 

    if (amount <= 0) 
    { 
     std::cout << "Amount must be positive\n"; 
    } 
    else if (balance < amount) 
    { 
     std::cout << "Insufficient funds\n"; 
    } 
    else 
    { 
     int new_balance = balance - amount; 

     write_balance(new_balance); 
     std::cout << "New account balance: " << new_balance << std::endl; 

    fstream infile; 
    infile.open("time.txt"); 


    std::time_t result = std::time(nullptr); 
    std::string timeresult = std::ctime(&result); 

    infile << std::cout << timeresult << std::endl; 
    } 

} 


system("pause"); 
return 0; 
} 

int read_balance(void) 
{ 
std::ifstream f; 
f.exceptions(std::ios::failbit | std::ios::badbit); 
f.open("shop.txt"); 
int balance; 
f >> balance; 
f.close(); 
return balance; 
} 

void write_balance(int balance) 
{ 
std::ofstream f; 
f.exceptions(std::ios::failbit | std::ios::badbit); 
f.open("shop.txt"); 
f << balance; 
f.close(); 
} 
+0

從'infile << std :: cout << timeresult << std :: endl;' – tumdum

+0

刪除'std :: cout <<'謝謝你擺脫了1040ED48。只需要弄清楚現在如何記錄時間戳。 – user3057816

回答

1

如果您打開要寫入的文件,則首先刪除該文件。如果您不想想要刪除該文件,則需要打開該文件以進行追加(使用app模式。)

+0

謝謝,現在就開始工作吧! – user3057816

1

還有一件事。檢查錯誤條件後,您應該打印以下內容:

std::cout << "Transferred Amount:" << amount << "\n"; 
int balance = read_balance(); 

想象一下,您在ATM。現在,您嘗試提取的餘額超過了您在帳戶中留下的餘額,並且自動櫃員機顯示資金已轉移,並且表明您沒有足夠的餘額。