lunes, 3 de diciembre de 2012

practica 13


problema de calificaciones de alumnos:




Pseudocódigo
Inicio
void agregar_datos_file()
{
ofstream salida
salida.open("C://Datos//grupo.txt",ios::app)
int j,calf
char name[30],sigue
int calif
do
{
print " Nombre = ? "
gets(name)
salida , name
for(j=1 j<=4 j++)
{
print "Calificacion " , j , " : "
read calf
salida , calf
}
print " Deseas Registrar otro alumno s/n ? "
read sigue
}
while(sigue=='s' || sigue=='S')
salida.close()
}
void listado_datos_file()
{
int i,suma=0,promedio
ifstream entrada
entrada.open("C://Datos//grupo.txt")
char nombre[30]
int c1
clrscr()
print "nombre alumno c1 c2 c3 c4 Promedio "
entrada.getline(nombre,30)
while(entrada.good())
{
print setw(20) , nombre
suma=0
for(i=1 i<=4 i++)
{
entrada>>c1
print setw(4) , c1
suma=suma + c1
}
promedio=suma/4
print setw(5) , promedio
entrada.ignore()
entrada.getline(nombre,30)
}
entrada.close()
}
void menu()
{
print "1)Agregar datos alumno "
print "2)Listado de alumnos "
print "3)Fin de programa "
print "Elige opcion ==> "
}
int main()
{
int opcion
do
{
clrscr()
menu()
read opcion
switch(opcion)
{
case 1: agregar_datos_file()
break
case 2: listado_datos_file()
getch()
break
case 3: print " Fin del programa "
getch()
break
default: print "Error en opcion "
break
}
}
while(opcion !=3)
}
fin


Este programa toma como referencia Pdf Ing. Bruno Lopez T.
Manejo de archivos en Lenguaje C++ .
Instituto Tecnológico de Nuevo Laredo




Pseudocódigo
Inicio
struct producto
{
int noProd
char descrip[30]
realprecio
int cantidad
}
producto Registro
FILE *alias
void ALTA_SECUENCIAL()
void CONSULTA_SECUENCIAL(void)
void LISTADO_SECUENCIAL(void)
void MODIFICACION_SECUENCIAL(void)
void BAJA_LOGICA_SECUENCIAL(void)
void BAJA_FISICA_SECUENCIAL(void)

int menu()

