Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Anduresu en 27 Julio 2020, 03:22



Título: venta de boletos de autobuses utilizando (colas ,listas o arboles) y archivos
Publicado por: Anduresu en 27 Julio 2020, 03:22
hacer reserva de asientos de un autobús(máximo 10 asientos ) que pida código ,nombre , numero de asiento ,numero de autobús ,precio ,y precio total con impuesto ,guardando los datos en un archivo y utilizando listas o colas y que imprima todo estos datos como un recibo soy estudiante y me ayudaría mucho su ayuda muchas gracias por su tiempo ; si lo siento mucho asta ahii e avanzado

mas que todo queria una idea o una sugerencia de como hacer la parte de colas o listas ya que no se exactamente como proceder
  
Código
  1. #include<stdio.h>
  2. #include<windows.h>
  3.  
  4. FILE *archivo;
  5.  
  6. struct pasajero
  7. {
  8. int codigo ,asiento, edad;
  9. char nombre [50];
  10. double precio ,precioTotal;
  11. }pas;
  12. //**************************************************************
  13. double validar(double valor, double li, double ls)
  14. {
  15. while(valor < li || valor > ls)
  16. {
  17.    printf("\n Error...Ingrese un valor entre [%.2lf] y [%.2lf]: ", li, ls);
  18. scanf("%lf",&valor);  
  19. }
  20. return valor;
  21. }
  22. //***************************************************************
  23. void consultar()
  24. {
  25. int cod;
  26.  
  27. system("cls");
  28.  
  29. archivo = fopen("pasajero.txt","rt");
  30.  
  31. if(archivo == NULL)
  32. printf("\nEl archivo No existe.");
  33. else
  34. {
  35. printf("\n Ingrese el codigo del pasajero: ");
  36. scanf("%d",&pas.codigo);
  37.  
  38. printf("\n codigo Edad Nombre No-asiento");
  39.  
  40. while(!feof(archivo))
  41. {
  42. fscanf(archivo, "%d %d %s %d",&pas.codigo,&pas.edad,&pas.nombre,&pas.asiento);
  43.  
  44. if(pas.codigo==cod)
  45. {
  46. printf("%d %d %s %d",pas.codigo,pas.edad,pas.nombre,pas.asiento);
  47. break;
  48. }
  49. else if(feof(archivo))
  50. printf("\n Pasajero no encontrado");
  51. }
  52. }
  53. system("pause");
  54. fclose(archivo);
  55. }
  56. //***************************************************************
  57. void listar()
  58. {
  59. system("cls");
  60.  
  61. archivo = fopen("pasajero.txt", "rt" );
  62.  
  63. if(archivo == NULL)
  64.     {
  65. printf("\nEl archivo No existe.");
  66.   }
  67. else
  68.     {
  69.   printf("\nCodigo edad nombre promedio\n");
  70.  
  71.   while(!feof(archivo))
  72.            {
  73.  fscanf(archivo, "%d %d %s %d", &pas.codigo, &pas.edad, &pas.nombre, &pas.asiento);
  74.    printf("%5d %4d %5s %5d\n", pas.codigo, pas.edad, pas.nombre, pas.asiento);
  75.            }
  76.     }
  77. system("pause");
  78. fclose(archivo);
  79. }
  80. //***************************************************************
  81. void agregar()
  82. {
  83. char resp;
  84. archivo = fopen("pasajero.txt","rt");
  85.  
  86. if(archivo ==NULL)
  87. {
  88. printf("\nEl archivo No existe");
  89. }
  90. else
  91. {
  92. system("cls");
  93. archivo = fopen("pasajero.txt","at");
  94. do
  95. {
  96. printf("\n\tDatos del pasajero");
  97. printf("\n\t----- --- --------");
  98. printf("\nIngrese el codigo del pasajero :");
  99. scanf("%d",&pas.codigo);
  100. pas.codigo=validar(pas.codigo,1,10);
  101.  
  102. printf("\nIngrese la edad del pasajero:");
  103. scanf("%d",&pas.edad);
  104. pas.edad=validar(pas.edad,1,100);
  105.  
  106. printf("\nIngrese el nombre del pasajero: ");
  107. scanf("%s",&pas.nombre);
  108.  
  109. printf("\nIngrese el numero del asiento:");
  110. scanf("%d",&pas.asiento);
  111.  
  112. fprintf(archivo, "\n %d", pas.codigo);
  113.          fprintf(archivo, "\n %d", pas.edad);
  114. fprintf(archivo, "\n %s", pas.nombre);
  115. fprintf(archivo, "\n %d", pas.asiento);
  116.  
  117. do
  118. {
  119. printf("\n Desea agregar otro envio? \n: ");
  120.    scanf("%s", &resp);
  121.    resp = toupper(resp);
  122.    if(resp != 'S' && resp != 'N')
  123.     printf("\n Error... Ingrese [S o N]");
  124. }while(resp != 'S' && resp != 'N');
  125.  
  126. }while(resp=='S');
  127. }
  128. printf("\n");
  129. system("pause");    
  130. fclose(archivo);
  131. }
  132. //***************************************************************
  133. void crear()
  134. {
  135. archivo = fopen("pasajero.txt","rt");
  136.  
  137. if(archivo !=NULL)
  138. {
  139. printf("\n El archivo ya existe");
  140. }
  141. else
  142. {
  143. archivo = fopen("pasajero.txt","wt");
  144. printf("\n el archivo a sido creado con exito");
  145. }
  146. system("pause");
  147. fclose(archivo);
  148. }
  149. //***************************************************************
  150. void menu()
  151. {
  152. int opc;
  153. do
  154. {
  155. system("cls");
  156. printf("\nMenu :");
  157. printf("\n[1]...crear");
  158. printf("\n[2]... Agregar");
  159. printf("\n[3]... listar datos ");
  160. printf("\n[4]... consultar pasajero");
  161. printf("\n[5]... salir");
  162. do
  163. {
  164. printf("\nIngrese su opcion [1-5]: ");
  165. scanf("%d",&opc);
  166. if(opc<1 || opc>5)
  167. printf("\nError ingrese [1-5]: ");
  168. }while(opc<1 || opc>7);
  169.  
  170. switch(opc)
  171. {
  172. case 1:
  173. crear();
  174. break;
  175. case 2:
  176. agregar();
  177. break;
  178. case 3:
  179. listar();
  180. break;
  181. case 4:
  182. consultar();
  183. break;
  184. default:
  185. printf("gracias por usar nuestro sistema");
  186. exit(0);
  187. }
  188. }while(opc != 5);
  189. }
  190. //*********************************************************
  191. main ()
  192. {
  193. menu();
  194.  
  195. return 0 ;
  196. }
  197.  


