Главная страница « Информация « ООАП «

Варианты практического задания по ООАП/МАППО для групп 528, 620, 623, 627. 2019-20 учебный год


«Нет проблем! Мы можем покончить с этой ерундой за выходные!»
Э. Йордон «Путь камикадзе»

Требования


В каждом из предложенных вариантов требуется при помощи CASE-средства Visual Paradigm 16.0 (16.1) Community Edition построить UML модель программного обеспечения. Выполнять задание следует самостоятельно, не используя решения, выполненные другими студентами. При выявлении заимствований из чужих решений задание не может быть зачтено.
Процесс создания модели состоит из нескольких этапов, по окончании каждого из которых производится сдача полученных результатов:

  1. Создание модели требований (обязательный для выполнения этап, контрольный срок 15 ноября, полный балл 10).

  2. Создание модели анализа (обязательный для выполнения этап, контрольный срок 6 декабря, полный балл 15).

  3. Создание проектной модели системы (обязательный для выполнения этап, контрольный срок 20 декабря, полный балл 15).

  4. Составление отчёта по модели (этап может быть выполнен по желанию, для зарабатывания дополнительных баллов, полный балл 10).

Период приёма сдаваемых результатов по этапам 1-3 завершается по истечении астрономического 2019 года. За невыполненные и несданные полностью обязательные этапы задания их полные баллы вычитаются из набранной Вами суммы баллов. За каждую полную неделю опоздания после контрольного срока начисляется штраф в размере 25% полного балла за этап. Штраф, достигший 100%, более не растёт. Этап может быть сдан со штрафом 100%, при этом не будет вычета полного балла за этап из общей суммы. В период зачётных и экзаменационных сессий рост штрафов может быть ускорен.

Процесс моделирования должен проходить так, как это описано в учебном пособии (см. Visual Paradigm). Структура модели должна соответствовать структуре, предусмотренной технологией Unified Process. Начинать работу следует не с пустого проекта, а с заготовки для Visual Paradigm 16.0 (16.1), как это описано в пособии.

При работе над моделью требований (1й этап) рекомендуется сначала создать эскиз и отправить на проверку. Эскизом является скриншот диаграммы вариантов использования, на которую помещены все действующие лица и все варианты использования «уровня моря». Скриншот и текстовое указание трёх ключевых ВИ рекомендуется отправить по электронной почте лектору. После согласования с лектором можно продолжить работу по первому этапу.

Сдаваемая полная модель требований (готовый 1й этап) должна удовлетворять следующим требованиям. В отдельном сопроводительном файле (doc / pdf) должны быть объединены глоссарий проекта, составленный в виде таблицы, а также тексты описаний всех действующих лиц и всех вариантов использования. Описания должны быть составлены на русском языке. Полные описания ключевых вариантов использования должны предшествовать кратким описаниям остальных вариантов использования. В модели Visual Paradigm (отправленной как RAR-архив или 7z-архив с одним единственным файлом внутри -- VPP-файлом проекта -- файлом, имя которого имеет вид filename.vpp) должна присутствовать диаграмма вариантов использования системы. Каждое действующее лицо (actor) и каждый вариант использования из модели должны быть описаны в сопроводительном файле. Описание действующего лица должно коротко (в одну-две строки) сообщать о роли данного лица. Три ключевых варианта использования должны быть описаны полностью, остальные – лишь кратко (одним-двумя абзацами). Выбирать ключевые варианты использования следует так, чтобы они относились к основному функционалу системы. Их выбор обязательно должен быть согласован с лектором. Вход в систему, как и выход из неё не могут быть назначены ключевыми вариантами использования. В кратком описании варианта использования указываются основные действия (шаги) системы и действующих лиц, а также перечисляются особые случаи, соответствующие альтернативным потокам. Краткое описание не подробно, так в нём нет шагов альтернативных потоков и второстепенных шагов. Полное описание (ключевого) варианта использования должно включать в себя краткое описание, предусловие, постусловие, потоки событий (основной и альтернативные – один или более, подчинённые, если есть) и постусловие. Постусловие должно быть не пусто, оно составляется из двух частей: гарантии успеха (что истинно по окончании основного потока) и минимальных гарантий (что истинно всегда, в том числе при неуспехе). Альтернативные и подчинённые потоки не должны быть тривиальными, состоящими из 1 шага. Они не должны дублировать друг друга (отличаться лишь названиями и/или 2-3 словами). Для одного из 3х ключевых вариантов использования должна быть составлена диаграмма деятельности, моделирующая его основной поток и альтернативные потоки. Диаграммы деятельности, моделирующие вход в систему, не принимаются.

До 31 декабря 2019 г. включительно можно заработать дополнительные баллы, добавив в модель помимо трёх ключевых вариантов использования 1 или 2 дополнительных ключевых ВИ. Каждый дополнительный ключевой ВИ в модели требований (полное описание + моделирующая его диаграмма деятельности) даёт 2 балла. Сделанное сверх указанной границы не оценивается, не рассматривается. Присланное после окончания астрономического 2019 года не оценивается, не рассматривается. Штрафы за дополнительное моделирование не начисляются. При отправке результатов в электронном письме должна быть явно сообщена информация о дополнительном моделировании. Вход в систему, как и выход из неё не могут быть выбраны в качестве дополнительных ВИ.

При работе над моделью анализа (2й этап) рекомендуется сначала создать первую версию диаграммы ключевых абстракций и первую версию реализации одного из ключевых ВИ. Архив файла проекта и текст с указанием имени реализованного ВИ рекомендуется отправить по электронной почте лектору. После согласования первой версии модели анализа с лектором можно продолжить работу по второму этапу.

Сдаваемая полная модель анализа (готовый 2й этап) должна удовлетворять перечисленным ниже требованиям. В Analysis Model должна быть создана диаграмма KeyAbstractions, на которой отображены все классы – ключевые абстракции, а также перечислимые типы и связи между ними. Следует создать пакет, названный Usecase realizations, внутри Analysis Model. В этом пакете следует для каждого из трёх ключевых вариантов использования, выбранных и описанных на первом этапе, создать отдельную кооперацию, содержащую относящиеся к реализации этого варианта использования элементы модели:

  • диаграммы последовательности, реализующие потоки варианта использования;

  • диаграмму классов VOPC (View of Participating Classes), на которой представлены все классы анализа, участвующие в реализации этого варианта использования.

Все классы анализа следует разместить непосредственно в пакете Analysis Model (на верхнем уровне), а не внутри коопераций. Созданные диаграммы могут содержать необходимые пояснения в виде примечаний. На диаграммах последовательности ветвления и циклы должны быть промоделированы с помощью комбинированных фрагментов. Не следует увлекаться усложнением потоков -- зацикливанием, дублированием и проч.. Если в реализации варианта использования происходит обработка данных, относящихся к предметной области, то на диаграммах последовательности должны присутствовать экземпляры соответствующих классов-сущностей (к ним должны быть направлены сообщения-геттеры/сеттеры), а на диаграмме VOPC должны присутствовать классы-сущности (связанные ассоциациями с контроллерами и, если необходимо, то и с граничными классами).

До 31 декабря 2019 г. включительно можно заработать дополнительные баллы, добавив в модель анализа помимо реализаций трёх ключевых вариантов использования реализации 1 или 2 дополнительных, при условии, что это те же дополнительные ВИ, которыми уже была ранее пополнена модель требований. Каждая добавленная реализация (диаграмма VOPC + диаграммы последовательности для потоков событий) даёт 4 балла. Сделанное сверх указанной границы не оценивается, не рассматривается. Присланное после конца астрономического 2019 года не оценивается, не рассматривается. Штрафы за дополнительное моделирование не начисляются. При отправке результатов в электронном письме должна быть явно сообщена информация о дополнительном моделировании.

При работе над проектной моделью (третий этап) требуется:

  1. Разбить систему на 3 уровня (Application, Business Services, Middleware).

  2. Создать структуру пакетов внутри Design model, как это описано в методичке.

  3. Создать диаграмму размещения внутри Deployment View. Для встроенных систем (варианты со словом «терминал» в названии, вариант «Пиццамат», вариант «Турникет») диаграмма размещения должна изображать связи между процессором и устройствами, а также узлами внешних систем. В остальных вариантах диаграмма размещения показывает узлы вычислительной среды системы, узлы внешних систем, связи между ними и размещение процессов разрабатываемой системы по узлам. Для упрощения допускается и рекомендуется рисовать среды выполнения без объемлющих их аппаратных узлов.

  4. Разместить классы по пакетам в Design model, как это описано в методичке и рассказано в лекциях.

  5. Выделить не менее чем одну подсистему. В каких-то вариантах предусмотрена работа с устойчивыми объектами. Её следует поручить подсистеме обеспечения устойчивости (т. е., взаимодействия с БД на основе JDBC). В каких-то вариантах предусмотрен обмен данными / запросами с внешней программной системой. Его реализацию следует поручить подсистеме взаимодействия с внешним ПО на основе XML-RPC. Одну из подсистем следует спроектировать, как это описано в методичке и рассказано на лекциях.

  6. Следует создать интерфейс подсистемы, дать полные сигнатуры его операциям. Описание интерфейса поместить в сопроводительный файл, где указать краткое описание (ответственность подсистемы) и таблицу с описанием операций (полная сигнатура, назначение операции).

  7. Для подсистемы создать класс-фасад («subsystem proxy») и при необходимости другие классы подсистемы. На отдельной диаграмме классов показать связи между классами подсистемы, а также связи между классами подсистемы и элементами модели, лежащими вне подсистемы. Создать диаграммы последовательности для описания реализации операций интерфейса подсистемы. При наличии в интерфейсе нескольких однотипных операций следует промоделировать по одной операции каждого типа (например, один «read», один «update», один «delete», один «create»).

  8. Изменить созданные ранее реализации вариантов использования, указав на них линии жизни экземпляров классов, реализующих интерфейс подсистемы (типом таких объектов должен быть указан интерфейс подсистемы).

  9. Уточнить связи между классами системы, заменяя необязательные ассоциации на зависимости, указывая направления у всех оставшихся ассоциаций, выбирая при необходимости тип для ассоциаций «часть -- целое»: агрегация или композиция, уместно добавляя квалификаторы и/или свойства полюсов ассоциаций (ordered, nonunique).

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

  11. Каждый класс (ключевую абстракцию, участника реализаций вариантов использования, класс подсистемы) снабдить описанием, помещённым в общий сопроводительный файл, куда ранее было помещено описание интерфейса подсистемы. Описание класса должно включать в себя краткое указание ответственности класса, описания атрибутов и операций (с указанием для каждого атрибута и каждой операции полной сигнатуры и его/её назначения). Не описывайте тривиальные операции с очевидной сигнатурой: геттеры, сеттеры, конструкторы без параметров.

  12. Для описания поведения экземпляров отдельных классов со сложным поведением построить диаграммы состояний. В проектной модели должна быть хотя бы одна нетривиальная диаграмма состояний с действиями. Не следует выбирать для составления диаграммы состояний граничный класс. Подходящим кандидатом для моделирования диаграммы состояний, как правило, является класс-ключевая абстракция или «subsystem proxy»-класс подсистемы.

  13. Построить диаграмму деятельности для моделирования сложного метода с альтернативами и/или циклами. В проектной модели должна быть хотя бы одна нетривиальная диаграмма деятельности, моделирующая метод какой-либо операции некоторого класса. Нетривиальными считаются диаграммы деятельности с ветвлениями, циклами, структурированными узлами.

  14. Разработать схему реляционной базы данных и отобразить её в виде диаграммы классов со стереотипами из специализированного профиля UML (во всех вариантах).

