Создан заказ №1542766
3 декабря 2016
С++
Как заказчик описал требования к работе:
Лабораторная работа #1
Максимально возможный балл: 10
Реализовать простейшую картотеку в виде консольного приложения. Программа включает:
1. Класс, описывающий элемент картотеки (студент, служащий, товар и т.п.). Содержит атрибуты, описывающие элемент (имя, возраст и т.п.) и 4 функции, позволяющие
:
- считать атрибуты объекта с консоли (cin);
- вывести атрибуты на экран (cout);
- считать атрибуты объекта из файлового потока (получаемого в качестве параметра, имеющего тип ifstream&);
- вывести атрибуты в файловый поток (параметр, имеющий тип ofstream&).
2. Контейнерный класс (группа, компания, склад и т.п.), содержащий:
- контейнер (вектор либо список) указателей на класс-элемент;
- функцию добавления элемента;
- функцию вывода списка на экран;
- функцию чтения списка из файлового потока;
- функцию записи списка в файловый поток;
- функцию очистки списка.
3. Функцию main, выводящую и обрабатывающую текстовое меню, которое позволяет воспользоваться всеми функциями, экспортируемыми контейнерным классом.
Лабораторная работа #2
Максимально возможный балл: 5
Реализовать консольное приложение, включающее два класса, базовый и потомок. В базовом классе объявить простую и виртуальную функцию, в производном их перегрузить. Содержание функций - вывод на экран сообщения вида "простая/виртуальная функция базового/производного класса".
Описать 4 указателя:
- указатель на базовый класс, которому присвоен объект базового класса;
- указатель на производный класс, которому присвоен объект производного класса;
- указатель на базовый класс, которому присвоен объект из второго указателя;
- указатель на производный класс, которому с использованием статической операции приведения типа присвоен объект из третьего указателя.
С помощью каждого из указателей вызвать обе функции, после чего на защите работы объяснить результат.
Работа отправляется на проверку с помощью кафедральных репозитариев в github:
https://github.com/asugubkin/AS.1404.OOPP.2 - группа АС-14-04
https://github.com/asugubkin/AS.1405.OOPP.2 - группа АС-14-05
Перед синхронизацией с репозитарием в общем каталоге создается подкаталог со своим номером по журналу (01, 02,...), в него копируются файлы проекта.
Лабораторная работа #3
Максимально возможный балл: 10
Добавить в приложение из первой лабораторной работы класс-потомок элемента (староста, менеджер и т.п.), содержащий несколько дополнительных полей.
В главное меню вставить пункт, позволяющий добавить объект производного класса, хранение этих объектов осуществлять в том же контейнере, в котором хранятся объекты базового класса.
Преобразовать функции консольного ввода-вывода в виртуальные, ввод-вывод в файл реализовать с помощью механизма сериализации MFC.
Обязательное условие: использование "умных" указателей (shared_ptr) в качестве элементов контейнера.
Лабораторная работа #4
Максимально возможный балл: 10
Преобразовать приложение из третьей лабораторной работы в оконное приложение, использующее модель Document/View библиотеки MFC.
Включить контейнерный объект в класс-потомок CDocument, вставив вызовы его функций в функции, осуществляющие ввод-вывод в файл и очистку.
Реализовать в прикладных классах функции для вывода информации на CDC и подсчета размера выводимого текстового блока, вставить их вызовы в функции класса-потомка CView, осуществляющие вывод на экран и задание размеров скроллинга.
Обязательное условие: перебор элементов в контейнере осуществляется с помощью алгоритма for_each и функции bind.
Лабораторная работа #5
Максимально возможный балл: 10
Добавить в приложение из четвертой лабораторной работы диалог редактирования списка элементов, вызываемый с помощью отдельного пункта меню и/или кнопки.
Обязательное условие: перебор элементов в контейнере осуществляется с помощью алгоритма for_each и лямбда-функций.
Распределение по вариантам.
Вариант 1 (нечетные номера по списку)
Диалог включает:
- список (listbox), содержащий имена/названия элементов, хранящихся в контейнерном классе;
- защищенные от записи текстовые поля ввода, по одному на каждый атрибут классов-элементов;
- кнопки для добавления, удаления, редактирования элементов и кнопка закрытия диалога.
При выборе пользователем элемента в списке поля ввода заполняются информацией из атрибутов выбранного элемента. При выборе объекта базового типа поля, относящиеся к производному, скрываются.
Кнопка добавления вызывает диалог добавления, позволяющего выбрать тип вводимого элемента и заполнить его атрибуты. Выбор между типами возможен с помощью check box, radio button (в обоих случаях при выборе базового типа поля, относящиеся к производному, скрываются), tab control (поля, относящиеся к производному, вынесены на отдельную закладку). Допустимо использование в главном диалоге двух кнопок добавления, класс диалога добавления в любом случае только один. После добавления элемента он добавляется в конец списка и выбирается.
Кнопка удаления удаляет выбранный элемент. При наличии в списке других элементов выбор перемещается на элемент с тем же индексом, что и удаленный (либо предыдущий, если удалялся последний элемент списка).
Кнопка редактирования вызывает диалог добавления, поля которого заполняются информацией из атрибутов выбранного элемента. После завершения редактирования основной диалог обновляется (включая список и поля ввода), измененный элемент остается выбранным.
После нажатия кнопки закрытия диалога главное окно приложения перерисовывается.
Вариант 2 (четные номера по списку)
Диалог включает:
- список (listbox), содержащий имена/названия элементов, хранящихся в контейнерном классе;
- текстовые поля ввода, по одному на каждый атрибут классов-элементов;
- кнопки для добавления (две) и удаления элементов и кнопка закрытия диалога.
При выборе пользователем элемента в списке поля ввода заполняются информацией из атрибутов выбранного элемента. При выборе объекта базового типа поля, относящиеся к производному, скрываются.
Поля ввода позволяют отредактировать информацию о выбранном элементе непосредственно в главном диалоге. При редактировании имени обновляется содержимое списка.
Кнопки добавления (базового либо производного класса) добавляют соответствующий объект в конец списка и выбирают его с тем, чтобы стало возможным немедленное редактирование в полях ввода.
Кнопка удаления удаляет выбранный элемент. При наличии в списке других элементов выбор перемещается на элемент с тем же индексом, что и удаленный (либо предыдущий, если удалялся последний элемент списка).
После нажатия кнопки закрытия диалога главное окно приложения перерисовывается.
Лабораторная работа #1
Максимально возможный балл: 10
Написать консольное приложение, реализующее один из простейших методов шифрования/дешифрования произвольного файла с использованием ключа (пароля) - на основе посимвольного xor, подстановки по нескольким алфавитам и т.п. В вырожденном случае с использованием односимвольного ключа алгоритм сводится к одноалфавитной подстановке.
Требования к реализации: в качестве кодируемого материала используется файл неограниченной длины; предпочтительно задание имен входных/выходных файлов и пароля в командной строке.
сопоставления результатов частотного анализа для закодированного текста и эталона проводится первичное декодирование, частично декодированный текст отображается в окне приложения. В дальнейшем приложение предоставляет пользователю интерфейс для ручной замены отдельных символов, постоянно отображая при этом в окне процесс декодирования.
Требования к реализации: возможность загрузки произвольных исходных и эталонных текстов; сохранение результата в произвольный файл; возможность перехода к другим зашифрованным текстам и эталонам без завершения приложения.
Вариант считывания всего файла в вектор:
vector v((istreambuf_iterator(ifstream(FileName, ios::binary))), istreambuf_iterator());
Лабораторная работа #3
Максимально возможный балл: 15
Написать консольное либо диалоговое приложение, реализующее шифрование по открытому ключу с использованием алгоритма RSA. Допустимо как использование библиотеки CryptoAPI, так и самостоятельная реализация алгоритма RSA с использованием одной из библиотек для работы с большими числами (Arageli, MPIR, NTL и т.п.).
Требования к реализации: возможность генерации пары открытый/закрытый ключ с последующим их сохранением в файлы; возможность указания соответствующего ключа в операциях кодирования/декодирования.
Фамилия у меня Филатов, группа АС-14-5, это если понадобится
Нужно чтобы было как можно больше закомменченого, чтобы я понял как всё происходи
подробнее
Заказчик
заплатил
заплатил
200 ₽
Заказчик не использовал рассрочку
Гарантия сервиса
Автор24
Автор24
20 дней
Заказчик принял работу без использования гарантии
4 декабря 2016
Заказ завершен, заказчик получил финальный файл с работой
5
С++.jpg
2020-09-09 03:54
Последний отзыв студента о бирже Автор24
Общая оценка
4
Положительно
Автор исполняет всё добросовестно и в срок. Консультирует по вопросам заказа. Всегда на связи. Рекомендую, как ответственного исполнителя.