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

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 23.02.2023
Размер файла 632,0 K

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

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

Размещено на http://www.allbest.ru/

Главное управление по образованию Витебского областного исполнительного комитета

Учреждение образования «Полоцкий государственный экономический колледж»

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

По дисциплине «Основы алгоритмизации и программирования»

Тема: «Информационная система портфолио выпускинов колледжа»

Выполнила: Л.В. Лагун

Руководитель: А.Е. Смородин

Полоцк 2022

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. АНАЛИЗ ИСХОДНЫХ ДАННЫХ И ПОСТАНОВКА ЗАДАЧИ

1.1 Анализ предметной области

1.2 Анализ функциональных требований к системе

2. ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

2.1 Проектирование структуры хранения данных

3. РЕАЛИЗАЦИЯ ПРОГРАММЫ

3.1 Реализация программного средства

ЗАКЛЮЧЕНИЕ

ПРИЛОЖЕНИЕ

Приложение A

Приложение Б

Приложение В

Приложение Г

ВВЕДЕНИЕ

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

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

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

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

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

1. АНАЛИЗ ИСХОДНЫХ ДАННЫХ И ПОСТАНОВКА ЗАДАЧИ

1.1 Анализ предметной области

Виды портфолио и их особенности:

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

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

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

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

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

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

1.2 Анализ функциональных требований к системе

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

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

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

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

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

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

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

Так или иначе, в любой момент студент должен иметь возможность времени экспортировать свои файлы на своё устройство.

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

В процессе проектирования программы будет использован язык программирования С++, средой программирования является Visuаl Studio 2019.

2. ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

2.1 Проектирование структуры хранения данных

Хранение информации осуществляется в текстовом файле, используется однонаправленный список, сортировка «пузырек с флажком», отображения данных осуществляется на трех формах: MyForm, MyFormAdmin, MyFormAdministrator. Аутентификация пользователей осуществляется на форме MyFormAuthentification. В информационной системе реализовано три структуры: DataLogin, DataTeacher и DataType. В форме MyForm использовано три поля для хранения информации структуры DataLogin, которые представлены в таблице 2.1.

Таблица 2.1 - Используемые поля структуры DataLogin

Имя поля

Тип поля

Описание поля

Id

int

Содержит айди

Login

string

Содержит логин

Password

string

Содержит пароль

Access

string

Содержит доступ

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

Таблица 2.2 - Используемые поля структуры DataTeacher

Имя поля

Тип поля

Описание поля

id

int

Содержит айди

benefit

string

Содержит список пособий

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

Таблица 2.3 - Используемые поля структуры DataType

Имя поля

Тип поля

Описание поля

id

int

Содержит айди

teacher

string

Содержит список преподавателей

speciality

string

Содержит список специальностей

discipline

string

Содержит список дисциплин

Проектирование функциональной структуры

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

В программном средстве содержатся следующие модули: list_template, struct, Authentication, MyForm, MyFormAdmin, MyFormAdministrator. Модули представлены в таблице 2.4.

Таблица 2.4 - Описание модулей.

Название модуля

Назначение

list_template

Содержит шаблон класса и функции для работы

struct

Содержит данные с таблиц для дальнейшего применения в шаблонах

Authentication

Работа с окном авторизации

MyForm

Работа с окном добавления пользователей

MyFormAdmin

Работа с окном преподавателя

MyFormAdministrator

Работа с окном администратора

Таблица 2.5 - Описание функций.

Название функции

Назначение

Возвращаемое значение

Параметры

1

2

3

4

void create

Инициализация указателей

-

list *list - указатель на список

bool add(T* value)

Добавление элемента в список

True - элемент добавлен в список

False - ошибка при добавление элемента в список

list *list - указатель на список,

T* value - указатель на данные для добавления в список

bool insert(T* value)

Вставка данных в список

false - ошибка при вставке элемента в список
true - элемент в список вставлен

list *list - указатель на список,

T* value - указатель на данные для вставки в список

void destroy

Очищение элементов списка

-

list *list - указатель на список

bool del()

Удаление данных элемента

True - элемент удалён из списка

False - ошибка удаления элемента из списка

list *list - указатель на список

bool moveHead

Перемещение в начало списка

True - удачное перемещение в начало списка

False - ошибка перемещения

list *list - указатель на список

bool moveNext

Перемещение вперёд по списку

True -удачное перемещение по списку

False -ошибка перемещения

list *list - указатель на список

bool movePrev

Перемещение назад по списку

True -удачное перемещение по списку

False -ошибка перемещения

list *list - указатель на список

bool set(T* value)

Установление нового значения текущего элемента

false - отсуствует текущий элемент

true - значение было установлено

list *list - указатель на список

T* value - указатель на данные

bool get(T*value)

Запись значения текущего элемента

false - отсуствует текущий элемент

true - значение было записано

list *list - указатель на список

T* value - указатель на данные

void SortIns(int(*cmp)(const T*, const T*))

Сортировка элементов в списке

True -сортировка элементов выполнена

False - ошибка сортировки элементов

-

3. РЕАЛИЗАЦИЯ ПРОГРАММЫ

3.1 Реализация программного средства

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

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

Рисунок 3.1 - Вид формы аутентификации

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

Рисунок 3.2 - Форма данные пользователей

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

Рисунок 3.3 - Форма преподавателя

При нажатии на кнопку «Войти» с логином 3 и паролем 3 открывается форма администратора. В данной форме ведется формирование списков преподавателей, специальностей, дисциплин. Администратор может добавлять/изменять/удалять данные списка. Также данная форма предоставляет возможности поиска и сортировки по возрастанию/убыванию по преподавателю/специальности/дисциплинам:

Тестирование программы

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

Рисунок 3.4 - Форма администратора

запуск программы;

прохождение авторизации;

открытие файла;

сохранение информации в файл;

добавление данных в таблицы;

редактирование данных в таблицах;

удаление данных из таблиц;

поиск данных в таблицах;

сортировка таблицы;

выход из программы.

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

№ теста

№ тест тестирования

Описание теста

Входные данные

Ожидаемый результат

Сценарий тестирования

1

2

3

