elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Gestión de horas de trabajo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Gestión de horas de trabajo  (Leído 2,479 veces)
JuszR


Desconectado Desconectado

Mensajes: 2.866


Programming & RI


Ver Perfil
Gestión de horas de trabajo
« en: 16 Noviembre 2010, 16:08 pm »

Estoy intentando hacer un programa básico para el trabajo, de consola.
Básicamente es un programa que pida 2 entradas 1:
1) Cuántas horas se trabajó hoy (ya sea "10 horas", o "8.00 - 18.00" y calcular cuantas horas fueron), con fecha.
2) Cuánto se cobra la hora (esto solo una vez).

Pensé en hacerlo sencillo y meter todos los datos en un archivo (txt) y al final del mes (30) (o cada vez que se actualice el archivo) que me sume toda la primer columna y me de el total, algo así:

Cita de: Archivo de Texto
10 horas (8.00 - 18.00) / [8.00 - 18.00] - 16, Nov
8 horas (8.00 - 16.00) - 17, Nov
8 horas (8.00 - 16.00) - 18, Nov
------------------------------------------------------------------
Total horas: 450 horas.
Hora ($): 30.
Total: $13500.


¿Alguna otra idea?

(Punteros todavía no estudié).


« Última modificación: 16 Noviembre 2010, 16:09 pm por JuszR » En línea

- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Gestión de horas de trabajo
« Respuesta #1 en: 16 Noviembre 2010, 17:24 pm »

Prueba hacerlo a tu manera , y haces las cuentas a mano si sale bien enorabuena.
si no pide ayuda .


En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
JuszR


Desconectado Desconectado

Mensajes: 2.866


Programming & RI


Ver Perfil
Re: Gestión de horas de trabajo
« Respuesta #2 en: 28 Noviembre 2010, 21:03 pm »

Bueno, adjunto aquí los archivos para el que los quiera ver. Se aceptan críticas, solo tengan en cuenta que obviamente no está terminado, es mi primer programa "interesante" y que no voy a la uni todavía, aprendí todo por la pc.
Me gustaría más que nada que me dijeran qué se podría optimizar/mejorar en el código. ;-)

