Advertisement
davidcastrosalinas

20201020 Código de ejemplo que permite crear un archivo de log con información de fecha y hora

Oct 20th, 2020
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.97 KB | None | 0 0
  1. /**
  2.  * @brief Herencia utilizando archivos
  3.  * @author David Castro Salinas
  4.  * @date 10/2020
  5.  * @note Ejercicio para completar por los estudiantes de Herencia utilizando archivos de header(.h cabecera) e implementación(.cpp)
  6.  */
  7.  
  8.  
  9. //**************************************************************/
  10. //                      archivo main.cpp                        /
  11. //**************************************************************/
  12.  
  13. #include <iostream>
  14.  
  15. using namespace std;
  16. #include "Persona.h"
  17.  
  18. int main()
  19. {
  20.     Persona p;
  21.     p.ver();
  22.     cout <<"\nfecha: ";
  23.     p.setFecha(5,8,2020);
  24.     p.verFecha();
  25.  
  26.     cout <<"\nfecha: ";
  27.     Persona diego(1,3,1980);
  28.     diego.verFecha();
  29.  
  30.  
  31.     Persona pedrito(2,6,1998, 1313,'K');
  32.     pedrito.verRut();
  33.     return 0;
  34. }
  35.  
  36.  
  37. //**************************************************************/
  38. //                      archivo Persona.h                       /
  39. //**************************************************************/
  40.  
  41. #ifndef PERSONA_H_INCLUDED
  42. #define PERSONA_H_INCLUDED
  43.  
  44. #include "Fecha.h"
  45. #include "Rut.h"
  46. class Persona: public Fecha, public Rut{
  47. public:
  48.     //constructor parametrizado
  49.     Persona(string n="") : nombre(n){
  50.     }
  51.  
  52.     //constructor parametrizado que llama a otro constructor e inicializa la clase heredada
  53.     Persona(int d, int m, int a) : Fecha(d, m, a){
  54.         nombre ="";
  55.     }
  56.  
  57.     //constructor parametrizado que llama a dos constructores e inicializa las clases heredadas
  58.     Persona(int d, int m, int a, int r, char c) : Fecha(d, m, a), Rut(r, c){
  59.         nombre ="";
  60.     }
  61.  
  62.     //constructor parametrizado que llama a otro constructor e inicializa la clase heredada e inicializa un atributo propio de la clase
  63.     Persona(int d, int m, int a, string s) : Fecha(d, m, a), nombre(s){
  64.     }
  65.  
  66.     //constructor parametrizado que llama a dos constructores e inicializa las clases heredadas e inicializa un atributo propio de la clase
  67.     Persona(int d, int m, int a, int r, char c, string s) : Fecha(d, m, a), Rut(r, c), nombre(s){
  68.     }
  69.  
  70.     void ver();
  71.     void mostrarElRut();
  72. private:
  73.     string nombre;
  74. };
  75.  
  76. #endif // PERSONA_H_INCLUDED
  77.  
  78.  
  79.  
  80. //**************************************************************/
  81. //                      archivo Persona.cpp                     /
  82. //**************************************************************/
  83.  
  84. //incluíomos el archivo de encabezado o header
  85. #include "Persona.h"
  86. #include "iostream"
  87.  
  88. void Persona::ver(){
  89.     std::cout << "ejemplo de clase persona";
  90. }
  91.  
  92. //accedemos al rut interno
  93. void Persona::mostrarElRut(){
  94.     Rut::ver();
  95. }
  96.  
  97.  
  98.  
  99. //**************************************************************/
  100. //                      archivo Fecha.h                         /
  101. //**************************************************************/
  102.  
  103. #ifndef FECHA_H_INCLUDED
  104. #define FECHA_H_INCLUDED
  105.  
  106. #include "string"
  107. #include "iostream"
  108.  
  109. /**
  110.  * @class Fecha
  111.  * @brief Clase incompleta, se debe incluir las validaciones
  112.  */
  113.  using namespace std;
  114. class Fecha {
  115. public:
  116.     Fecha();
  117.     Fecha(int _d, int _m, int _a): dia(_d), mes(_m), anho(_a){}
  118.  
  119.     void setAnho(int);
  120.     void setMes(int);
  121.     void setDia(int);
  122.  
  123.     int getAnho();
  124.     int getMes();
  125.     int getDia();
  126.  
  127.     bool isValida(Fecha);
  128.     bool setFechaValidar(Fecha);
  129.     int getFechaAAAAMMDD();
  130.     void setFecha(Fecha );
  131.     string toString();
  132.     string toString(string);
  133.  
  134.     bool sonIguales(const Fecha &);
  135.  
  136.  
  137.     void setFecha(int, int, int);
  138.     void ver();
  139.     void verFecha();
  140.  
  141.  
  142. private:
  143.     int dia;
  144.     int mes;
  145.     int anho;
  146. };
  147.  
  148.  
  149. #endif // FECHA_H_INCLUDED
  150.  
  151.  
  152.  
  153.  
  154. //**************************************************************/
  155. //                      archivo Fecha.cpp                       /
  156. //**************************************************************/
  157.  
  158.  
  159.  
  160. #include "Fecha.h"
  161. #include "iostream"
  162. #include "ctime"
  163. using namespace std;
  164.  
  165.  
  166. Fecha::Fecha(){
  167.     time_t t = time(NULL); //#include <ctime>
  168.     tm* timePtr = localtime(&t);
  169.     anho = timePtr->tm_year+1900;
  170.     mes  = timePtr->tm_mon+1;
  171.     dia  = timePtr->tm_mday;
  172. }
  173.  
  174. void Fecha::setAnho(int _valor){
  175.     this->anho = _valor;
  176. }
  177.  
  178. void Fecha::setMes(int _valor){
  179.     this->mes = _valor;
  180. }
  181.  
  182. void Fecha::setDia(int _valor){
  183.     this->dia = _valor;
  184. }
  185.  
  186. int Fecha::getAnho(){
  187.     return this->anho;
  188. }
  189. int Fecha::getMes(){
  190.     return this->mes;
  191. }
  192. int Fecha::getDia(){
  193.     return this->dia;
  194. }
  195.  
  196. void Fecha::ver() {
  197.     cout <<toString("/");
  198. }
  199.  
  200. void Fecha::verFecha() {
  201.     cout <<toString("/");
  202. }
  203.  
  204.  
  205.  
  206. bool Fecha::isValida(Fecha fechaValidar){
  207.  
  208.     if(fechaValidar.getAnho() > 3000 || fechaValidar.getAnho() < 1900)
  209.         return false;
  210.  
  211.     if(fechaValidar.getMes()>12 || fechaValidar.getMes() < 1)
  212.         return false;
  213.  
  214.     if(fechaValidar.getMes() == 2 && fechaValidar.getDia() > 29)
  215.         return false;
  216.  
  217.     if(fechaValidar.getDia() > 31 || fechaValidar.getDia() < 0)
  218.         return false;
  219.  
  220.     //pendiente validar bisiestos
  221.  
  222.     return true;
  223. }
  224.  
  225. bool Fecha::setFechaValidar(Fecha fechaIngresar){
  226.     if(!this->isValida(fechaIngresar)) {
  227.         cout <<"\nfecha inválida\n";
  228.         return false;
  229.     }
  230.     this->dia = fechaIngresar.getDia();
  231.     this->mes = fechaIngresar.getMes();
  232.     this->anho = fechaIngresar.getAnho();
  233.     return true;
  234. }
  235.  
  236.  
  237. int Fecha::getFechaAAAAMMDD(){
  238.     return getAnho()*10000+getMes()*100+getDia();
  239. }
  240.  
  241. void Fecha::setFecha(Fecha _fecha) {
  242.     setDia(_fecha.getDia());
  243.     setMes(_fecha.getMes());
  244.     setAnho(_fecha.getAnho());
  245. }
  246.  
  247. string Fecha::toString(string separador) {
  248.     string fecha = "";
  249.  
  250.     if(getDia() < 10)
  251.         fecha = "0";
  252.     fecha += to_string(getDia()) + separador;
  253.  
  254.     if(getMes() < 10)
  255.         fecha += '0';
  256.     fecha += to_string(getMes()) + separador;
  257.  
  258.     fecha += to_string(getAnho());
  259.  
  260.     return fecha;
  261. }
  262.  
  263. string Fecha::toString() {
  264.     return toString("_");
  265. }
  266.  
  267.  
  268. bool Fecha::sonIguales(const Fecha &fechaOther){
  269.     return (this->dia == fechaOther.dia )
  270.          &&(this->mes == fechaOther.mes )
  271.          &&(this->anho== fechaOther.anho );
  272. }
  273.  
  274.  
  275. void Fecha::setFecha(int _d, int _m, int _a){
  276.     dia =_d;
  277.     mes = _m;
  278.     anho = _a;
  279. }
  280.  
  281.  
  282.  
  283.  
  284. //**************************************************************/
  285. //                      archivo Rut.h                           /
  286. //**************************************************************/
  287. #ifndef RUT_H_INCLUDED
  288. #define RUT_H_INCLUDED
  289.  
  290. class Rut{
  291. public:
  292.     Rut();
  293.     Rut(int a, char c);
  294.     void ver();
  295.     void verRut();
  296. };
  297.  
  298.  
  299. #endif // RUT_H_INCLUDED
  300.  
  301. //**************************************************************/
  302. //                      archivo Rut.cpp                         /
  303. //**************************************************************/
  304.  
  305. #include "Rut.h"
  306. #include "iostream"
  307.  
  308. Rut::Rut(){
  309. }
  310.  
  311.  
  312. Rut::Rut(int a, char c){
  313. }
  314.  
  315. void Rut::ver(){
  316.     std::cout <<"\nEste es el rut solo"<<std::endl;
  317. }
  318.  
  319. void Rut::verRut(){
  320.     std::cout <<"\nEste es el rut"<<std::endl;
  321. }
  322.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement