1: /************************************************************************************************************
2: * *
3: * 25 DE MARZO DE 2010 *
4: * *
5: * Programa que almacena los datos de los diferentes tipos de carros y los guarda en un archivo binario *
6: * *
7: * Programador Julio Cesar Leyva Rodriguez Instituto Tecnologico de Los Mochis *
8: * *
9: ************************************************************************************************************/
10:
11: #include
12: #include
13: #include
14: #include
15:
16: /** Estructura de los datos de los datos */
17: struct reg
18: {
19: int numeroV;
20: char marca[10];
21: int anio;
22: char color[10];
23: int matricula;
24: char activo;
25: }automoviles;
26:
27: void noExiste()
28: {
29: cout<<"nEl Registro no existe";
30: }
31:
32: void espacioOcupado()
33: {
34: cout<<"nEspacio ocupado";
35: }
36:
37: void eliminado()
38: {
39: cout<<"nEliminado correctamente";
40: }
41:
42: void registrado()
43: {
44: cout<<"nRegistrado correctamente";
45: }
46:
47: void registrando()
48: {
49: printf("ntt REGISTRO DE AUTOS n");
50: cout<<"Marca "; gets(automoviles.marca);
51: cout<<"Año "; cin>>automoviles.anio;
52: cout<<"Matricula "; cin>>automoviles.matricula;
53: cout<<"Color "; gets(automoviles.color);
54: automoviles.activo='a';
55: }
56:
57:
58:
59: /** Funcion para registrar los datos en el archivo */
60: void registrar()
61: {
62: clrscr();
63:
64: FILE *ra;
65:
66: ra=fopen("automoviles.dat","rb+");
67:
68: if(ra==NULL) //Si no existe
69: {
70: FILE *n;
71: fclose(ra);
72: n=fopen("automoviles.dat","ab+");
73:
74: cout<<"ntINSERTE LOS DATOS DEL PRIMER AUTOn";
75: automoviles.numeroV=1;
76:
77: registrando();
78: fwrite(&automoviles,sizeof(automoviles),1,n);
79: fclose(n);
80: registrado();
81: getch();
82: }
83: else
84: {
85: fclose(ra);
86: FILE *c;
87:
88: c=fopen("automoviles.dat","rb+");
89:
90: int k;
91: cout<<"nInserte el numero de auto que desee insertar "; cin>>k;
92:
93: fseek(c,(k-1)*sizeof(automoviles),SEEK_SET);
94: fread(&automoviles,sizeof(automoviles),1,c);
95:
96: if(automoviles.activo==NULL)
97: {
98: automoviles.numeroV=k;
99: registrando();
100: fseek(c,(k-1)*sizeof(automoviles),SEEK_SET);
101: fwrite(&automoviles,sizeof(automoviles),1,c);
102: fclose(c);
103: registrado();
104: getch();
105: }
106: else
107: {
108: espacioOcupado();
109: getch();
110: }
111: }
112:
113: }
114:
115:
116:
117:
118:
119: /** Muestra todos los registros del archivo en forma de reporte */
120: void reporte()
121: {
122: clrscr();
123: FILE *rep;
124:
125: rep=fopen("automoviles.dat","rb+");
126: fread(&automoviles,sizeof(automoviles),1,rep);
127: printf("# VEHICULO tt MARCA tt AÑO t MATRICULA t COLOR");
128:
129: do
130: {
131: if(automoviles.activo=='a')
132: {
133: cout<<"n "<<automoviles.numeroV<<"t tt "<<automoviles.marca<<"tt "<<automoviles.anio<<"t "<<automoviles.matricula<<"tt "<<automoviles.color;
134: }
135: fread(&automoviles,sizeof(automoviles),1,rep);
136: }while(!feof(rep));
137: fclose(rep);
138: getch();
139: }
140:
141: /** Consulta un solo registro en el archivo */
142: void consultaVehiculo(int n)
143: {
144: FILE *rep;
145:
146:
147:
148: rep=fopen("automoviles.dat","rb");
149:
150: fseek(rep,(n-1)*(sizeof(automoviles)),SEEK_SET);
151: fread(&automoviles,sizeof(automoviles),1,rep);
152:
153: if(automoviles.activo!=NULL)
154: {
155: printf("n # VEHICULO tt MARCA tt AÑO t MATRICULA t COLOR");
156: if(automoviles.activo=='a')
157: {
158: cout<<"n "<<automoviles.numeroV<<"t tt "<<automoviles.marca<<"tt "<<automoviles.anio<<"t "<<automoviles.matricula<<"tt "<<automoviles.color;
159: }
160: else
161: {
162: noExiste();
163: getch();
164: }
165: }
166: else
167: {
168: noExiste();
169: getch();
170: }
171: fclose(rep);
172: }
173:
174: /* Modifica un registro señalado */
175: void modificar()
176: {
177: clrscr();
178: FILE *reg;
179: int d;
180:
181: cout<<"Inserte el dato que desee modificar: "; cin>>d;
182:
183: reg=fopen("automoviles.dat","rb+");
184:
185: printf("tt REGISTRO DE AUTOS n");
186: cout<<"Numero de vehiculo "; cin>>automoviles.numeroV;
187: cout<<"Marca "; gets(automoviles.marca);
188: cout<<"Año "; cin>>automoviles.anio;
189: cout<<"Matricula "; cin>>automoviles.matricula;
190: cout<<"Color "; gets(automoviles.color);
191:
192: automoviles.activo='a';
193:
194: fseek(reg,(d-1)*(sizeof(automoviles)),SEEK_SET);
195:
196: fwrite(&automoviles,sizeof(automoviles),1,reg);
197: fclose(reg);
198: }
199:
200: /* Elimina el registro seleccionado "logicamente" */
201: void eliminar()
202: {
203: FILE *reg;
204: int d;
205:
206: cout<<"Inserte el registro que desee Eliminar: "; cin>>d;
207:
208: reg=fopen("automoviles.dat","rb+");
209:
210: fseek(reg,(d-1)*(sizeof(automoviles)),SEEK_SET);
211: fread(&automoviles,(d)*(sizeof(automoviles)),1,reg);
212: if(automoviles.activo!=NULL)
213: {
214: fread(&automoviles,(d)*(sizeof(automoviles)),1,reg);
215:
216:
217:
218:
219: automoviles.activo='b';
220:
221: fseek(reg,(d-1)*(sizeof(automoviles)),SEEK_SET);
222: fwrite(&automoviles,sizeof(automoviles),1,reg);
223: fclose(reg);
224: eliminado();
225: getch();
226: }
227: else
228: {
229: noExiste();
230: getch();
231: }
232: }
233:
234:
235: /* Menu de opciones */
236: void menuA()
237: {
238: int a;
239: int op;
240: while(op!=5)
241: {
242: automoviles.activo=NULL;
243: clrscr();
244: gotoxy(25,1); cout<<"REGISTRO DE AUTOMOTORES";
245: gotoxy(1,3); cout<<"1.- Registrar automotor";
246: gotoxy(1,5); cout<<"2.- Reporte";
247: gotoxy(1,7); cout<<"3.- Consultar";
248: gotoxy(1,9); cout<<"4.- Eliminar";
249: gotoxy(1,11); cout<<"5.- Regresar";
250: gotoxy(1,14); cout<<"t Eliga una opcion [ ]";
251: gotoxy(29,14); cin>>op;
252: cout<<"n";
253: eslogan();
254:
255: switch(op)
256: {
257: case 1:
258: registrar();
259:
260: break;
261: case 2:
262: reporte();
263: break;
264: case 3:
265: clrscr();
266: cout<<"Inserte el numero de automovil que desee consultar"; cin>>a;
267: consultaVehiculo(a);
268: getch();
269: break;
270: case 4:
271: clrscr();
272: eliminar();
273: break;
274:
275: }
276: }
277: }
278:
279:
280:
281: struct registro4
282: {
283: int numeroC;
284: char nombre[10];
285: char domicilio[10];
286: float estatura;
287: float peso;
288: char activo;
289: }conductores;
290:
291: void registrandoC()
292: {
293:
294: printf("ntt REGISTRO DE CONDUCTORES n");
295: cout<<"Nombre "; gets(conductores.nombre);
296: cout<<"Domicilio "; gets(conductores.domicilio);
297: cout<<"Estatura "; cin>>conductores.estatura;
298: cout<<"Peso "; cin>>conductores.peso;
299: conductores.activo='a';
300: }
301:
302: void registrarConductor()
303: {
304: clrscr();
305:
306: FILE *ra;
307:
308: ra=fopen("conductores.dat","rb+");
309:
310: if(ra==NULL) //Si no existe
311: {
312: FILE *n;
313: fclose(ra);
314: n=fopen("conductores.dat","ab");
315:
316: cout<<"ntINSERTE LOS DATOS DEL PRIMER CONDUCTORn";
317: conductores.numeroC=1;
318:
319: registrandoC();
320: fwrite(&conductores,sizeof(conductores),1,n);
321: fclose(n);
322:
323: getch();
324: }
325: else
326: {
327: fclose(ra);
328: FILE *c;
329:
330: c=fopen("conductores.dat","rb+");
331:
332: int k;
333: cout<<"nInserte el numero de auto que desee insertar "; cin>>k;
334:
335: fseek(c,(k-1)*sizeof(conductores),SEEK_SET);
336: fread(&conductores,sizeof(conductores),1,c);
337:
338: if(conductores.domicilio==NULL)
339: {
340: conductores.numeroC=k;
341: fseek(c,(k-1)*sizeof(conductores),SEEK_SET);
342: fwrite(&conductores,sizeof(conductores),1,c);
343: fclose(c);
344:
345: getch();
346: }
347: else
348: {
349:
350: getch();
351: }
352: }
353:
354: }
355:
356:
357:
358: void reporteConductores()
359: {
360: clrscr();
361: FILE *rep;
362:
363: rep=fopen("conductores.dat","rb");
364: fread(&conductores,sizeof(conductores),1,rep);
365: printf("# CONDUCTOR t NOMBRE t DOMICILIO t ESTATURAtPESO");
366:
367: do
368: {
369: if(conductores.activo=='a')
370: {
371: cout<<"n"<<conductores.numeroC<<"tt "<<conductores.nombre<<"tt "<<conductores.domicilio<<"tt "<<conductores.estatura<<"tt"<<conductores.peso;
372: }
373: fread(&conductores,sizeof(conductores),1,rep);
374: }while(!feof(rep));
375: fclose(rep);
376: getch();
377: }
378:
379: void consultaC(int n)
380: {
381:
382: FILE *rep;
383:
384:
385: rep=fopen("conductores.dat","rb+");
386:
387: fseek(rep,(n-1)*(sizeof(conductores)),SEEK_SET);
388: fread(&conductores,sizeof(conductores),1,rep);
389:
390: if(conductores.activo!=NULL)
391: {
392: printf("# CONDUCTOR tt NOMBRE tt DOMICILIO t ESTATURA");
393: if(conductores.activo=='a')
394: {
395: cout<<"n"<<conductores.numeroC<<"ttt "<<conductores.nombre<<"ttt "<<conductores.domicilio<<"tt "<<conductores.estatura;
396: }
397: else
398: {
399: cout<<"n El conductor no exite";
400: getch();
401: }
402:
403:
404: }
405: else
406: {
407: cout<<"nEl registro no existe";
408: getch();
409: }
410: fclose(rep);
411: }
412:
413:
414:
415: void eliminarC()
416: {
417: FILE *reg;
418: int d;
419:
420: cout<<"Inserte el conductor que desee dar de baja: "; cin>>d;
421:
422: reg=fopen("conductor.dat","rb+");
423:
424: fseek(reg,(d-1)*(sizeof(conductores)),SEEK_SET);
425: fread(&conductores,sizeof(conductores),1,reg);
426:
427: if(conductores.activo!=NULL)
428: {
429: conductores.activo='b';
430:
431: fseek(reg,(d-1)*(sizeof(conductores)),SEEK_SET);
432: fwrite(&conductores,sizeof(conductores),1,reg);
433: fclose(reg);
434: }
435: else
436: {
437: cout<<"nEl archivo no esta";
438: getch();
439: }
440: }
441:
442:
443: void menuC()
444: {
445: conductores.activo=NULL;
446: int op;
447: int b;
448: while(op!=5)
449: {
450: clrscr();
451: gotoxy(25,1); cout<<"REGISTRO DE CONDUCTORES";
452: gotoxy(1,3); cout<<"1.- Registrar conductor";
453: gotoxy(1,5); cout<<"2.- Reporte";
454: gotoxy(1,7); cout<<"3.- Consulta";
455: gotoxy(1,9); cout<<"4.- Eliminar";
456: gotoxy(1,11); cout<<"5.- Regresar";
457: gotoxy(1,14); cout<<"t Eliga una opcion [ ]";
458: gotoxy(29,14); cin>>op;
459:
460: switch(op)
461: {
462: case 1:
463: registrarConductor();
464:
465: break;
466: case 2:
467: reporteConductores();
468: break;
469: case 3:
470: clrscr();
471: cout<<"Inserte el numero de conductor que desee consultar "; cin>>b;
472: consultaC(b);
473: getch();
474: break;
475: case 4:
476: clrscr();
477: eliminarC();
478: break;
479:
480: }
481: }
482: }
483: void eslogan()
484: {
485: cout<<" ****** ** ******* ******* ******** ******* ** ";
486: cout<<"n **////** **** /**////** /**////** /**///// /**////** **** ";
487: cout<<"n ** // **//** /** /** /** /** /** /** /** **//** ";
488: cout<<"n/** ** //** /******* /******* /******* /******* ** //** ";
489: cout<<"n/** **********/**///** /**///** /**//// /**///** **********";
490: cout<<"n//** **/**//////**/** //** /** //** /** /** //** /**//////**";
491: cout<<"n //****** /** /**/** //**/** //**/********/** //**/** /**";
492: cout<<"n ////// // // // // // // //////// // // // // ";
493: }
494:
495:
496:
497: struct evento
498: {
499: int folio;
500: int nC;
501: int nV;
502: int tiempo;
503: }carrera;
504:
505:
506:
507: void ultimo();
508:
509:
510: void borrar()
511: {
512: carrera.folio=NULL;
513: carrera.nC=NULL;
514: carrera.nV=NULL;
515: carrera.tiempo=NULL;
516: }
517: //REGISTRAR AUTO Y CONDUCTOR
518:
519: void registrarParticipante()
520: {
521:
522: borrar();
523: FILE *e;
524: FILE *a;
525: int size;
526:
527: borrar();
528: e=fopen("evento.dat","ab+");
529: a=fopen("evento.dat","rb+");
530:
531:
532: size=sizeof(carrera);
533:
534: fseek(a,-size,SEEK_END);
535: fread(&carrera,size,1,a);
536:
537: carrera.tiempo=NULL;
538: carrera.folio=(carrera.folio)+1;
539:
540: cout<<"nINSERTE EL NUMERO DEL PILOTO "; cin>>carrera.nC;
541:
542: cout<<"nINSERTE EL NUMERO DEL VEHICULO "; cin>>carrera.nV;
543:
544: fwrite(&carrera,sizeof(carrera),1,e);
545:
546: fclose(e);
547: fclose(a);
548:
549: }
550: //REPORTE
551:
552: void reporteEvento()
553: {
554: borrar();
555: FILE *reporte1;
556:
557: reporte1=fopen("evento.dat","rb+");
558:
559: do
560: {
561: if(carrera.folio!=NULL)
562: {
563: consultaVehiculo(carrera.nV);
564: consultaC(carrera.nC);
565: }
566: fread(&carrera,sizeof(carrera),1,reporte1);
567: }while(!feof(reporte1));
568: }
569:
570:
571:
572: void registrarTiempo()
573: {
574: FILE *tiempo;
575: tiempo=fopen("evento.dat","rb+");
576: int folio;
577:
578: borrar();
579: cout<<"nnINSERTE EL FOLIO DEL PILOTO QUE DESEE INGRESAR EL TIEMPO ";
580: cin>>folio;
581:
582: fseek(tiempo,(folio-1)*(sizeof(carrera)),SEEK_SET);
583: fread(&carrera,sizeof(carrera),1,tiempo);
584:
585: cout<<"nnINGRESE EL TIEMPO ";cin>>carrera.tiempo;
586:
587: fseek(tiempo,(folio-1)*(sizeof(carrera)),SEEK_SET);
588: fwrite(&carrera,sizeof(carrera),1,tiempo);
589: fclose(tiempo);
590: }
591:
592:
593: /* Menu de opciones */
594: void menuE()
595: {
596: int a;
597: int op;
598: while(op!=5)
599: {
600: automoviles.activo=NULL;
601: clrscr();
602: gotoxy(25,1); cout<<"EVENTO";
603: gotoxy(1,3); cout<<"1.- Registrar participante";
604: gotoxy(1,5); cout<<"2.- Reporte";
605: gotoxy(1,7); cout<<"3.- Modificar tiempo";
606: gotoxy(1,9); cout<<"4.- Consulta participante";
607: gotoxy(1,11); cout<<"5.- Regresar";
608: gotoxy(1,13); cout<<"t Eliga una opcion [ ]";
609: gotoxy(29,13); cin>>op;
610:
611: switch(op)
612: {
613: case 1:
614: clrscr();
615: registrarParticipante();
616: getch();
617: break;
618: case 2:
619: reporteEvento();
620: getch();
621: break;
622: case 3:
623: clrscr();
624: registrarTiempo();
625: getch();
626: break;
627:
628: case 4:
629: cout<<"n INSERTE EL NUMERO DEL PARTICIPANTE QUE DESEE CONSULTAR "; cin>>a;
630: consultaVehiculo(a);
631: cout<<"n";
632: getch();
633: consultaC(a);
634: cout<<"nPresione cualquier tecla para continuar";
635: getch();
636: break;
637: case 5:
638: break;
639: default:
640: cout<<"OPCION NO VALIDA";
641: getch();
642: break;
643: }
644: }
645: }
646:
647:
648:
649: void main()
650: {
651: int op;
652: while(op!=5)
653: {
654: clrscr();
655: eslogan();
656: gotoxy(25,10); cout<<"PRINCIPAL";
657: gotoxy(1,13); cout<<"1.- Vehiculos";
658: gotoxy(1,15); cout<<"2.- Conductores";
659: gotoxy(1,17); cout<<"3.- Evento";
660: gotoxy(1,19); cout<<"4.- Reporte";
661: gotoxy(1,21); cout<<"t Eliga una opcion [ ]";
662: gotoxy(29,21); cin>>op;
663:
664: switch(op)
665: {
666: case 1:
667: clrscr();
668: menuA();
669:
670: break;
671: case 2:
672: menuC();
673: break;
674: case 3:
675: clrscr();
676: menuE();
677: break;
678: case 4:
679: clrscr();
680: reporteEvento();
681: getch();
682: break;
683: case 5:
684: clrscr();
685: cout<<"Salir";
686: break;
687:
688: default:
689: cout<<"nOPCION INCORRECTA";
690: break;
691:
692: }
693: }
694: }
Deja un comentario