Автоматизация учебного процесса в высших учебных заведениях

Анализ автоматизируемых при разработке учебных планов с нормативными документами. Определение целевого сегмента пользователей. Разработка структуры базы данных и отчетных документов. Дизайн интерфейса. Процесс подготовки образовательных программ.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 19.01.2017
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

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

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

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

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

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

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

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

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

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

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

Выбор необходимого справочника для заполнения.

Выбор кафедры.

Выбор специальности.

Выбор вида профессиональной деятельности.

Выбор профессиональной деятельности.

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

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

Для наглядности, главное меню формы будет состоять только из двух пунктов меню:

«Справочники», который содержит в себе 5 видов справочников:

Федеральные государственные образовательные стандарты.

Профессиональные стандарты.

Кафедры.

Специальности.

Профессиональная деятельность.

Справка, в которой необходимо привести информацию о разработчике.

Пользовательский интерфейс справочника ФГОС должен обеспечивать пользователю решение следующих задач:

Выбор необходимой кафедры, специальности, вида профессиональной деятельности.

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

Как видно из структуры формы, добавлена два окна, «тип» и «описание» профессиональных задач или профессиональных компетенций.

Добавление из буфера обмена профессиональных задач и профессиональных компетенций.

Предполагается, что данная возможность позволяет в удобном виде получить информацию из документов и структурировать ее. На рисунке 2.2 представлен механизм взятия информации о профессиональной деятельности выпускника из документа ФГОС, с помощью буфера обмена и стандартных механизмов Microsoft office, т.е. копирование необходимой информации и последующее ее занесение в форму приложения.

Рис. 2.2 - Получение информации из текстового документа ФГОС

Произведение необходимых изменений в названии профессиональных задач и профессиональных компетенций.

Удаление устаревших или ненужных профессиональных задач и профессиональных компетенций.

При выборе справочника «профессиональные стандарты» нужно создать очередную форму, интерфейс которой представлен на рисунке 2.3.

Рис. 2.3 - Форма справочника профессиональных стандартов

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

Выбор необходимой кафедры, специальности, вида профессиональной деятельности. Необходима возможность выбора профессиональной деятельности.

Ручное добавление обобщенных трудовых функций и трудовых функций. Структура формы при этом уже была представлена на рисунке 2.19.

Добавление из буфера обмена обобщенных трудовых функций и трудовых функций.

Произведение необходимых изменений в названии обобщенных трудовых функций и трудовых функций.

Удаление устаревших или ненужных профессиональных задач и профессиональных компетенций

Но так как структура ПС очень сложная и обеспечить отображение всей информации без вреда для эстетической привлекательности интерфейса невозможно, было принято решение о добавлении дополнительной формы. Данная форма вызывается по двойному клику по нужной трудовой функции. Решается еще одна задача:

Описание каждой трудовой функции, и автоматическое разбиение этого описания на трудовые действия, необходимые умения, необходимые знания.

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

Внесение изменений в описание трудовой функции.

Удаление описания трудовой функции.

Данная форма будущего приложения представлена на рисунке 2.4.

Рис. 2.4 - Дополнительной форма

При выборе справочника «кафедра» будет появляться форма, структура которой представлена на рисунке 2.5.

Рис. 2.5 - Структура справочника «Кафедра»

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

Рис. 2.6 - Структура формы при попытке добавления, изменения или удаления

Следующим важным компонентом является справочник «Специальности». Структура данного справочника приведена на рисунке 2.7.

Рис. 2.7 - Структура справочника «Специальности»

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

Третьим справочником, который необходимо заполнить является справочник «профессиональная деятельность». Структура справочника представлена на рисунке 2.9.

Рис. 2.8 - Структура справочника «профессиональная деятельность»

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

После заполнения всех справочников можно приступать к созданию взаимосвязей между главными компонентами системы. Чтобы пользователь понимал, с каким объектом он работает, необходимо обеспечить принцип обратной связи. В отличии от технологического аналога «Гос - Мастер», где связка объектов происходит «стрелками», для эстетической привлекательности будем выделять компоненты различными цветовыми оттенками. Структурная схема при создании взаимосвязей компонентов будет выглядеть следующим образом (рисунок 2.9).

Рис. 2.9 - Структурная схема при создании взаимосвязей

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

3. Реализация

3.1 Исходные тесты с комментариями, скриншоты экранных форм

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

Среда разработки программного обеспечения C++ Builder 6 версии. C++ Builder - программный продукт, инструмент быстрой разработки приложений, интегрированная среда программирования, система, используемая программистами для разработки программного обеспечения на языке программирования C++. C++ Builder объединяет в себе комплекс объектных библиотек (STL, VCL, CLX, MFC и др.), компилятор, отладчик, редактор кода и многие другие компоненты. Большинство компонентов, разработанных в Delphi, можно использовать и в C++ Builder без модификации, но обратное утверждение не верно. C++ Builder содержит инструменты, которые при помощи drag-and-drop действительно делают разработку визуальной, упрощает программирование, благодаря встроенному WYSIWYG -- редактору интерфейса и пр. Drag-and-drop -- способ оперирования элементами интерфейса в интерфейсах пользователя при помощи манипулятора «мышь» или сенсорного экрана. WYSIWYG -- свойство прикладных программ или веб - интерфейсов, в которых содержание отображается в процессе редактирования и выглядит максимально близко похожим на конечную продукцию, которая может быть печатным документом, веб - страницей или презентацией. В настоящее время для подобных программ также широко используется понятие «визуальный редактор».

