Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/03/2016, 12:38
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: headers, carpetas y menúes c++

Hola, gracias por responder, verás te hice caso y adapté lo que me dijiste pero me da error en todos los headers y no sé porque:

ManPersonas.h

Código C++:
Ver original
  1. #include <list>
  2. #include <algorithm>
  3. #include "Persona.h"
  4. #ifndef CONTRPERSONAS_H
  5. #define CONTRPERSONAS_H
  6. using namespace std;    
  7.     std::list<Persona>lista;
  8.     static int maxIdP = 0;
  9.     int getMaxIdP(){
  10.         return ++maxIdP;
  11.     }
  12.     bool check(const Persona& p){
  13.         int num_reg = std::count_if(lista.begin(),lista.end(),[&p](const Persona& p2){
  14.             return p2.nom == p.nom;
  15.         });
  16.         return num_reg > 0;
  17.     }
  18.     Persona* getRow(std::string xnom){
  19.         Persona* toReturn = NULL; // inicialización de puntero nulo
  20.         auto it = std::find_if(lista.begin,lista.end,[&xnom](const Persona& p){
  21.             return p.nom == xnom;
  22.         });    
  23.         if( it != lista.end())
  24.             toReturn = &(it); // it
  25.         return toReturn;
  26.     }
  27.     Persona* getRow(int xid){
  28.         Persona* toReturn = nullptr; // inicialización de puntero nulo
  29.         auto it = std::find_if(lista.begin,lista.end,[&xid](const Persona& p){
  30.             return p.id == xid;
  31.         });    
  32.         if( it != lista.end())
  33.             toReturn = &(it); // it
  34.         return toReturn;
  35.     }
  36.     bool create(Persona p){
  37.         if(check(p)){            
  38.             return false;
  39.         }
  40.         else{
  41.             lista.push_back(p);
  42.             return true;
  43.         }
  44.     }
  45.     bool update(Persona p){
  46.         /*
  47.         Persona p1 = getRow(p.id);
  48.         if(p1.nom != p.nom){
  49.             if(check(p)){
  50.                 return false;                
  51.             }            
  52.         }        
  53.         lista[ind] = p;
  54.         ind = 0;
  55.         return true; */
  56.     }
  57.     void remove(Persona p){
  58.         if(check(p)){
  59.             lista.remove(p);
  60.         }
  61.     }
  62.     std::list<Persona> read(){
  63.         return lista;        
  64.     }
  65.    
  66. #endif  /* CONTRPERSONAS_H */

Persona.h

Código C++:
Ver original
  1. #ifndef PERSONA_H
  2. #define PERSONA_H
  3. using namespace std;
  4. struct Persona{
  5.     int id;
  6.     string nom;
  7.     string ape;
  8. };
  9. #endif  /* PERSONA_H */

Util.h

Código C++:
Ver original
  1. #ifndef UTIL_H
  2. #define UTIL_H
  3. using namespace std;
  4. bool checkInt(int s){
  5.     return s >= 48 and s <= 57;
  6. }
  7. bool checkStr(string s){
  8.     for(int i=0; i < s.size(); i++){
  9.         if((s[i] >= 65 and s[i]<= 90) or (s[i] >= 90 and s[i]<= 122)){
  10.             return true;
  11.         }
  12.     }
  13.     return false;
  14. }
  15. void pause(int dur) {
  16.     int temp = time(NULL) + dur;
  17.     while(temp > time(NULL));
  18. }
  19. string addString(string type){
  20.     int intento = 1;
  21.     string nom = "";    
  22.     while(!checkStr(nom)){
  23.         cout << "\n intento nro "<< intento << " Ingrese " << type <<": ";
  24.         cin >> nom;
  25.         intento++;
  26.     }
  27.     return nom;
  28. }
  29. int addInt(string type){
  30.     int intento = 1;
  31.     int nro;    
  32.     while(!checkInt(nro)){
  33.         cout << "\n intento nro "<< intento << " Ingrese " << type <<": ";
  34.         cin >> nro;
  35.         intento++;
  36.     }
  37.     return nro;
  38. }
  39. #endif  /* UTIL_H */

crud_per.h

