Программный комплекс сравнительной многокритериальной оценки вузов по векторам прогрессивности

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

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

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

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

Пункт меню «Изменить»

Пункт меню «Изменить» позволяет администратору изменить данные, которые были введены ранее (рисунок 14). Введенные данные о вузах, критериях и их значениях можно не только изменять, но и удалять их и добавлять (рисунок 15).

Рисунок 14 - Изменение данных

Рисунок 15 - Добавление даннях

Рисунок 16 - Добавление нового пользователя

Страница авторизации пользователя (участника).

На этой странице пользователь входит в свой личный кабинет под своим логином и паролем (Рисунок 17).

Рисунок 17 - Авторизация в системе

программный многокритериальный оценка прогрессивность

Главное меню «Система оценки сравнительной прогрессивности ведущих университетов РФ»

Главное меню позволяет пользователю посмотреть название вузов, название критериев и оценку по данному критерию. Так же, в главном меню имеются кнопки для расчет векторов прогрессивности, расчета эффектиности вузов, отбор вуза и отбор критериев. (рисунок 18).

Рисунок 18 - Главное меню

Пункт меню «Выбор критерия».

Данный пункт меню позволяет пользователю выбрать критерии для расчета векторов прогрессивности и эффективности вузов. Эффективность вузов рассчитывается по заданным критериям с применением векторов прогрессивности (рисунок 19).

Рисунок 19 - Главное меню

7. Пункт меню «Отбор вуза».

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

Рисунок 20 - Отбор вуза

8. Эффективность вузов по Парето.

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

Рисунок 21 - Эффективность вузов по Парето

3.5 Диаграмма компонентов

Диаграмма компонентов (component diagram) - диаграмма, на которой изображены типы компонентов и зависимости между ними.

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

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

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

Отношение зависимости на диаграмме компонентов изображается пунктирной линией со стрелкой, направленной от клиента или зависимого элемента к источнику или независимому элементу модели.[11]

Диаграмма компонентов разработанного комплекса приведена на рисунке 22, она отражает основные компоненты комплекса и связи между ними.

Рисунок 22 - Диаграмма компонентов.

В таблице 10 дано краткое описание основных компонентов системы.

Таблица 10 - Основные классы системы

Класс

Описание

Login.java

Страница авторизации пользователя

SecurityModel.java

Присвоение ролей пользователю

RaitingHelper.java

Расчет векторов прогрессивности

Hibernate

Расчет эффективности вузов

Criterion.java

Класс для работы со справочником критериев

User.java

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

University.java

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

Value.java

Класс для работы со справочником оценки по критерию

3.6 Диаграмма развёртывания

Диаграмма развёртывания - это завершающая диаграмма технологии UML. Она показывает общее развертывание компонентов системы на технических узлах системы. Узлы представляются как прямоугольные параллелепипеды с артефактами, расположенными в них, изображенными в виде прямоугольников. Узлы могут иметь подузлы, которые представляются как вложенные прямоугольные параллелепипеды. Один узел диаграммы развертывания может концептуально представлять множество физических узлов, таких как кластер серверов баз данных [12].

Существует два типа узлов:

Узел устройства

Узел среды выполнения

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

Диаграмма развертывания разработанной системы представлена на рисунке 23.

Рисунок 23 - Диаграмма развертывания

Данный программный комплекс работает с СУБД PostgreSQL прямо из браузера. СУБД PostgreSQL также отлично подходит для работы с web - приложениями. Исходя из этих двух фактов, была выбрана именно эта СУБД.

3.7 Программа и методика испытаний

Программа и методика испытаний содержит требования, подлежащие проверке при испытании программы, а также порядок и методы их контроля, и оформлена в соответствии с ГОСТ 19.301-79 [12].

Объект испытаний.

Объектом испытаний является многокритериальная сравнительная оценка вузов по векторам прогрессивности.

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

Функциональные требования к системе, изложенные в техническом задании и подлежащие проверке:

Акторы, взаимодействующие с системой: участник, администратор.

Авторизация и разграничение прав пользователей в системе.

Ведение справочников:

справочник критерий;

справочник вузов;

справочник оценки по критерию.

Расчет для вузов:

векторов прогрессивности;

эффективности;

"минимальных" векторов прогрессивности.

Основные положения.

Программная документация состоит из:

технического задания;

программы и методики испытаний;