Microsoft SQL Server 2008 Express является бесплатным выпуском SQL Server и представляет собой идеальную платформу данных для обучения и создания небольших серверных приложений, которые могут распространяться независимыми поставщиками программного обеспечения. Microsoft SQL Server 2008 Express - это мощная и надежная система управления данными, обеспечивающая множество функций, защиту данных и высокую производительность для внедренных приложений - клиентов, «легких» веб - приложений и локальных хранилищ данных. SQL Server 2008 Express предназначен для упрощенного развертывания и быстрого создания прототипов. Так же его можно получить бесплатно и свободно распространять вместе с приложениями. Он разработан таким образом, чтобы полностью интегрироваться с другими продуктами, входящими в серверную инфраструктуру.

Генератор отчетов FastReport 4.0 от FastReport Inc. FastReport - программный продукт, основанный на технологии COM+, который предоставляет сторонним разработчикам возможность использовать свои компоненты в привычных для них средах разработки: C++ Builder, Delphi, Visual C++, C# и других. При этом разработчик получает возможность использовать связь с различными СУБД (MS SQL, Oracle, MS Access, FoxPro и так далее) и встраивать ядро FastReport в оболочки своего программного продукта.

Библиотека EhLib включает в себя компоненты и классы для Borland Delphi версии 5, 6, 7, 8, 2005, 2006, 2007 и Borland C++ Builder версии 5, 6 Borland Developer Studio 2006, CodeGear Delphi 2007, RAD Studio 2009, Embarcadero RAD Studio 2010, RAD Studio XE & RAD Studio XE2 и предназначена для расширения функциональности клиентской части приложений, работающей с БД: вывод, печать и занесения данных конечным пользователем.

SQL Manager for SQL Server версии 4.1.1 - это высокопроизводительная программа для разработки и администрирования баз данных сервера Microsoft SQL. SQL Manager работает со всеми версиями SQL Server, начиная с версии 2000, и поддерживает все новейшие возможности SQL Server, включая последовательности, индексы columnstore и пространственные индексы, FileTables, автономные базы данных, пользовательские серверные роли и многое другое. Программа включает в себя множество инструментов, таких как визуальный конструктор баз данных, который позволяет быстро разрабатывать базы данных SQL Server, визуальный конструктор запросов для построения сложных запросов к SQL Server и множество других полезных инструментов для эффективного администрирования и разработки SQL Server. Современный, графический интерфейс и оптимальная система мастеров настроек будут понятны даже новичку.

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

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

Модуль «Main» - представляет из себя главную форму приложения, в который выполняется главный механизм программы по установлению взаимосвязей. На рисунке 3.1 представлено окно главной формы.

Рис. 3.1 - Окно главного модуля «Main»

«Specialities» - «Специальности», позволяет добавлять, изменять, удалять специальности, вводить полное и сокращенное название. На рисунке 3.2 представлен вид окна модуля «Specialities».

Рис. 3.2 - Вид окна модуля «Specialities»

В C++ Builder используется компонент «DataModule» - невидимая форма доступа к данным, на которой располагаются основные компоненты работы с БД. Другими словами, «DataModule» - это некий контейнер для компонентов доступа к данным. Использование этого компонента позволяет разместить все необходимые компоненты в одном месте, а не по всему проекту. Можно одновременно использовать и несколько компонентов «DataModule» - один для таблиц, другой - для запросов и отчетов, например для использования «FastReport». Так же «DataModule» снижает риск в определенный момент потерять все невизуальные компоненты, которые располагаются на формах приложения и случайно создать новые, что в свою очередь займет лишнюю память. На рисунке 3.3 представлен вид окна модуля «DataModule» и все компоненты расположенные на нем.

Рис. 3.3 - Вид окна модуля «DataModule»

«Departments» - «Кафедры», позволяет добавлять, изменять, удалять кафедры, вводить полное и сокращенное название. На рисунке 3.4 представлен вид окна модуля «Departments».

Рис. 3.4 - Окно модуля «Departments»

«ProfessionTypes» - «Профессиональная деятельность», позволяет добавлять, изменять, удалять профессиональную деятельность, вводить её название. На рисунке 3.5 представлен вид окна модуля «ProfessionTypes».

Рис. 3.5 - Окно модуля «ProfessionTypes»

