Главная » Все файлы » Просмотр файлов из архивов » Документы » Методические указания ЛР 12(ТЗ)

Методические указания ЛР 12(ТЗ) (Методические указания к лабораторным работам), страница 3

2018-01-11СтудИзба

Описание файла

Файл "Методические указания ЛР 12(ТЗ)" внутри архива находится в следующих папках: Методические указания к лабораторным работам, ЛР_12_КЛР_ПКШ. Документ из архива "Методические указания к лабораторным работам", который расположен в категории "". Всё это находится в предмете "программирование на основе классов и шаблонов" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "программирование на основе классов и шаблонов" в общих файлах.

Онлайн просмотр документа "Методические указания ЛР 12(ТЗ)"

Текст 3 страницы из документа "Методические указания ЛР 12(ТЗ)"

#include "DZ_Street_215.h"

#include <iostream>

using namespace std;

void main(void)

{ … }

  • Для контроля правильности создания пустого проекта, нажмем клавишу “F7” для проверки создания программы (build) и “F5” для проверки ее выполнения (run/debug). Все перечисленные действия должны быть выполнены безошибочно.

  • Перечень модулей для создания проекта ДЗ можно уточнить в документе “ Методические указания для выполнения ДЗ/КЛР по дисциплине Программирование на основе классов и шаблонов кафедры ИУ5”, он размещен на сайте дисциплины. Нужно проработать разделы 5, 6 и 7.

29 Обеспечить русификацию консольного ввода и вывода.

Для корректного отображения текстов на русском языке и его ввода в окне командной строки (после первого запуска программы) нужно сделать настройки шрифта этого окна. Переключаем шрифт в тип - Lucida Console. Выбираем настройки (после вывода консольного окна на экран, правой кнопкой вызываем системное меню): СВОЙСВА->ШРИФТ -> Lucida Console). После переключения шрифта, на запрос в отдельном окошке нужно выбрать режим – “Для всех окон с данным именем!”. Для правильной русификации окна консоли, кроме этого, в самом начале главной программы нужно переключить кодовую страницу для вывода:

system(" chcp 1251 > nul");

Для приостановки завершения программы в консольном окне в конце ее работы можно вызвать паузу следующим образом (например, в конце текста программы):

system(" PAUSE");

На экране появиться следующая строка (смотри ниже) и программа будет ожидать нажатия клавиши:

Для продолжения нажмите любую клавишу . . .

Обратите внимание на то, что при другом способе локализации (setlocale(0,"rus");) не все работает правильно. Вывод на консоль и ввод с консоли выполняется правильно, но после этого введенные в консольном окне данные (например, строка) имеют другую кодировку и выводятся неверно! Можете сами это проверить. Поэтому предпочтительно использовать предложенный выше способ с переключением кодовой страницы.

Примечание. Если вы затрудняетесь выполнить заданный пункт ЛР, обратитесь к разделу “Основные понятия”, где приведены примеры для иллюстрации данного пункта.

Примечание. Все описания классов и шаблонов выполнять в заголовочном файле (у нас в примере DZ_Street_215.H). Описания объектов и вызов методов в основном файле: DZ_XXXXX_ХDD.CPP (DZ_Street_215.CPP).

30 Провести макетирование системы классов.

Первоначально нужно описать в DZ_XXXXX_ХDD.H базовый абстрактный класс (см. ниже). Напомним, что здесь создается только макет. Окончательное содержание классов и их структура может отличаться от первоначальной структуры.

// Файл - DZ_XXXXX_ХDD.H

include "stdafx.h"

#include <iostream>

using namespace std;

// Абстрактный класс для дома

class AbstrHome : public CObject {

public:

virtual int classType() = 0;

virtual char *className() = 0;

virtual void printOn(ostream &) = 0;

AbstrHome(){ name = (char *)NULL;

no = NULL;};

~AbstrHome(){

if( name != (char *)NULL)

delete [] name;

};

char *name; // ? Резерв Поисковое имя

int no; // ? РезервНомер в списке

};

Далее в скелетную структуру классов (структура с наследованием, названиями классов, но без наполнения) добавим описание классов Street и Home:

//////////////////////

//// Класс домов

//////////////////////