пояснительной записки;

руководства пользователя.

Объем испытаний.

Испытания проводятся в два этапа:

проверка комплектности программной документации;

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

Средства и порядок испытаний.

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

процессор класса Pentium с тактовой частотой 1 ГГц и выше;

объем оперативной памяти не менее 2 Гб;

наличие web-браузера.

Испытания проводиться в следующей последовательности:

Проверка функции авторизации пользователя.

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

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

Условия проведения испытаний.

температура окружающего воздуха, С° - от 20 до 25;

относительная влажность, % - от 30 до 80;

атмосферное давление, кПа - от 84 до 106;

частота питающей электросети, Гц - 50;

напряжение питающей сети переменного тока, В - 220.

Методика испытаний.

Для проведения испытаний этого нужно запустить web-браузер.

Проверка возможности авторизации пользователя.

Действия:

Открыть браузер. В строке адреса прописать «localhost:8080» и

нажать Enter.

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

Ввести логин и пароль. Нажать кнопку «Войти».

Результат:

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

Проверка возможности расчета эффективности вузов.

Действия:

Открыть браузер. Ввести в строку адреса «localhost:8080/user» и

войти в систему под логином, который был получен при регистрации.

На панели меню выбрать пункт «Выбрать критерии».

Выбрать критерии, которые нужны для расчета эффективности или выбрать все критерии разом.

На панели меню выбрать пункт «Расчет эффективности вузов».

Результат:

Система выдаст окно рассчитанной эффективности вузов в таблице.

Проверка возможности расчета векторов прогрессивности.

Действия:

Открыть браузер. В строке адреса прописать «localhost:8080/user»

и нажать кнопку Enter.

Войти в систему под своим логином.

Выбрать критерии для расчета векторов.

Выбрать вуз для расчета векторов.

На панели меню выбрать пункт «Расчет векторов прогрессивности».

Результат:

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

Проверка возможности ведения справочников (на примере справочника

вузов).

Действия:

Открыть браузер. В строке прописать «localhost:8080/admin»

Пройти авторизацию.

На панели меню выбрать пункт «Университеты».

Выбрать пункт меню «Добавить».

Результат:

На странице отображается страница для ввода нового университета с возможностью редактирования и удаления.

3.6 Контрольный пример

Для демонстрации работы ПК было проведено ее тестирование по методике испытаний, описанной в п. 3.7. Ниже дано описание контрольного примера.

На стороне клиента система открывается через открытие web_браузера, ввода в строке адреса «localhost/8080» и нажатия кнопки Enter. После чего появляется стартовая страница, которая представлена на рисунке 24.

1. Страница авторизации участника.

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

Рисунок 24 - Авторизация в системе

Пункт меню «Выбор критериев» позволяет пользователю выбрать критерии для расчета. Векторы прогрессивности и эффективность вузов рассчитывается по заданным критериям (рисунок 25).

Рисунок 25- Выбор критериев

Для того, чтобы рассчитать векторы прогрессивности, участнику нужно поставить галочки перед теми критериями, которые ему важны при расчете. Либо нажать на кнопочку выбрать все и вернуться в главное меню (рисунок 26).

Рисунок 26 - Главное меню с выбранными критериями

Затем выбрать пункт меню «Отбор вуза». Участнику нужно поставить галочку перед тем вузом, для которого он хочет рассчитать векторы прогрессивности (рисунок 27).

Рисунок 27 - Отбор вуза

Далее выбрать кнопку «Расчет векторов прогрессивности». Цветом выделяется тот вуз, который вы выбрали для расчета. Щелкнув по ней, вы увидите перед собой таблицу с распределенными векторам прогрессивности и списком неэффективных вузов (рисунок 28). Можно также просмотреть «Расчет "минимальных" векторов прогрессивности» (рисунок 29).

Рисунок 28 - Расчет векторов прогрессивности

Рисунок 29 - Расчет "минимальных" векторов прогрессивности

3.7 Руководство программиста

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

Структура руководства программиста, зафиксированная в ГОСТ 19.504-79, такова:

Назначение и условия применения программы;

Характеристика программы;

Обращение к программе;

Входные и выходные данные;

Сообщения.

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

3.8 Руководство оператора

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

Типовая структура руководства оператора приведена в ГОСТ 19.505-79.

Назначение программ;

Условия выполнения программы;

Выполнение программы;