«FGOS» - «ФГОС», позволяет добавлять, изменять, удалять, пользоваться специальными механизмами вставки, вводить названия профессиональных задач и профессиональных компетенций. На рисунке 3.6 представлены основные компоненты окна модуля «FGOS».

Рис. 3.6 - Окно модуля «FGOS»

«PS» - «ПС» позволяет добавлять, изменять, удалять, пользоваться специальными механизмами вставки, вводить названия обобщенных трудовых функций и трудовых функций. На рисунке 3.7 представлены основные компоненты окна модуля «PS».

Рис. 3.7 - Окно модуля «PS»

«ChangeDepartment» и «ChangeSpeciality» позволяют изменять названия кафедры и название специальности, если это необходимо. На рисунках 3.8 и 3.9 представлен вид окон модулей «ChangeDepartment» и «ChangeSpeciality».

Рис. 3.8 - Окно модуля «ChangeDepartment»

Рис. 3.9 - Окно модуля «ChangeSpeciality»

«ChangePZK» и «ChangeOTF» позволяют изменять содержательное описание профессиональных знаний и профессиональных компетенций. На рисунках 3.10 и 3.11 представлен вид окон модулей «ChangePZK» и «ChangeOTF».

Рис. 3.10 - Окно модуля «ChangeOTF»

Рис. 3.11 - Окно модуля «ChangePZK»

«TFDetails» позволяет добавлять, пользоваться специальным механизмом вставки, изменять и удалять описание каждой трудовой функции. На рисунке 3.12 представлен вид окна модуля «TFDetails».

Рис. 3.12 - Окно модуля «TFDetails»

«ChangeTFDetails». Данная форма появляется при нажатии кнопки «Изменить» на предыдущей форме. «ChangeTFDetails» позволяет произвести нужные изменения. На рисунке 3.13 представлен вид окна модуля «ChangeTFDetails».

Модуль «Connection» позволяет подключится к серверу и базе данных, а так же записать данные подключения в специальный файл «setting». Так же при возникновении непредвиденных ситуаций (неправильное имя сервера или базы данных и др.), модуль позволяет приложению произвести закрытие, показав сообщение об ошибке. На рисунке 3.14 представлен вид окна модуля «Connection».

Рис. 3.13 - Окно модуля «ChangeTFDetails»

Рис. 3.14 - Окно модуля «Connection»

Все исходные коды вышеперечисленных модулей представлены в приложении А.

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

3.2 Руководство пользователя

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

Разработанная система предназначена для оптимизации технологии принятия управленческих решений по созданию взаимосвязей между сферой труда и сферой образования на основе информации о всех аспектах содержащихся в основных нормативных документах этих сфер. Разработанная система предоставляет возможность работы с документами ФГОС и ПС. Система позволяет вести справочники кафедр, специальностей, видов связанных профессий, профессиональных компетенций, профессиональных стандартов. Данная система позволяет составлять классификаторы, связывающие (обобщенные) профессиональные задачи с профессиональными компетенциями и профессиональными задачами. Так же система позволяет производить фильтрацию данных классификатора. Имеется возможность вести работу с отчетностью, а именно составлять отчеты по классификатору. Данная система позволяет получать четыре вида отчетов, два из которых описывают взаимосвязь ПС с профессиональными компетенциями, а два остальных описывают взаимосвязь ПС с профессиональными задачами.

Пользователь системы должен иметь опыт работы с ОС MS Windows (95/98/NT/2000/XP/2007), иметь базовые представления по работе Microsoft Word (2003/XP/2007/2010/2010/2013/2016), а также по возможности обладать следующими знаниями:

знать соответствующую предметную область;

знать основы многомерного анализа;

знать и иметь навыки работы с подобными приложениями.

Квалификация пользователя должна позволять:

формировать отчеты;

осуществлять анализ данных.

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

Для работы с системой необходимо следующее программное обеспечение:

Windows XP/Vista/7/ 8/10 и Microsoft SQL Server 2008.

4. Теститрование

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

Для испытания функциональных возможностей системы были выбраны следующие функции:

обеспечение доступа пользователя к ресурсам системы;

ведение справочников (добавление, редактирование, удаление и поиск информации);

механизм поиска определений;

проверка работы механизма вставки информации из документов.

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

Набор тестовых исходных данных.

Эталон для проверки.

Процедуру проверки.

Результат проверки в виде экранных форм.

Тест № 1 заключается в добавлении записей в справочник «Профессиональная деятельность». Варианты состояния системы до выполнения теста № 1:

пользователь успешно подключился к серверу и базе данных;

таблицы пусты.

Варианты исходных данных:

а) Набор корректных данных: выбрана кафедра, специальность, вид профессиональной деятельности.

б) Набор некорректных данных: попытка добавления записи о профессиональной деятельности без выбора кафедры, специальности, вида профессиональной деятельности.

Эталоны для проверки результатов после выполнения теста № 1:

а) при вводе корректных данных:

в справочник успешна добавлена профессиональная деятельность (рисунок 4.1).

