Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación 1
FICHEROS
Tarea Virtual
6
Pág. 1
Cristian Joel Riofrío
This study source was downloaded by 100000827988077 from CourseHero.com on 04-05-2022 16:44:47 GMT -05:00
https://www.coursehero.com/file/64646907/Tarea-6-Cristian-Joel-Riofrio-Medinadocx/
Tarea Virtual 6
TEMA: Ficheros
OBJETIVO: Aplicar el paradigma de programación modular para la implementación de
problemas de cómputo mediante la técnica de Diseño Top-Down.
ACTIVIDAD:
Un profesor tiene 30 estudiantes y cada estudiante tiene cuatro calificaciones parciales. Almacenar los
datos en un archivo (fichero de texto o binario) asociado al nombre del estudiante, dejando espacio para la
nota final de examen.
Desarrollo:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
#include <iostream>
#include <vector>
#define maxn 20
Pág. 2
Cristian Joel Riofrío
This study source was downloaded by 100000827988077 from CourseHero.com on 04-05-2022 16:44:47 GMT -05:00
https://www.coursehero.com/file/64646907/Tarea-6-Cristian-Joel-Riofrio-Medinadocx/
Tarea Virtual 6
/* Estructuras */
typedef struct {
int codigo;
char nombre[maxn];
double p1,p2,p3,p4, nota_final;
} Estudiante;
void crear(){
FILE *archivo;
archivo = fopen(nom_fichero,"wb");
fclose(archivo);
}
bool espacio(){
FILE *archivo;
archivo = fopen(nom_fichero,"rb");
Estudiante estudiante;
int tamanio = 0;
if (existe_fichero(archivo)){
fread(&estudiante, sizeof(Estudiante), 1, archivo);
while(!feof(archivo))
{
tamanio++;
fread(&estudiante, sizeof(Estudiante), 1, archivo);
}
fclose(archivo);
}
if (existe_fichero(archivo)){
fread(&estudiante, sizeof(Estudiante), 1, archivo);
while(!feof(archivo))
{
if (codigo == estudiante.codigo){
existe = true;
break;
}
fread(&estudiante, sizeof(Estudiante), 1, archivo);
}
fclose(archivo);
}
return existe;
Pág. 3
Cristian Joel Riofrío
This study source was downloaded by 100000827988077 from CourseHero.com on 04-05-2022 16:44:47 GMT -05:00
https://www.coursehero.com/file/64646907/Tarea-6-Cristian-Joel-Riofrio-Medinadocx/
Tarea Virtual 6
}
void op1() {
Estudiante estudiante;
cout<<"1. Agregar estudiantes:\n\n";
cout<<"Ingrese codigo: ";
cin>>estudiante.codigo;
if(!buscar(estudiante.codigo)){
cout<<"Ingrese nombre: ";
fflush(stdin);
/* Limpia buffer */
gets(estudiante.nombre);
estudiante.p1=0;
estudiante.p2=0;
estudiante.p3=0;
estudiante.p4=0;
estudiante.nota_final=0;
FILE *archivo;
archivo = fopen(nom_fichero,"ab");
if (!existe_fichero(archivo)){
crear();
}
void op2() {
Estudiante estudiante;
int codigo;
cout<<"2. Visualizar datos de un estudiante:\n\
n"; cout<<"Ingrese codigo: ";
cin>>codigo;
bool existe = false;
FILE *archivo;
archivo = fopen(nom_fichero,"rb");
if (existe_fichero(archivo)){
fread(&estudiante, sizeof(Estudiante), 1, archivo);
while(!feof(archivo))
{
if (codigo == estudiante.codigo){
cout<<"\nCodigo: "<<estudiante.codigo<<"\nNombre: "<<estudiante.nombre<<"\n\n";
existe = true;
break;
}
fread(&estudiante, sizeof(Estudiante), 1, archivo);
}
fclose(archivo);
if(!existe){
cout<<"Error. No existe el codigo "<<codigo<<"\n\n";
}
}
else{
Pág. 4
Cristian Joel Riofrío
This study source was downloaded by 100000827988077 from CourseHero.com on 04-05-2022 16:44:47 GMT -05:00
https://www.coursehero.com/file/64646907/Tarea-6-Cristian-Joel-Riofrio-Medinadocx/
Tarea Virtual 6
cout<<"Error. Archivo "<<nom_fichero<<" no existe\n\n";
}
}
void op3() {
Estudiante estudiante;
int codigo;
cout<<"3. Introducir nuevas notas:\n\n";
cout<<"Ingrese codigo: ";
cin>>codigo;
bool existe = false;
FILE *archivo;
archivo = fopen(nom_fichero,"r+b");
char respuesta[1];
if (existe_fichero(archivo)){
fread(&estudiante, sizeof(Estudiante), 1, archivo);
while(!feof(archivo))
{
if (codigo == estudiante.codigo){
cout<<"\nCodigo: "<<estudiante.codigo<<"\nNombre: "<<estudiante.nombre<<"\nNotas:"; cout<<"\n\
tParcial 1: "<<estudiante.p1;
cout<<"\n\tParcial 2: "<<estudiante.p2;
cout<<"\n\tParcial 3: "<<estudiante.p3;
cout<<"\n\tParcial 4: "<<estudiante.p4; cout<<"\
n\tNota Final: "<<estudiante.nota_final; cout<<"\
n\n";
Pág. 5
Cristian Joel Riofrío
This study source was downloaded by 100000827988077 from CourseHero.com on 04-05-2022 16:44:47 GMT -05:00
https://www.coursehero.com/file/64646907/Tarea-6-Cristian-Joel-Riofrio-Medinadocx/
Tarea Virtual 6
cout<<"Desea editar las nota final (S/N): ";
cin>>respuesta;
if ((strcmp(respuesta, "S") == 0 || strcmp(respuesta, "s") == 0)) {
cout<<"Ingrese la nota final: ";
cin>>estudiante.nota_final;
cout<<"Info. Nota ingresada "<<estudiante.nota_final<<"\n";
}
}
void op4() {
Estudiante estudiante;
int codigo;
cout<<"4. Mostrar notas de un estudiante:\n\
n"; cout<<"Ingrese codigo: ";
cin>>codigo;
bool existe = false;
FILE *archivo;
archivo = fopen(nom_fichero,"rb");
char respuesta[1];
if (existe_fichero(archivo)){
fread(&estudiante, sizeof(Estudiante), 1, archivo);
while(!feof(archivo))
{
if (codigo == estudiante.codigo){
cout<<"\nCodigo: "<<estudiante.codigo<<"\nNombre: "<<estudiante.nombre<<"\nNotas:"; cout<<"\n\
tParcial 1: "<<estudiante.p1;
cout<<"\n\tParcial 2: "<<estudiante.p2;
cout<<"\n\tParcial 3: "<<estudiante.p3;
cout<<"\n\tParcial 4: "<<estudiante.p4;
cout<<"\n\tNota Final: "<<estudiante.nota_final;
Pág. 6
Cristian Joel Riofrío
This study source was downloaded by 100000827988077 from CourseHero.com on 04-05-2022 16:44:47 GMT -05:00
https://www.coursehero.com/file/64646907/Tarea-6-Cristian-Joel-Riofrio-Medinadocx/
Tarea Virtual 6
}
}
else{
cout<<"Error. Archivo "<<nom_fichero<<" no existe\n\n";
}
}
void menu(){
int op=0, ini=1, fin=5;
do{
system("cls");
cout<<"\tSistema Calificacion Estudiantes\n\n";
cout<<"Menu (Seleccione una opcion):\n\n";
cout<<"1. Agregar estudiantes\n";
cout<<"2. Visualizar datos de un estudiante\n";
cout<<"3. Introducir nuevas notas\n";
cout<<"4. Mostrar notas de un estudiante\n";
cout<<"5. Salir\n\n";
cin>>op;
do
{
if(op<ini || op>fin)
{
cout<<"Error. Seleccione una opcion correcta del Menu\n";
cin>>op;
}
}while(op<ini || op>fin);
switch (op)
{
case 1: system("cls");
if(espacio()){
op1();
}
system("pause");
break;
case 2: system("cls");
//if(espacio(array.size()))
{ op2();
//}
system("pause");
break;
case 3: system("cls");
op3();
system("pause");
break;
case 4: system("cls");
op4();
system("pause");
break;
default: break;
}
}while(op!=fin);
}
Pág. 7
Cristian Joel Riofrío
This study source was downloaded by 100000827988077 from CourseHero.com on 04-05-2022 16:44:47 GMT -05:00
https://www.coursehero.com/file/64646907/Tarea-6-Cristian-Joel-Riofrio-Medinadocx/