Proyecto Ejemplo Parte 3
Diario de Aprendizaje #12 – Semana del 28 de Octubre 2018
En esta semana nuevamente dimos continuación a lo que es nuestro Proyecto Ejemplo de uso y manejo de archivos de texto.
También dimos un repaso a lo que fue todo el proceso del Proyecto Ejemplo para prepararnos para el 2do parcial.
Esta semana dimos una conclusión a lo que fue el apartado de altas, bajas y cambios de la parte de usuarios y productos.
Nos pudimos dar cuenta que la manera de implementar las bajas y cambios son muy similares, pero debíamos cambiar las variables respectivamente y en la parte de cambios necesitábamos primero borrar los datos que teníamos previamente para luego reemplazarlos con los nuevos que le pediríamos al usuario.
En la parte de bajas nada más debíamos borrar los datos y dejar los strings con valores nulos.
En lo que respecta a las altas, ahí verificamos si un nombre de usuario tenía ya existencia en el archivo de texto. Si esto no fuera cierto, entonces procedimos a crearlo junto con su respectiva contraseña.
Yo considero que el realizar este tipo de programas es muy útil para saber cómo es el funcionamiento de un sistema bancario y para practicar lo que es codificar y crear nuestras propias funciones y métodos.
Me siento muy feliz al poder crear tales programas y ver su desarrollo y funcionamiento a través de las semanas. La última parte que haría falta en este proyecto sería crear los reportes correspondientes.
Dichas funciones se verán próximamente.
A continuación, se presenta el tercer avance del Proyecto Ejemplo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace Proyecto_Usuarios
{
class Program
{
static void Main(string[] args)
{
// Ejemplo de proyecto
int opcion = 0;
do
{
// Inicio de menú
Console.WriteLine("Ingresa la opción que deseas realizar");
Console.WriteLine("Opción 1: Inicio de Sesión");
Console.WriteLine("Opción 2: Registro");
opcion = int.Parse(Console.ReadLine());
// Fin de menú
switch (opcion)
{
case 1: // Opción de inicio de sesión
{
// Llevar archivo a RAM
StreamReader lectura = File.OpenText(@"usuarios.txt");
string contenido = lectura.ReadToEnd();
lectura.Close();
string[] elementos = contenido.Split('\n');
// Fin de creación de copia de archivo
Console.WriteLine("Bienvenido al inicio de sesión");
Console.WriteLine("Ingresa tu nombre de usuario");
string temporal = Console.ReadLine();
bool validacion = false;
for(int x=0; x<elementos.Length; x=x+2)
{
if(elementos[x].Trim().Equals(temporal))
{
Console.WriteLine("Ingresa tu contraseña");
temporal = Console.ReadLine();
if(elementos[x+1].Trim().Equals(temporal))
{
validacion = true;
break;
} else
{
validacion = false;
break;
}
} else
{
validacion = false;
}
}
if(validacion == true) // if(validacion)
{
Console.Clear();
Console.WriteLine("Bienvenido");
// Inicio del menú de la aplicación
int opcionMenu = 0;
Console.WriteLine("Ingresa la opción que deseas realizar");
Console.WriteLine("Opción 1: Menú usuarios");
Console.WriteLine("Opción 2: Menú productos");
Console.WriteLine("Opción 3: Reportes");
opcionMenu = int.Parse(Console.ReadLine());
// Fin del menú
switch(opcionMenu)
{
case 1: // Menú usuarios
{
byte opcionUsuarios = 0;
Console.WriteLine("Bienvenido a opciones de usuario");
Console.WriteLine("Para dar de alta un usuario presione 1");
Console.WriteLine("Para dar de baja un usuario presione 2");
Console.WriteLine("Para realizar cambios en la información de un usuario presione 3");
opcionUsuarios = byte.Parse(Console.ReadLine());
switch(opcionUsuarios)
{
case 1: // Altas
{
Console.WriteLine("Bienvenido a altas");
StreamReader lecture = File.OpenText(@"usuarios.txt");
string content = lectura.ReadToEnd();
lectura.Close();
string[] datos = content.Split('\n');
bool validation = true;
do
{
Console.WriteLine("Ingresa el nombre de usuario a dar de alta");
temporal = Console.ReadLine();
// Inicio de validación de usuario único
for (int x = 0; x < datos.Length; x = x + 2)
{
if (datos[x].Trim().Equals(temporal)) // Trim: borrar el formato a una cadena de texto.
{
Console.WriteLine("El usuario ya existe...");
validation = false;
break;
}
else
{
StreamWriter creacion = File.AppendText(@"");
creacion.WriteLine(temporal);
Console.WriteLine("Ingresa la contraseña");
temporal = Console.ReadLine();
creacion.WriteLine(temporal);
creacion.Close();
validation = true;
}
}
// Fin de validación de usuario único
}
while (validation != true);
Console.Clear();
Console.WriteLine("Usuario y Contraseña dados de alta correctamente");
break;
}
case 2: // Bajas
{
Console.WriteLine("Bienvenido a bajas");
Console.WriteLine("Ingresa el nombre de usuario a dar de baja");
string usuario = Console.ReadLine();
//------------ Lectura del archivo ----------------------------
StreamReader lecturaBajas = File.OpenText(@"usuarios.txt");
string contenidosUsuarios = lecturaBajas.ReadToEnd();
lecturaBajas.Close();
string[] elementosUsuarios = contenidosUsuarios.Split('\n');
//------------ Fin lectura archivo ----------------------------
//------------ Lectura archivo DETALLE ------------------------
StreamReader detalleUsuarios = File.OpenText(@"u_detalle.txt");
string contenidoDetalleUsuarios = detalleUsuarios.ReadToEnd();
detalleUsuarios.Close();
string[] elementosDetalleUsuarios = contenidoDetalleUsuarios.Split('\n');
//------------ Fin lectura archivo DETALLE --------------------
for (int x=0; x<elementosUsuarios.Length; x=x+2)
{
if(elementosUsuarios[x].Trim().Equals(usuario))
{
Console.WriteLine("Ingresa la contraseña");
string contraseña = Console.ReadLine();
if(elementosUsuarios[x+1].Trim().Equals(contraseña))
{
// Procedemos a la baja del usuario
elementosUsuarios[x] = "";
elementosUsuarios[x + 1] = "";
Console.WriteLine("Se eliminó correctamente...");
//-----------------Eliminación en archivo detalle usuario-------------
for(int y=0; y<elementosDetalleUsuarios.Length; y=y+8)
{
if(elementosDetalleUsuarios[y+1].Trim().Equals(usuario))
{
elementosDetalleUsuarios[y] = "";
elementosDetalleUsuarios[y + 1] = "";
elementosDetalleUsuarios[y + 2] = "";
elementosDetalleUsuarios[y + 3] = "";
elementosDetalleUsuarios[y + 4] = "";
elementosDetalleUsuarios[y + 5] = "";
elementosDetalleUsuarios[y + 6] = "";
elementosDetalleUsuarios[y + 7] = "";
elementosDetalleUsuarios[y + 8] = "";
Console.WriteLine("Se eliminó correctamente...");
}
}
//-----------------Fin de eliminación detalle usuario-------------
}
else
{
Console.WriteLine("Contraseña incorrecta");
}
}
}
//-----------------Guardado de cambios USUARIOS -------------------------
StreamWriter escrituraUsuarios = File.CreateText(@"usuarios.txt");
for(int x=0; x<elementosUsuarios.Length; x++)
{
if(elementosUsuarios[x]!="")
{
escrituraUsuarios.WriteLine();
}
}
escrituraUsuarios.Close();
//-----------------Fin de guardado de cambios---------------------------
//-----------------Guardado de cambios DETALLE USUARIOS-----------------
StreamWriter escrituraDetalle = File.CreateText(@"u_detalle.txt");
for (int x = 0; x < elementosDetalleUsuarios.Length; x++)
{
if (elementosDetalleUsuarios[x] != "")
{
escrituraDetalle.WriteLine();
}
}
escrituraDetalle.Close();
//-----------------Fin de guardado de cambios---------------------------
break;
}
case 3: // Cambios
{
Console.WriteLine("Bienvenido a la opción de cambios de usuarios");
Console.WriteLine("Ingrese el nombre de usuario a realizar cambios");
string usuario = Console.ReadLine();
// Apertura de archivo
StreamReader lecturaUsuarios = File.OpenText(@"usuarios.txt");
string contenidoUsuarios = lecturaUsuarios.ReadToEnd();
lecturaUsuarios.Close();
string[] elementosUsuarios = contenidoUsuarios.Split('\n');
// Fin de lectura de archivo
for (int x = 0; x < elementosUsuarios.Length; x = x + 2)
{
if (elementosUsuarios[x] == usuario)
{
Console.WriteLine("Presione una tecla para cambiar el usuario");
Console.ReadKey(true);
Console.WriteLine("Ingresa el nuevo usuario");
elementosUsuarios[x + 1] = Console.ReadLine();
Console.WriteLine("Ingresa la nueva contraseña");
elementosUsuarios[x + 2] = Console.ReadLine();
Console.WriteLine("Se han realizado los cambios");
StreamWriter escrituraUsuarios = File.CreateText(@"usuarios.txt");
for (int y = 0; y < elementosUsuarios.Length; y++)
{
escrituraUsuarios.WriteLine(elementosUsuarios[y]);
}
escrituraUsuarios.Close();
break;
}
}
break;
}
default:
{
Console.WriteLine("La opción no es válida...");
break;
}
}
break;
}
case 2: // Menú productos
{
byte opcionProductos = 0;
Console.WriteLine("Bienvenido a opciones de productos");
Console.WriteLine("Para dar de alta un producto presione 1");
Console.WriteLine("Para dar de baja un producto presione 2");
Console.WriteLine("Para realizar cambios en la información de un producto presione 3");
opcionProductos = byte.Parse(Console.ReadLine());
switch (opcionProductos)
{
case 1: // Altas
{
Console.WriteLine("Bienvenido a la opción de alta de productos");
string[] productos = new string[5];
Console.WriteLine("Ingresa la clave del producto");
productos[0] = Console.ReadLine();
StreamReader lecturaProductos = File.OpenText(@"productos.txt");
string contenidoProductos = lecturaProductos.ReadToEnd();
lecturaProductos.Close();
string[] elementosProductos = contenidoProductos.Split('\n');
bool validacionClave = false;
for(int x=0; x<elementosProductos.Length; x=x+5)
{
if(elementosProductos[x] == productos[0])
{
validacionClave = true;
} else
{
validacionClave = false;
}
}
if(validacionClave == true) // if(validacionClave)
{
Console.WriteLine("La clave de producto ya existe...");
} else
{
Console.WriteLine("Ingresa el nombre del producto");
productos[1] = Console.ReadLine();
Console.WriteLine("Ingresa la descripción del producto");
productos[2] = Console.ReadLine();
Console.WriteLine("Ingresa la cantidad en existencia");
productos[3] = Console.ReadLine();
Console.WriteLine("Ingresa el precio");
productos[4] = Console.ReadLine();
StreamWriter escrituraProductos = File.AppendText(@"productos.txt");
for(int x=0; x<5; x++)
{
escrituraProductos.WriteLine(productos[x]);
}
escrituraProductos.Close();
Console.WriteLine("Los datos se guardaron correctamente");
}
break;
}
case 2: // Bajas
{
Console.WriteLine("Bienvenido a la opción de bajas de productos");
Console.WriteLine("Ingrese la clave de producto a dar de baja");
string claveProducto = Console.ReadLine();
// Apertura de archivo
StreamReader lecturaProductos = File.OpenText(@"productos.txt");
string contenidoProductos = lecturaProductos.ReadToEnd();
lecturaProductos.Close();
string[] elementosProductos = contenidoProductos.Split('\n');
// Fin de lectura de archivo
for(int x=0; x<elementosProductos.Length; x=x+5)
{
if(elementosProductos[x] == claveProducto)
{
Console.WriteLine("Presione una tecla para eliminar el producto");
Console.ReadKey(true);
elementosProductos[x] = "";
elementosProductos[x+1] = "";
elementosProductos[x+2] = "";
elementosProductos[x+3] = "";
elementosProductos[x+4] = "";
Console.WriteLine("El producto fue eliminado");
StreamWriter escrituraProductos = File.CreateText(@"productos.txt");
for(int y=0; y<elementosProductos.Length; y++)
{
escrituraProductos.WriteLine(elementosProductos[y]);
}
escrituraProductos.Close();
break;
}
}
break;
}
case 3: // Cambios
{
Console.WriteLine("Bienvenido a la opción de cambios de productos");
Console.WriteLine("Ingrese la clave del producto a realizar cambios");
string claveProducto = Console.ReadLine();
// Apertura de archivo
StreamReader lecturaProductos = File.OpenText(@"productos.txt");
string contenidoProductos = lecturaProductos.ReadToEnd();
lecturaProductos.Close();
string[] elementosProductos = contenidoProductos.Split('\n');
// Fin de lectura de archivo
for(int x=0; x<elementosProductos.Length; x=x+5)
{
if(elementosProductos[x] == claveProducto)
{
Console.WriteLine("Presione una tecla para cambiar el producto");
Console.ReadKey(true);
Console.WriteLine("Ingresa el nuevo nombre");
elementosProductos[x + 1] = Console.ReadLine();
Console.WriteLine("Igresa la nueva descripción");
elementosProductos[x + 2] = Console.ReadLine();
Console.WriteLine("Ingresa la nueva cantidad de existencia");
elementosProductos[x + 3] = Console.ReadLine();
Console.WriteLine("Ingresa el nuevo precio");
elementosProductos[x + 4] = Console.ReadLine();
Console.WriteLine("Se han realizado los cambios");
StreamWriter escrituraProductos = File.CreateText(@"productos.txt");
for(int y=0; y<elementosProductos.Length; y++)
{
escrituraProductos.WriteLine(elementosProductos[y]);
}
escrituraProductos.Close();
break;
}
}
break;
}
default:
{
Console.WriteLine("La opción no es válida...");
break;
}
}
break;
}
case 3: // Reportes
{
break;
}
default:
{
Console.WriteLine("Opción no válida");
break;
}
}
} else
{
Console.WriteLine("El usuario o contraseña no son correctos");
}
break;
}
case 2: // Registro
{
// Creación de archivo de texto
StreamWriter escritura = File.AppendText(@"u_detalle.txt");
string temporal = null;
Console.WriteLine("Registro de usuarios");
Console.WriteLine("Ingresa el nombre de usuario");
temporal = Console.ReadLine();
escritura.WriteLine(temporal);
Console.WriteLine("Ingresa el nombre/nombres");
temporal = Console.ReadLine();
escritura.WriteLine(temporal);
Console.WriteLine("Ingresa el apellido paterno");
temporal = Console.ReadLine();
escritura.WriteLine(temporal);
Console.WriteLine("Ingresa el apellido materno");
temporal = Console.ReadLine();
escritura.WriteLine(temporal);
Console.WriteLine("Fecha de Nacimiento: DD/MM/AAAA");
temporal = Console.ReadLine();
escritura.WriteLine(temporal);
Console.WriteLine("Dirección");
temporal = Console.ReadLine();
escritura.WriteLine(temporal);
Console.WriteLine("Teléfono");
temporal = Console.ReadLine();
escritura.WriteLine(temporal);
Console.WriteLine("Sexo: H/M");
temporal = Console.ReadLine();
escritura.WriteLine(temporal);
Console.WriteLine("Entidad de Nacimiento");
temporal = Console.ReadLine();
escritura.WriteLine(temporal);
escritura.Close();
Console.Clear();
Console.WriteLine("Los datos se almacenaron");
// Creación de usuario y contraseña en txt
Console.WriteLine("Elige un nombre de usuario");
temporal = Console.ReadLine();
if (File.Exists(@"usuarios.txt")) // Validación si el archivo existe
{
// Cuando el archivo sí existe
StreamReader lectura = File.OpenText(@"");
string contenido = lectura.ReadToEnd();
lectura.Close();
string[] datos = contenido.Split('\n');
bool validacion = true;
do
{
Console.WriteLine("Ingresa el nombre de usuario");
temporal = Console.ReadLine();
// Inicio de validación de usuario único
for(int x=0; x < datos.Length; x=x+2)
{
if(datos[x].Trim().Equals(temporal)) // Trim: borrar el formato a una cadena de texto.
{
Console.WriteLine("El usuario ya existe...");
validacion = false;
} else
{
StreamWriter creacion = File.AppendText(@"");
creacion.WriteLine(temporal);
Console.WriteLine("Ingresa la contraseña");
temporal = Console.ReadLine();
creacion.WriteLine(temporal);
creacion.Close();
validacion = true;
}
}
// Fin de validación de usuario único
}
while (validacion != true);
} else
{
// Cuando el archivo no existe
StreamWriter creacion = File.CreateText(@"");
Console.WriteLine("Ingresa tu nombre de usuario");
temporal = Console.ReadLine();
creacion.WriteLine(temporal);
Console.WriteLine("Ingresa tu contraseña");
temporal = Console.ReadLine();
creacion.WriteLine(temporal);
creacion.Close();
Console.WriteLine("Usuario y Contraseña creados correctamente");
}
// Fin de creación de usuario y contraseña
break;
} // Fin de registro
default: // Cualquier otra opción
{
Console.WriteLine("La opción que elegiste no es válida");
break;
}
}
Console.WriteLine("¿Deseas continuar en el programa? Ingresa 1 para SI, cualquier otro número para NO");
opcion = int.Parse(Console.ReadLine());
}
while (opcion == 1);
}
}
}
Te invito a probarlo en un editor de textos y compilarlo. Cualquier duda u opinión, no dudes en escribirme en los comentarios.
¡Hasta la próxima!
Referencias:
- Ejercicios y teoría vista en las clases de “Introducción a la Programación” impartidas por el M.S.I. José Alejandro Vargas Díaz en la Facultad de Informática de la Universidad Autónoma de Querétaro.

muy útil tu información, sigue así.
ReplyDeleteInteresante publicación del progreso del proyecto.
ReplyDelete