Автор работы: Пользователь скрыл имя, 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
Рисунок 4 - Окно «Информационный материал»
Для редактирования информационного материала необходимо в окне «Информационные материалы» нажать кнопку 4, после чего появится окно пользовательского интерфейса «Редактирование информационного материала». Окно представлено на рисунке 5.
В
окне имеется возможность
Рисунок 5 - Окно «Редактирование информационного материала»
Для
добавления информационного материала
необходимо в окне «Информационные
материалы» нажать кнопку 5, после чего
появится окно пользовательского интерфейса
«Добавление информационного
В
окне имеется возможность заполнения
соответствующих текстовых
Рисунок 6 - Окно «Добавление информационного материала»
При щелчке по кнопке 2 окна пользовательского интерфейса «Категории информационных материалов», представленного на рисунке 2, появляется окно пользовательского интерфейса «Фильтрация информационных материалов», показанное на рисунке 7.
Рисунок 7 - Окно «Фильтрация информационных материалов»
Основные элементы окна, выделенные на рисунке прямоугольниками:
Все кнопки окон имеют всплывающие подсказки, позволяющий пользователю быстро освоить интерфейс.
В результате объектно-реляционного отображения (маппинга) (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.
where im.Category.ID_Category == categoryId
select im
(from im in _entities.InfoMaterials.
where im.ID_InfoMaterial == materialId
select im).First()
var infoMaterials = from im in _entities.InfoMaterials.
where (im.PublishDate >= filter.DateFrom && im.PublishDate <= filter.DateTo)
select im;
if (filter.NumberOfRows <= 0)
filter.NumberOfRows = int.MaxValue;
if (!string.IsNullOrEmpty(filter.
infoMaterials = infoMaterials.Where(im
=> im.Name.Contains(filter.Name))
if (filter.ByRating)
{
if (filter.SortDirection == SortDirectionType.Top)
infoMaterials =
infoMaterials.
else
infoMaterials =
infoMaterials.OrderBy(im => im.Rating).Take(filter.
}
if (filter.ByViewCount)
if (filter.SortDirection == SortDirectionType.Top)
infoMaterials =
infoMaterials.
else
infoMaterials =
infoMaterials.OrderBy(im => im.ViewCount).Take(filter.
Все остальные операции, помимо select, обеспечиваются за счет ORM, свойства DataSource элемента управления GridControl и технологии DataBindings, реализованной в WPF (Windows Presentation Foundation).
<Application x:Class="WpfRDB.App"
xmlns="http://schemas.
xmlns:x="http://schemas.
<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>