Рис. 4.1 - Успешное добавление профессиональной деятельности

б) при вводе некорректных данных:

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

Тест № 1 был выполнен успешно.

Тест № 2 заключается в доступе пользователя к системе. Варианты состояния системы до выполнения теста № 2:

система не подключена к серверу;

система не подключена к базе данных.

Варианты исходных данных:

а) Набор корректных данных: Имя сервера MS SQL Server «HOME-PC» и имя базы данных «StudyLoad».

б) Набор некорректных данных: Имя сервера MS SQL Server «PC», имя базы данных «BD».

Рис. 4.2 - Добавление профессиональной деятельности невозможно

Эталоны для проверки результатов после выполнения теста № 2:

а) при вводе корректных данных:

перед пользователем появилась главная форма приложения;

система подключена к базе данных;

система подключена к серверу;

б) при вводе некорректных данных:

на экран выведено сообщение об ошибках;

система не подключена к серверу (рисунок 4.3);

Рис. 4.3 - Система не подключена к серверу

система не подключена к базе данных (рисунок 4.4)

Рис. 4.4 - Система не подключена к базе данных

Тест № 2 выполнен успешно

Тест № 3 заключается в редактировании записи справочника ФГОС. Варианты состояния системы до выполнения теста № 3:

В справочнике ФГОС, в поле профессиональная компетентность, имеется некоторая запись, которую надо изменить (рисунок 4.5).

Рис. 4.5 - Выбор записи для изменения

Варианты исходных данных:

а) Набор корректных данных: редактирование записи о компетенции, с занесением некоторых поправок (рисунок 4.6).

Рис. 4.6 - редактирование записи о компетенции

б) Набор некорректных данных: редактирование записи о компетенции, при этом поле остается пустым.

Эталоны для проверки результатов после выполнения теста № 3:

а) при вводе корректных данных:

Редактирование записи о компетенции завершается успешно, в зависимости от введенных в поле поправок (рисунок 4.7)

Рис. 4.7 - Успешное завершение редактирования

б) при вводе некорректных данных:

окно редактирования не закрывается до тех пор, пока не будут введены данные или не будет закрыто окно с первоначальными данными (рисунок 4.8).

Рис. 4.8 - Неуспешное завершение редактирования

Тест № 3 выполнен успешно.

Тест № 4 заключается в удаление записи из справочника. Варианты состояния системы до выполнения теста № 4:

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

Рис. 4.9 - Выбор записи для удаления

Варианты исходных данных:

а) Набор корректных данных: удаление записи о компетенции и вывод окна с вопросом о удалении.

б) Набор некорректных данных: нет, т.к. исключительных ситуаций возникнуть не может.

Эталоны для проверки результатов после выполнения теста № 4:

на экране появляется окно подтверждения удаления записи (рисунок 4.10);

Рис. 4.10 - Подтверждение удаления

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

Рис. 4.11 - Успешное удаление записи

Тест № 4 выполнен успешно.

Тест № 5 заключается в поиске определения в таблице профессиональных задач с использованием фильтра по описанию. Варианты состояния системы до выполнения теста № 5:

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

Рис. 4.12 - Успешное удаление записи ПЗ

Варианты исходных данных:

а) набор корректных данных: фильтрация таблицы по существующим символам имеющихся в таблице;

б) набор некорректных данных: фильтрация таблицы по несуществующем в таблице символам.

Эталоны для проверки результатов после выполнения теста № 5:

а) при корректных данных:

таблица отфильтрована по выбранным символам и показаны похожие результаты (рисунок 4.13);

после удаления символов из фильтра, таблица возвращена в исходное состояние

б) при некорректных данных:

в таблице не выведено ни одной записи (рисунок 4.16).

Рис. 4.13 - Правильная работа фильтра

Рис. 4.14 - Неправильные данные в фильтре

Тест № 5 выполнен успешно.

Тест № 6 заключается в вставке из буфера обмена информации из ПС в форму «Трудовые функции. Детали». Варианты состояния системы до выполнения теста № 6:

В справочнике уже имеется трудовая функция и необходимо ввести её описание.

Варианты исходных данных:

а) набор корректных данных: вставка правильной структуры входных данных из ПС (рисунок 4.15)

Рис. 4.15 - Правильная структура для занесения в буфер обмена

б) Набор некорректных данных: вставка неправильной структуры входных данных (рисунок 4.16)

Рис. 4.16 - Неправильная структура для занесения в буфер обмена

Эталоны для проверки результатов после выполнения теста № 5:

а) при корректных данных:

Заполнение справочника и его правильное формирование и отображение (рисунок 4.17)

Рис. 4.17 - Отображение справочника

б) при некорректных данных:

в таблице не выведено ни одной записи (рисунок 4.18).

Рис. 4.18 - Неправильное отображение справочника

Вывод ошибки (рисунок 4.19)

Рис. 4.19 - Вывод ошибки

Тест № 6 выполнен успешно

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

5. Внедрение

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

