Курсовая работа

Создание программных модулей. 16 вариант

Категория:

Курсовая работа

Дисциплина:

Архитектура и реализация операционных систем

Город:

Беларусь, Минск

Учебное заведение:

БНТУ, ФИТР

Стоимость работы:

30 руб.

Оценка: 10
Объем страниц: 39
Год сдачи: 2021
Дата публикации: 07.05.2021

* Кроме файла с работой, также есть архив с дополнительными файлами.

Описание дополнительных файлов:

statusword.cpp - модуль, демонстрирующий битовые операции на примере распаковки и упаковки слова состояния аппаратуры;
maths.cpp – модуль математических вычислений;
pass_check.cpp - независимый модуль проверки пароля на запуск продукта;
encryption.cpp - модуль шифрования и дешифровки;
sorting.cpp - модуль сортировки массива чисел;
kursovaya.cpp – модуль селектора

Фрагменты для ознакомления

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К КУРСОВОЙ РАБОТЕ

По дисциплине «Архитектура и реализация операционных систем»

 

Создание программных модулей

Вариант 16

 

Содержание

 

Введение. 3

1.    Структура программы.. 4

2.    Структура программных модулей. 5

2.1     Модуль математических вычислений. 5

2.2     Модуль проверки пароля. 9

2.3     Модуль сортировки массива чисел. 11

2.4     Модуль шифрования и дешифровки. 20

2.5     Модуль распаковки и упаковки слова состояния аппаратуры.. 27

2.6     Модуль селектора. 32

Заключение. 37

Список использованной литературы.. 38

Приложение. 39

 

Введение

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

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

1. Структура программы

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

Функциональные модули программы реализованы в следующих файлах:

  1. statusword.cpp - модуль, демонстрирующий битовые операции на примере распаковки и упаковки слова состояния аппаратуры;
  2. maths.cpp – модуль математических вычислений;
  3. pass_check.cpp - независимый модуль проверки пароля на запуск продукта;
  4. encryption.cpp - модуль шифрования и дешифровки;
  5. sorting.cpp - модуль сортировки массива чисел;
  6. kursovaya.cpp – модуль селектора;

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

 

2. Структура программных модулей

2.1 Модуль математических вычислений

Модуль представлен в maths.cpp.

Задание: cоставьте программу, которая подсчитывает и выводит значение t1 и t2 по формулам, которые приведены в Вашем варианте индивидуального задания. Определите области допустимых значений параметров формул и задайте произвольные значения из этих областей. Параметры, которые имеют имена: n и m - целые, остальные параметры - с плавающей точкой. Значения параметров с именами x и y должны вводиться с клавиатуры, значения остальных - задаваться как начальные значения при объявлении соответствующих переменных.      Допускается (и даже желательно) упростить / разложить формулы для того, чтобы обеспечить минимизацию объема вычислений.

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

Рисунок 1- Задание для математического модуля

2.2 Модуль проверки пароля

Данный модуль находится в файле pass_check.cpp. В этом модуле запрашивается у пользователя пароль, шифрованный (методом XOR) вид которого находится в коде программы, для защиты данных от других пользователей и попыток взлома. Пароль представлен в двух видах: для пользователя и для администратора. Если ведённый пароль и его зашифрованный вид совпадают, то открывается селектор в котором уже можно выбирать необходимый модуль.

2.3 Модуль сортировки массива чисел

Модуль сортировки реализован в файле sorting.cpp.

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

 В данной работе приведены 4 алгоритма сортировок:

  1. методом пузырька;
  2. метод «QuickSort»;
  3. методом выбора;
  4. методом вставки.

Алгоритм сортировки методом пузырька:

Алгоритм сортировки пузырьком сводится к повторению проходов по элементам сортируемого массива. Проход по элементам массива выполняет внутренний цикл. За каждый проход сравниваются два соседних элемента, и, если порядок неверный элементы меняются местами. Внешний цикл будет работать до тех пор, пока массив не будет отсортирован. Таким образом внешний цикл контролирует количество срабатываний внутреннего цикла. Когда при очередном проходе по элементам массива не будет совершено ни одной перестановки, то массив будет считаться отсортированным [2].

Алгоритм сортировки методом вставки:

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

Алгоритм сортировки методом «QuickSort»:

