Base de datos de amigos, utilizando archivos Ejercicio C# - Curso de Programación C# (C Sharp)

 Ejercicio

Base de datos de amigos, utilizando archivos

 Objetivo

Expanda la "base de datos de amigos", de modo que cargue los datos del archivo al comienzo de cada sesión (si el archivo existe) y guarde los datos en el archivo cuando finalice la sesión. Por lo tanto, los datos introducidos en una sesión deben estar disponibles para la siguiente sesión.

 Código de Ejemplo

using System;
using System.IO;
public class FriendsDatabase
{
    struct people
    {
        public string name;
        public string email;
        public string address;
        public ushort year;
    }

    public static void Main()
    {
        int total = 275;
        people[] p = new people[total];
        int amount = 0;

        char option;
        bool found;
        string textSearch;
        string name = "friends.dat";

        if (File.Exists(name))
        {
            StreamReader file = File.OpenText(name);
            amount = Convert.ToInt32(file.ReadLine());

            file.ReadLine();

            for (int i = 0; i < amount; i++)
            {
                if (i < total)
                {
                    p[i].name = file.ReadLine();
                    p[i].email = file.ReadLine();
                    p[i].address = file.ReadLine();
                    p[i].year = Convert.ToUInt16(file.ReadLine());
                    file.ReadLine();
                }
            }
            file.Close();
        }

        do
        {
            Console.WriteLine("1- Add data");
            Console.WriteLine("2- Show");
            Console.WriteLine("3- View all data");
            Console.WriteLine("4- Show between dates");
            Console.WriteLine("5- Show oldest");
            Console.WriteLine("6- Show fields match");
            Console.WriteLine("0- Exit");

            Console.Write("Enter a option: ");
            option = Convert.ToChar(Console.ReadLine());

            switch (option)
            {

                case '1':
                    if (amount < total - 1)
                    {
                        do
                        {
                            Console.Write("Name: ");
                            p[amount].name = Console.ReadLine();

                            if (p[amount].name.Length > 40)
                                Console.WriteLine("Max 40 letters");
                        }
                        while (p[amount].name.Length > 40);

                        do
                        {
                            Console.Write("Email: ");
                            p[amount].email = Console.ReadLine();

                            if (p[amount].email.Length > 30)
                                Console.WriteLine("Max 30 letters");
                        }
                        while (p[amount].email.Length > 30);

                        do
                        {
                            Console.Write("Address: ");
                            p[amount].address = Console.ReadLine();

                            if (p[amount].address.Length > 150)
                                Console.WriteLine("Max 150 letters");
                        }
                        while (p[amount].address.Length > 150);

                        do
                        {
                            Console.Write("Year: ");
                            p[amount].year = Convert.ToUInt16(Console.ReadLine());

                            if (p[amount].year < 1850 || p[amount].year > 2100)
                                Console.WriteLine("1850-2100");
                        }
                        while (p[amount].year < 1850 || p[amount].year > 2100);

                        amount++;
                        Console.WriteLine();
                    }
                    else
                        Console.WriteLine("Full");

                    break;

                case '2':
                    if (amount == 0)
                        Console.WriteLine("No data");
                    else
                    {
                        for (int i = 0; i < amount; i++)
                        {
                            if (p[i].name.Length <= 30)
                                Console.WriteLine("{0}: Name = {1}", i + 1, p[i].name);
                            else
                                Console.WriteLine("{0}: Name = {1}", i + 1,
                                p[i].name.Substring(0, 30) + "...");

                            if (i % 20 == 19)
                                Console.ReadLine();
                        }
                    }

                    break;
                case '3':
                    Console.Write("Enter the person: ");
                    textSearch = Console.ReadLine();

                    found = false;
                    for (int i = 0; i < amount; i++)
                    {
                        if (textSearch.ToLower() == p[i].name.ToLower())
                        {
                            found = true;
                            Console.WriteLine("{0}: Year = {1}, Email = {2}, Address = {3}",
                            i + 1, p[i].year, p[i].email, p[i].address);
                        }
                    }

                    if (!found)
                        Console.WriteLine("Not exists");

                    break;

                case '4':
                    Console.Write("Enter the first year: ");
                    int year1 = Convert.ToUInt16(Console.ReadLine());

                    Console.Write("Enter the second year: ");
                    int year2 = Convert.ToUInt16(Console.ReadLine());


                    if (year1 > year2)
                    {
                        int aux = year2;
                        year2 = year1;
                        year1 = aux;
                    }

                    found = false;
                    for (int i = 0; i < amount; i++)
                    {
                        if (p[i].year >= year1 && p[i].year <= year2)
                        {
                            Console.Write(p[i].name + " - ");
                            found = true;
                        }
                    }

                    if (!found)
                        Console.WriteLine("Not found");
                    break;


                case '5':
                    if (amount == 0)
                        Console.WriteLine("No data");
                    else
                    {
                        int firstYear = p[0].year;
                        found = false;

                        for (int i = 1; i < amount; i++)
                            if (p[i].year < firstYear)
                                firstYear = p[i].year;

                        for (int i = 0; i < amount; i++)
                        {
                            Console.WriteLine("{0}: Address = {2}, Year = {3}",
                            i + 1, p[i].name, p[i].address, p[i].year);

                            if (Console.ReadLine().ToLower() == "end")
                                break;
                        }
                    }
                    break;

                case '0':
                    break;

                default:
                    Console.WriteLine("Wrong option");
                    break;
            }

        }
        while (option != '0');

        StreamWriter dataFile = File.CreateText(name);
        dataFile.WriteLine(amount);
        dataFile.WriteLine();

        for (int i = 0; i < amount; i++)
        {
            dataFile.WriteLine(p[i].name);
            dataFile.WriteLine(p[i].email);
            dataFile.WriteLine(p[i].address);
            dataFile.WriteLine(p[i].year);
            dataFile.WriteLine();
        }

        dataFile.Close();
    }
}