Создание справочников.

Создание классификатора, связывающего необходимые компоненты.

Создание отчетов по классификатору.

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

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

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

6. Защита информации

Информационная безопасность - это процесс обеспечения конфиденциальности, целостности и доступности информации.

конфиденциальность - состояние информации, при котором доступ к ней осуществляют только субъекты, имеющие на неё право;

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

целостность - избежание несанкционированной модификации информации;

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

Требуется защита только с точки зрения целостности.

В реляционной модели данных определены два базовых требования обеспечения целостности:

целостность ссылок;

целостность сущностей.

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

при добавлении записей в таблицу проверяется уникальность их первичных ключей;

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

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

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

Заключение

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

Далее была спроектирована структура системы. В качестве средств реализации было использовано средство разработки Builder C++. На основе поставленной задачи были спроектированы: структура системы, структура базы данных, структура программного обеспечения и разработан пользовательский интерфейс.

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

Созданная система предназначена для решения следующих задач:

Ведение справочников кафедр, специальностей, видов связанных профессий и пр.

Ведение справочников профессиональных компетенций, профессионального стандарта.

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

Фильтрация данных классификатора.

Составление отчетов по классификатору.

Основные идеи и результаты разработки представлены в докладах и публикациях:

Международная научная конференция «Молодые исследователи - регионам».

Межрегиональная научная конференция IX ежегодной научной сессии аспирантов и молодых ученых.

IV Международная научно-практическая конференция «Современные образовательные технологии в мировом учебно-воспитательном пространстве».

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

Создание словаря синонимов основных понятий стандартов и документов.

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

Список литературы

1. Ежегодная научная сессия аспирантов и молодых ученых: Материалы Межрегиональной научной конференции IX ежегодной научной сессии аспирантов и молодых ученых. В 2-х т. - Вологда, 2015. - Т. 1. - 570 с.

2. Современные образовательные технологии в мировом учебно-воспитательном пространстве: сборник материалов IV Международной научно-практической конференции. - Новосибирск: Издательство ЦРНС, 2016. - 166 с.

3. Профессиональные стандарты в области ИТ. [Электронный ресурс]: - Режим доступа: http://www.apkit.ru/committees/education/meetings/ standarts.php

4. Портал Федеральных государственных образовательных стандартов высшего образования. Методические разработки.

5. Стратегия «Вологда - IT-град» на период до 2020 года.

6. Программа социально-экономического развития города.

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

8. Научно-методические принципы проектирования учебно-методических комплексов.

9. Институт профессионального кадровика. Профессиональные стандарты.

10. Кудрявцев, Д. Административное моделирование на основе онтологий / Д. Кудрявцев, Л. Григорьев, В. Кислова // Бизнес Инжиниринг Групп

Приложение А

(обязательное)

Листинг программы

ChangeDepartment.cpp

#include <vcl.h>

#pragma hdrstop

#include "ChangeDepartment.h"

#include "DataModule.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TfChangeDepartment *fChangeDepartment;

__fastcall TfChangeDepartment::TfChangeDepartment(TComponent* Owner)

TForm(Owner)

{

}

void __fastcall TfChangeDepartment::Button1Click(TObject *Sender)

{

if ((Trim(full_name->Text) != "") && (Trim(short_name->Text) != "")) {

try {

dm->qCommonProc->Active = false;

dm->qCommonProc->ProcedureName = "ChangeDepartment;1";

dm->qCommonProc->Parameters->Refresh();

dm->qCommonProc->Parameters->ParamValues["@id"] = ID;

dm->qCommonProc->Parameters->ParamValues["@full_name"] = Trim(full_name->Text);

dm->qCommonProc->Parameters->ParamValues["@short_name"] = Trim(short_name->Text);

dm->qCommonProc->ExecProc();

if (ID == 0)

ID = dm->qCommonProc->Parameters->ParamValues["@ins_id"];

dm->qCommonProc->Active = false;

inserted = true;

Close();

}

catch(Exception *e) {

Application->MessageBoxA(e->Message.c_str(), "Ошибка!", MB_OK | MB_ICONERROR);

}

}

}

void __fastcall TfChangeDepartment::Button2Click(TObject *Sender)

{

inserted = false;

Close();

}

void __fastcall TfChangeDepartment::FormActivate(TObject *Sender)

{

inserted = false;

}

ChangePZK.cpp

#include <vcl.h>

#pragma hdrstop

#include "ChangePZK.h"

#include "DataModule.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TfChangePZK *fChangePZK;

fastcall TfChangePZK::TfChangePZK(TComponent* Owner)

TForm(Owner)

{

}

void __fastcall TfChangePZK::Button2Click(TObject *Sender)

{

inserted = false;

Close();

}

void __fastcall TfChangePZK::Button1Click(TObject *Sender)