До 31 декабря 2019 г. можно заработать дополнительные баллы, добавив в проектную модель помимо реализаций трёх ключевых вариантов использования реализации 1 или 2 дополнительных, при условии, что это те же дополнительные ВИ, которыми уже были ранее пополнены модель требований и модель анализа. Каждая добавленная реализация (VOPC, диаграммы последовательности для потоков событий) даёт 4 балла. Либо можно смоделировать вторую подсистему в дополнение к первой, при условии, что подсистемы базируются на разных архитектурных механизмах. Реализация второй подсистемы даёт 4 балла. Сделанное сверх указанной границы не оценивается, не рассматривается. Присланное после конца астрономического 2019 года не оценивается, не рассматривается. Штрафы за дополнительное моделирование не начисляются. При отправке результатов в электронном письме должна быть явно сообщена информация о дополнительном моделировании.

Требования по составлению отчёта опубликованы отдельно [html].

Список вариантов


1. Ветклиника

2. Склад

3. Железнодорожная касса

4. Железнодорожный терминал

5. Авиабилетный терминал

6. Турникет станции городского транспорта

7. Терминал оплаты городского транспорта

8. Терминал выдачи заказов

9. Интернет-магазин

10. Пиццамат

11. Система курьерской службы

12. Терминал курьерской службы

13. Информационная система университета

14. Ломбард

15. Онлайновые отзывы

16. Система «Нагрузка»

17. Терминал службы «единого окна»

Вариант 1. Ветклиника


Система автоматизации работы ветеринарной клиники доступна для всех её сотрудников, которые с её помощью работают с данными о ветеринарах, о пациентах клиники (домашних животных) и о клиентах клиники (владельцах домашних животных). Сотрудник регистратуры при помощи системы поддерживает в актуальном состоянии данные о ветеринарных врачах (ф., и., о., дата рождения, стаж, специальность или специальности, график работы по дням недели, телефон, e-mail). Также система даёт возможность сотруднику вводить данные о новом пациенте (вид, кличка, пол, год рождения, ветеринарная карта с историей болезни) и его владельце (ф., и., о., адрес, телефон, e-mail, размер персональной скидки). Предполагается, что в одно и то же время клиент клиники не может быть владельцем разных домашних животных с совпадающими кличками. У разных клиентов клички животных могут совпадать.

Врач при помощи системы отмечает оказанные пациентам медицинские услуги (обследование, прививка, процедура, операция) с указанием даты и стоимости, а также выписанные клиентам рецепты на лекарственные средства. Также при помощи системы врач ведёт истории болезней своих пациентов. Клиенты обращаются в регистратуру очно или по телефону для записи на приём к специалисту. Сведения о назначенных приёмах заносятся в систему.

Архив системы содержит сведения о прошлых приёмах (давностью от полугода и более), об оказанных в прошлом услугах (полгода и древнее), о клиентах и пациентах, не обращавшихся в клинику более двух лет. Перевод данных в архив происходит автоматически в конце каждого месяца. Работник регистратуры может удалять данные из архива указывая либо период времени, либо клиента/пациента, к которому они относятся. Система ветклиники по требованию пользователя формирует и выдаёт на печать следующую справочную информацию:

  • недельный график работы ветеринаров;

  • перечень услуг и рецептов, относящихся к отдельному пациенту, оказанных/выписанных в заданный период времени;

  • счёт клиенту клиники на оплату медицинской услуги;

  • рецепт клиенту на выписанное для пациента лекарство.

В ходе выполнения задания должна быть разработана схема реляционной базы данных системы. Эта БД является частью системы, а не каким-то внешним хранилищем данных.

Вариант 2. Склад


На товарном складе для каждого товара фиксируется место хранения (№ помещения, № стеллажа, № полки), количество товара и его наименование. Единицы измерения товаров бывают разные: штуки, килограммы, коробки и др. Система складского учёта должна обеспечивать добавление информации о новом товаре, изменение или удаление информации об имеющемся товаре, хранение (добавление, изменение и удаление) информации о поставщиках и покупателях, включающей в себя название фирмы, её адрес и телефон. В системе учитывается приход товаров от поставщиков. В каждом приходе товаров могут содержаться несколько позиций, в каждой позиции указываются наименование товара и его количество. После оформления прихода товаров в системе их количество в инвентаризационной описи соответственно увеличивается и вносятся данные о том, на какие места хранения помещены пришедшие товары. Один и тот же товар может одновременно находиться на складе на разных местах хранения.
Товары со склада отпускаются покупателям по расходным накладным. В каждой накладной могут содержаться несколько позиций, в каждой позиции указываются наименование товара и его количество. После оформления расхода товара в системе количество товара в инвентаризационной описи соответственно уменьшается. Количество расходуемого товара не может превысить общее количество этого товара на складе.
Система складского учёта по требованию пользователя формирует и выдаёт на печать следующую справочную информацию:

  • список всех товаров;

  • инвентаризационную опись товаров, имеющихся в наличии;

  • список товаров, количество которых необходимо пополнить;

  • список товаров, поставляемых данным поставщиком;

  • все позиции в каком-либо приходе товара;

  • все позиции в какой-либо расходной накладной.

Система осуществляет поиск информации о клиенте или поставщике по части названия фирмы. Это необходимо, чтобы работники склада могли связаться с фирмой по какому-либо вопросу.
В ходе выполнения этого варианта задания должна быть разработана схема реляционной базы данных системы, хранящей информацию о товарах, приходах и расходах товара, поставщиках и клиентах. Эта БД является частью системы, а не каким-то внешним хранилищем данных.

Вариант 3. Железнодорожная касса


Онлайновая железнодорожная касса представляет собой web-сайт службы продажи билетов на пассажирские поезда.
Перед тем как впервые воспользоваться услугами кассы клиент должен зарегистрироваться. В ходе регистрации он указывает данные о себе (ф. и. о., телефон, адрес электронной почты, паспортные данные) и получает логин и пароль (логины клиентов совпадают с их email, у разных клиентов они должны быть разными).

Войдя в систему, клиент может ознакомиться с расписанием поездов, указав станцию отправления, станцию прибытия и дату. Для продажи билетов доступны поезда, время до отправления которых находится в диапазоне от 6 часов до 45 суток. Для каждого поезда в расписании указаны номер поезда, начальная и конечная станция, время отправления от станции, нужной клиенту, время прибытия на станцию, нужную клиенту, время в пути и значок о наличии/отсутствии доступных для покупки билетов. Клиенту даётся возможность сортировки расписания по номеру поезда, времени отправления или прибытия, наличию билетов. Выбрав поезд в расписании, пассажир может купить нужное ему количество билетов. Единовременно одному клиенту система продаёт не более чем 4 билета на один поезд. Система сообщает клиенту перечень вагонов в поезде, где есть свободные места. После выбора вагона, система выводит схему расположения мест в поезде, отмечает на схеме места, доступные для покупки. Цена билета зависит от поезда, станций отправления и прибытия, времени года (летом билеты дороже, чем в другое время года). Билеты могут быть получены клиентом до начала отправления поезда в кассе вокзала или станции или в терминалах выдачи электронных билетов. Указав свободные места в поезде и сведения о пассажирах -- владельцах билетов (ф., и., о, № паспорта -- без этих полных сведений билеты не продаются), а также реквизиты своей банковской карты, клиент должен подтвердить покупку билетов. Получив сведения и подтверждение от клиента, система запрашивает списание средств у банковской системы. В ответ может придти либо подтверждение списания, либо сообщение об ошибке (недостаточно средств, неверные реквизиты, нет связи). При успешной оплате система сообщает клиенту уникальный код, который он использует для получения билета в кассе или в терминале. Соответствующие места помечаются, как выкупленные. Если возникла ошибка, система даёт клиенту возможность повторить ввод сведений о пассажирах, реквизитов и повторить попытку. Покупка электронного билета должна быть совершена за не более чем 7 минут. Всё это время выбранные клиентом места помечаются как недоступные для покупки другими клиентами. Допускается приобретение пассажиром нескольких билетов на своё собственное имя, если все билеты находятся в одном купе, в одном СВ, в одном люксе. Такая покупка означает, что пассажир желает ехать без попутчиков.

Система может получить сведения о том, что какие-то билеты были куплены в кассе вокзала (станции) или терминале вокзала. В таком случае система не допускает онлайновой продажи тех же самых билетов. Клиент может оформить полный или частичный возврат билетов за сутки до отправления поезда. Для этого он сообщает системе уникальный код, полученный им при покупке. Получив код, система выводит сведения о купленных билетах. Клиент указывает, какие именно билеты он желает вернуть. Возврат средств осуществляется через банковскую систему с использованием реквизитов, указанных при покупке. Возвращённые билеты могут быть куплены, если выполнены ограничения по времени. Сведения о возврате система может получить от касс вокзала. По истечении года с момента покупки билета данные автоматически удаляются из системы. Данные о возвратах также хранятся лишь год.
В обязанности работников онлайновой кассы входит внесение в систему сведений о расписании поездов и о билетных тарифах. Данные о поезде – номер, вид: фирменный, скорый, пассажирский; название поезда; начальная станция, конечная станция, даты, по которым поезд отправляется, маршрут поезда (все станции, где он останавливается с указанием времени прибытия и отправления), состав поезда (с указанием для каждого вагона его типа и номера); – хранятся в системе. Сведения о тарифе содержат номер поезда, время года (лето или нет), станцию отправления, станцию прибытия, тип вагона (сидячий, плацкартный, купе, СВ, люкс), цену билета. По истечении 1 года тарифы подлежат обновлению.

Система ведёт учёт средств, потраченных клиентом для покупки билетов онлайн. Каждые 100 рублей, таких средств приносят клиенту 1 бонусный балл после завершения его поездки по купленному онлайн билету. Бонусными баллами клиенты могут оплачивать часть стоимости приобретаемых онлайн билетов (не более 25% от их стоимости).

Следует разработать схему реляционной базы данных онлайновой железнодорожной кассы. Эта БД является частью системы, а не каким-то внешним хранилищем данных.

Вариант 4. Железнодорожный терминал


Терминал предоставляет пассажирам сведения о расписании поездов, а также позволяет приобретать билеты либо распечатывать электронные билеты, ранее купленные онлайн. В состав терминала входят следующие устройства: сенсорный дисплей, часы, кардридер, линия связи с банком, принтер для билетов, линия связи с сервером железной дороги.