В начале выбирается “опорный” элемент массива. Это может быть любое число, но от выбора этого элемента сильно зависит эффективность алгоритма. Если нам известна медиана, то лучше выбирать элемент, который как можно ближе к медиане. В нашей реализации алгоритма, мы будем брать самый левый элемент, который в результате займет свое место. Элементы в массиве делятся на две части: слева те, кто меньше опорного элемента, справа те, кто больше. Таким образом опорный элемент занимает свое место и больше никуда не двигается. Для левого и правого массива действия повторяются рекурсивно [2].

Алгоритм сортировки методом выбора:

В исходном массиве находим минимальный элемент, меняем его местами с первым элементом массива. Уже, из всех элементов массива один элемент стоит на своём месте. Теперь будем рассматривать не отсортированную часть массива, то есть все элементы массива, кроме первого. В неотсортированной части массива опять ищем минимальный элемент. Найденный минимальный элемент меняем местами со вторым элементом массива и т. д. Таким образом, суть алгоритма сортировки выбором сводится к многократному поиску минимального (максимального) элементов в неотсортированной части массива [2].

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

2.4 Модуль шифрования и дешифровки

Данный модуль был реализован в файле encryption.cpp. В этом модуле были рассмотрены такие виды шифрования как XOR шифрование и шифрование перестановкой. 

XOR шифрование:

Основная идея алгоритма состоит в том, что если у нас есть некая величина, есть некий шифровальный ключ (другая величина), то можно зашифровать исходные данные через этот ключ, применив операцию XORпобитно. На рисунке 18 представлен результат XOR шифрования [5].

Шифрование перестановкой:

Шифр перестановки — это метод симметричного шифрования, в котором элементы исходного открытого текста меняют местами. Элементами текста могут быть отдельные символы (самый распространённый случай), пары букв, тройки букв, комбинирование этих случаев и так далее [4]. Типичными примерами перестановки являются анаграммы. В классической криптографии шифры перестановки можно разделить на два класса:

Шифры одинарной (простой) перестановки — при шифровании символы открытого текста перемещаются с исходных позиций в новые один раз.

Шифры множественной (сложной) перестановки — при шифровании символы открытого текста перемещаются с исходных позиций в новые несколько раз [5].

2.5 Модуль распаковки и упаковки слова состояния аппаратуры

Модуль распаковки и упаковки слова состояния аппаратуры реализован в файле statusword.cpp. Также был выполнен анализ/синтез слова состояния в динамической форме. Результаты работы представлены на рисунках 29 и 30 соответственно.

2.6 Модуль селектора

Модуль реализован в файле kursovaya.cpp. Этот модуль вызывает меню в котором представлены все модули, используемые данной программой.

 

Заключение

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

  1. основной модуль в виде селектора в отдельном исходном файле программного проекта;
  2. независимый модуль проверки пароля на запуск продукта;
  3. модуль сортировки массива чисел, размер которого определяется в процессе выполнения продукта, а окончательный размер определяется динамически. Составные элементы массива вводится пользователем с консоли;
  4. модуль шифрования и дешифровки (вариант определяется через параметры командной строки) по одному из алгоритмов: 1. перестановки, 2. XOR шифр;
  5. модуль математических вычислений;
  6. модуль, демонстрирующий битовые операции на примере распаковки и упаковки слова состояния аппаратуры. Элементы машинного слова, а также его отдельные составные части должны запрашиваться у пользователя.

 

Список использованной литературы

  1. Пахомов, Б. C/C++ и MS Visual C++ 2010 для начинающих / Б. Пахомов. - М.: БХВ-Петербург, 2011. - 736 c.
  2. Пахомов, Борис C/C++ и MS Visual C++ 2012 для начинающих / Борис Пахомов. - Москва: СИНТЕГ, 2015. - 518 c.
  3. Пахомов, Борис С/С++ и MS Visual C++ 2012 для начинающих / Борис Пахомов. - М.: "БХВ-Петербург", 2013. - 502 c.
  4. Полубенцева, М. C/C++. Процедурное программирование / М. Полубенцева. - М.: БХВ-Петербург, 2014. - 448 c.
  5. Зиборов, В. MS Visual C++ 2010 в среде .NET / В. Зиборов. - М.: Питер, 2012. - 320 c.
68