{

if (Trim(name_->Text) != "") {

try {

dm->qCommonProc->Close();

if (PZ)

dm->qCommonProc->ProcedureName = "ChangePZ";

else

dm->qCommonProc->ProcedureName = "ChangePK";

dm->qCommonProc->Parameters->Refresh();

dm->qCommonProc->Parameters->ParamValues["@name"] = Trim(name_->Text);

dm->qCommonProc->Parameters->ParamValues["@id"] = ID;

dm->qCommonProc->Parameters->ParamValues["@proftype_id"] = prof_id;

dm->qCommonProc->Parameters->ParamValues["@speciality_id"] = spec_id;

dm->qCommonProc->ExecProc();

if (ID == 0) {

ins_id = dm->qCommonProc->Parameters->ParamValues["@ins_id"];

inserted = true;

}

dm->qCommonProc->Close();

Close();

}

catch(Exception *e) {

Application->MessageBoxA(e->Message.c_str(), "Ошибка!", MB_OK | MB_ICONERROR);

}

}

}

void __fastcall TfChangePZK::FormActivate(TObject *Sender)

{

inserted = false;

}

ChangeSpeciality.cpp

#include <vcl.h>

#pragma hdrstop

#include "ChangeSpeciality.h"

#include "DataModule.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TfChangeSpeciality *fChangeSpeciality;

astcall TfChangeSpeciality::TfChangeSpeciality(TComponent* Owner)

TForm(Owner)

{

}

void __fastcall TfChangeSpeciality::Button1Click(TObject *Sender)

{

if ((Trim(full_name->Text) != "") && (Trim(short_name->Text) != "")) {

try {

dm->qCommonProc->Active = false;

dm->qCommonProc->ProcedureName = "ChangeSpeciality;1";

dm->qCommonProc->Parameters->Refresh();

dm->qCommonProc->Parameters->ParamValues["@id"] = ID;

dm->qCommonProc->Parameters->ParamValues["@full_name"] = Trim(full_name->Text);

dm->qCommonProc->Parameters->ParamValues["@short_name"] = Trim(short_name->Text);

dm->qCommonProc->Parameters->ParamValues["@dep_id"] = dep_id;

dm->qCommonProc->ExecProc();

if (ID == 0)

ID = dm->qCommonProc->Parameters->ParamValues["@ins_id"];

dm->qCommonProc->Active = false;

Close();

}

catch(Exception *e) {

Application->MessageBoxA(e->Message.c_str(), "Ошибка!", MB_OK | MB_ICONERROR);

}

}

}

void __fastcall TfChangeSpeciality::Button2Click(TObject *Sender)

{

Close();

}

ChangeTFDetails.cpp

#include <vcl.h>

#pragma hdrstop

#include "ChangeTFDetails.h"

#include "DataModule.h"

#pragma package(smart_init)

#pragma link "DBCtrlsEh"

#pragma link "DBGridEh"

#pragma link "DBLookupEh"

#pragma resource "*.dfm"

TfChangeTFDetails *fChangeTFDetails;

__fastcall TfChangeTFDetails::TfChangeTFDetails(TComponent* Owner)

TForm(Owner)

{

}

void __fastcall TfChangeTFDetails::FormActivate(TObject *Sender)

{

type->ListSource->DataSet->Open();

}

void __fastcall TfChangeTFDetails::Button2Click(TObject *Sender)

{

Close();

}

void __fastcall TfChangeTFDetails::Button1Click(TObject *Sender)

{

try {

dm->qCommonProc->Active = false;

dm->qCommonProc->ProcedureName = "ChangeTFDetails;1";

dm->qCommonProc->Parameters->Refresh();

dm->qCommonProc->Parameters->ParamValues["@id"] = id;

dm->qCommonProc->Parameters->ParamValues["@name"] = Trim(name_->Text);

dm->qCommonProc->Parameters->ParamValues["@tf_details_type"] = type->KeyValue;

dm->qCommonProc->Parameters->ParamValues["@tf_id"] = TF_ID;

dm->qCommonProc->ExecProc();

if (id == 0)

id = dm->qCommonProc->Parameters->ParamValues["@ins_id"];

dm->qCommonProc->Active = false;

Close();

}

catch(Exception *e) {

Application->MessageBoxA(e->Message.c_str(), "Ошибка!", MB_OK | MB_ICONERROR);

}

}

Connection.срр

#include <vcl.h>

#include <IniFiles.hpp>

#pragma hdrstop

#include "Connection.h"

#include "DataModule.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TfConnect *fConnect;

__fastcall TfConnect::TfConnect(TComponent* Owner)

TForm(Owner)

{

}

void __fastcall TfConnect::FormActivate(TObject *Sender)

{

//чтение настроек из ини файла

TIniFile *ini = new TIniFile(ExtractFilePath(Application->ExeName) + "\\settings.ini");

server->Text = ini->ReadString("Connection", "Server", "");

database->Text = ini->ReadString("Connection", "Database", "");

ini->Free();

activated = false;

}

void __fastcall TfConnect::FormClose(TObject *Sender, TCloseAction &Action)

