/* * SETM [Numero], [Registro], [Registro] * * Pone tantos bytes desde el segundo registro hacia la memoria * apuntada por el primer registro */ resultado_t setm(tcb_t* tcb) { char registro1, registro2; int32_t valor_del_registro_1, valor_del_registro_2; int32_t cantidad_de_bytes_a_copiar; if (leer_numero(tcb, &cantidad_de_bytes_a_copiar) == FALLO_LECTURA_DE_MEMORIA) return ERROR_EN_EJECUCION; if (leer_registro(tcb, ®istro1) == FALLO_LECTURA_DE_MEMORIA) return ERROR_EN_EJECUCION; if (leer_registro(tcb, ®istro2) == FALLO_LECTURA_DE_MEMORIA) return ERROR_EN_EJECUCION; ansisop_ejecucion_instruccion4("SETM", cantidad_de_bytes_a_copiar, registro1, registro2); if (obtener_valor_del_registro(tcb, registro1, &valor_del_registro_1) == EXCEPCION_NO_ENCONTRO_EL_REGISTRO) return ERROR_EN_EJECUCION; if (obtener_valor_del_registro(tcb, registro2, &valor_del_registro_2) == EXCEPCION_NO_ENCONTRO_EL_REGISTRO) return ERROR_EN_EJECUCION; _copiar_bytes_a_memoria(tcb, valor_del_registro_1, valor_del_registro_2, cantidad_de_bytes_a_copiar); return OK; }
/* * LOAD [Registro], [Numero] * * Carga en el registro el número dado */ resultado_t load(tcb_t* tcb) { char registro; int32_t numero; if (leer_registro(tcb, ®istro) == FALLO_LECTURA_DE_MEMORIA) return ERROR_EN_EJECUCION; if (leer_numero(tcb, &numero) == FALLO_LECTURA_DE_MEMORIA) return ERROR_EN_EJECUCION; ansisop_ejecucion_instruccion3("LOAD", numero, registro); if (actualizar_valor_del_registro(tcb, registro, numero) == EXCEPCION_NO_ENCONTRO_EL_REGISTRO) return ERROR_EN_EJECUCION; return OK; }
void menu_principal(int opc, char *id, Usuarios *ListaUsuarios, int *numUser) { int x, numVehiculos = 0, numViajes = 0, numPasos = 0, numIncidencias = 0, pos; int o, i; char *id_new, *matricula, c; Vehiculos* L_Vehiculos; Viajes* L_Viajes; Pasos* L_Pasos; Incidencias* L_Incidencias; printf("\nCargando información en el programa.\n"); L_Vehiculos = obtenerVehiculos(&numVehiculos); L_Viajes = obtenerViajes(&numViajes); L_Pasos = obtenerPasos(&numPasos); L_Incidencias = obtenerIncidencias(&numIncidencias); printf("\nInformación cargada.\n"); printf("\nActualizando información\n"); autoFinalizarViaje(L_Viajes, numViajes); printf("\nInformación actualizada\n"); if (opc == 1) { do { printf("Bienvenido al menu de administración\n" "Introduzca la opcion que desea\n\n " "1: Menú usuarios\n " "2: Menú vehiculos\n " "3: Menú viajes\n " "4: Menú incidencias\n " "0: salir\n"); x = leer_numero("Indica la opción"); switch (x) { case 0: break; case 1: do { printf("Bienvenido al menu de administración\n" "Introduzca la opcion que desea\n\n " "1: Alta usuario\n " "2: Baja usuario\n " "3: Modificar usuario\n " "4: Mostrar usuarios\n " "0: salir\n"); o = leer_numero("Indica la opción"); switch (o) { case 0: break; case 1: id = altaUsuario(ListaUsuarios, numUser); printf("\n\tDado de alta usuario nuevo con el id : %s\n", id_new); break; case 2: bajaUsuario(ListaUsuarios, numUser); break; case 3: modificaAdmin(ListaUsuarios, numUser); break; case 4: listarUsuario(ListaUsuarios, numUser); break; default: printf("Error al elegir la opcion.\t"); break; } } while (o != 0); break; case 2: do { printf("Introduzca la opcion que desea\n\n " "1: Alta vehiculo\n " "2: Baja vehiculos\n " "3: Listar vehiculos\n " "4: Modificar vehiculos\n " "5: Listar los viajes de un vehiculo" "0: salir\n"); o = leer_numero("Indica la opción"); switch (o) { case 0: break; case 1: alta_vehiculo(L_Vehiculos,&numVehiculos,id); break; case 2: baja_vehiculo(L_Vehiculos,numVehiculos); break; case 3: vehiculos_user(id,L_Vehiculos,numVehiculos); break; case 4: vehiculos_user(id,L_Vehiculos,numVehiculos); matricula = leer_campo(TAM_ID_VEI, "Escriba la matricula del vehiculo a modificar"); pos = buscar_vehiculo(matricula,L_Vehiculos,numVehiculos); modificar_vehiculo(L_Vehiculos,pos); break; case 5: listar_viajes_coche(L_Viajes,matricula,numVehiculos); default: printf("Error al elegir la opcion.\t"); break; } } while (o != 0); break; case 3: do { printf("Introduzca la opcion que desea:\n1.- Publicar viaje.\n2.- Eliminar viaje.\n3.- Modificar viaje.\n4.- Listar viajes.\n0.- Salir."); scanf("%d", &o); switch (o) { case 0: exit(0); break; case 1: publicar_viaje(L_Viajes,&numViajes,id); break; case 2: eliminar_viaje(L_Viajes,&numViajes); break; case 3: modificar_viaje(L_Viajes); break; case 4: listar_viaje(L_Viajes,numViajes,L_Pasos,&numPasos); break; default: printf("ERROR: Opcion invalida."); break; } } while (o != 0); break; case 4: do { printf("Introduzca la opcion que desea:\n" "1.- Publicar incidencia.\n" "2.- Eliminar incidencia.\n" "3.- Modificar incidencia.\n" "4.- Listar incidencia.\n" "5.- Validar incidencia.\n" "0.- Salir."); scanf("%d", &o); char *usuario,*conductor,*viaje; if(o == 1 || o == 2 || o == 3){ usuario = leer_campo(TAM_ID_USER,"Introduce el id del usuario que realiza la incidencia"); viaje = leer_campo(TAM_ID_VIA,"Introduce el id dek viaje de la incidencia"); conductor = leer_campo(TAM_ID_USER,"Introduce el id del conductor de la incidencia"); } switch (o) { case 0: exit(0); break; case 1: crearIncidencias(L_Incidencias, &numIncidencias,usuario,viaje,conductor); break; case 2: eliminarIncidencias(L_Incidencias, &numIncidencias,usuario,viaje,conductor); break; case 3: modificarIncidencias(L_Incidencias,numIncidencias,usuario,viaje,conductor); break; case 4: listarIncidencias(L_Incidencias,numIncidencias,"Admin"); break; case 5: validarIncidencias(L_Incidencias,numIncidencias); break; default: printf("ERROR: Opcion invalida."); break; } } while (o != 0); break; default: printf("Error al elegir la opcion.\t"); break; } } while (x != 0); } else { pos = buscar_usuario(id, ListaUsuarios, *numUser); do { printf("Bienvenido al menú de la aplicación %s\n " "Introduzca la opcion que desea\n\n " "1: Perfil\n " "2: Menú vehiculos\n " "3: Menú viajes\n " "4: Menú incidencias\n " "0: salir\n", ListaUsuarios[pos].Nomb_usuario); x = leer_numero("Indica la opción"); switch (x) { case 0: break; case 1: do { printf("Bienvenido al menú del usuario, administra tu cuenta %s\n " "Introduzca la opcion que desea\n\n " "1: Mostrar datos\n " "2: Modificar datos\n " "0: salir\n", ListaUsuarios[pos].Nomb_usuario); o = leer_numero("Indica la opción"); switch (o) { case 0: break; case 1: mostrarUsuario(ListaUsuarios, pos); break; case 2: modificaUsuario(ListaUsuarios, pos); break; default: printf("Error al elegir la opcion.\t"); break; } } while (o != 0); break; case 2: do { printf("Bienvenido al menú de la aplicación \n " "Introduzca la opcion que desea\n\n " "1: Alta vehiculo\n " "2: Baja vehiculos\n " "3: Listas vehiculos(propios)\n " "4: Modificar vehiculo\n " "0: salir\n"); o = leer_numero("Indica la opción"); switch (o) { case 0: break; case 1: alta_vehiculo(L_Vehiculos,&numVehiculos,id); break; case 2: baja_vehiculo(L_Vehiculos,numVehiculos); break; case 3: vehiculos_user(id,L_Vehiculos,numVehiculos); break; case 4: vehiculos_user(id,L_Vehiculos,numVehiculos); matricula = leer_campo(TAM_ID_VEI, "Escriba la matricula del vehiculo a modificar"); pos = buscar_vehiculo(matricula,L_Vehiculos,numVehiculos); modificar_vehiculo(L_Vehiculos,pos); break; default: printf("Error al elegir la opcion.\t"); break; } } while (x != 0); break; case 3: printf("Bienvenido al menú de viajes. Estos son los viajes que hay abiertos actualmente.\n"); for (i = 0; i < numViajes; i++) { if (!strcmp(L_Viajes[i].Estado, "Abierto")) { listar_viaje(L_Viajes, numViajes, L_Pasos, &numPasos); if (!strcmp(id, L_Vehiculos[i].Id_usuario) && !strcmp(L_Vehiculos[i].Num_plazas, L_Viajes[i].Plazas_libre)) { printf("¿Desea modificar algún viaje que usted haya publicado? s/n"); scanf("%s", &c); if (c == 's') { modificar_viaje(L_Viajes); } } } } printf("Introduzca la opcion que desea:\n" "1.- Publicar viaje.\n" "2.- Incorporarse a un viaje.\n" "3.- Visualizar viaje.\n" "0.- Salir."); switch(o){ case 0: exit(0); break; case 1: publicar_viaje(L_Viajes, &numViajes, id); break; case 2: unirse_viaje(L_Viajes, &numViajes,id); break; case 3: listar_viaje(L_Viajes, numViajes, L_Pasos, &numPasos); break; default: printf("ERROR: Opcion invalida."); break; } break; case 4: do { printf("Introduzca la opcion que desea:\n" "1.- Publicar incidencia.\n" "2.- Listar incidencia.\n" "0.- Salir."); scanf("%d", &o); char *conductor,*viaje; switch (o) { case 0: exit(0); break; case 1: viaje = leer_campo(TAM_ID_VIA,"Introduce el id dek viaje de la incidencia"); conductor = leer_campo(TAM_ID_USER,"Introduce el id del conductor de la incidencia"); crearIncidencias(L_Incidencias, &numIncidencias,id,viaje,conductor); break; case 2: listarIncidencias(L_Incidencias,numIncidencias,id); break; default: printf("ERROR: Opcion invalida."); break; } } while (o != 0); break; default: printf("Error al elegir la opcion.\t"); break; } } while (x != 0); } printf("\nGuardando información del programa.\n"); guardarDatosVehiculos(L_Vehiculos, numVehiculos); guardarDatosViajes(L_Viajes, numViajes); guardarDatosPasos(L_Pasos, numPasos); guardarDatosIncidencias(L_Incidencias, numIncidencias); printf("\nInformación guardada.\n"); }