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:
28: /** Funcion para registrar los datos en el archivo */
29: void registrar()
30: {
31:
32: clrscr();
33: printf("tt REGISTRO DE AUTOS n");
34: cout<<"Numero de vehiculo "; cin>>automoviles.numeroV;
35: cout<<"Marca "; gets(automoviles.marca);
36: cout<<"Año "; cin>>automoviles.anio;
37: cout<<"Matricula "; cin>>automoviles.matricula;
38: cout<<"Color "; gets(automoviles.color);
39:
40: automoviles.activo='a'; //Marca que el archivo no esta eliminado logicamente
41:
42:
43: FILE *registro1;
44:
45: registro1=fopen("automoviles.dat","ab+");
46: fseek(registro1,(automoviles.numeroV)-1*(sizeof(automoviles)),SEEK_SET); //Posicionar el puntero en un lugar definido por la variable vehiculoV
47: fwrite(&automoviles,sizeof(automoviles),1,registro1); //Escrive en el archivo
48: fclose(registro1);
49:
50: }
51:
52: /** Muestra todos los registros del archivo en forma de reporte */
53: void reporte()
54: {
55: clrscr();
56: FILE *rep;
57:
58: rep=fopen("automoviles.dat","rb+");
59: fread(&automoviles,sizeof(automoviles),1,rep);
60: printf("# VEHICULO tt MARCA tt AÑO t MATRICULA t COLOR");
61:
62: do
63: {
64: if(automoviles.activo=='a')
65: {
66: cout<<"n "<<automoviles.numeroV<<"t tt "<<automoviles.marca<<"tt "<<automoviles.anio<<"t "<<automoviles.matricula<<"tt "<<automoviles.color;
67: }
68: fread(&automoviles,sizeof(automoviles),1,rep);
69: }while(!feof(rep));
70: fclose(rep);
71: getch();
72: }
73:
74: /** Consulta un solo registro en el archivo */
75: void consultaVehiculo(int n)
76: {
77: FILE *rep;
78:
79:
80:
81: rep=fopen("automoviles.dat","rb");
82:
83: fseek(rep,(n-1)*(sizeof(automoviles)),SEEK_SET);
84: fread(&automoviles,(n)*(sizeof(automoviles)),1,rep);
85:
86: printf("n # VEHICULO tt MARCA tt AÑO t MATRICULA t COLOR");
87: if(automoviles.activo=='a')
88: {
89: cout<<"n "<<automoviles.numeroV<<"t tt "<<automoviles.marca<<"tt "<<automoviles.anio<<"t "<<automoviles.matricula<<"tt "<<automoviles.color;
90: }
91: else
92: {
93: cout<<"n El automovil no existe";
94: }
95: fclose(rep);
96: }
97:
98: /* Modifica un registro señalado */
99: void modificar()
100: {
101: clrscr();
102: FILE *reg;
103: int d;
104:
105: cout<<"Inserte el dato que desee modificar: "; cin>>d;
106:
107: reg=fopen("automoviles.dat","rb+");
108:
109: printf("tt REGISTRO DE AUTOS n");
110: cout<<"Numero de vehiculo "; cin>>automoviles.numeroV;
111: cout<<"Marca "; gets(automoviles.marca);
112: cout<<"Año "; cin>>automoviles.anio;
113: cout<<"Matricula "; cin>>automoviles.matricula;
114: cout<<"Color "; gets(automoviles.color);
115:
116: automoviles.activo='a';
117:
118: fseek(reg,(d-1)*(sizeof(automoviles)),SEEK_SET);
119: fwrite(&automoviles,sizeof(automoviles),1,reg);
120: fclose(reg);
121: }
122:
123: /* Elimina el registro seleccionado "logicamente" */
124: void eliminar()
125: {
126: FILE *reg;
127: int d;
128:
129: cout<<"Inserte el registro que desee Eliminar: "; cin>>d;
130:
131: reg=fopen("automoviles.dat","rb+");
132:
133: fseek(reg,(d-1)*(sizeof(automoviles)),SEEK_SET);
134: fread(&automoviles,(d)*(sizeof(automoviles)),1,reg);
135:
136:
137: automoviles.activo='b';
138:
139: fseek(reg,(d-1)*(sizeof(automoviles)),SEEK_SET);
140: fwrite(&automoviles,sizeof(automoviles),1,reg);
141: fclose(reg);
142: }
143:
144:
145: /* Menu de opciones */
146: void menuA()
147: {
148: int a;
149: int op;
150: while(op!=5)
151: {
152: automoviles.activo=NULL;
153: clrscr();
154: gotoxy(25,1); cout<<"REGISTRO DE AUTOMOTORES";
155: gotoxy(1,3); cout<<"1.- Registrar automotor";
156: gotoxy(1,5); cout<<"2.- Reporte";
157: gotoxy(1,7); cout<<"3.- Consultar";
158: gotoxy(1,9); cout<<"4.- Eliminar";
159: gotoxy(1,11); cout<<"5.- Regresar";
160: gotoxy(1,14); cout<<"t Eliga una opcion [ ]";
161: gotoxy(23,14); cin>>op;
162: cout<<"n";
163: eslogan();
164:
165: switch(op)
166: {
167: case 1:
168: registrar();
169:
170: break;
171: case 2:
172: reporte();
173: break;
174: case 3:
175: clrscr();
176: cout<<"Inserte el numero de automovil que desee consultar"; cin>>a;
177: consultaVehiculo(a);
178: getch();
179: break;
180: case 4:
181: clrscr();
182: eliminar();
183: break;
184:
185: }
186: }
187: }
188: