Cuadernillo De Examen: Soluciones Propuestas ASIGNATURA

Transcription

UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRIDFacultad de InformáticaEscuela Universitaria de InformáticaDepartamento de Lenguajes y Sistemas Informáticos e Ingeniería de SoftwareCuadernillo de examen: Soluciones NO:CARÁCTER:Interacción Hombre-MáquinaInteracción Persona-ComputadoraSegundo parcial de junio de 2004MañanaAnualDURACIÓN APROXIMADA: 2,5 horasCÓDIGO:208PLAN DE ESTUDIOS: 2000 / 20022ºCURSO:CURSO ACADÉMICO: 2003/2004Ingeniería Técnica en InformáticaPROGRAMA:Ingeniería en InformáticaParte teórica1.Arrays en Visual Basic .NET. Declaración de arrays. Instanciación de arrays. Redimensionamiento de arrays.Ordenación y búsqueda con objetos de la clase Array.Apuntes y documentación proporcionada por el profesor.Puntuación: 1 punto.2.Describa los elementos y funcionalidades del entorno común de ejecución (Common Language Runtime o CLR) de.NET Framework.Apuntes y documentación proporcionada por el profesor.Puntuación: 1 punto.2.Los Formularios como objeto principal del Interfaz: Clase a que pertenecen, creación de instancias, referencia alformulario activo. Escribir y explicar brevemente todos los eventos que se producen en su ciclo de vida, desde que secrea una nueva instancia del objeto hasta que se libera dicha instancia.Apuntes y documentación proporcionada por el profesor.Puntuación: 1 punto.Parte prácticaEjercicio 1Tenemos un formulario como el siguiente para almacenar los datos de los participantes en un maratón. Dichos datosson los siguientes: Nombre, Dorsal, Fecha Nacimiento y Sexo (“H” o “M”).Se pide lo siguiente:a) Declaraciones necesarias para almacenar los datos en un array de memoria.Interacción Hombre-Máquina (208)Segundo parcial Junio 2004 - MañanaPágina 1 de 5

UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRIDFacultad de InformáticaEscuela Universitaria de InformáticaDepartamento de Lenguajes y Sistemas Informáticos e Ingeniería de Software0,5 puntosStructure CorredorDim Nombre As StringDim Dorsal As IntegerDim Fecha As DateDim Sexo As CharSub New(ByVal n As String, ByVal d As Integer,ByVal f As Date, ByVal s As Char)nombre nDorsal dFecha fsexo sEnd SubPublic Overrides Function toString() As StringReturn nombreEnd FunctionEnd Structureb) Cada vez que se seleccione un nombre en el Listbox, sus datos se mostrarán en los correspondientescontroles.1 puntoPrivate Sub Corredores SelectedIndexChanged(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Corredores.SelectedIndexChangedDim c As Corredor Corredores.SelectedItemNombre.Text c.NombreDorsal.Text c.DorsalFechaNacimiento.Value c.FechaIf c.Sexo "M" ThenMujer.Checked TrueElseHombre.Checked TrueEnd IfEnd SubEnd Classc)El botón Nuevo borra el contenido de los controles y pone el foco en el control que recibe el nombre delcorredor.0,5 puntosPrivate Sub Nuevo Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Nuevo.ClickNombre.Text String.EmptyDorsal.Text String.EmptyHombre.Checked TrueFechaNacimiento.Value Date.Now()Nombre.Select()End Subd) El botón Agregar asigna los datos de los controles al nuevo corredor, agregando éste al array y al ListBox.Debe validarse que el Dorsal sea numérico.1 puntoPrivate Sub Agregar Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Agregar.ClickIf Not IsNumeric(Dorsal.Text) ThenMessageBox.Show("El dorsal debe ser numérico","Error de entrada de datos",Interacción Hombre-Máquina (208)Segundo parcial Junio 2004 - MañanaPágina 2 de 5

UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRIDFacultad de InformáticaEscuela Universitaria de InformáticaDepartamento de Lenguajes y Sistemas Informáticos e Ingeniería de ation)Dorsal.Text String.EmptyDorsal.Select()ElseDim sexo As CharIf Hombre.Checked Thensexo "H"Elsesexo "M"End IfDim c As New Corredor(Nombre.Text, Items.Add(c)End IfEnd SubEjercicio 2Para gestionar un Camping se cuenta con una base de datos: Camping.Mdb, que contiene las siguientes tablas:PLAZAS Información sobre las plazas existentes. La estructura TASTipoEnteroCadena (1 car)Cadena (30 car)LógicoMonedaDescripciónNº de la plaza (campo clave)Tipos: A, B y C según ubicaciónUbicación en el campingEstá o no ocupada actualmentePrecio por día de esa plazaInformación sobre las plazas ocupadas actualmenteCampoNplazaDNI PasaporteAdultosNoAdultosFec EntradaFec SalidaTipoEnteroCadena (10 car)DescripciónNº de la plaza (campo clave)Documentación del ocupanteEnteroEnteroFechaFechaNº de adultosNº de niñosFecha de llegadaFecha de salidaEsta tabla de movimiento se relaciona con la tabla PLAZAS por el campo Nplaza.Se tiene un formulario como el siguiente para gestionar la salida de un campista:Interacción Hombre-Máquina (208)Segundo parcial Junio 2004 - MañanaPágina 3 de 5

UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRIDFacultad de InformáticaEscuela Universitaria de InformáticaDepartamento de Lenguajes y Sistemas Informáticos e Ingeniería de SoftwareSe pide lo siguiente:a)Declarar los objetos necesarios y escribir el código que se necesita para almacenar la base de datos enmemoria.1 puntoPrivate cn As New OleDbConnectionPrivate daPlazas As OleDbDataAdapterPrivate daCampistas As OleDbDataAdapterPrivate ds As New DataSetConst BBDD ".\camping.mdb"Private fila As Integer 0Private Sub Form1 Load(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles MyBase.Load'Configurar el acceso a datoscn.ConnectionString "Provider Microsoft.Jet.OleDB.4.0; " &"Data Source " & BBDDcn.Open()daPlazas New OleDbDataAdapter("SELECT * FROM Plazas", cn)daCampistas New OleDbDataAdapter("SELECT * FROM Campistas", cn)daPlazas.Fill(ds, "Plazas")daCampistas.Fill(ds, "Campistas")cn.Close()Dim cb As OleDbCommandBuilder New OleDbCommandBuilder(daCampistas)'Se define una clave principal en la tabla NPlazasDim clavePlazas(0) As DataColumnclavePlazas(0) New DataColumnclavePlazas(0) azas").PrimaryKey clavePlazas'Se define una clave principal en la tabla CampistasDim claveCampistas(0) As DataColumnclaveCampistas(0) New DataColumnclaveCampistas(0) "Campistas").PrimaryKey claveCampistasEnd Subb) El botón de órdenes Ver total muestra en la etiqueta inferior el total a pagar por el campista, teniendo en cuentael número de días de estancia y el precio de la plaza ocupada.1 puntoPrivate Sub VerTotal Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles VerTotal.ClickDim dr As DataRow ds.Tables("Plazas").Rows.Find(NPlaza.Text)If Not dr Is Nothing ThenDim dias As Integer'La función DateDiff devuelve la diferencia entre dos fechasdias DateDiff(DateInterval.Day, FLlegada.Value, FSalida.Value)Dim totalCampista As DecimaltotalCampista dias * dr.Item("PrecioDia") ) ))Total.Text "Total: " & totalCampista & " euros"End IfEnd SubInteracción Hombre-Máquina (208)Segundo parcial Junio 2004 - MañanaPágina 4 de 5

UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRIDFacultad de InformáticaEscuela Universitaria de InformáticaDepartamento de Lenguajes y Sistemas Informáticos e Ingeniería de Softwarec)El botón de órdenes Eliminar elimina el registro activo de la tabla Campistas ( aquél cuyo nº de plaza es elmostrado en el textbox enlazado).2 puntosPrivate Sub Eliminar Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Eliminar.Click'Busco el registro por si no es el registro fila'En caso contario sería te()Dim dr As DataRow ds.Tables("Campistas").Rows.Find(NPlaza.Text)If Not dr Is Nothing Thendr.Delete()daCampistas.Update(ds, "Campistas")End IfEnd SubInteracción Hombre-Máquina (208)Segundo parcial Junio 2004 - MañanaPágina 5 de 5

UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad de Informática Escuela Universitaria de Informática Departamento de Lenguajes y Sistemas Informáticos e .