- •«Учет оказания услуг автошколой»
- •Введение
- •Глава 1 описание предметной области
- •Глава 2 постановка задачи
- •Глава 3 проектирование информационного обеспечения
- •3.1 Диаграмма потоков данных
- •3.2 Концептуальная модель данных
- •3.3 Логическая модель данных
- •3.4 Физическая модель данных
- •3.5 Описание пользовательского интерфейса
- •3.5.1 Средства разработки программного обеспечения
- •3.5.2 Описание программного обеспечения
- •Заключение
- •Список литературы
- •Приложение 1
- •Приложение 2
- •Приложение 3
- •Приложение 4
Заключение
В рамках курсовой работы рассматривается процесс оказания услуг автошколой.
В результате выполнения курсовой работы была изучена предметная область, построена диаграмма потоков данных, концептуальная и логическая модели данных. Также был разработан удобный пользовательский интерфейс для приложения.
Разработанная система позволяет хранить и работать со следующей информацией:
информация о клиентах,
оплата от клиентов,
информация о группах,
информация о преподавателях,
информация о занятиях,
информация о занятиях сверх нормы,
Информация об экзаменах.
Система формирует отчеты с различным оформлением:
В «Отчете по допущенным до экзамена в ГАИ»:
Выделяются жирным шрифтом те клиенты, кто сдает экзамен на базе автошколы,
Выделяются красным шрифтом те клиенты, у которых отсутствуют свидетельства об окончании обучения.
В «Отчете по сдаче экзаменов в ГАИ по преподавателям»:
Выделяются зеленым цветом те клиенты, которые сдали успешно экзамен с первой попытки,
Выделяются красным шрифтом те клиенты, для которых вторая и последующие попытки сдачи экзаменов провальные.
После формирования отчета по допущенным до экзамена клиентам, делается проверка на наличие у всех допущенных свидетельств об окончании курсов водителей категории «B». При их отсутствии клиентам присваиваются номера свидетельств, после чего свидетельства распечатываются.
Список литературы
Гейн К., Сарсон Т. Структурный системный анализ: средства и методы . – М : Эйтекс, 1992.
Документация FireBird, URL: http://www.firebirdsql.org/manual/ru/
Калашян А.Н ., Калянов Г.Н . Структурны е м одели бизнеса: DFD-технологии. – М .: Финансы и статистика, 2003.
Калянов Г.Н. Консалтинг при автоматизации предприятий: подходы , методы , средства. URL: http://www.interface.ru/fset.asp?Url = /case/defs0.htm.
Карпова Т. С. Базы данных: модели, разработка, реализация/ Т.С. Карпова.-СПб.:Питер, 2001.-304с.
Коннолли Томас. Базы данных. Проектирование, реализация, сопровождение. Теория и практика. 3-е издание./Томас Коннолли, Каролин Бегг.-М.:Издательский дом «Вильямс», 2003.-1440 с.
Моор П.К. Базы данных. / П.К. Моор, А.П. Моор.-Тюмень. Издательство Тюменского государственного университета, 2010.-288 с.
Питер Пин-Шен Чен. Модель «сущность-связь» — шаг к единому представлению о данных. М., 2000 г.
Приложение 1
Документы
Рисунок 1 – Отчет по допущенным до экзамена в ГАИ
Рисунок 2 – Отчет по сдаче экзаменов в ГАИ по преподавателям
Рисунок 3 – Свидетельство об окончании курсов водителей категории «B»
Приложение 2
Словарь данных для описания диаграммы потоков данных
@ИМЯ = Отчет по допущенным до экзамена в ГАИ
@ТИП = дискретный поток
@БНФ = ID_группы + Название группы + 1{ID_Клиента + Фамилия + Имя + Отчество + телефон + отметка о сдаче экзамена на базе автошколы + Nсвидетельства}
@ИМЯ = Информация о сдаче экзамена
@ТИП = дискретный поток
@БНФ = 1{ID_клиента + Фамилия + Имя + Отчество + Дата экзамена + [«Теория» ! «Автодром» ! «Город»] + [«Внутренний экзамен» ! «Экзамен в ГАИ»] + штрафной балл}
@ИМЯ = Информация о группе
@ТИП = дискретный поток
@БНФ = ID_группы + Название группы
@ИМЯ = Информация о новой группе
@ТИП = дискретный поток
@БНФ = ID_группы + Название группы + Дата начала занятий + Стоимость обучения + Количество часов теории + количество часов вождения + ID_Преподавателя + ФИО преподавателя + «Лектор»
@ИМЯ = Данные о новой группе
@ТИП = дискретный поток
@БНФ = ID_группы + Название группы + Дата начала занятий + Стоимость обучения + Количество часов теории + количество часов вождения + ID_Преподавателя + ФИО преподавателя + «Лектор»
@ИМЯ = Информация о преподавателе
@ТИП = дискретный поток
@БНФ = ID_Преподавателя + ФИО + [«Лектор» ! «Инструктор»]
@ИМЯ = Список присутствующих на занятии
@ТИП = дискретный поток
@БНФ = Дата занятия + {ID_клиента + Фамилия + Имя + Отчество + количество часов} + [«Вождение» ! «Теория»]
@ИМЯ = Отчет по сдаче экзамена в ГАИ по преподавателям
@ТИП = дискретный поток
@БНФ = Id_Преподавателя + ФИО + «Экзамен в ГАИ» + [[«Лектор» + 1{«Теория» + Nгруппы + Название группы + ID_Клиента + Фамилия + Имя + Отчество + телефон + Nсвидетельства + Количество пересдач + Результат последнего экзамена}] ! [«Инструктор» + 1{[«Автодром» ! «Город»] + Nгруппы + Название группы + ID_Клиента + Фамилия + Имя + Отчество + телефон + Nсвидетельства + Количество пересдач + Результат последнего экзамена }]]
@ИМЯ = Информация об оплате занятий
@ТИП = дискретный поток
@БНФ = 1{ID_клиента + Фамилия + Имя + Отчество + Сумма оплаты + Дата оплаты}
@ИМЯ = Информация о клиенте
@ТИП = дискретный поток
@БНФ = ID_Клиента + Фамилия + Имя + Отчество +Дата рождения + прописка + Nпаспорта + серия паспорта +Кем выдан + Когда выдан + телефон + (отметка о сдаче экзамена на базе автошколы) + (Nсвидетельства) + (Nсправки) + (отметка об уплате гос. пошлины) + (Id_Группы) + (ID_преподавателя + ФИО преподавателя + «Инструктор»)
@ИМЯ = Стоимость часа занятия
@ТИП = дискретный поток
@БНФ = Цена на текущий день
@ИМЯ = Свидетельство об окончании обучения
@ТИП = дискретный поток
@БНФ = 1{Nсвидетельства + ID_Клиента + Фамилия + Имя + Отчество + Nсправки}
@ИМЯ = Информация об оплате клиентами
@ТИП = дискретный поток
@БНФ = 1{ID_клиента + Сумма оплаты + Дата оплаты}
@ИМЯ = Запрос информации о клиенте
@ТИП = Управляющий поток
@БНФ = /Запрос информации о клиенте/
@ИМЯ = Информация о найденном клиенте
@ТИП = дискретный поток
@БНФ = ID_Клиента + Фамилия + Имя + Отчество + Дата рождения + прописка + Nпаспорта + серия паспорта +Кем выдан + Когда выдан + телефон + отметка о сдаче экзамена на базе автошколы + Nсвидетельства + Nсправки + отметка об уплате гос. пошлины + Id_Группы+ ID_преподавателя + ФИО преподавателя + «Инструктор»
@ИМЯ = Данные о клиенте
@ТИП = дискретный поток
@БНФ = ID_Клиента + Фамилия + Имя + Отчество + Дата рождения+ прописка + Nпаспорта + серия паспорта + Кем выдан + Когда выдан + телефон + (отметка о сдаче экзамена на базе автошколы) + (Nсвидетельства) + (Nсправки) + (отметка об уплате гос. пошлины) + (Id_Группы) + ID_преподавателя + ФИО преподавателя + «Инструктор»
@ИМЯ = Запрос информации об оплате
@ТИП = Управляющий поток
@БНФ = /Запрос информации об оплате для списка клиентов/
@ИМЯ = Информация об оплате
@ТИП = дискретный поток
@БНФ = 1{ID-клиента + сумма оплаты}
@ИМЯ = Номера свидетельств для клиентов
@ТИП = дискретный поток
@БНФ = 1{ID_клиента + Фамилия + Имя + Отчество + NСвидетельства}
@ИМЯ = Запрос информации о клиентах
@ТИП = Управляющий поток
@БНФ = /Запрос информации для списка клиентов/
@ИМЯ = Данные о клиентах
@ТИП = дискретный поток
@БНФ = = 1{ID_Клиента + Фамилия + Имя + Отчество + телефон + отметка о сдаче экзамена на базе автошколы + Nсвидетельства + Nсправки + отметка об уплате гос. пошлины + Id_Группы + Название группы+ ID_преподавателя + ФИО преподавателя + [«Инструктор»! «Лектор»]}
@ИМЯ = Запрос результатов сдачи экзаменов в ГАИ
@ТИП = Управляющий поток
@БНФ = /Запрос результатов сдачи экзаменов в ГАИ для списка клиентов/
@ИМЯ = Данные о сдаче экзаменов в ГАИ
@ТИП = дискретный поток
@БНФ = 1{ID_клиента + количество пересдач + Результат последнего экзамена + [«Теория» ! «Автодром» ! «Город»] + «Экзамен в ГАИ»}
@ИМЯ = Запрос результатов сдачи внутренних экзаменов
@ТИП = Управляющий поток
@БНФ = /Запрос результатов последней сдачи внутренних экзаменов для списка клиентов/
@ИМЯ = Данные о сдаче внутренних экзаменов
@ТИП = дискретный поток
@БНФ = 1{ID_клиента + дата экзамена + [«Теория» ! «Автодром» ! «Город»] + «Внутренний экзамен» + штрафной балл}
@ИМЯ = Запрос информации о сумме оплаты за часы сверх нормы
@ТИП = Управляющий поток
@БНФ = /Запрос информации о сумме оплаты за часы сверх нормы для списка клиентов/
@ИМЯ = Данные о сумме оплаты за часы сверх нормы
@ТИП = дискретный поток
@БНФ = 1{ID_клиента + Сумма оплаты часов сверх нормы}
@ИМЯ = Данные о сдаче экзаменов
@ТИП = дискретный поток
@БНФ = 1{ID_клиента + Дата экзамена + [«Теория» ! «Автодром» ! «Город»] + [«Внутренний экзамен» ! «Экзамен в ГАИ»] + штрафной балл}
@ИМЯ = Информация о часах сверх нормы
@ТИП = дискретный поток
@БНФ =1{ID_клиента + Количество часов + стоимость часа}
@ИМЯ = Запрос информации о часах пройденных занятий
@ТИП = Управляющий поток
@БНФ = /Запрос информации о часах пройденных занятий для списка клиентов/
@ИМЯ = Информация о часах пройденных занятий
@ТИП = дискретный поток
@БНФ = 1{Дата занятия + ID_клиента + количество часов + [«Вождение» ! «Теория»]}
@ИМЯ = Информация о посещении занятий
@ТИП = дискретный поток
@БНФ = 1{Дата занятия + ID_клиента + количество часов + [«Вождение» ! «Теория»] }
@ИМЯ = Запрос информации о норме часов
@ТИП = Управляющий поток
@БНФ = /Запрос информации о норме часов для списка клиентов/
@ИМЯ = Норма часов
@ТИП = дискретный поток
@БНФ = 1{Дата занятия + ID_клиента + количество теории + количество часов вождения}
@ИМЯ = Информация о клиентах
@ТИП = дискретный поток
@БНФ = 1{ID_Клиента + Фамилия + Имя + Отчество + Дата рождения + телефон + отметка о сдаче экзамена на базе автошколы + Nсвидетельства + Id_Группы + Наименование группы}
@ИМЯ = Список допущенных до экзамена в ГАИ
@ТИП = дискретный поток
@БНФ = 1{ID_Клиента + Фамилия + Имя + Отчество + Дата рождения + телефон + отметка о сдаче экзамена на базе автошколы + Nсвидетельства + Id_группы + Наименование группы}
1) Спецификация процесса 1.1 «Внесение информации об оплате»
@ВХОД = Информация об оплате занятий
@ВЫХОД = Информация об оплате клиентами
@СПЕЦИФИКАЦИЯ ПРОЦЕССА
ВЫПОЛНИТЬ
«Загрузить в $ТаблицаОплат информацию из файла «информация об оплате занятий», который предоставляет бухгалтерия. Проверить правильность введенных данных.
Для каждой стр из $ТаблицаОплат цикл
ВСТАВИТЬ В ЖурналОплат(Id_клиента, ДатаОплаты, СуммаОплаты) ЗНАЧЕНИЯ ($Стр.ID_Клиента, $Дата оплаты, $Стр.СуммаОплаты)
КонецЦикла»
КОНЕЦ
@КОНЕЦ СПЕЦИФИКАЦИИ ПРОЦЕССА
2) Спецификация процесса 1.2 «Поиск клиента в базе»
@ВХОД = Информация о клиенте
@ВХОД = Информация о найденном клиенте
@ВЫХОД = Данные о клиенте
@ВЫХОД = Запрос информации о клиенте
@СПЕЦИФИКАЦИЯ ПРОЦЕССА
ВЫПОЛНИТЬ
«Происходит поиск клиента.
Если клиент = не найден тогда
В хранилище «Клиенты» вносится информация о новом клиенте. Назначается инструктор.
Иначе
в хранилище «Клиенты» помещается обновленная информация о клиенте.
КонецЕсли»
КОНЕЦ
@КОНЕЦ СПЕЦИФИКАЦИИ ПРОЦЕССА
3) Спецификация процесса 1.4 «Ввод информации о результатах сдачи экзаменов»
@ВХОД = Информация о сдаче экзамена
@ВЫХОД = Данные о сдаче экзамена
@СПЕЦИФИКАЦИЯ ПРОЦЕССА
ВЫПОЛНИТЬ
«Загрузить в $ТаблицаЭкзамены информацию из файла «Информация о сдаче экзамена», который предоставляет учебный отдел. Проверить правильность введенных данных.
Заполнить параметры: $ТипЭкзамена (список выбора: 0-«Теория», 1-«Автодром», 2-«Город») и $ВидЭкзамена (chakBox: falshe-«Внутренний», True-«Экзамен в ГАИ»)
Для каждой стр из $ТаблицаЭкзамены цикл
ВСТАВИТЬ В ЖурналУчетаСдачиЭкзаменов (Id_клиента, ДатаЭкзамена, ТипЭкзамена, ВидЭкзамена, ШтрафныеБаллы) ЗНАЧЕНИЯ ($Стр.ID_Клиента, $ДатаЭкзамена, $ТипЭкзамена, $ВидЭкзамена, $Стр.ШтрафныеБаллы)
КонецЦикла»
КОНЕЦ
@КОНЕЦ СПЕЦИФИКАЦИИ ПРОЦЕССА
4) Спецификация процесса 1.5 «Внесение информации о посещаемости занятий»
@ВХОД = Норма часов
@ВХОД = Стоимость часа занятия
@ВХОД = Список присутствующих на занятии
@ВХОД = Список присутствующих на занятии
@ВХОД = Информация о часах пройденных занятий
@ВЫХОД = Информация о часах сверх нормы
@ВЫХОД = Запрос информации о часах пройденных занятий
@ВЫХОД = Информация о посещении занятий
@ВЫХОД = Запрос информации о норме часов
@СПЕЦИФИКАЦИЯ ПРОЦЕССА
«Оператор направляет запрос на внесение информации о пройденных часах занятий. Выбирает тип занятия (TRUE – Лекция, False-Вождение). Определяется количество часов превышающих норму»
Информация из списка присутствующих заносится в хранилище «Журнал посещаемости»
В Журнал учета часов сверх нормы помещаются не все даные из списка присутствующих. Для определения нужной информации необходимо выполнить следующие действия:
/* Определим норму часов для списка клиентов */
ВЫБРАТЬ
СписокПРисутствующихНаЗанятии.ID_Клиента,
ВЫБОР
КОГДА $ТипЗанятия ТОГДА
КоличествоЧасовТеории
ИНАЧЕ
КоличествоЧасовВождения
КОНЕЦ КАК норма
ПОМЕСТИТЬ В НормаЗанятий
ИЗ СписокПРисутствующихНаЗанятии, Клиенты, Группы
ГДЕ СписокПРисутствующихНаЗанятии.ID_Клиента = Клиенты.ID_Клиента И Группа_ID = ID_Группа
////////////////////////////////////////////////
ВЫБРАТЬ
НормаЗанятий. ID_Клиента,
ВЫБОР
КОГДА ЕСТЬNULL(ПройденныеЗанятия.КоличествоЧасов, 0)> НормаЗанятий.Норма ТОГДА
ЕСТЬNULL(ПройденныеЗанятия.КоличествоЧасов, 0)-НормаЗанятий.Норма
ИНАЧЕ
0
КОНЕЦ как СверхНормы
ПОМЕСТИТЬ ЧасыСверхНормы
ИЗ
НормаЗанятий ЛЕВОЕ СОЕДИНЕНИЕ
(ВЫБРАТЬ
Клиент_ID, СУММА(КоличествоЧасов) как КоличествоЧасов
ИЗ ЖурналПосещаемости ГДЕ ТипЗанятия = $ТипЗанятия
ГРУППИРОВАТЬ ПО Клиент_ID) как ПройденныеЗанятия
ПО НормаЗанятий.ID_Клиента = ПройденныеЗанятия. Клиент_ID
ГДЕ СверхНормы>0
Для каждого Стр из ЧасыСверхНормы Цикл
ВСТАВИТЬ В ЖуранлУчетаЧасовСверхНормы(Клиент_ID, КоличествоЧасов, СтоимостьЧаса) ЗНАЧЕНИЯ($Стр.Клиент_ID, $Стр.СВерхНормы, $СтоимостьЧаса)
КонецЦикла
КОНЕЦ
@КОНЕЦ СПЕЦИФИКАЦИИ ПРОЦЕССА
5) Спецификация процесса 1.6 «Внесение информации о группе»
@ВХОД = Информация о новой группе
@ВЫХОД = Данные о новой группе
@СПЕЦИФИКАЦИЯ ПРОЦЕССА
ВЫПОЛНИТЬ
«Оператор вносит информацию о новой группе»
ВСТАВИТЬ В Группы (НазваниеГруппы, ДатаНачалаЗанятий, СтоимостьОбучения, КоличествоЧасовТеории, КоличествоЧасовВождения, ID_Преподавателя) ЗНАЧЕНИЯ ($Стр.НазваниеГруппы, $ДатаНачалаЗанятий, $СтоимостьОбучения, $КоличествоЧасовТеории, $КоличествоЧасовВождения, $ID_Преподавателя)
КОНЕЦ
@КОНЕЦ СПЕЦИФИКАЦИИ ПРОЦЕССА
6) Спецификация процесса 1.3.1 «Получение информации о клиентах»
@ВХОД = Данные о клиентах
@ВХОД = Информация о группе
@ВХОД = Информация о преподавателе
@ВЫХОД = Запрос информации о клиентах
@ВЫХОД = Информация о клиентах
@СПЕЦИФИКАЦИЯ ПРОЦЕССА
ВЫПОЛНИТЬ
ЕСЛИ существует список выбора «Группа» ТОГДА
ВЫБРАТЬ ID_Клиента, Фамилия, Имя, Отчество, Дата рождения Телефон, ОтметкаОСдачеЭкзаменаНаБазеАвтошколы, Nсвидетельства, Id_Группы, Наименование_группы
ПОМЕСТИТЬ в ИнформацияОКлиентах
ИЗ Клиенты, Группы
ГДЕ ID_Группа = Группа_ID И ID_Группа = $Группа И ОтметкаОбУплатеГосПошлины И Фамилия IS NOT NULL И Имя, IS NOT NULL И Отчество IS NOT NULL И прописка IS NOT NULL И Nпаспорта IS NOT NULL И СерияПаспорта IS NOT NULL И Nсправки IS NOT NULL
ИНАЧЕ
ЕСЛИ существует список выбора «Преподаватель» ТОГДА
ЕСЛИ $Преподаватель.ТИП ТОГДА
ВЫБРАТЬ ID_Клиента, Фамилия, Имя, Отчество, Дата рождения, Телефон, ОтметкаОСдачеЭкзаменаНаБазеАвтошколы, Nсвидетельства, Id_Группы, Наименование_группы
ПОМЕСТИТЬ в ИнформацияОКлиентах
ИЗ Клиенты, Группы
ГДЕ ID_Группа = Группа_ID И Группы.Преподаватель_ID = $Преподаватель.ID_Преподавателя и ОтметкаОСдачеЭкзаменаНаБазеАвтошколы
ИНАЧЕ
ВЫБРАТЬ ID_Клиента, Фамилия, Имя, Отчество, Дата рождения; Телефон, ОтметкаОСдачеЭкзаменаНаБазеАвтошколы, Nсвидетельства, Id_Группы, Наименование_группы
ПОМЕСТИТЬ в ИнформацияОКлиентах
ИЗ Клиенты, Группы
ГДЕ ID_Группа = Группа_ID И Клиенты.Преподаватель_ID = $Преподаватель.ID_Преподавателя и ОтметкаОСдачеЭкзаменаНаБазеАвтошколы
КОНЕЦЕСЛИ
КОНЕЦЕСЛИ
КОНЕЦЕСЛИ
КОНЕЦ
@КОНЕЦ СПЕЦИФИКАЦИИ ПРОЦЕССА
7) Спецификация процесса 1.3.2 «Формирование отчета по допущенным до экзамена в ГАИ»
@ВХОД = Данные о сдаче внутренних экзаменов
@ВХОД = Информация об оплате
@ВХОД = Данные о сумме оплаты за часы сверх нормы
@ВХОД = Информация о клиентах
@ВЫХОД = Запрос информации об оплате
@ВЫХОД = Запрос результатов сдачи внутренних экзаменов
@ВЫХОД = Запрос информации о сумме оплаты за часы сверх нормы
@ВЫХОД = Отчет по допущенным до экзамена в ГАИ
@ВЫХОД = Список допущенных до экзамена в ГАИ
@СПЕЦИФИКАЦИЯ ПРОЦЕССА
ВЫПОЛНИТЬ
«Оператор запрашивает отчет по допущенным до экзамена в ГАИ. Данный отчет содержит информацию о допущенных до экзамена. К экзамену допускаются все, у кого нет долгов по оплате и успешно сданы внутренние экзамены. Данный отчет направляется в отдел обучения. Список допущенных отправляется для проверки наличия Свидетельств об обучении»
/* Вид экзамена falshe-«Внутренний», True-«Экзамен в ГАИ» */
$Массив клиентов = ИнформацияОКлиентах.ВЫгрузитьКОлонку (ID_КЛИЕНТА);
/* Определим дату последнего экзамена для списка клиентов */
ВЫБРАТЬ Клиент_ID, МАКС(ДатаЭкзамена) как ДатаЭкзамена, ТипЭкзамена
ПОМЕСТИТЬ ВнутрЭкзамены
ИЗ Экзамены
ГРУППИРОВАТЬ ПО Клиент_ID, ТипЭкзамена
ОТОБРАТЬ Клиент_ID В($Массив клиентов) И НЕ ВидЭкзамена
///////////////////////////////////////////////////////////
/* Список клиентов, которые сдали внутренние экзамены.
Типы экзаменов: 0-«Теория», 1-«Автодром», 2-«Город». */
ВЫБРАТЬ
ВнутрЭкзамены.Клиент_ID,
ВнутрЭкзамены.ТипЭкзамена,
ВЫБОР КОГДА ТипЭкзамена = 0 ТОГДА
ШтрафнойБалл<3
ИНАЧЕ
ШтрафнойБалл<5
КОНЕЦ КАК РезультатЭкзамена
ПОМЕСТИТЬ РезультатыЭкзаменов
ИЗ ВнутрЭкзамены ЛЕВОЕ СОЕДИНЕНИЕ Экзамены
ПО ВнутрЭкзамены.Клиент_ID = Экзамены.Клиент_ID И ВнутрЭкзамены.ДатаЭкзамена = Экзамены. ДатаЭкзамена
ГДЕ РезультатЭкзамена
/////////////////////////////////////////////////////////
/* Список тех, кто сдал все 3 типа экзаменов */
ВЫБРАТЬ
РезультатЭкзамена. Клиент_ID
ПОМЕСТИТЬ ПрошлиЭкзамены
ИЗ РезультатЭкзамена
ГУППИРОВАТЬ ПО РезультатЭкзамена. Клиент_ID
ОТОБРАТЬ КОЛИЧЕСТВО(РезультатЭкзамена.Клиент_ID) = 3
////////////////////////////////////////////////////////////
/* Список клиентов, которые оплатили все занятия */
ВЫБРАТЬ Клиент_ID
ПОМЕСТИТЬ РезультатыОплаты
ИЗ
(ВЫБАРТЬ Клиент_ID, СУММА(СуммаОплаты) как СчетКлиента
ИЗ Оплата ГРУППИРОВАТЬ ПО Клиент_ID
ОТОБРАТЬ Клиент_ID В ($Массив клиентов)
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ Клиент_ID, -СУММА(СтоимостьОбучения) как СчетКлиента
ИЗ Группа, Клиент
ГДЕ ID_Группа = Группа_ID
ГРУППИРОВАТЬ ПО Клиент_ID
ОТОБРАТЬ Клиент_ID В ($Массив клиентов)
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ Клиент_ID, -СУММА(КоличествоЧасов * СтоимостьЧаса) как СчетКлиента ИЗ СтоимостьСверхНормы
ГРУППИРОВАТЬ ПО Клиент_ID
ОТОБРАТЬ Клиент_ID В ($Массив клиентов)) как Оплачено
ГРУППИРОВАТЬ ПО Клиент_ID
ОТОБРАТЬ СУММА(СчетКлиента)>0
////////////////////////////////////////////////////////////////////////////////////
/* Результирующая, с полной информацией по клиентам */
ВЫБРАТЬ
Итоговая.ID_Клиента, Фамилия, Имя, Отчество, Дата рождения, Телефон,
ВЫБОР КОГДА ОтметкаОСдачеЭкзаменаНаБазеАвтошколы ТОГДА
«Автошкола»
ИНАЧЕ
«ГАИ, по месту жительства»
КОНЕЦ как ОтметкаОСдачеЭкзаменаНаБАзеАвтошколы, Nсвидетельства, Id_Группы, Наименование_группы
ИЗ (ВЫБРАТЬ РАЗЛИЧНЫЕ Клиент_ID ИЗ
(ВЫБРАТЬ ПрошлиЭкзамены.Клиент_ID ИЗ ПрошлиЭкзамены
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ РезультатыОплаты.Клиент_ID ИЗ РезультатыОплаты) КАК Список) КАК ОставшиесяКлиенты
ЛЕВОЕ СОЕДИНЕНИЕ ИнформацияОКлиентах ПО Итоговая.ID_Клиента = ИнформацияОКлиентах.ID_Клиента
КОНЕЦ
@КОНЕЦ СПЕЦИФИКАЦИИ ПРОЦЕССА
8) Спецификация процесса 1.3.3 «Формирование отчета о сдаче экзаменов в ГАИ по преподавателям»
@ВХОД = Данные о сдаче экзаменов в ГАИ
@ВХОД = Информация о клиентах
@ВЫХОД = Запрос результатов сдачи экзаменов в ГАИ
@ВЫХОД = Отчет по сдаче экзамена в ГАИ по преподавателям
@СПЕЦИФИКАЦИЯ ПРОЦЕССА
ВЫПОЛНИТЬ
«Оператор запрашивает Отчет по сдаче экзамена в ГАИ по преподавателям. Данный отчет содержит информацию о количестве пересдач и результате последних экзаменов у учеников по выбранному преподавателю. Данный отчет направляется в отдел обучения.»
/* Вид экзамена: falshe-«Внутренний», True-«Экзамен в ГАИ»
Типы экзаменов: 0-«Теория», 1-«Автодром», 2-«Город».
Типы преподавателей: True –лектор, false-инструктор*/
$Массив клиентов = ИнформацияОКлиентах.ВЫгрузитьКОлонку (ID_КЛИЕНТА);
ЕСЛИ $Преподаватель.ТИП ТОГДА
{
ВЫБРАТЬ Клиент_ID, МАКС(ДатаЭкзамена) как ДатаПЭкзамена, КОЛИЧЕСТВО( * ) как КолПересдач, ТипЭкзамена, ВидЭкзамена
ПОМЕСТИТЬ Пересдачи
ИЗ Экзамены
ГРУППИРОВАТЬ ПО Клиент_ID, ТипЭкзамена, ВидЭкзамена
ОТОБРАТЬ ВидЭкзамена И Клиент_ID В ($Массив клиентов) И ТипЭкзамена = 0
////////////////////////////////////////////
ВЫБРАТЬ
Пересдачи.Клиент_ID,
Пересдачи.ДатаПЭкзамена,
Пересдачи. КолПересдач,
«Теория» как ТипЭкзамена
Пересдачи.ВидЭкзамена,
ВЫБОР КОГДА ШтрафнойБалл<3 ТОГДА
«СДАН»
ИНАЧЕ
«НЕ СДАН»
КОНЕЦ КАК РезЭкзамена,
Фамилия, Имя, Отчество, прописка, Nпаспорта, серия паспорта, телефон, Nсвидетельства
ИЗ Пересдачи ЛЕВОЕ СОЕДИНЕНИЕ ИнформацияОКлиентах ПО Пересдачи.Клиент_ID = ИнформацияОКлиентах.ID_Клиента ЛЕВОЕ СОЕДИНЕНИЕ Экзамены ПО Пересдачи.Клиент_ID = Экзамены.Клиент_ID И Пересдачи.ДатаПЭкзамена = Экзамены.ДатаЭКзамена И Пересдачи.ТипЭкзамена = Экзамены.ТипЭкзамена И Пересдачи.ВидЭкзамена = Экзамены.ВидЭкзамена
СОРТИРОВАТЬ ПО
РезЭкзамена,
Фамилия, Имя, Отчество
}
ИНАЧЕ
{
ВЫБРАТЬ Клиент_ID, МАКС(ДатаЭкзамена) как ДатаПЭкзамена, КОЛИЧЕСТВО( * ) как КолПересдач, ТипЭкзамена, ВидЭкзамена
ПОМЕСТИТЬ Пересдачи
ИЗ Экзамены
ГРУППИРОВАТЬ ПО Клиент_ID, ТипЭкзамена, ВидЭкзамена
ОТОБРАТЬ ВидЭкзамена И Клиент_ID В ($Массив клиентов) И ТипЭкзамена>0
////////////////////////////////////////////
ВЫБРАТЬ
Пересдачи.Клиент_ID,
Пересдачи.ДатаПЭкзамена,
Пересдачи. КолПересдач,
ВЫБОР КОГДА Пересдачи.ТипЭкзамена=1 ТОГДА
«Автодром» ИНАЧЕ «Город»
КОНЕЦ как ТипЭкзамена,
Пересдачи.ВидЭкзамена,
ВЫБОР КОГДА ШтрафнойБалл<5 ТОГДА
«СДАН» ИНАЧЕ «НЕ СДАН»
КОНЕЦ КАК РезЭкзамена,
Фамилия, Имя, Отчество, прописка, Nпаспорта, серия паспорта, телефон, Nсвидетельства
ИЗ Пересдачи ЛЕВОЕ СОЕДИНЕНИЕ ИнформацияОКлиентах ПО Пересдачи.Клиент_ID = ИнформацияОКлиентах.ID_Клиента ЛЕВОЕ СОЕДИНЕНИЕ Экзамены ПО Пересдачи.Клиент_ID = Экзамены.Клиент_ID И Пересдачи.ДатаПЭкзамена = Экзамены.ДатаЭКзамена И Пересдачи.ТипЭкзамена = Экзамены.ТипЭкзамена И Пересдачи.ВидЭкзамена = Экзамены.ВидЭкзамена
СОРТИРОВАТЬ ПО
ТипЭкзамена, РезЭкзамена,
Фамилия, Имя, Отчество
}
КОНЕЦЕСЛИ;
КОНЕЦ
@КОНЕЦ СПЕЦИФИКАЦИИ ПРОЦЕССА
9) Спецификация процесса 1.3.4 «Внесение информации о свидетельствах об окончании обучения»
@ВХОД = Список допущенных до экзамена в ГАИ
@ВЫХОД = Номера свидетельств для клиентов
@ВЫХОД = Свидетельство об окончании обучения
@СПЕЦИФИКАЦИЯ ПРОЦЕССА
ВЫПОЛНИТЬ
«Из списка допущенных до экзамена выбираются клиенты, у которых нет свидетельства и помещаются в таблицу НовыеСвидетельства». Последний максимальный номер свидетельства хранится в системе.»
Для каждого Стр из НовыеСвидетельства Цикл
$МаксЗнСвидетельства = $МаксЗнСвидетельства + 1;
ВСТАВИТЬ В КЛИЕНТЫ (NСвидетельства) ЗАНЧЕНИЯ($МаксЗнСвидетельства) ГДЕ ID_Клиента = Стр.ID_ Клиента
КонецЦикла;
«После заполнения номеров свидетельств – свидетельства распечатываются.»
КОНЕЦ
@КОНЕЦ СПЕЦИФИКАЦИИ ПРОЦЕССА
