Post on 06-Apr-2018
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