Сообщения оператору.

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

4. ВНЕДРЕНИЕ И АНАЛИЗ ЭФФЕКТИВНОСТИ

4.1 Описание объекта внедрения

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

В техническом задании были обозначены следующие функции:

авторизация пользователя;

ведение справочной информации;

расчет эффективности вузов;

расчет векторов прогрессивности;

расчет «минимальных» векторов прогрессивности.

Программный комплекс спроектирована по методологии UML и реализована на языке программирования Java с помощью сервера приложений - Tomcat, в среде разработки - Idea. В качестве СУДБ был использован PostgreSQL.

4.2 Описание хода предполагаемого внедрения

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

Для эксплуатации системы должны быть выделены ресурсы:

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

Согласно приведенным расчётам требуемых ресурсов внешней и оперативной памяти, для работы с разработанной ПК рекомендуются компьютер со следующими системными характеристиками: оперативная память - 4400 Мб; Windows Pentium 4 и более; процессор с тактовой частотой 1000 МГц и выше.

На компьютере должны быть установлены следующие компоненты: OC Windows 7; Браузер.

5. ОРГАНИЗАЦИОННАЯ ДЕЯТЕЛЬНОСТЬ

5.1 Наиболее значимые профессиональные сертификаты

За период обучения на факультете информационных систем и технологий, помимо основного курса обучения были пройдены курсы:

В 2014 году прошла обучение на водителя категории B,B1. получила водительское удостоверение.

В 2015 году был пройден курс: «Наращивание ресниц». Имеется сертификат, выданный частным образовательным учреждением «Glory Lashes».

Осенью 2015 году был пройден курс: «Like Business 3.0». Имеется сертификат, выданный частным образовательным учреждением «Like Corp.».

5.2 Перечень публикаций

Статья в сборнике Международной научно-технической конференции "Перспективные информационные технологии ПИТ-2015г" на тему: «Программный комплекс многокритериальной оценки социально-экономических систем», заочный тур г. Самара, СГАУ;

Статья в сборнике Международной научно-практической конференции "Новые задачи технических наук и пути их решения" на тему: «Разработка мобильного приложения для хранения уникальных данных» заочный тур г. Челябинск;

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

5.3 Перечень участия в конференциях

Диплом за 2 место в Международной конференции «Развитие творческого потенциала студентов и школьников в коллективно формируемой единой образовательной среде одаренной молодежи» «Творческий потенциал» в подсекции «третий курс», Самара,18-20 ноября 2014;

5.4 Перечень выполненных в период обучения курсовых проектов и работ

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

Таблица 11 - Перечень курсовых работ и проектов

Курс

Семестр

Дисциплина

Тема

1

Осенний семестр 2012 года

Введение в специальность и научных исследований

Исследование каналов поступления информации у современной молодежи

1

Весенний семестр 2013 года

Информационный поиск и систематизация знаний

Анализ способов сбора информации о посетителях сайта и их реализация

1

Весенний семестр 2013 года

Операционные системы

Демонстрация многопоточности с критериальной оценкой

2

Осенний семестр

Обработка и анализ экспериментальных данных

Создание консольного клиента для отправки email с помощью протокола smtp на с++

2

Осенний семестр 2013 года

Информационные технологии

Синтез конечных автоматов для заданной грамматики

2

Весенний семестр 2014 года

Технология программирования

Организация работы над графиками

2

Весенний семестр 2014 года

Моделирование и исследование с использованием прикладных программ

Искусственный интеллект для игры в большие «крестики - нолики»

3

Осенний семестр 2014 года

Моделирование и исследование с разработкой программных продуктов

ИС принятия решения в играх 2-х лиц в игре с 0 суммой

3

Весенний семестр 2015 года

Моделирование и исследование с использованием прикладных программ

ИС принятия решения в играх 2-х с противоположным результатом

3

Весенний семестр 2015 года

Проектирование интерфейсов

Система для вывода сводных отчетов успеваемости студентов

4

Осенний семестр 2015 года

Разработка исследовательских ИС

Программный комплекс многокритериальной оценки социально - экономических систем

4

Осенний семестр 2015 года

Корпоративные ИС

Автоматизированная информационная система отдела кадров

4

Весенний семестр 2016 года

Реализация исследовательских ИС

Программный комплекс сравнительной многокритериальной оценки вузов по векторам прогрессивности

4

