forked from marcosbetancor/programacionII
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Base alumno.c
135 lines (117 loc) · 4.04 KB
/
Base alumno.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include<stdio.h>
#include<stdlib.h>
typedef struct{
int dd;
int mm;
int aa;}t_fecha;
typedef struct{
char apellido[30];
char nombre[30];
t_fecha fnac;
float prom;
int p1;
int p2;}t_alumno;
void cargaalum(FILE*,t_alumno);
void modifalum(FILE*,t_alumno);
void muestraalum(FILE*,t_alumno);
void main()
{FILE*basealumno;
t_alumno varreg;
int opcion,salida=1;
while(salida!=0)
{system("cls");
printf("Ingrese:\n\t 1-Crear base de datos.\n\t 2-Modificar base de datos.\n\t 3-Ver Base de datos\n\nOPCION: ");
scanf("%d",&opcion);
switch (opcion)
{
case 1 :
basealumno=fopen("arch.dat","w+b");
if(!basealumno)
exit(1);
else
cargaalum(basealumno,varreg);
break ;
case 2 :
basealumno=fopen("arch.dat","r+b");
if(!basealumno)
exit(1);
else
modifalum(basealumno,varreg);
break ;
case 3 :
basealumno=fopen("arch.dat","rb");
if(!basealumno)
exit(1);
else
muestraalum(basealumno,varreg);
break ;
default :
printf("\nOPCION INCORRECTA" );
break ;}
fclose(basealumno);
printf("\n\nIngrese opcion:\n\t0-Salir\n\t1-Continuar\n\nOPCION: ");
scanf("%d",&salida);
}
}
void cargaalum(FILE*basealumno,t_alumno varreg)
{
int salida=1;
while(salida!=0)
{system("cls");
printf("Ingrese apellido: ");
scanf("%s",varreg.apellido);
printf("Ingrese nombre: ");
scanf("%s",varreg.nombre);
printf("Ingrese dia de nac.: ");
scanf("%d",&varreg.fnac.dd);
printf("Ingrese mes de nac.: ");
scanf("%d",&varreg.fnac.mm);
printf("Ingrese año de nac.: ");
scanf("%d",&varreg.fnac.aa);
printf("Ingrese nota de primero parcial: ");
scanf("%d",&varreg.p1);
printf("Ingrese nota de segundo parcial: ");
scanf("%d",&varreg.p2);
varreg.prom=(float)(varreg.p1 + varreg.p2)/2;
fwrite(&varreg,sizeof(t_alumno),1,basealumno);
printf("\n\nPara seguir ingresando alumnos ingrese '1', para salir '0': ");
scanf("%d",&salida);
}
}
void modifalum(FILE*basealumno,t_alumno varreg)
{int opcion,nreg;
system("cls");
printf("Ingrese numero de registro a modificar: ");
scanf("%d",&nreg);
fseek(basealumno,sizeof(t_alumno)*(nreg-1),0);
printf("Ingrese opcion para modificar:\n\t1-Modificar 1er parcial.\n\t2-Modificar 2do parcial.\n\nOPCION: ");
scanf("%d",&opcion);
if(opcion==1)
{puts("Ingrese nota");
fread(&varreg,sizeof(t_alumno),1,basealumno);
scanf("%d",&varreg.p1);
varreg.prom=(varreg.p1 + varreg.p2)/2;
fseek(basealumno,-sizeof(t_alumno),1);
fwrite(&varreg,sizeof(t_alumno),1,basealumno);
fseek(basealumno,0,1);}
else
{puts("Ingrese nota");
fread(&varreg,sizeof(t_alumno),1,basealumno);
scanf("%d",&varreg.p2);
fseek(basealumno,-sizeof(t_alumno),1);
fwrite(&varreg,sizeof(t_alumno),1,basealumno);
fseek(basealumno,0,1);}
}
void muestraalum(FILE*basealumno,t_alumno varreg)
{ int nreg=1;
system("cls");
fread(&varreg,sizeof(t_alumno),1,basealumno);
feof(basealumno);
printf("\nApellido: %s\nNombre: %s\nFecha Nac: %d/%d/%d\n1er parcial: %d\n2do parcial: %d\nProm.Final: %f\nNumero de registro: %d\n\n",varreg.apellido,varreg.nombre,varreg.fnac.dd,varreg.fnac.mm,varreg.fnac.aa,varreg.p1,varreg.p2,varreg.prom,nreg);
fread(&varreg,sizeof(t_alumno),1,basealumno);
while(!feof(basealumno))
{printf("\nApellido: %s\nNombre: %s\nFecha Nac: %d/%d/%d\n1er parcial: %d\n2do parcial: %d\nProm.Final: %f\nNumero de registro: %d\n\n",varreg.apellido,varreg.nombre,varreg.fnac.dd,varreg.fnac.mm,varreg.fnac.aa,varreg.p1,varreg.p2,varreg.prom,nreg+1);
fread(&varreg,sizeof(t_alumno),1,basealumno);
nreg++;
}
}