Електронний книжковий магазин

Автор работы: Пользователь скрыл имя, 15 Декабря 2013 в 14:22, лабораторная работа

Краткое описание

Завдання
Розробити функціонал що дозволить користувачеві зберігати введені дані в XML файлах та видаляти дані з них.

Прикрепленные файлы: 1 файл

Лаб5.docx

— 240.48 Кб (Скачать документ)

Національний технічний  університет України

«Київський політехнічний інститут»

Факультет інформатики та обчислювальної техніки

Кафедра АУТС

 

 

 

 

 

 

 

 

 

 

 

Лабораторна работа № 5 «XML серіалізація»

З дисципліни «Програмування .NET»

Тема: Електронний книжковий магазин (User, Book, Deal, Sample, Author, Genre, AuthorofBook)

 

 

 

 

 

 

 

Виконав:

студент групи ІА-22

Старушик Артем Миколайович

Дата здачі 03.12.2013

Захищено з балом  ___________

Перевірив:

асистент кафедри АУТС

Хмелюк Володимир Сергійович




 

 

 

 

 

 

 

 

 

 

 

 

Київ 2013

 

 Завдання

Розробити функціонал що дозволить  користувачеві зберігати введені  дані в  XML файлах та видаляти дані з них.

 

Лістинг програми

Program.cs

static class Program

    {

        /// <summary>

        /// Главная точка входа для приложения.

        /// </summary>

        [STAThread]

        static void Main()

        {

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

            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(Dictionary<Guid, T>));

            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(Dictionary<Guid, T>));

            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.RemoveEmptyEntries).ToList();

        }     

        public override string ToString()

        {

            return Name + " " + Surname;

 

        }

 

 

        static public void LoadData()

        {

            Author.Items = Saver<Author>.LoadData(Author.adress);

        }

 

        static public void SaveData()

        {

            Saver<Author>.SaveData(Author.Items, Author.adress);

        }      

      

    }

 

 

 

Результат

 

 

Висновок

В даній лабораторній роботі я реалізував функціонал, що дозволить користувачеві зберігати данні в XML файлах, та зчитувати данні з них.


Информация о работе Електронний книжковий магазин