{

if (!activated)

Application->Terminate();

}

void __fastcall TfConnect::Button1Click(TObject *Sender)

{

try {

//подключаемся к серверу и базе данных, используя полученные данные

dm->ADOConnection1->Connected = false;

dm->ADOConnection1->ConnectionString =

"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=" + database->Text.Trim() + ";Data Source=" + server->Text.Trim();

dm->ADOConnection1->Connected = true;

TIniFile *ini = new TIniFile(ExtractFilePath(Application->ExeName) + "\\settings.ini");

ini->WriteString("Connection", "Server", server->Text.Trim());

ini->WriteString("Connection", "Database", database->Text.Trim());

ini->Free();

//подключились и записали данные подключения в файл

activated = true;

Close();

}

catch(Exception *e) {

Application->MessageBoxA(e->Message.c_str(), "Ошибка!", MB_OK | MB_ICONERROR);

//возникла ошибка, закрываем приложение, показав сообщение об ошибке

activated = false;

Application->Terminate();

}

}

Departments.cpp

#include <vcl.h>

#pragma hdrstop

#include "Departments.h"

#include "ChangeDepartment.h"

#include "DataModule.h"

#pragma package(smart_init)

#pragma link "DBGridEh"

#pragma link "DBGridEhGrouping"

#pragma link "GridsEh"

#pragma resource "*.dfm"

TfDepartments *fDepartments;

__fastcall TfDepartments::TfDepartments(TComponent* Owner)

TForm(Owner)

{

}

void __fastcall TfDepartments::ToolButton1Click(TObject *Sender)

{

TfChangeDepartment *fChangeDepartment = new TfChangeDepartment(this);

fChangeDepartment->ShowModal();

delete fChangeDepartment;

RefreshTable();

}

void __fastcall TfDepartments::ToolButton2Click(TObject *Sender)

{

TfChangeDepartment *fChangeDepartment = new TfChangeDepartment(this);

//передаем данные в форму редактирования

fChangeDepartment->full_name->Text = DBGridEh1->DataSource->DataSet->FieldByName("name")->AsString;

fChangeDepartment->short_name->Text = DBGridEh1->DataSource->DataSet->FieldByName("short_name")->AsString;

fChangeDepartment->ID = DBGridEh1->DataSource->DataSet->FieldByName("id")->AsInteger;

fChangeDepartment->ShowModal();

delete fChangeDepartment;

RefreshTable();

}

void TfDepartments::RefreshTable() {

DBGridEh1->DataSource->DataSet->Active = false;

DBGridEh1->DataSource->DataSet->Active = true;

}

void __fastcall TfDepartments::FormActivate(TObject *Sender)

{

RefreshTable();

}

void __fastcall TfDepartments::ToolButton3Click(TObject *Sender)

{

if (Application->MessageBoxA("Вы действительно хотите удалить эту запись?",

"Вопрос", MB_YESNO | MB_ICONQUESTION) == IDYES) {

try {

dm->qCommonProc->Active = false;

dm->qCommonProc->ProcedureName = "DeleteDepartments";

dm->qCommonProc->Parameters->Refresh();

//удаляем по айди выделенной записи

dm->qCommonProc->Parameters->ParamValues["@id"] = DBGridEh1->DataSource->DataSet->FieldByName("id")->AsInteger;

dm->qCommonProc->ExecProc();

RefreshTable();

}

catch(Exception *e) {

Application->MessageBoxA(e->Message.c_str(), "Ошибка!", MB_OK | MB_ICONERROR);

}

}

}

FGOS.cpp

#include <vcl.h>

#include <Clipbrd.hpp>

#pragma hdrstop

#include "FGOS.h"

#include "DataModule.h"

#include "ChangePZK.h"

#pragma package(smart_init)

#pragma link "DBGridEh"

#pragma link "DBGridEhGrouping"

#pragma link "GridsEh"

#pragma link "DBCtrlsEh"

#pragma link "DBLookupEh"

#pragma resource "*.dfm"

TfFGOS *fFGOS;

fastcall TfFGOS::TfFGOS(TComponent* Owner)

TForm(Owner)

{

}

void TfFGOS::ShowProfTypes()

{

proftypes->ListSource->DataSet->Active = true;

}

void TfFGOS::ShowDepartments()

{

deps->ListSource->DataSet->Active = false;

deps->ListSource->DataSet->Active = true;

}

void TfFGOS::ShowSpecialities()

{

specialities->ListSource->DataSet->Active = false;

dm->qSpeciality->Parameters->ParamValues["id"] = deps->KeyValue;

specialities->ListSource->DataSet->Active = true;

}

void __fastcall TfFGOS::ToolButton5Click(TObject *Sender)

{

GetFromBuffer(true);

}

void TfFGOS::GetFromBuffer(bool PZ)

