Witam. Piszę program, w którym między innymi obliczam średnią. Chce żeby zapisywać klasy, ale coś mi nie działa. Nie wyskakuje błąd ale podczas wczytywania uczniowie się wczytywają a oceny nie. Proszę o pomoc:
Save:
if (Uczen.Uczniowe.Count != 0)
{
XDocument xml = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("Uczen",
from Uczen in Uczen.Uczniowe
select new XElement("Uczen",
new XElement("Imie", Uczen.Imie),
new XElement("Nazwisko", Uczen.Nazwisko),
new XElement("Czy", Uczen.Czy),
new XElement("Ocena",
from Mark in Uczen.Oceny
select new XElement("Ocena",
new XAttribute("Mark", Mark.Mark),
new XAttribute("Srednia", Mark.Srednia * 10),
new XElement("Komentarz", Mark.Komentarz),
new XAttribute("Data", Mark.Data),
new XElement("Czy",Mark.Czy)))
)));
xml.Save(path);
path.Close();
}
Odczyt:
XDocument xml = XDocument.Load(path);
Uczen.Uczniowe = (
from Uczen in xml.Root.Elements("Uczen")
select new Uczen(
Uczen.Element("Imie").Value,
Uczen.Element("Nazwisko").Value,
Convert.ToBoolean(Uczen.Element("Czy").Value),
new List<Ocena>(
from Oc in xml.Root.Elements("Ocena")
select new Ocena(
Oc.Attribute("Mark").Value,
Oc.Attribute("Srednia").Value,
new Label(),
Convert.ToDateTime(Oc.Attribute("Data").Value),
Oc.Element("Komentarz").Value,
Convert.ToBoolean(Oc.Element("Czy").Value))
).ToList<Ocena>())
).ToList<Uczen>();
Klasa Uczeń:
public class Uczen
{
public string Imie;
public bool Czy;
public static List<Uczen> Uczniowe = new List<Uczen>();
public int Id;
public string Nazwisko;
public GroupBox Pole;
public List<Ocena> Oceny;
public Uczen(string imie,string nazwisko, bool czy,List<Ocena> li)
{
Czy = czy;
Imie = imie;
Nazwisko = nazwisko;
Pole = new GroupBox();
Oceny = new List<Ocena>();
Uczniowe.Add(this);
Id = 1+Uczniowe.IndexOf(this);
Oceny = li;
}
}
Klasa Ocena:
public class Ocena
{
public double Mark;
public bool Czy;
public double Srednia;
public Label Label;
public string Komentarz;
public DateTime Data;
public Ocena(string mark, string srednia,Label label, DateTime data, string komentarz,bool czy)
{
Czy = czy;
srednia.Replace(".", ",");
mark.Replace(".", ",");
double.TryParse(mark, out Mark);
Srednia = Convert.ToDouble(srednia);
Srednia /= 10;
Label = label;
Komentarz = komentarz;
Data = data;
}
public static Ocena Szukaj_Label(Label find, List<Ocena> lista)
{
Ocena kon = null;
foreach(Ocena oc in lista)
{
if(oc.Label==find)
{
kon = oc;
}
}
return kon;
}
public static Ocena Szukaj(double ocena, double srednia, string kom, List<Ocena> lista)
{
Ocena kon = null;
foreach (Ocena oc in lista)
{
if (oc.Mark==ocena&&oc.Srednia==srednia&&oc.Komentarz==kom)
{
kon = oc;
}
}
return kon;
}
}