Witam, robie program budzet osobisty i mam problem z posortowanien dat w obecnym miesiacu, daty maja sie wyswietlac od najstarszej. Daty w poprzednim miesiacu wyswitlaja sie prawidlowo
https://github.com/sliwomir/PersonalBudget
void Budget::userRegistration()
{
userMaster.userRegistration();
}
void Budget::userLoging()
{
userMaster.userLoging();
if (userMaster.isUserLogged())
{
incomeMaster = new IncomeMaster(userMaster.getLoggedUserId(),FILE_NAME_WITH_INCOMES);
expenseMaster = new ExpenseMaster(userMaster.getLoggedUserId(),FILE_NAME_WITH_EXPENSES);
}
}
void Budget::logout()
{
userMaster.setLoggedUserId(0);
delete incomeMaster;
delete expenseMaster;
incomeMaster = NULL;
expenseMaster = NULL;
}
void Budget::changePassword()
{
userMaster.changePassword();
}
void Budget::addNewIncome()
{
if(userMaster.isUserLogged())
incomeMaster->addNewIncome(userMaster.getLoggedUserId());
else
cout<<"Uzytkowanik nie jest zalogowany."<<endl;
}
void Budget::addNewExpense()
{
if(userMaster.isUserLogged())
expenseMaster->addNewExpense(userMaster.getLoggedUserId());
else
cout<<"Uzytkowanik nie jest zalogowany."<<endl;
}
void Budget::showBalanceForCurretnMonth()
{
vector <Income> tmpIncomes;
vector <Expense> tmpExpenses;
int monthBeginning = (AuxiliaryFunctions::getCurrentYear()*10000) + (AuxiliaryFunctions::getCurrentMonth()*100) +1;
int i=0;
double incomesSum = 0, expensesSum = 0;
tmpIncomes = incomeMaster->sortIncomesFromLower(tmpIncomes);
system("cls");
cout << " >>> PRZYCHODY UZYTKOWNIKA <<<" << endl;
cout << "------------------------------" << endl;
while((unsigned)i < tmpIncomes.size() && tmpIncomes[i].getDate() >= monthBeginning)
{
cout << AuxiliaryFunctions::getFullDateAsStringWithDashes(tmpIncomes[i].getDate())<<"\t";
cout << tmpIncomes[i].getItem()<<"\t";
cout << tmpIncomes[i].getAmount() << endl;
incomesSum +=tmpIncomes[i].getAmount();
i++;
}
cout<<endl<<"Suma przychodow z biezacego miesiaca: "<<incomesSum<<endl;
cout<<endl<<endl;
i=0;
tmpExpenses = expenseMaster->sortExpensesFromLower(tmpExpenses);
cout << " >>> WYDATKI UZYTKOWNIKA <<<" << endl;
cout << "----------------------------" << endl;
while((unsigned) i < tmpExpenses.size() && tmpExpenses[i].getDate() >= monthBeginning)
{
cout << AuxiliaryFunctions::getFullDateAsStringWithDashes(tmpExpenses[i].getDate())<<"\t";
cout << tmpExpenses[i].getItem()<<"\t";
cout << tmpExpenses[i].getAmount() << endl;
expensesSum += tmpExpenses[i].getAmount();
i++;
}
cout<<endl<<"Suma wydatkow z biezacego miesiaca: "<<expensesSum<<endl;
cout<<endl<<endl;
cout<<"Roznica przychodow i wydatkow: "<<incomesSum + expensesSum<<endl;
system("pause");
}
void Budget::showBalanceForPreviouslyMonth()
{
vector <Income> tmpIncomes;
vector <Expense> tmpExpenses;
int currentMonthBeginning = (AuxiliaryFunctions::getCurrentYear()*10000) + (AuxiliaryFunctions::getCurrentMonth()*100) + 1;
int previouslyMonthBeginning;
if(AuxiliaryFunctions::getCurrentMonth() == 1)
{
int previouslyMonth = 12;
previouslyMonthBeginning = ((AuxiliaryFunctions::getCurrentYear()-1)*10000) + (previouslyMonth *100) + 1;
}
else
{
int previouslyMonth = AuxiliaryFunctions::getCurrentMonth() - 1;
previouslyMonthBeginning = (AuxiliaryFunctions::getCurrentYear()*10000) + (previouslyMonth *100) + 1;
}
int i=0;
double incomesSum = 0, expensesSum = 0;
tmpIncomes = incomeMaster->sortIncomesFromLower(tmpIncomes);
system("cls");
cout << " >>> PRZYCHODY UZYTKOWNIKA <<<" << endl;
cout << "------------------------------" << endl;
while((unsigned)i < tmpIncomes.size() && tmpIncomes[i].getDate() >= previouslyMonthBeginning)
{
if(tmpIncomes[i].getDate() < currentMonthBeginning)
{
cout << AuxiliaryFunctions::getFullDateAsStringWithDashes(tmpIncomes[i].getDate())<<"\t";
cout << tmpIncomes[i].getItem()<<"\t";
cout << tmpIncomes[i].getAmount() << endl;
incomesSum +=tmpIncomes[i].getAmount();
}
i++;
}
cout<<endl<<"Suma przychodow z poprzedniego miesiaca: "<<incomesSum<<endl;
cout<<endl<<endl;
i=0;
tmpExpenses = expenseMaster->sortExpensesFromLower(tmpExpenses);
cout << " >>> WYDATKI UZYTKOWNIKA <<<" << endl;
cout << "----------------------------" << endl;
while((unsigned)i < tmpExpenses.size() && tmpExpenses[i].getDate() >= previouslyMonthBeginning)
{
if(tmpExpenses[i].getDate() < currentMonthBeginning)
{
cout << AuxiliaryFunctions::getFullDateAsStringWithDashes(tmpExpenses[i].getDate())<<"\t";
cout << tmpExpenses[i].getItem()<<"\t";
cout << tmpExpenses[i].getAmount() << endl;
expensesSum += tmpExpenses[i].getAmount();
}
i++;
}
cout<<endl<<"Suma wydatkow z poprzedniego miesiaca: "<<expensesSum<<endl;
cout<<endl<<endl;
cout<<"Roznica przychodow i wydatkow: "<<incomesSum + expensesSum<<endl;
system("pause");
}
void Budget::showBalanceForPeriodOfTime()
{
vector <Income> tmpIncomes;
vector <Expense> tmpExpenses;
string date;
int beginningDate, endingDate;
char choice;
int i=0;
double incomesSum = 0, expensesSum = 0;
do
{
cout<<"Podaj date poczatku okresu z ktorego chcesz raport w formacie rrrr-mm-dd: ";
cin>>date;
}
while(! AuxiliaryFunctions::isDateCorrect(date));
beginningDate = AuxiliaryFunctions::getFullDateFromString(date);
cout<<"Czy chcesz ustawic koniec okresu na dzien dzisiejszy?: [t/n] ";
cin>> choice;
if(choice == 't')
{
endingDate = AuxiliaryFunctions::getCurrentDate();
}
else
{
do
{
cout<<"Podaj date konca okresu w formacie rrrr-mm-dd: ";
cin>>date;
}
while(! AuxiliaryFunctions::isDateCorrect(date));
endingDate = AuxiliaryFunctions::getFullDateFromString(date);
}
tmpIncomes = incomeMaster->sortIncomesFromLower(tmpIncomes);
system("cls");
cout << " >>> PRZYCHODY UZYTKOWNIKA <<<" << endl;
cout << "------------------------------" << endl;
while((unsigned)i < tmpIncomes.size() && tmpIncomes[i].getDate() >= beginningDate)
{
if(tmpIncomes[i].getDate() <= endingDate)
{
cout << AuxiliaryFunctions::getFullDateAsStringWithDashes(tmpIncomes[i].getDate())<<"\t";
cout << tmpIncomes[i].getItem()<<"\t";
cout << tmpIncomes[i].getAmount() << endl;
incomesSum +=tmpIncomes[i].getAmount();
}
i++;
}
cout<<endl<<"Suma przychodow z wybranego zakresu czasu: "<<incomesSum<<endl;
cout<<endl<<endl;
i=0;
tmpExpenses = expenseMaster->sortExpensesFromLower(tmpExpenses);
cout << " >>> WYDATKI UZYTKOWNIKA <<<" << endl;
cout << "----------------------------" << endl;
while((unsigned)i < tmpExpenses.size() && tmpExpenses[i].getDate() >= beginningDate)
{
if(tmpExpenses[i].getDate() <= endingDate)
{
cout << AuxiliaryFunctions::getFullDateAsStringWithDashes(tmpExpenses[i].getDate())<<"\t";
cout << tmpExpenses[i].getItem()<<"\t";
cout << tmpExpenses[i].getAmount() << endl;
expensesSum += tmpExpenses[i].getAmount();
}
i++;
}
cout<<endl<<"Suma wydatkow z wybranego zakresu czasu: "<<expensesSum<<endl;
cout<<endl<<endl;
cout<<"Roznica przychodow i wydatkow: "<<incomesSum + expensesSum<<endl;
system("pause");
}
bool Budget::isUserLogged()
{
return userMaster.isUserLogged();
}