Для приобретения билета пассажир должен указать дату, станцию отправления, станцию прибытия, тип билета (сидячий, плацкарт, купе, СВ, люкс). При желании, пассажир может указать номер поезда. Цена билета зависит от его типа, поезда, станций отправления и прибытия, времени года (летом билеты дороже, чем в другое время года). Далее терминал выводит список подходящих поездов, на которых есть незанятые места, того типа, который нужен пользователю. Эти сведения терминал получает от сервера железной дороги. Затем пассажир должен выбрать поезд. Система предлагает ему выбрать вагон. После выбора вагона она выводит схему расположения в нём свободных мест. Пассажир указывает свободные места в поезде и сведения о пассажирах -- владельцах билетов (ф., и., о, № паспорта -- без этих полных сведений билеты не продаются). Единовременно на один поезд пассажир может купить не более чем 4 билета. Допускается приобретение пассажиром нескольких билетов на своё собственное имя, если все билеты находятся в одном купе, в одном СВ, в одном люксе. Такая покупка означает, что пассажир желает ехать без попутчиков. Сообщив данные, пассажир должен вставить в ридер банковскую карту. После вставки банковской карты он должен ввести четырёхзначный PIN. По введённому PIN терминал рассчитывает некоторое другое число (PVV) и вместе со стоимостью билетов и данными карты, считанными с её магнитной полосы, отправляет в банковскую систему. В ответ может придти либо подтверждение успешной оплаты, либо отказ и указание причины отказа. Если успешная оплата подтверждена, то сервер железной дороги информируется о проданных билетах, терминал печатает билеты, указывая в каждом № билета, тип билета, № поезда, сведения об отправлении (станцию, дату и время) и прибытии (станцию, дату и время), вагон, место и цену. На этом покупка завершается. Если оплата не подтверждена, то пассажир информируется о неудаче и его обслуживание на этом прекращается. В ходе покупки пассажир может раздумать и до момента оплаты поменять тип билета и другие параметры, или отказаться от покупки. Продажа билетов через терминал прекращается за 1 час до отправления поезда. Покупка билета должна быть совершена за не более чем 7 минут.

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

Терминал может быть использован для распечатки электронных билетов, купленных онлайн. Пассажир должен указать свой номер мобильного телефона и код, полученный в онлайновой кассе при покупке. Получив эти сведения, терминал обращается на сервер железной дороги с запросом. Если данные верны и билеты ранее не были распечатаны, то терминал выводит на экран сведения о билетах и просит пассажира подтвердить печать. Затем осуществляется печать билетов. Далее терминал сообщает серверу железной дороги, о том, что бумажные билеты выданы пассажиру.

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

Терминал может быть использован для возврата электронных билетов. При возврате пассажир электронного билета сообщает свой номер мобильного телефона и код, полученный при покупке. Терминал получает с сервера железной дороги сведения о приобретённых билетах. Если эти билеты не были распечатаны, их можно вернуть. Пассажир должен указать, какие именно билеты он возвращает (необязательно все). После подтверждения от пассажира терминал просит вставить а ридер банковскую карту. Процедура запроса и обработки PIN совпадает с описанной выше. Банковская система получает запрос на возврат средств. Если операция одобрена, то сервер железной дороги получает сведения о возвращённых билетах. Если возврат средств неудачен, то пассажир информируется о неудаче и его обслуживание на этом прекращается. Возврат билетов возможен не позднее чем за сутки до отправления поезда.

Вариант задания предусматривает разработку схемы реляционной базы данных сервера железной дороги, которая является внешней по отношению к терминалу и в которой хранятся сведения о расписании, тарифах, наличии мест и билетах. Собственной БД в терминале нет.

Вариант 5. Авиабилетный терминал


Терминал предоставляет авиапассажирам сведения о расписании авиарейсов, а также позволяет приобретать билеты либо распечатывать электронные билеты, ранее купленные онлайн. В состав терминала входят следующие устройства: сенсорный дисплей, часы, кардридер, линия связи с банком, принтер для билетов, линия связи с сервером авиакомпании.

Для приобретения билета пассажир должен указать дату, город вылета, город прилёта, класс обслуживания (экономический, бизнес-класс, первый класс). При желании, авиапассажир может указать номер рейса. Цена билета зависит от класса обслуживания, номера рейса, времени покупки (билеты, приобретаемые за 60 суток до вылета, предлагаются со скидкой 20%). Далее терминал выводит список подходящих рейсов, на которых есть незанятые места, того класса обслуживания, который нужен пользователю. Эти сведения терминал получает от сервера авиакомпании. Затем авиапассажир должен выбрать рейс (если он не сделал этого ранее, указав известный ему номер). Авиапассажир указывает сведения о владельцах билетов (ф., и., о, № паспорта -- без этих полных сведений билеты не продаются). Единовременно одному клиенту система продаёт не более чем 3 билета на один рейс. На своё имя пассажир не может купить более чем один билет на один и тот же рейс, если время вылета совпадает. Допускается приобретение пассажиром нескольких билетов на своё собственное имя на разные рейсы, вылетающие в разное время. Сообщив данные, пассажир должен вставить в ридер банковскую карту. После вставки банковской карты он должен ввести четырёхзначный PIN. По введённому PIN терминал рассчитывает некоторое другое число (PVV) и вместе со стоимостью билетов и данными карты, считанными с её магнитной полосы, отправляет в банковскую систему. В ответ может придти либо подтверждение списания средств, либо отказ с указанием причин. Если операция одобрена, сервер авиакомпании информируется о проданных билетах, терминал печатает билеты, указывая в каждом № билета, класс обслуживания, № рейса, сведения о прилёте и вылете (аэропорты, даты и время) и цену. На этом покупка завершается. Если оплата не подтверждена, то пассажир информируется о неудаче и его обслуживание на этом прекращается. В ходе покупки пассажир может раздумать и до момента оплаты поменять класс обслуживания и другие параметры, или отказаться от покупки. Продажа билетов через терминал прекращается за 2 часа до вылета рейса. Покупка электронного билета должна быть совершена за не более чем 9 минут.

По просьбе клиента терминал может искать и предлагать для покупки билеты не на прямые, а на транзитные перелёты. Транзитный перелёт состоит из нескольких рейсов с пересадками, стыкующихся по аэропорту прилёта и вылета. Два рейса могут состыковаться, если время между прилётом и вылетом не менее чем 3 часа. Цена билета на транзитный перелёт определяется как сумма цен билетов на рейсы, из которых составлен перелёт.

Терминал может выдать расписание рейсов на определённую дату между двумя указанными пассажиром городами. О каждом рейсе сообщается номер, аэропорт вылета, аэропорт прилёта, время вылета, время прилёта, длительность рейса. Ознакомившись с расписанием, пассажир может вернуться в главное меню.

Терминал может быть использован для распечатки электронных билетов, купленных онлайн. Пассажир должен указать свой номер мобильного телефона и код, полученный в онлайновой кассе при покупке. Получив эти сведения, терминал обращается на сервер авиакомпании с запросом. Если данные верны и билеты ранее не были распечатаны, то терминал выводит на экран сведения о билетах и просит пассажира подтвердить печать. Затем осуществляется печать билетов. Далее терминал сообщает серверу авиакомпании, о том, что бумажные билеты выданы пассажиру.

Работник авиакомпании, пользуясь специальной служебной картой, включает терминал в начале рабочего дня и выключает в конце рабочего дня. При включении терминал предоставляет работнику возможность зарядить в принтер бланки билетов.

Терминал может быть использован для возврата электронных билетов. При возврате авиапассажир сообщает свой номер мобильного телефона и код, полученный при покупке. Терминал получает с сервера авиакомпании сведения о приобретённых билетах. Если эти билеты не были распечатаны, их можно вернуть. Пассажир должен указать, какие именно билеты он возвращает (необязательно все). После подтверждения от пассажира терминал просит вставить а ридер банковскую карту. Процедура запроса и обработки PIN совпадает с описанной выше. Банковская система получает запрос на возврат средств. Если операция одобрена, то сервер авиакомпании получает сведения о возвращённых билетах. Если возврат средств неудачен, то пассажир информируется о неудаче и его обслуживание на этом прекращается. Возврат билетов возможен не позднее чем за 12 часов до вылета.

Вариант задания предусматривает разработку схемы реляционной базы данных авиакомпании, которая является внешней по отношению к терминалу и в которой хранятся сведения о расписании, тарифах, наличии мест и билетах. Собственной БД в терминале нет.

Вариант 6. Турникет станции городского транспорта


Турникет контролирует вход пассажиров внутрь станции городского транспорта, выход пассажиров со станции и взимает плату за проезд. Турникет имеет устройство, осуществляющее чтение из запись данных с бесконтактных транспортных карт и/или банковских карт, два набора створок из ударопрочного стекла для перекрывания прохода, часы, оптические датчики для контроля прохода пассажира, устройство подачи звуковых сигналов, индикаторы "Проход" и "Стоп", индикатор количества оставшихся поездок, линию связи с сервером городского транспорта, линию связи с банковской системой.
Турникет работает в одном из трёх режимов: "Вход", "Выход", "Блокировка".
Рассмотрим работу турникета в режиме "Вход". В начальном состоянии турникета зажжён индикатор "Стоп", индикатор "Проход" потушен, передние и задние створки закрыты. Если один из датчиков, расположенных до передних створок, или после задних створок, посылает сигнал, то турникет подаёт предупредительный звуковой сигнал и остаётся в исходном состоянии. Для прохода пассажир должен поднести бесконтактную транспортную карту (либо банковскую карту) к считывающему устройству. Каждая транспортная карта имеет срок годности, по истечении которого она не может быть использована для прохода. Транспортные карты бывают трёх типов: с фиксированным количеством поездок; с неограниченным количеством поездок; карта-"кошелёк". Турникет считывает с транспортной карты данные: срок годности карты, номер карты, тип карты и количество поездок. Если данные не удаётся считать, или карта просрочена, или количество поездок нулевое, то турникет подаёт предупредительный звуковой сигнал и остаётся в исходном состоянии. Иначе с карты с фиксированным количеством поездок списывается одна поездка, индикатор "Стоп" гаснет, зажигается индикатор "Проход", индикатор количества оставшихся поездок высвечивает текущее значение, открываются передние створки и пассажир может дойти до задних створок турникета, которые пока закрыты. Получив от датчика между передними и задними створками сигнал, что пассажир прошёл внутрь, турникет закрывает передние створки и открывает задние створки. Когда датчик после задних створок сообщает, что пассажир вышел из турникета, задние створки закрываются, и турникет возвращается в начальное состояние. Если карта имеет неограниченное количество поездок, то при проходе с картой такого типа индикатор количества оставшихся поездок высвечивает символ ∞ (бесконечность), а поездки не списываются. Во избежание злоупотреблений с картами без лимита поездок в течение пяти минут после входа пассажира через любой турникет станции должны блокироваться остальные попытки входа с той же картой через все турникеты той же станции городского транспорта. Работа с картами-"кошельками" отличается тем, что на них записывается не количество поездок, а некоторая денежная сумма. Карта-"кошелёк" пригодна для оплаты проезда, если сумма на ней больше чем цена поездки. При входе по такой карте с неё списывается цена поездки. Турникет может быть настроен так, что он допускает бесплатный вход (без уменьшения суммы карты-"кошелька", без уменьшения количества поездок), если пассажир осуществляет пересадку. Считается, что имеет место пересадка, если на карте предыдущий вход отмечен на станции городского транспорта, относящейся к одной из транспортных линий, занесённых в память турникета, и если время предыдущего входа отстоит от текущего времени не более чем на 60 минут.