4

5

6

1

1.1

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

Логин: 1

Пароль: 1

Появилось главное окно Список пользователей

На форме «Аутентификация» ввести в поля ввода «Логин» и «Пароль» и нажать кнопку «Войти»

2

1.1

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

Логин: 11

Пароль: 11

Сообщение об ошибке

3

2.1

Добавление пользователей

Логин: 12

Пароль: 12

Пользователь добавлен в базу данных

На вкладке «Список пользователей» ввести данные в поля ввода, нажать кнопку «Добавить»

4

2.2

Изменение существующих данных

Логин: 1

Пароль: 1

Доступ: admin

Запись была изменена в базе данных

На вкладке «Список пользователей» ввести данные в поля ввода, нажать кнопку «Изменить»

5

2.3

Удаление пользователя

Выбранный пользователь

Пользователь был удален из базы данных

На форме «Список пользователей» нажать кнопку «Удалить»

6

2.3

Поиск пользователя

Данные для поиска:

логин, пароль и доступ

Запись найдена в базе данных

На форме «Список пользователей» в поле «Поиск» ввести данные для поиска, нажать кнопку «Найти»

7

2.3

Поиск пользователя

Запись не найдена в базе данных

На форме «Список пользователя» в поле «Поиск» ввести данные для поиска, нажать кнопку «Найти»

8

2.4

Сортировка

Данные для сортировки:

Логин, пароль и доступ

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

На форме «Список пользователей» выбрать параметр для сортировки, нажать на кнопку «Сортировка по возрастанию» или «Сортировка по убыванию»

9

2.4

Сортировка

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

На форме «Список пользователей» выбрать параметр для сортировки, нажать на кнопку «Сортировка по возрастанию» или «Сортировка по убыванию»

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

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

Тестовый случай

Входные

данные

Ожидаемый результат

Фактический

результат

Результаты тестирования

1

2

3

4

5

Аутентификация в приложении

Корректные данные

Нажать на кнопку «Войти»

Переход на главную форму

успешно

Аутентификация в приложении

Некорректные данные

Сообщение об ошибке

Сообщение об ошибке

успешно

Нажатие на кнопку «Добавить»

Корректные данные

Добавить данные в таблицу

Добавление данных в таблицу

успешно

Нажатие на кнопку «Добавить»

Некорректные данные

Сообщение об ошибке

Сообщение об ошибке

успешно

Нажатие на кнопку «Изменить»

Корректные данные

Редактировать выбранные данные

Сообщение об ошибке

успешно

Нажатие на кнопку «Изменить»

Некорректные данные

Сообщение об ошибке

Сообщение об ошибке

успешно

Нажатие на кнопку «Удалить»

Корректные данные

Удалить данные из таблицы

Удаление данных из таблицы

успешно

Нажатие на кнопку «Удалить»

Некорректные данные

Сообщение об ошибке

Сообщение об ошибке

успешно

Нажатие на кнопку «Поиск»

Корректные данные

Найти информацию

Найти информацию

успешно

Нажатие на кнопку «Поиск»

Некорректные данные

Сообщение об ошибке

Сообщение об ошибке

успешно

Нажатие на кнопку «Сортировка»

Корректные данные

Нажать на кнопку «Сортировать»

Сортировка данных

успешно

Нажатие на кнопку «Сортировка»

Некорректные данные

Сообщение об ошибке

Сообщение об ошибке

успешно

Просмотр методических пособий

Корректные данные

Записи из файла были открыты

Записи из файла были открыты

Успешно

Просмотр методических пособий

Некорректные данные

Сообщение об ошибке

Сообщение об ошибке

успешно

Сохранение файла

Корректные данные

Записи из файла сохранены

Записи из файла сохранены

успешно

Сохранение файла

Некорректные данные

Сообщение об ошибке

Сообщение об ошибке

успешно

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

ЗАКЛЮЧЕНИЕ

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

В процессе проектирования были решены следующие задачи:

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

спроектирована задача и разработан алгоритм;

реализован разработанный алгоритм;

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

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

В результате выполнения курсового проекта была создана программа для автоматизации работы администратора, преподавателя и выпускника.. Разработанная программа успешно прошла все этапы тестирования. Ошибок в процессе тестирования выявлено не было.

За время выполнения курсового проекта были расширены и закреплены знания по дисциплине «Основы алгоритмизации и программирования».

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

Общие требования по оформлению курсовых проектов (работ), дипломных проектов, отчетов по практикам, рефератов, и других письменных работ учащихся: СТП ПГЭК 1.01 - УО «ПГЭК».

Программа и методика испытаний. Требования к содержанию и оформлению: ГОСТ 19.301-2001 ЕСПД - Минск: Изд-во стандартов, 1982.

Руководство оператора. Требования к содержанию и оформлению: ГОСТ 19.505-79 ЕСПД - Минск: Изд-во стандартов, 1982.

Техническое задание. Требования к содержанию и оформлению: ГОСТ 19.201-78 ЕСПД - М.: Издательство стандартов, 1987.

Требования к дипломному (курсовому) проекту: СТП ПГЭК 2.02 - УО «ПГЭК».

Васильев, А.Н. Программирование на C++ в примерах и задачах. - М.: Эксмо, 2018. - 300 с.

Гудман, С.Т., Хидетниеми С. Введение в разработку и анализ алгоритмов. - М.: Мир, 1981. - 303 с.

Дарахвелидае П.Г., Марков Е.П. Программирование на С++. - СПб.: БХВ-Петербург, 2003. - 784 с.

Лабушева, Т.В., Железко Б.А. Основы алгоритмизации и программирования. - Минск: РИПО, 2016. - 302 с.

Офицеров, Д.В., Долгий А.Б.Программирование на персональных ЭВМ: Практикум: Учеб.пособие. - Мн.: Выш.шк., 1993. - 301 с.

ПРИЛОЖЕНИЕ

Приложение A

Функциональная модель программного средства

Декомпозиция блока А4

Приложение Б

Техническое задание

Введение

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

Б1 Основания для разработки

