Проектирование базы данных

Автор работы: Пользователь скрыл имя, 11 Сентября 2011 в 23:00, курсовая работа

Описание работы

Практическое задание на тему «Проектирование БД» подразумевает выполнение следующих задач:
определение объектов и их характеристик, которые необходимо хранить в БД (определение исходных данных для проектирования структуры БД);
разработка структуры БД;
разработка уровня доступа к данным;
создание пользовательского интерфейса для работы с БД.

Содержание работы

1. Формулировка задания 3

2. Описание БД 4

3. Описание интерфейса программы 7

3.1. Окно «Категории информационных материалов» 7

3.2. Окно «Информационные материалы» 8

3.3. Окно «Информационный материал» 9

3.4. Окно «Редактирование информационного материала» 10

3.5. Окно «Добавление информационного материала» 11

3.6. Окно «Фильтрация информационных материалов» 12

4. Перечень запросов LINQ to Entities, используемых в приложении 14

5. Листинг программы 16

App.xaml 16

CategoriesWindow.xaml 17

CategoriesWindow.xaml.cs 19

InfoMaterialAddEditWindow.xaml 22

InfoMaterialAddEditWindow.xaml.cs 23

InfoMaterialsFilterWindow.xaml 25

InfoMaterialsFilterWindow.xaml.cs 27

InfoMaterialsWindow.xaml 29

InfoMaterialsWindow.xaml.cs 30

InfoMaterialWindow.xaml 32

InfoMaterialWindow.xaml.cs 34

Convertor.cs 35

Filter.cs 36

Category.cs 38

CategoryRepository.cs 38

InfoMaterial.cs 40

InfoMaterialRepository.cs 40

InfoMaterialsDataManager.cs 42

Файлы: 1 файл

Проектирование базы данных.docx

— 625.74 Кб (Скачать файл)

        {

            _entities.DeleteObject(category);

        }

 

        public void SaveChanges()

        {

            _entities.SaveChanges();

        }

    }

}

InfoMaterial.cs

using System.Windows.Media.Imaging;

using ASDC.Model.Classes;

 

namespace ASDC.Model.InfoMaterials

{

    public partial class InfoMaterial

    {

        private BitmapImage _bitmapSource;

        public BitmapImage BitmapSource

        {

            get { return _bitmapSource; }

            set

            {

                _bitmapSource = value;

                Image.Image = Convertor.BitmapSourceToBytes(_bitmapSource);

            }

        }

    }

}

InfoMaterialRepository.cs

using System.Collections.Generic;

using System.Linq;

using ASDC.Model.Classes;

 

namespace ASDC.Model.InfoMaterials

{

    public class InfoMaterialRepository

    {

        private ASDCEntities _entities;

 

        public InfoMaterialRepository(ASDCEntities entities)

        {

            _entities = entities;

        }

 

        public List<InfoMaterial> GetInfoMaterialsByFilter(Filter filter)

        {

            var infoMaterials = from im in _entities.InfoMaterials.Include("Image")

                                 where (im.PublishDate >= filter.DateFrom && im.PublishDate <= filter.DateTo)

                                 select im;

            if (filter.NumberOfRows <= 0)

                filter.NumberOfRows = int.MaxValue;

 

            if (!string.IsNullOrEmpty(filter.Name))

                infoMaterials = infoMaterials.Where(im => im.Name.Contains(filter.Name)).Take(filter.NumberOfRows);

 

            if (filter.ByRating)

            {

                if (filter.SortDirection == SortDirectionType.Top)

                    infoMaterials = infoMaterials.OrderByDescending(im => im.Rating).Take(filter.NumberOfRows);

                else

                    infoMaterials = infoMaterials.OrderBy(im => im.Rating).Take(filter.NumberOfRows);

            }

         

            if (filter.ByViewCount)

                if (filter.SortDirection == SortDirectionType.Top)

                    infoMaterials = infoMaterials.OrderByDescending(im => im.ViewCount).Take(filter.NumberOfRows);

                else

                    infoMaterials = infoMaterials.OrderBy(im => im.ViewCount).Take(filter.NumberOfRows);

           

            return ConvertInfoMaterialImageToBitmapSource(infoMaterials.ToList());

        }

 

        public List<InfoMaterial> GetShortInfoMaterialsByCategory(long categoryId)

        {

            var infoMaterials = (from im in _entities.InfoMaterials.Include("Image").Include("Comments")

                                 where im.Category.ID_Category == categoryId

                                 select im).ToList();

           

            return ConvertInfoMaterialImageToBitmapSource(infoMaterials);

        }

 

        private List<InfoMaterial> ConvertInfoMaterialImageToBitmapSource(List<InfoMaterial> infoMaterials)

        {

            foreach (var infoMaterial in infoMaterials)

            {

                if (infoMaterial.Image != null)

                    infoMaterial.BitmapSource = Convertor.ByteToBitmapSource(infoMaterial.Image.Image);

            }

            return infoMaterials;

        }

 

        public InfoMaterial GetInfoMaterial(long materialId)

        {

            var infoMaterial =  (from im in _entities.InfoMaterials.Include("Image").Include("Comments")

                                where im.ID_InfoMaterial == materialId

                                select im).First();

            if (infoMaterial.Image != null)

                infoMaterial.BitmapSource = Convertor.ByteToBitmapSource(infoMaterial.Image.Image);

            return infoMaterial;

        }

 

        public InfoMaterial InsertInfoMaterial(InfoMaterial material)

        {

            _entities.AddToInfoMaterials(material);

            if (material.Image != null)

                _entities.AddToInfoMat_Image(material.Image);

            return material;

        }

 

        public InfoMaterial InsertComments(InfoMaterial material)

        {

            foreach (var comment in material.Comments.ToList())

            {

                _entities.AddToComments(comment);

            }

 

            return material;

        }

 

        public void DeleteInfoMaterial(InfoMaterial material)

        {

            _entities.DeleteObject(material);

        }

 

        public void SaveChanges()

        {

            _entities.SaveChanges();

        }

    }

InfoMaterialsDataManager.cs

namespace ASDC.Model.InfoMaterials

{

    public class InfoMaterialsDataManager

    {

        private ASDCEntities _entities;

        private CategoryRepository _categoryRepository;

        private InfoMaterialRepository _infoMaterialRepository;

 

        public InfoMaterialsDataManager()

        {

            _entities = new ASDCEntities();

        }

 

        public CategoryRepository CategoryRepository

        {

            get

            {

                if (_categoryRepository == null)

Информация о работе Проектирование базы данных