При оплате входа банковской картой турникет посылает запрос банковской системе на списание стоимости одной поездки. В запросе используются реквизиты, считанные с карты. Банковская система может либо подтвердить, либо отвергнуть запрос на списание. В первом случае вход осуществляется успешно, как описано выше, а индикатор поездок высвечивает списываемую сумму. Во втором случае вход блокируется. Бесплатная пересадка при входе по банковской карте невозможна. В остальном банковская карта с точки зрения турникета ничем не отличается от карты-"кошелька".

Турникет заносит в свою память сведения о проходах по пассажирским картам (в том числе безуспешных попытках входа) и картах, использованных при проходах. В конце рабочего дня он передаёт всю информацию, накопленную за день, на сервер городского транспорта.

Работа турникета в режиме "Выход" такова: В начальном состоянии турникета зажжён индикатор "Проход", индикатор "Стоп" потушен, передние и задние створки закрыты. Если один из датчиков, расположенных после задних створок, посылает сигнал, то турникет открывает задние створки и пассажир может пройти сквозь турникет до передних створок, которые пока закрыты. Получив от датчика между передними и задними створками сигнал, что пассажир прошёл внутрь, турникет закрывает задние створки и открывает передние створки. Когда датчик до передних створок сообщает, что пассажир вышел из турникета, передние створки закрываются, и турникет возвращается в начальное состояние. Если в начальном состоянии срабатывает датчик до передних створок, турникет подаёт предупредительный звуковой сигнал и остаётся в исходном состоянии. На использование пассажирских и/или банковских карт турникет в этом режиме не реагирует.

Работа турникета в режиме "Блокировка": В начальном состоянии турникета зажжён индикатор "Стоп", индикатор "Проход" потушен, передние и задние створки закрыты. Если один из датчиков, расположенных до передних створок, или после задних створок, посылает сигнал, то турникет подаёт предупредительный звуковой сигнал и остаётся в исходном состоянии. На использование пассажирских и/или банковских карт турникет в этом режиме не реагирует.

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

Сервер городского транспорта может управлять работой турникета. Он может переключить турникет в один из трёх режимов, может обновить цену поездки, может синхронизировать время и дату на часах турникета с серверными, может обновить список транспортных линий для осуществления бесплатных пересадок, может обновить время начала работы станции и время окончания работы станции, по наступлению которых турникет автоматически переходит из текущего режима в режим "Вход" и в режим "Блокировка" соответственно. Переключение режима турникета не может происходить во время незавершённого прохода пассажира (входа или выхода). Турникет дожидается завершения прохода и лишь затем переключается в нужный режим.

Турникет не имеет собственной базы данных, тем не менее, следует смоделировать схему внешней реляционной базы данных сервера городского транспорта, где хранятся сведения о станциях и линиях городского транспорта, об установленных на станциях турникетах, о ценах поездки, актуальных на разные даты, о проходах через турникеты и картах, по которым эти проходы совершены.

Вариант 7. Терминал оплаты городского транспорта


Терминал оплаты осуществляет пополнение транспортных карт пассажирам городского транспорта. Используются многоразовые пластиковые карты, которые могут быть получены клиентами в пунктах выдачи. В состав терминала входят следующие устройства: информационный дисплей с экранной клавиатурой, приёмник банкнот, хранилище банкнот и лоток для их выдачи, принтер для печати чеков о совершённых операциях, устройство чтения и записи данных на пластиковые транспортные карты, устройство чтения данных с банковских карт, линии связи со сервером городского транспорта и с банковской системой.

Клиент начинает покупку с того, что он вставляет транспортную карту в приёмник транспортных карт. Если карту удалось прочесть, то терминал запрашивает сервер городского транспорта о том, не находится ли карта в стоп-листе. Если карта включена в стоп-лист, то терминал возвращает карту, информирует клиента о причине отказа, и сеанс завершается неуспехом. Иначе терминал высвечивает сведения о карте: список ранее записанных на неё билетов, упорядоченных по убыванию даты их записи на карту.

Далее клиент может выбрать вид билета, который он хочет приобрести и записать на пластиковую карту (1 поездка, 2 поездки, 5 поездок, 10 поездок, 20 поездок, 60 поездок, 1 день, 5 дней, 30 дней, 90 дней, 365 дней). Клиент может оказаться от покупки. Также вместо покупки билета клиент может выбрать пополнение «электронного кошелька» на пластиковой карте на выбранную им сумму (от 50 до 5000 рублей с шагом 50 рублей; при этом сумма пополнения не может быть такой, чтобы в «кошельке» оказалось более 5000 рублей; если «кошелёк» полон до отказа, то внесение в него средств невозможно). После того как пассажир выбрал покупку, терминал высвечивает на дисплее сумму к оплате. Цены на билеты терминал получает в начале каждых суток от сервера городского транспорта. Клиент должен оплатить указанную сумму либо банковской картой, либо банкнотами. Терминал принимает от клиентов к оплате бумажные купюры (номиналом 10, 50, 100, 200, 500, 1000, 2000, 5000 рублей). Клиент может передумать и попросить вернуть введённые им купюры. Терминал должен выполнить возврат купюр по требованию клиента. Возврат введённых денег производится через лоток выдачи банкнот. Возврат всех введённых денег не должен производиться после выдачи пластиковой карты с записанным билетом. Терминал должен корректно работать, не допуская получения клиентами неоплаченных покупок.

При оплате банковской картой клиент вставляет карту в приёмник банковских карт. Если карту удалось прочесть, то терминал запрашивает PIN. По введённому PIN терминал вычисляет некоторое другое число (PVV) и вместе со стоимостью покупки и данными карты, считанными с её магнитной полосы, отправляет в банковскую систему. В ответ может придти либо подтверждение успешной оплаты, либо отказ и причины отказа. При отказе клиенту предоставляются ещё не более чем 2 попытки оплаты той же или другой банковской картой. Если и они не успешны, то оплата завершается неуспехом.

В терминале имеется информационный дисплей, на котором высвечивается текущая сумма денег, принятых к оплате, и сообщения для клиентов, такие как: «введите банкноты или банковскую карту», «выберите вид билета для покупки», «выберите сумму для пополнения электронного кошелька», «введённой суммы недостаточно», «карта в стоп-листе», «заберите транспортную карту», «заберите банковскую карту», «заберите сдачу», «заберите деньги».

После удачной покупки терминал печатает чек о покупке, указывая в нём дату и время, № терминала, № транспортной карты, тип проданного билета и его цену (или сумму пополнения «кошелька»). Принятые в уплату банкноты терминал помещает в хранилище банкнот. Вместе с чеком терминал выдаёт клиенту транспортную карту, на которую записан приобретённый билет (записана пополненная сумма «кошелька»), и банковскую карту, если та была введена клиентом. Если клиент ввёл банкноты на сумму, превышающую цену билета, терминал по окончании покупки выдаёт сдачу. Выдача сдачи производится через лоток выдачи банкнот. За один сеанс клиент может сделать не более одной покупки.

В течение рабочего дня терминал накапливает данные о сеансах обслуживания клиентов (удачных и неудачных). В конце суток эти сведения передаются серверу городского транспорта, после чего удаляются из памяти терминала.

В ходе выполнения задания должна быть разработана схема реляционной базы данных сервера городского транспорта о типах билетов, ценах на них, транспортных картах, стоп-листе транспортных карт, терминалах, клиентских сеансах пользования терминалами. Эта БД является внешней по отношению к терминалу. Собственной БД в терминале нет.

Вариант 8. Терминал выдачи заказов


Терминал выдачи заказов -- это автоматизированный пункт обслуживания клиентов интернет-магазина. С его помощью клиенты получают свои заказы. Клиент может отказаться от получения заказа, не подошедшего ему по какой-то причине. Получение заказа осуществляется следующим образом: Терминал ожидает очередного клиента, высвечивая приглашение ввести номер мобильного телефона. Клиент набирает на клавиатуре терминала запрошенный номер. Терминал через шлюз сотовой связи отправляет по введённому номеру SMS c 6тизначным кодом и выводит запрос кода на свой экран. Клиент получает код на мобильный телефон и сообщает код терминалу. Если ввод верен, выдача продолжается, иначе сеанс обслуживания завершается неуспехом. В продолжение обслуживания происходит проверка того, что внутрь терминала курьер уже разместил заказ/заказы клиента с введённым номером телефона. Если проверка неудачна, то терминал запрашивает сервер интернет-магазина, чтобы выяснить, есть ли у клиента заказы, готовые к выдаче и в каких терминалах они находятся. Сведения, сообщённые сервером в ответе, выводятся клиенту, чтобы он мог забрать свои заказы в других терминалах. Завершая сеанс своей работы, клиент нажимает кнопку «Выход», после чего терминал переходит в режим ожидания и высвечивает приглашение ввести номер мобильного телефона для следующего клиента.

Если в ячейках терминала есть заказы для выдачи текущему клиенту, то терминал высвечивает список этих заказов на своём дисплее и предлагает выбрать один заказов, который хочет получить клиент. О каждом заказе сообщается его номер, дата создания заказа, стоимость заказа, перечень названия товаров из позиций заказа, статус заказа: оплачен / не оплачен. Клиент должен выбрать один заказ для получения. Клиент может отказаться от получения, и в этом случае сеанс завершается и терминал переходит в режим ожидания (см. выше). После выбора заказа для получения, на экран выводится схема, поясняющая расположение дверцы ячейки терминала, из которой клиент может его забрать. Для получения предоплаченных заказов оплата не требуется. Если заказ должен быть оплачен при получении, то терминал просит клиента ввести банковскую карту в считыватель. Клиент вводит карту. Если карту удалось прочесть, то терминал запрашивает PIN. По введённому PIN терминал вычисляет некоторое другое число (PVV) и вместе со стоимостью заказа и данными карты, считанными с её магнитной полосы, отправляет в банковскую систему. В ответ может придти либо подтверждение успешной оплаты заказа, либо отказ и сообщение о причинах отказа. При отказе клиенту предоставляются ещё не более чем 2 попытки оплаты той же или другой картой. Если и они не успешны, то оплата завершается неуспехом. После успешной оплаты (или при предоплаченном заказе) открывается автоматический замок на дверце нужной ячейки. Клиент открывает дверцу ячейки, достаёт заказ. Терминал запрашивает клиента, забирает ли он заказ целиком или отказывается ли он от заказа целиком. После выбора клиента обслуживание продолжается. Если заказ целиком забран, то терминал закрывает дверцу, запирает её замок, сообщает на сервер интернет-магазина об успешно выданном заказе. Если у клиента не осталось других заказов для получения, то терминал завершает обслуживание, высвечивает приглашение и ожидает следующего клиента. Если у одного клиента несколько заказов для выдачи в терминале, то он может забрать другой свой заказ, продолжая сеанс. При возврате заказа целиком клиент помещает его обратно в открытую ячейку и сообщает об этом терминалу. Дверца ячейки автоматически закрывается, её замок запирается. Терминал отправляет сообщение на сервер интернет-магазина об отказе клиента получать заказ. Терминал не должен повторно предлагать к получению заказы, которые возвращены клиентом. Вопросы компенсации оплаты возвращённых заказов клиент решает без использования терминала.

