documentaciÓn alumneitor

Upload: guadalupe-torres

Post on 06-Apr-2018

243 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/2/2019 DOCUMENTACIN alumneitor

    1/24

    NOMBRE DE LA ALUMNA:

    Guadalupe del Socorro Torres Uribe.

    CARRERA:

    Ingeniera en informtica

    NUMERO DE CONTROL: 10231046

    Programa en Visual Studio c#.

    (Archivos Secuenciales)

  • 8/2/2019 DOCUMENTACIN alumneitor

    2/24

    Alumneitor:

    Ser un programa en el cual, podamos insertar o colocar informacin acerca delos estudiantes que existen dentro de una escuela.

    Primero que nada para lograr ejecutar este programa se tiene que:

    1.- Abrir el programa Visual Studio 2010.

    DOCUMENTACINPANTALLA PRINCIPAL:

    Dentro de la ventana del programa aparecen las opciones o acciones a realizarcon el programa:

    1.- Barra de Men2.-Lista de Navegacin4.-Campos de Registro3.- ndice de Registros

  • 8/2/2019 DOCUMENTACIN alumneitor

    3/24

    Barra de Men:Despliega las fichas de Archivo y Registro. Cada una de ellastiene comandos segn su categora.Lista de Navegacin:Muestra la coleccin de registros. Se puede seleccionar conel cursor el registro que se desea visualizar. Una vez seleccionada la lista,tambin se puede navegar entre ellos con las teclas de direccin Arriba y Abajo. Elregistro seleccionado mostrara sus valores en los campos.Indice de los Registros:Muestra el ndice del registro actual y el nmero totalde registros en la lista. Si estos no existen , aparece una leyenda Sin registrosCampos de Registro:Aqu se insertan los valores que necesita el registro.Existen cinco diferentes campos.

    Una Barra de Men:En la cual se muestra las fichas de Archivo y Registro. Cada una de ellas tiene comandossegn su categora..Un ndice de Registros: En el que muestra el ndice del registro actual y un nmero total deregistros en la lista. Si noexisten registros, aparecer un mensaje como este: Sinregistros.Una lista de Navegacin:Muestra la coleccin de registros. Se puede seleccionar con el cursor el registro que se deseavisualizar. Una vez seleccionada la lista tambin se puede navegar entre ellos con las teclas dedireccin Arriba y Abajo.

    El registro seleccionado mostrara sus valores en los campos.

    1.-Nombre de pila3.-Apellido Materno4.-Nmero de Control2.- Apellido Paterno5.-Fecha de nacimiento

    Campos de nombre:Juntos, los campos de Nombre de pila, apellido Paterno yApellido Materno conforman el Nombre del Alumno. Aceptan Caracteres de casicualquier tipo.Nmero de Control: Valor que identificara al alumno. Es el campo que se

    muestra en la lista de navegacin.

  • 8/2/2019 DOCUMENTACIN alumneitor

    4/24

  • 8/2/2019 DOCUMENTACIN alumneitor

    5/24

    Nuevo: Crea un nuevo archivo. Una ventana emergente aparecer para que seseleccione una ubicacin y nombre para guardar el 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 el ultimo se uso en los comandos de la fichaarchivo: Nuevo, Abrir o Guardar como.Guardar como: Guarda el estado del archivo actual en otra ubicacin y/o conotro nombre. Si existe un archivo con el mismo nombre en la ubicacinseleccionada, se le preguntara si se desea sobrescribir. Si no existe un archivocon el mismo nombre en la ubicacin seleccionada, se creara un archivo nuevo yel archivo viejo no sufrir cambio alguno.Cerrar: Cierra el archivo actual. Los cambios no guardados anteriormente NO seguardaran y no hay manera de recuperar los datos perdidos. La lista y loscampos se borraran auttomticamente.Salir: Se finalizara la aplicacin. Los cambios no guardados anteriormente NO seguardaran y no hay manera de recuperar los datos perdidos.Ficha Registro: Despliega los comandos necesarios para manipular los registros

    que 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 nuevo registro. Para guardar elregistro, use el comando Guardar dentro de la ficha Registro. Para cancelar loscambios y descartar el nuevo registro, use el comando Cancelar de la fichaRegistro.Guardar: Guarda los cambios que se hicieron en el registro que se est creandoo actualizando actualmente. Esta opcin NO guarda el archivo, nicamente elregistro actual dentro de la lista.Actualizar: Habilita los campos del registro que se est visualizando

    actualmente para poder modificarlos. Para guardar los cambios en el registro,use el comando Guardar dentro de la ficha Registro. Para cancelar los cambios,use el comando Cancelar de la ficha Registro.Eliminar: Elimina el registro que se est visualizando actualmente. Un cuadrode dialogo emerger para que se confirme si se debe realizar el procedimiento.Cancelar cambios: Descarta los cambios hechos en los campos y no los aplicaal registro actual. Si el registro se estaba creando, simplemente se descartara.Nos referiremos a el como Cancelar en el manual.

    Para el uso de otros comandos:Para guardar los cambios, se usa el Archivo>Guardar.Para guardar los cambios en un nuevo archivo, use Archivo>Guardar Como.Para cerrar el archivo, use Archivo>Cerrar.Para cerrar la aplicacin puede usar Archivo>Salir.Para abrir un archivo existente, use Archivo>Abrir.

  • 8/2/2019 DOCUMENTACIN alumneitor

    6/24

    Para lograr crear un nuevo archivo, se selecciona de la ficha Archivo, la opcinnuevo y se elije el nombre y ubicacin del nuevo archivo.Para poder aadir un nuevo registro se usa el comando Registro>Nuevo (De laficha Registro, use el comando Nuevo).Edite todos los campos del nuevo registro. Asegrese de llenarlosapropiadamente.Cuando finalice de editar los campos. Seleccione el comando Registro>Guardar.Si desea descartar los cambios, use Registro>Cancelar.El registro se agregara a la Lista de Navegacin. Puede agregar varios registrosde la misma manera.

    Para modificar un registro, seleccinelo de la Lista de navegacin. Simplementehaga clic en el registro que desea modificar y despus use Registro>Actualizar.Los campos se habilitaran para su edicin. Si desea guardar los cambios useRegistro>Guardar. Si desea descartarlos use Registro>Cancelar.Para eliminar un registro, seleccinelo de la Lista de Navegacin y use elcomando Registro>Eliminar. Un dialogo aparecer, para confirmar el procesopresione Si.

  • 8/2/2019 DOCUMENTACIN alumneitor

    7/24

    CDIGO

  • 8/2/2019 DOCUMENTACIN alumneitor

    8/24

    Clase MainWindowusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;

    usingSystem.Text;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;

    usingSystem.Windows.Documents;usingSystem.Windows.Input;usingSystem.Windows.Media;usingSystem.Windows.Media.Imaging;usingSystem.Windows.Navigation;usingSystem.Windows.Shapes;usingSystem.IO;namespaceAlumneitor{//////Lgica de interaccin para MainWindow.xaml///publicpartialclassMainWindow: Window{stringnombre; //variable que almacena ruta con nombre del archivointtotalRegistros = 0; //contador para almacenar total de regisgtrosintregistroActual = 0; //Especifica el registro en que se encuentra actualmenteintlongRegistro = 1; // Longitud para la lecturaboolmodificar = false; //Indica si es posible modificarDatos[] datosAlumno = newDatos[1000]; //Arreglo para los datos de los alumnosboolmodificado = false; //bandera para indicar si hay modificacionespublicMainWindow(){InitializeComponent();

    lv_alumnos.SelectionMode = SelectionMode.Single; //Indica que solo es posibleseleccionar un elemento a la vezdtp_nacimiento.IsEnabled = true; // habilita el datetimepicker

    }privatevoidmenu_archivo_nuevo_Click(objectsender, RoutedEventArgse){//Crear

    Microsoft.Win32.SaveFileDialogventanaSalvar = newMicrosoft.Win32.SaveFileDialog();//ventana de dialogo para salvarif(ventanaSalvar.ShowDialog() == true) //Al seleccionar guardar en la ventana dedialogo....

    {nombre = ventanaSalvar.FileName; //Se obtiene la ruta y nombre del archivoArchivo.Crear(ventanaSalvar.FileName); //Se llama a la funcion que crea el archivo

  • 8/2/2019 DOCUMENTACIN alumneitor

    9/24

    //Se habilitan controles...

    menu_archivo_guardar.IsEnabled = true;menu_archivo_guardarComo.IsEnabled = true;menu_registro_nuevo.IsEnabled = true;menu_registro_eliminar.IsEnabled = false;menu_registro_cancelar.IsEnabled = false;}

    }

    privatevoidmenu_archivo_abrir_Click(objectsender, RoutedEventArgse)

    {//AbrirMicrosoft.Win32.OpenFileDialogventanaAbrir = newMicrosoft.Win32.OpenFileDialog(); //ventana de dialogopara abririf(ventanaAbrir.ShowDialog() == true) //Al seleccionar abrir en la ventana...{nombre = ventanaAbrir.FileName;BinaryReaderlectura = Archivo.Leer(nombre, reftotalRegistros);lv_alumnos.Items.Clear();for(inti = 0; i < totalRegistros; i++) //Se leen todos los datos del archivo y se almacenan en el arreglo temporal{lectura.BaseStream.Seek(longRegistro * i, SeekOrigin.Begin);

    //Se obtienen los datos del archivo y se asignan al arreglo temporaldatosAlumno[i] = newDatos();

    datosAlumno[i].numero = lectura.ReadInt32();datosAlumno[i].nombre = lectura.ReadString();datosAlumno[i].paterno = lectura.ReadString();datosAlumno[i].materno = lectura.ReadString();datosAlumno[i].nacimiento = lectura.ReadString();

    //Se agrega un elemento al listbox con el No de control para su identificacion y navegacion posterior entreregistroslv_alumnos.Items.Add(datosAlumno[i].numero);}

    //Se habilitan controles...menu_archivo_guardar.IsEnabled = true;menu_archivo_guardarComo.IsEnabled = true;menu_registro_nuevo.IsEnabled = true;

    //Se verifica que exista almenos un registro...

    if(totalRegistros > 0){menu_registro_eliminar.IsEnabled = true;VerRegistro(0); //Se muestra el primer registrolbl_registros.Content = "Registros: "+ (registroActual + 1) + " / "+ totalRegistros; //Indica el registro actualmenu_registro_actualizar.IsEnabled = true;lv_alumnos.SelectedIndex = 0;registroActual = 0;}menu_registro_cancelar.IsEnabled = false;ventana.Title = "Alumneitor: "+ nombre;

  • 8/2/2019 DOCUMENTACIN alumneitor

    10/24

    }

    }privatevoidmenu_archivo_guardar_Click(objectsender, RoutedEventArgse){//GuardarArchivo.Guardar(nombre, datosAlumno, totalRegistros);modificado = false;}

    publicvoidVerRegistro(intnumeroRegistro){//Funcionpara mostrar un registro especifico

    registroActual = numeroRegistro;//Se convierten los datos almacenados y se muestrantbx_nombre.Text = datosAlumno[registroActual].nombre.ToString();tbx_paterno.Text = datosAlumno[registroActual].paterno;

    tbx_materno.Text = datosAlumno[registroActual].materno;tbx_numero.Text = datosAlumno[registroActual].numero.ToString();dtp_nacimiento.Text = datosAlumno[registroActual].nacimiento.ToString(); ;

    }privatevoidlv_alumnos_SelectionChanged(objectsender, SelectionChangedEventArgse){

    try//Bloque try para evitar errores al deseleccionar los elementos de la lista (con un

    indice de -1){//Se muestra el registro que este seleccionado

    VerRegistro(lv_alumnos.SelectedIndex);registroActual = lv_alumnos.SelectedIndex;lbl_registros.Content = "Registros: "+ (registroActual + 1) + " / "+ totalRegistros;//menu_registro_cancelar_Click(sender, e);

    }catch(IndexOutOfRangeExceptionex){

    }}privatevoidmenu_archivo_guardarComo_Click(objectsender, RoutedEventArgse)

    {//Se guarda con otro nombreMicrosoft.Win32.SaveFileDialogsfd = newMicrosoft.Win32.SaveFileDialog();if(sfd.ShowDialog() == true)

    {nombre = sfd.FileName;Archivo.Guardar(nombre, datosAlumno, totalRegistros); //Se llama a la funcion guardar

  • 8/2/2019 DOCUMENTACIN alumneitor

    11/24

    modificado = false;

    }}privatevoidmenu_registro_guardar_Click(objectsender, RoutedEventArgse){try//Bloque try para evitar que se guarden registros con datos vacios{if(modificar) //Si es posible modificar

    {Actualizar(registroActual); //Se llama a la funcion...menu_registro_guardar.Header= "Agregar";

    modificar = false;}else{

    //Se agregan datos al arreglo temporal, siempre y cuando haya algo en los textboxdatosAlumno[totalRegistros] = newDatos();datosAlumno[totalRegistros].numero = int.Parse(tbx_numero.Text);

    datosAlumno[totalRegistros].nombre = tbx_nombre.Text;datosAlumno[totalRegistros].paterno = tbx_paterno.Text;datosAlumno[totalRegistros].materno = tbx_materno.Text;

    datosAlumno[totalRegistros].nacimiento = dtp_nacimiento.Text;

    registroActual = totalRegistros;totalRegistros++;if(!menu_registro_eliminar.IsEnabled)

    menu_registro_eliminar.IsEnabled = true;lv_alumnos.Items.Add(tbx_numero.Text);lbl_registros.Content = "Registros: "+ (registroActual + 1) + " / "+ totalRegistros;lv_alumnos.SelectedIndex = registroActual;

    }//Se habilitan y deshabilitan controlesmenu_registro_guardar.IsEnabled = false;

    menu_registro_nuevo.IsEnabled = true;menu_registro_cancelar.IsEnabled = false;menu_registro_actualizar.IsEnabled = true;

    modificado = true;}catch(FormatExceptionex){

    //Mensaje que indica que aun faltan campos por llenarMessageBox.Show("Ingresa todos los campos Detalles:"+ ex.ToString(), "Error",MessageBoxButton.OK, MessageBoxImage.Exclamation);}}privatevoidWindow_Loaded(objectsender, RoutedEventArgse){//Al cargar se deshabilitan ciertos botonesmenu_registro_guardar.IsEnabled = false;menu_archivo_guardar.IsEnabled = false;

    menu_archivo_guardarComo.IsEnabled = false;menu_registro_nuevo.IsEnabled = false;

  • 8/2/2019 DOCUMENTACIN alumneitor

    12/24

    menu_registro_eliminar.IsEnabled = false;

    menu_registro_cancelar.IsEnabled = false;menu_registro_actualizar.IsEnabled = false;}privatevoidmenu_archivo_cerrar_Click(objectsender, RoutedEventArgse){if(modificado){

    //Se indica al usuario que aun no ha guardado los registrosMessageBoxResultrespuesta = MessageBox.Show("Saldras sin guardar, Deseas Guardar?","Advertencia", MessageBoxButton.YesNoCancel, MessageBoxImage.Exclamation);

    if(respuesta == MessageBoxResult.Yes){//GuardarArchivo.Guardar(nombre, datosAlumno, totalRegistros); //Se guardan y se indica que ya no

    hay modificacionesmodificado = false;}

    elseif(respuesta == MessageBoxResult.No)this.Close();}

    elsethis.Close();

    }privatevoidmenu_registro_nuevo_Click(objectsender, RoutedEventArgse){

    //Se limpian....tbx_nombre.Clear();tbx_materno.Clear();tbx_paterno.Clear();

    tbx_numero.Clear();dtp_nacimiento.Text="";menu_registro_guardar.IsEnabled = true;

    menu_registro_nuevo.IsEnabled = false;lbl_registros.Content = "Registros Nuevo";menu_registro_cancelar.IsEnabled = true;

    tbx_nombre.Focus();menu_registro_eliminar.IsEnabled = false;menu_registro_actualizar.IsEnabled = false;lv_alumnos.SelectedIndex = -1;

    }privatevoidmenu_registro_eliminar_Click(objectsender, RoutedEventArgse){//Se iguala a nulo el registro a eliminardatosAlumno[registroActual] = null;for(inti = registroActual; i < totalRegistros; i++){datosAlumno[i] = datosAlumno[i+1]; // Se recorren los registros en el arreglo temporal}totalRegistros--;

    lv_alumnos.Items.RemoveAt(registroActual); //Se elimina el elemento de la listaif(totalRegistros > 0)

  • 8/2/2019 DOCUMENTACIN alumneitor

    13/24

    {

    lv_alumnos.SelectedIndex = 0; //Se muestra el primer registrolbl_registros.Content = "Registros: "+ (registroActual + 1) + " / "+ totalRegistros;}else{//se limpian textbox etc, en caso de no haber registrostbx_nombre.Clear();

    tbx_materno.Clear();tbx_paterno.Clear();tbx_numero.Clear();

    dtp_nacimiento.Text = "";lbl_registros.Content = "Sin Registros";menu_registro_eliminar.IsEnabled = false;menu_registro_actualizar.IsEnabled = false;

    }modificado = true;}

    privatevoidmenu_registro_cancelar_Click(objectsender, RoutedEventArgse){

    menu_registro_guardar.IsEnabled = false;menu_registro_actualizar.IsEnabled = false;

    menu_registro_nuevo.IsEnabled = true;lv_alumnos.SelectedIndex = 0;menu_registro_cancelar.IsEnabled = false;if(totalRegistros == 0){lbl_registros.Content = "Sin Registros";}else{menu_registro_actualizar.IsEnabled = true;menu_registro_eliminar.IsEnabled = true;lv_alumnos.SelectedIndex = 0;}if(modificar)

    {modificar = false;menu_registro_guardar.Header = "Agregar";}

    }

    publicvoidActualizar(intindice) //Funcion para actualizar{

    //Se guardan los datos en el indice actualdatosAlumno[indice].numero = int.Parse(tbx_numero.Text);datosAlumno[indice].nombre = tbx_nombre.Text;datosAlumno[indice].paterno = tbx_paterno.Text;datosAlumno[indice].materno = tbx_materno.Text;datosAlumno[indice].nacimiento = dtp_nacimiento.Text;lv_alumnos.Items[indice] = tbx_numero.Text;}

    privatevoidmenu_registro_actualizar_Click(objectsender, RoutedEventArgse)

  • 8/2/2019 DOCUMENTACIN alumneitor

    14/24

    {

    modificar = true;menu_registro_cancelar.IsEnabled = true;menu_registro_nuevo.IsEnabled = false;menu_registro_eliminar.IsEnabled = false;menu_registro_actualizar.IsEnabled = false;menu_registro_guardar.Header = "Guardar";menu_registro_guardar.IsEnabled = true;

    tbx_nombre.Focus();//lv_alumnos.SelectedIndex = -1;

    }

    privatevoidventana_Closing(objectsender, System.ComponentModel.CancelEventArgse){if(modificado){

    //Se indica al usuario que saldra sin guardar los registrosMessageBoxResultrespuesta = MessageBox.Show("Saldras sin guardar, Deseas Guardar?", "Advertencia",MessageBoxButton.YesNoCancel, MessageBoxImage.Exclamation);if(respuesta == MessageBoxResult.Yes){

    //GuardarArchivo.Guardar(nombre, datosAlumno,totalRegistros);modificado = false;

    }elseif(respuesta == MessageBoxResult.No)this.Close();elsee.Cancel = true;}}}}

    Clase para el manejo del archivo fsicousingSystem;usingSystem.Collections.Generic;

    usingSystem.Linq;usingSystem.Text;usingSystem.IO;

    namespaceAlumneitor{publicstaticclassArchivo{//Funcion para crear el archivopublicstaticvoidCrear(stringnombre){FileStreamflujo = newFileStream(nombre, FileMode.Create, FileAccess.Write);flujo.Close();}

  • 8/2/2019 DOCUMENTACIN alumneitor

    15/24

    //Funcion para leer el archivo

    publicstaticBinaryReaderLeer(stringnombre, refinttotalRegistros){FileStreamflujo = newFileStream(nombre, FileMode.Open, FileAccess.Read);BinaryReaderlectura = newBinaryReader(flujo);if(lectura.PeekChar() != -1)totalRegistros = (int)(Math.Ceiling((double)(flujo.Length / 70)) + 1); //Se obtiene totalde registros

    elsetotalRegistros = 0;returnlectura;}

    publicstaticvoidGuardar(stringnombre, Datos[] datos, inttotalRegistros){//Funcion para guardarFileStreamflujo = newFileStream(nombre, FileMode.Create, FileAccess.Write);

    BinaryWriterescritor = newBinaryWriter(flujo);for(inti = 0; i < totalRegistros; i++) //Se agregan todos los registros al archivo{

    escritor.BaseStream.Seek(70 * i, SeekOrigin.Begin); //Se define la longitud de cadaregistro a 70 bytes//Se escriben los datos en el archivo

    escritor.Write(datos[i].numero);

    escritor.Write(datos[i].nombre);escritor.Write(datos[i].paterno);escritor.Write(datos[i].materno);

    escritor.Write(datos[i].nacimiento);}flujo.Close();escritor.Close();

    }}}

    Clase para los datos del registrousingSystem;usingSystem.Collections.Generic;

    usingSystem.Linq;usingSystem.Text;namespaceAlumneitor{

    publicclassDatos{//Clase para manejar los datos del alumnopublicintnumero;

    publicstringnombre;publicstringpaterno;publicstringmaterno;

    publicstringnacimiento;}}

  • 8/2/2019 DOCUMENTACIN alumneitor

    16/24

    Cdigo de XAML (WPF UI)Codigo XAML para el diseo de la interfaz dentro de WPF...

  • 8/2/2019 DOCUMENTACIN alumneitor

    17/24

  • 8/2/2019 DOCUMENTACIN alumneitor

    18/24

    Grid.ColumnSpan="2"/>

  • 8/2/2019 DOCUMENTACIN alumneitor

    19/24

  • 8/2/2019 DOCUMENTACIN alumneitor

    20/24

  • 8/2/2019 DOCUMENTACIN alumneitor

    21/24

  • 8/2/2019 DOCUMENTACIN alumneitor

    22/24

  • 8/2/2019 DOCUMENTACIN alumneitor

    23/24

  • 8/2/2019 DOCUMENTACIN alumneitor

    24/24