C# Desenvolvimento

Exercício em C# – CRUD com List

photo of person typing on computer keyboard
Photo by Soumil Kumar on Pexels.com

O post Exercício em C# – CRUD com List<T> demonstra como implementar um programa que tem como objetivo controlar a coleção de jogos de uma pessoa.

Exercício em C# – CRUD com List <T>

Implemente um programa que controle todos os seus jogos de vídeo game.

O programa deverá executar as seguintes ações:

  • Cadastrar um jogo;
  • Excluir um jogo;
  • Alterar um jogo;
  • Localizar jogos por nome;
  • Listar todos os jogos;
  • Listar todos os jogos por gênero;
  • Listar todos os jogos por console;

Um jogo deverá possuir as seguintes características:

  • Código;
  • Nome;
  • Descrição;
  • Console;
  • Gênero;

Deverá ser criado um tipo de dados (enum) para representar os dados dos gêneros e dos consoles.
Dados para o tipo TipoGenero = {Ação, Aventura, Casual, Puzzle, Estratégia, Outros}
Dados para o tipo TipoConsole = {Play Station 5, Switch, PC, X-Box Serie X, Outros}

Resposta

using System;
using System.Collections.Generic;

public enum TipoGenero { Acao ,Aventura, Casual, Puzze, Estrategia, Outro}
public enum TipoConsole { PS4, PS5, Switch, Xbox_360, Xbox_One, PC, Outro }
//classe do jogo
public class Jogo
    {
        public Jogo()
        {
            this.Id = 1;
            this.Nome = "";
            this.Descricao = "";
            this.Genero = TipoGenero.Outro;
            this.Console = TipoConsole.Outro;
        }

        public Jogo(int id, String nome, String descricao, TipoGenero genero, TipoConsole console)
        {
            this.Id = id;
            this.Nome = nome;
            this.Descricao = descricao;
            this.Genero = genero;
            this.Console = console;
        }

        private int id;

        public int Id
        {
            get { return id; }
            set {
                if (value > 0) id = value;
                else
                {
                    throw new Exception("Permitido apenas numeros positivos!!!!");
                }
            }
        }

        private String nome;

        public String Nome
        {
            get { return nome; }
            set { nome = value.ToUpper(); }
        }

        private String descricao;

        public String Descricao
        {
            get { return descricao; }
            set { descricao = value.ToUpper(); }
        }

        public TipoConsole Console { get; set; }
        public TipoGenero Genero { get; set; }
}
//classe de controle de jogos
public class ListaDeJogos
    {
        
        private List<Jogo> jogos;
        public List<Jogo> Jogos {
            get
            {
                return jogos;
            } 
        }

        public ListaDeJogos()
        {
            jogos = new List<Jogo>();
        }

        public Boolean Inserir(Jogo jogo)
        {
            Boolean resultado = true;
            try
            {
                Jogo j = jogos.Find(x => x.Id == jogo.Id);
                if(j == null)
                {
                    jogos.Add(jogo);
                }else
                {
                    resultado = false;
                }
            }
            catch (Exception erro)
            {
                resultado = false;
            }
            return resultado;
        }
        public Boolean Alterar(Jogo jogo)
        {
            Boolean resultado = false;
            Jogo j = jogos.Find(x => x.Id == jogo.Id);
            if (j != null)
            {
                j.Nome = jogo.Nome;
                j.Descricao = jogo.Descricao;
                j.Genero = jogo.Genero;
                j.Console = jogo.Console;
                resultado = true;
            }
            return resultado;
        }
        public Boolean Excluir(int id)
        {
            Boolean resultado = false;
            Jogo j = jogos.Find(x => x.Id == id);
            if (j != null)
            {
                resultado = jogos.Remove(j);
            }
            return resultado;
        }
        public List<Jogo> Localizar(String nome)
        {
            List<Jogo> lj = jogos.FindAll(x => x.Nome.Contains(nome.ToUpper()));
            return lj;
        }

        public List<Jogo> ListarPorGenero(TipoGenero genero)
        {
            List<Jogo> lj = jogos.FindAll(x => x.Genero.Equals(genero));
            return lj;
        }

        public List<Jogo> ListarPorConsole(TipoConsole console)
        {
            List<Jogo> lj = jogos.FindAll(x => x.Console.Equals(console));
            return lj;
        }

} 

//programa principal    
class Program{
  static int ShowMenu()
        {
            Console.Clear();
            Console.WriteLine("=== Controle de jogos ===");
            Console.WriteLine("Selecione uma opcao: ");
            Console.WriteLine("[1] Cadastrar um jogo");
            Console.WriteLine("[2] Excluir um jogo");
            Console.WriteLine("[3] Alterar um jogo");
            Console.WriteLine("[4] Localizar um jogo por nome");
            Console.WriteLine("[5] Listar os jogos por Genero");
            Console.WriteLine("[6] Listar os jogos por Console");
            Console.WriteLine("[7] Listar todos os jogos");
            Console.WriteLine("[9] Sair");
            Console.Write("Opcao: ");
            int op = Convert.ToInt32(Console.ReadLine());
            return op;
        }
        static void Main(string[] args)
        {
            ListaDeJogos listadejogos = new ListaDeJogos();
            List<Jogo> lista = new List<Jogo>(); //utilizado nos cases
            String nomejogo = "";
            int id = 0;

            //jogos para teste do sistema
            Jogo jogo = new Jogo(1,"Ty Runner","Jogo de corrida infinita",TipoGenero.Aventura,TipoConsole.Outro);
            listadejogos.Inserir(jogo);
            jogo = new Jogo(2, "Jackpot", "caca-niquel", TipoGenero.Casual, TipoConsole.Outro);
            listadejogos.Inserir(jogo);
            jogo = new Jogo(3, "Faroeste Zumbi", "Jogo de tiro", TipoGenero.Acao, TipoConsole.PC);
            listadejogos.Inserir(jogo);

            int op = 0; //valor da operação que o usuário era realizar
            while (op != 9)
            {
                op = ShowMenu();
                Console.Clear();
                switch (op)
                {
                    case 1: //inserir
                        Console.WriteLine("Inserir um novo jogo");
                        jogo = new Jogo();
                        Console.Write("Id: ");
                        jogo.Id = Convert.ToInt32(Console.ReadLine());
                        Console.Write("Nome: ");
                        jogo.Nome = Console.ReadLine();
                        Console.Write("Descricao: ");
                        jogo.Descricao = Console.ReadLine();
                        Console.Write("Informe o Genero Acao [0], Aventura [1], Casual [2], Puzze [3], Estrategia [4], Outro [5]: ");
                        jogo.Genero = (TipoGenero)Convert.ToInt32(Console.ReadLine());
                        Console.Write("Informe o Console PS4 [0], PS5 [1], Switch [2], Xbox 360 [3], Xbox One [4], PC [5], Outro [6]: ");
                        jogo.Console = (TipoConsole)Convert.ToInt32(Console.ReadLine());
                        if (listadejogos.Inserir(jogo))
                        {
                            Console.WriteLine("Jogo inserido!!!!");
                        }
                        else
                        {
                            Console.WriteLine("Jogo nao inserido!!!!");
                        }
                        Console.ReadKey();
                        break;
                    case 2: //excluir
                        Console.WriteLine("Excluir jogo");
                        Console.Write("Informe o id do jogo: ");
                        id = Convert.ToInt32(Console.ReadLine());
                        if (listadejogos.Excluir(id))
                        {
                            Console.WriteLine("Jogo excluido!!!!");
                        }
                        else
                        {
                            Console.WriteLine("Jogo nao excluido!!!!");
                        }
                        Console.ReadKey();
                        break;
                    case 3: //Alterar
                        Console.WriteLine("Alterar um jogo");
                        jogo = new Jogo();
                        Console.Write("Id: ");
                        jogo.Id = Convert.ToInt32(Console.ReadLine());
                        Console.Write("Nome: ");
                        jogo.Nome = Console.ReadLine();
                        Console.Write("Descricao: ");
                        jogo.Descricao = Console.ReadLine();
                        Console.Write("Informe o Genero Acao [0], Aventura [1], Casual [2], Puzze [3], Estrategia [4], Outro [5]: ");
                        jogo.Genero = (TipoGenero)Convert.ToInt32(Console.ReadLine());
                        Console.Write("Informe o Console PS4 [0], PS5 [1], Switch [2], Xbox 360 [3], Xbox One [4], PC [5], Outro [6]: ");
                        jogo.Console = (TipoConsole)Convert.ToInt32(Console.ReadLine());
                        if (listadejogos.Alterar(jogo))
                        {
                            Console.WriteLine("Jogo alterado!!!!");
                        }
                        else
                        {
                            Console.WriteLine("Jogo nao alterado!!!!");
                        }
                        Console.ReadKey();
                        break;
                    case 4: //Localizar por nome
                        Console.WriteLine("Localizar jogos");
                        Console.Write("Informe o nome do jogo: ");
                        nomejogo = Console.ReadLine();
                        lista = listadejogos.Localizar(nomejogo);

                        foreach (var j in lista)
                        {
                            Console.Write("Id: " + j.Id);
                            Console.Write(" - Nome: " + j.Nome);
                            Console.Write(" - Descricao: " + j.Descricao);
                            Console.Write(" - Genero: " + j.Genero);
                            Console.WriteLine(" - Console: " + j.Console);
                        }
                        Console.WriteLine("Aperte qualquer tecla para continuar");
                        Console.ReadKey();
                        break;
                    case 5: //Listar Gênero
                        Console.WriteLine("Listar todos os jogos por genero");
                        Console.Write("Informe o Genero Acao [0], Aventura [1], Casual [2], Puzze [3], Estrategia [4], Outro [5]: ");
                        TipoGenero genero = (TipoGenero)Convert.ToInt32(Console.ReadLine());
                        lista = listadejogos.ListarPorGenero(genero);

                        foreach (var j in lista)
                        {
                            Console.Write("Id: " + j.Id);
                            Console.Write(" - Nome: " + j.Nome);
                            Console.Write(" - Descricao: " + j.Descricao);
                            Console.Write(" - Genero: " + j.Genero);
                            Console.WriteLine(" - Console: " + j.Console);
                        }
                        Console.WriteLine("Aperte qualquer tecla para continuar");
                        Console.ReadKey();
                        break;
                    case 6: //Listar Console
                        Console.WriteLine("Listar todos os jogos por console");
                        Console.Write("Informe o Console PS4 [0], PS5 [1], Switch [2], Xbox 360 [3], Xbox One [4], PC [5], Outro [6]: ");
                        TipoConsole console = (TipoConsole)Convert.ToInt32(Console.ReadLine());
                        lista = listadejogos.ListarPorConsole(console);

                        foreach (var j in lista)
                        {
                            Console.Write("Id: " + j.Id);
                            Console.Write(" - Nome: " + j.Nome);
                            Console.Write(" - Descricao: " + j.Descricao);
                            Console.Write(" - Genero: " + j.Genero);
                            Console.WriteLine(" - Console: " + j.Console);
                        }
                        Console.WriteLine("Aperte qualquer tecla para continuar");
                        Console.ReadKey();
                        break;
                    case 7: //Listar todos os jogos
                        Console.WriteLine("Listar todos os jogos");
                        foreach (var j in listadejogos.Jogos)
                        {
                            Console.Write("Id: " + j.Id);
                            Console.Write(" - Nome: " + j.Nome);
                            Console.Write(" - Descricao: " + j.Descricao);
                            Console.Write(" - Genero: " + j.Genero);
                            Console.WriteLine(" - Console: " + j.Console);
                        }
                        Console.WriteLine("Aperte qualquer tecla para continuar");
                        Console.ReadKey();
                        break;
                }
            }
        }
}

Super dicas

Quer aprender muito mais sobre programação? Então se inscreva no curso Programação Orientada a Objetos utilizando a linguagem C#.

Se inscreva em nosso canal e compartilhe as matérias que gostar com os seus colegas.

Participe dos nossos grupos de estudos do Facebook e Telegram.

Aproveite também e venha fazer parte do nosso clube de vantagens e ter acesso exclusivo a vídeos, tutoriais, cursos e muito mais.

Clique no link para se tornar um membro do dfilitto – clube de vantagens e ter acesso a todos os benefícios do nosso clube.

About the author

Danilo Filitto

Mestre em Ciência da Computação pela Universidade Estadual de Maringá - UEM, Pós-Graduado em Redes de Computadores e Comunicação de Dados pela Universidade do Estado do Paraná - UEL, Bacharel em Ciência da Computação pela Universidade do Oeste Paulista - UNOESTE.

Atuo na área acadêmica como professor desde 2006. Atualmente leciono na UNOESTE (Universidade do Oeste Paulista), no SENAC (Serviço Nacional de Aprendizagem Comercial) e possuo vários cursos na Udemy (https://www.udemy.com/user/danilo-filitto/).

Além disso, sou o CEO dos sites https:www.dfilitto.com.br e https:www.makeindiegames.com.br

Você também pode me encontrar no YouTube por meio do endereço https://www.youtube.com/danilofilittoppr

Inscreva-se para receber em seus e-mais as notícias do nosso site

Quer aprender a programar?