Курьер, работающий с терминалом, должен будет забрать все возвращённые заказы и вернуть их на склад интернет-магазина. В его обязанности также входит размещение доставленных им заказов в ячейки терминала. С помощью специальной карты, помещаемой в считыватель, курьер переводит терминал, находящийся в режиме ожидания, в курьерский режим. В этом режиме курьер может либо поместить заказ в ячейку терминала, либо забрать возвращённый заказ. В первом случае терминал выводит перечень свободных ячеек и предлагает выбрать одну из них для помещения заказа и ввести номер помещаемого заказа. Получив данные, терминал запрашивает у сервера интернет-магазина сведения о помещаемом заказе. После успешного их получения терминал отпирает замок выбранной курьером ячейки. Курьер открывает ячейку, помещает в неё заказ и сообщает об этом терминалу. Терминал закрывает дверцу ячейки и запирает её замок. Он информирует сервер интернет-магазина о том, что заказ готов к выдаче клиенту.

Курьер может сообщить терминалу, что хочет забрать один из возвращённых заказов. Терминал выводит перечень ячеек, занятых возвращёнными заказами, и предлагает выбрать одну из них. Получив данные о выборе курьера, терминал отпирает замок выбранной курьером ячейки. Курьер открывает ячейку и забирает содержимое. Терминал закрывает дверцу ячейку и запирает её замок. Он информирует сервер интернет-магазина о том, что возвращённый заказ направляется на склад с курьером. По окончании работы курьер должен перевести терминал обратно в режим обслуживания ожидания клиента.

Моделированию подлежит терминал. Сервер интернет-магазина, банковская система и шлюз сотовой связи находятся за границами моделируемой системы, т. е. не являются её частями. Несмотря на это, дополнительно следует спроектировать схему реляционной базы данных сервера интернет-магазина со сведениями о клиентах, товарах, заказах, терминалах выдачи. Предполагается, что в самом терминале нет собственной БД, а значит, следует смоделировать внешнюю БД.

Вариант 9. Интернет-магазин


Интернет-магазин позволяет клиентам заказывать в Веб товары с доставкой. Чтобы стать клиентом интернет-магазина нужно зарегистрироваться. В регистрационную форму следует ввести следующие сведения: фамилию, имя и отчество клиента; его № мобильного телефона, служащий логином. Если форма заполнена верно и телефон не совпадает с телефоном другого клиента, регистрационная запись о новом клиенте создаётся, клиент получает в SMS для подтверждения номера телефона со сгенерированным случайным кодом. Отправка SMS происходит через шлюз сотовой связи. Чтобы подтвердить телефон, клиент должен ввести код из SMS в форму, открытую интернет-магазином. Также в форме есть поля для пароля, который клиент собирается использовать при входе. Если код сообщён верно, то клиент получает полноценный доступ к интернет-магазину, и его пароль запоминается. Теперь клиент может «входить» в него, делать в нём заказы и использовать его другие возможности.

Для оформления заказа пользователь должен войти в интернет-магазин по № мобильного телефона и паролю. После успешного входа «корзина» клиента пуста. Клиент может просматривать каталог товаров. О каждом продаваемом товаре в каталоге хранится название, описание, фотография, производитель, страна происхождения, наличие/отсутствие в продаже, цена, скидка, масса, отзывы клиентов, купивших товар ранее. Часть этих сведений видна только на странице товара (производитель, страна происхождения, отзывы, снимок в полном размере). Остальные сведения также видны в списке товаров. Список выдаётся пользователю после указания раздела -- категории товаров. Товары внутри одной категории могут быть объединены в не пересекающиеся группы -- подкатегории. Интернет-магазин поддерживает поиск по разделам: по подкатегории, по слову из названия, по производителю, по стране происхождения, по диапазону цены, по наличию/отсутствию скидки. Список товаров может быть отсортирован по цене, названию, среднему баллу, вычисленному по оценкам из отзывов. Сортировка осуществляется либо по невозрастанию, либо по неубыванию.

Со страницы товара клиент получает возможность добавить товар, находящийся в продаже, в свою «корзину». Содержимое «корзины» может быть обнулено. Количество единиц товара в «корзине»может быть изменено (при обнулении количества товар удаляется из «корзины»). Текущая стоимость «корзины» постоянно высвечивается вошедшему клиенту и пересчитывается при изменении «корзины». Товары в «корзину» могут добавляться многократно. Если добавляемый товар уже есть в «корзине», то его количество увеличивается на 1 единицу. После выхода клиента из системы текущее содержимое непустой «корзины» пропадает.

По непустой «корзине» клиент может оформить заказ. Каждый заказ получает уникальный номер. В ходе оформления заказа клиент выбирает способ доставки: курьером на дом или самовывоз из подходящего клиенту терминала выдачи заказов. Курьерская доставка осуществляется по адресу, указанному клиентом при оформлении заказа. От способа доставки зависит итоговая сумма заказа (самовывоз бесплатный, курьерская доставка стоит 200 рублей). В ходе оформления заказа клиент выбирает способ оплаты: предоплата банковской картой, оплата при получении. По завершении оформления заказа система помечает заказ, как принятый в работу, и опустошает «корзину». Принятый в работу заказ по предоплате клиент может отменить до его оплаты. Принятый в работу заказ по предоплате клиент должен оплатить. Оплата происходит в интернет-магазине. Система сообщает сумму к оплате и запрашивает сведения о банковской карте: номер, срок действия, сведения о владельце, трёхзначный код защиты. Если сведения сообщены должным образом, интернет-магазин передаёт их в составе запроса на оплату через шлюз платёжной системы. Ответ на этот запрос может быть положительным или нет. Если попытка была неуспешной, статус заказа не меняется, а клиент должен попытаться оплатить заказ ещё раз. После удачной предоплаты заказ помечается как оплаченный. Заказы, оплачиваемые при получении, клиент не может отменить, но в дальнейшем может отказаться от их получения и оплаты в терминале выдачи или при общении с курьером.

Когда заказ готов к выдаче, курьерская служба или терминал выдачи заказов сообщает системе интернет-магазина об изменении статуса заказа. Клиент интернет-магазина может узнать статусы своих заказов, посмотрев их список (только после успешного «входа»). В списке высвечиваются как текущие заказы, так и прошлые. Клиент может подписаться на получение сообщений обо всех изменениях статусов заказов по SMS.

По обстоятельствам непреодолимой силы оператор интернет-магазина может отменить заказ, пока тот не доставлен или не помечен, как готовый к выдаче. По предоплаченным отменённым заказам система обеспечивает возврат оплаченных средств на банковскую карту клиента через шлюз платёжной системы.

По сообщению от терминала выдачи заказов или курьерской службы система помечает полученные клиентами заказы как выполненные. Терминал выдачи заказов или курьерская служба могут сообщить об отказе клиента оплачивать и/или получать заказ. Тогда система помечает заказ как отменённый. Терминалы выдачи заказов, как и шлюз сотовой связи, как и курьерская служба, как и платёжная система считаются находящимися вне границ системы, т. е. они не являются частями интернет-магазина.

По впечатлениям от покупки клиент может оставить один отзыв на каждый купленный им продукт. В отзыве указаны оценка от 0 до 5 и текст. Отзывы "публикуются", т. е. становятся видны другим пользователям только после проверки оператором интернет-магазина. Если текст отзыва приемлем для публикации, то оператор «открывает» оставленный клиентом отзыв.

Каждые сутки с 3:00 до 3:30 система занимается обновлением своих данных. В это время работа клиентов с интернет-магазином невозможна. Из всех активных в это время сеансов клиентов система осуществляет принудительный выход. Система запрашивает данные извне -- от источника обновлений. Обновления могут содержать сведения о новых продуктах, а также изменённые сведения о продуктах, которые известны системе ранее. Сведения о продуктах, продажа которых прекращена навсегда, из системы не удаляются. Такие продукты лишь помечаются как отсутствующие в продаже.

Следует спроектировать схему реляционной базы данных системы. Данные о клиентах, заказах, продуктах хранятся в самой системе, а не в каком-либо внешнем хранилище.

Вариант 10. Пиццамат


Пиццамат -- это автоматический киоск по продаже пиццы. В ожидании очередного покупателя, он высвечивает приглашение выбрать размер и вид пиццы (из имеющихся в наличии). Покупатель может сделать выбор размера нужной ему пиццы (малая, средняя, большая) и её вид (маргарита, наполи, фунги, вегетарианская). Пиццы готовятся из охлаждённых полуфабрикатов, хранящихся в холодильной камере пиццамата. Покупатель не может выбрать пиццу, такую что её полуфабрикаты закончились. После выбора пиццы покупателю предлагается провести её «настройку». В пиццу можно добавить дополнительные порции добавок-топпингов (не более чем 1 порцию добавки каждого вида): томатной пасты, сыра, оливок, каперсов, грибов, салями, анчоусов, приправ. Добавлять салями или анчоусы в вегетарианские пиццы нельзя. По ходу настройки пиццамат высчитывает и высвечивает текущую стоимость пиццы. Покупатель может отказаться от ранее затребованной порции добавки в ходе настройки. Стоимость при этом уменьшится. Далее покупатель решает, должен ли пиццамат приготовить пиццу или только продать охлаждённый полуфабрикат. Стоимость пиццы определяется в зависимости от базовой цены, которая привязана к размеру и виду пиццы, цены порций выбранных топпингов, цены за приготовление пиццы (полуфабрикаты стоят дешевле). Текущий прайс-лист на пиццы и добавки-топпинги пиццамат получает в начале каждых суток от сервера сети пиццаматов. Покупатель может выбрать отказ от приобретения пиццы и его сеанс будет завершён неуспехом.

Оплата может быть принята либо банкнотами и/или монетами через приёмник денег, либо банковской картой через считыватель карт. При оплате наличными покупатель последовательно помещает в приёмник очередную купюру/монету одну за другой, пока не наберётся необходимая сумма. Как только она набрана, пиццамат помещает деньги в хранилище, выдаёт сдачу (если введено больше денег, чем требовалось). До этого момента покупатель может отказаться от оплаты, и тогда ему будут возвращены все принятые от него наличные, сеанс завершится, и пиццамат будет ожидать следующего покупателя. При оплате банковской картой покупатель вводит карту в считыватель. Если карту удалось прочесть, то пиццамат запрашивает PIN. По введённому PIN пиццамат вычисляет некоторое другое число (PVV) и вместе с данными карты, считанными с её магнитной полосы, отправляет в систему оплаты. В ответ может придти либо подтверждение успешной оплаты, либо отказ с указанием причин. При отказе сеанс обслуживания покупателя завершается неуспехом. Не допускается смешанная оплата, т. е. вся сумма должна быть оплачена либо наличными, либо по карте.

При покупке полуфабриката податчик пицц из холодильной камеры перемещает нужную пиццу в лоток выдачи, туда же помещаются порции заказанных добавок. Приготовление пиццы состоит в следующем. В электропечь помещается полуфабрикат из холодильной камеры. Из ёмкостей с добавками подаются нужные порции добавок (в соответствии с выброром покупателя). На период времени, достаточный для приготовления, включается нагреватель в электропечи. Малые пиццы готовятся 2 минуты, средние -- 3 минуты, большие -- 4 минуты. По окончании периода времени готовая пицца подаётся в лоток выдачи, а нагреватель отключается.

