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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать файл)

       Рисунок 4 - Окно «Информационный материал»

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

       Для редактирования информационного материала  необходимо в окне «Информационные материалы» нажать кнопку 4, после чего появится окно пользовательского интерфейса «Редактирование информационного материала». Окно представлено на рисунке 5.

       В окне имеется возможность редактирования соответствующих текстовых полей  и выбора нового изображения для  информационного материала. Для  подтверждения сделанных изменений  необходимо нажать кнопку OK.

       Рисунок 5 - Окно «Редактирование информационного материала»

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

       Для добавления информационного материала  необходимо в окне «Информационные  материалы» нажать кнопку 5, после чего появится окно пользовательского интерфейса «Добавление информационного материала». Окно представлено на рисунке 6.

       В окне имеется возможность заполнения соответствующих текстовых полей  и выбора изображения для информационного  материала. Для подтверждения добавления нового информационного материала  необходимо нажать кнопку OK.

       Рисунок 6 - Окно «Добавление информационного  материала»

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

       При щелчке по кнопке 2 окна пользовательского  интерфейса «Категории информационных материалов», представленного на рисунке 2, появляется окно пользовательского  интерфейса «Фильтрация информационных материалов», показанное на рисунке 7.

       Рисунок 7 - Окно «Фильтрация информационных материалов»

       Основные  элементы окна, выделенные на рисунке  прямоугольниками:

    1. Область, в которой задаются параметры фильтрации информационных материалов.
    2. Текстовое поле, в котором можно задать часть названия или полное название информационного материала.
    3. Параметр фильтрации, определяющий такой критерий фильтрации, как «Рейтинг» или «Популярность». «Рейтинг» - это средняя оценка пользователями материала. «Популярность» - это количество просмотров пользователями материала.
    4. Поле, в котором задается количество выводимых в результате фильтрации записей. Введенный по умолчанию 0 означает, что нужно выводить все записи фильтрации.
    5. Направление сортировки: начиная с лучших (стрелка на зеленом фоне) или начиная с худших (стрелка на красном фоне) (по «Рейтингу» или «Популярности»).
    6. Дата публикации позволяет задать календарным период, за который он хочет просмотреть материалы.
    7. Кнопка фильтрации информационных материалов по заданным параметрам.
    8. Область, в которой отображаются результаты фильтрации.

       Все кнопки окон имеют всплывающие подсказки, позволяющий пользователю быстро освоить  интерфейс.

 

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

 

       В результате объектно-реляционного отображения (маппинга) (object-relational mapping, ORM) по средствам ADO.NET Entity Framework сформировалась объектная модель, представленная на рисунке 7.

       Рисунок 7 - Объектная модель приложения

       Запросы к БД осуществлялись уже не напрямую, а через используемый ORM с применением LINQ to Entities (Language-Integrated Query).

       Для взаимодействия с БД в приложении были написаны следующие запросы:

    • получение категорий:

         from c in _entities.Categories

      where categoryId == 0 ? (c.ParentCategory == categoryId || c.ParentCategory == null) : (c.ParentCategory == categoryId)

           select c

    • получение информационных материалов:

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

      where im.Category.ID_Category == categoryId

      select im

    • получение информационного материала:

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

      where im.ID_InfoMaterial == materialId

      select im).First()

    • многопараметрический запрос фильтрации информационных материалов:

      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);

       Все остальные операции, помимо select, обеспечиваются за счет ORM, свойства DataSource элемента управления GridControl и технологии DataBindings, реализованной в WPF (Windows Presentation Foundation).

 

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

App.xaml

<Application x:Class="WpfRDB.App"

   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:Core="clr-namespace:DevExpress.Wpf.Core;assembly=DevExpress.Wpf.Core.v9.3" StartupUri="CategoriesWindow.xaml">

    <Application.Resources>

        <ResourceDictionary>

            <DataTemplate x:Key="DetailCoreTemplate">

                <Core:MeasurePixelSnapper>

                    <Grid>

                        <Grid.RowDefinitions>

                            <RowDefinition Height="4" />

                            <RowDefinition Height="Auto" />

                            <RowDefinition Height="4" />

                        </Grid.RowDefinitions>

                        <Grid.ColumnDefinitions>

                            <ColumnDefinition Width="4" />

                            <ColumnDefinition Width="Auto"/>

                            <ColumnDefinition Width="12"/>

                            <ColumnDefinition/>

                        </Grid.ColumnDefinitions>

                        <Border Grid.Column="1" Grid.Row="1" BorderBrush="Black" BorderThickness="1">

                            <Image Source="{Binding DataContext.BitmapSource}" Height="128" Width="128" Name="imgInfoMat" Stretch="Fill" HorizontalAlignment="Left" VerticalAlignment="Top"/>

                        </Border>

                        <Grid Grid.Column="3" Grid.Row="1">

                            <Grid.ColumnDefinitions>

                                <ColumnDefinition Width="Auto" MinWidth="125" />

                                <ColumnDefinition Width="12"/>

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