CSharp: AulaDemoDll.NamespaceE.ArmazenadorDeProdutos

From AdonaiMedrado.Pro.Br
Jump to: navigation, search

Classe ArmazenadorDeProdutos

using System;
using System.Data;
 
namespace AulaDemoDll.NamespaceE
{
    public static class ArmazenadorDeProdutos
    {        
        public static void Armazenar(Produto p)
        {
            string arquivo = "produtos.xml";
            DataSet d;
 
            if (System.IO.File.Exists(arquivo))
            {
                d = new DataSet();
                d.ReadXml(arquivo);                                
            }
            else
            {
 
                d = new DataSet("BancoDeProdutos");
                d.Tables.Add("Produto");
                d.Tables[0].Columns.Add("Nome", typeof(string));
                d.Tables[0].Columns.Add("MargemDeLucro", typeof(double));                                               
            }
 
            d.Tables[0].Rows.Add(new object[] { p.Nome, p.MargemDeLucro });
 
            d.WriteXml(arquivo, XmlWriteMode.WriteSchema);
        }
        public static System.Collections.Generic.List<Produto> Retornar()
        {
            System.Collections.Generic.List<Produto> retorno = new
                System.Collections.Generic.List<Produto>();
 
            string arquivo = "produtos.xml";
            DataSet d;
            d = new DataSet();
            d.ReadXml(arquivo);
            foreach (DataRow row in d.Tables[0].Rows)
                retorno.Add(new Produto((string)row["Nome"], (double)row["MargemDeLucro"]));
 
            return retorno;
        }
    }
}

Uso da classe ArmazenadorDeProdutos

using System;
using AulaDemoDll.NamespaceE;
 
namespace AulaDemo
{
    class Program
    {
        static void Main(string[] args)
        {                   
            string nome, sn;
            double margem;
            do
            {
                Console.Write("Digite o nome de um produto: ");
                nome = Console.ReadLine();
 
                Console.Write("Digite uma margem de lucro: ");
                margem = double.Parse(Console.ReadLine());
 
                ArmazenadorDeProdutos.Armazenar(new Produto(nome, margem));
 
                Console.Write("Deseja digitar outro [s/n]? ");
                sn = Console.ReadLine();                
            } while (sn == "s");
 
            Console.WriteLine();
            foreach (Produto p in ArmazenadorDeProdutos.Retornar())
            {
                Console.WriteLine("Produto: " + p.Nome);
                Console.WriteLine("Margem: " + p.MargemDeLucro);
                Console.WriteLine("---------------");
            }
 
            Console.ReadKey();
        }
    }
}