Создание полноценного приложения в среде MS ACCESS - Программирование, компьютеры и кибернетика курсовая работа

Создание полноценного приложения в среде MS ACCESS - Программирование, компьютеры и кибернетика курсовая работа




































Главная

Программирование, компьютеры и кибернетика
Создание полноценного приложения в среде MS ACCESS

Создание системы взаимосвязанных таблиц, обеспечивающей целостное обновление и удаление данных. Автоматизация работы программы с помощью механизма запросов на обновление. Составление отчетов с помощь схемы данных, макросов и модулей. Описание базы данных.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Разработать структуру база данных для учета результатов выступления танцевальных пар на различных конкурсах. В базе данных необходимо хранить следующую информацию:
фамилии и имена партнера и партнерши, даты рождения, рост, вес
спортклуб, за который выступает пара
Возрастная категория, которой относится пара (дети, юниоры, взрослые)
данные о конкурсах, проводимых в текущем спортивном сезоне
размеры призов, выплачиваемых победителям
результаты выступления спортивных пар
оценка по каждому танцу, полученная парой
занятое место, которое определяется в соответствии с суммой баллов по всем танцам программы
Построить запросы. Формы и отчеты, позволяющие получать следующую информацию:
в каких конкурсах приняла участие та или иная пара
каковы результаты выступления танцевальной пары
сумма премиальных, полученных парой за период выступлений ( за месяц, квартал, год)
стартовые протоколы для судей по каждой возрастной категории, в которой приведены номера, полученные парами при жеребьевке
протоколы по каждому танцу программы и итоговый протокол по конкурсу
Построить главную форму, позволяющую просматривать информацию по запросам 1-3.
В России в настоящее время проводится всё больше танцевальных конкурсов и фестивалей, как детских, так и взрослых. Сейчас всё популярнее становятся спортивные и современные танцы, однако конкурсы по классическим, а особенно народным танцам проводятся ничуть не реже.
В настоящее время растет количество танцевальных школ и коллективов, количество и программа многих танцевальных конкурсов усложняется, конкурсы проводятся во множество туров, каждый из которых может длиться несколько дней.
В 2002 году Президиум Московской Федерации Спортивного Танца принял решение о кардинальном изменении протоколов соревнований. Предлагалось заменить прежнюю форму протокола, когда на листах размещались списки участников, списки арбитров, списки нарушений и замечаний, на карточную форму, когда каждый элемент из всех списков находится на отдельном листе-карточке.
Некоторое время такая система применялась при проведении соревнований, однако всё же задумываются перейти на компьютерную обработку результатов. Дело в том, что система регистрации и оценки танцоров учитывает множество факторов, начиная от регистрационных книжек танцоров, заканчивая протоколами по каждому танцу программы. Компьютерная обработка значительно бы облегчило бы ввод информации, а также её обработку. Однако введение такой системы - очень сложный и трудоёмкий процесс.
Поэтому, учитывая сложность и разветвленность системы оценки в данной предметной области определим, что реализованная система будет являться системой для предоставления отчетности по различным критериям. Пусть реализованная система будет являться базой статистических данных, необходимых для оценки работы различных танцевальных клубов, успехов отдельных пар и танцоров, а также общей сумме разыгранных призов.
Таблица представляет собой набор данных по конкретной теме. Таблицы, лежащие в основе реляционной модели данных, обладают следующими свойствами:
- Каждая строка представляет собой все сведения об одном объекте - записи
- Данные одного столбца имеют одинаковый тип
- Порядок следования строк не имеет значения
В создаваемой базе данных, при помощи конструктора были созданы таблицы:
8. Участники (дублер таблицы «Участия в конкурсах»)
Таблица «Партнерши» и таблица «Партнеры»
Обе эти таблицы имеют одинаковую структуру и отличаются лишь тем, что в таблице «Партнерши» указаны девушки, а в «Партнеры» - мальчики. Это сделано для того, чтобы можно было объединить их в пары, т. к. согласно п.4.6 правил Российского Танцевального Союза (РТК) во всех видах соревнований различных уровней, кроме фестивалей, пары составляют неделимую категорию и партнеры могут выступать только вместе.
Итак, структура таблицы «Партнеры»:
«Код» - числовой, целое, совпадения не допускаются, обязательное;
«Фамилия» - текстовый, обязательное;
«Дата Рождения» - дата\время, маска 00.00.00, обязательное;
«Рост» - числовой, целое, обязательное;
«Вес» - числовой, целое, обязательное;
Поле «Код» является ключевым, т.е. содержит уникальные, неповторяющиеся данные. Сортировка в таблице происходит по этому полю.
Далее - таблица «Партнерши». Как говорилось ранее, она имеет точно такую же структуру и ключевое поле:
«Код» - числовой, целое, совпадения не допускаются, обязательное;
«Фамилия» - текстовый, обязательное;
«Дата Рождения» - дата\время, маска 00.00.00, обязательное;
«Рост» - числовой, целое, обязательное;
«Вес» - числовой, целое, обязательное;
Далее рассмотрим таблицу «Пары». Её вид в конструкторе:
«Название» - текстовое, обязательное, является ключевым полем
«Партнер» - числовой, является не фамилией, а кодом, обязательное;
«Партнерша» - числовой, является не фамилией, а кодом, обязательное;
«Тренер» - текстовое, обязательное;
Поле «Название» отражает названием команды в общем списке, оно является ключевым. Поля «Возраст» и «Категория» не являются обязательными для заполнения, т.к. значения этих полей вычисляются с помощью специальных запросов. Осуществление этого механизма происходит благодаря специальной таблице «Категории», в которых каждый возраст относится к определенной категории. Структура её довольно проста:
Эта таблица по полю возраст соединяется с таблицей «Пары» и необходима для автоматического определения категории.
Рассмотрим таблицу «Конкурсы за сезон», в которой указаны названия конкурсов, программа, время начала, денежные призы и т.п.
«Название» - текстовое, обязательное, ключевое поле;
«Дата» - дата/время, маска 00.00.00, кр. формат даты, обязательное;
«Время» - дата/время, маска 99:00;00, кр. формат времени, обязательное;
«Программа» - текстовый, обязательное;
«Первое место» - числовой, денежный, обязательное;
«Второе место» - числовой, денежный, обязательное;
«Третье место» - числовой, денежный, обязательное.
Поле «Название» является ключевым для того, чтобы связать эту таблицу с таблицей «Участия в конкурсах».
Данные в этой таблице продублированы также в таблице «Распределение призов». Это сделано для того, чтобы автоматизировать распределение призов по конкурсов.
«Конкурс» - текстовое, обязательное; «Место»- числовое, обязательное;
«Приз» - числовое, формат денежный, обязательное.
В этой таблице нет ключевых полей, потому что записи могут повторяться. Вид рабочей таблицы представлен далее:
Как уже говорилось, у нас также имеется таблица «Участия в конкурсах». Она по сути является сводной таблицей, так как содержит наибольшее количество информации во всей баз
«Конкурс» - текстовый, обязательное;
«Команда» - текстовый, обязательное;
«Сумма» - числовой, по умолчанию равно 0;
«Приз» - числовой, формат денежный, по умолчанию равно 0.
Поле «Конкурс» - название конкурса, «Команда» - название участвующей команды. «Категория» указывает возрастную категорию, которых в международных конкурсах бывает три: ювеналы, юниоры и взрослые, иногда конечно возможны выступления в категории сеньоры (от 35 лет) и гранд синьоры (от 45 лет), однако для упрощения и наглядности будем использовать только 3 основные категории. «Номер» - номер выступления пары, полученный при жеребьевке. «Танец1», «Танец2», «Танец3» - оценки за выступление по каждому танцу. Поле «Сумма» - вычисляемое специальным запросом поле, максимальная сумма соответствует победившей команде. Поле «Место» не является вычисляемым, так как структура таблицы слишком сложна, а вычислить его запросом не представляется возможным, поэтому таблица и носит статистический характер: опрератору необходимо вводить данные вручную. «Приз» - вычисляемее поле, значение которого определяется специальным запросом с помощью таблицы «Распределение призов».
Записи идентифицируются по некоторой уникальной характеристике. Идентификация строки - это свойство, позволяющее однозначно определить объект по значению одного или нескольких полей таблицы. Такой столбец называют первичным ключом таблицы или ключевым полем. Именно эти поля используются для связи таблиц.
В реляционной алгебре различают четыре типа связи между таблицами:
· Связь один-к-одному. Используется для связи одной записи в таблице с одной записью в другой таблице.
· Связь один-ко-многим. Используется для связи одной записи в таблице с несколькими записями в другой таблице.
· Связь многие-к-одному. Связь указывает, что несколько записей одной таблицы связаны с одной записью другой таблицы.
Связь таблиц позволяет поддерживать целостность данных. Целостность данных - это правила, регулирующие условия взаимодействия между таблицами и поддерживающие целостность информации. Эти правила сохраняют в неприкосновенности связи между таблицами в системе управления реляционной базой данных. Целостность данных предохраняет данные от изменений, которые нарушают связи между таблицами, и функционирует на основе ключевых полей таблицы.
1. Запрос «Участники конкурсов» показывает в каких конкурсах приняла участие та или иная пара.
SELECT [Участия в конкурсах].Команда, [Участия в конкурсах].Конкурс
WHERE [Участия в конкурсах].Команда=Команда;
Название команды передается с помощью параметра. Выполненный запрос выглядит так:
Запрос «Итоговый» определяет результаты выступления пар на любом конкурсе, где конкурс передается в качестве параметра, а также формирует итоговый отчет.
SELECT [Участия в конкурсах].Конкурс, [Участия в конкурсах].Команда, [Участия в конкурсах].Категория, [Участия в конкурсах].Номер, [Участия в конкурсах].Танец1, [Участия в конкурсах].Танец2, [Участия в конкурсах].Танец3, [Участия в конкурсах].Сумма, [Участия в конкурсах].Место
WHERE ((([Участия в конкурсах].Конкурс)=Конкурс))
ORDER BY [Участия в конкурсах].Место;
2. Запросы «ПризыПоМесяцам», «ПризыПоКварталам, «ПризыПоГоду» показывают сумму премиальных баллов, полученных парой за соответствующий период времени.
TRANSFORM Sum([Участия в конкурсах].Приз) AS [Sum-Приз]
SELECT [Участия в конкурсах].Команда, Sum([Участия в конкурсах].Приз) AS [Итоговое значение Приз]
FROM [Конкурсы за сезон] INNER JOIN [Участия в конкурсах] ON [Конкурсы за сезон].Название = [Участия в конкурсах].Конкурс
GROUP BY [Участия в конкурсах].Команда
PIVOT "Месяц " & DatePart("m",[Конкурсы за сезон].[Дата]);
TRANSFORM Sum([Участия в конкурсах].Приз) AS [Sum-Приз]
SELECT [Участия в конкурсах].Команда, Sum([Участия в конкурсах].Приз) AS [Итоговое значение Приз]
FROM [Конкурсы за сезон] INNER JOIN [Участия в конкурсах] ON [Конкурсы за сезон].Название = [Участия в конкурсах].Конкурс
GROUP BY [Участия в конкурсах].Команда
PIVOT "Кв " & DatePart("q",[Конкурсы за сезон].[Дата]);
TRANSFORM Sum([Участия в конкурсах].Приз) AS [Sum-Приз]
SELECT [Участия в конкурсах].Команда, Sum([Участия в конкурсах].Приз) AS [Итоговое значение Приз]
FROM [Конкурсы за сезон] INNER JOIN [Участия в конкурсах] ON [Конкурсы за сезон].Название=[Участия в конкурсах].Конкурс
GROUP BY [Участия в конкурсах].Команда
PIVOT "Год " & DatePart("yyyy",[Конкурсы за сезон].[Дата]);
Как видно, все три вида запроса являются перекрестными, соответственно их вид будет схожим:
3. Запрос «Стартовые», который формирует стартовые протоколы для судей по конкурсу (передается в качестве параметра) по возрастным категориям.
SELECT [Участия в конкурсах].Конкурс, [Участия в конкурсах].Команда, [Участия в конкурсах].Категория, [Участия в конкурсах].Номер
WHERE ((([Участия в конкурсах].Конкурс)=Конкурс))
ORDER BY [Участия в конкурсах].Категория, [Участия в конкурсах].Номер;
Вспомогательные запросы в данной работе необходимы для автоматизации работы программы с помощью механизма запросов на обновление.
1. Запрос «Вычисление возраста» вычисляет возраст пары, чтобы отнести её к той или иной категории.
«2. Принадлежность участника к возрастной группе определяется по дате рождения.
3. Возрастная категория определяется во возрасту партнера»
UPDATE Партнеры INNER JOIN Пары ON Партнеры.Код = Пары.Партнер SET Пары.Возраст = ((Date()-[Партнеры].[ДатаРождения])\365);
Этим запросом обновляется содержимое таблицы Пары и в поле возраст записывается соответствующее число:
2. Запрос «Категория» и «Возраст в участ» записывают возрастную категорию в таблицы «Пары» и «Участия в конкурсах» соответственно
Их структура приблизительно одинакова. SQL-запрос «Категория»:
UPDATE Категории INNER JOIN Пары ON Категории.Возраст = Пары.Возраст SET Пары.Категория = [Категории].[Категория];
UPDATE [Конкурсы за сезон] INNER JOIN (Пары INNER JOIN [Участия в конкурсах] ON Пары.Название=[Участия в конкурсах].Команда) ON [Конкурсы за сезон].Название=[Участия в конкурсах].Конкурс SET [Участия в конкурсах].Категория = [Пары].[Категория];
3. Запрос «Сумма» определяет сумму баллов команды в каждом конкурсе
UPDATE [Распределение призов] INNER JOIN [Участия в конкурсах] ON ([Распределение призов].Конкурс=[Участия в конкурсах].Конкурс) AND ([Участия в конкурсах].Место=[Распределение призов].Место) SET [Участия в конкурсах].Приз = [Распределение призов].Приз;
4. Запрос «Распределение призов» автоматически распределяет призы победителям конкурсов
UPDATE [Распределение призов] INNER JOIN [Участия в конкурсах] ON ([Участия в конкурсах].Место=[Распределение призов].Место) AND ([Распределение призов].Конкурс=[Участия в конкурсах].Конкурс) SET [Участия в конкурсах].Приз = [Распределение призов].Приз;
5. «Обновить» необходим для обновления записей в таблице «Участники». Эта таблица используется для того, чтобы отсортировать с помощью запроса «Обновить» таблицу «Участия в конкурсах», а потом переписать данные из «Участники» обратно в участия в конкурсах. Это делается для корректного отображения суммы баллов и распределения призов и мест.
SELECT [Участия в конкурсах].Конкурс, [Участия в конкурсах].Команда, [Участия в конкурсах].Категория, [Участия в конкурсах].Номер, [Участия в конкурсах].Танец1, [Участия в конкурсах].Танец2, [Участия в конкурсах].Танец3, [Участия в конкурсах].Сумма, [Участия в конкурсах].Место, NULL AS Приз INTO Участники
ORDER BY [Участия в конкурсах].Конкурс, [Участия в конкурсах].Сумма DESC;
Все перечисленные выше запросы являются вспомогательными, облегчающими работу пользователя в системе. На их основе формируются визуальные формы. Этот механизм рассмотрим далее.
Эта форма для редактирования и просмотра таблицы «Партнерши». Её вид:
На форме есть две кнопки для просмотра отчета и для закрытия формы. В других формах соответствующие кнопки определяют те же действия.
Форма для редактирования и просмотра таблицы «Партнеры». Вид:
Форма для просмотра и редактирования соответствующей таблицы. Для удобства оператора имена партнеров выбираются из списка, а при нажатии кнопки «Закрыть» запускается макрос, вычисляющий с помощью запроса возраст и категорию пары.
Форма «Конкурсы» имеет в своей структуре подчиненную форму «Распределение призов».
Форма «Участники конкурсов» показывает нам какие команды в каких конкурсах участвовали. Для формирования формы используется подчиненная форма «Участия в конкурсах», которая формируется с помощью запроса:
SELECT [Участия в конкурсах].Конкурс, [Участия в конкурсах].Команда, [Участия в конкурсах].Номер, [Участия в конкурсах].Место, [Участия в конкурсах].Приз
WHERE ((([Участия в конкурсах].Команда)=[Формы].[Участники
где ПолеСоСписком2 - выбранное значение поля команда. Т.е. это параметр, передаваемый из главной формы в подчиненную. Вид формы:
Также в ней считается общий размер денежных выигрышей
Отчет также формируется параметрически. В зависимости от выбранной команды печатается соответствующий отчет.
Форма «Список участников» - форма для просмотра и редактирования таблицы «Участия в конкурсах». Для удобства оператора возрастную категорию вводить не нужно, она еще раз проверяется с помощью макроса и записывается в таблицу автоматически.
Форма «Стартовые» использует в своей структуре подчиненную форму, которая принимает параметр из основной и формируется запросом:
SELECT Стартовые.Конкурс, Стартовые.Команда, Стартовые.Категория, Стартовые.Номер
WHERE Стартовые.Конкурс=Формы!Стартовые.ПолеСоСписком7;
где ПолеСоСписком7 - выбранной значение конкурса.
Данные отсортированы по возрастной категории и по сути являются формой отображения запроса «Стартовые». Она вызывает соответствующий параметру отчет, т.е отчет исключительно по выбранному конкурсу.
Форма «Итоговые» использует в своей структуре подчиненную форму, которая принимает параметр из основной и формируется запросом:
SELECT Итоговый.Команда, Итоговый.Категория, Итоговый.Номер, Итоговый.Танец1, Итоговый.Танец2, Итоговый.Танец3, Итоговый.Сумма, Итоговый.Место
WHERE Итоговый.Конкурс=Формы!.Итоговые.ПолеСоСписком7;
где ПолеСоСписком7 - выбранное значение конкурса.
На этом рассмотрение форм можно закончить. Далее перейдем к отчетам, которые формируются на основе этих форм.
На форме имеется кнопка , которая закрывает отчет и возвращает на главную форму.
Отчет «Участия в конкурсах» формируется в зависимости от того, какой параметр передастся из соответствующей формы.
Отчет «Средние баллы» формируется по всем конкурсам, которые имеются в таблице «Конкурсы за сезон».
Отчет «Стартовые протоколы» также формируется в зависимости от того, какой конкурс интересует оператора.
Отчет «Сумма призов» формируется в зависимости от того, какой период нас интересует, поэтому при нажатии кнопки «Сумма призов» появляется диалоговое окно, приглашающее нас выбрать необходимый отчет.
После того как пользователь выберет соответствующий отчет, он откроется перед ним, а диалоговое окно автоматически закроется.
Если нажать на диалоговой форме кнопку «Отмена», то она просто закроется и вернет нас в главной форме приложения.
Соответствующие изображения представлены на след. странице.
Рисунок 31. Сформированный квартальный отчет
В базе использован макрос, вычисляющий возраст и категорию участников «Возраст\Категория».
По сути этот макрос запускает три запроса на обновление таблицы «Пары» и «Участия в конкурсах».
В разработанной системе используется 2 модуля:
- подмена (обновляет записи в таблице «Участия в конкурсах»)
Модуль «Место» используется для того, чтобы определить победителей конкурса; текст модуля VBA выглядит так:
Dim table As DAO.Recordset, con As String, con1 As String, sql As String
Set table = CurrentDb.OpenRecordset("Участия в конкурсах", dbOpenTable)
Модуль «Подмена» используется для того, чтобы обновить записи в таблице «Участия в конкурсах»; текст модуля VBA выглядит так:
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)
tab2![Категория] = table![Категория]
таблица автоматизация программа макрос
Результатом данной курсовой работы является создание полноценного приложения в среде MS ACCESS. Создана система взаимосвязанных таблиц, обеспечивающая целостное обновление и удаление данных, а значит изменения в одной таблице приведут к изменениям в остальных таблицах. Разработаны запросы, которые способны показывать информация в разрезе различных параметров, а также запросы по определенному временному промежутку. Формы создают удобный и простой в понимании интерфейс пользователя, который облегчает взаимодействие оператора и разработанной системы. А макросы и программные модули на языке VBA автоматизируют расчеты, облегчая работу пользователя.
1. С.В. Неклюдов «Программирование на языках среды MS ACCESS», СПб, изд-во А. Кардакова, 2005
2. Официальные правила Российского Танцевального Союза от 2008г.
3. Лекции Неклюдовой С.В. за 5 семестр курса «Информационные системы и технологии».
Разработка базы данных "Доставка товара" в среде MS Access, ее структуры, объектов (таблиц, запросов, форм, отчетов, макросов). Анализ предметной области базы данных, описание ее схемы, полей таблиц, разработанных объектов. Требования к работе приложения. контрольная работа [2,6 M], добавлен 07.08.2013
Создание программ, позволяющих создавать базы данных. Создание таблицы базы данных. Создание схемы данных. Создание форм, отчетов, запросов. Увеличение объема и структурной сложности хранимых данных. Характеристика системы управления базой данных Access. курсовая работа [2,1 M], добавлен 17.06.2013
Структура таблицы и типы данных. Ввод данных в ячейки таблицы. Создание запросов на выборку, удаление, обновление и добавление записей, на создание таблицы. Основное различие между отчетами и формами, их назначение. Создание отчетов для базы данных. курсовая работа [1,9 M], добавлен 17.06.2014
Рассмотрение интерактивной реляционной системы управления базами данных Microsoft Access. Графические возможности программы; создание таблиц, запросов, формуляров, отчетов, макросов и модулей. Сравнительная характеристика баз данных Clipper и Access. курсовая работа [1,1 M], добавлен 22.01.2013
Принципы работы с реляционными базами данных в среде Microsoft Access. Основные положения базы данных Access. Составление таблиц, запросов, отчетов, страниц и модулей. Основные структуры представления базы данных. Определение связей между таблицами. контрольная работа [2,6 M], добавлен 03.04.2014
Создание моделей данных, основных таблиц с помощью конструктора таблиц, связей между таблицами, форм для заполнения таблиц, запросов на выборку данных, отчетов для вывода на печать и начальной кнопочной формы. Основные объекты Microsoft Access. контрольная работа [4,5 M], добавлен 18.03.2012
Рассмотрение теоретических основ проектирования. Анализ предметной области и разработка таблиц базы данных. Заполнение таблиц, поиск данных с помощью фильтра. Создание форм, разработка запросов. Создание и настройка отчетов, составление приложения. курсовая работа [2,8 M], добавлен 01.06.2014
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Создание полноценного приложения в среде MS ACCESS курсовая работа. Программирование, компьютеры и кибернетика.
Реферат: Media Piece Essay Research Paper The advertisement
Реферат по теме Енергетична оцінка технологій у сільськогосподарському виробництві
Отравление Свинцом Реферат
Социальные Связи Структура И Виды Реферат
Дипломная работа по теме Правовое регулирование труда педагогических работников (на примере Государственного профессионального образовательного учреждения 'Сыктывкарский гуманитарно-педагогический колледж им. И.А. Куратова')
Реферат На Тему Авторское Право В Украине
Лабораторная Работа 3 Исследование
Статья: Обратная сторона Земли
Курсовая Работа По Гражданскому Обществу
Курсовая работа по теме Разработка информационной системы 'Интернет-кафе'
Курсовая работа по теме Автоматизированный расчет количественных показателей качества прибыли на примере ОАО 'Международный аэропорт Сочи'
Система Практических Работ
Активизация Познавательной Деятельности Курсовая
Реферат: Исследование экономики государственного сектора. Скачать бесплатно и без регистрации
Правовой статус фонда обязательного медицинского страхования
Время Защиты Кандидатской Диссертации
Реферат: Letters Of Transit Essay Research Paper Letters
Курсовая работа по теме Игра 'Пятнашки'
Реферат Особенности Ведения Документации И Отчетности Ооо
Реферат На Тему Отряд Непарнокопытные
Договор ипотеки в гражданском праве - Государство и право курсовая работа
Первая мировая война - История и исторические личности курсовая работа
Перелом костей. Оказание первой помощи. Лечение. Реабилитация - Медицина реферат


Report Page