Título: Re: venta de boletos de autobuses utilizando (colas ,listas o arboles) y archivos
Publicado por: K-YreX en 27 Julio 2020, 03:36
Esto no es un lugar donde poner lo que necesitas y que te den el programa completo...

Coloca tus avances (entre etiquetas de Código GeSHi) y el problema del que no puedas salir y es probable que alguien te ayude. En cambio si te limitas a pedir sin esforzarte, esta va a ser la mejor respuesta que vas a obtener...



EDIT: En C no existen las estructuras de datos como sí pasa con C++ por lo que tienes que implementarlas tú. En internet puedes encontrar muchas implementaciones de colas, listas, pilas, etc en C.

Para empezar tienes que crear lo que sería un Nodo (un elemento de la estructura) que suele estar formado por los datos a almacenar y un puntero a otro elemento.
Código
  1. struct Nodo {
  2.  Pasajero *pasajero; // puntero a los datos de un pasajero
  3.  struct Nodo *siguiente; // puntero al siguiente Nodo de la estructura
  4. };

Y ahora puedes crear la estructura en sí:
Código
  1. struct Cola {
  2.  struct Nodo *inicio;
  3. };

Para crear una lista la puedes hacer simple, es decir, con un único puntero hacia delante o doble (con uno hacia atrás y otro hacia delante). Todos estos detalles dependen de tu implementación y como te digo, en Internet hay muchos ejemplos de este tipo de estructuras.


