Войти в мой кабинет
Регистрация
ГОТОВЫЕ РАБОТЫ / КУРСОВАЯ РАБОТА, ПЕДАГОГИКА

Разработка приложения для автоматизации учета студентов и их успеваемости в некотором государственном учебном заведении

irina_k200 408 руб. КУПИТЬ ЭТУ РАБОТУ
Страниц: 34 Заказ написания работы может стоить дешевле
Оригинальность: неизвестно После покупки вы можете повысить уникальность этой работы до 80-100% с помощью сервиса
Размещено: 12.09.2020
Актуальность данной темы, обусловлено тем, что в наше время информационных технологий удобство и комфорт сегодня на первом месте. Для этого чтобы упростить работу сотрудников учебных заведений и не только, создаются все больше программ для работ с базами данных, что в будущем очень упростит жизнь и работу людей. Для достижения поставленной в курсовой работе цели решались следующие задачи: 1. выявить актуальность создания приложений в данной области. 2. рассмотреть практику применения и актуальные вопросы программирования в среде . 3. разработать рекомендации по применению созданного приложения. Теоретической основой курсовой работы послужили исследования программистов в области создания прикладных приложений. Практическая часть работы выполнялась на основании практических работ выполненных во время занятий. Курсовой проект состоит из введения, тр?х глав, и заключения. Во введении обосновывается актуальность выбранной темы, формулируются цель и задачи исследования, указываются объект и предмет исследования. Первая глава посвящена исследованию теоретических вопросов, создания приложений в среде программирования Delphi. Во второй главе и третьей главе раскрыты понятия и виды объектов используемых в данной среде программирования. В заключении подведены итоги и сделаны выводы исследования.
Введение

Автоматизированная система управления - система "человек - машина", обеспечивающая эффективное функционирование объекта, в которой сбор и переработка информации, необходимой для реализации функций управления, осуществляется с применением средств автоматизации и вычислительной техники. В данной работе представлена автоматизированная система учета успеваемости студентов, предназначенная для автоматизации деятельности сотрудников по учету текущей и промежуточной аттестации студентов. Цель курсовой работы: исследовать возможность создания приложений по данной области в среде программирования Delphi. Объектом курсовой работы являются способы создания приложения в данной среде программирования. Предмет исследования курсовой работы – приложения созданные для разработки баз данных.
Содержание

Введение 3 Глава 1. Среда Delphi 5 1.1 Компонентный подход 5 Глава 2. Основные компоненты Delphi 15 2.1 Компонент Label – надпись (панель Standart) 15 2.2 Компонент Edit – поле редактирования (панель Standart ) 15 2.3 Стандартные окна для ввода и вывода сообщений………..………………………………………………………………17 2.4 Ввод данных из диалогового окна InputBox………………………………19 2.5 Компонент – Текстовая область Memo…………………………………....21 Глава 3. Создание электронного пособия для предметной области «автоматизация учета студентов и их успеваемости в некотором государственномучебномзаведении. »………………………………………..25 Заключение………………………………………………………………....……33 Приложения ……………………………………………………………………..35
Список литературы

1. Вендров А.М. Проектирование программного обеспечения экономических информационных систем. - М.: Финансы и статистика, 2015. - 352с.; 2. www.wikipedia.ru; 3. Дейт К. Дж. Введение в системы баз данных, 7-е издание - М.: Вильяме, 2016. - 1072с. 4. www.studopedia.net; 5. Заботина Н.Н. Проектирование информационных систем: Учебное пособие / Заботина Н.Н. - Братск: Филиал ГОУВПО "БГУЭП", 2017. - Ч.1 - 146 с. 6. Заботина Н.Н. Проектирование информационных систем: Учебное пособие / Заботина Н.Н. - Братск: Филиал ГОУВПО "БГУЭП", 2017. - Ч.2 - 132 с. 7. Мартин Ф., Кендалл С. UML Основы / Ф. Мартин, С. Кендалл. - СПб.: Символ-Плюс, 2018. - 192 с. 8. Разработка модулей ПО для компьютерных систем: учеб. для студ. сред. проф. Образования/ Г.Н. Федорова. – 3-е изд.,2019 г
Отрывок из работы