Código C++:
Ver original
  1. #include <iostream>
  2. #include "Util.h"
  3. #include "ManPersonas.h"
  4. #ifndef CRUD_PER_H
  5. #define CRUD_PER_H
  6. using namespace std;
  7. void created(){
  8.     int op;
  9.     cout << "\n ¿Desea crear una nueva persona? Aceptar=1/Cancelar=2 : ";
  10.     cin >> op;
  11.     if(op == 1) {
  12.         Persona p;
  13.         p.id = getMaxIdP();
  14.         p.nom = addString("Nombre");
  15.         p.ape = addString("Apelido");
  16.         if(create(p)){
  17.             cout << "\n persona creada :)" << endl;            
  18.         }
  19.         else {
  20.             cout << "\n la persona ya existe :(" << endl;
  21.         }                        
  22.     }
  23.     else if(op == 2) {        
  24.         pause(2);
  25.     }
  26.     else {
  27.         cout << "\n error :(" << endl;
  28.     }
  29. }
  30. void updated(){  
  31.     int op;
  32.     string xnom;
  33.     Persona p;
  34.     xnom = addString("Nombre para la búsqueda");
  35.     p = getRow(xnom);
  36.     cout << "\n Persona: " << p.id << " Nombre: " << p.nom << " Apellido: " << p.ape;
  37.     cout << "\n ¿Desea algún dato? Aceptar=1/Cancelar=2 :";
  38.     cin >> op;
  39.     if(op == 1){
  40.         cout << "\n ¿Desea editar el nombre ("<< p.nom <<") actual? Aceptar=1/Cancelar=2 :";
  41.         cin >> op;
  42.         if(op == 1){
  43.             p.nom = addString("Nombre");
  44.         }
  45.         else {
  46.             pause(2);
  47.         }
  48.         cout << "\n ¿Desea editar el apellido ("<< p.ape <<") actual? Aceptar=1/Cancelar=2 :";
  49.         cin >> op;
  50.         if(op == 1){
  51.             p.ape = addString("Apellido");
  52.         }
  53.         else {
  54.             pause(2);
  55.         }
  56.         if(update(p)){            
  57.             cout << "\n persona editada :)" << endl;            
  58.         }
  59.         else {
  60.             cout << "\n la persona ya existe :(" << endl;
  61.         }
  62.     }
  63.     else if(op == 2) {        
  64.         pause(2);
  65.     }
  66.     else {
  67.         cout << "\n error :(" << endl;
  68.     }
  69. }
  70. void deleted(){
  71.     int op;
  72.     string xnom;
  73.     Persona p;
  74.     xnom = addString("Nombre para la búsqueda");
  75.     p = getRow(xnom);
  76.     cout << "\n Persona: " << p.id << " Nombre: " << p.nom << " Apellido: " << p.ape;
  77.     cout << "\n ¿Desea eliminar la persona seleccionada? Aceptar=1/Cancelar=2 :";
  78.     cin >> op;
  79.     if(op == 1){
  80.         remove(p);
  81.         cout << "\n persona eliminada :)" << endl;
  82.     }
  83.     else if(op == 2) {        
  84.         pause(2);
  85.     }
  86.     else {
  87.         cout << "\n error :(" << endl;
  88.     }
  89. }
  90. void listed(){
  91.     cout << "\n ---Mostrar Personas--- \n";        
  92.     cout << "Persona\t  Nombre\t  Apellido \n";
  93.     for(std::list<Persona>::iterator it = read().begin(); it != read().end(); it++) {
  94.         cout << (it)->id << "\t  " << (it)->nom << "\t  " << (it)->ape << "\n";
  95.     }
  96. }
  97. #endif  /* CRUD_PER_H */

menu_per.h
Código C++:
Ver original
  1. #include "Util.h"
  2. #include "crud_per.h"
  3. #ifndef MENU_PER_H
  4. #define MENU_PER_H
  5. void menu(){
  6.     int op;
  7.     cout << "\n ---CRUD Personas---\n";
  8.     cout << "\n 1. Crear Persona";
  9.     cout << "\n 2. Editar Persona";
  10.     cout << "\n 3. Borrar Persona";
  11.     cout << "\n 4. Mostrar Personas";
  12.     cout << "\n 5. Salir \n";
  13.     op = addInt("Opción");
  14.     while (op != 5){
  15.         switch(op){
  16.             case 1:
  17.                 created();
  18.                 break;  
  19.             case 2:
  20.                 updated();
  21.                 break;
  22.             case 3:
  23.                 deleted();
  24.                 break;    
  25.             case 4:
  26.                 listed();
  27.                 break;
  28.             default:
  29.                 cout << "\n Error :( \n";
  30.                 break;    
  31.         }
  32.     }
  33.     cout << "\n Gracias por usarme ;) \n";
  34.     pause(2);
  35. }
  36. #endif  /* MENU_PER_H */

Espero sus respuestas y saludos.