main.cpp
Código
  1. //
  2. // Name: AdPa
  3. // Version: 0.9
  4. // Description: Prints out hours as many hours as you worked in a file and gives you the total amount
  5. // that you will get.
  6. // Author: (c) Leo Juszkiewicz <leo.jr90@yahoo.com>
  7. // License: Freeware
  8. //
  9.  
  10. #include "stdafx.h"
  11. #include <iostream>
  12. #include "Functions.h"
  13. #include <fstream> // file i/o
  14. #include <windows.h> // Sleep()
  15. #include <string>
  16. #include <cstdio> // remove()
  17. #include <ctime>
  18. #include <iomanip>
  19. #include <vector>
  20.  
  21. using namespace std;
  22.  
  23. const double versionPrograma = 0.9;
  24.  
  25. int main()
  26. {
  27. const char nombArchivo[] = "horas.txt";
  28. system("title AdPa ");
  29. system("COLOR 1E");
  30. do
  31. {
  32. system("cls");
  33. /*char fecha[9];
  34. _strdate_s(fecha);
  35. cout << fecha << endl;*/
  36. Raya();
  37. cout << "\t\tBienvenido a AdPa " << versionPrograma << endl;
  38. Raya();
  39.  
  40. cout << endl << "Selecciona una opcion: " << endl;
  41. cout << endl << "\t 1. Agregar horas" << endl;
  42. cout << endl << "\t 2. Ver archivo" << endl;
  43. cout << endl << "\t 3. Eliminar archivo" << endl;
  44. cout << endl << "\t 4. Hacer cuenta total" << endl;
  45. cout << endl << "\t 5. Licencia" << endl;
  46. cout << endl << "\t 6. SALIR" << endl << endl;
  47. cin >> Opcion;
  48.  
  49.  
  50.  
  51. switch (Opcion)
  52. {
  53.  
  54. case 1:
  55. {
  56.  
  57. int nuevo = 0;
  58. // Primero leemos para ver si existe o no
  59. ifstream Archivo(nombArchivo);
  60. if (Archivo)
  61. {
  62. cout << "\nArchivo existente... Abriendo para escritura" << endl << endl;
  63. // No escribir "titulo"
  64. nuevo = 1;
  65. }
  66. Archivo.close();
  67.  
  68. ofstream escrArchivo(nombArchivo, ios::app);
  69.  
  70. char tiempo[25];
  71.  
  72. cout << "\nCuantas horas trabajaste hoy? (ej. 8 7.00-15.00)" << endl;
  73. cin.ignore();
  74. cin.getline(tiempo, 25);
  75.  
  76. // Si no existe, escribir esto...
  77. if(nuevo == 0)
  78. {
  79. escrArchivo << "Horas\t Horario" << endl;
  80. escrArchivo << "-----------------------------------" << endl;
  81. }
  82.  
  83. // Escribe las horas en el archivo
  84. for(unsigned int i = 0; i < strlen(tiempo); i++)
  85. {
  86. if(tiempo[i] == ' ')
  87. tiempo[i] = '\t';
  88.  
  89. escrArchivo << tiempo[i];
  90. }
  91.  
  92. // Nueva linea para la proxima vez
  93. escrArchivo << endl;
  94.  
  95. escrArchivo.close();
  96. Final();
  97. }
  98. break;
  99.  
  100. case 2:
  101. {
  102. ifstream lee;
  103. lee.open(nombArchivo);
  104. if (!lee)
  105. {
  106. cout << "\nERROR. El archivo no existe (lo renombraste/eliminaste?)" << endl << endl;
  107. Sleep(4000);
  108. break;
  109. }
  110. cout << endl << "Quieres ver el archivo en la consola (1 - aqui) o en notepad (2)?" << endl;
  111. int verArch = -1;
  112. cin >> verArch;
  113.  
  114. // Notepad
  115. if(verArch == 2)
  116. {
  117. system(nombArchivo);
  118. }
  119. else
  120. {
  121. while(lee)
  122. {
  123. std::string Archivo;
  124. getline(lee, Archivo);
  125. cout << Archivo << endl;
  126. // Paramos el programa para que se pueda ver el archivo en consola
  127. cin.get();
  128. }
  129. lee.close();
  130. }
  131.  
  132. Final();
  133. }
  134. break;
  135.  
  136. case 3:
  137. {
  138. ifstream eliminaArch(nombArchivo);
  139. if(eliminaArch.fail())
  140. {
  141. cerr << "El archivo no existe! (Que querias eliminar?)" << endl;
  142. Sleep(5000);
  143. }
  144. else
  145. {
  146. cout << "Estas seguro/a que quieres eliminar el archivo? (S - Si | N - No)" << endl;
  147. char elim = '0';
  148. cin >> elim;
  149.  
  150. if(elim == 'S' || elim == 's')
  151. {
  152. eliminaArch.close();
  153. cout << endl << "Eliminando... " << endl;
  154. ProgressBar();
  155. Sleep(1000);
  156.  
  157. if (remove(nombArchivo) != 0)
  158. cout << endl << "Hubo un error tratando de eliminar el archivo" << endl;
  159. else
  160. cout << "ELIMINADO" << endl;
  161. }
  162. }
  163.  
  164. eliminaArch.close();
  165.  
  166. Final();
  167. }
  168. break;
  169.  
  170. case 4:
  171. {
  172. // Si no se puede abrir, ni siquiera escribas...
  173. ifstream haceCuenta(nombArchivo);
  174. if (!haceCuenta)
  175. {
  176. cerr << "ERROR. No se puede abrir el archivo o no existe" << endl;
  177. Sleep(4000);
  178. break;
  179. }
  180. cout << "Cuanto cobras por hora? (solo se guardara en el archivo, nadie se enterara ;) )" << endl;
  181. float cobroHora;
  182. cin >> cobroHora;
  183. if(cobroHora <= 20.70)
  184. cout << endl << "Bueno, como los ishiros. Hay que ponerse a estudiar!" << endl;
  185. else if(cobroHora > 20.70 && cobroHora < 25.0)
  186. cout << endl <<  "Sueldo razonable" << endl;
  187. else if(cobroHora > 25.0)
  188. cout << endl <<  "Ojala todos cobraran eso" << endl;
  189.  
  190.  
  191. vector<int> vint;
  192. int n;
  193. string str;
  194. while(!haceCuenta.eof() && !haceCuenta.fail())
  195. {
  196. if(!isdigit(haceCuenta.peek()))
  197. {
  198. getline(haceCuenta, str);
  199. continue;
  200. }
  201. haceCuenta >> n;
  202. vint.push_back(n);
  203. getline(haceCuenta, str);
  204. }
  205. if(!haceCuenta.eof())
  206. {
  207. cout << "Error leyendo el archivo" << endl;
  208. return -1;      
  209. }
  210. int totalHoras=0;
  211. for(vector<int>::size_type x=0; x<vint.size(); ++x)
  212. {
  213. cout << setw(2) << vint[x] << endl;
  214. totalHoras += vint[x];
  215. }
  216. cout << endl << "Haciendo cuenta... " << endl;
  217. ProgressBar();
  218. Sleep(1000);
  219. ofstream escribe (nombArchivo, ios::app);
  220. escribe << endl << "----------------------------" << endl;
  221. escribe << "TOTAL HORAS: " << totalHoras << endl;
  222. escribe << "HORA: " << cobroHora << " shekel" << endl;
  223. escribe << "SUELDO TOTAL: " << static_cast<float>(totalHoras * cobroHora) << " shekel";
  224.  
  225. cout << "HORAS: " << totalHoras << endl;
  226. cout << "SUELDO TOTAL: " << static_cast<float>(totalHoras * cobroHora) << endl;
  227.  
  228.  
  229. Final();
  230. }
  231. break;
  232.  
  233. case 5:
  234. system("cls");
  235. system("COLOR A");
  236. Raya();
  237. cout << "\a\t\t\tLICENCIA" << endl;
  238. Raya();
  239. //setlocale(LC_ALL, "spanish");
  240. cout << "AdPa " << versionPrograma <<
  241. " es freeware, lo cual implica que es distribuido gratuitamente. " <<
  242. "\nPuedes copiar, distribuir, modificar (si sabes, claro) total o parcialmente" <<
  243. " este programa, siempre y cuando reserves derechos de autor.\n\n" <<
  244. "\nDudas? Sugerencias? Escribeme... <leo.jr90@yahoo.com>\n\n" <<
  245. "\t (c) Leonardo Juszkiewicz";
  246. cin.ignore();
  247. cin.get();
  248. break;
  249.  
  250. default:
  251. // Si presiona 6 (salir) no mostrar esto
  252. cin.ignore();
  253. if(Opcion != 6)
  254. {
  255. cerr << "Opcion no valida";
  256. Sleep(4000);
  257. }
  258. break;
  259.  
  260. }
  261.  
  262. } while(Opcion != 6);
  263.  
  264. cout << endl << "Gracias por usar AdPa " << versionPrograma << endl;
  265. Sleep(2500);
  266.  
  267. return 0;
  268. }

