este seria mi avanze hasta ahora estoy fallando en el modificar ya que me guarda los datos pero no elimina los datos anteriores ligados al codigo y tambien que no se como igualar los numeros de las lista a la variable de numero de bus gracias por su ayuda
Código (c) [Seleccionar]
#include<stdio.h>
#include<windows.h>
FILE * archivo;
struct pasajero
{
int cod, numbus,edad,ruta,identidad[13];
char nombre[50],telefono[8];
}pas;
struct Nodo
{
int dato;
Nodo *siguiente;
};
Nodo * lista =NULL;
//--------------------------------------------------------
int validar(int valor, int li, int ls)
{
while(valor < li || valor > ls)
{
printf("\n Error...Ingrese un valor entre [%d] y [%d]: ", li, ls);
scanf("%d",&valor);
}
return valor;
}
//.----------------------------------------------------
void consultar()
{
system("cls");
int codigo;
archivo = fopen("pasajero.txt","rt");
if(archivo == NULL)
printf("\nEL archivo no existe.");
else
{
printf("\n Ingrese el codigo del pasajero: ");
scanf("%d", &codigo);
printf("\n codigo Nombre Identidad Edad telefono numero de bus \n");
while(!feof(archivo))
{
fscanf(archivo, "%d %s %d %d %s %d ",&pas.cod , &pas.nombre, &pas.identidad, &pas.edad, &pas.telefono,&pas.ruta );
if(pas.cod==codigo)
{
printf("%5d %5s %8d %5d %10s %4d \n\n",pas.cod,pas.nombre,pas.identidad,pas.edad,pas.telefono,pas.ruta);
break;
}
else if(feof(archivo))
printf("\n pasajero no encontrado\n\n");
}
}
system("pause");
fclose(archivo);
}
//-------------------------------------------
void busactivo(Nodo * &lista, int num)
{
Nodo *j = lista;
bool encontrado = false;
while((j != NULL) && (j -> dato <= num )){
if ( j -> dato == num)
encontrado = true;
j = j -> siguiente;
}
if (encontrado == true)
printf("\n El bus numero [%d] esta activo \n",&num);
else
printf("\n El bus numero [%d] NO esta activo \n",&num);
system("pause");
}
//-------------------------------------------
void agregararchi()
{
int num;
archivo = fopen("pasajero.txt", "rt" );
if(archivo!= NULL)
{
printf("\nEl archivo ya existe.");
}
else
{
archivo = fopen("pasajero.txt", "wt" );
printf("\nEl archivo se ha creado.");
}
char resp;
archivo = fopen("pasajero.txt","rt");
if(archivo == NULL)
{
printf("\nEl archivo no existe");
}
else
{
system("cls");
archivo = fopen("pasajero.txt", "at" );
do
{
printf("\n\tDatos de pasajero.");
printf("\n\t*****\n");
//for para agregar numero de asientos ------>pendiente
printf("\nIngrese codigo del pasajero: ");
scanf("%d", &pas.cod);
pas.cod=validar(pas.cod,1,999);
printf("\nIngrese Nombre del pasajero: ");
scanf("%s", &pas.nombre);
printf("\nIngrese Identidad del Pasajero: ");
scanf("%d", &pas.identidad);
printf("\nIngrese la edad del Pasajero: ");
scanf("%d", &pas.edad);
pas.edad=validar(pas.edad,1,99);
printf("\nIngrese numero de telefono del Pasajero: ");
scanf("%s", &pas.telefono);
printf("\n\t -RUTAS DISPONIBLES-");
printf("\n\t--------------------");
printf("\n\t|Ruta[1]...TEG-->SPS|");
printf("\n\t|-------------------|");
printf("\n\t|Ruta[2]...TEG-->CHO|");
printf("\n\t--------------------");
printf("\nIngrese su ruta deseada: ");
scanf("%d",&pas.ruta);
switch(pas.ruta)
{
case 1 :
printf("\nBus numero 1");
fprintf(archivo,"\nSu numero de bus es [%d]",pas.ruta);
break;
case 2 :
printf("\nBus numero 2");
fprintf(archivo,"\nSu numero de bus es [%d]",pas.ruta);
break;
}
fprintf(archivo, "\nCodigo del Pasajero: ");
fprintf(archivo, "%2d", pas.cod);
fprintf(archivo, "\nNombre del Pasajero: ");
fprintf(archivo, "%2s", pas.nombre);
fprintf(archivo, "\nIdentidad del Pasajero: ");
fprintf(archivo, "%2d", pas.identidad);
fprintf(archivo, "\nEdad del Pasajero: ");
fprintf(archivo, "%2d", pas.edad);
fprintf(archivo, "\nTelefono del Pasajero: ");
fprintf(archivo, "%2s", pas.telefono);
fprintf(archivo, "\nRuta: ");
fprintf(archivo, "%d", pas.ruta);
switch(pas.ruta)
{
case 1:
fprintf(archivo,"RUTA #1...TEG-->SPS\n");
break;
case 2:
fprintf(archivo,"RUTA #2...TEG-->CHO\n");
}
do
{
printf("\n%cDesea agregar otro pasajero ?: ",168);
scanf("%s", &resp);
resp = toupper(resp);
if(resp != 'S' && resp != 'N')
printf("\n Error... Ingrese [S o N]");
} while(resp != 'S' && resp != 'N');
}while(resp=='S');
}
system("pause");
fclose(archivo);
}
//-------------------------------------------
void mostrar(Nodo*lista)
{
Nodo *i=lista;
if(lista==NULL){
printf ("\n\t** LISTA VACIA **\n");
}else{
while((i!=NULL)){
printf("bus[%d] --> ",i->dato);
i=i->siguiente;
}
printf("No hay mas buses encontados ");
}
printf("\n\n");
system("pause");
}
//-------------------------------------------
void agregar(Nodo *&lista, int &num)
{
Nodo * nuevo_nodo = new Nodo();
nuevo_nodo -> dato = num;
Nodo * auxi1 = lista;
Nodo * auxi2;
while((auxi1 != NULL) && ( auxi1 -> dato))
{
auxi2 = auxi1;
auxi1 = auxi1 -> siguiente;
}
if(lista == auxi1)
lista = nuevo_nodo;
else
auxi2 -> siguiente = nuevo_nodo;
nuevo_nodo-> siguiente = auxi1;
system("cls");
printf("\n El bus[%d] se agrego correctamente \n", num);
}
//--------------------------------------------
void menu()
{
int id;
char res;
int num;
int opc, marcador;
do
{
system("cls");
printf("\n\tTerminal de buses:" );
printf("\n\t** *\n" );
printf("\n [1]... Agregar cliente al bus" );
printf("\n [2]... Mostrar todos los buses disponibles" );
printf("\n [3]... Agregar pasajeros al autobus" );
printf("\n [4]... Consultar pasajero" );//cessar
printf("\n [5]... Modificar datos del pasajero " );//jose
printf("\n [6]... Eliminar pasajero");//andres
printf("\n [7]... Salir " );
do
{
printf("\nIngrese su opcion [1-7]: ");
scanf("%d", &opc);
if(opc<1 || opc>7)
printf("\nError...Ingrese su opci%cn de [1-7]: ",162);
}while(opc<1 || opc>7);
switch(opc)
{
case 1:
system("cls");
printf ("\n\t Ingreso de Buses a la Lista Disponible");
printf ("\n\t *** * ** * * ** ****\n");
do
{
printf("\nIngrese el numero Bus en Estado Disponible: ");
scanf("%d",&num);
num=validar(num,1,5);
agregar(lista,num);
do
{
printf("\n%cDesea Agregar otro Bus Disponible[S-N]: ",168);
scanf("%s",&res);
res = toupper(res);
if (res != 'S' && res != 'N')
printf("\n Error... opci%cn incorrecta\n",162);
}while(res != 'S' && res !='N');
}while(res == 'S');
break;
case 2:
system("cls");
printf ("\n Consulta los buses disponibles en la LISTA ");
printf ("\n ****** \n");
mostrar(lista);
break;
case 3:
system("cls");
printf("\nIngrese datos del pasajero");
agregararchi();
break;
case 4:
printf("\n\t----Consultar Datos----");
printf("\n\t***********************\n");
consultar();
break;
case 5:
system("cls");
printf("\n\t----- MODIFICAR DATOS -----");
printf("\n\t*********\n");
printf("\n Ingrese el codigo de pasajero a buscar: ");
scanf("%d", &id);
if(archivo == NULL)
{
printf("\nEl archivo no existe");
}
else if(id==pas.cod)
{
system("cls");
archivo = fopen("pasajero.txt", "at" );
printf("\n\tDatos de pasajero.");
printf("\n\t*****\n");
//for para agregar numero de asientos ------>pendiente
printf("\nIngrese codigo del pasajero: ");
scanf("%d", &pas.cod);
pas.cod=validar(pas.cod,1,999);
printf("\nIngrese Nombre del pasajero: ");
scanf("%s", &pas.nombre);
printf("\nIngrese Identidad del Pasajero: ");
scanf("%d", &pas.identidad);
printf("\nIngrese la edad del Pasajero: ");
scanf("%d", &pas.edad);
pas.edad=validar(pas.edad,1,99);
printf("\nIngrese numero de telefono del Pasajero: ");
scanf("%s", &pas.telefono);
printf("\n\t -RUTAS DISPONIBLES-");
printf("\n\t--------------------");
printf("\n\t|Ruta[1]...TEG-->SPS|");
printf("\n\t|-------------------|");
printf("\n\t|Ruta[2]...TEG-->CHO|");
printf("\n\t--------------------");
printf("\nIngrese su ruta deseada: ");
scanf("%d",&pas.ruta);
switch(pas.ruta)
{
case 1 :
printf("\nBus numero 1");
fprintf(archivo,"\nSu numero de bus es [%d]",pas.ruta);
break;
case 2 :
printf("\nBus numero 2");
fprintf(archivo,"\nSu numero de bus es [%d]",pas.ruta);
break;
}
fprintf(archivo, "\nCodigo del Pasajero: ");
fprintf(archivo, "%2d", pas.cod);
fprintf(archivo, "\nNombre del Pasajero: ");
fprintf(archivo, "%2s", pas.nombre);
fprintf(archivo, "\nIdentidad del Pasajero: ");
fprintf(archivo, "%2d", pas.identidad);
fprintf(archivo, "\nEdad del Pasajero: ");
fprintf(archivo, "%2d", pas.edad);
fprintf(archivo, "\nTelefono del Pasajero: ");
fprintf(archivo, "%2s", pas.telefono);
fprintf(archivo, "\nRuta: ");
fprintf(archivo, "%d", pas.ruta);
switch(pas.ruta)
{
case 1:
fprintf(archivo,"RUTA #1...TEG-->SPS\n");
break;
case 2:
fprintf(archivo,"RUTA #2...TEG-->CHO\n");
}
}
printf("\n\n");
system("pause");
break;
//case 6:
// break;
case 7:
default:
printf("\n FELIZ VIAJE");
exit(0);
}
}while(opc!=7);
}
main()
{
menu();
return 0;
}