Основанием для разработки является задание на выполнение курсового проекта учащейся группы П21 специальности 2-40 01 01 «Программное обеспечение информационных технологий и логистика» Лагун Ларисе Викторовне является задание на курсовое проектирование, выданное руководителем курсового проектирования, утверждённое протоколом №7 от 18.02.2022.

Б2 Назначение разработки

Б2.1 Функциональное назначение

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

Б2.1.1 Эксплуатационное назначение

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

Б3 Требования к программе или программному изделию

Б3.1 Требования к функциональным характеристикам

Б3.1.1 Выполняемые функции

Б3.1.1.1 Для администратора:

Добавление списка преподавателей

Добавление списка портфолио

Б3.1.1.1.1 Для преподавателя:

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

Формирование списка студентов

Б3.2 Требования к разграничению прав пользователей

Программа должна обеспечить работу двух видов пользователей: «Администратор», «Преподаватель».

Б3.2.1 Перечень функций под ролью «Администратор»

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

добавление, редактирование и удаление преподавателей;

добавление, редактирование и удаление списка дисциплин;

добавление, редактирование и удаление списка специальностей;

Б3.2.2 Перечень функций под ролью «Преподаватель»

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

добавление, редактирование и удаление списка учебно-методических пособий;

Б3.3 Требования к надежности

Требования к надежности следующие:

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

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

обеспечить целостность информации в информационной системе.

Б3.4 Условия эксплуатации

Условия эксплуатации следующие:

условия эксплуатации в соответствие с СанПин 2.2.2.542 - 96;

обслуживанием системы занимается менеджер, который должен обладать: квалификацией оператора ЭВМ

Б3.5 Требования к составу и параметрам технических средств

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

Минимальная конфигурация технических средств: тип процессора - Core i5, объем ОЗУ - 4 Гб, объем свободного пространства на жестком диске от 8 Гб. функциональный программный тестирование

Б3.6 Требования к информационной и программной совместимости

Требования к информационной и программной совместимости, следующие:

программное обеспечение должно работать под управлением операционных систем семейства WIN64 (Windows 7 и т.д.);

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

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

Б3.7 Требования к маркировке и упаковке

Разработанный программный продукт должен поставляться на CD/DVD-диске, укомплектованный сопроводительной документацией. Компакт диск должен быть промаркирован в соответствии с СТП ПГЭК 2.1.

Б4 Требования к программной документации

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

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

«Техническое задание»;

«Результаты тестирования»;

«Пояснительная записка».

Программная документация должна быть оформлена в соответствии со следующим нормативным документом: ГОСТ 19.201-78 «ЕСПД. Техническое задание». Б5 Стадии и этапы разработки

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

Таблица Б.1 - Стадии разработки информационной системы

Наименование этапов курсового проектирования

Срок выполнения

Анализ предметной области и постановки задачи

Проектирование

Реализация интерфейса программы и тестирование

Оформление технической документации

Б6 Порядок контроля и приемки

Контроль и приемка программного средства осуществляется в соответствии с документом «Программа и методика испытаний», разрабатываемым по ГОСТ 19.301-2000.

Приложение В

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

Листинг В.2 - часть модуль программы MyFormAuthentification.cpp