Весенний семестр 2015 года

Методы и средства проектирования ИС

Программный комплекс сравнительной многокритериальной оценки вузов по векторам прогрессивности

5.5 Портфолио

Ф.И.О: Федорова Анастасия Геннадьевна, 04.07.1995г.

Год поступления: 2012 год,

Год окончания:2016 год

E-mail: nastusha_fedorova1@mail.ru

В таблице 12 представлены наиболее значимые достижения, также приложены дипломы и сертификаты (приложение В).

Таблица 12 - Наиболее значимые достижения

Номер

Достижения

Область

1

Постоянное участие в СТЭМе "Фисташки"

Культура

2

4 место в вузовском Фестивале СТЭМов "Микрофон ваш-2012г"

Культура

3

Подготовка программы выступления "СтудВесна-2013"

Культура

4

Участие в "Игровом марафоне 2013" в составе команды СГАСУ. Призовое 3 место.

Общественная деятельность

5

27 Студенческая научная конференция СГАСУ.

Наука

6

Участие во флеш-мобе ко Дню Рождения университета

Общественная деятельность

7

Приняла участие в организации ПОВОЛЖСКОЙ КОНФЕРЕНЦИИ "ТВОРЧЕСКИЙ ПОТЕНЦИАЛ-2013"

Общественная деятельность

8

Свидетельство о прохождении бизнес - курса "Like Бизнес 3.0 " 2015г.

Наука

9

Участие в "Кросс Наций"

Спорт

10

Участвовала в параде на площади Куйбышева, посвященном "70-летию Суворовских училищ" в составе Молодежного парламента Самарской губернии

Общественная деятельность

11

Отправила работу на конференцию "ПИТ-2015"

Наука

12

Постоянное участие в СТЭМе ФИСТ

Культура

13

Благодарность за участие в Городском смотре-конкурсе музыкальных школ.

Культура

14

Награждена дипломом за участие в подготовке и проведении Парада Памяти.

Общественная деятельность

15

Помощь в организации Международной конференции"Творческий потенциал-2014".

Наука

16

Доклад на Международной конференции"Творческий потенциал-2014".

Наука

17

Получила права категории B,B1

Общественная деятельность

18

Диплом за 2-е место в Международной конференции"Творческий потенциал-2014".

Наука

19

Получен сертификат участника Международной научно-практической конференции "Новые задачи технических наук и пути их решения"г. Челябинск, 10 декабря 2015

Наука

20

Гран - При в областном конкурсе музыкальных школ.

Наука

21

Участие в студенческой научной конференции, в секции "Информационные системы и технологии"

Наука

22

Публикация статьи в сборнике (на базе РИНЦ) Международной научно-практической конференции "Прорывные научные исследования как двигатель науки" г. Тула;

Наука

ЗАКЛЮЧЕНИЕ

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

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

Разработана функциональная структура программного комплекса сравнительной многокритериальной оценки.

В ходе работы были сформулированы требования к техническому обеспечению и обоснован выбор средств автоматизации. Исходя из обоснования выбора средств разработки, ПК разрабатывался на языке Java с использованием фреймворка Idea и СУБД PostgreSQL для хранения данных и постоянно дорабатывалась. Работает под управлением операционных систем Microsoft Windows (XP и версии выше). Программный продукт представляет собой программный комплекс обработки данных с клиент - серверной архитектурой, выполняющую математические функции.

Проект программного комплекса сравнительной многокритериальной оценки вузов составлен по методологии UML. Спроектирована логическая структура БД инструментальными средствами ERWin 4.0, со всеми необходимыми сущностями и атрибутами.

Произведен выбор и обоснование комплекса технических средств, сопровождаемый ресурсным анализом (требуемый объем оперативной и внешней памяти, время реакции системы).

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Мониторинг вузов. [Электронный ресурс]: URL: http://www.indicators.miccedu.ru/monitoring

2. Министерство образования и науки РФ. [Электронный ресурс]: URL: http://минобрнауки.рф

3. Российский индекс научного цитирования. [Электронный ресурс]: URL: http://elibrary.pro/rinc-i-indeksy.html

4. Пиявский С.А. Онтология проектирования. Прогрессивность многокритериальных альтернатив//научный журнал. -- 2013. -- №10. -- С. 53-59

5. Рейтинговое агентство Експерт РА. [Электронный ресурс]: URL: http://raexpert.ru

6. РИА рейтинг. [Электронный ресурс]: URL: http://riarating.ru/banks_ratings

7. Дерябкин, В.П. Проектирование информационных систем по методологии UML[Текст]: метод. указания к уч.-лаборат. практикуму. /В.П.Дерябкин, В.В.Козлов; Самарск.гос.арх.строит.ун-т. - Самара, 2008.-42с.

8. ГОСТ 24.702-1985 Единая система стандартов автоматизированных систем управления. Эффективность АСУ. Основные положения [Текст]. - М.: Издательство стандартов, 1990. - 32 с.

9. Справочник по Java. [Электронный ресурс]: URL: http://www.darkraha.com/rus/java

10. ГОСТ РВ 29.05.007-1996 Система стандартов эргономических требований и эргономического обоснования. Интерфейс человеко-машинный. Общие эргономические требования [Текст]. - М.: Издательство стандартов, 1996. - 21 с.

11. ГОСТ РВ 51987-2002. Комплекс стандартов на автоматизированные системы. Типовые требования и показатели качества функционирования информационных систем [Текст]. - М.: Издательство стандартов, 2002. - 37 с.

12. ГОСТ 19781-1990 Обеспечение систем обработки информации программное. Термины и определения [Текст]. - М.: Издательство стандартов, 1990. - 29 с.

ПРИЛОЖЕНИЕ А

Руководство программиста

А.1 Назначение и условия применения программ

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

Минимальные требования к системе:

процессор класса Pentium с тактовой частотой 1,6 ГГц и выше;

объем оперативной памяти не менее 4 Гб;

любая ОС (для примера требования написаны для ОС Windows 7);

манипулятор типа «мышь»;

монитор с разрешением 1280x1024.

Условия работы.

температура окружающего воздуха -15 - +25 °С;

относительная влажность - 45-75%.

содержание вредных веществ, пыли и подвижного воздуха в рабочей зоне соответствует нормам ГОСТ 12.1.005, 12.1.007; комплекс должен удовлетворять санитарным правилам и нормам СанПиН 2.2.2/2.4.1340-03.

А.2 Характеристика программы

Программа разработана в среде Idea на языке высокого уровня Java. Интерфейс создается во время выполнения программы с помощью html. Данные программы хранятся в базе данных формата PostgreSQL. Обращение к базе данных из процедур на Java выполняется с помощью встроенных команд языка SQL.

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

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

А.3 Обращение к программе

Программа поддерживает следующие команды от пользователей:

Добавить вуз

Добавить критерий

Добавить оценку по критерию

Редактировать информацию о вузе

Редактировать информацию о критерии

Редактировать информацию об оценки по критерию

Расчет векторов прогрессивности

Расчет эффективности вузов по Парето

Расчет "минимальных" векторов прогрессивности

Выбор критериев

Выбор вуза

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

А.4 Входные и выходные данные

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

Таблица эффективности вузов

Таблицы векторов прогрессивности

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

ПРИЛОЖЕНИЕ Б

Руководство оператора

Б.1 Назначение программы

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

Программа имеет разделение прав доступа на 2 группы пользователей:

Участник

Администратор

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

Б.2 Условия выполнения программы

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

Б.3 Требования к персоналу (пользователю)

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

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

Б.4 Выполнение программы

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

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

Участник:

Выбор критериев;

Просмотр таблицы векторов прогрессивности;

Просмотр таблицы эффективности вузов;

Просмотр таблицы "минимальных" векторов прогрессивности.

Администратор:

Добавление и удаление записей в таблицах базы данных;

Просмотр оценок всех вузов;

ПРИЛОЖЕНИЕ Г

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

Расчет эффективности вузов по - Парето

import datebaseHelpers.CriterionHelper;

import datebaseHelpers.UniversityHelper;

import datebaseHelpers.ValueHelper;

import hibernate.model.Criterion;

import hibernate.model.University;

import hibernate.model.Value;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

