-
Notifications
You must be signed in to change notification settings - Fork 1
Home
- Ayudar al alumno a orientarse en la ETSIDI
- Planos de la ETSIDI, con flecha interactiva mostrando el aula/despacho deseado.
- Base de datos que almacena los datos de los alumnos inscritos.
- Al final no conseguimos implementar las librerías necesarias para proyectar el plano en C.
- Tras compilar y ejecutar el programa, aparece un Menú de Inicio con 4 opciones:
1. Nuevo usuario : En caso de que el alumno no se haya registrado, podrá hacerlo pulsando la tecla 1. 2. Iniciar Sesión : En el caso de que ya se haya registrado, podrá iniciar su sesión pulsando la tecla 2. 3. En qué consiste : Si el alumno desea recibir mas información sobre la utilidad y funcionalidades del programa, podrá hacerlo pulsando la tecla 3 4. Exit : Finalmente si el usuario desea salir del programa podrá hacerlo simplemente pulsando la tecla 4
1.1 Nuevo usuario
Tras pulsar la opción de Nuevo usuario, el programa le pedirá al alumno su nombre, apellido, número de matrícula y grado. Después de rellenar los datos, el usuario será reconducido por el programa al menú de inicio donde podrá iniciar sesión con sus datos.
2.1 Iniciar Sesión
Al elegir la opción de Nuevo usuario, el programa pedirá el número de matrícula del alumno. Después de introducirlo, el alumno tendrá la opción de ver sus datos, preguntarle al programa dónde tiene clase, sus tutorías con sus profesores, preguntarle el día y la hora al programa y finalmente la opción de volver al menú principal.
3.1 En que consiste
Cuando el alumno elige esta opción, se desplegara en la pantalla un texto explicativo del programas y sus funcionalidades.
4.1 Exit
Esta opción permite al alumno cerrar el programa.
-
Al compilar y ejecutar el programa se abre este Menú Inicial:
-
Si el alumno elige la opción de nuevo usuario, aparece la siguiente ventana que podrá rellenar cómodamente con sus datos
-
A continuación, le aparecerá una nueva ventana preguntado al alumno su carrera, que deberá elegir pulsando el numero correspondiente a su carrera
-
Después de Registrarse, el alumno sera reconducido al menú de Inicio. Para acceder a su perfil tiene que iniciar sesión, pulsando en la tecla 2 y le aparecerá la siguiente ventana donde escribirá su numero de matricula
-
Tras introducir su numero de matricula, se desplegara su menú personal donde podrá acceder a diferentes funcionalidades:
-
Si el alumno desea ver su ficha con sus datos, tendrá que pulsar en la tecla 1, a continuación le aparecerá la siguiente ventana:
- Si el alumno desea saber que clase tiene, y a que hora, tendrá que pulsar la tecla 2 y le aparecerá la siguiente ventana en función de su clase y matricula
- Si el alumno desea saber que día y hora es, pulsará la tecla 4:
- Volvemos al Menú Inicial, si un alumno desea iniciar sesión con un numero de matricula que no ha sido registrado, el programa no le deja avanzar y lo manda de vuelta al menú de inicio:
- Todavía en el Menú Inicial si un alumno intenta crear un nuevo usuario con un numero de matricula ya registrado el programa no le deja avanzar y lo manda de vuelta al menú de inicio:
- En el Menú Inicial, si el alumno, intrigado por el programa que esta utilizando, desea obtener mas información sobre este ultimo, tendrá que pulsar en la tecla 3 y le aparecerá una ventana con un mensaje explicativo:
- Esta función verifica si existe la matricula cuando creas un usuario
int verificamatricula(usuario a,contenido f,opciones m,int *h, FILE *pf){
int w=0;
pf = fopen("C:/Users/Diego/Desktop/trabajo/matriculas.txt", "r");
if (pf == NULL)
{// Si el resultado es NULL mensaje de error
printf("Error al abrir el fichero.\n");
return -1;
}
else
{// Si ha funcionado, comienza escritura
//asociamos al usuario su nombre, apellidos, matricula, y carrera cursada
printf("Numero de matricula:");
scanf("%i",&a.matricula);
//recorre el vector matricula[100]
for(w;w<100;w++)
{
fscanf(pf,"%i,",&f.matricula[w]);
/*Si dentro del vector recorrido el programa encuentra una matricula igual
a la que se desea registrar entonces el programa imprime que el registro ya existe*/
if (f.matricula[w]==a.matricula){
printf("Ya existe registro con esta matricula");
sleep(2);
//Al entrar en el case 1 opcion es igual a 1,cambiamos dentro del "if" que opcion sea igual a 2
m.opcion=2;
}
}
fclose(pf); // Cerramos fichero
}
*h=a.matricula;
return m.opcion;
}
- Esta función guarda tu nombre y apellido en un documento de texto
int guarda_nomb_apelli(usuario a,FILE *pf1,FILE *pf2)
{
pf1 = fopen("C:/Users/Diego/Desktop/trabajo/nombre.txt", "a");
printf("Nombre:");
scanf("%29s",a.nombre);
if (pf1 == NULL)
{// Si el resultado es NULL mensaje de error
printf("Error al abrir el fichero.\n");
return -1;
}
else
{fprintf(pf1, "%s\t",a.nombre);
fclose(pf1);
}
pf1 = fopen("C:/Users/Diego/Desktop/trabajo/nombre.txt", "a");
printf("Apellidos:");
scanf("%49s",a.apellido);
if (pf1 == NULL)
{// Si el resultado es NULL mensaje de error
printf("Error al abrir el fichero.\n");
return -1;
}
else
{fprintf(pf1, "%s,",a.apellido);
fclose(pf1);
}
/*calcula la longitud de el apellido dentro de la cadena alumno.apellido y ese valor de
longitud lo sumara al del nombre para luego meterlo en el fichero "longitudstrings"*/
a.longiapellido=strlen(a.nombre);
/*calcula la longitud de el nombre dentro de la cadena alumno.nombre y ese valor de
longitud lo sumará al del apellido para luego meterlo en el fichero "longitudstrings"*/
a.longinombre=strlen(a.apellido);
a.sumalongi=(a.longinombre+a.longiapellido+1);//el +1 es contandole un espacio entre el nombre y el apellido
pf2 = fopen("C:/Users/Diego/Desktop/trabajo/longitudstrings.txt", "a");
fprintf(pf2, "%i,",a.sumalongi);
fclose(pf2);
}
- Esta función guarda en otro fichero el numero correspondiente a la carrera que hayas elegido en el registro de usuario
int seleccioncarrera(usuario a,FILE *pf){
//selección de la carrera cursada en la universidad(primer año solo)
do{
system("cls");
printf("Por ultimo, cual es tu carrera?\n\n\t\t(1)Electrica\t(2)Mecanica\t(3)Quimica Industrial\n\t\t(4)Diseno industrial y desarollo de producto\t(5)Electronica\n");
scanf("%i",&a.carrera);
/*bucle do while para que el usuario seleccione una de las opciones permitidas como carrera
(se queda pillado si se elige otra cosa que un entero)*/
}while((a.carrera!=1)&&(a.carrera!=2)&&(a.carrera!=3)&&(a.carrera!=4)&&(a.carrera!=5));
pf = fopen("C:/Users/Diego/Desktop/trabajo/carreras.txt", "a");
fprintf(pf, "%i,",a.carrera);
fclose(pf);
}
- Esta función verifica si la matrícula ya existe cuando inicias sesión
int matriculaexistente(usuario a,contenido f,opciones m,int *x,FILE *pf){
/volvemos a poner posicion dentro de la función para que se entienda mejor/
int j=0,n=0,posicion;
printf("Introduce tu numero de matricula\t");
scanf("%i",&a.matricula);
pf = fopen("C:/Users/Diego/Desktop/trabajo/matriculas.txt", "r");
if (pf == NULL)
{// Si el resultado es NULL mensaje de error
printf("Error al abrir el fichero.\n");
return -1;
}
else
{
for(j;j<100;j++)
{
fscanf(pf,"%i,",&f.matricula[j]);
if(f.matricula[j]!=a.matricula)
{
/*añadimos un n el cual se suma 1 a si mismo cada vez que la matricula de inicio de sesión
no concuerda con ninguna matricula registrada y guardada en el vector matricula*/
n++;
}
/*Este else solo puede repetirse una vez máximo por que no hay dos matriculas iguales,
entonces la matricula correspondiente se haya en esta posición j y podremos determinar toda
la demás información del usuario gracias a esta posición*/
else posicion=j;
}
if(n==100)
{
/*si la matricula no ha sido registrada el entero n sera igual a 100 porque en ningún momento
se habrá dado el caso del else posicion=j,n es 100 porque el vector matricula tiene dimensión 100*/
printf("\n\t\tNo existe registro con esa matricula");
//En ese caso cambiamos opción por 1 para que se salga de nuevo al menú principal sin pasar por el if de la linea 122
m.opcion=1;
//Simplemente para que al usuario le de tiempo a leer el mensaje
sleep(3);
}
fclose(pf);
}
*x=posicion;
return m.opcion;
}
- Imprime los datos del usuario cuando inicia sesión y le da a la opción mis datos
int imprimir_datos_usuario(contenido f,int posicion,FILE *pf1,FILE *pf2,FILE *pf3){
int suma1=0,suma2=0;
//usamos h para los siguientes "for"
int h=0;
pf2 = fopen("C:/Users/Diego/Desktop/trabajo/longitudstrings.txt", "r");
for(h=0;h<(posicion);h++)
{
fscanf(pf2,"%i,",&f.longiregistro[h]);
/*suma1 es la suma de las longitudes de las cadenas
de caracteres de nombre y apellido hasta la del usuario NO INCLUIDO (nos va a servir para cortar
los nombres anteriores de manera que el programa solo imprima a partir de el nombre del usuario)*/
suma1=suma1+f.longiregistro[h];
}
fscanf(pf2,"%i,",&f.longiregistro[posicion]);
/*suma2 es la suma de las longitudes de las cadenas
de caracteres de nombre y apellido hasta la del usuario INCLUIDO (nos va a servir para cortar
los nombres posteriores de manera que el programa deje de imprimir tras el nombre del usuario)*/
suma2=suma1+f.longiregistro[posicion];
fclose(pf2);
pf1 = fopen("C:/Users/Diego/Desktop/trabajo/nombre.txt", "r");
//Aquí es donde imprimimos uno por uno los caracteres del intervalo descrito anteriormente para el nombre del usuario
if (pf1 == NULL)
{// Si el resultado es NULL mensaje de error
printf("Error al abrir el fichero.\n");
return -1;
}
else
{
for(h=0;h<suma2;h++)
{
fscanf(pf1,"%c,",&f.registro[h]);
if(h>=suma1&&h<suma2)
printf("%c",f.registro[h]);
}}
fclose(pf1);
//Aquí es donde imprimimos uno por uno los caracteres del intervalo descrito anteriormente para el apellido del usuario
printf("\n");
//Aqui pf3 corresponde realmente a la direccion de puntero pf4 en el programa principal
pf3 = fopen("C:/Users/Diego/Desktop/trabajo/carreras.txt", "r");
//Debemos crear un bucle for que empiece desde 0 para que asigne a cada valor su posicion real en el fscanf
for(h=0;h<100;h++){
fscanf(pf3, "%i,",&f.carrera[h]);
}
/*teniendo la posición de la matricula elegida dentro del vector matricula,
obtenemos al mismo tiempo la posición de la carrera elegida por dicho usuario en el vector carrera*/
switch(f.carrera[posicion])
{
case 1: printf("Electrica");
break;
case 2: printf("Mecanica");
break;
case 3: printf("Quimica Industrial");
break;
case 4: printf("Disenho industrial y desarrollo de producto");
break;
case 5: printf("Electronica");
break;
default: printf("NO ES POSIBLE");//No es posible llegar a este default
break;
}
fclose(pf3);
getch();
}
- Esta función dice donde hay clase dependiendo de el día de la semana que es
clases(clase a,FILE *pf){
int h,r=0;
char lunes[10]="Monday",martes[10]="Tuesday",miercoles[10]="Wednesday",jueves[10]="Thursday",viernes[10]="Friday";
/* función time que recibe como parámetro un puntero nulo
--> devuelve el tiempo en una variable de tipo time_t*/
time_t t=time(0);
/*función localtime recibe como parámetro un puntero
t de variable time_t --> devuelve un puntero (horalocal) hacia la estructura de tipo tm*/
struct tm *local=localtime(&t);
//definimos una cadena de caracteres donde se va a almacenar la información final
char dia[10];
strftime(dia,9,"%A",local);
pf = fopen("C:/Users/Diego/Desktop/trabajo/clase.txt","r");
//Aquí es donde imprimimos uno por uno los caracteres del intervalo descrito anteriormente para el nombre del usuario
if (pf == NULL)
{// Si el resultado es NULL mensaje de error
printf("Error al abrir el fichero.\n");
return -1;
}
else
{
if ((strcmp(lunes,dia))==0){
r=1;
for(h=0;h<78;h++)
{
fscanf(pf,"%c,",&a.horario[h]);
printf("%c",a.horario[h]);
}}
if ((strcmp(martes,dia))==0){
r=1;
for(h=0;h<158;h++)
{
fscanf(pf,"%c,",&a.horario[h]);
if(h>=79&&h<135) printf("%c",a.horario[h]);
}}
if ((strcmp(miercoles,dia))==0){
r=1;
for(h=0;h<500;h++)
{
fscanf(pf,"%c,",&a.horario[h]);
if(h>=135&&h<200) printf("%c",a.horario[h]);
}}
if ((strcmp(jueves,dia))==0){
r=1;
for(h=0;h<500;h++)
{
fscanf(pf,"%c,",&a.horario[h]);
if(h>=200&&h<272) printf("%c",a.horario[h]);
}}
if ((strcmp(viernes,dia))==0){
r=1;
for(h=0;h<500;h++)
{
fscanf(pf,"%c,",&a.horario[h]);
if(h>=272&&h<367) printf("%c",a.horario[h]);
}}
if(r=0)
printf("Es fin de semana no tienes claseee!!!");
fclose(pf);
}
getch();
}