{ Модуль MyFormAuthentification.cpp

{ гр. П21

{ Разработчик: Лагун Л.В.

{ Модифицирован: 30 апреля 2022

{ Модуль реализации функций для работы с аутентификацией пользователей }

using namespace System;

using namespace System::Windows::Forms;

[STAThreadAttribute]

void Main(array<String^>^ args) {

Application::EnableVisualStyles();

Application::SetCompatibleTextRenderingDefault(false);

kursovoyproyekt::MyFormAuthentification form;

Application::Run(% form);

}

Листинг В.2 - часть модуль программы MyFormAuthentification.h

/*{********************************************************************}

{ Модуль MyFormAuthentification.h }

{ гр. П21 }

{ Разработчик: Лагун Л.В. }

{ Модифицирован: 30 апреля 2022 }

{----------------------------------------------------------------------}

{ Модуль реализации функций для работы с аутентификацией пользователей }

{********************************************************************}*/

private: System::Void buttonLogin_Click(System::Object^ sender, System::EventArgs^ e)

{

unidirectional_list <DataLogin>loginData;

loginData.create_default_user();

std::string login = marshal_as <std::string>(textBoxLogin->Text);

std::string password = marshal_as <std::string>(textBoxPassword->Text);

std::string user = "";

if (loginData.authentification(login, password, user) == true)

{

if (user == "teacher")

{

MyFormAdmin^ Admin = gcnew MyFormAdmin;

MyFormAuthentification::Hide();

if (Admin->ShowDialog() == System::Windows::Forms::DialogResult::Cancel)

MyFormAuthentification::Close();

MessageBox::Show("Вы вошли как преподаватель", "Внимание");

}

else if (user == "admin")

{

MyForm^ Admin = gcnew MyForm;

MyFormAuthentification::Hide();

if (Admin->ShowDialog() == System::Windows::Forms::DialogResult::Cancel)

MyFormAuthentification::Close();

MessageBox::Show("Вы вошли как администратор", "Внимание");

}

else if (user == "student")

{

MyFormAdministrator^ Admin = gcnew MyFormAdministrator;

MyFormAuthentification::Hide();

if (Admin->ShowDialog() == System::Windows::Forms::DialogResult::Cancel)

MyFormAuthentification::Close();

MessageBox::Show("Вы вошли как студент", "Внимание");

}

}

else

{

MessageBox::Show("Введен неверный логин или пароль", "Внимание");

textBoxLogin->Clear();

textBoxPassword->Clear();

}

loginData.destroy();

}

private: System::Void MyFormAuthentification_Load(System::Object^ sender, System::EventArgs^ e)

Листинг В.3 - часть модуль программы MyForm.h

/*{********************************************************************}

{ Модуль MyForm.h }

{ гр. П21 }

{ Разработчик: Лагун Л.В. }

{ Модифицирован: 30 апреля 2022 }

{----------------------------------------------------------------------}

{ Модуль реализации функций для работы с данными пользователей }

{********************************************************************}*/

private:int current_id;

private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e)

{

try

{

objectDataLogin.create();;

if (objectDataLogin.readfilelogin("login.txt") == false)

MessageBox::Show("Некорректное чтение файла", "Ошибка");

else

{

if (objectDataLogin.moveHead() == false)

{

MessageBox::Show("Недалось найти максимальный id. Список пустой", "Ошибка");

}

else

{

int max_id = INT_MIN;

do

{

DataLogin d;

objectDataLogin.get(&d);

if (max_id < d.id)

max_id = d.id;

} while (objectDataLogin.moveNext() == true);

objectDataLogin.setMaxId(max_id);

showdata();

}

}

this->showdata();

}

catch (Exception^ ex)

{

MessageBox::Show(ex->Message, "Ошибка инициализации");

}

}

private: System::Void dataGridView1_CellContentClick(System::Object^ sender, System::Windows::Forms::DataGridViewCellEventArgs^ e)

{

if (objectDataLogin.moveHead() == false)

{

MessageBox::Show("В таблицке нет строк.",

"Ошибка");

return;

}

this->current_id =

Convert::ToInt32(

dataGridView1->Rows[

dataGridView1->CurrentCell->

RowIndex]->Cells[0]->Value);

objectDataLogin.moveHead();

do

{

DataLogin d;

objectDataLogin.get(&d);

if (current_id == d.id) {

textBoxLogin->Text =

marshal_as <String^>(d.login);

textBoxPassword->Text =

marshal_as <String^>(d.password);

comboBoxAccess->Text =

marshal_as <String^>(d.access);

break;

}

} while (objectDataLogin.moveNext() == true);

}

private: bool showdata()

{

dataGridView1->Rows->Clear();

int rownumber = 0;

if (objectDataLogin.moveHead() == false)

return false;

do

{

DataLogin d;

objectDataLogin.get(&d);

dataGridView1->Rows->Add();

dataGridView1->Rows[rownumber]->Cells[0]->Value =

Convert::ToString(d.id);

dataGridView1->Rows[rownumber]->Cells[1]->Value =

marshal_as <String^>(d.login);

dataGridView1->Rows[rownumber]->Cells[3]->Value =

marshal_as <String^>(d.password);

dataGridView1->Rows[rownumber]->Cells[2]->Value =

marshal_as <String^>(d.access);

rownumber += 1;

} while (objectDataLogin.moveNext() == true);

for (int i = 0; i < dataGridView1->Rows->Count; i++)

dataGridView1->Rows[i]->ReadOnly = true;

return true;

}

private: bool checkdata(DataLogin& dt)

{

//Сделать проверку корректности ввода данных

dt.login = marshal_as<std::string>(textBoxLogin->Text);

dt.password = marshal_as<std::string>(textBoxPassword->Text);

dt.access = marshal_as<std::string>(comboBoxAccess->Text);

return true;

}

private: System::Void buttonAdd_Click(System::Object^ sender, System::EventArgs^ e)

{

try {

DataLogin dt;

if ((this->checkdata(dt) == true))

{

dt.id = objectDataLogin.get_id();

objectDataLogin.add(&dt);

this->showdata();

textBoxLogin->Text = "";

textBoxPassword->Text = "";

comboBoxAccess->Text = "";

if (objectDataLogin.savefilelogin("login.txt") == false)

MessageBox::Show("Сохранение в файл", "Ошибка");

}

}

catch (Exception^ ex)

{

MessageBox::Show("Вы не ввели данные: "+ ex->Message, "Ошибка");

}

}

private: System::Void buttonEdit_Click(System::Object^ sender, System::EventArgs^ e)

{

int selectedRow = 0;

if (objectDataLogin.moveHead() == false)

{

MessageBox::Show("В таблице нет строк. Ошибка");

return;

}

if (textBoxLogin->Text == "" && textBoxPassword->Text == "" && comboBoxAccess->Text == "")

{

MessageBox::Show("Выберете поле, в которое хотите ввести данные");

return;

}

else {

DataLogin d;

do {

objectDataLogin.get(&d);

if (current_id == d.id) {

try {

if (checkdata(d) == true) {

this->showdata();

textBoxLogin->Text = "";

textBoxPassword->Text = "";

comboBoxAccess->Text = "";

if (objectDataLogin.savefilelogin("login.txt") == false)

MessageBox::Show("Сохранение в файл", "Ошибка");

}

}

catch (Exception^ ex)

{

MessageBox::Show("Вы не ввели данные:" +

ex->Message, "Ошибка");

}

break;

}

} while (objectDataLogin.moveNext() == true);

}

}

private: System::Void buttonDelete_Click(System::Object^ sender, System::EventArgs^ e)

{

try {

objectDataLogin.moveHead();

do

{

DataLogin d;

objectDataLogin.get(&d);

if (current_id == d.id) {

objectDataLogin.del();

if (objectDataLogin.savefilelogin("login.txt") == false)

MessageBox::Show("Сохранение в файл");

break;

}

} while (objectDataLogin.moveNext() == true);

dataGridView1->Rows->Clear();

this->showdata();

}

catch (...) {}

//}

}

private: System::Void comboBoxAccess_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e)

{

}

private: System::Void textBoxLogin_TextChanged(System::Object^ sender, System::EventArgs^ e)

{

}

};

Листинг В.4 - часть модуль программы MyFormAdmin.h

/*{********************************************************************}

{ Модуль MyFormAdmin.h }

{ гр. П21 }

{ Разработчик: Лагун Л.В. }

{ Модифицирован: 30 апреля 2022 }

{----------------------------------------------------------------------}

{ Модуль реализации функций для работы со списком пособий }

{********************************************************************}*/

private: int current_id;

private: System::Void dataGridView1_CellContentClick(System::Object^ sender, System::Windows::Forms::DataGridViewCellEventArgs^ e)

{

if (student.moveHead() == false)

{

MessageBox::Show("В таблицке нет строк.",

"Ошибка");

return;

}

this->current_id =

Convert::ToInt32(

dataGridView1->Rows[

dataGridView1->CurrentCell->

RowIndex]->Cells[0]->Value);

student.moveHead();

do

{

DataTeacher d;

student.get(&d);

if (current_id == d.id)

{

textBoxStudent->Text =

marshal_as <String^>(d.student);

break;

}

} while (student.moveNext() == true);

}

private: System::Void buttonAdd_Click(System::Object^ sender, System::EventArgs^ e)

{

try {

DataTeacher dt;

if ((this->checkdata(dt) == true))

{

dt.id = student.get_id();

student.add(&dt);

this->showdata();

textBoxStudent->Text = "";

if (student.savefilelogin("Teacher.txt") == false)

MessageBox::Show("Сохранение в файл", "Ошибка");

}

}

catch (Exception^ ex)

{

MessageBox::Show("Вы не ввели данные: "

+ ex->Message, "Ошибка");

}

}

private: System::Void buttonEdit_Click(System::Object^ sender, System::EventArgs^ e)

{

int selectedRow = 0;

if (student.moveHead() == false)

{

MessageBox::Show("В таблице нет строк. Ошибка");

return;

}

if (textBoxStudent->Text == " ")

{

MessageBox::Show("Выберете поле, в которое хотите ввести данные");

return;

}

else

{

DataTeacher d;

do

{

student.get(&d);

if (current_id == d.id)

{

try

{

if (this->checkdata(d) == true)

{

showdata();

textBoxStudent->Text = "";

if (student.savefilelogin("Teacher.txt") == false)

MessageBox::Show("Сохранение в файл", "Ошибка");

}

}

catch (Exception^ ex)

{

MessageBox::Show("Вы не ввели данные:" +

ex->Message, "Ошибка");

}

break;

}

} while (student.moveNext() == true);

}

}

private: System::Void MyFormAdmin_Load(System::Object^ sender, System::EventArgs^ e)

{

try

{

student.create();

if (student.readfilelogin("Teacher.txt") == false)

MessageBox::Show("Некорректное чтение файла", "Ошибка");

else

{

if (objectDataLogin.moveHead() == false)

{

MessageBox::Show("Недалось найти максимальный id. Список пустой", "Ошибка");

}

else

{

int max_id = INT_MIN;

do

{

DataTeacher d;

student.get(&d);

if (max_id < d.id)

max_id = d.id;

} while (student.moveNext() == true);

student.setMaxId(max_id);

}

}

this->showdata();

showdata();

}

catch (Exception^ ex)

{

MessageBox::Show(ex->Message, "Ошибка инициализации");

}

}

private: System::Void buttonDelete_Click(System::Object^ sender, System::EventArgs^ e)

{

if (!dataGridView1->RowCount)

{

MessageBox::Show("В таблице нет строк.", "Ошибка");

return;

}

int index;

try {

index = dataGridView1->CurrentCell->RowIndex;

}

catch (...)

{

MessageBox::Show("Выберитте строку.", "Ошибка");

return;

}

if (index != -1) {

try {

int id = Convert::ToInt32(

dataGridView1->Rows[index]->Cells[0]->Value);

student.moveHead();

do

{

DataTeacher d;

student.get(&d);

if (id == d.id)

{

student.del();

if (student.savefilelogin("Teacher.txt") == false)

MessageBox::Show("Сохранение в файл");

break;

}

} while (student.moveNext() == true);

dataGridView1->Rows->Clear();

showdata();

}

catch (...) {}

}

}

private: bool showdata()

{

dataGridView1->Rows->Clear();

int rownumber = 0;

if (student.moveHead() == false)

return false;

do

{

DataTeacher d;

student.get(&d);

dataGridView1->Rows->Add();

dataGridView1->Rows[rownumber]->Cells[0]->Value =

Convert::ToString(d.id);

dataGridView1->Rows[rownumber]->Cells[1]->Value =

marshal_as <String^>(d.student);

rownumber += 1;

} while (student.moveNext() == true);

for (int i = 0; i < dataGridView1->Rows->Count; i++)

dataGridView1->Rows[i]->ReadOnly = true;

return true;

}

private: bool checkdata(DataTeacher& dt)

{

//Сделать проверку корректности ввода данных

dt.student = marshal_as<std::string>(textBoxStudent->Text);

return true;

}

private: System::Void buttonSearch_Click(System::Object^ sender, System::EventArgs^ e)

{

if (student.moveHead() == false)

{

MessageBox::Show("Список пустой", "Ошибка");

return;

}

dataGridView1->Rows->Clear();

DataTeacher d;

int rownumber = 0;

do

{

student.get(&d);

if (d.student == marshal_as <std::string>(textBoxSearch->Text))

{

dataGridView1->Rows->Add();

dataGridView1->Rows[rownumber]->Cells[0]->Value =

Convert::ToString(d.id);

dataGridView1->Rows[rownumber]->Cells[1]->Value =

marshal_as <String^>(d.student);

rownumber += 1;

}

} while (student.moveNext());

for (int i = 0; i < dataGridView1->Rows->Count; i++)

{

dataGridView1->Rows[i]->ReadOnly = true;

}

}

private: System::Void buttonSortUp_Click(System::Object^ sender, System::EventArgs^ e)

{

student.SortBub(CompareAscendingStudent);

showdata();

}

private: System::Void buttonShow_Click(System::Object^ sender, System::EventArgs^ e)

{

showdata();

}

private: System::Void buttonSortDown_Click_1(System::Object^ sender, System::EventArgs^ e)

{

student.SortBub(CompareDescendingStudent);

showdata();

}

private: System::Void buttonShow_Click_1(System::Object^ sender, System::EventArgs^ e)

{

showdata();

}

};