Functions.h
Código
  1. // Funciones y declaraciones de ellas para main.cpp
  2. #ifndef FUNC_H
  3. #define FUNC_H
  4.  
  5.  
  6. #include "stdafx.h"
  7. #include <iostream>
  8. #include <windows.h>
  9.  
  10. using namespace std;
  11.  
  12. int Opcion = 400;
  13.  
  14. // Imprime una raya para dividir (-)
  15. void Raya()
  16. {
  17. for(int i = 0; i <= 60; i++)
  18. {
  19. cout << "-";
  20.  
  21. if (i == 60)
  22. cout << endl;
  23. }
  24. }
  25.  
  26. // Progress bar
  27. void ProgressBar()
  28. {
  29. char cargador[] = {'\\','|','/','-','|'};
  30.  
  31. for(int i = 0; i < 3; i++)
  32. {
  33. for(int j = 0; j < 5; j++)
  34. {
  35. cout << cargador[j] << "\r";
  36. Sleep(100);
  37. }
  38. }
  39.  
  40. }
  41.  
  42.  
  43. // Mensaje al final de la operacion
  44. void Final()
  45. {
  46. cout << endl << "\n[Presiona 6 para salir. Una tecla diferente para otra operacion]" << endl;
  47. cin >> Opcion;
  48. }
  49.  
  50. #endif
« Última modificación: 28 Noviembre 2010, 21:05 pm por JuszR » En línea

- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Grabar mas de 2 horas en dvd-5
Multimedia
copalm 1 1,822 Último mensaje 3 Enero 2006, 16:25 pm
por Sourraund
Las horas de trabajo, el momento preferido para comprar online
Noticias
wolfbcn 0 1,285 Último mensaje 29 Abril 2012, 22:34 pm
por wolfbcn
El hacker FenniC de Anonymous ha sido condenado a 60 horas de trabajo no ....
Noticias
wolfbcn 1 2,120 Último mensaje 3 Febrero 2013, 01:55 am
por Cergath
Francia prohíbe atender mails y llamadas de trabajo después de las 18:00 horas
Noticias
wolfbcn 0 1,470 Último mensaje 11 Abril 2014, 01:56 am
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines