Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - jtrujilloj

#1
Programación C/C++ / Bucle Infinito ayuda.
13 Febrero 2018, 02:25 AM
Estoy tratando de hacer un programa que registre datos de una veterinaria al ingresar el 2do cliente y luego pasar al reporte o trato de eliminar un cliente me tira un bucle infinito aqui esta el codigo ayuda por favor.

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <windows.h>
#include <string>
#include <stdio.h>
#include <stdlib.h>



using namespace std;
//DEFINIENDO LAS VARIABLES NECESARIAS
string nombre, auxnombre, apellido, numero,nombreMascota,tipoMascota,edadMascota;
int clave = 0, auxclave = 0;
char grupo[10];
char opca;
bool encontrado = false;


void altas()
{
   ///Variables de la biblioteca fstream para el manejo de archivos
   ofstream escritura;
   ifstream consulta;

   do {
      escritura.open("alumnos.txt", ios::out | ios::app);//crea y escribe, si ya tiene texto une al final del archivo
      consulta.open("alumnos.txt", ios::in);//solamente consulta o lee usando la variable sobre el archivo físico alumnos.txt

      if (escritura.is_open() && consulta.is_open()) {


         bool repetido = false;

         cout << "\n";
         cout << "\tIngresa el nit del cliente:    ";
         cin >> auxclave;

         ///A continuación se aplica el tipo de lectura de archivos secuencial
         consulta >> clave;
         while (!consulta.eof()) {
            consulta >> nombre >> apellido >> grupo >> numero;
            if (auxclave == clave) {
               cout << "\t\tEl NIT ya esta registrado...\n";
               repetido = true;
               break;
            }
            consulta >> clave;
         }

         if (repetido == false) {
            cout << "\tIngresa el nombre del cliente:   ";
            cin >> nombre;

            cout << "\tIngresa el apellido del cliente:    ";
            cin >> apellido;
            cout << "\tIngresa el telefono del cliente:     ";
            cin >> numero;
            cout << "\t Ingrese el nombre de la mascota      ";
            cin >> nombreMascota;
            cout << "\tIngrese el tipo de mascota    ";
            cin >> tipoMascota;
            cout << "\t Edad de la mascota      ";
            cin >> edadMascota;
            //ESCRIBIENDO LOS DATOS CAPTURADOS POR EL USUARIO EN EL ARCHIVO
            escritura << auxclave << " " << nombre << " " << apellido << " " << numero << " " << nombreMascota << " " << tipoMascota << " " << edadMascota << endl;
            cout << "\n\tRegistro agregado...\n";
         }

         cout << "\n\tDeseas ingresar otro cliente? (S/N): ";
         cin >> opca;

      }
      else {
         cout << "El archivo no se pudo abrir \n";
      }

      escritura.close();
      consulta.close();

   } while (opca == 'S' or opca == 's');

}












void bajas()
{
   ofstream aux;
   ifstream lectura;

   encontrado = false;

   aux.open("auxiliar.txt", ios::out);
   lectura.open("alumnos.txt", ios::in);

   if (aux.is_open() && lectura.is_open()) {

      cout << "\n";
      cout << "\tIngresa el nit del cliente que deseas eliminar: ";
      cin >> auxclave;

      ///De nuevo se aplica el tipo de lectura de archivos secuencial, esto quiere decir que lee campo por campo hasta
      ///hasta llegar al final del archivo gracias a la función .eof()
      lectura >> clave;
      while (!lectura.eof()) {
         lectura >> nombre >> apellido >> grupo >> numero;
         if (auxclave == clave) {
            encontrado = true;
            cout << "\n";
            cout << "\tNit:    " << clave << endl;
            cout << "\tNombre:   " << nombre << endl;
            cout << "\tSemestre: " << apellido << endl;

            cout << "\tEdad:     " << numero << endl;
            cout << "\tNombre mascota" << nombreMascota << endl;
            cout << "\tTipo mascota" << tipoMascota << endl;
            cout << "\tEdad mascota" << edadMascota << endl;
            cout << "\t________________________________\n\n";
            cout << "\tRealmente deseas eliminar el registro actual (S/N)? ---> ";
            cin >> opca;

            if (opca == 'S' or opca == 's') {
               cout << "\n\n\t\t\tRegistro eliminado...\n\n\t\t\a";
            }
            else {
               aux << clave << " " << nombre << " " << apellido << " " << numero << " " << nombreMascota << " " << tipoMascota << " " << edadMascota << endl;
            }

         }
         else {
            aux << clave << " " << nombre << " " << apellido << " " << numero << " " << nombreMascota << " " << tipoMascota << " " << edadMascota << endl;
         }
         lectura >> clave;
      }
   }
   else {
      cout << "\n\tEl archivo no se pudo abrir \n";
   }

   if (encontrado == false) {
      cout << "\n\tNo se encontro ningun registro con la clave: " << auxclave << "\n\n\t\t\t";
   }

   aux.close();
   lectura.close();
   remove("alumnos.txt");
   rename("auxiliar.txt", "alumnos.txt");
}













