Está en la página 1de 8

Nombre: Alex Villanueva Tarqui Practica: Persistencia

Clase Avion:
using System;
using System.IO;
public class Avion
{ private string matricula;
private string origen;
private string destino;
private string horaSalida;
private string piloto;
public Avion()
{
matricula="";
origen="";
destino="";
horaSalida="";
piloto="";
}
public void mostrar()
{

Console.WriteLine("\tMatricula: "+matricula);
Console.WriteLine("\tOrigen: "+origen);
Console.WriteLine("\tDestino: "+destino);
Console.WriteLine("\tHora Salida: "+horaSalida);
Console.WriteLine("\tPiloto: "+piloto);

}
public void leer()
{

Console.WriteLine("Introduzca Matricula");
matricula=Leer.Cadena();
Console.WriteLine("Introduzca Origen");
origen=Leer.Cadena();
Console.WriteLine("Introduzca destino");
destino=Leer.Cadena();
Console.WriteLine("Introduzca hora de salida");
horaSalida=Leer.Cadena();
Console.WriteLine("Introduzca Piloto");
piloto=Leer.Cadena();
}

public void escribirAA(BinaryWriter escritor)


{
escritor.Write(matricula);
escritor.Write(origen);
escritor.Write(destino);
escritor.Write(horaSalida);
escritor.Write(piloto);
}
public void leerAA(BinaryReader lector)
{

matricula=lector.ReadString();
origen=lector.ReadString();
destino=lector.ReadString();
horaSalida=lector.ReadString();
piloto=lector.ReadString();
}
public String getMatricula()
{
return matricula;
}

Clase ArchivoAvion:
using System;
using System.IO;
class ArchivoAvion
{
private string nombre;
public ArchivoAvion(string na)
{
nombre=na;
}
public void crearNuevo()
{
if (System.IO.File.Exists(nombre))
{
Console.WriteLine("Realmente quiere crear el archivo. Ojo se borraran los registros? s/n");
if (Console.ReadKey().KeyChar=='s')
System.IO.File.Delete(nombre);

}
else
Console.WriteLine("el archivo no existe");
}
public void adicionar()
{
Stream arch=File.Open(nombre,FileMode.Append);
BinaryWriter escribe=new BinaryWriter(arch);
Avion avi=new Avion();
try
{
do
{
Console.WriteLine();
avi.leer();
avi.escribirAA(escribe);
Console.Write("Desea seguir añadiendo? s/n");
}while(Console.ReadKey().KeyChar=='s');
}
catch(Exception )
{
Console.WriteLine("Fallo en adicionar el objeto!!");
}
finally
{
arch.Close();
}
}
public void listar()
{
Stream arch=File.Open(nombre,FileMode.OpenOrCreate);
BinaryReader lector=new BinaryReader(arch);
Avion avi=new Avion();
try
{
Console.WriteLine("\nDatos del Avion");
Console.WriteLine("====================");
Console.WriteLine("\nMatricula\tOrigen\tDestino\tHora de Salida\tPiloto");

while(true)
{
avi.leerAA(lector);
Console.WriteLine("\n");
avi.mostrar();
}
}
catch(Exception)
{
Console.WriteLine("Fin de archivo...");
}
finally{
arch.Close();
}
}

public bool EliminarA(string nombrex ) {


bool sw = false;
try {
// Abrimos el archivo o se crea un nuevo archivo si no existe
Stream archp = File.Open(nombre, FileMode.Open);
Stream archTemporal = File.Open(@"D:\tempp.dat", FileMode.OpenOrCreate);
BinaryReader lector = new BinaryReader(archp);
BinaryWriter escribeTemp = new BinaryWriter(archTemporal);
Avion avi = new Avion();

try {
while( true ) {
avi.leerAA(lector);
if(avi.getMatricula().Equals(nombrex)) {
sw=true;
}
else {
avi.escribirAA(escribeTemp);
}
}
}
catch( Exception ) {
// No hace nada.
}
finally {
archp.Close();
archTemporal.Close();
File.Replace(@"D:\tempp.dat", nombre, nombre + ".bak");
}
}
catch( Exception ) {
Console.WriteLine("El archivo no se puede acceder !!!");
}
return sw;
}
}

Clase leer:
using System;

//namespace excepciones
//{
/// <summary>
/// Clase que lee de la consola y transforma en el dato que se necesita
/// </summary>
class Leer {
/// <summary>
/// Lee una cadena unicode
/// </summary>
/// <returns>una cadena leida por consola</returns>
public static string Cadena() {
string dato = "";
try {
dato = Console.ReadLine();
}
catch( Exception e ) {
Console.WriteLine("Error en la entrada de datos :" + e.Message);
}
return dato;
}
/// <summary>
/// Lee un dato short (Int16) con signo, si falla retorna el minimo valor
/// </summary>
/// <returns>un short leida por consola</returns>
public static short Short() {
short dato = short.MinValue;
try {
dato = short.Parse(Cadena());
}
catch( OverflowException ) {
Console.WriteLine("El numero esta por encima del limite del tipo de dato Short, asignado por defecto
MinValue");
}
catch( ArgumentException ) {
Console.WriteLine("Introdusca un numero valido, asignado por defecto MinValue");
}
catch( FormatException ) {
Console.WriteLine("Formato no valido, asignado por defecto MinValue");
}
return dato;
}
/// <summary>
/// Lee un dato int (Int32) con signo, si falla retorna el minimo valor
/// </summary>
/// <returns>un int leida por consola</returns>
public static int Integer() {
int dato = int.MinValue;
try {
dato = int.Parse(Cadena());
}
catch( OverflowException ) {
Console.WriteLine("El numero esta por encima del limite del tipo de dato int, asignado por defecto MinValue");
}
catch( ArgumentException ) {
Console.WriteLine("Introdusca un numero valido, asignado por defecto MinValue");
}
catch( FormatException ) {
Console.WriteLine("Formato no valido, asignado por defecto MinValue");
}
return dato;
}
/// <summary>
/// Lee un dato long (Int64) con signo, si falla retorna el minimo valor
/// </summary>
/// <returns>un long leida por consola</returns>
public static long Long() {
long dato = long.MinValue;
try {
dato = long.Parse(Cadena());
}
catch( OverflowException ) {
Console.WriteLine("El numero esta por encima del limite del tipo de dato Long, asignado por defecto
MinValue");
}
catch( ArgumentException ) {
Console.WriteLine("Introdusca un numero valido, asignado por defecto MinValue");
}
catch( FormatException ) {
Console.WriteLine("Formato no valido, asignado por defecto MinValue");
}
return dato;
}
/// <summary>
/// Lee un dato float (precision de 7 digitos) ±1,5e-45 a ±3,4e38.
/// Si falla retorna NaN, se comprueba con isNaN()
/// </summary>
/// <returns>un float leido por consola</returns>
public static float Float() {
float dato = float.NaN;
try {
dato = float.Parse(Cadena());
}
catch( ArgumentException ) {
Console.WriteLine("Introdusca un numero valido, asignado por defecto NaN");
}
catch( FormatException ) {
Console.WriteLine("Formato no valido, asignado por defecto NaN");
}
return dato;
}
/// <summary>
/// Lee un dato double (precision de 15 digitos) ±5,0e-324 a ±1,7e308
/// Si falla retorna NaN, se comprueba con isNaN()
/// </summary>
/// <returns>un double leido por consola</returns>
public static double Double() {
double dato = double.NaN;
try {
dato = double.Parse(Cadena());
}
catch( ArgumentException ) {
Console.WriteLine("Introdusca un numero valido, asignado por defecto NaN");
}
catch( FormatException ) {
Console.WriteLine("Formato no valido, asignado por defecto NaN");
}
catch( OverflowException ) {
Console.WriteLine("El numero esta por encima del limite del tipo de dato double, asignado por defecto NaN");
}
return dato;
}
/// <summary>
/// Lee un dato Decimal (precision de 28-29 dígitos), clase que representa cantidades decimales
/// Si falla retorna NaN, se comprueba con isNaN()
/// </summary>
/// <returns>un decimal leido por consola</returns>
public static decimal Decimal() {
decimal dato = decimal.MinValue;
try {
dato = decimal.Parse(Cadena());
}
catch( ArgumentException ) {
Console.WriteLine("Introdusca un numero valido, asignado por defecto MinValue");
}
catch( FormatException ) {
Console.WriteLine("Formato no valido, asignado por defecto MinValue");
}
catch( OverflowException ) {
Console.WriteLine("El numero esta por encima del limite del tipo de dato Decimal, asignado por defecto
MinValue");
}
return dato;
}
}
//}

Clase Principal:
using System;
class Program {
static void Main( string[] args ) {
bool sw = true;
Console.ForegroundColor = ConsoleColor.White;
//Console.BackgroundColor = ConsoleColor.Magenta;
while( sw ) {
Console.WriteLine("\n ");
Console.WriteLine(" MENU ");
Console.WriteLine(" ARCHIVO AVION ");
Console.WriteLine(" =============== ");
Console.WriteLine(" ");
Console.WriteLine("1. CREAR ARCHIVO AVION ");
Console.WriteLine("2. ADICIONAR AVION ");
Console.WriteLine("3. LISTADO ");
Console.WriteLine("4. ELIMINAR AL AVION CON MATRICULA M ");
Console.WriteLine("6. SALIR ");
Console.WriteLine(" ");
Console.Write("INTRODUSCA UNA OPCION => ");
ArchivoAvion archA= new ArchivoAvion(@"d:\avion.dat");
//ArchivoJugador aj2= new ArchivoJugador(@"d:\jugx.dat");
switch( Console.ReadKey().KeyChar ) {
case '1':
archA.crearNuevo();
break;
case '2':
Console.Write("\nAdicionando al archivo");
archA.adicionar();

break;
case '3':
Console.Write("\n********************Archivo 1*****************\n");
archA.listar();
break;

case '4':
Console.WriteLine("Introducir la matricula del avion a eliminar: ");
string mxy=Leer.Cadena();
archA.EliminarA(mxy);
break;
default:
Console.WriteLine("\n El programa ya termino !!!");
Console.Beep();
sw = false;
break;
}
}

}
}

Capturas de Pantalla:

También podría gustarte