{

AnsiString s = Clipboard()->AsText;

AnsiString test;

int from = 1;

bool pasted = false;

for (int i = 1; i <= s.Length(); ++i) {

pasted = false;

switch (int(s[i])) {

//новая строка

case 10:

from = i+1;

break;

//возврат каретки

case 13:

test = s.SubString(from, i-from);

if ((s.SubString(from, i-from) != "") && (s.SubString(from, i-from) != "\n"))

InsertFromBuffer(s.SubString(from, i-from), PZ);

from = i+1;

pasted = true;

break;

}

if ((!pasted) && (i == s.Length()) && (int(s[i]) != 10) && (int(s[i]) != 13))

InsertFromBuffer(s.SubString(from, i-from), PZ);

}

}

void __fastcall TfFGOS::FormActivate(TObject *Sender)

{

ShowDepartments();

}

void __fastcall TfFGOS::depsChange(TObject *Sender)

{

ShowSpecialities();

ShowProfTypes();

void ShowPZ();

void ShowPK();

}

void TfFGOS::ShowPZ()

{

AnsiString f = "%";

try {

dm->qPZ->Close();

dm->qPZ->Parameters->ParamValues["proftype_id"] = proftypes->KeyValue;

dm->qPZ->Parameters->ParamValues["speciality_id"] = specialities->KeyValue;

dm->qPZ->Parameters->ParamValues["fltr"] = f;

dm->qPZ->Open();

}

catch(Exception *e) {

Application->MessageBoxA(e->Message.c_str(), "Ошибка!", MB_OK | MB_ICONERROR);

}

}

void TfFGOS::ShowPK()

{

try {

dm->qPK->Close();

dm->qPK->Parameters->ParamValues["proftype_id"] = proftypes->KeyValue;

dm->qPK->Parameters->ParamValues["speciality_id"] = specialities->KeyValue;

dm->qPK->Parameters->ParamValues["fltr"] = "%";

dm->qPK->Open();

}

catch(Exception *e) {

Application->MessageBoxA(e->Message.c_str(), "Ошибка!", MB_OK | MB_ICONERROR);

}

}

void __fastcall TfFGOS::specialitiesChange(TObject *Sender)

{

ShowPZ();

ShowPK();

}

void __fastcall TfFGOS::proftypesChange(TObject *Sender)

{

ShowPZ();

ShowPK();

}

void __fastcall TfFGOS::ToolButton7Click(TObject *Sender)

{

if (Application->MessageBoxA("Вы действительно хотите удалить эту запись?",

"Вопрос", MB_YESNO | MB_ICONQUESTION) == IDYES) {

try {

dm->qCommonProc->Active = false;

dm->qCommonProc->ProcedureName = "DeletePZ";

dm->qCommonProc->Parameters->Refresh();

dm->qCommonProc->Parameters->ParamValues["@id"] = DBGridEh2->DataSource->DataSet->FieldByName("id")->AsInteger;

dm->qCommonProc->ExecProc();

ShowPZ();

}

catch(Exception *e) {

Application->MessageBoxA(e->Message.c_str(), "Ошибка!", MB_OK | MB_ICONERROR);

}

}

void __fastcall TfFGOS::ToolButton11Click(TObject *Sender)

{

if (Application->MessageBoxA("Вы действительно хотите удалить эту запись?",

"Вопрос", MB_YESNO | MB_ICONQUESTION) == IDYES) {

try {

dm->qCommonProc->Active = false;

dm->qCommonProc->ProcedureName = "DeletePK";

dm->qCommonProc->Parameters->Refresh();

dm->qCommonProc->Parameters->ParamValues["@id"] = DBGridEh3->DataSource->DataSet->FieldByName("id")->AsInteger;

dm->qCommonProc->ExecProc();

ShowPK();

}

catch(Exception *e) {

Application->MessageBoxA(e->Message.c_str(), "Ошибка!", MB_OK | MB_ICONERROR);

}

}

}

void __fastcall TfFGOS::ToolButton4Click(TObject *Sender)

{

TfChangePZK *fChangePZK = new TfChangePZK(Application);

fChangePZK->Caption = "Профессиональные знания";

fChangePZK->prof_id = proftypes->KeyValue;

fChangePZK->spec_id = specialities->KeyValue;

fChangePZK->PZ = true;

fChangePZK->ShowModal();

ShowPZ();

if (fChangePZK->inserted)

dm->qPZ->Locate("id", fChangePZK->ins_id, TLocateOptions() << loCaseInsensitive);

delete fChangePZK;

}

void __fastcall TfFGOS::ToolButton6Click(TObject *Sender)

{

TfChangePZK *fChangePZK = new TfChangePZK(Application);

fChangePZK->Caption = "Профессиональные знания";

fChangePZK->name_->Text = DBGridEh2->DataSource->DataSet->FieldByName("name")->AsString;

fChangePZK->ID = DBGridEh2->DataSource->DataSet->FieldByName("id")->AsInteger;

fChangePZK->prof_id = proftypes->KeyValue;

fChangePZK->spec_id = specialities->KeyValue;

fChangePZK->PZ = true;


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.