Листинг В.4 - часть модуль программы MyFormAdministrator.h

/*{********************************************************************}

{ Модуль MyFormAdministrator.h }

{ гр. П21 }

{ Разработчик: Лагун Л.В. }

{ Модифицирован: 30 апреля 2022 }

{----------------------------------------------------------------------}

{ Модуль реализации функций для работы с данными пособий }

{********************************************************************}*/

private: int current_id;

private: System::Void dataGridView1_CellContentClick(System::Object^ sender, System::Windows::Forms::DataGridViewCellEventArgs^ e)

{

if (objectDataType.moveHead() == false)

{

MessageBox::Show("В таблице нет строк.",

"Ошибка");

return;

}

this->current_id =

Convert::ToInt32(

dataGridView1->Rows[

dataGridView1->CurrentCell->

RowIndex]->Cells[0]->Value);

objectDataType.moveHead();

do

{

DataType d;

objectDataType.get(&d);

if (current_id == d.id)

{

textBoxTeacher->Text =

marshal_as <String^>(d.teacher);

textBoxPortfolio->Text=

marshal_as <String^>(d.portfolio);

break;

}

} while (objectDataType.moveNext() == true);

}

private: System::Void textBoxTeacher_TextChanged(System::Object^ sender, System::EventArgs^ e)