int main()
{
int opc
do
{
clrscr()
opc=menu()
switch(opc)
{
case 1:
ALTA_SECUENCIAL()
break
case 2:
CONSULTA_SECUENCIAL()
break
case 3:
LISTADO_SECUENCIAL()
break
case 4: MODIFICACION_SECUENCIAL()
break
case 5 : BAJA_LOGICA_SECUENCIAL()
break
case 6: BAJA_FISICA_SECUENCIAL()
break
case 7: print " Final programa "
break
default: print " Error en opcion"
}
}
while(opc !=7)
}
void ALTA_SECUENCIAL()
{
int no_prod // Variable local para el numero de producto
clrscr()
print " ALTAS DE REGISTROS DE PRODUCTOS"
alias=fopen("C:\\datos\\PRODUCTO.SEC","rb+") // Intenta abrir el archivo
// en modo de lectura/escritura
if(alias==NULL)
alias=fopen("c:\\datos\\PRODUCTO.SEC","wb") // Crea el archivo en caso de no
// existir
print " Numero de producto: " cin , no_prod
fread(&Registro,sizeof(Registro),1,alias)
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias)) // Ciclo mientras no se encuentre el final del
// archivo
{
if(Registro.noProd==no_prod)
{
print " Registro duplicado !!!"
fclose(alias)
}
fread(&Registro,sizeof(Registro),1,alias)
}
print " Descripcion: " gets(Registro.descrip)
print " Cantidad : " cin , Registro.cantidad
print " Precio : " cin , Registro.precio
Registro.noProd=no_prod
fwrite(&Registro,sizeof(Registro),1,alias) // Grabar el Registro
fclose(alias) // Cierra el archivo
print " Producto registrado !!!"
print " , < Oprima cualquier tecla para continuar >>>"
}
void CONSULTA_SECUENCIAL(void)
{
int no_prod
clrscr()
print " CONSULTA DE REGISTROS DE PRODUCTOS"
alias=fopen("c:\\datos\\PRODUCTO.SEC","rb") // Intenta abrir el archivo
//PRODUCTO.SEC
// en modo de solo lectura
if(alias==NULL)
{
print " No existe el archivo !!!"
print " , < Oprima cualquier tecla para continuar >>>"
}
print " Numero de producto: " cin , no_prod
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias))
{
if(Registro.noProd==no_prod)
{
print " No Prod Descripcion Cantidad Precio "
print " ---------------------------------------------------- "
print Registro.noProd , setw(20) , Registro.descrip , setw(10) , Registro.cantidad , setw(10) , Registro.precio
fclose(alias)
print " , < Oprima cualquier tecla para continuar >>>"
}
fread(&Registro,sizeof(Registro),1,alias)
}
print " No se encuentra ese registro !!!"
fclose(alias) // Cierra el archivo
print " , < Oprima cualquier tecla para continuar >>>"
}
void LISTADO_SECUENCIAL(void)
{
clrscr()
print " LISTADO DE REGISTROS DE PRODUCTOS"
alias=fopen("c:\\datos\\PRODUCTO.SEC","rb") // Intenta abrir el archivo
//PRODUCTO.SEC
// en modo de solo lectura
if(alias==NULL)
{
print " No existe el archivo !!!"
print " , < Oprima cualquier tecla para continuar >>>"
}
print " No Prod Descripcion Cantidad Precio "
print " ------------------------------------------------------------------- "
fread(&Registro,sizeof(Registro),1,alias)
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias)) // Ciclo mientras no se encuentre el final del
//archivo
{
print Registro.noProd , setw(20) , Registro.descrip , setw(10) , Registro.cantidad , setw(10) , Registro.precio
fread(&Registro,sizeof(Registro),1,alias)
}
fclose(alias) // Cierra el archivo
print " ------------------------------------------------------------------ "
print " Fin del listado !!!"
print " , < Oprima cualquier tecla para continuar >>>"
}
int menu()
{
int opcion
print " 1)alta de producto "
print " 2)Consulta de producto"
print " 3)Listado de productos"
print " 4)Modificar datos de productos"
print " 5)Baja Logica de productos"
print " 6)Baja Fisica de productos"
print " 7)Salida Programa"
print " Selecciona opcion = ? "
read opcion
return opcion
}
void MODIFICACION_SECUENCIAL(void)
{
int no_prod // Variable local para el numero de producto que desea
//modificar
clrscr()
print " MODIFICACION DE REGISTROS DE PRODUCTOS"
alias=fopen("c:\\datos\\PRODUCTO.SEC","rb+") // Intenta abrir el archivo
//PRODUCTO.SEC
// en modo de lectura/escritura
if(alias==NULL) // Valida la existencia del archivo
{
print " No existe el archivo !!!"
print " , < Oprima cualquier tecla para continuar >>>"
}
print " Numero de producto: " cin , no_prod
fread(&Registro,sizeof(Registro),1,alias)
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias)) // Ciclo mientras no se encuentre el final del
//archivo
{
if(Registro.noProd==no_prod)
{
print " No Prod Descripcion Cantidad Precio "
print " -------------------------------------------------------------- "
print Registro.noProd , setw(20) , Registro.descrip , setw(10) , Registro.cantidad , setw(10) , Registro.precio
print " Anote los nuevos datos ..."
print " Descripcion: " gets(Registro.descrip)
print " Cantidad : " cin , Registro.cantidad
print " Precio : " cin , Registro.precio
// Es necesario reposicionar el apuntador del archivo al principio
//del
// registro que desea modificar, ya que al leer un registro, el
// apuntador se posiciona en el registro siguiente
// La funcion ftell(alias) devuelve la posicion donde se encuentra
// el apuntador
fseek(alias,ftell(alias)-sizeof(Registro),SEEK_SET)
fwrite(&Registro,sizeof(Registro),1,alias) // Graba el registro
// con los nuevos campos
fclose(alias) // Cierra el archivo
print " Registro modificado !!!"
print " , < Oprima cualquier tecla para continuar >>>"
}
fread(&Registro,sizeof(Registro),1,alias)
}
print " No se encuentra ese registro !!!"
fclose(alias) // Cierra el archivo
print " , < Oprima cualquier tecla para continuar >>>"
}
void BAJA_LOGICA_SECUENCIAL(void)
{
int no_prod // Variable local para el numero de producto que desea
//eliminar
char op //Variable local
clrscr()
print " BAJAS LOGICAS DE REGISTROS DE PRODUCTOS"
alias=fopen("c:\\datos\\PRODUCTO.SEC","rb+") // Intenta abrir el archivo
//PRODUCTO.SEC
// en modo de lectura/escritura
if(alias==NULL) // Valida la existencia del archivo
{
print " No existe el archivo !!!"
print " , < Oprima cualquier tecla para continuar >>>"

}
print " Numero de producto: " cin , no_prod
fread(&Registro,sizeof(Registro),1,alias)
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias)) // Ciclo mientras no se encuentre el final del
//archivo
{
if(Registro.noProd==no_prod)
{
print " No Prod Descripcion Cantidad Precio "
print " --------------------------------------------------------------- "
print Registro.noProd , setw(20) , Registro.descrip , setw(10) , Registro.cantidad , setw(10) , Registro.precio
Registro.noProd=0
strcpy(Registro.descrip,"")
Registro.cantidad=0
Registro.precio=0.0
do {
cout , " Esta seguro que desea borrarlo? [S/N] ---> "
op=toupper(getche())
}while(op!='S' && op!='N')
if(op=='S')
{
// Es necesario reposicionar el apuntador del archivo al principio del
// registro que desea modificar, ya que al leer un registro, el
// apuntador se posiciona en el registro siguiente
// La funcion ftell(alias) devuelve la posicion donde se encuentra
// el apuntador
fseek(alias,ftell(alias)-sizeof(Registro),SEEK_SET)
fwrite(&Registro,sizeof(Registro),1,alias) // Graba el registro
// con los nuevos campos
print " Registro eliminado !!!"
}
fclose(alias) // Cierra el archivo
print " , < Oprima cualquier tecla para continuar >>>"
}
fread(&Registro,sizeof(Registro),1,alias)
}
print " No se encuentra ese registro !!!"
fclose(alias) // Cierra el archivo
print " , < Oprima cualquier tecla para continuar >>>"
}
void BAJA_FISICA_SECUENCIAL(void)
{
FILE *temporal //Declaracion local de una variable para controlar el
// archivo temporal
clrscr()
print " BAJAS FISICAS DE REGISTROS DE PRODUCTOS"
alias=fopen("C:\\datos\\PRODUCTO.SEC","rb") // Intenta abrir el archivo
//PRODUCTO.SEC
// en modo de solo lectura
if(alias==NULL) // Valida la existencia del archivo
{
print " No existe el archivo !!!"
print " , < Oprima cualquier tecla para continuar >>>"
}
temporal=fopen("C:\\datos\ EMPORAL.TMP","wb") // Crea el archivo TEMPORAL.TMP
fread(&Registro,sizeof(Registro),1,alias)
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias)) // Ciclo mientras no se encuentre el final del archivo
{
if(Registro.noProd!=0)
fwrite(&Registro,sizeof(Registro),1,temporal)
/ Graba el registro valido en el archivo temporal
fread(&Registro,sizeof(Registro),1,alias)
}
fcloseall() // Cierra todos los archivos abiertos
remove("C:\\datos\\PRODUCTO.SEC") //Elimina el archivo original
rename("C:\\datos\ EMPORAL.TMP","C:\\datos\\PRODUCTO.SEC")
//Renombra el archivo temporal con el nombre del archivo original
print " Archivo compactado !!!"
print " , < Oprima cualquier tecla para continuar >>>"
}
Fin



