A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Finalizado del proyecto: mostrando la lista de usuarios registrados

25/26
Recursos

Aportes 15

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Solo llevo 3 cursos, pero este es el MEJOR curso que he visto en Platzi. Espero mucho de esta escuela de Videojuegos

Control + K + C para comentar c贸digo
Control + K + U para descomentar
馃榿馃憤

Ni siquiera era necesario poner el index cuando imprimimos el nombre del usuario
Pudimos haber hecho lo siguiente:

foreach(string comensal in userNames)
            {
                Console.WriteLine($"User number is: {auxIndice} and the user name is: {comensal}");
                auxIndice++;
            }

que genial se siente entender el c贸digo

Sencillo si vienes de la escuela de desarrollador Web pero muy muy educativo, qued贸 todo claro, salvo algunas cosas entre las versiones de VSC 2019 y 2022. Yo esperar铆a una actualizaci贸n a 2022.

Refactorizar: Buscar La manera de hacer el software con menos c贸digo.

Hola compa帽eros yo hice el ejercicio de est谩 forma con mi l贸gica espero les sirva:

class Program
{

static void Main(string[] args)
{
    //Arrelo con las 10 posiciones para los usuarios

    string[] comensales;
    comensales = new string[] { "", "", "", "", "", "", "", "", "", "" };

    Console.WriteLine("Bienvenido al restaurante X ingrese su nombre para registrar");
    string user;
    int contadorArreglo = 0;
    int contador = 0;
    

    while (contadorArreglo < 10)
    {
        Console.WriteLine("Ingrese su nombre");
        user = Console.ReadLine();
        int indice = Array.IndexOf(comensales, user);

        if (indice > -1)
        {
            Console.WriteLine("El nombre de usuario: " + user + " ya se encuentra registrado");
            
        }
        else
        {
            Console.WriteLine("Bienvenido " + user + " te has registrado correctamente, bienvenido al restaurante X");
            comensales[contadorArreglo] = user;
            contadorArreglo++;
        }
        
    }

    Console.WriteLine("Gracias por venir al restaurante X, ya tenemos todas nuestras reservas llenas por los siguientes clientes:");
    Console.WriteLine("Por favor venir el ano que viene");
    
    
    foreach (string cliente in comensales)
    {
        Console.WriteLine("Cliente {0}, con nombre {1}", contador+1, comensales[contador]);
        contador++;
    }

    
}

}

Como comentario extra, dentro del foreach, se puede sustituir element en lugar de userNames[auxIndex], ya que esa variable contiene valor del indice en cada ciclo.

Pero tambi茅n para evitar usar una variable auxIndex, podemos reutilizar el m茅todo ense帽ado en este mismo curso Array.IndexOf鈥 Y de esa manera obtenemos el indice y le sumamos 1.

//Console.WriteLine("User number: {0} and user name: {1}", auxIndex+1, userNames[auxIndex]);
Console.WriteLine("User number: {0} and user name: {1}", Array.IndexOf(userNames, element)+1, element);

Aqui mi versi贸n!

using System;

/*
 * 1. Validar si es usuario existente o debe registrarse
 * 2. El programa debe ser capaz de darle la bienvenida a un usuario existente si existe
 * 3. El programa debe repetirse hasta que se registren las 10 personas
*/
namespace restaurant10TablesReservationSystem
{
    internal class Program
    {
        static string[] userNames = new string[10] { "Astrik", "", "", "", "", "", "", "", "", ""};
        static int arrCurrentIndex = 1;
        static void Main(string[] args)
        {
            while (arrCurrentIndex < userNames.Length)
            {
                Console.WriteLine("Hola 驴Qu茅 quieres hacer? \n" +
                    "1. Iniciar sesi贸n \n" +
                    "2. Registrarse");
                int select = Int32.Parse( Console.ReadLine() );

                switch ( select )
                {
                    case 1:
                        Program.login();
                        break;
                    case 2:
                        Program.addUser();
                        break;
                    default:
                        Console.WriteLine("Seleccione una opci贸n valida");
                        break;
                }
            }
            Console.WriteLine("隆El restuarante esta lleno! \n" +
                "Estos son los comensales:");
            int index = 1;
            foreach (string name in userNames)
            {
                Console.WriteLine($"{index}: {name}");
                index++;
            }
        }