Título: Re: venta de boletos de autobuses utilizando (colas ,listas o arboles) y archivos
Publicado por: Anduresu en 4 Agosto 2020, 03:43
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
  1. #include<stdio.h>
  2. #include<windows.h>
  3.  
  4. FILE * archivo;
  5.  
  6. struct pasajero
  7. {
  8.  
  9. int cod, numbus,edad,ruta,identidad[13];
  10. char nombre[50],telefono[8];
  11.  
  12.  
  13. }pas;
  14. struct Nodo
  15. {
  16. int dato;
  17. Nodo *siguiente;
  18. };
  19.  
  20. Nodo * lista =NULL;
  21. //--------------------------------------------------------
  22. int validar(int valor, int li, int ls)
  23. {
  24. while(valor < li || valor > ls)
  25. {
  26.    printf("\n Error...Ingrese un valor entre [%d] y [%d]: ", li, ls);
  27. scanf("%d",&valor);
  28.  
  29. }
  30. return valor;
  31. }
  32. //.----------------------------------------------------
  33. void consultar()
  34. {
  35. system("cls");
  36. int codigo;
  37.  
  38. archivo = fopen("pasajero.txt","rt");
  39.  
  40. if(archivo == NULL)
  41. printf("\nEL archivo no existe.");
  42. else
  43. {
  44. printf("\n Ingrese el codigo del pasajero: ");
  45. scanf("%d", &codigo);
  46.  
  47. printf("\n codigo Nombre Identidad Edad telefono numero de bus \n");
  48.  
  49. while(!feof(archivo))
  50. {
  51. fscanf(archivo, "%d %s %d %d %s %d ",&pas.cod , &pas.nombre, &pas.identidad, &pas.edad, &pas.telefono,&pas.ruta );
  52.  
  53. if(pas.cod==codigo)
  54. {
  55. printf("%5d %5s %8d %5d %10s %4d \n\n",pas.cod,pas.nombre,pas.identidad,pas.edad,pas.telefono,pas.ruta);
  56. break;
  57. }
  58. else if(feof(archivo))
  59. printf("\n pasajero no encontrado\n\n");
  60. }
  61. }
  62. system("pause");
  63. fclose(archivo);
  64. }
  65. //-------------------------------------------
  66. void busactivo(Nodo * &lista, int num)
  67. {
  68. Nodo *j = lista;
  69. bool encontrado = false;
  70.  
  71. while((j != NULL) && (j -> dato <= num )){
  72. if ( j -> dato == num)
  73. encontrado = true;
  74. j = j -> siguiente;
  75. }
  76.  
  77. if (encontrado == true)
  78. printf("\n El bus numero [%d] esta activo \n",&num);
  79. else
  80. printf("\n El bus numero [%d] NO esta activo \n",&num);
  81.  
  82. system("pause");
  83. }
  84.  
  85. //-------------------------------------------
  86. void agregararchi()
  87. {
  88. int num;
  89. archivo = fopen("pasajero.txt", "rt" );
  90.  
  91. if(archivo!= NULL)
  92.      {
  93. printf("\nEl archivo ya existe.");
  94.  }
  95. else
  96.    {
  97.   archivo = fopen("pasajero.txt", "wt" );
  98.     printf("\nEl archivo se ha creado.");
  99.    }
  100. char resp;
  101. archivo = fopen("pasajero.txt","rt");
  102.  
  103. if(archivo == NULL)
  104. {
  105. printf("\nEl archivo no existe");
  106. }
  107. else
  108.    {
  109.      system("cls");
  110.      archivo = fopen("pasajero.txt", "at" );
  111.  do
  112.    {
  113.      printf("\n\tDatos de pasajero.");
  114.          printf("\n\t*****\n");
  115. //for para agregar numero de asientos ------>pendiente
  116.  
  117.  printf("\nIngrese codigo del pasajero: ");
  118.          scanf("%d", &pas.cod);
  119.  pas.cod=validar(pas.cod,1,999);
  120.  
  121.      printf("\nIngrese Nombre del pasajero: ");
  122.          scanf("%s", &pas.nombre);
  123.  
  124.  printf("\nIngrese Identidad del Pasajero: ");
  125.          scanf("%d", &pas.identidad);
  126.  
  127.    printf("\nIngrese la edad del Pasajero: ");
  128.          scanf("%d", &pas.edad);
  129.          pas.edad=validar(pas.edad,1,99);
  130.  
  131.  printf("\nIngrese numero de telefono del Pasajero: ");
  132.          scanf("%s", &pas.telefono);
  133.  
  134.  printf("\n\t -RUTAS DISPONIBLES-");
  135.  printf("\n\t--------------------");
  136.  printf("\n\t|Ruta[1]...TEG-->SPS|");
  137.  printf("\n\t|-------------------|");
  138.  printf("\n\t|Ruta[2]...TEG-->CHO|");
  139.  printf("\n\t--------------------");
  140.  printf("\nIngrese su ruta deseada: ");
  141.  scanf("%d",&pas.ruta);
  142.          switch(pas.ruta)
  143.          {
  144.           case 1 :
  145.           printf("\nBus numero 1");
  146.           fprintf(archivo,"\nSu numero de bus es [%d]",pas.ruta);
  147.           break;
  148.           case 2 :
  149.           printf("\nBus numero 2");
  150.           fprintf(archivo,"\nSu numero de bus es [%d]",pas.ruta);
  151.           break;
  152.  }
  153.          fprintf(archivo, "\nCodigo del Pasajero: ");
  154.          fprintf(archivo, "%2d", pas.cod);
  155.          fprintf(archivo, "\nNombre del Pasajero: ");
  156.          fprintf(archivo, "%2s", pas.nombre);
  157.          fprintf(archivo, "\nIdentidad del Pasajero: ");
  158.            fprintf(archivo, "%2d", pas.identidad);
  159.            fprintf(archivo, "\nEdad del Pasajero: ");
  160.  fprintf(archivo, "%2d", pas.edad);
  161.  fprintf(archivo, "\nTelefono del Pasajero: ");
  162.  fprintf(archivo, "%2s", pas.telefono);
  163.  fprintf(archivo, "\nRuta: ");
  164.  fprintf(archivo, "%d", pas.ruta);
  165.   switch(pas.ruta)
  166.   {
  167.   case 1:
  168.   fprintf(archivo,"RUTA #1...TEG-->SPS\n");
  169.   break;
  170.  
  171.   case 2:
  172.   fprintf(archivo,"RUTA #2...TEG-->CHO\n");
  173.  
  174. }
  175.  
  176.  do
  177.    {
  178. printf("\n%cDesea agregar otro pasajero ?: ",168);
  179.     scanf("%s", &resp);
  180.     resp = toupper(resp);
  181.     if(resp != 'S' && resp != 'N')
  182.        printf("\n Error... Ingrese [S o N]");
  183.   } while(resp != 'S' && resp != 'N');
  184.  
  185.    }while(resp=='S');
  186.    }
  187. system("pause");    
  188. fclose(archivo);
  189. }
  190.  
  191. //-------------------------------------------
  192. void mostrar(Nodo*lista)
  193. {
  194. Nodo *i=lista;
  195.  
  196. if(lista==NULL){
  197. printf ("\n\t** LISTA VACIA **\n");
  198. }else{
  199. while((i!=NULL)){
  200. printf("bus[%d] --> ",i->dato);
  201. i=i->siguiente;
  202. }
  203. printf("No hay mas buses encontados ");
  204. }
  205.  
  206. printf("\n\n");
  207. system("pause");
  208.  
  209. }
  210. //-------------------------------------------
  211. void agregar(Nodo *&lista, int &num)
  212. {
  213. Nodo * nuevo_nodo = new Nodo();
  214. nuevo_nodo -> dato = num;
  215.  
  216. Nodo * auxi1 = lista;
  217. Nodo * auxi2;
  218.  
  219. while((auxi1 != NULL) && ( auxi1 -> dato))
  220. {
  221. auxi2 = auxi1;
  222. auxi1 = auxi1 -> siguiente;
  223. }
  224. if(lista == auxi1)
  225. lista = nuevo_nodo;
  226.  else
  227. auxi2 -> siguiente = nuevo_nodo;
  228.  
  229. nuevo_nodo-> siguiente = auxi1;
  230. system("cls");
  231. printf("\n El bus[%d] se agrego correctamente \n", num);
  232.  
  233.  
  234. }
  235. //--------------------------------------------
  236. void menu()
  237. {
  238. int id;
  239. char res;
  240. int num;
  241. int opc, marcador;
  242.  
  243. do
  244. {
  245. system("cls");
  246. printf("\n\tTerminal de buses:" );
  247. printf("\n\t** *\n" );
  248. printf("\n [1]... Agregar cliente al bus" );
  249. printf("\n [2]... Mostrar todos los buses disponibles" );
  250. printf("\n [3]... Agregar pasajeros al autobus" );
  251. printf("\n [4]... Consultar pasajero" );//cessar
  252. printf("\n [5]... Modificar datos del pasajero " );//jose
  253. printf("\n [6]... Eliminar pasajero");//andres
  254. printf("\n [7]... Salir " );
  255. do
  256. {
  257. printf("\nIngrese su opcion [1-7]: ");
  258. scanf("%d", &opc);
  259. if(opc<1 || opc>7)
  260. printf("\nError...Ingrese su opci%cn de [1-7]: ",162);
  261. }while(opc<1 || opc>7);
  262.  
  263. switch(opc)
  264. {
  265. case 1:
  266. system("cls");
  267. printf ("\n\t Ingreso de Buses a la Lista Disponible");
  268. printf ("\n\t *** * ** * * ** ****\n");
  269. do
  270. {
  271. printf("\nIngrese el numero Bus en Estado Disponible: ");
  272. scanf("%d",&num);
  273. num=validar(num,1,5);
  274. agregar(lista,num);
  275. do
  276. {
  277. printf("\n%cDesea Agregar otro Bus Disponible[S-N]: ",168);
  278. scanf("%s",&res);
  279. res = toupper(res);
  280. if (res != 'S' && res != 'N')
  281. printf("\n Error... opci%cn incorrecta\n",162);
  282. }while(res != 'S' && res !='N');
  283. }while(res == 'S');
  284. break;
  285. case 2:
  286. system("cls");
  287. printf ("\n Consulta los buses disponibles en la LISTA ");
  288. printf ("\n ****** \n");
  289. mostrar(lista);
  290. break;
  291. case 3:
  292. system("cls");
  293. printf("\nIngrese datos del pasajero");
  294. agregararchi();
  295. break;
  296. case 4:
  297.  
  298. printf("\n\t----Consultar Datos----");
  299. printf("\n\t***********************\n");
  300. consultar();
  301.  
  302. break;
  303. case 5:
  304.  
  305. system("cls");
  306.  
  307. printf("\n\t----- MODIFICAR DATOS -----");
  308. printf("\n\t*********\n");
  309. printf("\n Ingrese el codigo de pasajero a buscar: ");
  310. scanf("%d", &id);
  311.  
  312. if(archivo == NULL)
  313. {
  314. printf("\nEl archivo no existe");
  315. }
  316. else if(id==pas.cod)
  317.    {
  318.      system("cls");
  319.      archivo = fopen("pasajero.txt", "at" );
  320.  
  321.      printf("\n\tDatos de pasajero.");
  322.          printf("\n\t*****\n");
  323. //for para agregar numero de asientos ------>pendiente
  324.  
  325.  printf("\nIngrese codigo del pasajero: ");
  326.          scanf("%d", &pas.cod);
  327.  pas.cod=validar(pas.cod,1,999);
  328.  
  329.      printf("\nIngrese Nombre del pasajero: ");
  330.          scanf("%s", &pas.nombre);
  331.  
  332.  printf("\nIngrese Identidad del Pasajero: ");
  333.          scanf("%d", &pas.identidad);
  334.  
  335.    printf("\nIngrese la edad del Pasajero: ");
  336.          scanf("%d", &pas.edad);
  337.          pas.edad=validar(pas.edad,1,99);
  338.  
  339.  printf("\nIngrese numero de telefono del Pasajero: ");
  340.          scanf("%s", &pas.telefono);
  341.  
  342.  printf("\n\t -RUTAS DISPONIBLES-");
  343.  printf("\n\t--------------------");
  344.  printf("\n\t|Ruta[1]...TEG-->SPS|");
  345.  printf("\n\t|-------------------|");
  346.  printf("\n\t|Ruta[2]...TEG-->CHO|");
  347.  printf("\n\t--------------------");
  348.  printf("\nIngrese su ruta deseada: ");
  349.  scanf("%d",&pas.ruta);
  350.          switch(pas.ruta)
  351.          {
  352.           case 1 :
  353.           printf("\nBus numero 1");
  354.           fprintf(archivo,"\nSu numero de bus es [%d]",pas.ruta);
  355.           break;
  356.           case 2 :
  357.           printf("\nBus numero 2");
  358.           fprintf(archivo,"\nSu numero de bus es [%d]",pas.ruta);
  359.           break;
  360.  }
  361.          fprintf(archivo, "\nCodigo del Pasajero: ");
  362.          fprintf(archivo, "%2d", pas.cod);
  363.          fprintf(archivo, "\nNombre del Pasajero: ");
  364.          fprintf(archivo, "%2s", pas.nombre);
  365.          fprintf(archivo, "\nIdentidad del Pasajero: ");
  366.            fprintf(archivo, "%2d", pas.identidad);
  367.            fprintf(archivo, "\nEdad del Pasajero: ");
  368.  fprintf(archivo, "%2d", pas.edad);
  369.  fprintf(archivo, "\nTelefono del Pasajero: ");
  370.  fprintf(archivo, "%2s", pas.telefono);
  371.  fprintf(archivo, "\nRuta: ");
  372.  fprintf(archivo, "%d", pas.ruta);
  373.   switch(pas.ruta)
  374.   {
  375.   case 1:
  376.   fprintf(archivo,"RUTA #1...TEG-->SPS\n");
  377.   break;
  378.  
  379.   case 2:
  380.   fprintf(archivo,"RUTA #2...TEG-->CHO\n");
  381.  
  382. }
  383.  
  384.    }
  385. printf("\n\n");
  386. system("pause");
  387. break;
  388. //case 6:
  389. // break;
  390. case 7:
  391. default:
  392. printf("\n FELIZ VIAJE");
  393. exit(0);
  394. }
  395. }while(opc!=7);
  396.  
  397. }
  398. main()
  399. {
  400. menu();
  401. return 0;
  402. }
  403.