{

}

private: bool showdata()

{

dataGridView1->Rows->Clear();

int rownumber = 0;

if (objectDataType.moveHead() == false)

return false;

do

{

DataType d;

objectDataType.get(&d);

dataGridView1->Rows->Add();

dataGridView1->Rows[rownumber]->Cells[0]->Value =

Convert::ToString(d.id);

dataGridView1->Rows[rownumber]->Cells[1]->Value =

marshal_as <String^>(d.teacher);

dataGridView1->Rows[rownumber]->Cells[2]->Value =

marshal_as <String^>(d.portfolio);

rownumber += 1;

} while (objectDataType.moveNext() == true);

for (int i = 0; i < dataGridView1->Rows->Count; i++)

dataGridView1->Rows[i]->ReadOnly = true;

//dataGridView1->AutoSizeColumnsMode = DataGridViewAutoSizeColumnMode.Fill;

return true;

}

private: bool checkdata(DataType& dt)

{

//Сделать проверку корректности ввода данных

dt.teacher = marshal_as<std::string>(textBoxTeacher->Text);

dt.portfolio = marshal_as<std::string>(textBoxPortfolio->Text);

return true;

}

private: System::Void buttonAdd_Click(System::Object^ sender, System::EventArgs^ e)

{

try

{

DataType dt;

if ((this->checkdata(dt) == true))

{

dt.id = objectDataType.get_id();

objectDataType.add(&dt);

this->showdata();

textBoxTeacher->Text = "";

textBoxPortfolio->Text = "";

if (objectDataType.savefilelogin( "Administrator.txt") == false)

MessageBox::Show("Сохранение в файл", "Ошибка");

}

}

catch (Exception^ ex)

{

MessageBox::Show("Вы не ввели данные: "

+ ex->Message, "Ошибка");

}

}

private: System::Void buttonEdit_Click(System::Object^ sender, System::EventArgs^ e)

{

int selectedRow = 0;

if (objectDataType.moveHead() == false)

{

MessageBox::Show("В таблице нет строк. Ошибка");

return;

}

if (textBoxTeacher->Text == "" && textBoxPortfolio->Text == "" )

{

MessageBox::Show("Выберете поле, в которое хотите ввести данные");

return;

}

else {

DataType d;

do {

objectDataType.get(&d);

if (current_id == d.id)

{

try {

if (checkdata(d) == true)

{

objectDataType.update(&d, d.id);

showdata();

textBoxTeacher->Text = "";

textBoxPortfolio->Text = "";

if (objectDataType.savefilelogin("Administrator.txt") == false)

MessageBox::Show("Сохранение в файл", "Ошибка");

}

}

catch (Exception^ ex)

{

MessageBox::Show("Вы не ввели данные:" +

ex->Message, "Ошибка");

}

break;

}

} while (objectDataType.moveNext() == true);

}

}

private: System::Void buttonDelete_Click(System::Object^ sender, System::EventArgs^ e)

{

if (!dataGridView1->RowCount)

{

MessageBox::Show("В таблице нет строк.", "Ошибка");

return;

}

int index;

try

{

index = dataGridView1->CurrentCell->RowIndex;

}

catch (...)

{

MessageBox::Show("Выберитте строку.", "Ошибка");

return;

}

if (index != -1)

{

try

{

int id = Convert::ToInt32(

dataGridView1->Rows[index]->Cells[0]->Value);

objectDataType.moveHead();

do

{

DataType d;

objectDataType.get(&d);

if (id == d.id) {

objectDataType.del();

if (objectDataType.savefilelogin("Administrator.txt") == false)

MessageBox::Show("Сохранение в файл");

break;

}

} while (objectDataType.moveNext() == true);

dataGridView1->Rows->Clear();

showdata();

}

catch (...) {}

}

}

private:System::Void MyFormAdministrator_Load(System::Object^ sender, System::EventArgs^ e)

{

try

{

objectDataType.create();

if (objectDataType.readfilelogin("Administrator.txt") == false)

MessageBox::Show("Некорректное чтение файла", "Ошибка");

else

{

if (objectDataType.moveHead() == false)

{

MessageBox::Show("Недалось найти максимальный id. Список пустой", "Ошибка");

}

else

{

int max_id = INT_MIN;

do

{

DataType d;

objectDataType.get(&d);

if (max_id < d.id)

max_id = d.id;

} while (objectDataType.moveNext() == true);

objectDataType.setMaxId(max_id);

showdata();

}

}

}

catch (Exception^ ex)

{

MessageBox::Show("Чтение из файла" + ex->Message, "Ошибка инициализации");

}

}

private: System::Void buttonShowAll_Click(System::Object^ sender, System::EventArgs^ e)

{

showdata();

}

private: System::Void buttonFind_Click(System::Object^ sender, System::EventArgs^ e)