        static void login()
        {
            Console.WriteLine("驴Cu谩l es tu usuario?");
            string user = Console.ReadLine();
            foreach (string userName in userNames)
            {
                if (userName == user)
                {
                    Console.WriteLine($"Bienvenido {userName}!");
                } else
                {
                    Console.WriteLine($"No se encontro el usuario: {userName}");
                }
            }
        }

        static void addUser()
        {
            Console.WriteLine("驴Como quieres registrarte?");
            string user = Console.ReadLine();
            userNames[arrCurrentIndex] = user;
            Console.WriteLine($"Ya puedes iniciar sesi贸n como {user}");
            arrCurrentIndex++;
        }
    }
}

Este es mi programa, agregandole un metodo para ver todos los usuarios y usando switch para recrear un menu para un Login o crear un usuario

class Program
{
static List<string> usuarios = new List<string>();

    static void Main(string[] args)
    {
        int max = 10;
        string usuario;

        Console.WriteLine("Bienvenido al sistema de reservas.");
        do
        {
            Menu();
            Console.WriteLine("Ingrese una opcion: ");
            int opcion = int.Parse(Console.ReadLine());

            switch (opcion)
            {
                case 1:
                    Console.WriteLine("\nIngrese su nombre de usuario");
                    usuario = Console.ReadLine();
                    if (!usuarios.Contains(usuario))
                    {
                        Console.WriteLine("El usuario ingresado no existe, ingrese su nombre para entrar al sistema");
                        Nuevo_Usuario();
                    }
                    Console.WriteLine("Bienvenido " + usuario + " ,usted se encuentra en la reserva\n");
                    break;
                    
                case 2:
                    Nuevo_Usuario();
                    break;

                case 3:
                    if (usuarios.Count == 0)
                    {
                        Console.WriteLine("Aun no hay usuarios registrados, se el primero!");
                        break;
                    }

                    Console.WriteLine("Usuarios dentro del sistema: ");
                    for (int i=0; i<usuarios.Count ; i++)
                    {
                        Console.WriteLine("     Usuario" + i+1 + ": " + usuarios[i]);
                    }
                    break;
                default:
                    Console.WriteLine("Menu inexistente");
                    break;
            }
            
        } while (usuarios.Count < max);

        Console.WriteLine("\nSe ha alcanzado el numero maximo de reservas, hasta la proxima :)");
    }

    public static void Menu()
    {
        Console.WriteLine("\n     --MENU--");
        Console.WriteLine("1. Login");
        Console.WriteLine("2. Nuevo");
        Console.WriteLine("3. Ver todos los usuarios");
    }

    public static void Nuevo_Usuario()
    {
        string usuario;
        Console.WriteLine("Ingrese su nuevo usuario");
        usuario = Console.ReadLine();
        usuarios.Add(usuario);
        Console.WriteLine("Se creo su usuario!");
    }

}

Otra opci贸n es usar Listas.

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
	public static void Main()
	{
		// Declarar lista
		var userNames = new List<string>();
		
		// Con cada iteraci贸n se agrega un usuario
		userNames.Add("Pepe");
		userNames.Add("Jorge");
		userNames.Add("Diego");
		
		foreach (var item in userNames.Select((value, index) => new { index, value }))
		{
			Console.WriteLine("User index: {0} and user name: {1}", item.index , item.value);
		}
	}
}

Repasando ando

Como yo habia puesto placeholders para que uno no pueda acceder simplemente presionando enter, habia un error donde, poniendo el mismo nombre de usuario q el anterior usuario, uno podia acceder como el placeholder, pues este no se reseteaba. Entonces, para resetearlo escribi

                usernames[doesUserExist] = Convert.ToString(placeholder);

abajo de cuando se registra. el codigo completo es este:

