Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Тема: Разработка аис «магазин компьютерных товаров»↑ Стр 1 из 5Следующая ⇒ Содержание книги
Поиск на нашем сайте
КГБ ПОУ ХПЭТ
КУРСОВАЯ РАБОТА
Дисциплина: МДК 01.02 Методы и средства проектирования ИС Тема: Разработка АИС «Магазин компьютерных товаров» КП 09.02.04.31.2016 Выполнил: Черепнин А.П. Студент группы ИС-31(11) Проверил: Зайчук С. В.
Хабаровск 2016г. Министерство образования и науки Хабаровского края КГБ ПОУ ХПЭТ ЗАДАНИЕ на курсовую работу по дисциплине МДК.01.02 «Методы и средства проектирования информационных систем» Студента специальности 09.02.04 «Информационные системы» группа ____ ИС-31(11) _____ Черепнин Алексей Павлович Фамилия, имя, отчество Тема задания Разработка АИС «Магазин компьютерных товаров» Курсовая работа на указанную тему выполняется студентом в следующем объеме (__ 36 __ листов): СОДЕРЖАНИЕ ВВЕДЕНИЕ Теоретические основы баз данных 1.1 Основные термины теории баз данных (БД, СУБД, реляционные БД, таблицы, ключи, связи, индексы, триггеры) Нормализация Базы Данных (описание предметной области, инфологическая модель, понятие нормализации, цели нормализации, 1,2,3 нормальные формы, приведение таблиц разрабатываемой базы данных к 1,2,3 нормальным формам) Типы данных и команды SQL Реализация информационных систем 2.1 Реализация с помощью средств быстрой разработки (c описанием понятия средства быстрой разработки, описанием создания логической и 2.2 Реализация с помощью в СУБД SQL Server 2014 (Enterprise Manager, Создание пользовательского интерфейса для работы с базой данных Заключение Список литературы ПРИЛОЖЕНИЕ Дата выдачи задания ________09.03.16 г.______ Преподаватель ____________ Зайчук С. В. ____ Срок окончания ____________26.03.2016_____________
Введение 4 1 Теоретические основы баз данных 5 1.1 Основные термины теории баз данных 5 1.2 Нормализация Базы Данных 8 1.3 Типы данных и команды SQL 14 2 Реализация информационных систем 18 2.1 Реализация с помощью средств быстрой разработки 18 2.2 Реализация с помощью в СУБД SQL Server 2000(2014) 23 2.3 Создание пользовательского интерфейса для работы с базой данных 27 Заключение 35 Список литературы 36
ВЕДЕНИЕ В настоящее время трудно представить себе функционирование крупного предприятия без АИС, в частности баз данных, которые значительно упрощают хранение актуальной и самой точной информации. Базы данных помогают систематизировать данные, обеспечивают быстрый доступ к данным, с их помощью можно быстро составить самый подробный отчёт. А в сфере торговли хранилища данных, стали просто незаменимыми для крупных магазинов. Например, в наше время практически все крупные магазины используют такую АИС как «1С – торговля», в бухгалтериях большинства крупных предприятий используется АИС «1С – Бухгалтерия». Цель моей курсовой работы – создание АИС «Магазин компьютерных товаров», которая призвана максимально ускорить процесс продажи компьютерных товаров. Задачи АИС: 1. Хранение актуальной информации о наличии товаров на складе магазина, а также в других магазинах сети. 2. Быстрый поиск остатков товара в магазине. 3. Быстрое оформление чека на покупку. Пояснительная записка к курсовой работе состоит из двух частей: 1. Теоретическая часть, в которой описаны основные термины теории баз данных, понятие нормализации баз данных, список основных команд языка SQL Server 2. Реализация информационной системы. В этой части работы подробно описаны способы реализации ИС с помощью CASE-средства dbForge Studio for SQL Server и сервера БД SQL Server, используя менеджер и программирование в SQL, таким образом у меня получится 3 варианта базы данных. А также описан процесс создания программного интерфейса для работы с базой данных.
Нормализация Базы Данных Результатом работы с АИС магазина компьютерных товаров является чек, который оформляет продавец. В этом чеке должна содержаться информация о количестве товаров в чеке, количестве каждого товара, стоимости товара, сумме покупки, скидке по товару, сумме покупки со скидкой. Если речь идёт о сети магазинов, то необходимо указать ещё и информацию о магазине (название, адрес), в котором данный чек был оформлен. А т.к. заработная плата продавцов зависит от их личных продаж, то в чеке необходимо указать и данные продавца, который оформил данный чек. Исходя из этого инфологическая модель базы данных будет выглядеть следующим образом:
Нормализацией БД называется процедура декомпозиции или композиции исходных схем отношений проекта БД, назначение ключей для каждого отношения с целью исключения возможных аномалий при манипулировании данными. Правила нормализации разработаны Коддом в 1972 году. В результате нормализации обеспечивается: · регулярность описаний данных; · возможность присоединения новых полей, записей, связей без изменения существующих подсхем (или внешних моделей) и, соответственно, ПП. это обычно требует больших дополнительных затрат по сопровождению; · максимальная гибкость при обработке произвольных запросов с рабочих мест пользователей. Нормализация базируется на представлении данных двухмерными таблицами, составляющими основу реляционных моделей данных. Важно отметить, что любая иерархическая или сетевая модель данных может быть с некоторой избыточностью разложена в совокупность двухмерных таблиц. Существует несколько правил нормализации баз данных. Каждое правило называется «нормальной формой». Если выполняется первое правило, говорят, что база данных представлена в «первой нормальной форме». Если выполняются три первых правила, считается, что база данных представлена в «третьей нормальной форме». Есть и другие уровни нормализации, однако для большинства приложений достаточно нормализовать базы данных до третьей нормальной формы. Нормализация Базы Данных – представляет собой процесс реорганизации данных путём ликвидации повторяющихся групп и иных противоречий, с целью приведения таблиц к виду, позволяющему осуществить непротиворечивое и корректное редактирование данных. Окончательная цель нормализации сводится к получению такого проекта, в котором каждый факт появляется только в одном месте, таким образом, нормализация – это процесс уменьшения избыточности информации в реляционной базе данных. Избыточность информации удаляется не с целью экономии памяти, сколько для исключения противоречивых хранимых данных и упрощения управления ими. Использование ненормализованных таблиц может привести к нарушению целостности данных. Обычно различают следующие проблемы, возникающие при использовании ненормализованных таблиц: 1 избыточность данных; 2 аномалии обновления; 3 аномалии удаления; 4 аномалии ввода; Можно легко представить себе пример ненормализованной таблицы, с которой будет очень неудобно работать:
Таблица 1 - Пример ненормализованной таблицы
В нескольких записях таблицы повторяется одна и та же информация, следовательно, возникает избыточность данных. Такая таблица не может использоваться в магазине, т.к. на каждую единицу товара, купленную одним покупателем, нужно будет выбивать отдельный чек. Из таблицы видно, что в полях «Магазин», «Продавец» повторяются одни и те же данные, этого можно избежать созданием отдельных таблиц «Магазины» и «Продавцы», а в чеке указывать только коды продавцов и магазинов. Избавиться от необходимости выбивать отдельный чек на каждую единицу товара, можно путём создания таблиц «Товар», «Категории товара», «Скидки» и «Позиции в чеке». Поля «Сумма покупки» и «Сумма покупки с учётом скидки» должны заполняться расчётными данными, это можно реализовать с помощью компонентов интерфейса, который я разработал в Delphi (это я описал в пункте 2.3 Создание пользовательского интерфейса для работы с базой данных) – в среде Delphi добавить компоненты, которые позволят вывести данные о стоимости покупки и стоимости покупки со скидкой на напечатанный чек. Этим мы значительно сократим размеры базы данных в будущем, при введении её в эксплуатацию, т.е. заполнении таблиц. Первая нормальная форма (1NF). Первая нормальная форма – это основа реляционной системы. Для соответствия этой форме требуется чтобы таблица был двумерной и не содержала ячеек, включающих несколько значений (значения должны быть атомарными). Для того чтобы привести таблицу к 1NFнам необходимо исключить дублирование строк. Электронные таблицы часто включают третье измерение, но в таблицах баз данных оно использоваться не должно. Рассмотреть эту проблему можно также с помощью отношения «один ко многим», тогда совет можно сформулировать следующим образом: не включайте в одну таблицу элементы, представляющие обе стороны данного отношения. Вместо этого создайте другие таблицы в первой нормальной форме, устранив повторяющиеся группы. Таким образом таблицы «Магазины», «Продавцы», «Товары», «Скидки», «Позиции в чеке», «Категории товаров», «Чек» в 1NF, будут выглядеть следующим образом:
Таблица 3 - 1NF "Магазины"
Таблица 4 - 1NF "Продавцы"
Таблица 5 - 1NF "Товары"
Таблица 6 - 1NF "Скидки"
Таблица 7 - 1NF "Категории товаров"
Таблица 8 - 1NF "Позиции в чеке"
Таблица 9 - 1NF "Чек"
Теперь все таблицы базы данных соответствуют первой нормальной форме. Вторая нормальная форма (2NF): устранение избыточных данных Переменная отношения находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый не ключевой атрибут неприводимо зависит от её потенциального ключа. Неприводимость означает, что в составе потенциального ключа отсутствует меньшее подмножество атрибутов, от которого можно также вывести данную функциональную зависимость. Для неприводимой функциональной зависимости часто используется эквивалентное понятие «полная функциональная зависимость». Если потенциальный ключ является простым, то есть состоит из единственного атрибута, то любая функциональная зависимость от него является неприводимой (полной). Если потенциальный ключ является составным, то согласно определению второй нормальной формы, в отношении не должно быть не ключевых атрибутов, зависящих
от части составного потенциального ключа. Вторая нормальная форма по определению запрещает наличие не ключевых атрибутов, которые вообще не зависят от потенциального ключа. Таким образом, вторая нормальная форма в том числе запрещает создавать отношения как несвязанные (хаотические, случайные) наборы атрибутов. . Процесс приведения к 2NF позволяет избавиться от большей части повторяющихся данных. При приведении базы данных к 2 NF таблицы преобразовались:
Рисунок 2 - 2NF Рисунок 2 – показывает, что все таблицы соответствуют второй нормальной форме. Следовательно, можно приступить к формированию третьей нормальной формы. Третья нормальная форма (3NF) В 3NF необходимо исключить транзитивную зависимость между полями. Чтобы перейти к 3NF необходимо выполнить следующие действия: 1) Определить все поля, от которых зависят другие поля. 2) Создать новую таблицу для каждого такого поля или группы полей и группы зависящих от него полей переместить в другую таблицу. 3) Удалить перемещенные поля из исходной таблицы. В результате нормализации все таблицы базы данных соответствуют третьей нормальной форме. Следовательно, можно приступать непосредственно к формированию базы данных. Логическая схема АИС «Магазин компьютерных товаров» будет выглядеть следующим образом
Рисунок 3 - Логическая схема
На логической схеме подчёркиванием выделены все ключевые поля, от которых зависят остальные, курсивом выделены поля главной таблицы, которые являются внешними ключами, т.е. связывают главную таблицу с подчинёнными.
Типы данных и команды SQL. Microsoft SQL Server поддерживает большинство типов данных SQL 2003. Также SQL Server поддерживает дополнительные типы данных, используемые для однозначной идентификации строк данных в таблице и на многих серверах, например, UNIQUEIDENTIFIER, что соответствует аппаратной философии «роста в ширину», исповедуемой Microsoft (т. е. внедрение базы на множестве серверов на платформах Intel), вместо «роста в высоту» (т. е. внедрение на одном огромном мощном UNIX-сервере или Windows Data Center Server). Основные типы данных используемые в Microsoft SQL Server: 1) Символьные типы данных - содержат буквы, цифры и специальные символы. · CHAR или CHAR(n) -символьные строки фиксированной длины. Длина строки определяется параметром n. CHAR без параметра соответствует CHAR(1). Для хранения таких данных всегда отводится n байт вне зависимости от реальной длины строки. · VARCHAR(n) - символьная строка переменной длины. Для хранения данных этого типа отводится число байт, соответствующее реальной длине строки. 2) Целые типы данных - поддерживают только целые числа (дробные части и десятичные точки не допускаются). Над этими типами разрешается выполнять арифметические операции и применять к ним агрегирующие функции (определение максимального, минимального, среднего и суммарного значения столбца реляционной таблицы). · INTEGER или INT - целое, для хранения которого отводится, как правило, 4 байта. (Замечание: число байт, отводимое для хранения того или иного числового типа данных, зависит от используемой СУБД и аппаратной платформы, здесь приводятся наиболее "типичные" значения) Интервал значений от - 2147483647 до + 2147483648 · SMALLINT - короткое целое (2 байта), интервал значений от - 32767 до +32768 3) Вещественные типы данных - описывают числа с дробной частью. · FLOAT и SMALLFLOAT - числа с плавающей точкой (для хранения отводится обычно 8 и 4 байта соответственно). · DECIMAL(p) - тип данных аналогичный FLOAT с числом значащих цифр p. · DECIMAL(p,n) - аналогично предыдущему, p - общее количество десятичных цифр, n - количество цифр после десятичной запятой. 4) Денежные типы данных - описывают, естественно, денежные величины. Если в ваша система такого типа данных не поддерживает, то используйте DECIMAL (p, n). · MONEY (p, n) - все аналогично типу DECIMAL (p, n). Вводится только потому, что некоторые СУБД предусматривают для него специальные методы форматирования. 5) Дата и время - используются для хранения даты, времени и их комбинаций. Большинство СУБД умеет определять интервал между двумя датами, а также уменьшать или увеличивать дату на определенное количество времени. · DATE - тип данных для хранения даты. · TIME - тип данных для хранения времени. · INTERVAL - тип данных для хранения временного интервала.
· DATETIME - тип данных для хранения моментов времени (год + месяц + день + часы + минуты + секунды + доли секунд). 6) Двоичные типы данных - позволяют хранить данные любого объема в двоичном коде (оцифрованные изображения, исполняемые файлы и т.д.). Определения этих типов наиболее сильно различаются от системы к системе, часто используются ключевые слова: · BINARY · BYTE · BLOB 7) Последовательные типы данных - используются для представления возрастающих числовых последовательностей. · SERIAL - тип данных на основе INTEGER, позволяющий сформировать уникальное значение (например, для первичного ключа). При добавлении записи СУБД автоматически присваивает полю данного типа значение, получаемое из возрастающей последовательности целых чисел. В заключение следует сказать, что для всех типов данных имеется общее значение NULL - "не определено". Это значение имеет каждый элемент столбца до тех пор, пока в него не будут введены данные. При создании таблицы можно явно указать СУБД могут ли элементы того или иного столбца иметь значения NULL (это не допустимо, например, для столбца, являющего первичным ключом). Основные команды Microsoft SQL Server: Язык SQL предназначен для манипулирования данными в реляционных базах данных, определения структуры баз данных и для управления правами доступа к данным в многопользовательской среде. Поэтому, в язык SQL в качестве составных частей входят: · язык манипулирования данными (Data Manipulation Language, DML) · язык определения данных (Data Definition Language, DDL) · язык управления данными (Data Control Language, DCL). Подчеркнем, что это не отдельные языки, а различные команды одного языка. Такое деление проведено только лишь с точки зрения различного функционального назначения этих команд. Язык манипулирования данными используется, как это следует из его названия, для манипулирования данными в таблицах баз данных. Он состоит из 4 основных команд:
Язык определения данных используется для создания и изменения структуры базы данных и ее составных частей - таблиц, индексов, представлений (виртуальных таблиц), а также триггеров и сохраненных процедур. Основными его командами являются:
Язык управления данными используется для управления правами доступа к данным и выполнением процедур в многопользовательской среде. Более точно его можно назвать "язык управления доступом". Он состоит из двух основных команд:
С точки зрения прикладного интерфейса существуют две разновидности команд SQL: · интерактивный SQL · встроенный SQL. Интерактивный SQL используется в специальных утилитах (типа WISQL или DBD), позволяющих в интерактивном режиме вводить запросы с использованием команд SQL, посылать их для выполнения на сервер и получать результаты в предназначенном для этого окне. Встроенный SQL используется в прикладных программах, позволяя им посылать запросы к серверу и обрабатывать полученные результаты, в том числе комбинируя set-ориентированный и record-ориентированный подходы.
Программное обеспечение сервера базы данных обрабатывает запросы, инициализированные программным обеспечением клиента, отправляя результат обратно в базу данных клиента, пославшего запрос. Ядро SQL Server – сервер баз данных. Программное обеспечение клиента базы данных соединяется с программным обеспечением сервера баз данных, делает запрос, получает результаты и затем обрабатывает их. Microsoft SQL Server Management studio – программное обеспечение клиента базы данных. С помощью Microsoft SQL Server Management Studio можно просмотреть базу данных, сгенерированную в dbForge Studio for SQL Server, а также создавать таблицы базы данных не используя CASE-средства, с помощью собственных средств. Готовая база данных у меня уже есть, но я считаю правильным показать, как те же самые операции выполняются в Microsoft SQL Server Management Studio: 1)
При первом запуске программы Microsoft SQL Server Management Создание базы данных.
Для создания новой БД нужно в обозревателе объектов Microsoft SQL Server Management правым кликом мыши по каталогу «Базы данных» вызвать контекстное меню, в котором выбрать пункт «Создать базу данных». После этого появится окно создания базы данных. Создание таблиц.
После создания БД, она отображается в обозревателе решений в каталоге «Базы данных», развернув каталог с нашей БД мы увидим полный список компонентов БД. Для создания таблицы нужно нажав ПКМ на каталоге «Таблицы» вызвать контекстное меню, в котором выбрать первый пункт «Таблица…». Откроется окно создания таблиц.
Здесь мы создаём поля таблицы и выбираем тип данных поля, а также выбираем ключевое поле, для этого нужно нажать ПКМ на имени поля, которое мы хотим сделать ключевым, в контекстном меню нажать на пункт «Задать первичный ключ».
4) Создание связей.
Для создания связей (отношений) между таблицами нужно щелчком ПКМ по каталогу «Диаграммы базы данных» вызвать контекстное меню, в котором выбрать пункт «Создать диаграмму базы данных». Откроется окно, в котором выбираются таблицы, между которыми необходимо создать связь
Когда все таблицы выбраны нужно мышью перетянуть ключевое поле таблицы на поле другой таблицы, которое нужно назначить внешним ключом откроется окно создания связей в котором мы выбираем таблицу первичного ключа, таблицу в котором требуется создать внешний ключ и связываемые поля этих таблиц.
Таким образом создаём все необходимые связи между таблицами
Также можно создать базу данных используя язык запросов SQL. Для этого в Microsoft SQL Server Management нажимаем на кнопку панели инструментов «Создать запрос», откроется окно создания запроса, где будем вводить код на языке SQL.
Пример SQL кода для создания базы данных:
CREATE DATABASE [АИС "Магазин компьютерных товаров"] ON PRIMARY ( NAME = N'АИС "Магазин компьютерных товаров"', FILENAME = N'D:\SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\АИС _Магазин компьютерных товаров_.mdf', SIZE = 5120 KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024 KB ) LOG ON ( NAME = N'АИС "Магазин компьютерных товаров"_log', FILENAME = N'D:\SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\АИС _Магазин компьютерных товаров__log.ldf', SIZE = 1024 KB, MAXSIZE = UNLIMITED, FILEGROWTH = 10 % ) GO
ALTER DATABASE [АИС "Магазин компьютерных товаров"] SET ANSI_NULL_DEFAULT OFF, ANSI_NULLS OFF, ANSI_PADDING OFF, ANSI_WARNINGS OFF, ARITHABORT OFF, AUTO_CLOSE OFF, AUTO_CREATE_STATISTICS ON, AUTO_SHRINK OFF, AUTO_UPDATE_STATISTICS ON, AUTO_UPDATE_STATISTICS_ASYNC OFF,
CONCAT_NULL_YIELDS_NULL OFF, CURSOR_CLOSE_ON_COMMIT OFF, CURSOR_DEFAULT GLOBAL, DATE_CORRELATION_OPTIMIZATION OFF, DB_CHAINING OFF, HONOR_BROKER_PRIORITY OFF, MULTI_USER, NESTED_TRIGGERS = ON, NUMERIC_ROUNDABORT OFF, PAGE_VERIFY CHECKSUM, PARAMETERIZATION SIMPLE, QUOTED_IDENTIFIER OFF, READ_COMMITTED_SNAPSHOT OFF, RECOVERY FULL, RECURSIVE_TRIGGERS OFF, TRANSFORM_NOISE_WORDS = OFF, TRUSTWORTHY OFF WITH ROLLBACK IMMEDIATE GO
ALTER DATABASE [АИС "Магазин компьютерных товаров"] SET DISABLE_BROKER GO
ALTER DATABASE [АИС "Магазин компьютерных товаров"] SET ALLOW_SNAPSHOT_ISOLATION OFF GO
ALTER DATABASE [АИС "Магазин компьютерных товаров"] SET FILESTREAM (NON_TRANSACTED_ACCESS = OFF) GO
Пример SQL кода для создания таблиц со связями:
CREATE TABLE [АИС "Магазин компьютерных товаров"].dbo.Чек ( Код INT IDENTITY ,[Дата покупки] DATE NULL ,[Время покупки] TIME NULL ,[Код продавца] INT NULL ,[Код скидки] INT NULL ,[Код магазина] INT NULL ,CONSTRAINT PK_Чек PRIMARY KEY CLUSTERED (Код)/* Ключевое поле таблицы */ ,CONSTRAINT FK_Чек_Магазины_Код FOREIGN KEY ([Код магазина]) REFERENCES dbo.Магазины (Код) /* Установка связи (Внешний ключ таблицы)*/ ,CONSTRAINT FK_Чек_Продавцы_Код FOREIGN KEY ([Код продавца]) REFERENCES dbo.Продавцы (Код) /* Установка связи (Внешний ключ таблицы) */ ,CONSTRAINT FK_Чек_Скидка_Код FOREIGN KEY ([Код скидки]) REFERENCES dbo.Скидка (Код) /* Установка связи (Внешний ключ таблицы) */ ) ON [PRIMARY] GO
КГБ ПОУ ХПЭТ
КУРСОВАЯ РАБОТА
Дисциплина: МДК 01.02 Методы и средства проектирования ИС Тема: Разработка АИС «Магазин компьютерных товаров» КП 09.02.04.31.2016 Выполнил: Черепнин А.П. Студент группы ИС-31(11) Проверил: Зайчук С. В.
Хабаровск 2016г. Министерство образования и науки Хабаровского края КГБ ПОУ ХПЭТ ЗАДАНИЕ на курсовую работу по дисциплине
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-18; просмотров: 2556; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.15.185.147 (0.01 с.) |