Proyecto
Ejemplo Parte 2
Diario de Aprendizaje #11 – Semana del 22 de Octubre 2018
En esta semana dimos continuación
a lo que es nuestro Proyecto Ejemplo de uso y manejo de archivos de texto.
A lo largo de su creación, el
programa ha aumentado un número considerable de líneas de código. Esto implica
que un ingeniero de software o programador debe de tener mucho orden y claridad
al plasmar sus ideas y codificarlas, de otra forma sería muy complicado
entender qué está sucediendo o poder encontrar un error si este fuera el caso.
Hasta ahorita se llevan aproximadamente
unas 400 líneas, pero en un proyecto de software ya laboral se pueden llegar a
codificar miles de líneas de código.
En esta semana logramos
implementar un sistema para dar de altas y bajas a un usuario.
Un alta consistía en poder
agregar un nuevo usuario a un archivo de texto y una baja consistía en poder
eliminar datos o usuarios de un archivo de texto.
Nuevamente concluyo que me
gusta mucho como estamos desarrollando y progresando este proyecto, así como
los conocimientos, aprendizajes y experiencias que adquirimos a lo largo de
este.
Aquí se presenta el avance del
código del proyecto hasta esta semana:
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 = contenido.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;
}
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
{
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
{
break;
}
case 2: // Bajas
{
break;
}
case 3: // Cambios
{
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!
¡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.
