DOCUMENTACIÓN autoneitorbasic

Embed Size (px)

Citation preview

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    1/17

    NOMBRE DE LA ALUMNA:

    Guadalupe del Socorro Torres Uribe.

    CARRERA:

    Ingeniera en informtica

    NUMERO DE CONTROL: 10231046

    Programa en Visual Basic.

    (Archivos Secuenciales)

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    2/17

    Autoneitor:

    Ser un programa en el cual, podamos insertar o colocar informacin acerca de loscarros que existen dentro de la empresa.

    Primero que nada para lograr ejecutar este programa se tienen dos maneras deejecutarlo:

    1.- Abriendo el Visual Studio 2010.

    O bien

    2.- Abriendo la carpeta del programa la cual lleva como nombre Bin y posteriormentela carpeta con el nombre Debug, para despus ejecutar el icono con forma deventana como el que se muestra a continuacin:

    .

    DOCUMENTACINPANTALLA PRINCIPAL:

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    3/17

    Dentro de la ventana del programa aparecen las opciones o acciones a realizar con elprograma:

    Una Barra de Men:En la cual se muestra las fichas de Archivo y Registro. Cada una de ellas tiene comandos segn su

    categora..Un ndice de Registros: En el que muestra el ndice del registro actual y un nmero total de registros en la lista.Si no existen registros, aparecer un mensaje como este: Sin registros.Una lista de Navegacin:Muestra la coleccin de registros. Se puede seleccionar con el cursor el registro que se desea visualizar. Una vezseleccionada la lista tambin se puede navegar entre ellos con las teclas de direccin Arriba y Abajo.El registro seleccionado mostrara sus valores en los campos.

    Campos para el registro:En esta parte se colocan los valores que necesita mos para poder realizar el registro. Son cuatro diferentes camposidentificacin, modelo, precio y color.

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    4/17

    Identificacin:El valor que se escriba identificara al registro dentro de la coleccin de registros y en la lista de navegacin. Acepta

    varios caracteres. Modelo:

    Un valor adicional para detalles del modelo del auto. Acepta varios caracteres. Precio:

    Su valor definir el precio que tendr el auto o el costo del servicio que se le dio. Acepta punto decimal y deben sersolo valores numricos los que se inserten. Color:

    Valor adicional para detalles del color del auto. Acepta varios caracteres.

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    5/17

    Existen dos fichas en el men.Ficha Archivo:La cual tiene dentro los comandos comunes de manejo de archivo. Haga clic en la ficha archivo para desplegar elsubmen. Dentro de el men se despliegan los siguientes elementos:

    Guardar como:Guarda el estado del archivo actual en otra ubicacin y/o con otro nombre. Si existe un archivo con el mismo nombre enla ubicacin seleccionada, se le preguntara si se desea sobrescribir. Si no existe un archivo con el mismonombre en la ubicacin seleccionada, se creara un archivo nuevo y el archivo viejo no sufrir cambio alguno.Cerrar:Cierra el archivo actual. Los cambios no guardados anteriormente NO seguardaran y no hay manera derecuperar los datos perdidos. La lista y los campos se borraran automticamente.Salir:Se finalizara la aplicacin. Los cambios no guardados anteriormente NO seguardaran y no hay manera derecuperar los datos perdidos.

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    6/17

    Nuevo:Crea un nuevo archivo. Una ventana emergente aparecer para que seseleccione una ubicacin y nombre para guardarel nuevo documento.Abrir:

    Abre un archivo existente. Una ventana emergente aparecer para quese seleccione el archivo.Guardar:Guarda los cambios en el archivo actual. Se sobrescriben los datos delarchivo actual, que viene siendo elultimo se uso en los comandos de la fichaarchivo: Nuevo, Abrir o Guardar como.

    Ficha Registro:Despliega los comandos necesarios para manipular los registrosque contendr el archivo.Al hacer clic en el,se muestran los siguientes comandos:

    Nuevo Registro:Crea un nuevo registro. Se habilitaran los campos de registropara que se definan los valores que debe tener el nuevoregistro. Para guardar elregistro, use el comando Guardar dentro de la ficha Registro. Para cancelar loscambios ydescartar el nuevo registro, use el comando Cancelar de la fichaRegistro.Guardar:Guarda los cambios que se hicieron en el registro que se est creando o actualizando actualmente. Estaopcin NO guarda el archivo, nicamente el registro actual dentro de la lista.

    Actualizar:Habilita los campos del registro que se est visualizando actualmentepara poder modificarlos. Para guardar loscambios en el registro, use el comando Guardar dentro de la ficha Registro. Para cancelar loscambios, use el comandoCancelar de la ficha Registro.

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    7/17

    Eliminar:Elimina el registro que se est visualizando actualmente. Un cuadro de dialogo emerger para que se confirme sise debe realizar el procedimiento.Cancelar cambios:Descarta los cambios hechos en los campos y no los aplica al registro actual. Si el registro se estaba

    creando, simplemente se descartara. Nos referiremos a el como Cancelar en el manual.

    Para crear un nuevo archivo, seleccione de la ficha Archivo, el comando nuevo y elija el nombre y ubicacin del nuevoarchivo.

    Para aadir un nuevo registro use el comando Registro>Nuevo (De la ficha Registro,use el comando Nuevo).

    Se editan los campos, procurando llenarlos de una manera correcta.

    Cuando finalice de editar los campos. Seleccione el comando Registro>Guardar. Si desea descartarlos cambios, use Registro>Cancelar.El registro se agregara a la Lista de Navegacin. Puede agregarvarios registrosde la misma manera.Para modificar se selecciona de la Lista se da clic en el registro que desea modificar y despus se usaRegistro>Actualizar. Para de esta manera poder cambiar la informacin.

    Los campos son habilitados para su edicin. Si se desea guardar los cambios se usaRegistro>Guardar. Si se desea descartarlos use Registro>Cancelar.

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    8/17

    Para abrir un archivo existente, use Archivo>Abrir. Para guardar los cambios, use Archivo>Guardar. Para guardar los

    cambios en un nuevo archivo, use Archivo>Guardar Como. Para cerrar el archivo, use Archivo>Cerrar. Para cerrar laaplicacin puede usar Archivo>Salir.

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    9/17

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    10/17

    CDIGO

    Imports System.IOImports Microsoft.Win32PublicClassMainWindow

    #Region"Campos"'''Se usara una lista del tipo List(of T) para almacenar los objetos. '''Se usara una control del tipo ListView para mostrar una representacin de los

    objetos en pantallaDim autos AsList(OfAuto) 'En esta lista almacenaremos los autos que

    leeremos/escribiremos.

    Const longReg AsInteger = 100 'Esta constante define el tamao de cadaregistro en el archivo. Solo se pueden leer archivos creados con el mismo tamao deregistro

    Dim archivo, nombre AsString'Archivo representa el nombre completo del archivo(Ej: C:\users\invitado\registrosAutos.autos). nombre representa solo su nombre

    Dim modificado AsBoolean'Bandera que indica si el registro actual ha sidomodificado

    #EndRegion

    SubNew()' Llamada necesaria para el diseador.InitializeComponent()'Con estos metodos inicializamos la ventana para que no se puede modificar

    nada hasta crear/abrir un archivomodificado = FalseBloquearControles()BloquearRegistros()BloquearArchivo()

    'Solo permitimos una seleccion a la vezlv_autos.SelectionMode = SelectionMode.Single

    EndSub

    PrivateSub ArchivoNuevo(sender As System.Object, e As System.EventArgs) Handles

    menu_archivo_nuevo.Click'Creamos un dialogo de apertura de archivoDim newFileDlg AsNewSaveFileDialogIf newFileDlg.ShowDialog() = TrueThen

    'Obtenemos el nombre de archivo a creararchivo = newFileDlg.FileName'Creamos el archivo

    File.Create(archivo)'Mostramos el nombre de archivo en el titulo

    nombre = Path.GetFileName(archivo)Title = nombre

    'Inicializamosautos = NewList(Of Auto)

    lv_autos.Items.Clear()modificado = FalseLimpiar()BloquearRegistros()

    BloquearControles()

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    11/17

    DesbloquearArchivo()

    ActualizarIndice()menu_registro_nuevo.IsEnabled = True

    EndIfEndSub

    PrivateSub ArchivoAbrir(ByVal sender As System.Object, ByVal e As

    System.EventArgs) Handles menu_archivo_abrir.ClickDim opFileDlg AsNewOpenFileDialog

    If opFileDlg.ShowDialog() = TrueAndFile.Exists(opFileDlg.FileName) Then'Obtenemos el nombre de archivoarchivo = opFileDlg.FileName

    'Mostramos el nombre de archivo en el titulonombre = Path.GetFileName(archivo)Title = nombre'Inicializamos la lista

    autos = NewList(Of Auto)'creamos flujoDim fsAbrir AsNewFileStream(archivo, FileMode.Open, FileAccess.Read)

    'creamos el lectorDim lector AsNewBinaryReader(fsAbrir)

    'checamos que no este vacioIf lector.PeekChar -1 Then'Si existe un primer caracter quiere decir

    que hay un primer registro'El numero de registros se saca dividiendo los caracteres del

    archivo entre los caracteres por registroDim registros AsInteger = CType(Math.Ceiling(fsAbrir.Length /

    longReg), Integer)

    'Agregamos cada registro a la lista de autosFor i AsInteger = 0 To registros - 1

    lector.BaseStream.Seek(longReg * i, SeekOrigin.Begin) 'leemosregistro por registro, usando longReg para empezar desde el que se determine por a

    autos.Add(New Auto(lector.ReadString,lector.ReadString,lector.ReadString,lector.ReadSingle.ToString)) 'Agregamos un nuevo auto

    por cada registroNext

    'Mostramos el primer registroverRegistro(0)

    Else'Si no hay ningun registro'Solo permitimos crear un nuevo registroLimpiar()

    BloquearControles()BloquearRegistros()menu_registro_nuevo.IsEnabled = True

    EndIf'Cerramos el lector y el flujo de archivo

    lector.Close()fsAbrir.Close()

    'Reiniciamos el listView

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    12/17

    lv_autos.Items.Clear()

    ForEach Auto As Auto In autoslv_autos.Items.Add(Auto.ID)

    Nextlv_autos.SelectedIndex = 0

    'Permitimos guardar y cerrar el archivo

    DesbloquearArchivo()

    EndIf'Deshabilitamos la edicin, hasta que se selccione "nuevo" o "actualizar"BloquearControles()

    EndSub

    PrivateSub ArchivoGuardar(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles menu_archivo_guardar.Click

    'Solo guardaremos si hay almenos 1 registroIf autos.Count > 0 Then

    'Creamos el flujo y el escritor

    Dim fsGuardar AsNewFileStream(archivo, FileMode.Create,FileAccess.Write)

    Dim escritor AsNewBinaryWriter(fsGuardar)

    'Por cada auto en la lista autos, agregamos un registro al archivoFor i AsInteger = 0 To autos.Count - 1

    escritor.BaseStream.Seek(longReg * i, SeekOrigin.Begin) 'bytes de

    largo por cada registro segun longRegescritor.Write(CType(autos.Item(i).ID, String))escritor.Write(CType(autos.Item(i).Modelo, String))escritor.Write(CType(autos.Item(i).Color.ToString, String))escritor.Write(CType(autos.Item(i).Precio, Single))

    Next

    'Cerramos el escritor y el flujo

    escritor.Close()fsGuardar.Close()EndIf'Deshabilitamos ControlesBloquearControles()verRegistro(lv_autos.SelectedIndex)

    EndSub

    PrivateSub ArchivoGuardarComo(sender As System.Object, e As System.EventArgs)Handles menu_archivo_guardarComo.Click

    ''Es lo mismo que el metodo anterio de ArchivoGuardar,pero elegimos dondecon un SaveFileDialog

    If autos.Count > 0 Then'Creamos el SaveFileDialog

    Dim svFileDlg AsNew SaveFileDialogIf svFileDlg.ShowDialog() = TrueThen

    'Obtenemos el nombre de archivoarchivo = svFileDlg.FileName'Mostramos el nombre de archivo en el titulonombre = Path.GetFileName(archivo)

    Title = nombre

    'Todo lo demas es igual

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    13/17

    Dim fsGuardar AsNew FileStream(archivo, FileMode.CreateNew,

    FileAccess.Write)Dim escritor AsNew BinaryWriter(fsGuardar)

    For i AsInteger = 0 To autos.Count - 1

    escritor.BaseStream.Seek(longReg * i, SeekOrigin.Begin)escritor.Write(CType(autos.Item(i).ID, String))

    escritor.Write(CType(autos.Item(i).Modelo, String))escritor.Write(CType(autos.Item(i).Color.ToString, String))

    escritor.Write(CType(autos.Item(i).Precio, Single))Next

    escritor.Close()fsGuardar.Close()modificado = False

    EndIf

    EndIfBloquearControles()verRegistro(lv_autos.SelectedIndex)

    EndSub

    PrivateSub ArchivoCerrar(sender As System.Object, e AsSystem.Windows.RoutedEventArgs) Handles menu_archivo_cerrar.Click

    ''Simplemente regresamos todos los valores a su estado originalautos = NewList(Of Auto)lv_autos.Items.Clear()

    BloquearRegistros()BloquearControles()BloquearArchivo()nombre = ""archivo = ""Title = "Autoneitor"

    EndSub

    PrivateSub ArchivoSalir(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles menu_archivo_salir.Click''Cierra la ventanaClose()

    EndSub

    PrivateSub RegistroNuevo(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles menu_registro_nuevo.Click

    'Habilitamos controles necesariosLimpiar()DesbloquearControles()

    EndSub

    PrivateSub RegistroGuardar(ByVal sender As System.Object, ByVal e As

    System.EventArgs) Handles menu_registro_guardar.Click'Hacemos unas validaciones sencillas de los textBoxTry

    Dim testPrecio AsSingle = CType(tbx_precio.Text, Single) ''Comprobamosque se pueda guardar como Single

    Catch ex AsException

    MessageBox.Show("Llena correctamente todoos los campos", "Cuidado",MessageBoxButton.OK, MessageBoxImage.Warning)

    Return

    EndTry

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    14/17

    ''Comprobamos que no esten vaciosIfString.IsNullOrWhiteSpace(tbx_id.Text) Or

    String.IsNullOrWhiteSpace(tbx_modelo.Text) OrString.IsNullOrWhiteSpace(tbx_color.Text) Or

    String.IsNullOrWhiteSpace(tbx_precio.Text) ThenMessageBox.Show("Llena correctamente todoos los campos", "Cuidado",

    MessageBoxButton.OK, MessageBoxImage.Warning)Else

    If modificado Then'Si se modifico guardamos en la posicion actualmodificado = False'guardamos en vector pero en la posicion actual

    autos.Item(lv_autos.SelectedIndex).ID = tbx_id.Textautos.Item(lv_autos.SelectedIndex).Modelo = tbx_modelo.Textautos.Item(lv_autos.SelectedIndex).Color = tbx_color.Textautos.Item(lv_autos.SelectedIndex).Precio = CType(tbx_precio.Text,

    Single)lv_autos.Items(lv_autos.SelectedIndex) = tbx_id.Text

    Else'Si no se modifico

    'guardamos en un nuevo objetoautos.Add(New Auto(

    tbx_id.Text,tbx_modelo.Text,tbx_color.Text,

    CType(tbx_precio.Text, Single)))lv_autos.Items.Add(autos.Last.ID)lv_autos.SelectedIndex = lv_autos.Items.Count - 1

    EndIf

    BloquearControles()ActualizarIndice()menu_registro_actualizar.IsEnabled = True

    menu_registro_eliminar.IsEnabled = Truemenu_registro_nuevo.IsEnabled = TrueEndIf

    EndSub

    PrivateSub RegistroCancelar(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles menu_registro_cancelar.Click

    'Habilitamos los controles necesariosmenu_registro_cancelar.IsEnabled = Falsemenu_registro_guardar.IsEnabled = Falsemenu_registro_nuevo.IsEnabled = Truemodificado = FalseIf autos.Count > 0 Then'si minimo existe un registro

    menu_registro_actualizar.IsEnabled = True

    menu_registro_eliminar.IsEnabled = TrueverRegistro(lv_autos.SelectedIndex)

    EndIfBloquearControles()

    EndSub

    PrivateSub RegistroActualizar(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles menu_registro_actualizar.Click

    modificado = True'habilitamos bandera que nos dice que esta modificando un

    registro

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    15/17

    'habilitamos menus

    DesbloquearControles()EndSub

    PrivateSub RegistroEliminar(ByVal sender As System.Object, ByVal e As

    System.EventArgs) Handles menu_registro_eliminar.Click'Checamos si hay algo que eliminar

    If autos.Count > 0 Then'Comprobamos que el usauario quiera eliminar

    If MessageBox.Show("Esta seguro que desea eliminar este registro?","Cuidado", MessageBoxButton.YesNo, MessageBoxImage.Warning) = MessageBoxResult.YesThen

    ''Quitamos el registro de ambas listas (la de objetos y el controlde usuario)

    Dim aux AsInteger = lv_autos.SelectedIndexautos.RemoveAt(aux)

    lv_autos.Items.RemoveAt(aux)lv_autos.SelectedIndex = aux - 1

    EndIf

    EndIfBloquearControles()

    EndSub

    PrivateSub SelectionChanged(sender As System.Object, e AsSystem.Windows.Controls.SelectionChangedEventArgs) Handles lv_autos.SelectionChanged

    'Checamos que existan registros en la listaIf autos.Count > 0 Then

    'Si es menor de 0, la colocamos en el registro 0If lv_autos.SelectedIndex < 0 Then

    lv_autos.SelectedIndex = 0Return

    EndIf

    If (tbx_id.IsEnabled = True) Then''Si se estaba editando....'Cambiar el registro se concidera como cancelar si se estabaeditando

    RegistroCancelar(sender, e)EndIfverRegistro(lv_autos.SelectedIndex)

    Elsemenu_registro_eliminar.IsEnabled = Falsemenu_registro_actualizar.IsEnabled = FalseLimpiar()ActualizarIndice()

    EndIfEndSub

    Sub verRegistro(ByVal index) 'esta funcion nos desplaza entre los registros enmemoria

    ''Si el indice es 0 o mayorIf autos.Count > 0 Then

    If index >= 0 And index < autos.Count Then

    'Llenamos los textbox con el el objeto en el indice en la lista deobjetos que coincide con el indice que se selecciono en el listview (el control deusuario)

    tbx_id.Text = autos.Item(index).ID

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    16/17

    tbx_modelo.Text = autos.Item(index).Modelo.ToString

    tbx_color.Text = autos.Item(index).Colortbx_precio.Text = autos.Item(index).Preciotbx_id.Focus()

    Else

    tbx_id.Text = autos.Item(0).IDtbx_modelo.Text = autos.Item(0).Modelo.ToString

    tbx_color.Text = autos.Item(0).Colortbx_precio.Text = autos.Item(0).Precio

    tbx_id.Focus()EndIf

    Else

    ''Si es menor de 0 significa que no se selecciono nadaLimpiar()

    EndIfActualizarIndice()

    EndSub

    PrivateSub ActualizarIndice()

    ''Solo se cambia el label que muestra que indice vemosIf (autos.Count = 0) Then

    lbl_indice.Content = "Sin registros"Else

    lbl_indice.Content = "Registro" & lv_autos.SelectedIndex + 1 & "/" &autos.Count

    EndIf

    EndSub

    #Region"Metodos Auxiliares"''Estos metodos auxiliares solo bloquean o desbloquean los menus y los textbox

    Sub BloquearArchivo()menu_archivo_guardar.IsEnabled = Falsemenu_archivo_guardarComo.IsEnabled = False

    menu_archivo_cerrar.IsEnabled = FalseEndSub

    Sub BloquearRegistros()menu_registro_actualizar.IsEnabled = Falsemenu_registro_eliminar.IsEnabled = Falsemenu_registro_nuevo.IsEnabled = Falsemenu_registro_cancelar.IsEnabled = Falsemenu_registro_guardar.IsEnabled = False

    EndSub

    Sub BloquearControles()menu_registro.Focus()tbx_id.IsEnabled = False

    tbx_modelo.IsEnabled = Falsetbx_color.IsEnabled = Falsetbx_precio.IsEnabled = Falsemenu_registro_guardar.IsEnabled = Falsemenu_registro_cancelar.IsEnabled = False

    EndSub

    Sub DesbloquearArchivo()menu_archivo_guardar.IsEnabled = True

    menu_archivo_guardarComo.IsEnabled = True

  • 8/2/2019 DOCUMENTACIN autoneitorbasic

    17/17

    menu_archivo_cerrar.IsEnabled = True

    menu_registro_actualizar.IsEnabled = Truemenu_registro_eliminar.IsEnabled = Truemenu_registro_nuevo.IsEnabled = True

    EndSub

    Sub DesbloquearControles()

    tbx_id.IsEnabled = Truetbx_modelo.IsEnabled = True

    tbx_color.IsEnabled = Truetbx_precio.IsEnabled = Truemenu_registro_guardar.IsEnabled = True

    menu_registro_cancelar.IsEnabled = Truemenu_registro_actualizar.IsEnabled = Falsemenu_registro_eliminar.IsEnabled = Falsemenu_registro_nuevo.IsEnabled = False

    tbx_id.Focus()EndSub

    Sub Limpiar()tbx_id.Text = ""tbx_modelo.Text = ""tbx_color.Text = ""tbx_precio.Text = ""tbx_id.Focus()

    EndSub

    #EndRegion

    PrivateSub Window_Loaded(ByVal sender As System.Object, ByVal e AsSystem.Windows.RoutedEventArgs) HandlesMyBase.Loaded

    EndSubEndClass