class Home: public AbstrHome {

// Конструкторы

public:

Home();

Home( Home & H) ;

Home( Home * pH);

Home(const char *HomName, const char *Number);

Home(const char *HomName, const char *Number, int Numb) ;

Home(const char *HomName, const char *Number, int Numb,

int Etag, int Men=0,HomeType Type = fast,int Apart=0);

// Деструктор

~Home();

//Оператор присваивания для поддержки перегрузки "+"

Home operator =(Home & H );

// Виртуальные методы

public:

virtual int classType() { return HomeClass; }

virtual char *className() { return "Home"; }

virtual void printOn(ostream & out);

// Методы класса Home

void setName(const char *HomName , const char *Number=NULL);

const char *getName() { return (const char *)name; };

const char *getNumb() { return (const char *)Home_Number; };

int getNo() { return no; };

void getParam(int & iH, int & Etag ,int & Men ,HomeType & Type, int & Apart )

{iH = iHome; Etag = EtagCount; Men = MenCount;

Type = TypeHome; Apart = NumbApartament ; };

void setParam(int iH, int Etag ,int Men ,HomeType Type, int Apart )

{ iHome= iH; EtagCount= Etag; MenCount= Men;

TypeHome = Type; NumbApartament = Apart; };

void setAllParam(const char *HomName , const char *Number, int iH, int Etag ,

int Men ,HomeType Type, int Apart , BOOL rem = false);

// Дружественная функция для перегрузки

friend Home & operator +(Home & H1 , Home & H2);

// Свойства класса Home

public:

char *Home_Number; // Символьный номер дома

int iHome; // Номер дома числовой

int EtagCount; // Число этажей

int MenCount ; // Число жителей в доме

HomeType TypeHome ; // Тип дома

BOOL HomeRemont ; // Требуется ли ремонт дома

int NumbApartament; // Число квартир// …

};

//////////////////////

Описание класса Street, можно посмотреть в [6]. На первом этапе создания ТЗ не просто создать полный перечень возможных свойств и методов классов. Первоначально можно их задать в виде комментариев с последующей детализацией. В нашем проекте, в главном модуле проверим описание объектов новых классов: Home и Street. Например, в главной программе (DZ_XXXXX_ХDD.CPP) запишем:

system(" chcp 1251 > nul");

// Описание дома

Home H1;

// Описание улицы

Street S1;

system(" PAUSE");

Теперь можно первоначально компилировать программы проекта и проверить сборку.

31 Использование шаблона документа ТЗ

В конце данных МУ к ЛР№12 приведен шаблон документа ТЗ. Нужно загрузить шаблон документа и внести необходимые изменения для идентификации студента, группы и индивидуального задания студента по вариантам. Места для изменений помечены красным цветом, а методические указания к его оформлению – синим цветом.

32 Разработать разделы документа: Наименование, назначение и исполнитель.

Внимательно проработать разделы документа: наименование, назначение и исполнитель. Методические указания по оформлению этих разделов даны в шаблоне. Шифр каждого проекта у студентов должен быть индивидуальным. Особое внимание обратите на раздел “Назначение”. В этом разделе необходимо проявить все свои знания и “пофантазировать” (спроектировать), придумать назначение и области применения вашей системы классов. Не пугайтесь ничего, этот текст потом изменить можно с полученной новой информацией, при окончательной сдаче ДЗ.

33 Разработать раздел документа: Функциональные требования.

Раздел ТЗ функциональные требования (или требования к функциональным характеристикам) при создании ТЗ является самым трудоемким. Необходимо представить какими свойствами и методами должны обладать проектируемые вами классы. Для удобства не закрывайте ваш проект в VS. После осмысления вашего задания изучения материалов примеров из методических указаний и примеров текстов программ (найдете на сайте в разделе ДЗ), вы можете в виде комментариев добавить в проект содержательные названия свойств и методов ваших новых классов. Далее сформулируйте эти названия свойств и методов в виде технических функциональных требований этого раздела ТЗ. Повторю, здесь не нужно приводить латинские идентификаторы (Street и Home), а нужно использовать названия на содержательном уровне (улицы и дома). Например, сформулированные требования могут быть такими (более детально см. образец ТЗ):