practicas en clase



Pseudocódigo
Inicio
struct alumno
{
char nocontrol[8]
char nombre[30]
int calf[4]
}
alumno a[10]
void leerdatosalumno(int n)
void desplegardatosalumno(int n)
int main()
{
int x
print "numero de datos a registrar: "
read x
leerdatosalumno(x)
desplegardatosalumno(x)
}
void leerdatosalumno(int n)
{
 i,j int
for(i=0 to n step  i++)
{
cin.ignore()
print "Numero de Control: "
cin.getline(a[i].nocontrol,8,' ')
cin.ignore()
print "Nombre del almno: "
gets(a[i].nombre)
for(j=0 to 4 step j++)
{
print "calificacion: " , (j+1) , " : "
read a[i].calf[j]
}
}
}
void desplegardatosalumno(int n)
{
 i,j int
print "No control nombre c1 c2 c3 c4 "
for(i=0  to n step i++)
{
print a[i].nocontrol , "" , setw(20) , a[i].nombre , " "
for(j=0 to 4 step j++)
{
print setw(3) , a[i].calf[j]
}
}
}

fin

practicas en clase




//practica 16
Pseudocodigo
inicio
struct alumno
{
char nocontrol[8]
char nombre[30]
int calf[4]
}
alumno a[10]
void leerdatosalumno(int n)
void desplegardatosalumno(int n)
int main()
{
int x
print "numero de datos a registrar"
read x
leerdatosalumno(x)
desplegardatosalumno(x)
getch()
return 0
}
void leerdatosalumno(int n)
{
i,j int
for(i=0 to n step  i++)
{
cin.ignore()
print "Numero de Control: "
cin.getline(a[i].nocontrol,8,' ')
cin.ignore()
print "nombredel almno: "
gets(a[i].nombre)
for(j=0 to 4 step j++)
{
print "calificacion: " , (j+1) , " : "
read a[i].calf[j]
}
}
}
void desplegardatosalumno(int n)
{
i,j int
print "No control nombre c1 c2 c3 c4 promedio "
for(i=0  to n step  i++)
{
 suma int
 promedio real
print a[i].nocontrol , " " , setw(15) , a[i].nombre , " "" "
for(j=0 to 4 step  j++)
{
suma=suma+a[i].calf[j]
promedio=suma/4
print  a[i].calf[j]
}
print " " , promedio
}
}

Fin

No hay comentarios:

Publicar un comentario