{

if (objectDataType.moveHead() == false)

{

MessageBox::Show("Список пустой", "Ошибка");

return;

}

dataGridView1->Rows->Clear();

DataType d;

int rownumber = 0;

do

{

objectDataType.get(&d);

if (d.teacher==marshal_as <std::string>(textBoxFind->Text))

{

dataGridView1->Rows->Add();

dataGridView1->Rows[rownumber]->Cells[0]->Value =

Convert::ToString(d.id);

dataGridView1->Rows[rownumber]->Cells[1]->Value =

marshal_as <String^>(d.teacher);

dataGridView1->Rows[rownumber]->Cells[2]->Value =

marshal_as <String^>(d.portfolio);

rownumber += 1;

}

if (d.portfolio== marshal_as <std::string>(textBoxFind->Text))

{

dataGridView1->Rows->Add();

dataGridView1->Rows[rownumber]->Cells[0]->Value =

Convert::ToString(d.id);

dataGridView1->Rows[rownumber]->Cells[1]->Value =

marshal_as <String^>(d.teacher);

dataGridView1->Rows[rownumber]->Cells[2]->Value =

marshal_as <String^>(d.portfolio);

rownumber += 1;

}

} while (objectDataType.moveNext());

for (int i = 0; i < dataGridView1->Rows->Count; i++)

{

dataGridView1->Rows[i]->ReadOnly = true;

}

}

private: System::Void buttonSortAssending_Click_1(System::Object^ sender, System::EventArgs^ e)

{

if (comboBoxSort->SelectedIndex == 0)

{

objectDataType.SortBub(CompareAscendingTeacher);

showdata();

}

else if (comboBoxSort->SelectedIndex == 1)

{

objectDataType.SortBub(CompareAscendingPortfolio);

showdata();

}

else if (comboBoxSort->SelectedIndex == 2)

{

MessageBox::Show("Ошибка");

}

}

private: System::Void buttonSortDescending_Click_1(System::Object^ sender, System::EventArgs^ e)

{

if (comboBoxSort->SelectedIndex == 0)

{

objectDataType.SortBub(CompareDescendingTeacher);

showdata();

}

else if (comboBoxSort->SelectedIndex == 1)

{

objectDataType.SortBub(CompareDescendingPortfolio);

showdata();

}

else if (comboBoxSort->SelectedIndex == 2)

{

MessageBox::Show("Ошибка");

}

}

};

Листинг В.4 - часть модуль программы struct.h

/*{********************************************************************}

{ Модуль struct.h }

{ гр. П21 }

{ Разработчик: Лагун Л.В. }

{ Модифицирован: 30 апреля 2022 }

{----------------------------------------------------------------------}

{ Модуль реализации функций для работы со структурами }

{********************************************************************}*/

typedef struct

{

int id;

// authentification

std::string login;

std::string password;

std::string access;

} DataLogin;

//template<typename T>

std::ofstream& operator << (std::ofstream& out, const DataLogin& data)

{

out << data.id << " " << " " << data.login << " " << data.password << data.access << " " << std::endl;

return out;

}

std::ifstream& operator >> (std::ifstream& out, DataLogin& data)

{

out >> data.id >> data.access >> data.login >> data.password;

return out;

}

typedef struct

{

int id;

std::string student;

} DataTeacher;

std::ofstream& operator << (std::ofstream& out, const DataTeacher& data)

{

out << data.id << " " << data.student << std::endl;

return out;

}

std::ifstream& operator >> (std::ifstream& out, DataTeacher& data)

{

out >> data.id >> data.student;

return out;

}

typedef struct

{

int id;

std::string teacher;

std::string portfolio;

} DataType;

std::ofstream& operator << (std::ofstream& out, const DataType& data)

{

out << data.id << std::endl

<< data.teacher << std::endl

<< data.portfolio << std::endl;

return out;

}

std::ifstream& operator >> (std::ifstream& out, DataType& data)

{

out.clear();

out >> data.id >> data.teacher >> data.portfolio;

return out;

}

#include "list_template.h"

int CompareAscendingTeacher(const DataType* element1, const DataType* element2)

{

return element1->teacher > element2->portfolio;

}

int CompareDescendingTeacher(const DataType* element1, const DataType* element2)

{

return element1->teacher < element2->portfolio;

}

int CompareAscendingPortfolio(const DataType* element1, const DataType* element2)

{

return element1->portfolio > element2->portfolio;

}

int CompareDescendingPortfolio(const DataType* element1, const DataType* element2)

{

return element1->portfolio < element2->portfolio;

}

int CompareAscendingStudent(const DataTeacher* element1, const DataTeacher* element2)

{

return element1->student > element2->student;

}

int CompareDescendingStudent(const DataTeacher* element1, const DataTeacher* element2)

{

return element1->student < element2->student;

}

Листинг В.4 - часть модуль программы list_template.h

/*{********************************************************************}

{ Модуль list_template.h }

{ гр. П21 }

{ Разработчик: Лагун Л.В }

{ Модифицирован: 30 апреля 2022 }

{----------------------------------------------------------------------}

{ Модуль реализации функций для работы с однонаправленным списком }

{********************************************************************}*/

template<typename T>

class unidirectional_list