5.1.5 Обеспечить операцию сложения двух улиц.

5.1.9 Учесть свойство названия улицы и возможность ее переименования

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

34 Прочитать и разработать раздел документа образец: Требования к ПД.

Необходимо прочитать в образце и шаблоне ТЗ раздел требования к ПД. Проверить в своем документе ТЗ правильность его оформления.

35 Прочитать и разработать раздел документа образец: Стадии и этапы разработки.

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

36 Прочитать и разработать раздел документа образец: Порядок приема и контроля.

Необходимо прочитать в образце и шаблоне ТЗ раздел: “Порядок приема и контроля”. Проверить в своем документе ТЗ правильность его оформления.

37 Построить предварительную диаграмму классов для ДЗ.

Необходимо построить предварительную диаграмму классов ДЗ. Пример такой диаграммы смотрите ниже.

38 Дополнительные требования для сильных студентов

Для сильных студентов предлагаются дополнительные требования при выполнении ЛР №12 и ДЗ/КЛР. Эти требования могут быть выполнены в любой последовательности и в любом объеме. На титульном листе отчета по ЛР необходимо указать, что дополнительные требования выполнены. Нужно выбрать один из вариантов с дополнительными требованиями (31-36), согласовав свой выбор с преподавателем. Нужно учесть специальные дополнительные требования (по группам), приведенные в разделе вариантов для сильных студентов.

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

39 Варианты по группам и студентам

Ниже приведены примерные варианты тем заданий для выполнения комплексной лабораторной работы (КЛР) или домашнего задания (ДЗ) по дисциплине “Программирование на основе классов и шаблонов”. Номера тем заданий соответствуют номерам студента по журналу группы на текущий семестр. Номера вариантов заданий меняются ежегодно, поэтому уточнить тему заданий можно в специальном документе, доступном оперативно студентам на сайте дисциплины: www.sergebolshakov.ru.

Номер варианта

Тема задания

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

Класс факультетов и кафедр факультета, предусмотреть операции слияния/разделения кафедр и факультетов, перевода кафедр с одного факультета в другой.

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

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

Класс файлов и класс каталогов файлов, предусмотреть поиск по имени файла. Предусмотреть операции перемещения файлов, их добавления и удаления, поиска, переименования, сравнения и объединения каталогов и т.д.

Класс словарей (русско-английских) и класс гнезд словарей (ячеек словарей), предусмотреть поиск и сортировку. Объединение словарей и разделение по алфавитному принципу и т.д.

Класс множеств объектов и класс их элементов, предусмотреть весь известный из теории набор операций над множествами: объединение, вычитание, пересечение и др. Операции из дискретной математики.

Класс групп студентов и класс студентов, предусмотреть операции слияния/разделения групп и редактирование всех видов объектов

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

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

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

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

Класс стеллажей книг в библиотеке и класс книг. Предусмотреть объединение разделение стеллажей, добавление и удаление книг.

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

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

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

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

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

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

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

Классы заголовков текста в документах и классы документов. Предусмотреть возможности объединения документов. Документа на экран не выводятся. В заголовках должна быть указана позиция расположения в документах, они могут иметь многоуровневый вид (не менее 3-х уровней заголовков).

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

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

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

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

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

Класс векторов и класс их списков (двумерные вектора), предусмотреть операции над векторами и списками векторов (сложение и т.д. из математики)

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

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

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

  1. (Д.т.)

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

  1. (Д.т.)

Классы таблиц (строки и столбцы – произвольной размера) и их содержимого в виде текстовых ячеек. Операции объединения текста в ячейках, добавление текста, обмена ячейками и т.д.

  1. (Д.т.)

Классы векторов и классы массивов векторов (трехмерные вектора) предусмотреть операции над векторами и массивами векторов (сложение и т.д. из математики)

  1. (Д.т.)

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

  1. (Д.т.)

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

  1. (Д.т.)

Класс баз данных и класс таблиц баз данных (реляционная таблица). Предусмотреть класс связей между таблицами.

Примечание: Для того чтобы задания каждого студента были индивидуальными введены специальные требования для каждой из групп ( 2014/2015 учебный год):

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5160
Авторов
на СтудИзбе
439
Средний доход
с одного платного файла
Обучение Подробнее