void consultas()
{
   //Lectura de archivos

   ifstream lectura;
   lectura.open("alumnos.txt", ios::out | ios::in);//CREA, ESCRIBE O LEE
   if (lectura.is_open()) {
      //LEYENDO Y MOSTRANDO CADA CAMPO DEL ARCHIVO DE FORMA SECUENCIAL
      lectura >> clave;
      while (!lectura.eof()) {
         lectura >> nombre >> apellido >> grupo >> numero;
         cout << "\n";
         cout << "\tClave:    " << clave << endl;
         cout << "\tNombre:   " << nombre << endl;
         cout << "\tApellido: " << apellido << endl;
         cout << "\tNumero:     " << numero << endl;
         cout << "\tNombre mascota" << nombreMascota << endl;
         cout << "\tTipo mascota" << tipoMascota << endl;
         cout << "\tEdad mascota" << edadMascota << endl;
         lectura >> clave;
         cout << "\t________________________________\n";
      }

   }
   else {
      cout << "El archivo no se pudo abrir \n";
   }
   lectura.close();
}











void buscar()
{
   ifstream lectura;
   lectura.open("alumnos.txt", ios::out | ios::in);

   encontrado = false;

   if (lectura.is_open()) {
      cout << "\n\tIngresa la clave del alumno que deseas buscar: ";
      cin >> auxclave;

      lectura >> clave;
      while (!lectura.eof()) {
         lectura >> nombre >> apellido >> grupo >> numero;
         //comparar cada registro para ver si es encontrado

         if (auxclave == clave) {
            cout << "\n";
            cout << "\tNit:    " << clave << endl;
            cout << "\tNombre:   " << nombre << endl;
            cout << "\tApellido: " << apellido << endl;
            cout << "\tNumero:     " << numero << endl;
            cout << "\tNombre mascota" << nombreMascota << endl;
            cout << "\tTipo mascota" << tipoMascota << endl;
            cout << "\tEdad mascota" << edadMascota << endl;
            cout << "\t________________________________\n";
            encontrado = true;
            break;
         }//fin del if mostrar encontrado

          //lectura adelantada
         lectura >> clave;
      }//fin del while
      if (encontrado == false) {
         cout << "\n\n\tNo hay registros con la clave: " << auxclave << "\n\n\t\t\t";
      }
   }
   else {
      cout << "\n\tAun no se pudo abrir el archivo...";
   }

   lectura.close();
}







void modificar()
{
   ofstream aux;
   ifstream lectura;

   encontrado = false;

   aux.open("auxiliar.txt", ios::out);
   lectura.open("alumnos.txt", ios::in);

   if (aux.is_open() && lectura.is_open()) {

      cout << "\n";
      cout << "\tIngresa la clave del alumno que deseas modificar: ";
      cin >> auxclave;

      lectura >> clave;
      while (!lectura.eof()) {
         lectura >> nombre >> apellido >> grupo >> numero;
         if (auxclave == clave) {
            encontrado = true;
            cout << "\n";
            cout << "\tClave:    " << clave << endl;
            cout << "\tNombre:   " << nombre << endl;
            cout << "\tSemestre: " << apellido << endl;
            cout << "\tGrupo:    " << grupo << endl;
            cout << "\tEdad:     " << numero << endl;
            cout << "\t________________________________\n\n";
            cout << "\tIngresa el nuevo nombre del alumno con la clave: " << auxclave << "\n\n\t---> ";
            cin >> auxnombre;

            aux << clave << " " << auxnombre << " " << apellido << " "  << numero << endl;
            cout << "\n\n\t\t\tRegistro modificado...\n\t\t\a";
         }
         else {
            aux << clave << " " << nombre << " " << apellido <<  " " << numero << endl;
         }
         lectura >> clave;
      }
   }
   else {
      cout << "\n\tEl archivo no se pudo abrir \n";
   }

   if (encontrado == false) {
      cout << "\n\tNo se encontro ningun registro con la clave: " << auxclave << "\n\n\t\t\t";
   }

   aux.close();
   lectura.close();
   remove("alumnos.txt");
   rename("auxiliar.txt", "alumnos.txt");
}







int main()
{
   system("color f0");
   int opc;

   do {
      system("cls");

      cout << "\n\t Ingreso de datos Veterinaria\n\n";
      cout << "\n\t1.-Altas";
      cout << "\n\t2.-Eliminar";
      cout << "\n\t3.-Consultas";
      cout << "\n\t4.-Buscar un registro";
      cout << "\n\t5.-Modificaciones";
      cout << "\n\t6.-Salir";
      cout << "\n\n\tElige una opcion:  ";
      cin >> opc;
      switch (opc)
      {
      case 1: {
         system("cls");
         altas();
         cout << "\n\t\t";
         system("pause");
         break;
      }
      case 2: {
         system("cls");
         bajas();
         cout << "\n\t\t";
         system("pause");
         break;
      }

      case 3: {
         system("cls");
         consultas();
         cout << "\n\t\t";
         system("pause");
         break;
      }
      case 4: {
         system("cls");
         buscar();
         cout << "\n\t\t";
         system("pause");
         break;
      }
      case 5: {
         system("cls");
         modificar();
         cout << "\n\t\t";
         system("pause");

         break;
      }
      case 6: {
         cout << "\n\n\tHa elegido salir...\n\n\t\t"; system("pause");
         break;
      }
      default: {
         cout << "\n\n\tHa elegido una opcion inexistente...\n\n\t\t"; system("pause");
         break;
      }
      }//fin switch

   } while (opc != 6);

   system("cls");

   return 0;
}