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.

Parece que aprendiste un resto esta semana! Lo escribí en mi compu y no funcionó pero no estaba prendida, no puedo esperar a probarlo otra vez
ReplyDelete