Sunteți pe pagina 1din 5

Ministerul Educaiei al Republicii Moldova

Universitatea Tehnic a Moldovei


Facultatea Calculatoare, Informatic i Microelectronic

RAPORT
Lucrare de laborator Nr.3
La disciplina: Medii Interactive De Dezvoltare Produse Soft
Tema: Crearea i citirea documentelor XML n limbajul C#

A efectuat:

st. gr. TI-122


uiu I.

A verificat:

lect.univ.
Cojocaru S.

Chiinu 2014

Scopul lucrrii:
Studierea tehnicilor de creare i citire a documentelor XML n limbajul C# i
implimentarea lor.

De implimentat urmtoarele sarcini:


De implimentat o aplicaie desktop Convertor Valutar. Funcionalitile acestei
aplicaii trebuie s fie aproximativ identice cu aplicaia web de pe adresa web
http://www.curs.md.
a) afiarea cursului valutar ale valutelor principale;
b) convertor de valut;
c) graficul de evaluare a valutelor pe un termen
d) citirea datelor din XML de pe adresa web

Listing-ul programului:
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace midps5
{
// Structura pentru pastrarea informatiilor despre o valuta
struct Valute
{
public string Name; // Denumirea valutei
public double Nominal, Value; // Nominalul si valoarea
public Valute(string Name, double Nominal, double Value)
{
this.Name = Name;
this.Nominal = Nominal;
this.Value = Value;
}
}
// Clasa utila pentru obtinerea si prelucrarea informatiilor valutare
class ValuteInformation
{
private string date; // Data pentru care este obtinuta informatia despre valute
private Dictionary<string, Valute> ValuteInfo = new Dictionary<string, Valute>(); // Informatiile
despre valute
private bool error = false; // Daca nu a putut fi obtinuta informatia de pe server se va schimba in
true
// Constructorul
public ValuteInformation(string date)
{
// Seteaza data
this.date = date;

// Obtine informatiile despre valute


GetValuteInfo();
}
// Obtine in format XML de pe serverul bnm.md informatiile depsre valute
private void GetValuteInfo()
{
// URL-ul de unde se extrag informatiile in format XML
String URLString = "http://bnm.md/md/official_exchange_rates?get_xml=1&date=" + date;
String CharCode = "";
Valute valute = new Valute("Leu moldovenesc", 1, 1);
// Obtinerea informatiilor din XML
try
{
using (XmlReader reader = XmlReader.Create(URLString))
{
// Adaugam valuta MDL cu denumirea "Leu moldovenesc", nominalul 1 si valoarea 1
// pentru a nu avea un caz aparte ce trebuie verificat atunci cand convertim dintr-o
valuta in alta
ValuteInfo.Add("MDL", valute);
// Citim informatiile din XML
while (reader.Read())
{
if (reader.IsStartElement())
{
switch (reader.Name)
{
case "CharCode":
reader.Read();
CharCode = reader.Value;
break;
case "Name":
reader.Read();
valute.Name = reader.Value;
break;
case "Nominal":
reader.Read();
valute.Nominal = Double.Parse(reader.Value, CultureInfo.InvariantCulture);
break;
case "Value":
reader.Read();
valute.Value = Double.Parse(reader.Value, CultureInfo.InvariantCulture);
break;
}
}
else if (reader.Name == "Valute" && reader.NodeType == XmlNodeType.EndElement)
{
ValuteInfo.Add(CharCode, valute);
}
}

}
}
catch
{
error = true;
}

// Verifica daca a fost o eroare la citirea informatiilor din XML


public bool isError()
{
return error;

}
// Verifica daca o valuta cu simbolul dat ("EUR" de ex.) exista
public bool ValuteExists(string CharCode)
{
return ValuteInfo.ContainsKey(CharCode);
}
// Obtine numele valutei cu simbolul dat (Pentru "EUR" se va obtine "Euro" de ex.)
public string GetName(string CharCode)
{
if (!error && ValuteExists(CharCode))
{
return ValuteInfo[CharCode].Name;
}
return "";
}
// Obtine nominalul unei valute (pentru cate unitati ale valutei este calculata valoarea in lei
moldovenesti)
public double GetNominal(string CharCode)
{
if (!error && ValuteExists(CharCode))
{
return ValuteInfo[CharCode].Nominal;
}
return 0.0;
}
// Obtine valoarea in lei moldovenesti a nominalului specificat a unei valute
public double GetValue(string CharCode)
{
if (!error && ValuteExists(CharCode))
{
return ValuteInfo[CharCode].Value;
}
return 0.0;
}
// Obtine lista de simboluri ale valutelor ("MDL", "EUR", "USD", ...)
public List<string> GetCharCodes()
{
return new List<string>(ValuteInfo.Keys);
}
// Converteste o valoare a unei valute in alta valuta si returneaza rezultatul conversiei
public double Convert(double FromValue, string FromCharCode, string ToCharCode)
{
if (!ValuteExists(FromCharCode) || !ValuteExists(ToCharCode)) return 0.0;
return ValuteInfo[ToCharCode].Nominal * ValuteInfo[FromCharCode].Value /
ValuteInfo[ToCharCode].Value * FromValue / ValuteInfo[FromCharCode].Nominal;
}
}
}

Rezultatele Programului:

Concluzie:
n urma efectuarii lucrarii de laborator,am asimilat noi deprinderi de elaborare a
aplicatiilor cu ajutorul mediului de dezvoltare Microsoft Visual Studio 2013 .Prin
procesul algoritmizrii i a procedeelor de scriere/citire, modificare a datelor i
utilizarea construciilor elementare a limbajului C#, anume prelucrrii fiierelor XML,
fiind conectat la un server web, i accesnd cursurile valutare dup data dorit, s-a
elaborat o aplicaie WINDOWS,un convertor valutar.