Создание полноценного приложения в среде MS ACCESS
Данные о парах фамилии и имена партнера и партнерши, даты рождения, рост, вес ФИО тренера спортклуб, за который выступает пара Возрастная категория, которой относится пара (дети, юниоры, взрослые) данные о конкурсах, проводимых в текущем спортивном сезоне дата, место проведения конкурса время начала конкурса программа конкурса размеры призов, выплачиваемых победителям результаты выступления… Читать ещё >
Создание полноценного приложения в среде MS ACCESS (реферат, курсовая, диплом, контрольная)
1. Техническое задание
2. Описание предметной области
3. Описание базы данных
3.1 Система таблиц
3.2 Схема данных
3.3 Основные запросы
4. Отчеты
5. Макросы
6. Модули Заключение Список использованной литературы
1. Техническое задание Разработать структуру база данных для учета результатов выступления танцевальных пар на различных конкурсах. В базе данных необходимо хранить следующую информацию:
данные о парах фамилии и имена партнера и партнерши, даты рождения, рост, вес ФИО тренера спортклуб, за который выступает пара Возрастная категория, которой относится пара (дети, юниоры, взрослые) данные о конкурсах, проводимых в текущем спортивном сезоне дата, место проведения конкурса время начала конкурса программа конкурса размеры призов, выплачиваемых победителям результаты выступления спортивных пар оценка по каждому танцу, полученная парой занятое место, которое определяется в соответствии с суммой баллов по всем танцам программы Построить запросы. Формы и отчеты, позволяющие получать следующую информацию:
в каких конкурсах приняла участие та или иная пара
каковы результаты выступления танцевальной пары сумма премиальных, полученных парой за период выступлений (за месяц, квартал, год) стартовые протоколы для судей по каждой возрастной категории, в которой приведены номера, полученные парами при жеребьевке протоколы по каждому танцу программы и итоговый протокол по конкурсу Построить главную форму, позволяющую просматривать информацию по запросам 1−3.
2. Описание предметной области В России в настоящее время проводится всё больше танцевальных конкурсов и фестивалей, как детских, так и взрослых. Сейчас всё популярнее становятся спортивные и современные танцы, однако конкурсы по классическим, а особенно народным танцам проводятся ничуть не реже.
В настоящее время растет количество танцевальных школ и коллективов, количество и программа многих танцевальных конкурсов усложняется, конкурсы проводятся во множество туров, каждый из которых может длиться несколько дней.
В 2002 году Президиум Московской Федерации Спортивного Танца принял решение о кардинальном изменении протоколов соревнований. Предлагалось заменить прежнюю форму протокола, когда на листах размещались списки участников, списки арбитров, списки нарушений и замечаний, на карточную форму, когда каждый элемент из всех списков находится на отдельном листе-карточке.
Некоторое время такая система применялась при проведении соревнований, однако всё же задумываются перейти на компьютерную обработку результатов. Дело в том, что система регистрации и оценки танцоров учитывает множество факторов, начиная от регистрационных книжек танцоров, заканчивая протоколами по каждому танцу программы. Компьютерная обработка значительно бы облегчило бы ввод информации, а также её обработку. Однако введение такой системы — очень сложный и трудоёмкий процесс.
Поэтому, учитывая сложность и разветвленность системы оценки в данной предметной области определим, что реализованная система будет являться системой для предоставления отчетности по различным критериям. Пусть реализованная система будет являться базой статистических данных, необходимых для оценки работы различных танцевальных клубов, успехов отдельных пар и танцоров, а также общей сумме разыгранных призов.
3. Описание базы данных
3.1 Система таблиц Таблица представляет собой набор данных по конкретной теме. Таблицы, лежащие в основе реляционной модели данных, обладают следующими свойствами:
— Каждая строка представляет собой все сведения об одном объекте — записи
— Данные одного столбца имеют одинаковый тип
— Каждый столбец имеет свое имя
— Порядок следования строк не имеет значения В создаваемой базе данных, при помощи конструктора были созданы таблицы:
1. Партнерши
2. Партнеры
3. Пары
4. Конкурсы за сезон
5. Участия в конкурсах
6. Категории
7. Распределение призов
8. Участники (дублер таблицы «Участия в конкурсах»)
Рассмотрим все таблицы по очереди:
Таблица «Партнерши» и таблица «Партнеры»
Обе эти таблицы имеют одинаковую структуру и отличаются лишь тем, что в таблице «Партнерши» указаны девушки, а в «Партнеры» — мальчики. Это сделано для того, чтобы можно было объединить их в пары, т. к. согласно п. 4.6 правил Российского Танцевального Союза (РТК) во всех видах соревнований различных уровней, кроме фестивалей, пары составляют неделимую категорию и партнеры могут выступать только вместе.
Итак, структура таблицы «Партнеры»:
«Код» — числовой, целое, совпадения не допускаются, обязательное;
«Фамилия» — текстовый, обязательное;
«Дата Рождения» — датавремя, маска 00.00.00, обязательное;
«Рост» — числовой, целое, обязательное;
«Вес» — числовой, целое, обязательное;
Вид таблицы в режиме конструктора:
Рисунок 1
Поле «Код» является ключевым, т. е. содержит уникальные, неповторяющиеся данные. Сортировка в таблице происходит по этому полю.
Рисунок 2
Далее — таблица «Партнерши». Как говорилось ранее, она имеет точно такую же структуру и ключевое поле:
«Код» — числовой, целое, совпадения не допускаются, обязательное;
«Фамилия» — текстовый, обязательное;
«Дата Рождения» — датавремя, маска 00.00.00, обязательное;
«Рост» — числовой, целое, обязательное;
«Вес» — числовой, целое, обязательное;
Вид таблицы в режиме конструктора:
Рисунок 3
Рисунок 4
Далее рассмотрим таблицу «Пары». Её вид в конструкторе:
Рисунок 5
Рассмотрим свойства полей:
«Название» — текстовое, обязательное, является ключевым полем
«Партнер» — числовой, является не фамилией, а кодом, обязательное;
«Партнерша» — числовой, является не фамилией, а кодом, обязательное;
«Клуб» — текстовое, обязательное;
«Тренер» — текстовое, обязательное;
«Возраст» — числовое;
«Категория» — текстовое.
Вид заполненной таблицы:
Поле «Название» отражает названием команды в общем списке, оно является ключевым. Поля «Возраст» и «Категория» не являются обязательными для заполнения, т.к. значения этих полей вычисляются с помощью специальных запросов. Осуществление этого механизма происходит благодаря специальной таблице «Категории», в которых каждый возраст относится к определенной категории. Структура её довольно проста:
Эта таблица по полю возраст соединяется с таблицей «Пары» и необходима для автоматического определения категории.
таблица выглядит так:
Таблица 6
Рассмотрим таблицу «Конкурсы за сезон», в которой указаны названия конкурсов, программа, время начала, денежные призы и т. п.
Вид таблицы в конструкторе:
Таблица 7
Рассмотрим поля таблицы:
«Название» — текстовое, обязательное, ключевое поле;
«Дата» — дата/время, маска 00.00.00, кр. формат даты, обязательное;
«Время» — дата/время, маска 99:00;00, кр. формат времени, обязательное;
«Программа» — текстовый, обязательное;
«Первое место» — числовой, денежный, обязательное;
«Второе место» — числовой, денежный, обязательное;
«Третье место» — числовой, денежный, обязательное.
Рассмотрим заполненную таблицу:
Таблица 8
Поле «Название» является ключевым для того, чтобы связать эту таблицу с таблицей «Участия в конкурсах».
Данные в этой таблице продублированы также в таблице «Распределение призов». Это сделано для того, чтобы автоматизировать распределение призов по конкурсов.
Её вид в конструкторе:
Таблица 9
Рассмотрим свойства полей:
«Конкурс» — текстовое, обязательное; «Место" — числовое, обязательное;
«Приз» — числовое, формат денежный, обязательное.
В этой таблице нет ключевых полей, потому что записи могут повторяться. Вид рабочей таблицы представлен далее:
Таблица 10
Как уже говорилось, у нас также имеется таблица «Участия в конкурсах». Она по сути является сводной таблицей, так как содержит наибольшее количество информации во всей баз Рассмотрим также её поля:
«Конкурс» — текстовый, обязательное;
«Команда» — текстовый, обязательное;
«Категория» — текстовый;
«Номер» — числовой, обязательное;
«Танец1» — числовой, обязательное;
«Танец2» — числовой, обязательное;
«Танец3» — числовой, обязательное;
«Сумма» — числовой, по умолчанию равно 0;
«Место" — числовой, обязательное;
«Приз» — числовой, формат денежный, по умолчанию равно 0.
Поле «Конкурс» — название конкурса, «Команда» — название участвующей команды. «Категория» указывает возрастную категорию, которых в международных конкурсах бывает три: ювеналы, юниоры и взрослые, иногда конечно возможны выступления в категории сеньоры (от 35 лет) и гранд синьоры (от 45 лет), однако для упрощения и наглядности будем использовать только 3 основные категории. «Номер» — номер выступления пары, полученный при жеребьевке. «Танец1», «Танец2», «Танец3» — оценки за выступление по каждому танцу. Поле «Сумма» — вычисляемое специальным запросом поле, максимальная сумма соответствует победившей команде. Поле «Место» не является вычисляемым, так как структура таблицы слишком сложна, а вычислить его запросом не представляется возможным, поэтому таблица и носит статистический характер: опрератору необходимо вводить данные вручную. «Приз» — вычисляемее поле, значение которого определяется специальным запросом с помощью таблицы «Распределение призов».
3.2 Схема данных Записи идентифицируются по некоторой уникальной характеристике. Идентификация строки — это свойство, позволяющее однозначно определить объект по значению одного или нескольких полей таблицы. Такой столбец называют первичным ключом таблицы или ключевым полем. Именно эти поля используются для связи таблиц.
В реляционной алгебре различают четыре типа связи между таблицами:
· Связь один-к-одному. Используется для связи одной записи в таблице с одной записью в другой таблице.
· Связь один-ко-многим. Используется для связи одной записи в таблице с несколькими записями в другой таблице.
· Связь многие-к-одному. Связь указывает, что несколько записей одной таблицы связаны с одной записью другой таблицы.
· Связь многие-ко-многим.
Связь таблиц позволяет поддерживать целостность данных. Целостность данных — это правила, регулирующие условия взаимодействия между таблицами и поддерживающие целостность информации. Эти правила сохраняют в неприкосновенности связи между таблицами в системе управления реляционной базой данных. Целостность данных предохраняет данные от изменений, которые нарушают связи между таблицами, и функционирует на основе ключевых полей таблицы.
Рисунок 11. Система запросов.
3.3 Основные запросы
1. Запрос «Участники конкурсов» показывает в каких конкурсах приняла участие та или иная пара.
SQL-запрос:
PARAMETERS Команда Value;
SELECT [Участия в конкурсах]. Команда, [Участия в конкурсах]. Конкурс
FROM [Участия в конкурсах]
WHERE [Участия в конкурсах]. Команда=Команда;
Название команды передается с помощью параметра. Выполненный запрос выглядит так:
Рисунок 12
Запрос «Итоговый» определяет результаты выступления пар на любом конкурсе, где конкурс передается в качестве параметра, а также формирует итоговый отчет.
SQL-запрос:
PARAMETERS Конкурс Value;
SELECT [Участия в конкурсах]. Конкурс, [Участия в конкурсах]. Команда, [Участия в конкурсах]. Категория, [Участия в конкурсах]. Номер, [Участия в конкурсах]. Танец1, [Участия в конкурсах]. Танец2, [Участия в конкурсах]. Танец3, [Участия в конкурсах]. Сумма, [Участия в конкурсах]. Место
FROM [Участия в конкурсах]
WHERE ((([Участия в конкурсах]. Конкурс)=Конкурс))
ORDER BY [Участия в конкурсах]. Место;
2. Запросы «ПризыПоМесяцам», «ПризыПоКварталам, «ПризыПоГоду» показывают сумму премиальных баллов, полученных парой за соответствующий период времени.
SQL-запрос «ПризыПоМесяцам»:
TRANSFORM Sum ([Участия в конкурсах]. Приз) AS [Sum-Приз]
SELECT [Участия в конкурсах]. Команда, Sum ([Участия в конкурсах]. Приз) AS [Итоговое значение Приз]
FROM [Конкурсы за сезон] INNER JOIN [Участия в конкурсах] ON [Конкурсы за сезон]. Название = [Участия в конкурсах]. Конкурс
GROUP BY [Участия в конкурсах]. Команда
PIVOT «Месяц «& DatePart («m» ,[Конкурсы за сезон]. Дата]);
SQL-запрос «ПризыПоКварталам»
TRANSFORM Sum ([Участия в конкурсах]. Приз) AS [Sum-Приз]
SELECT [Участия в конкурсах]. Команда, Sum ([Участия в конкурсах]. Приз) AS [Итоговое значение Приз]
FROM [Конкурсы за сезон] INNER JOIN [Участия в конкурсах] ON [Конкурсы за сезон]. Название = [Участия в конкурсах]. Конкурс
GROUP BY [Участия в конкурсах]. Команда
PIVOT «Кв «& DatePart («q» ,[Конкурсы за сезон]. Дата]);
SQL-запрос «ПризыПоГоду»
TRANSFORM Sum ([Участия в конкурсах]. Приз) AS [Sum-Приз]
SELECT [Участия в конкурсах]. Команда, Sum ([Участия в конкурсах]. Приз) AS [Итоговое значение Приз]
FROM [Конкурсы за сезон] INNER JOIN [Участия в конкурсах] ON [Конкурсы за сезон]. Название=[Участия в конкурсах]. Конкурс
GROUP BY [Участия в конкурсах]. Команда
PIVOT «Год «& DatePart («yyyy» ,[Конкурсы за сезон]. Дата]);
Как видно, все три вида запроса являются перекрестными, соответственно их вид будет схожим:
Рисунок 13
3. Запрос «Стартовые», который формирует стартовые протоколы для судей по конкурсу (передается в качестве параметра) по возрастным категориям.
SQL-запрос:
PARAMETERS Конкурс Value;
SELECT [Участия в конкурсах]. Конкурс, [Участия в конкурсах]. Команда, [Участия в конкурсах]. Категория, [Участия в конкурсах]. Номер
FROM [Участия в конкурсах]
WHERE ((([Участия в конкурсах]. Конкурс)=Конкурс))
ORDER BY [Участия в конкурсах]. Категория, [Участия в конкурсах]. Номер;
Рисунок 14
Вспомогательные запросы в данной работе необходимы для автоматизации работы программы с помощью механизма запросов на обновление.
1. Запрос «Вычисление возраста» вычисляет возраст пары, чтобы отнести её к той или иной категории.
В правилах РТС указано:
«2. Принадлежность участника к возрастной группе определяется по дате рождения.
3. Возрастная категория определяется во возрасту партнера"
Поэтому SQL-запрос выглядит так:
UPDATE Партнеры INNER JOIN Пары ON Партнеры. Код = Пары. Партнер SET Пары. Возраст = ((Date ()-[Партнеры]. ДатаРождения])365);
Этим запросом обновляется содержимое таблицы Пары и в поле возраст записывается соответствующее число:
Рисунок 15
2. Запрос «Категория» и «Возраст в участ» записывают возрастную категорию в таблицы «Пары» и «Участия в конкурсах» соответственно Их структура приблизительно одинакова. SQL-запрос «Категория»:
UPDATE Категории INNER JOIN Пары ON Категории. Возраст = Пары. Возраст SET Пары. Категория = [Категории]. Категория];
Табличный вид:
Рисунок 16
SQL-запрос «Возраст в участ»:
UPDATE [Конкурсы за сезон] INNER JOIN (Пары INNER JOIN [Участия в конкурсах] ON Пары. Название=[Участия в конкурсах]. Команда) ON [Конкурсы за сезон]. Название=[Участия в конкурсах]. Конкурс SET [Участия в конкурсах]. Категория = [Пары]. Категория];
Табличный вид:
Рисунок 17
3. Запрос «Сумма» определяет сумму баллов команды в каждом конкурсе
SQL-запрос:
UPDATE [Распределение призов] INNER JOIN [Участия в конкурсах] ON ([Распределение призов]. Конкурс=[Участия в конкурсах]. Конкурс) AND ([Участия в конкурсах]. Место=[Распределение призов]. Место) SET [Участия в конкурсах]. Приз = [Распределение призов]. Приз;
Табличный вид:
Рисунок 18
4. Запрос «Распределение призов» автоматически распределяет призы победителям конкурсов
SQL-запрос:
UPDATE [Распределение призов] INNER JOIN [Участия в конкурсах] ON ([Участия в конкурсах]. Место=[Распределение призов]. Место) AND ([Распределение призов]. Конкурс=[Участия в конкурсах]. Конкурс) SET [Участия в конкурсах]. Приз = [Распределение призов]. Приз;
Табличный вид:
Рисунок 19
5. «Обновить» необходим для обновления записей в таблице «Участники». Эта таблица используется для того, чтобы отсортировать с помощью запроса «Обновить» таблицу «Участия в конкурсах», а потом переписать данные из «Участники» обратно в участия в конкурсах. Это делается для корректного отображения суммы баллов и распределения призов и мест.
SQL-запрос «Обновить»:
SELECT [Участия в конкурсах]. Конкурс, [Участия в конкурсах]. Команда, [Участия в конкурсах]. Категория, [Участия в конкурсах]. Номер, [Участия в конкурсах]. Танец1, [Участия в конкурсах]. Танец2, [Участия в конкурсах]. Танец3, [Участия в конкурсах]. Сумма, [Участия в конкурсах]. Место, NULL AS Приз INTO Участники
FROM [Участия в конкурсах]
ORDER BY [Участия в конкурсах]. Конкурс, [Участия в конкурсах]. Сумма DESC;
Создает таблицу структуры:
Рисунок 20
Все перечисленные выше запросы являются вспомогательными, облегчающими работу пользователя в системе. На их основе формируются визуальные формы. Этот механизм рассмотрим далее.
1. Формы Форма «Партнерши»
Эта форма для редактирования и просмотра таблицы «Партнерши». Её вид:
Рисунок 21
На форме есть две кнопки для просмотра отчета и для закрытия формы. В других формах соответствующие кнопки определяют те же действия.
Форма для редактирования и просмотра таблицы «Партнеры». Вид:
Рисунок 22
Форма «Пары»
Форма для просмотра и редактирования соответствующей таблицы. Для удобства оператора имена партнеров выбираются из списка, а при нажатии кнопки «Закрыть» запускается макрос, вычисляющий с помощью запроса возраст и категорию пары.
Форма «Конкурсы» имеет в своей структуре подчиненную форму «Распределение призов».
Рисунок 23
Форма «Участники конкурсов» показывает нам какие команды в каких конкурсах участвовали. Для формирования формы используется подчиненная форма «Участия в конкурсах», которая формируется с помощью запроса:
SELECT [Участия в конкурсах]. Конкурс, [Участия в конкурсах]. Команда, [Участия в конкурсах]. Номер, [Участия в конкурсах]. Место, [Участия в конкурсах]. Приз
FROM [Участия в конкурсах]
WHERE ((([Участия в конкурсах]. Команда)=[Формы]. Участники
конкурсов]. ПолеСоСписком2]));
где ПолеСоСписком2 — выбранное значение поля команда. Т. е. это параметр, передаваемый из главной формы в подчиненную. Вид формы:
Рисунок 24
Также в ней считается общий размер денежных выигрышей Отчет также формируется параметрически. В зависимости от выбранной команды печатается соответствующий отчет.
Форма «Список участников» — форма для просмотра и редактирования таблицы «Участия в конкурсах». Для удобства оператора возрастную категорию вводить не нужно, она еще раз проверяется с помощью макроса и записывается в таблицу автоматически.
Вид формы:
Рисунок 25
Форма «Стартовые» использует в своей структуре подчиненную форму, которая принимает параметр из основной и формируется запросом:
SELECT Стартовые. Конкурс, Стартовые. Команда, Стартовые. Категория, Стартовые. Номер
FROM Стартовые
WHERE Стартовые. Конкурс=Формы!Стартовые.ПолеСоСписком7;
где ПолеСоСписком7 — выбранной значение конкурса.
Вид формы:
Рисунок 26
Данные отсортированы по возрастной категории и по сути являются формой отображения запроса «Стартовые». Она вызывает соответствующий параметру отчет, т. е отчет исключительно по выбранному конкурсу.
Форма «Итоговые» использует в своей структуре подчиненную форму, которая принимает параметр из основной и формируется запросом:
SELECT Итоговый. Команда, Итоговый. Категория, Итоговый. Номер, Итоговый. Танец1, Итоговый. Танец2, Итоговый. Танец3, Итоговый. Сумма, Итоговый. Место
FROM Итоговый
WHERE Итоговый. Конкурс=Формы!.Итоговые.ПолеСоСписком7;
где ПолеСоСписком7 — выбранное значение конкурса.
Вид формы:
Рисунок 26
На этом рассмотрение форм можно закончить. Далее перейдем к отчетам, которые формируются на основе этих форм.
4. Отчеты Отчет «Партнеры»:
Рисунок 27
На форме имеется кнопка, которая закрывает отчет и возвращает на главную форму.
Отчет «Партнерши»:
Рисунок 28
Рисунок 28
Отчет «Участия в конкурсах» формируется в зависимости от того, какой параметр передастся из соответствующей формы.
Рисунок 29
Отчет «Средние баллы» формируется по всем конкурсам, которые имеются в таблице «Конкурсы за сезон».
Рисунок 30
Отчет «Стартовые протоколы» также формируется в зависимости от того, какой конкурс интересует оператора.
Отчет «Сумма призов» формируется в зависимости от того, какой период нас интересует, поэтому при нажатии кнопки «Сумма призов» появляется диалоговое окно, приглашающее нас выбрать необходимый отчет.
После того как пользователь выберет соответствующий отчет, он откроется перед ним, а диалоговое окно автоматически закроется.
Если нажать на диалоговой форме кнопку «Отмена», то она просто закроется и вернет нас в главной форме приложения.
Соответствующие изображения представлены на след. странице.
Диалоговое окно выбора отчета Рисунок 31. Сформированный квартальный отчет
5. Макросы В базе использован макрос, вычисляющий возраст и категорию участников «ВозрастКатегория».
Вид макроса в конструкторе:
Рисунок 32
По сути этот макрос запускает три запроса на обновление таблицы «Пары» и «Участия в конкурсах».
6. Модули В разработанной системе используется 2 модуля:
— место
— подмена (обновляет записи в таблице «Участия в конкурсах»)
Модуль «Место» используется для того, чтобы определить победителей конкурса; текст модуля VBA выглядит так:
Function butt ()
Dim table As DAO. Recordset, con As String, con1 As String, sql As String
Set table = CurrentDb. OpenRecordset («Участия в конкурсах», dbOpenTable)
n = 0
con = table![Конкурс]
table.Edit
table![место] = 0
table.Update
n = 0
Do While Not (table.EOF)
con1 = table![Конкурс]
If (con1 <> con) Then
table.Edit
table![место] = 1
table.Update
n = 1
Else
n = n + 1
table.Edit
table![место] = n
table.Update
End If
con = con1
table.MoveNext
Loop
table.Close
Form_СписокВсех.Requery
Form_СписокВсех.Refresh
End Function
Модуль «Подмена» используется для того, чтобы обновить записи в таблице «Участия в конкурсах»; текст модуля VBA выглядит так:
Function replace ()
Dim table As DAO. Recordset, tab2 As DAO. Recordset, con As String, con1 As String, sql As String
Set table = CurrentDb. OpenRecordset («Участники», dbOpenTable)
Set tab2 = CurrentDb. OpenRecordset («Участия в конкурсах», dbOpenTable)
Do While Not (table.EOF)
tab2.Edit
tab2![Конкурс] = table![Конкурс]
tab2![Команда] = table![Команда]
tab2![Категория] = table![Категория]
tab2![Номер] = table![Номер]
tab2![Танец1] = table![Танец1]
tab2![Танец2] = table![Танец2]
tab2![Танец3] = table![Танец3]
tab2![Сумма] = table![Сумма]
tab2![место] = table![место]
tab2![Приз] = table![Приз]
tab2.Update
table.MoveNext
tab2.MoveNext
Loop
table.Close
tab2.Close
Form_СписокВсех.Requery
Form_СписокВсех.Refresh
End Function
Заключение
таблица автоматизация программа макрос Результатом данной курсовой работы является создание полноценного приложения в среде MS ACCESS. Создана система взаимосвязанных таблиц, обеспечивающая целостное обновление и удаление данных, а значит изменения в одной таблице приведут к изменениям в остальных таблицах. Разработаны запросы, которые способны показывать информация в разрезе различных параметров, а также запросы по определенному временному промежутку. Формы создают удобный и простой в понимании интерфейс пользователя, который облегчает взаимодействие оператора и разработанной системы. А макросы и программные модули на языке VBA автоматизируют расчеты, облегчая работу пользователя.
1. С. В. Неклюдов «Программирование на языках среды MS ACCESS», СПб, изд-во А. Кардакова, 2005
2. Официальные правила Российского Танцевального Союза от 2008 г.
3. Лекции Неклюдовой С. В. за 5 семестр курса «Информационные системы и технологии».