После выдачи приготовленной пиццы и/или после продажи полуфабриката пиццамат может обнаружить, что запасы охлаждённых пицц и/или добавок исчерпаны или близки к исчерпанию. Сервер сети пиццаматов информируется о том, что запас чего-либо на исходе. Такие сообщения позволяют направить служащих для перезарядки того или иного пиццамата. При полном исчерпании чего-либо пиццамат учитывает возникший дефицит, информирует о нём покупателей при помощи дисплея, не даёт возможности заказывать пиццы, которые не может приготовить, не даёт «настраивать» пиццы так, чтобы при приготовлении использовалась отсутствующая добавка (например, добавить дополнительный сыр можно лишь тогда, когда он есть в наличии).

После того как покупатель забирает из лотка выдачи пиццу, пиццамат завершает сеанс и ожидает нового покупателя.

В начале очередных суток с 00-00 до 00-20 пиццамат направляет на сервер отчёт обо всех сеансах (успешных и неуспешных) за прошлые сутки. В отчёте для каждого сеанса сообщены исчерпывающие сведения: порядковый номер сеанса (от начала суток), время и длительность сеанса, статус сеанса (как он завершился), какая пицца была продана (если была), «настройка» пиццы (если была), готовка, стоимость пиццы, способ оплаты. После отправки отчёта данные сеансов удаляются из пиццамата, так как они больше не нужны. Затем пиццамат запрашивает и получает у сервера актуальную версию прайс-листа.

Служащий может провести сеанс технического обслуживания пиццамата. С помощью специальной карты, помещаемой в считыватель, он инициирует режим технического обслуживания. В этом режиме пиццамат не обслуживает покупателей. При пополнении запасов в пиццамат служащий указывает ёмкость, которую будет заполнять. Пиццамат открывает доступ к ней. Служащий заполняет ёмкость и даёт команду пиццамату закрыть её. Похожим образом проводится инкассация (хранилище наличных открывается, монеты и банкноты извлекаются/пополняются, хранилище закрывается). Электропечь нуждается в периодической очистке. Пиццамат подсчитывает количество циклов работы печи с момента последней её очистки. При превышении порогового значения счётчика он информирует сервер об этом. Запуская чистку печи, служащий даёт знать об этом пиццамату. Пиццамат запускает очистку, включая нагреватель на 10 минут. Затем служащему предоставляется доступ внутрь печи. Он счищает нагар с внутренней поверхности печи и сообщает о завершении чистки. По окончании работы служащий должен перевести пиццамат обратно в режим обслуживания покупателей.

Пиццамат постоянно отслеживает температуру внутри холодильной камеры. При отклонении её выше установленного порога пиццамат включает охлаждение камеры. При опускании температуры до некоторого (другого) порога охлаждение отключается. Если не удаётся в течение 15 минут привести температуру камеры в норму, то на сервер отправляется сообщение, а продажа пицц приостанавливается до приезда служащего.

Моделированию подлежит пиццамат. Сервер и платёжная система находятся за границами моделируемой системы. Несмотря на это, дополнительно следует спроектировать схему реляционной базы данных сервера сети пиццаматов. Предполагается, что в самом пиццамате нет собственной БД, а значит, следует смоделировать внешнюю БД.

Вариант 11. Система курьерской службы


Система курьерской службы автоматизирует доставку отправлений получателям. Чтобы стать клиентом службы, нужно в ней зарегистрироваться, указав логин-email, пароль, ф., и., о., адрес, паспортные данные. Если форма заполнена верно, e-mail не совпадает с e-mail'ом другого клиента, регистрационная запись о новом клиенте создаётся, клиент получает в свой электронный почтовый ящик сообщение для подтверждения e-mail со сгенерированным случайным кодом. Чтобы подтвердить e-mail, клиент должен воспользоваться ссылкой из полученного по e-mail сообщения. По ссылке открывается форма, в которую клиент вбивает свой логин, пароль и присланный ему код. Если все данные сообщены верно, то клиент получает полноценный доступ к службе. Теперь он может «входить» и использовать все возможности, предоставляемые клиентам.

Так, клиент может отслеживать отправленные им или направленные ему отправления по уникальному идентификатору отправления, заведённому системой. Клиент не может отслеживать и/или получать сведения об отправлениях, к которым не имеет отношения (не является отправителем или получателем). Клиент указывает идентификатор в запросе на отслеживание. Ответ на запрос либо содержит данные о том, что сведения об отправлении отсутствуют, либо о том, какие операции с отправлением зарегистрированы в службе. Виды операций: принято на доставку в каком-то пункте службы (с указанием пункта), ожидает отправки в пункте приёма (с указанием пункта), отправлено по городу (с указанием города), отправлено в другой город (с указанием города), прибыло в город (с указанием города), прибыло в пункт вручения (с указанием пункта), ожидает вручения в пункте выдачи (с указанием пункта), вручено получателю, выдано курьеру для доставки на дом, возвращается отправителю, возвращено отправителю. По каждой операции указывается её дата, время, место, а также, возможно, дополнительные сведения. Так при принятии на доставку сообщаются полные сведения об отправлении (см. ниже). Данные об операциях с отправлениями служба принимает от своих операторов через служебные терминалы.

После обработки запроса отправление добавляется в список отправлений клиента, чтобы в следующий раз он мог выбрать его из списка, не вводя снова идентификатор. Отправление остаётся в списке до тех пор, пока клиент не решит удалить его оттуда. При получении данных о новой операции с отправлением служба посылает уведомление по электронной почте клиента. Служба отслеживает корректность последовательности операций с отправлением (например, уже переданное получателю отправление не может быть позднее возвратиться отправителю), а также уведомляет об истечении контрольных сроков пересылки: 15 суток для междугороднего отправления и 5 суток для внутригородского; а также сроков хранения в месте вручения: 10 суток. Сведения о некорректных операциях служба отказывается принимать от служебных терминалов. Вводящие данные через терминалы работники должны исправить некорректные сведения и заново отправить их, и тогда они будут приняты службой.

Об отправлении служба сообщает пользователю полные сведения: тип, отправитель (фио и e-mail), получатель (фио и e-mail), адрес отправителя, адрес получателя, стоимость пересылки, объявленная стоимость (если есть), сумма страховки (если есть). Служба контролирует, что к данным об отправлении получает доступ либо получатель, либо отправитель, либо работник за служебным терминалом, но никто другой.

По отправлениям, прибывшим в пункт вручения, клиент-получатель может с помощью системы заказать доставку курьером на дом. При оформлении заказа служба предлагает клиенту выбрать время, удобное для доставки и сообщает стоимость. Выполненным заказам на доставку работники меняют статус, пользуясь служебным терминалом. По отправлениям, пока ешё не прибывшим в пункт вручения, клиент-получатель может с помощью системы выбрать и назначить другой пункт вручения -- один из соседних с указанным ранее.

Если клиент забыл свой пароль, то система может прислать ему по e-mail ссылку для восстановления доступа с новым паролем. Если клиент меняет e-mail и/или пароль в своих настройках, то это также контролируется с помощью сообщения электронной почты. Если клиент не пользуется службой более 365 суток с момента последнего «входа», то считается, что он больше не является клиентом и все его данные удаляются. Если клиент закончил работу со службой, то он «выходит» из неё.

Следует спроектировать схему реляционной базы данных, хранящей сведения о пользователях, отправлениях, операциях с отправлениями, заказах на доставку. Все эти данные хранятся в самой системе курьерской службы, а не в каком-либо внешнем хранилище. Служебные терминалы и SMTP-сервер считаются находящимися вне границ системы, т. е. не являются её частями, и, следовательно, моделированию в качестве частей системы не подлежат.

Вариант 12. Терминал курьерской службы


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

В режиме обслуживания клиентов терминал ожидает очередного клиента, высвечивая приглашение ввести уникальный идентификатор отправления. Клиент набирает на клавиатуре терминала запрошенный идентификатор. Если на сервере курьерской службы зарегистрировано отправление с таким идентификатором, то терминал сообщает сведения об отправлении: тип, отправитель, получатель, адрес отправки, адрес получателя, стоимость пересылки, объявленная стоимость (если есть), сумма страховки (если есть), история операций с отправлением. Виды операций: принято на доставку в каком-то пункте службы (с указанием пункта), ожидает отправки в пункте приёма (с указанием пункта), отправлено по городу (с указанием города), отправлено в другой город (с указанием города), прибыло в город (с указанием города), прибыло в пункт вручения (с указанием пункта), ожидает вручения в пункте выдачи (с указанием пункта), вручено получателю, выдано курьеру для доставки на дом, возвращается отправителю, возвращено отправителю. По каждой операции указывается её дата, время, место.

Если запрошенное отправление клиента готово к выдаче в пункте курьерской службы, где установлен терминал, то терминал предлагает подтвердить, что клиент готов оформить выдачу отправления. Отправление может быть без оплаты либо с оплатой наложенным платежом. Если отправление должно быть оплачено, то терминал просит клиента ввести банковскую карту в считыватель. Клиент вводит карту. Если карту удалось прочесть, то терминал запрашивает PIN. По введённому PIN терминал вычисляет некоторое другое число (PVV) и вместе со стоимостью отправления и данными карты, считанными с её магнитной полосы, отправляет в систему оплаты. В ответ может придти либо подтверждение успешной оплаты, либо отказ с указанием причин отказа. При отказе клиента информируют о причине и получение отправления завершается неуспехом. При успешной оплате распечатывается чек об оплате. Также распечатывается и выдаётся талон электронной очереди, где указан № талона и № окна, где будет произведена выдача. Талоны с одинаковым № окна имеют сквозную нумерацию в течение суток, стартующую от 1. № окна назначается терминалом в зависимости от количества талонов, связанных с этим окном, выдача по которым пока не произведена. Терминал завершает обслуживание клиента, высвечивает приглашение и ожидает следующего клиента. Если у одного клиента несколько готовых к выдаче отправлений, то он может забрать их в течение нескольких сеансов работы с терминалом.

Работник курьерской службы может использовать терминал на свой лад. С помощью специальной карты, помещаемой в считыватель, он переводит терминал в служебный режим и сообщает свой № окна для обслуживания клиентов. В этом режиме работник вводит сведения об операциях с отправлениями. Работник сканирует штрих-код отправления и выбирает тип операции с ним (см. выше). Сведения о дате, времени и месте терминал заполняет самостоятельно. Дополнительные сведения могут быть добавлены работником. Когда ввод завершён и подтверждён, сведения отправляются на сервер курьерской службы. От сервера может придти подтверждение или отказ. Если вводимая операция некорректна, то сервер должен прислать отказ, так как он отслеживает корректность последовательности операций с отправлением (например, уже выданное отправление не может быть позднее возвращено отправителю). Для исправления подобной ситуации работник может запросить весь список операций с отправлением и внести необходимые изменения. По окончании своей работы работник должен перевести терминал обратно в режим обслуживания клиентов.

Если работник вводит сведения о том, что отправление выдано, то терминал учитывает этот факт в электронной очереди. Он находит соответствующий талон удаляет его из упорядоченного набора талонов, относящихся к окну служащего. Также терминал сообщает служащему список №№ талонов, назначенных в очередь к окну служащего, по которым выдача пока не осуществлена.

Сервис-инженер может провести техническое обслуживание терминала. С помощью специальной карты, помещаемой в считыватель, он инициирует режим т/о. В этом режиме сервис-инженер может переконфигурировать и проверить параметры сетевых соединений с сервером, с платёжной системой. Сервис-инженер может зарядить бумажную ленту в принтер терминала, если она закончилась или на исходе. По окончании работы сервис-инженер должен перевести терминал обратно в режим обслуживания клиентов.

