//
// Name: AdPa
// Version: 0.9
// Description: Prints out hours as many hours as you worked in a file and gives you the total amount
// that you will get.
// Author: (c) Leo Juszkiewicz <leo.jr90@yahoo.com>
// License: Freeware
//
#include "stdafx.h"
#include <iostream>
#include "Functions.h"
#include <fstream> // file i/o
#include <windows.h> // Sleep()
#include <string>
#include <cstdio> // remove()
#include <ctime>
#include <iomanip>
#include <vector>
using namespace std;
const double versionPrograma = 0.9;
int main()
{
const char nombArchivo[] = "horas.txt";
system("title AdPa ");
system("COLOR 1E");
do
{
system("cls");
/*char fecha[9];
_strdate_s(fecha);
cout << fecha << endl;*/
Raya();
cout << "\t\tBienvenido a AdPa " << versionPrograma << endl;
Raya();
cout << endl << "Selecciona una opcion: " << endl;
cout << endl << "\t 1. Agregar horas" << endl;
cout << endl << "\t 2. Ver archivo" << endl;
cout << endl << "\t 3. Eliminar archivo" << endl;
cout << endl << "\t 4. Hacer cuenta total" << endl;
cout << endl << "\t 5. Licencia" << endl;
cout << endl << "\t 6. SALIR" << endl << endl;
cin >> Opcion;
switch (Opcion)
{
case 1:
{
int nuevo = 0;
// Primero leemos para ver si existe o no
ifstream Archivo(nombArchivo);
if (Archivo)
{
cout << "\nArchivo existente... Abriendo para escritura" << endl << endl;
// No escribir "titulo"
nuevo = 1;
}
Archivo.close();
ofstream escrArchivo(nombArchivo, ios::app);
char tiempo[25];
cout << "\nCuantas horas trabajaste hoy? (ej. 8 7.00-15.00)" << endl;
cin.ignore();
cin.getline(tiempo, 25);
// Si no existe, escribir esto...
if(nuevo == 0)
{
escrArchivo << "Horas\t Horario" << endl;
escrArchivo << "-----------------------------------" << endl;
}
// Escribe las horas en el archivo
for(unsigned int i = 0; i < strlen(tiempo); i++)
{
if(tiempo[i] == ' ')
tiempo[i] = '\t';
escrArchivo << tiempo[i];
}
// Nueva linea para la proxima vez
escrArchivo << endl;
escrArchivo.close();
Final();
}
break;
case 2:
{
ifstream lee;
lee.open(nombArchivo);
if (!lee)
{
cout << "\nERROR. El archivo no existe (lo renombraste/eliminaste?)" << endl << endl;
Sleep(4000);
break;
}
cout << endl << "Quieres ver el archivo en la consola (1 - aqui) o en notepad (2)?" << endl;
int verArch = -1;
cin >> verArch;
// Notepad
if(verArch == 2)
{
system(nombArchivo);
}
else
{
while(lee)
{
std::string Archivo;
getline(lee, Archivo);
cout << Archivo << endl;
// Paramos el programa para que se pueda ver el archivo en consola
cin.get();
}
lee.close();
}
Final();
}
break;
case 3:
{
ifstream eliminaArch(nombArchivo);
if(eliminaArch.fail())
{
cerr << "El archivo no existe! (Que querias eliminar?)" << endl;
Sleep(5000);
}
else
{
cout << "Estas seguro/a que quieres eliminar el archivo? (S - Si | N - No)" << endl;
char elim = '0';
cin >> elim;
if(elim == 'S' || elim == 's')
{
eliminaArch.close();
cout << endl << "Eliminando... " << endl;
ProgressBar();
Sleep(1000);
if (remove(nombArchivo) != 0)
cout << endl << "Hubo un error tratando de eliminar el archivo" << endl;
else
cout << "ELIMINADO" << endl;
}
}
eliminaArch.close();
Final();
}
break;
case 4:
{
// Si no se puede abrir, ni siquiera escribas...
ifstream haceCuenta(nombArchivo);
if (!haceCuenta)
{
cerr << "ERROR. No se puede abrir el archivo o no existe" << endl;
Sleep(4000);
break;
}
cout << "Cuanto cobras por hora? (solo se guardara en el archivo, nadie se enterara ;) )" << endl;
float cobroHora;
cin >> cobroHora;
if(cobroHora <= 20.70)
cout << endl << "Bueno, como los ishiros. Hay que ponerse a estudiar!" << endl;
else if(cobroHora > 20.70 && cobroHora < 25.0)
cout << endl << "Sueldo razonable" << endl;
else if(cobroHora > 25.0)
cout << endl << "Ojala todos cobraran eso" << endl;
vector<int> vint;
int n;
string str;
while(!haceCuenta.eof() && !haceCuenta.fail())
{
if(!isdigit(haceCuenta.peek()))
{
getline(haceCuenta, str);
continue;
}
haceCuenta >> n;
vint.push_back(n);
getline(haceCuenta, str);
}
if(!haceCuenta.eof())
{
cout << "Error leyendo el archivo" << endl;
return -1;
}
int totalHoras=0;
for(vector<int>::size_type x=0; x<vint.size(); ++x)
{
cout << setw(2) << vint[x] << endl;
totalHoras += vint[x];
}
cout << endl << "Haciendo cuenta... " << endl;
ProgressBar();
Sleep(1000);
ofstream escribe (nombArchivo, ios::app);
escribe << endl << "----------------------------" << endl;
escribe << "TOTAL HORAS: " << totalHoras << endl;
escribe << "HORA: " << cobroHora << " shekel" << endl;
escribe << "SUELDO TOTAL: " << static_cast<float>(totalHoras * cobroHora) << " shekel";
cout << "HORAS: " << totalHoras << endl;
cout << "SUELDO TOTAL: " << static_cast<float>(totalHoras * cobroHora) << endl;
Final();
}
break;
case 5:
system("cls");
system("COLOR A");
Raya();
cout << "\a\t\t\tLICENCIA" << endl;
Raya();
//setlocale(LC_ALL, "spanish");
cout << "AdPa " << versionPrograma <<
" es freeware, lo cual implica que es distribuido gratuitamente. " <<
"\nPuedes copiar, distribuir, modificar (si sabes, claro) total o parcialmente" <<
" este programa, siempre y cuando reserves derechos de autor.\n\n" <<
"\nDudas? Sugerencias? Escribeme... <leo.jr90@yahoo.com>\n\n" <<
"\t (c) Leonardo Juszkiewicz";
cin.ignore();
cin.get();
break;
default:
// Si presiona 6 (salir) no mostrar esto
cin.ignore();
if(Opcion != 6)
{
cerr << "Opcion no valida";
Sleep(4000);
}
break;
}
} while(Opcion != 6);
cout << endl << "Gracias por usar AdPa " << versionPrograma << endl;
Sleep(2500);
return 0;
}