Извлечь данные пользователя

315
30 августа 2017, 13:10

Создаю программу "Банкомат". Возник вопрос - как сделать чтобы пользователь ввел свой ид, и сразу показало его счет и фио класс банкомат

class Bankomat
{
    public const string Adress = "Эльменя 6, код банкомата 465422";
    public int BankCash { get; set; }
    public int Id { get; set; }
    public int Cash { get; set; }
    public string Name { get; set; }
    public Bankomat(int id, int cash, string name)
    {
        Id = id;
        Cash = cash;
        Name = name;
    }

Основная программа

      static void Main(string[] args)
    {
        Bankomat Vanya = new Bankomat(146251, 1500, "Петров Иван Иванович");
        Bankomat Alex = new Bankomat(146252, 3400, "Сергеев Александр Сергеевич");
        Bankomat Petya = new Bankomat(146253, 710, "Леонтьев Петр Евгеньевич");
        Console.Write("Введите ваш id пожалуйста: ");
        int id = Convert.ToInt32(Console.ReadLine());
        if ((id == Vanya.Id)||(id == Alex.Id) ||(id == Petya.Id))
        {
        }

        Console.ReadKey();

Если ид принадлежит Ване, то выдать только данные Вани.

ps. не предлагать

        if (id == Vanya.Id)
        {
              Console.Write("{Vanya.Id} {Vanya.Name} {Vanya.Cash}");
        }else if(id == Alex.Id){
              Console.Write("{Alex.Id} {Alex.Name} {Alex.Cash}");
        }

не хочу много условных конструкций, т.к. если будет много пользователей, то код тупо засрется

Answer 1

Как вариант с Коллекцией:

static void Main(string[] args)
{
    List<Bankomat> BankKollection = new List<Bankomat>();
    BankKollection.Add(new Bankomat(146251, 1500, "Петров Иван Иванович"));
    BankKollection.Add(new Bankomat(146252, 3400, "Сергеев Александр Сергеевич"));
    BankKollection.Add(new Bankomat(146253, 710, "Леонтьев Петр Евгеньевич"));
    Console.Write("Введите ваш id пожалуйста: ");
    int id = Convert.ToInt32(Console.ReadLine());
    foreach (Bankomat bank in BankKollection)
    {
        if (bank.Id == id)
        {
            Console.WriteLine("ФИО : {0}, Счет : {1}, ID : {2}",bank.Name, bank.Cash, bank.Id);
        }
    }
    Console.ReadKey();
}

Или, как советует @iksuy со словарем :

static void Main(string[] args)
{
    Dictionary<int, Bankomat> BankKollection = new Dictionary<int, Bankomat>();
    BankKollection.Add(1, new Bankomat(1, 1500, "Петров Иван Иванович"));
    BankKollection.Add(2, new Bankomat(2, 3400, "Сергеев Александр Сергеевич"));
    BankKollection.Add(3, new Bankomat(3, 710, "Леонтьев Петр Евгеньевич"));
    Console.Write("Введите ваш id пожалуйста: ");
    int id = Convert.ToInt32(Console.ReadLine());
    if (BankKollection.Keys.Contains(id))
    {
      Console.WriteLine("ФИО : {0}, Счет : {1}, ID : {2}", BankKollection[id].Name, BankKollection[id].Cash, BankKollection[id].Id);
    }
    Console.ReadKey();
}

Выбирайте любой - дело вкуса.

UPD По совету уважаемого @Alex Krass foreach можно заменить на

Console.WriteLine(BankKollection.Where(p => p.Key == id).Select(p => p.Value.Id + " " + p.Value.Name + " " + p.Value.Cash).FirstOrDefault());
READ ALSO
Запретить повторное открытие tabPage c#

Запретить повторное открытие tabPage c#

Здравствуйте, подскажите пожалуйста, как запретить повторное открытие страницы tabPage1, через buttonТ

269
Meteor js - почему insert добавляет максимум 1000 строк?

Meteor js - почему insert добавляет максимум 1000 строк?

В итоге создаётся лишь 1000 (чуть больше)Почему?

279