Моделированию подлежит терминал. Сервер курьерской службы и платёжная система находятся за границами моделируемой системы, т. е. не являются частями системы. Несмотря на это, дополнительно следует спроектировать схему реляционной базы данных сервера курьерской службы, где хранятся сведения о клиентах, отправлениях, пунктах, операциях с отправлениями. Предполагается, что в самом терминале нет собственной БД, а значит, следует смоделировать внешнюю БД.

Вариант 13. Информационная система университета


Информационная система используется в университете для отслеживания учёбы студентов в течение всего учебного года.

Сотрудники учебного отдела вводят в систему данные о студентах, преподавателях и учебных дисциплинах. Данные могут быть изменены и/или удалены. Студенты университета делятся на курсы. Курс делится на группы. Каждой группе студентов назначены занятия по дисциплинам, которые ведутся преподавателями. Преподаватель может вести любое количество разных дисциплин у одной или нескольких групп. Несколько преподавателей могут вести одну и ту же дисциплину в одной и той же группе или в разных группах.

Преподаватели пользуются системой, чтобы отмечать успехи и неуспехи студентов, посещающих их занятия. Пока длятся занятия по учебной дисциплине преподаватель последовательно выдаёт студентам "своей" группы задания. Для каждого задания устанавливается контрольный срок, когда оно должно быть сдано, полное количество баллов за задание, признак, подлежит ли задание обязательной сдаче или же оно дополнительное и выполняется по желанию студентов. Когда студент сдаёт задание, преподаватель отмечает этот факт в системе. Он ставит «±», если задание сдано не до конца, «+» -- если задание сдано полностью. Система контроля автоматически ставит «−», если задание пока не сдано. От времени сдачи зависит цвет, которым отметка о сдаче выделена в системе. Если сдача проходила до установленного срока (за неделю и более), отметка высвечивается зелёным. Если сдача проходила после установленного срока (через неделю и более) отметка высвечивается красным. В остальных случаях отметка чёрная. Поскольку сдача может быть не полной, студент может сдавать задание несколько раз. После получения отметки «±» за это же задание может быть поставлена отметка «±» или «+», относящаяся к старшей дате. Если за задание уже стоит отметка «+» никакая отметка не может быть поставлена за это же задание. По этим правилам преподаватели могут ставить одному и тому же студенту несколько отметок о сдаче одного и того же задания. Если преподаватель ошибся, он может удалить отметку или изменить её.

За сдачу заданий студентам начисляются баллы. Баллы зависят от текущей даты, от сведений об отметках по этому заданию, от типа задания: обязательное/дополнительное. Рассмотрим начисление баллов за обязательные задания. Если на текущую дату студент имеет отметку «−» или «±», то из общей суммы баллов, набранных студентом по дисциплине вычитается полное количество баллов за задание, а также штрафные баллы, начисленные по правилу: 25% полного количества баллов за задание за каждую полную неделю с момента наступления контрольного срока до текущей даты. Штраф не может превысить 100%. Если на текущую дату студент имеет отметку «+», полученную раньше наступления срока сдачи, то ему начисляются баллы в размере полного количества баллов за задание, а также бонусные баллы по правилу: 5% полного количества баллов за задание за каждую полную неделю с момента получения отметки «+» до наступления контрольного срока. Бонус не может превысить 25%. Если на текущую дату студент имеет отметку «+», полученную позже наступления срока сдачи, то ему начисляются баллы в размере полного количества баллов за задание за вычетом штрафных баллов по правилу: 25% полного количества баллов за задание за каждую полную неделю с момента наступления контрольного срока до момента получения отметки «+». Штраф не может превысить 100%. За дополнительные задания, выполняемые студентами по собственному желанию штрафы и бонусы не начисляются. Отметка «+» по дополнительному заданию приносит полное количество баллов за задание.

Преподаватель для любой группы, в которой он ведёт занятия, может видеть полный список группы с полным набором отметок по заданиям, раскрашенных по указанным выше правилам, с указанием штрафных, бонусных и начисленных баллов по каждому заданию. Преподаватель может начислять студентам, у которых он ведёт занятия, дополнительные бонусные (и штрафные) баллы, поощряя или наказывая их, как сочтёт необходимым.

Студенты также могут пользоваться системой, чтобы узнать сроки сдачи заданий и результаты собственных сдач. Каждому студенту высвечивается сводная таблица, с отметками о сдаче заданий по всем, изучаемым им дисциплинам, с указанием штрафных, бонусных и начисленных баллов за задания, и его номера в рейтинге по данной дисциплине. Рейтинг составляется на основе баллов. Сортировка в рейтинге идёт по невозрастанию. Чужие отметки, баллы и №№ в рейтинге студенты видеть не должны, это конфиденциальная информация.
Вариант задания включает в себя разработку схемы базы данных для хранения отметок, данных о студентах, дисциплинах и преподавателях. Эти сведения хранятся в самой системе, а не в каком-либо внешнем хранилище.

Вариант 14. Ломбард


Программная система автоматизирует работу ломбарда, позволяет частично осуществлять её онлайн. Пользователи-заёмщики и пользователи-покупатели регистрируются в системе через Веб, указывая в форме регистрации логин-email, пароль, ф., и., о., адрес, паспортные данные. Если форма заполнена верно, e-mail не совпадает с e-mail'ом другого пользователя, то регистрационная запись о новом пользователе создаётся, и пользователь получает в свой электронный почтовый ящик сообщение для подтверждения e-mail со сгенерированным системой кодом. Чтобы подтвердить e-mail, пользователь должен воспользоваться ссылкой из полученного по e-mail сообщения. По ссылке открывается форма, в которой заполняется логин, пароль и присланный код. Если все данные сообщены верно, то пользователь получает полноценный доступ к системе. Теперь он может «входить» и использовать все возможности, предоставляемые зарегистрированным пользователям.

Заёмщик, войдя в систему может оставить заявку на заём под залог. В заявке он указывает сведения о ценном предмете, предлагаемом в качестве залога, и сумму займа, необходимую ему. Сведения о предмете для залога включают в себя: название, категорию (электроника, букинистика, коллекционирование, ювелирные изделия, часы и т. п.), описание, фотографию. Заявки заёмщиков доступны в системе для работников ломбарда. Работник изучает заявку и либо отклоняет её, либо принимает, устанавливая сумму займа, ежедневный процент, длительность контрольного периода времени, в течение которого залог может быть выкуплен заёмщиком. Сведения о новом статусе заявки доводятся до заёмщика по электронной почте. Оформление документов и передача предмета в ломбард осуществляется офлайн. Если заём был выдан, то работник ломбарда меняет статус заявки на заём, вводит № договора займа, дату начала контрольного периода времени. Пока длится контрольный период времени заёмщик может отслеживать в системе, как меняется сумма выкупа залога. Она является результатом сложения суммы займа и дополнительной суммы, определяемой как произведение ежедневного процента, на количество дней, прошедших с начала контрольного периода до текущей даты, и на сумму займа. Например, при сумме займа 100 000 рублей, проценте в 0,05% по прошествии 20 дней сумма выкупа составит 100 000 + 0,0005 * 20 * 100 000 = 101 000. Выкуп залога осуществляется либо наличными через кассу ломбарда, либо онлайн по банковской карте. Заёмщик сообщает сведения о банковской карте: номер, срок действия, сведения о владельце, трёхзначный код защиты. Если сведения сообщены должным образом, система передаёт их в составе запроса на оплату через шлюз к внешней платёжной системе. Ответ на этот запрос может быть положительным или нет. Если попытка была неуспешной, то статус займа не меняется. Если получено подтверждение успешной оплаты, то заём помечается в системе как погашенный. Залог за погашенный заём заёмщик получает офлайн. Работник ломбарда делает в системе пометку о том, что залог возвращён. Возвращаются залоги только по погашенным займам.

Не выкупленные залоги после истечения контрольных сроков займов выставляются на аукционы. Работник ломбарда по каждому залогу, выставляемому на аукцион, определяет начальную ставку, блиц-цену (может отсутствовать), начало и длительность аукциона, шаг (минимальная разница между двумя подряд идущими ставками). Пользователи-покупатели могут делать ставки по лотам, по которым аукционы начались и ещё не закончились. Аукцион считается законченным если была сделана ставка не ниже блиц-цены, либо если истекла длительность аукциона. Первая ставка принимается, если она не ниже начальной ставки. При наличии предыдущих ставок, ставка принимается если разница между ней и последней ставкой не ниже шага, установленного продавцом. Ставки заёмщиков к собственным залогам принимаются, также заёмщики могут делать ставки к чужим залогам.

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

Пользователям-покупателям система предоставляет возможности для поиска залогов, выставленных на аукцион по категории и названию. Результаты могут быть отсортированы по дате завершения аукциона, блиц-цене, текущей ставке. Залоги, по которым аукционы завершены, в выдачу не попадают.

Вся история действий с залогом хранится в системе. По прошествии 365 суток после последнего обновления сведений о залоге (заявке/займе) данные автоматически удаляются из системы.

Следует разработать схему реляционной базы данных системы. Все необходимые для работы сведения хранятся в самой системе, а не в каком-либо внешнем хранилище. Внешними по отношению к системе являются платёжная система, SMTP-сервер.

Вариант 15. Онлайновые отзывы


Сайт отзывов позволяет покупателям помогать друг другу, делясь впечатлениями от приобретённых ими товаров. Пользоваться сайтом могут как зарегистрированные, так и незарегистрированные пользователи. Вторые могут только читать содержимое сайта и не могут добавлять какие-либо сведения. Чтобы зарегистрироваться, нужно заполнить анкету, указав e-mail в качестве логина, пароль и псевдоним. Если форма заполнена верно, e-mail не совпадает с e-mail'ом другого пользователя, то регистрационная запись о новом пользователе создаётся, и пользователь получает в свой электронный почтовый ящик сообщение для подтверждения e-mail со сгенерированным системой кодом. Чтобы подтвердить e-mail, пользователь должен воспользоваться ссылкой из полученного по e-mail сообщения. По ссылке открывается форма, в которой заполняется логин, пароль и присланный код. Если все данные сообщены верно, то пользователь получает полноценный доступ к системе. Теперь он может «входить» и использовать все возможности, предоставляемые зарегистрированным пользователям.

Зарегистрированный пользователь, зайдя на сайт, может либо написать новый отзыв, либо оценить чужой отзыв, либо прокомментировать чужой отзыв. Размещая отзыв, пользователь указывает заголовок отзыва, текст отзыва, JPG-изображения, приложенные к отзыву, товар, о котором оставлен отзыв, свою оценку товара по 10-тибалльной шкале. Товар может быть выбран из каталога товаров, в который попадают все товары, о которых были оставлены отзывы ранее. Если товара нет в каталоге, то пользователь может указать сведения о товаре в своём отзыве: название, категория, производитель, ссылку на веб-страницу с товаром на сайте производителя (может отсутствовать).

Черновик своего отзыва пользователь может сохранить в системе, помечая, что отзыв пока не готов для публикации. Черновик может быть отредактирован пользователем в том же или в других сеансах работы с системой. По окончании работы с отзывом пользователь может распорядиться, чтобы система его опубликовала. Внесение изменений в опубликованный отзыв невозможно. Такой отзыв может быть удалён автором отзыва или модератором сайта.