Глава 1. Среда Delphi. Borland Delphi — интегрированная среда разработки ПО для Microsoft Windows, Mac OS, iOS и Android на языке Delphi (ранее носившем название Object Pascal), созданная первоначально фирмой Borland и на данный момент принадлежащая и разрабатываемая Embarcadero Technologies. Embarcadero Delphi является частью пакета Embarcadero RAD Studio и поставляется в пяти редакциях: Community (распространяется бесплатно и имеет ограниченную лицензию на использование в коммерческих целях), Professional, Enterprise и Architect. Координирующий офис Embarcadero, ответственный за разработку Delphi, находится в Торонто, тогда как сама разработка сконцентрирована главным образом в Канаде и Испании. Среда предназначена для быстрой (RAD) разработки прикладного ПО для операционных систем Windows, Mac OS X, а также iOS и Android. Благодаря уникальной совокупности простоты языка и генерации машинного кода позволяет непосредственно, и, при желании, достаточно низкоуровнево взаимодействовать с операционной системой, а также с библиотеками, написанными на C/C++. Созданные программы независимы от стороннего ПО, как Microsoft .NET Framework или Java Virtual Machine. Выделение и освобождение памяти управляется в основном пользовательским кодом, что, с одной стороны, ужесточает требования к качеству кода, а с другой — делает возможным создание сложных приложений с высокими требованиями к отзывчивости (работа в реальном времени). В кросс-компиляторах для мобильных платформ предусмотрен автоматический подсчёт ссылок на объекты, облегчающий задачу управления их временем жизни. 1.1. Компонентный подход Исходный текст программы готовится в среде Delphi с помощью встроенного редактора исходных текстов. Этот редактор специализирован. Он отличается гибкими возможностями цветового выделения различных элементов текста программы и предоставляет возможность быстрого ввода часто встречающихся конструкций. Левая панель редактора представляет собой проводник, позволяющий быстро перемещаться между частями исходного текста и по структуре создаваемой программы. Важнейшая характеристика разрабатываемой программы - удобство ее пользовательского интерфейса, наличие и доступность необходимых элементов управления. В системе Delphi имеется специальный проектировщик форм, с помощью которого окна будущей программы подготавливаются в виде форм. Проектировщик позволяет подобрать оптимальные размеры окон, разместить и настроить всевозможные элементы управления и меню, добавить готовые изображения, указать заголовки, подсказки, подписи и т.д. На этапе проектирования программа как бы составляется из готовых компонентов - частей машинного кода, которые можно добавлять к ней с помощью всего нескольких щелчков мыши. Компоненты располагаются на палитре компонентов, разделенной на несколько самостоятельных панелей. Компоненты обладают наборами свойств, характеризующими их отличительные особенности. Свойства компонентов в процессе проектирования формы настраиваются с помощью инспектора объектов. Это специальная программа, показывающая список всех свойств данного компонента, отсортированных по категориям или в алфавитном порядке. Помимо свойств, компоненты содержат методы - программный код, обрабатывающий значения свойств, а также события - сообщения, которые компонент принимает от приложения, если во время работы программы выполняется определенное действие. Программист может самостоятельно формировать реакции программы на любые события каждого компонента. Компонентный подход к созданию программ позволяет повторно использовать готовые разработки и во многих случаях значительно повышает эффективность труда. С помощью типов данных, которые существовали в языках программирования еще тридцать лет назад, можно разработать очень большую программу, однако это потребует значительных усилий группы профессиональных программистов. А в одиночку, используя только числа, строки, массивы и записи, можно создать программу объемом в лучшем случае в несколько тысяч строк исходного текста. Это является своеобразным пределом возможностей человека. Дело в том, что структура данных исходного алгоритма дробится на элементарные, слишком маленькие и явно не связанные друг с другом и с программным кодом частички. Они связаны только через операторы присваивания, разбросанные по разным модулям. По мере роста объема исходных текстов корректно обрабатывать переменные, не затрагивая уже нормально функционирующие части программы, становится невозможно. В 80-х годах стали появляться первые коммерческие системы разработки, в которых была реализована новая парадигма программирования, так называемый объектный подход, что позволило резко повысить производительность труда программистов. Подход был основан на понятии объекта, типа данных, в котором сочетаются как свойства, сгруппированные данные (пример -- поля в записи), так и методы их обработки (подпрограммы). Фактически объект стал отражать реальные и даже абстрактные понятия окружающего мира. Например, автомобиль характеризуется такими свойствами, как марка, тип двигателя, наличие колес и руля, а файл -- названием и размером. "Методы" автомобиля определяют его способность двигаться в нужном направлении в соответствии со значениями своих свойств: объемом бензина в баке, углом поворота руля. Из файла можно считывать данные, менять их и записывать обратно. Благодаря этому теперь удается выполнять проектирование программ, основываясь на понятии объекта, что значительно проще и быстрее, чем раньше. Работать с привычными понятиями человеку легче, нежели с абстрактными числами. При этом специалистам удалось выделить большой набор объектов, которые нужны при создании самых разных программ. Эти объекты используются повторно, без расходования времени на их программирование. Именно такой подход и реализован в среде Delphi. В Паскале имеется четкое разграничение между понятиями объекта и класса. Класс -- это тип данных, а объект -- конкретный существующий в памяти компьютера экземпляр класса, переменная соответствующего типа. В ранних версиях Паскаля существовала некоторая терминологическая путаница, потому что первая реализация объектного подхода использовала для описания объектного типа данных ключевое слово object, и в то же время объектом назывались экземпляры этого типа. Применять слово object можно и сейчас, однако подобная возможность поддерживается только для совместимости со старыми версиями системы Delphi. Вместо ключевого слова object правильно использовать ключевое слово class. Классы имеют поля, свойства (напоминающие поля, но имеющие дополнительные описатели, определяющие механизмы записи и считывания данных, что позволяет повысить строгость декларирования внутренней структуры класса) и методы (подпрограммы, которые обрабатывают поля и свойства класса). Поля, свойства и методы класса называются членами класса. Когда описывается переменная типа class, для ее полей и свойств в памяти выделяется соответствующий объем, но машинный код, в который транслируются методы класса, наличествует в единственном экземпляре, так как меняться он не может, и хранить несколько одинаковых копий подпрограмм не имеет смысла. Когда объект создается, однократно вызывается специальный метод, называемый конструктором. В нем выполняются различные действия по начальной инициализации полей объекта. Когда объект уничтожается (например, он был описан внутри процедуры как локальная переменная и удаляется из памяти при ее завершении), вызывается другой метод -- деструктор, который выполняет различные дополнительные действия по освобождению памяти, если это необходимо. Явно вызывать конструктор и деструктор из программного кода нельзя. Это происходит только автоматически. Переменная, описанная как класс, фактически является указателем на экземпляр класса. Это сделано для повышения эффективности работы с ним. Однако при использовании таких переменных применять операции работы с указателями (^, @) не надо. Достаточно обычного обращения к ним как к обычным переменным, а к членам класса -- как к полям записи, через точку. Для реализации интерфейса Delphi используют библиотеку классов, которая содержит большое количество разнообразных классов, поддерживающих форму и различные компоненты формы (командные кнопки, поля редактирования и т.д.). Во время проектирования формы приложения Delphi автоматически добавляет в текст программы необходимые объекты. Если сразу после запуска Delphi посмотреть содержимое окна редактора кода, то там можно обнаружить следующие строки: type Tform1 = class (Tform) private { Private declarations} public { Public declarations} end; var Form1; Tform1 Это описание класса исходной, пустой формы приложения и объявление объекта - формы приложения. Когда программист, добавляя необходимые компоненты, создает форму, Delphi формирует описание класса формы. Когда программист создает функцию обработки события формы или ее компонента, Delphi добавляет объявление метода в описание класса формы приложения. Помимо классов визуальных компонентов в библиотеку классов входят и классы так называемых невизуальных компонентов, которые обеспечивают создание соответствующих объектов и доступ к их методам и свойствам. Существует базовая иерархия классов системы Delphi. Класс TObject лежит в основе всей иерархии классов. Он обладает самыми общими методами, присущими любому объекту Pascal. Класс TObject описывает основные принципы поведения объектов во время работы программы (создание, уничтожение, обработка событий и т.д.). На уровне класса TPersistent (наследник TObject) реализованы основные методы копирования содержимого объектов. Класс TComponent (наследник TPersistent) является основным родительским классом для всех классов, описывающих компоненты Delphi. В этот класс входит набор самых общих свойств, имеющихся у каждого компонента Delphi, и некоторые полезные методы. Класс TControl (наследник TComponent) служит основным классом для всех визуальных элементов управления. Если такой элемент управления является стандартным элементом Windows, то он базируется на еще одном промежуточном классе TWinControl (наследник класса TControl). И, наконец, форма - важнейший компонент Delphi, на котором основана вся работа этой системы по проектированию и разработке приложений. Форма (класс TForm) содержит богатый набор свойств, методов и событий, позволяющих легко настраивать и организовывать самые сложные алгоритмы ее функционирования. Суть объектно-ориентированного подхода к программированию заключается в трех принципах: инкапсуляции, наследовании и полиморфизме. Наследование Чтобы наиболее эффективно повторно использовать ранее созданные классы, одного сочетания данных и методов в единой структуре недостаточно. Например, автомобиль может быть легковым и грузовым, и соответствующие классы будут иметь как общие поля и методы, так и отличия (например, дополнительное свойство "грузовой кузов" и связанный с ним метод "разгрузить"). Однако полностью заново определять новый тип данных, если требуется изменить или добавить несколько новых свойств к старому типу, нерационально. Это плохо еще и потому, что если в метод, имеющийся в обоих классах, потребуется внести исправления, то их придется делать дважды, в двух одинаковых копиях подпрограмм. Чтобы избежать ненужной работы, в объектном программировании был введен принцип наследования свойств и методов. Программисту достаточно описать один базовый класс (например, "автомобиль"), а классы "легковой автомобиль" и "грузовой автомобиль" основывать на этом базовом классе. При этом будут наследоваться все поля, свойства и методы базового (или родительского) класса, а дополнительно описывать их не требуется. Цепочки наследования могут быть неограниченной длины. Так, у класса "грузовой автомобиль" могут быть классы-наследники (или дочерние классы) "МАЗ" и "КАМАЗ", обладающие дополнительными специфическими свойствами и методами (это классы, а не объекты; объектом будет конкретный грузовик МАЗ, а не марка этого автомобиля), у класса "кнопка" наследники -- "графическая кнопка", "круглая кнопка" и так далее. При этом различные методы для каждого из наследников разрешается переопределять. Например, метод "двигаться" для классов "МАЗ" и "КАМАЗ" будет, хоть и немного, но отличаться: по-разному расходуется горючее (снижается значение соответствующего свойства), по-разному набирается скорость и так далее. Полиморфизм Когда будет происходить обращение к переменной, относящейся к классу "КАМАЗ", и вызов унаследованного метода "двигаться", программе придется решить, какой конкретно метод надо вызвать: метод класса "автомобиль", "грузовой автомобиль" или "КАМАЗ". В соответствии с принципом полиморфизма решение принимается в зависимости от типа переменной, вызывающей этот метод. То есть, если переменная описана как относящаяся к типу "КАМАЗ", будет вызван метод "двигаться", определенный именно для КАМАЗа. Инкапсуляция Инкапсуляция позволяет разграничить доступ разработчиков к различным полям и свойствам класса, примерно так, как это сделано в модулях Delphi, когда из других модулей видима только интерфейсная часть. Точно так же и внутри классов некоторые поля и методы можно сделать свободно доступными для использования (видимыми) в любом месте программы, а другие поля и методы сделать доступными только внутри текущего модуля и собственных методов класса. Это позволяет скрыть внутри описания различные характеристики и возможности класса, чтобы сосредоточить внимание разработчиков, повторно использующих этот класс, на его важнейших свойствах. Кроме того, желательно не допускать бесконтрольного изменения значений свойств, так как это может привести к нарушению запланированной и сбалансированной взаимосвязи между этими свойствами. Например, нельзя бездумно изменить значение свойства "текущая скорость", просто записав в него новое число. Надо вызвать соответствующий метод, который учтет изменение потребления бензина и выполнит ряд дополнительных действий. Хорошим стилем программирования считается недоступность всех полей и свойств объекта для прямого изменения. Вместо этого создаются методы, позволяющие получить значение поля и занести в него новое значение. Сами поля помещаются в скрытую часть класса. События Помимо этих трех фундаментальных возможностей объектно-ориентированного программирования, в среде Delphi реализована новая характеристика объекта - возможность обработки так называемых событий, получаемых от системы Windows или самой программы. Этот принцип лежит в основе работы всех визуальных компонентов Delphi, которые обрабатывают различные события, возникающие в процессе выполнения программы. С помощью системы Delphi 7 можно создавать не только обычные программы (EXE-файлы), но и динамически подключаемые библиотеки DLL (своеобразные хранилища кода и ресурсов), новые элементы управления, а также компоненты, отвечающие требованиям различных стандартов на компонентные технологии (COM, ActiveX, CORBA и так далее). Потребность в ручном программировании возникает, только когда обойтись готовыми компонентами не удается. Таким образом, из данной главы следует значимость программы делфи как одной из главных и часто используемых программ объектно – ориентированного программирования. Глава 2. Основные компоненты Delphi. 2.1. Компонент Label – надпись (панель Standart) Компонент Label предназначен для размещения на форме текстовой информации. На форме размещаются объекты, соответствующие компонентам с палитры компонентов. Что бы создать на форме текстовое поле, надо: · Выбрать панель Standard (Стандартная); · Щелкнуть по кнопке Label (текстовое поле); · Щелкнуть на том месте формы, где требуется поместить текстовое поле. 2.2 Компонент Edit – поле редактирования (панель Standart ) Компонента Edit представляет собой одностороннее редактируемое текстовое поле. Обычно его используют для ввода или отображения текстовой информации. На форме размещаются объекты, соответствующие компонентам с палитры компонентов. Что бы создать на форме текстовое поле, надо: · Выбрать панель Standard (Стандартная); · Щелкнуть по кнопке Edit (текстовое поле); Щелкнуть на том месте формы, где требуется поместить текстовое поле. В этом месте появится новый элемент управления. Черные маркеры по контору объекта указывают, что он выделен. Эти маркеры предназначены для изменения размеров объекта с помощью мыши. По умолчанию в Delphi 7 принято, что название нового объекта совпадает с его заголовком. Это название дается средой Delphi по следующему принципу. Берется название компонента, и к нему добавляется порядковый номер, начиная с единицы. Если теперь на форму поместить еще одно текстовое поле, то его название будет Edit2. если теперь взглянуть на исходный текст класса TMyForm, то окажется, что в разделе Private появилось новое поле: Edit1: TEdit; Оно было добавлено средой Delphi 7 в описание класса TMeForm автоматически. У компонента TEdit (текстовое поле) свойства Caption (Заголовок) нет. Вместо него активно используется свойство Text (Текст), относящееся в инспекторе объектов к категории Localizable (настраиваемые). Это свойство содержит введенные пользователем данные в текстовом виде (тип String). Первоначально это свойство содержит строку, совпадающую с именем элемента управления (Edit1, Edit2). Текущее содержимое свойства Text (текст) каждого текстового поля формы лучше удалить и ввести вместо этого строки «0». Основные свойства компоненты Edit Свойство Описание свойства Name Имя в программе, используется для доступа к компоненту и его свойствам. Text Содержит вводимый или выводимый текст. Left Расстояние от левой границы компонента до левой границы формы. Top Расстояние от верхней границы компонента до верхней границы формы. Height Высота компонента. Width Ширина компонента. Font Шрифт, который используется для отображения текста. BorderStyle Вид рамки компонента: · Single – обычная; · None – отсутствует. AutoSize Определяет размер компонента: если значение True, вертикальный размер компонента определяется размером шрифта (Font. Size) при условии, что BorderStyle= beSingle. AutoSelect Определяет, будет ли автоматически выделяться весь текст при передаче фокуса в поле редактирования. MaxLength Максимальная длина текстовой строки. Если MaxLength=0, то длина строки не ограничена. Modified Определяет изменения в тексте: · True – текст изменялся; · False – в противном случае. ReadOnly Задает возможность ввода текста в поле редактирования: · True – ввод текста разрешен; · False – поле предназначено только для чтения. Таблица 1. Основные свойства компоненты Edit Пример: Написать программу перевода градусной меры угла в радианную меру. Разместим на форме четыре компоненты Label для обозначения Величины угла в градусной мере, Градусы и Минуты и вывода Величины угла в радианной мере. Для Градусов и Минут соответственно разместим 2 компоненты Edit, предворительно задав значение равное 0. Так же разместим кнопку Button1, для которой будем писать процедуру перевода градусной меры в радианную. 2.3 Стандартные окна для ввода и вывода сообщений. Окна сообщений используются для привлечения внимания пользователя. При помощи окна сообщений программа может проинформировать об ошибке в исходных данных, или запросить подтверждение выполнения необратимых операций. Вывести на экран окно с сообщением можно при помощи процедуры ShowMessage или функции MessageDlg. Процедура выводит на экран окно с текстом и командной кнопкой ОК. В общем виде конструкция вызова процедуры выглядит следующим образом: ShowMessage (сообщение). Сообщение – это текст, который будет выведен в окне. Следует обратить внимание на то, что в заголовке окна сообщения вводимой процедуры ShowMessage указывается название приложения, которое задается на вкладке Application окна ProjectOptions. Если имя приложения не задано, то в заголовке будет имя исполнителя. MessageDlg MessageDlg является более универсальным, функция позволяет поместить в окно сообщения один из стандартных значков. Задать количество и тип команд кнопок и определить какую из кнопок нажал пользователь. В общем виде конструкция вызова функции выглядит следующим образом: MessageDlg (сообщение, тип_сообщения, [список кнопок], справка). Параметр Тип окна сообщения mtInformation Информационное mtVarning Предупредительное mtError Сообщение об ошибке mtConfirmation Запрос на подтверждение mtCustom Обычное Таблица 1. Параметры и типы окон в MessageDlg Список кнопок – это константа, перечисление происходит через запятую, они определяют тип кнопок окна сообщения. Справка – номер окна справочной системы, которая будет выведена на экран если нажать на клавишу F1. Параметр равен 0, если исполнительная кнопка не предусмотрена. 2.4 Ввод данных из диалогового окна InputBox. Стандартное диалоговое окно InputBox используется для ввода небольших фрагментов текста. Его внешний вид определяют следующие элементы: • строка заголовка; • приглашение к вводу; • поле ввода со значением, предлагаемым по умолчанию; • две кнопки (Ok и Cancel). Функция InputBox выводит на экран диалоговое окно, содержащее сообщение и поле ввода, устанавливает режим ожидания ввода текста пользователем или нажатие кнопки, а затем возвращает значение типа String, содержащее текст, введенный в иоле ввода. InputBox (приглашение [, заголовок] [, умолчание] [, Хпоз] [Упоз] [, файл справки, контекст]) В этой записи приглашение — строковое выражение, отображаемое как сообщение в диалоговом окне. Должно служить подсказкой пользователю, какую информацию он должен ввести в специальное поле ввода, находящееся в этом окне; заголовок — строковое выражение, отображаемое в заголовке диалогового окна. Если параметр опущен, в строку заголовка помещается имя приложения; умолчание — строковое выражение, отображаемое в иоле ввода и используемое но умолчанию, если пользователь нс введет другой строки. Если этот параметр опущен, поле ввода изображается пустым; Хпоз — числовое выражение, задающее расстояние по горизонтали между левой границей диалогового окна и левым краем экрана (в твипах). Если параметр опущен, то диалоговое окно выравнивается по центру экрана по горизонтали; Упоз — числовое выражение, задающее расстояние по вертикали между верхней границей диалогового окна и краем экрана (в твипах). Если опущен, то диалоговое окно помещается по вертикали примерно на 1/3 высоты экрана. Примечание. Твип (twip) — единица измерения расстояния для Visual Basic, устанавливаемая по умолчанию (1 дюйм = 1440 твип). Возвращаемым значением данной функции является информация, вводимая пользователем. Visual Basic автоматически приписывает этой информации тип String. Примечание. Если нажимается кнопка ОК или клавиша Enter, функция возвращает пустую строку («»). Функцию InputBox с двумя и большим числом аргументов можно использовать только в выражении. Наличие запятых, соответствующих отсутствующим аргументам, является обязательным. На рисунке приведен пример решения задачи, демонстрирующий использование стандартных диалоговых окон для ввода фамилии, имени и отчества.
Не смогли найти подходящую работу?
Вы можете заказать учебную работу от 100 рублей у наших авторов.
Оформите заказ и авторы начнут откликаться уже через 5 мин!
Похожие работы
Курсовая работа, Педагогика, 42 страницы
420 руб.
Курсовая работа, Педагогика, 51 страница
420 руб.
Курсовая работа, Педагогика, 41 страница
492 руб.
Служба поддержки сервиса
+7(499)346-70-08
Принимаем к оплате
Способы оплаты
© «Препод24»

Все права защищены

Разработка движка сайта

/slider/1.jpg /slider/2.jpg /slider/3.jpg /slider/4.jpg /slider/5.jpg