Я работаю над заявлением о заработной плате. Приложение должно позволять пользователю переводить сумму со счета (счет представляет собой текстовый файл «shop», который содержит значение 1000).
Пользователь должен иметь возможность совершать столько переводов, сколько пожелает, не перерасходя счет. Каждая транзакция также должна быть записана с помощью временной метки в отдельном файле, и это бит, с которым я борюсь.
В настоящее время с кодом, который я использую, метка времени создается нормально в файле «время», за исключением 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();
}
Если вы открываете файл для записи, вы начинаете с его удаления. Если вы этого не сделаете хочу чтобы удалить файл, вам нужно открыть файл для добавления (используя app
Режим.)
Еще кое-что. Вы должны напечатать следующее после проверки условий ошибки:
std::cout << "Transferred Amount:" << amount << "\n";
int balance = read_balance();
Представь, что ты в банкомате. Теперь вы пытаетесь снять больше, чем у вас осталось на вашем счете, и банкомат показывает, что деньги переведены, и показывает, что у вас недостаточно средств.