Автор работы: Пользователь скрыл имя, 15 Декабря 2013 в 14:22, лабораторная работа
Завдання
Розробити функціонал що дозволить користувачеві зберігати введені дані в XML файлах та видаляти дані з них.
Національний технічний університет України
«Київський політехнічний інститут»
Факультет інформатики та обчислювальної техніки
Кафедра АУТС
Лабораторна работа № 5 «XML серіалізація»
З дисципліни «Програмування .NET»
Тема: Електронний книжковий магазин (User, Book, Deal, Sample, Author, Genre, AuthorofBook)
Виконав: студент групи ІА-22 Старушик Артем Миколайович Дата здачі 03.12.2013 Захищено з балом ___________ |
Перевірив: асистент кафедри АУТС Хмелюк Володимир Сергійович |
Київ 2013
Завдання
Розробити функціонал що дозволить
користувачеві зберігати
Лістинг програми
Program.cs
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.
Application.
Application.Run(new FormEnter());
Author.SaveData();
AuthorsOfBook.SaveData();
Book.SaveData();
Deal.SaveData();
Sample.SaveData();
User.SaveData();
}
}
FormEnter
private void FormEnter_Load(object sender, EventArgs e)
{
Author.LoadData();
AuthorsOfBook.LoadData();
Book.LoadData();
Deal.LoadData();
Sample.LoadData();
User.LoadData();
Genre.LoadData();
}
Клас Saver<T>
[DataContract]
public class Saver<T>
where T : class
{
static public Dictionary<Guid, T> LoadData(string adr)
{
DataContractSerializer s = new DataContractSerializer(typeof(
XmlReader r = XmlReader.Create(adr);
Dictionary<Guid, T> obj = (Dictionary<Guid, T>)s.ReadObject(r);
r.Close();
return obj;
}
static public void SaveData(Dictionary<Guid, T> list, string adr)
{
DataContractSerializer s = new DataContractSerializer(typeof(
XmlWriter w = XmlWriter.Create(adr);
s.WriteObject(w, list);
w.Close();
}
}
Клас Author
[DataContract]
public class Author
{
[DataMember]
public static Dictionary<Guid, Author> Items = new Dictionary<Guid, Author>();
static string adress = @"c:\Author.xml";
private DateTime _dateOfBirth;
private DateTime _dateOfDeath;
private Guid _prefGenre;
[DataMember]
public Guid Id
{
get; private set;
}
public List<Book> Books
{
get
{
List<Book> a = new List<Book>();
foreach (AuthorsOfBook temp in AuthorsOfBook.Items.Values)
{
if (temp.Author == this) { a.Add(temp.Book); }
}
return a;
}
}
[DataMember]
public string Name
{
get;set;
}
[DataMember]
public string Surname
{
get;set;
}
[DataMember]
public DateTime DateOfBirth{
get
{
return _dateOfBirth;
}
set
{
if (value <= DateTime.Now)
{
_dateOfBirth = value;
}
}
}
[DataMember]
public DateTime DateOfDeath
{
get
{
return _dateOfDeath;
}
set
{
if (value <= DateTime.Today)
{
_dateOfDeath = value;
}
}
}
public Genre PrefGenre
{
get { return Genre.Items[_prefGenre]; }
set { _prefGenre = value.Id; }
}
[DataMember]
public string ShortBiography
{
get;set;
}
[DataMember]
public string Tags { get; set; }
public Author(string name, string surname)
{
Name = name;
Surname = surname;
Id = Guid.NewGuid();
}
public void SetPresGenre()
{
var query = (from str in Books
group str by str.Genre into uStr
orderby uStr.Count()
select uStr.Key).Take(1);
PrefGenre = query.First();
}
public static void SortByName()
{
Items = (from entry in Items orderby entry.Value.Name ascending select entry)
.ToDictionary(pair => pair.Key, pair => pair.Value);
}
public static void SortByData()
{
Items = (from entry in Items orderby entry.Value.DateOfBirth ascending select entry)
.ToDictionary(pair => pair.Key, pair => pair.Value);
}
public List<string> ListTags()
{
return Tags.Split(new Char[] { ',', ' ' }, StringSplitOptions.
}
public override string ToString()
{
return Name + " " + Surname;
}
static public void LoadData()
{
Author.Items = Saver<Author>.LoadData(Author.
}
static public void SaveData()
{
Saver<Author>.SaveData(Author.
}
}
Результат
Висновок
В даній лабораторній роботі я реалізував функціонал, що дозволить користувачеві зберігати данні в XML файлах, та зчитувати данні з них.