{

private:

struct Element

{

T data;

Element* next;

Element(T* data)

{

this->data = *data;

this->next = nullptr;

}

};

Element* first;

Element* last;

Element* current;

int id;

public:

unidirectional_list()

{

this->create();

}

~unidirectional_list() {

this->destroy();

}

void create()

{

this->first = nullptr;

this->last = nullptr;

this->current = nullptr;

id = -1;

}

void setMaxId(int max_id)

{

this->id = max_id;

}

int get_id()

{

return this->id = this->id + 1;

}

void destroy()

{

while (this->is_empty() == false)

this->del();

}

void Exchange()

{

T tmp;

//Копирование значения текущего элемента в дополнительную

memcpy(&tmp, &this->current->data, sizeof(T));//переменную

//Копирование значения следующего элемента в текущий

memcpy(&this->current->data, &this->current->next->data,

sizeof(T));

//Копирование значения из дополнительной переменной

//в следующий элемент

memcpy(&this->current->next->data, &tmp, sizeof(T));

}

void SortBub(int(*cmp)(const T*, const T*))

{

//Проверка: если в списке нет элементов, то

//сортировать бессмысленно

if (this->first == nullptr)

return;

bool Flag = true; //Флаг продолжения сортировки

while (Flag)

{

//Пока есть неупорядоченные элементы

Flag = false; //Сброс флага продолжения сортировки

//Установка указателя на текущий элемент на

this->current = this->first; //начало списка

//Цикл по всему списку до предпоследнего элемента

while (this->current->next) {

//Проверка условия упорядоченности

if (cmp(&this->current->data, &this->current->next->data) > 0) {

//Если необходима перестановка, то

Exchange(); //Осуществление перестановки

Flag = true; //Установка флага сортировки

//Иначе: переход к следующему элементу по списку

}

else this->current = this->current->next;

}

}

//Установка указателя на текущий элемент на

this->current = this->first; //начало списка

}

bool is_empty()

{

return this->first == nullptr;

}

bool moveHead()

{

if (this->is_empty() == true) return false;

this->current = this->first;

return true;

}

void add(T* data)

{

Element* p = new Element(data);

if (this->is_empty() == true) {

this->first = p;

this->last = p;

return;

}

this->last->next = p;

this->last = p;

this->current = p;

}

bool get(T* data) {

if (this->is_empty() == true) return false;

*data = this->current->data;

return true;

}

bool set(T* value)

{

//Проверка наличия текущего элемента списка

if (this->first == nullptr)return false;

if (this->current == nullptr)

return this->current = this->first;

//Установка нового значения текущего элемента

this->current->data = *value;

return true;

}

bool moveNext() {

if ((this->is_empty() == true) ||

(this->current->next == nullptr))return false;

this->current = this->current->next;

return true;

}

void del()

{

if (this->is_empty() == true)return;

if (this->current == this->first) {

this->first = this->first->next;

delete this->current;

this->current = this->first;

}

else {

Element* ptr = this->first;

while (ptr->next != this->current) // правильно!

ptr = ptr->next;

ptr->next = this->current->next;

delete this->current;

while (ptr->next)

ptr = ptr->next;

this->last = ptr;

this->current = ptr;

}

if (this->first == nullptr)

this->create();

}

void update(T* data, int id)

{

moveHead();

DataType d;

do

{

get(&d);

if (id == d.id)

{

set(data);

break;

}

} while (moveNext() == true);

}

}*/

bool readfilelogin(std::string path)

{

destroy();

create();

std::ifstream in(path);

if (in.is_open() == false) return false;

//moveHead();

T d;

in.clear();

while (in >> d)

add(&d);

}

in.close();

return true;

}

std::string get_string() {

if (this->is_empty() == true) return false;

*data = this->current->data;

this->current->data.to_string();

return true;

}

bool savefilelogin(std::string path)

{

std::ofstream outf;

outf.open(path);

if (this->moveHead() == false) return false;

if (outf.is_open() == false)return false;

do

{

T data;

this->get(&data);

outf << data;

outf.flush();

} while (this->moveNext());

outf.close();

return true;

}

bool load(std::string path)

{

std::ifstream in_file(path);

if (in_file.is_open() == false)

return false;

T data;

while (in_file >> data)

{

this->add(&data);

};

in_file.close();

return true;

}

//АВТОРИЗАЦИЯ

bool authentification(

std::string login,

std::string password,

std::string& user)

{

std::ifstream in("login.txt"); //Открываем файл для чтения

if (in.is_open() == false) return false;

int get_id;

std::string get_login;

std::string get_password;

std::string get_user;

while (in >> get_id &&

in >> get_login &&

in >> get_password &&

in >> get_user)

{

if ((get_login == login) &&

(get_password == password))

{

user = get_user;

in.close();

return true;

}

}

in.close();

return false;

}

bool create_default_user()

{

if (IO::File::Exists("login.txt") == false)

{

std::ofstream off("login.txt"); //Открываем файл для чтения

if (off.is_open() == false) return false;

off << 0 << std::endl << "1" << std::endl << "1" << "Admin" << std::endl;

off << 1 << std::endl << "2" << std::endl << "2" << "Administrator" << std::endl;

off.close();

}

return true;

}

};

Приложение Г

Содержание электронного носителя

На прилагаемом электронном носителе информации расположены следующие директории и файлы:

Директория «DOC» - файл «ПЗ_Лагун_П21.docx» представляет собой текстовый документ с пояснительной запиской.

Директория «PRG» содержит исходный код проекта kursovoy_proeykt.sln;

Директория «EXE» содержит финальную версию исполняемых файлов проекта kursovoy_proyekt.exe.


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

  • Анализ предметной области и разработка структуры информационой системы (ИС) "Кадры". Описание информационных процессов. Разработка структуры БД и структуры ИС. Разработка структуры базы данных и интерфейсов. Реализация и тестирование ИС "Кадры".

    курсовая работа [1,2 M], добавлен 06.01.2008

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

    курсовая работа [926,7 K], добавлен 20.05.2015

  • Создание программы для обработки информации об объектах предметной области "Бытовая техника" в среде визуального программирования C++. Иерархия родственных классов. Описание логической структуры программы. Реализация файлового ввода/вывода данных.

    курсовая работа [711,4 K], добавлен 27.07.2014

  • Проектирование базы данных для информационной системы "Грузоперевозки". Обследование предметной области. Анализ бизнес-процессов, программного и аппаратного обеспечения. Проектирование компонентов приложения и его структуры. Выбор средств реализации.

    курсовая работа [1,6 M], добавлен 21.04.2014

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

    курсовая работа [2,5 M], добавлен 20.11.2013

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

    дипломная работа [2,4 M], добавлен 27.03.2013

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

    дипломная работа [2,3 M], добавлен 06.09.2014

  • Требования к составу и параметрам технических средств. Инфологическая (концептуальная) модель предметной области. Физическая и логическая модель базы данных. Создание структуры БД в СУБД MS ACCESS. Программирование приложения. Описание работы с системой.

    курсовая работа [572,2 K], добавлен 17.11.2014

  • Анализ предметной области разрабатываемого программного продукта. Разработка интерфейса пользователя и структурной схемы игровой программы "Крестики-нолики". Отладка и тестирование. Проведение исследования компонентов программной среды Borland Delphi 6.0.

    курсовая работа [660,4 K], добавлен 08.03.2015

  • Анализ предметной области. Обзор программ-аналогов. Рассмотрение средств решения поставленной задачи. Проектирование структуры программы и базовых алгоритмов. Изучение руководства программиста и пользователя. Проектирование структуры базы данных.

    курсовая работа [1,0 M], добавлен 14.11.2017

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