Microsoft Visual Basic GUÍA DE LABORATORIO Nº 5 Objetivos Luego de completar este laboratorio, el estudiante será capaz de: • Manipular y realizar operaciones con arreglos. • Crear una estructura y realizar operaciones con los campos de la misma. • Implementar arreglos de estructuras. • Trabajar con ficheros. Aplicación Nº 5 Hacer una aplicación que lea un nombre y un telefono y los guarde en un array de registros formados por dos string una para el nombre y otro para el telefono, el noimbre debe visualizarse e incluirse también en un cuadro de lista. El diseño debe ser algo así. Después guardar los datos en un fichero “datos.dat”. ‘Para guardar los datos en la agenda. Private Sub M_A_Guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles M_A_Guardar.Click Dim fs As FileStream fs = New FileStream("datos.dat", FileMode.OpenOrCreate, FileAccess.Write) Adela Valenciano Suárez Pag. 1 De 4 'Crea un flujo asociado con el fichero del disco donde deseamos almacenar la información Dim bw As BinaryWriter = New BinaryWriter(fs) 'Crea el flujo bw para escribir en fs For i = 0 To cont - 1 bw.Write(agenda(i).nombre) bw.Write(agenda(i).tlf) Next bw.Close() 'Comprobacion de guardado. Leer todo el fichero e imprimirlo en un mensaje Dim cadena As String = "" fs = New FileStream("datos.dat", FileMode.Open, FileAccess.Read) Dim br As BinaryReader = New BinaryReader(fs) For i = 0 To cont - 1 cadena = cadena & br.ReadString() & br.ReadString() Next bw.Close() MessageBox.Show(cadena) End Sub End Class Adela Valenciano Suárez Pag. 2 De 4 Mejorar la aplicación de la agenda. Cargar datos de la agenda guardados en un fichero “datos.dat” Private Sub FrmAgenda_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Cargar datos de la agenda "datos.dat" en el array Dim fs As FileStream = Nothing Dim br As BinaryReader = Nothing Try 'Abrir un flujo binaryreader para leer del fichero fs = New FileStream("datos.dat", FileMode.OpenOrCreate, FileAccess.Read) br = New BinaryReader(fs) Do 'Leer un nombre y un telefono (un regeistro) desde el fichero. 'Cuando se alcance el final del fichero, el metodo utilizado para leer 'lanzará una excepcion que será atrapada por el bloque catch agenda(cont).nombre = br.ReadString() agenda(cont).tlf = br.ReadString() 'Añadir el nombre a la caja de lista LstNombres.Items.Add(agenda(cont).nombre) cont += 1 'Actualizamos el contador de elmentos en la agenda Loop While True Catch ex As Exception MessageBox.Show("Proceso de carga de la agenda terminado") Finally 'Cierra el flujo si se abrió. If Not br Is Nothing Then br.Close() fs.Close() End If End Try End Sub Mejorar la aplicación de la agenda No se podrá añadir un nombre en la agenda que ya exista. Añadiremos la siguiente función que devuelve la posición en la que se encuentra el nombre buscado o -1 si no lo encuentra en la agenda. Mejorar la aplicación de la agenda. Eliminar elementos de la agenda. Comprobar que el elemento a borrar existe, en su caso eliminarlo del array y de la caja de lista. Mejorar la aplicación de la agenda. Cuando se seleccione un nombre de la caja de lista, se debe visualizar el nombre y el telefono en las cajas de texto: TxtNombre y TxtTlf Mejorar la aplicación de la agenda. Modificar los datos de la agenda. Cuando se seleccione un nombre de la caja de lista, se debe visualizar el nombre y el telefono en las cajas de texto: TxtNombre y TxtTlf Además se podrán modificar los datos del elemento seleccionado cuando se haga click en un nuevo botón que llamaremos Modificar. Adela Valenciano Suárez Pag. 3 De 4 Mejorar la aplicación de la agenda. Es una buena idea preguntar al usuario en el instante en el que cierra la aplicación, si quiere guardar la agenda actual. Para ello debemos saber que cuando se cierra un formulario se produce el evento FormClosing del mismo. Utilizaremos el método que responda a este evento para notificarle lo descrito. Según esto añada el método que responda a este evento y complételo como se indica a continuación. Mejorar la aplicación de la agenda. Añada la orden Acerca de en el menú. Edite el método que responde al evento Click de la orden Acerca del menú para que muestre una ventana como la que muestra la figura siguiente: Mejorar la aplicación de la agenda. Añadir los elementos en la agenda siempre ordenados por nombre. Mejorar la aplicación de la agenda. Añadir un botón para buscar un nombre en la agenda y si está que me enseñe el telefono correspondiente y se marque en laja de lista. Mejorar la aplicación de la agenda. Poder abrir distintos archivos de agenda o guardar en diferentes archivos. En el evento FormLoad no debemos programar nada. Adela Valenciano Suárez Pag. 4 De 4