public class RatingHelper {

public static Object[] buildTable(String search) throws ClassNotFoundException, SQLException {

List<Criterion> criterions = CriterionHelper.selectCriterions();

ArrayList<String> modelTable = buildModelTable(criterions);

ArrayList<String> headTable = buildHeadTable(criterions);

ArrayList<ArrayList<String>> table = buildBodyTable(criterions);

sort(table, modelTable, search);

Object[] result = new Object[3];

result[0] = modelTable;

result[1] = headTable;

result[2] = table;

return result;

}

public static ArrayList<String> buildModelTable(List<Criterion> criterions) throws ClassNotFoundException, SQLException {

ArrayList<String> modeltable = new ArrayList<String>();

modeltable.add("");

modeltable.add("");

for (Criterion criterion: criterions) {

modeltable.add(criterion.getId().toString());

}

return modeltable;

}

private static ArrayList<String> buildHeadTableAllUniversitys(List<Criterion> criterions) throws ClassNotFoundException, SQLException {

ArrayList<String> headTable = new ArrayList<String>();

headTable.add("Название");

for (Criterion criterion: criterions) {

headTable.add(criterion.getName());

}

return headTable;

}

private static ArrayList<ArrayList<String>> buildBodyTableAllUniversitys(List<Criterion> criterions) throws ClassNotFoundException, SQLException {

List<University> universitys = UniversityHelper.selectUniversitys();

ArrayList<ArrayList<String>> table1 = new ArrayList<ArrayList<String>>();

for (University university: universitys) {

ArrayList<String> row1 = new ArrayList<String>();

row1.add("");

row1.add("");

row1.add(university.getName());

row1.add("");

row1.add("");

for (Criterion criterion: criterions) {

List<Value> values = ValueHelper.selectValuesUniversity(university);

Double localValue = 0.0;

for (Value value: values) {

if (value.getCriterion().getId() == criterion.getId()) {

localValue = value.getValue();

break;

}

}

row1.add(localValue.toString());

}

table1.add(row1);

}

String[] maxValue = getMaxValuesCriterions(criterions);

ArrayList<ArrayList<String>> table2 = new ArrayList<ArrayList<String>>();

for (int i = 0; i < table1.size(); i++) {

ArrayList<String> first = table1.get(i);

ArrayList<String> row2 = new ArrayList<String>();

row2.add("Сравниваем " + first.get(2) + " со всеми");

for (Criterion c: criterions) {

row2.add("");

}

table2.add(row2);

Double sum = 0.0;

for (int j = 0; j < table1.size(); j++) {

ArrayList<String> second = table1.get(j);

row2 = new ArrayList<String>();

row2.add(second.get(2));

int ii = 0;

for (int k = 0; k < criterions.size(); k++) {

double f = Double.valueOf(first.get(5 + k));

double s = Double.valueOf(second.get(5 + k));

if (f >= s) {

row2.add("0");

} else {

double r = s - f;

double maxVal = Double.valueOf(maxValue[ii]);

double localCoef = (maxVal == 0) ? 0: r / maxVal;

row2.add(String.format("%.2f", r));

sum += localCoef;

}

ii++;

}

table2.add(row2);

}

first.set(1, String.format("%.2f", sum));

}

return table2;

}

private static String[] getMaxValuesCriterions(List<Criterion> criterions) throws ClassNotFoundException, SQLException {

String[] maxValues = new String[criterions.size()];

int i = 0;

for (Criterion criterion: criterions) {

maxValues[i] = CriterionHelper.getMaxValueCriterion(criterion.getId().toString()).toString();

i++;

}

return maxValues;

}

public static Object[] buildTableByUnversity(String universityId, String[] chooseCriterionIds) throws ClassNotFoundException, SQLException {

List<Criterion> chooseCriterions = new ArrayList<Criterion>();

List<Criterion> criterions = CriterionHelper.selectCriterions();

for (Criterion criterion: criterions) {

for (String chooseCriterionId: chooseCriterionIds) {

if (chooseCriterionId.equals(criterion.getId().toString())) {

chooseCriterions.add(criterion);

break;

}

}

}

University university = UniversityHelper.selectUniversity(universityId);

ArrayList<String> modelTable = buildModelTableByUnversity(chooseCriterions);

ArrayList<String> headTable = buildHeadTableByUnversity(chooseCriterions);

ArrayList<ArrayList<String>> table = buildBodyTableByUnversity(university, chooseCriterions);

Object[] result = new Object[3];

result[0] = modelTable;

result[1] = headTable;

result[2] = table;

return result;

}

public static ArrayList<String> buildModelTableByUnversity(List<Criterion> criterions) throws ClassNotFoundException, SQLException {

ArrayList<String> modeltable = new ArrayList<String>();

modeltable.add(""); //название

for (Criterion criterion: criterions) {

modeltable.add(criterion.getId().toString());

}

return modeltable;

}

public static ArrayList<String> buildHeadTableByUnversity(List<Criterion> criterions) throws ClassNotFoundException, SQLException {

ArrayList<String> headTable = new ArrayList<String>();

headTable.add("Название");

for (Criterion criterion: criterions) {

headTable.add(criterion.getName());

}

return headTable;

}

public static ArrayList<ArrayList<String>> buildBodyTableByUnversity(University univer, List<Criterion> criterions) throws ClassNotFoundException, SQLException {

List<University> universitys = UniversityHelper.selectUniversitys();

ArrayList<ArrayList<String>> table1 = new ArrayList<ArrayList<String>>();

for (University university: universitys) {

ArrayList<String> row1 = new ArrayList<String>();

row1.add("");

row1.add("");

row1.add(university.getName());

row1.add("");

row1.add("");

for (Criterion criterion: criterions) {

List<Value> values = ValueHelper.selectValuesUniversity(university);

Double localValue = 0.0;

for (Value value: values) {

if (value.getCriterion().getId() == criterion.getId()) {

localValue = value.getValue();

break;

} }

row1.add(localValue.toString());

}

table1.add(row1);

}

String[] maxValue = getMaxValuesCriterions(criterions);

ArrayList<ArrayList<String>> table2 = new ArrayList<ArrayList<String>>();

for (int i = 0; i < table1.size(); i++) {

ArrayList<String> first = table1.get(i);

ArrayList<String> row2;

Double sum = 0.0;

for (int j = 0; j < table1.size(); j++) {

ArrayList<String> second = table1.get(j);

row2 = new ArrayList<String>();

row2.add(second.get(2));

int ii = 0;

for (int k = 0; k < criterions.size(); k++) {

double f = Double.valueOf(first.get(5 + k));

double s = Double.valueOf(second.get(5 + k));

if (f >= s) {

row2.add("0");

} else {

double r = s - f;

double maxVal = Double.valueOf(maxValue[ii]);

double localCoef = (maxVal == 0) ? 0: r / maxVal;

row2.add(String.format("%.2f", r));

sum += localCoef;

}

ii++;

}

if (first.get(2).equals(univer.getName())) {

table2.add(row2);

} }

first.set(1, String.format("%.2f", sum));

}

return table2;

}

public static Object[] buildTableEfficiency(String[] chooseCriterionIds, String search) throws ClassNotFoundException, SQLException {

List<Criterion> chooseCriterions = new ArrayList<Criterion>();

List<Criterion> criterions = CriterionHelper.selectCriterions();

for (Criterion criterion: criterions) {

for (String chooseCriterionId: chooseCriterionIds) {

if (chooseCriterionId.equals(criterion.getId().toString())) {

chooseCriterions.add(criterion);

break;

}

}

}

ArrayList<String> modelTable = buildModelTableEfficiency(chooseCriterions);

ArrayList<String> headTable = buildHeadTableEfficiency(chooseCriterions);

ArrayList<ArrayList<String>> table = buildBodyTableEfficiency(chooseCriterions);

if ("0".equals(search)) search=null;

sort(table, modelTable, search);

Object[] result = new Object[3];

result[0] = modelTable;

result[1] = headTable;

result[2] = table;

return result;

}

public static ArrayList<String> buildModelTableEfficiency(List<Criterion> criterions) throws ClassNotFoundException, SQLException {

ArrayList<String> modeltable = new ArrayList<String>();

modeltable.add("");

modeltable.add("");

modeltable.add("");

modeltable.add("");

modeltable.add("");

for (Criterion criterion: criterions) {

modeltable.add(criterion.getId().toString());

}

modeltable.add("");

return modeltable;

}

public static ArrayList<String> buildHeadTableEfficiency(List<Criterion> criterions) throws ClassNotFoundException, SQLException {

ArrayList<String> headTable = new ArrayList<String>();

headTable.add("Позиция");

headTable.add("Рейтинг");

headTable.add("Название");

headTable.add("Эффективность по - Парето");

headTable.add("Доминирующие вузы");

for (Criterion criterion: criterions) {

headTable.add(criterion.getName());

}

headTable.add("");

return headTable;

}

public static ArrayList<ArrayList<String>> buildBodyTableEfficiency(List<Criterion> criterions) throws ClassNotFoundException, SQLException {

List<University> universitys = UniversityHelper.selectUniversitys();

ArrayList<ArrayList<String>> table1 = new ArrayList<ArrayList<String>>();

for (University university: universitys) {

ArrayList<String> row1 = new ArrayList<String>();

row1.add("");

row1.add("");

row1.add(university.getName());

row1.add("");

row1.add("");

for (Criterion criterion: criterions) {

List<Value> values = ValueHelper.selectValuesUniversity(university);

Double localValue = 0.0;

for (Value value: values) {

if (value.getCriterion().getId() == criterion.getId()) {

localValue = value.getValue();

break;

} }

row1.add(localValue.toString());

}

row1.add("<a href=\"user_listUniversityOne.jsp?&universityId="+university.getId().toString()+"\">Таблица прогрессивности</a>");

table1.add(row1);

}

String[] maxValue = getMaxValuesCriterions(criterions);

ArrayList<ArrayList<String>> table2 = new ArrayList<ArrayList<String>>();

for (int i = 0; i < table1.size(); i++) {

ArrayList<String> first = table1.get(i);

ArrayList<String> row2 = new ArrayList<String>();

row2.add("Сравниваем " + first.get(2) + " со всеми");

for (Criterion c: criterions) {

row2.add("");

}

row2.add("");

table2.add(row2);

Double sum = 0.0;

for (int j = 0; j < table1.size()-1; j++) {

ArrayList<String> second = table1.get(j);

row2 = new ArrayList<String>();

row2.add(second.get(2));

int ii = 0;

for (int k = 0; k < criterions.size(); k++) {

double f = Double.valueOf(first.get(5 + k));

double s = Double.valueOf(second.get(5 + k));

if (f >= s) {

row2.add("0");

} else {

double r = s - f;

double maxVal = Double.valueOf(maxValue[ii]);

double localCoef = (maxVal == 0) ? 0: r / maxVal;

row2.add(String.valueOf(r));

sum += localCoef;

}

ii++;

}

table2.add(row2);

}

sum = sum * 1000;

int sumI = (int) Math.round(sum);

sum = (double)sumI / 1000;

first.set(1, sum.toString());

}

for (int i = 0; i < table1.size(); i++) {

for (int j = table1.size() - 1; j > i; j--) {

ArrayList<String> a = table1.get(j);

ArrayList<String> b = table1.get(j - 1);

if (Double.valueOf(a.get(1)) < Double.valueOf(b.get(1))) {

table1.set(j - 1, a);

table1.set(j, b);

} } }

for (int i = 0; i < table1.size(); i++) {

table1.get(i).set(0, String.valueOf(i + 1));

}

for (int i = 0; i < table1.size() - 1; i++) {

for (int j = i + 1; j < table1.size(); j++) {

ArrayList<String> rowI = table1.get(i);

ArrayList<String> rowJ = table1.get(j);

int nl = 0;

int nx = 0;

int nn = 0;

for (int k = 5; k < rowI.size()-1; k++) {

if (Double.valueOf(rowI.get(k)) > Double.valueOf(rowJ.get(k))) {

nl++;

}else if (Double.valueOf(rowI.get(k)) < Double.valueOf(rowJ.get(k))) {

nx++;

}else {

nn++;

} }

if (nl + nn == rowJ.size() - 6) {

rowJ.set(3, "неэффективен");

rowJ.set(4, rowJ.get(4) + "," + rowI.get(0));

}

if (nx + nn == rowI.size() - 6) {

rowI.set(3, "неэффективен");

rowI.set(4, rowI.get(4) + "," + rowJ.get(0));

} } }

return table1;

}

public static ArrayList<ArrayList<String>> sort(ArrayList<ArrayList<String>> table, ArrayList<String> modelTable, String criterionId) {

for (int k = 0; k < modelTable.size(); k++) {

if (modelTable.get(k).equals(criterionId)) {

for (int i = 0; i < table.size(); i++) {

for (int j = table.size() - 1; j > i; j--) {

ArrayList<String> a = table.get(j);

ArrayList<String> b = table.get(j - 1);

if (Double.valueOf(a.get(k)) > Double.valueOf(b.get(k))) {

table.set(j - 1, a);

table.set(j, b);

} } }

break;

} }

return table;

} }

Размещено на Allbest.ru

...

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

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