Random rnd = new Random();
long placeholder = Convert.ToInt64(rnd.Next(1, 32767) * rnd.Next(1, 32767) - rnd.Next(1, 1073676289));
string[] usernames = new string[10] {Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder), Convert.ToString(placeholder)};
Console.WriteLine("Welcome to the best restaurant of the world!");
for (var i = 0; i < 10; i++)
{
    Console.WriteLine("\nCurrently, we have " + (10 - i) + " reservation slots left.\nAre you registered? Type y for yes, or n for no");
    string strRegistered = Console.ReadLine();
    switch (strRegistered)
    {
        case "y":
            bool isRegistered = true;
            Console.WriteLine("You are a registered user, please type your username");
            string userToSearch = Console.ReadLine();
            Console.WriteLine("Searching for " + userToSearch + "...");
            int doesUserExist = Array.IndexOf(usernames, userToSearch);
            if (doesUserExist == -1)
            {
                Console.WriteLine(userToSearch + " is not registered on our data base");
                i = i - 1;
            }
            else
            {
                Console.WriteLine("Welcome, " + usernames[i] + "! You are the " + (i + 1) + "掳 user of the year to reserve a table");
                usernames[doesUserExist] = Convert.ToString(placeholder);
            }
            break;
        case "n":
            isRegistered = false;
            Console.WriteLine("To register yourself, please type your username");
            usernames[i] = Console.ReadLine();
            Console.WriteLine("User " + usernames[i] + " has been successfully registered. You can now log in to reserve a table");
            i = i - 1;
            break;
        default:
            Console.WriteLine("Error: invalid answer, please try again");
            i = i - 1;
            break;
    }
}
Console.WriteLine("\nThe restaurant is full of reservations, no more are admitted. If you want to make a new reservation, you will have to wait for the next year."); 

Tambi茅n podria surgir que hayan dos usuarios con exactamente el mismo nombre, pero eso no causa error en el codigo (aunque podria causar errores si se quiere aplicar el codigo, pero para corregirlo lo unico que se me ocurre es varios if anidados que chequeen si un usuario ya existe, o un switch con 10 parametros en donde en vez de las comillas se ponga usernames[i] y que de algun modo mire si hay dos iguales, pero no se si siquiera sea posible)

Muy buen curso muy bien explicado

馃憤馃徏

static void Main(string[] args)
        {
            string[] userNames = new string[10] { "Lalo", "Eva", "Abel", "Elisa", "Dani","Caro", "To帽o", "Elsa", "Gabriel", "" };
            int arrayCurrentIndex = 9;
            bool userType;

            Console.WriteLine("Welcome to the best restaurant in the world");

            while (arrayCurrentIndex < 10)
            {             
                Console.Write("\n\nAre you a registered use? Write - True / False: ");
                userType = bool.Parse(Console.ReadLine());

                if (userType == true)
                {
                    Console.Write("\nHello, you are a registered user, please enter your user name: ");
                    string userToSearch = Console.ReadLine();

                    Console.WriteLine("\nThe user you searched is {0}", userToSearch);

                    int index = Array.IndexOf(userNames, userToSearch);

                    if (index == -1)
                    {
                        Console.WriteLine("User not found, try again or register");
                    }

                    else
                    {
                        Console.WriteLine("Welcome {0}, it麓s a pleasure to give your food.", userNames[index]);
                    }
                }

                else if (userType == false)
                {
                    Console.Write("Please write and remember your User name: ");
                    userNames[arrayCurrentIndex] = Console.ReadLine();

                    Console.WriteLine("\nYour User has been saved successfully\nYour User Name is {0}",userNames[arrayCurrentIndex]);
                    arrayCurrentIndex++;
                }
            }

            Console.WriteLine("The restaurant is full, try again next year\nThese are the guests to the dinner: ");
            int auxIndex = 0;

            foreach(string element in userNames)
            {
                Console.WriteLine("User number {0} and user name: {1}", auxIndex + 1, userNames[auxIndex]);
                auxIndex++;
            }

            Environment.Exit(0);
            
        }