Más ejercicios C# Sharp de Administración de Archivos

 Escribir en un archivo de texto
Cree un programa para pedir al usuario varias oraciones (hasta que simplemente presione Enter) y guárdelas en un archivo de texto llamado "oraciones.t...
 Anexar a un archivo de texto
Crea un programa para pedir al usuario varias frases (hasta que solo pulse Intro) y guárdalas en un archivo de texto denominado "oraciones.txt". Si el...
 Mostrar el contenido del archivo
Cree un programa para mostrar todo el contenido de un archivo de texto en pantalla (nota: debe usar un StreamReader). El nombre del archivo se ingresa...
 Expandir TextToHTML (archivos)
Expanda la clase TextToHtml, para que ir pueda volcar su resultado en un archivo de texto. Cree un método ToFile, que recibirá el nombre del archivo c...
 Registrador
Cree un registrador de clases, con un método estático Write, que agregará un determinado texto a un archivo: Logger.Write("myLog.txt", "This text is b...
 More
Cree un programa que se comporte como el comando "more" de Unix: debe mostrar el contenido de un archivo de texto y pedir al usuario que presione Ente...
 Cambiador de texto
Cree un programa para reemplazar palabras en un archivo de texto, guardando el resultado en un nuevo archivo. El archivo, la palabra a buscar y la ...
 Contar letras en un archivo
Cree un programa para contar la cantidad de veces que un determinado carácter está dentro de un archivo (de cualquier tipo). El archivo y la carta ...
 Lectura de un archivo binario (1: BMP)
Cree un programa de C# para comprobar si un archivo de imagen BMP parece ser correcto. Debe ver si los dos primeros bytes son B y M (códigos ASCII ...
 Escribir en un archivo binario
Crea un programa que pida al usuario su nombre, su edad (byte) y el año en el que nació (int) y los almacene en un archivo binario. Cree también un...
 C# a Java
Cree un traductor básico de C# a Java. Debe aceptar archivos de origen de C# y crear un archivo de origen Java equivalente. Recibirá el nombre del ...
 Invertir un archivo de texto
Crear un programa para "invertir" el contenido de un archivo de texto: crear un archivo con el mismo nombre que termine en ".tnv" y que contenga las m...
 Lectura de un archivo binario (2 - GIF)
Cree un programa de C# para comprobar si un archivo de imagen GIF parece ser correcto. Debe ver si los primeros cuatro bytes son G, I, F, 8. En ...
 Traductor de Pascal a C#
Cree un traductor básico de Pascal a C#. Aceptará programas como: programa de ejemplo; Var i: entero; máx.: entero; empezar writeLn("¿Cuán...
 Convertir un archivo de texto en mayúsculas
Escribe un programa para leer un archivo de texto y volcar su contenido a otro archivo, cambiando las letras minúsculas a mayúsculas. Debe entregar...
 Convertir cualquier archivo a mayúsculas
Escribe un programa para leer un archivo (de cualquier tipo) y volcar su contenido a otro archivo, cambiando las letras minúsculas a mayúsculas. De...
 Conversor de archivos
Crear un programa para "invertir" un archivo: crear un archivo con el mismo nombre que termine en ".inv" y que contenga los mismos bytes que el archiv...
 Cifrador de archivos
Cree un programa para cifrar un archivo de texto en otro archivo de texto. Debe incluir la clase de cifrado que ha creado anteriormente (el 17 de ener...
 Contar palabras
Crear un programa de C# para contar la cantidad de palabras almacenadas en un archivo de texto...
 Ancho y alto BMP, BinaryReader
Vuelva a crear un programa de C# para mostrar el ancho y el alto de un archivo BMP mediante un BinaryReader. La estructura del encabezado de un arc...
 Conversor de TXT a HTML
Cree un "convertidor de texto a HTML", que leerá un archivo de texto de origen y creará un archivo HTML a partir de su contenido. Por ejemplo, si el a...
 Invertir archivo binario V2
Crear un programa para "invertir" un archivo, utilizando un "FileStream": crear un archivo con el mismo nombre que termine en ".inv" y que contenga lo...
 Ancho y alto BMP, FileStream
Cree un programa de C# para mostrar el ancho y el alto de un archivo BMP mediante FileStream. Recuerda la estructura de la cabecera: File type (...
 Copiador de archivos
Cree un programa para copiar un archivo de origen en un archivo de destino. Debe utilizar FileStream y un tamaño de bloque de 512 Kb. Un ejemplo de us...
 Lector de MP3
Las especificaciones ID3 se aplican a cualquier archivo o contenedor audiovisual. Sin embargo, generalmente se aplica principalmente contenedores de a...
 Conversor de C a C#
Cree un programa para convertir programas de C simples, como el siguiente, a C#: Nota: el programa resultante debe compilar correctamente. Pruébelo c...
 Divisor de archivos
Cree un programa para dividir un archivo (de cualquier tipo) en pedazos de cierto tamaño. ir debe recibir el nombre del archivo y el tamaño como parám...
 Cifrar un archivo BMP
Cree un programa para cifrar / descifrar un archivo de imagen BMP, cambiando la marca "BM" en los dos primeros bytes con MB y viceversa. Utilice el...
 Conversor CSV
El CSV ("Valores separados por comas") es un formato de intercambio utilizado por muchas hojas de cálculo y bases de datos de sistemas de gestión. Es ...
 Comparador de archivos
Cree un programa de C# para saber si dos archivos (de cualquier tipo) son idénticos (tienen el mismo contenido)....
 Mostrar BPM en la consola
El formato Netpbm es una familia de formatos de archivo de imagen diseñados teniendo en cuenta la simplicidad, en lugar de un tamaño pequeño. Pueden r...
 Ancho y alto de PCX
Cree un programa que compruebe si un archivo parece una imagen PCX y, de ser así, muestre su ancho y alto, a partir de la siguiente especificación: ...
 Extraer texto de un archivo binario
Cree un programa para extraer (sólo) los caracteres alfabéticos contenidos en un archivo binario y volcarlos a un archivo diferente. Los caracteres ex...
 Conversor de C# a Pascal
Crear un programa para convertir programas simples de C#, como el siguiente, al lenguaje Pascal...
 Volcado
Cree una utilidad de "volcado": un visor hexadecimal, para mostrar el contenido de un archivo, 16 bytes en cada fila, 24 archivos en cada pantalla (y ...
 Extractor DBF
Crear un programa que muestre la lista de los campos que hay almacenados en un fichero DBF. El formato DBF es el usado por el antiguo gestor de bas...
 Texto censurado
Cree un programa para "censurar" archivos de texto. Debe leer un archivo de texto y volcar sus resultados a un nuevo archivo de texto, reemplazando ci...
 SQL a texto
Debe crear un programa C# capaz de analizar comandos INSERT del lenguaje SQL y extraer sus datos para separar líneas de texto, de la siguiente manera:...
 Visor PGM
El formato PGM es una de las versiones de los formatos de imagen NetPBM. En concreto, es la variante capaz de manejar imágenes en tonos de gris. Su...
 Mostrar BMP en la consola V2
Cree un programa para mostrar un archivo BMP de 72x24 en la consola. Debe usar la información en el encabezado (ver el ejercicio del 7 de febrero). P...

Juan A. Ripoll - Tutoriales y Cursos de Programacion© 2024 Todos los derechos reservados.  Condiciones legales.