Чтобы сайт не засоряли посторонними текстами, любой пользователь, зайдя на сайт, может пожаловаться на чужой отзыв, или чужой комментарий к своему или чужому отзыву. Отзывы и комментарии, набравшие более 2 жалоб, высвечиваются в списке модератора сайта. Модератор может либо удалить содержимое, на которое пришли жалобы, либо признать жалобы необоснованными. По решению модератора может быть приостановлено действие аккаунта зарегистрированного пользователя бессрочно, либо на указанное модератором количество суток. Модераторы могут обнаружить, что товары в каталоге дублируются, и указать на это системе. По указанию модератора система объединяет сведения о дублирующихся товарах (2 или более), оставляя единую запись о товаре, под которой объединены все отзывы, ранее оставленные под товарами-дублями.

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

Зарегистрированные пользователи могут добавлять (и удалять) авторов отзывов в список своих друзей. Им доступна лента отзывов, оставленных пользователями-друзьями. Лента сортируется/фильтруется по дате публикации отзыва, категории товара, оценке товара из отзыва. Помимо ленты друзей всем доступна общая лента отзывов, которая сортируется/фильтруется также.

Следует разработать схему реляционной базы данных системы. Все необходимые для работы сведения хранятся в самой системе, а не в каком-либо внешнем хранилище. Внешним по отношению к системе является SMTP-сервер.

Вариант 16. Система «Нагрузка»


Чтобы автоматизировать учёт преподавательской нагрузки за учебный год, в университете внедрена система «Нагрузка». Каждый преподаватель должен иметь в системе заведённый им аккаунт -- учётную запись. Регистрируясь в системе через Веб, преподаватель указывает в форме регистрации логин-email (только с университетского сервера электронной почты), пароль, ф., и., о., адрес, сведения о факультете и кафедре, на которых он работает. Если форма заполнена верно, e-mail не совпадает с e-mail'ом другого преподавателя, то регистрационная запись о новом преподавателе создаётся, и преподаватель получает в свой электронный почтовый ящик сообщение для подтверждения e-mail со сгенерированным системой кодом. Чтобы подтвердить e-mail, преподаватель должен воспользоваться ссылкой из полученного по e-mail сообщения. По ссылке открывается форма, в которой заполняется логин, пароль и присланный код. Если все данные сообщены верно, то преподаватель получает полноценный доступ к системе. Теперь он может «входить» и использовать все возможности, предоставляемые зарегистрированным пользователям.

В течение учебного года зарегистрированный преподаватель вводит выполняемые им работы, входящие в нагрузку. Так, преподаватель может указать сведения о проведении им занятий: указывается название учебной дисциплины (курса лекций), количество студентов, слушающих курс, перечень учебных групп, для которых ведётся дисциплина, количество часов лекций и/или семинаров, количество экзаменов, зачётов, контрольных, домашних работ. Система автоматически рассчитывает часы: за экзамены = 0,5 * количество студентов * количество экзаменов; за зачёты = 0,3 * количество студентов * количество зачётов; за контрольные = 0,25 * количество студентов * количество контрольных; за домашние работы = 0,2 * количество студентов * количество домашних работ; за семинары = количество часов по плану * количество групп. Также преподаватель может указать руководство практикой (по 12 часов на каждого студента); руководство курсовой работой (по 6 часов на каждого студента); руководство ВКР (по 25 часов на каждого студента); руководство диссертацией (по 50 часов на каждого аспиранта); приём вступительных экзаменов (в бакалавриат, магистратуру, аспирантуру) = 0,25 * количество проверенных работ; проверка олимпиад/универсиад = 0,3 * количество проверенных работ; рецензирование квалификационных работ = 3 * количество рецензий. Все вычисленные часы суммируются и составляют суммарную нагрузку. Особенностью ввода нагрузки является то, что преподаватель может выполнять разные работы по одной и той же учебной дисциплине с разными или одними и теми же группами (например, читать потоковый курс лекций всем группам потока и вести семинары по этому курсу только в одной из групп потока).

Работник учебного отдела вносит в систему сведения об учебном плане. В них фиксируется перечень дисциплин, и по каждой дисциплине устанавливается количество часов лекций и/или семинаров, количество экзаменов, зачётов. Также работник распределяет ведение дисциплин в разных группах между преподавателями университета. Система обеспечивает соответствие между данными, введёнными работником учебного отдела и преподавателями. Например, преподаватель не может указавать выполняемую работу в группе, в которой он не ведёт занятия согласно учебному плану. Если сведения из учебного плана не корректны, то преподаватель должен сообщить в учебный отдел об этом (такой вопрос решается за рамками системы).

Нагрузка введённая преподавателями утверждается работником учебного отдела в конце учебного года. Затем она автоматически передаётся в систему «Справедливость» для расчёта рейтинга преподавателя. Утверждённую нагрузку, переданную в систему «Справедливость» скорректировать нельзя.

Если преподаватель вовремя не ввёл данные о нагрузке, при входе в систему он получает сообщение системы с напоминанием. И так происходит всякий раз, пока он не введёт сведения. Работник учебного отдела при входе в систему информируется о списках преподавателей, не сообщивших сведения в систему. Преподаватель перестаёт включаться в такой список лишь после того, как введёт данные. Если работник задерживает утверждение данных о нагрузке какого-либо преподавателя, то он также получает об этом уведомление при входе в систему.

Сведения о нагрузке считаются актуальными за последние 5 учебных лет. Более поздние данные считаются устаревшими и автоматически удаляются из системы.

Вариант задания предусматривает разработку схемы реляционной базы данных системы. Все необходимые для работы сведения хранятся в самой системе, а не в каком-либо внешнем хранилище. Внешним по отношению к системе является SMTP-сервер.

Вариант 17. Терминал службы «единого окна»


Терминалы устанавливаются в отделениях городской службы «единого окна» для автоматизированного обслуживания клиентов. С помощью терминала клиенты могут оплатить свои штрафы и/или пени, получить свои документы и/или справки, заявки на оформление которых они оставили ранее, оставить заявки на оформление документов. Терминалы также используются клерками для ввода сведений об операциях по заявкам клиентов, отчёта о выполненных приёмах клиентов, работы со своим расписанием и передачи сведений обо всём перечисленном на сервер городской службы.

Терминал ожидает очередного клиента, высвечивая приглашение ввести номер мобильного телефона. Клиент набирает на клавиатуре терминала запрошенный номер. Если на сервере городской службы зарегистрирован клиент с таким номером, то терминал через шлюз сотовой связи отправляет по введённому номеру SMS c 4хзначным кодом и выводит запрос кода на свой экран. Клиент получает код на телефон и вводит его в терминал. Если ввод верен, сеанс обслуживания продолжается, иначе он завершается неуспехом. В продолжение обслуживания происходит запрос на сервер о штрафах и заявках клиента с введённым номером телефона. Список штрафов и список заявок выводятся клиенту. О своей заявке клиент может узнать историю операций с ней. Виды операций: заявка принята, заявка обрабатывается, заявка отклонена из-за неполных и/или недостоверных сведений, документ оформлен, документ готов к выдаче заявителю, документ вручён заявителю. По каждой операции указывается её дата, время, а также, возможно, дополнительные сведения.

Если в отделении службы «единого окна», где установлен терминал, есть заявки клиента, по которым документы готовы к выдаче, то терминал предлагает выбрать одну из них для оформления выдачи. На экран выводятся сведения о выдаваемом документе и указание клерков, которые могут выдать документ и имеют свободный слот в своём расписании в текущие сутки. Документ может быть оформлен без оплаты либо с оплатой пошлины по банковской карте. Если пошлина должна быть уплачена, то терминал просит клиента ввести банковскую карту в считыватель. Клиент вводит карту. Если карту удалось прочесть, то терминал запрашивает ПИН. По введённому ПИН терминал вычисляет некоторое другое число (PVV) и вместе с данными карты, считанными с её магнитной полосы, отправляет в систему оплаты. В ответ может придти либо подтверждение успешной оплаты, либо отказ. При отказе клиенту предоставляются ещё не более чем 2 попытки оплаты той же или другой картой. Если и они неуспешны, то сеанс обслуживания завершается неуспехом. При успехе распечатывается чек об уплате пошлины. Распечатывается и выдаётся клиенту чек об уплате пошлины и талон, по которому клерк выдаст доумент. Терминал завершает обслуживание клиента, высвечивает приглашение и ожидает следующего клиента. Если у одного клиента несколько готовых к выдаче документов, то он может оплатить пошлину и забрать их в течение нескольких сеансов работы с терминалом.

Оплата штрафов и/или пеней клиентом происходит сходим образом. Клиент выбирает штраф из высвечиваемого терминалом списка. Далее следует попытка оплаты с помощью банковской карты (см. выше). Штрафы оплачиваются по одному. Сведения об оплате передаются на сервер городской службы. Клиент может оставить с помощью терминала заявку для оформления справки и/или документа. В заявке указывается тип (справка / документ), наименование, а также дополнительные сведения, необходимые для оформления (например, СНИЛС, ИНН, номер свидетельства о рождении и проч.). Сведения об оставленной заявке терминал пересылает на сервер городской службы.

Клерк использует терминал на свой лад. С помощью специальной карты, помещаемой в считыватель, он переводит терминал в служебный режим. В этом режиме клерк вводит сведения об операциях с заявками клиентов. Клерк выбирает одну заявку из списка, высвеченного терминалом и выбирает тип операции с ним (см. выше). Сведения о дате и времени операции терминал заполняет самостоятельно. Дополнительные сведения могут быть добавлены клерком. Когда ввод завершён и подтверждён, сведения отправляются на сервер городской службы. От сервера может придти подтверждение или отказ. Если вводимая операция некорректна, то сервер должен прислать отказ, так как он отслеживает корректность последовательности операций (например, по отклонённой заявке не могут быть оформлены и/или выданы документы; после выдачи документов нельзя отклонить заявку и т. п.). Для исправления подобной ситуации клерк может запросить весь список операций по заявке и внести необходимые изменения. Также клерк отмечает в терминале выполненные им приёмы клиентов. Приём не может быть помечен выполненным заранее, до его начала. Клер может работать с данными о своём расписании работы на неделе. В течение недели он должен отработать 30 часов. Если есть заявки клиентов на приём на какое-то время, то клерк не может изменить своё расписание так, что это время станет не рабочим. Сведения запрашиваются и сохраняются на сервере городской службы. По окончании работы клерк должен перевести терминал обратно в режим обслуживания клиентов.

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

Моделированию подлежит терминал. Сервер, платёжная система и шлюз сотовой связи находятся за границами моделируемой системы и моделированию в качестве её частей не подлежат. Несмотря на это, дополнительно следует создать схему базы данных сервера городской службы, где хранятся сведения о клиентах, заявках, операциях с заявками и др.. Предполагается, что в самом терминале нет собственной БД, а значит, следует смоделировать внешнюю БД.

Предупреждение


Размещение на других ресурсах, а также коммерческое использование материалов, опубликованных в данном разделе, возможно только с разрешения авторов. По всем вопросам пишите:   

  

© Кафедра системного программирования ВМК МГУ.

Обновлено: 20.XII.2019