Dev - C++ - Problema con archivos, no guarda la informacion

 
Vista:
sin imagen de perfil

Problema con archivos, no guarda la informacion

Publicado por Diego (1 intervención) el 21/04/2018 03:40:51
Hola, esta es la primera vez que escribo en el foro, estoy empezando a utilizar archivos en c++ y necesito crear una base de datos, donde se puedan añadir, modificar y eliminar alumnos, por lo pronto me estoy peleando con eso de añadirlos, lo que quiero que haga el programa es solicitar un ID nuevo, comparar este id con los existentes en la base de datos, en caso de que no exista este ID, entonces crear un nuevo alumno, al que se le podrán añadir mas datos, y al final guardar estos datos, el problema es que creo que jamas se guardan los datos, por lo que nunca tendré un id existente, ya que el archivo no contiene información

Aquí les dejo mi código para cualquier sugerencia que tengan
el problema es en la funcion anAlumno

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
#include <iostream>
#include <fstream>
 
using namespace std;
 
struct stAlumnos{
	int id;
	char nombre[15];
	char contrasena[10];
	char apellidoP[15];
	char apellidoM[15];
	char nivelDeEstudios[20];
	char carrera[20];
	bool situacionAcademica;
	float prom;
	bool riesgoAcademico;
	int materiasAdeudadas;
	char generacion[20];
	char email[30];
	int semestre;
	char grupo;
};
 
void anAlumno();
 
int main(){
 
	int opcion;
	do{
		system("cls");
		cout<<"Bienvenido al menu de edicion de alumnos"<<endl;
		cout<<"1.- Anadir un alumno"<<endl;
		cout<<"2.- Modificar un alumno"<<endl;
		cout<<"3.- Eliminar un alumno"<<endl;
		cout<<"4.- Ver alumnos"<<endl;
		cout<<"0.-Salir"<<endl;
		cout<<"Opcion: ";
		cin>>opcion;
		switch(opcion){
			case 0:{
				cout<<"Adios"<<endl;
				break;
			}
			case 1:{
				anAlumno();
				break;
			}
			case 2:{
				break;
			}
			case 3:{
				break;
			}
			case 4:{
				break;
			}
			default:{
				cout<<"La opcion seleccionada no existe"<<endl;
				break;
			}
		}
	system("pause");
	}while(opcion!=0);
}
 
void anAlumno(){
	fstream archivoAlumnos;
	archivoAlumnos.open("alumnos.txt",ios::binary|ios::out|ios::app);
	if(!archivoAlumnos){
		cerr<<"Error, no existe el archivo"<<endl;
	}
	stAlumnos leerAlumnos;
	archivoAlumnos.read(reinterpret_cast<char *>(&leerAlumnos),sizeof(stAlumnos));
	cout<<"Dame un id para asignar al nuevo alumno: ";
	int nuevoId;
	cin>>nuevoId;
	bool existeId=false;
	int fileSize=0;
	while(!archivoAlumnos.eof()){
		if(leerAlumnos.id==nuevoId){
			cout<<"Error, este Id ya existe"<<endl;
			existeId=true;
			fileSize++;
		}
	}//verifica si el ID ya existe	
	if(existeId==false){
		archivoAlumnos.seekp(fileSize*sizeof(stAlumnos),ios::beg);
		leerAlumnos.id=nuevoId;
		cout<<"Dame el nombre del alumno: ";
		fflush(stdin);
		cin.getline(leerAlumnos.nombre,15);
		archivoAlumnos.write(reinterpret_cast<char *>(&leerAlumnos),sizeof(stAlumnos));
	}
	archivoAlumnos.close();
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder