Curso de Programação C#

William Ivanski

Lista de Exercícios Módulo III Capítulo 4 (Respostas)


1) Cadastro de aluno. Solicite ao usuário os seguintes valores:

Armazene os valores em um banco de dados SQLite chamado alunos.db, com uma única tabela chamada alunos. Se o banco não existir, seu programa deve criá-lo.


2) Cadastro interativo de alunos. Altere o exercício anterior para que o programa fique interativo, isto é, crie um menu de listagem, adição, edição e remoção.


3) Cadastro gráfico de alunos. Altere o exercício anterior para que o programa utilize interface gráfica. O programa deve ser composto de:


4) Cadastro gráfico de alunos com exportar Altere o exercício anterior, incluindo um botão "Excel", que deverá salvar o cadastro completo dos alunos em um arquivo XLSX.


5) Cadastro gráfico de alunos com relatório PDF Altere o exercício anterior, incluindo um botão "PDF", que deverá salvar o cadastro completo dos alunos em um relatório PDF.


6) Cotações. Entre na página oficial de cotações de moedas do Banco Central do Brasil. Faça o download do arquivo CSV contendo as cotações do dia. Crie um banco de dados SQLite chamado cotacoes.db com uma única tabela:

create table cotacoes
{
    dia        text,
    codmoeda   integer,
    tipomoeda  text,
    siglamoeda text,
    taxacompra real,
    taxavenda  real,
    parcompra  real,
    parvenda   real
}

Escreva um programa em C# em modo texto que receba o nome do arquivo CSV como parâmetro e insira todas as cotações na tabela cotacoes. Observe que os números no arquivo CSV estão com separador decimal ',', sendo que para a inserção o separador precisa ser '.'.

Se você quiser deixar seu programa ainda mais completo, inclua no seu banco de dados o cadastro oficial de moedas do Banco Central do Brasil.

using System;

namespace Lista4Exercicio06
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            Spartacus.Database.Generic v_database;
            Spartacus.Utils.ProgressEventClass v_progress;
            Spartacus.Utils.ErrorEventClass v_error;
            Spartacus.Database.Command v_cmd;

            v_database = new Spartacus.Database.Sqlite("../../../databases/cotacoes.db");

            v_progress = new Spartacus.Utils.ProgressEventClass();
            v_progress.ProgressEvent += OnProgress;
            v_error = new Spartacus.Utils.ErrorEventClass();
            v_error.ErrorEvent += OnError;

            // carregando arquivo XLSX para tabela que não existe
            /*v_database.TransferFromFile(
                args[0],
                "cotacoes_excel",
                v_progress,
                v_error
            );*/

            // carregando arquivo CSV para tabela que não existe
            /*v_database.TransferFromFile(
                args[0],
                ";",
                "",
                false,
                System.Text.Encoding.UTF8,
                "cotacoes_tmp", // tabela não existe
                v_progress,
                v_error
            );*/

            // carregando arquivo CSV para tabela que existe
            v_cmd = new Spartacus.Database.Command();
            v_cmd.v_text = "(#col0#,#col1#,#col2#,#col3#,#col4#,#col5#,#col6#,#col7#)";
            v_cmd.AddParameter("col0", Spartacus.Database.Type.STRING);
            v_cmd.AddParameter("col1", Spartacus.Database.Type.INTEGER);
            v_cmd.AddParameter("col2", Spartacus.Database.Type.STRING);
            v_cmd.AddParameter("col3", Spartacus.Database.Type.STRING);
            v_cmd.AddParameter("col4", Spartacus.Database.Type.REAL);
            v_cmd.SetLocale("col4", Spartacus.Database.Locale.EUROPEAN);
            v_cmd.AddParameter("col5", Spartacus.Database.Type.REAL);
            v_cmd.SetLocale("col5", Spartacus.Database.Locale.EUROPEAN);
            v_cmd.AddParameter("col6", Spartacus.Database.Type.REAL);
            v_cmd.SetLocale("col6", Spartacus.Database.Locale.EUROPEAN);
            v_cmd.AddParameter("col7", Spartacus.Database.Type.REAL);
            v_cmd.SetLocale("col7", Spartacus.Database.Locale.EUROPEAN);

            v_database.TransferFromFile(
                args[0],
                ";",
                "",
                false,
                System.Text.Encoding.UTF8,
                "cotacoes", // tabela existe
                "(dia,codmoeda,tipomoeda,siglamoeda,taxacompra,taxavenda,parcompra,parvenda)",
                v_cmd,
                v_progress,
                v_error
            );

            // salvando arquivo XLSX com os dados
            //v_database.TransferToFile("select * from cotacoes", "export_cotacoes.xlsx");
        }

        public static void OnProgress(Spartacus.Utils.ProgressEventClass sender, Spartacus.Utils.ProgressEventArgs e)
        {
            Console.WriteLine("Linhas inseridas até o momento: {0}", e.v_counter);
        }

        public static void OnError(Spartacus.Utils.ErrorEventClass sender, Spartacus.Utils.ErrorEventArgs e)
        {
            Console.WriteLine(e.v_message);
        }
    }
}

7) Cotações com download. Altere o exercício anterior para que seu programa faça o download do arquivo CSV com as cotações do dia.


8) Cotações com download e relatório em PDF. Altere o exercício anterior para que seu programa gere um relatório em PDF com as cotações do dia.


9) Salvar consultas em Excel Crie um programa em modo texto que receba como parâmetro um banco de dados SQLite. Seu programa deve pedir ao usuário que digite uma consulta SQL. Em seguida, seu programa deve executar a consulta no banco de dados, e salvar o resultado da consulta em um arquivo XLSX.


10) Salvar consultas em Excel (gráfico) Crie um programa semelhante ao do exercício anterior, mas com uma interface gráfica. Seu programa deve ter uma janela com os seguintes elementos: