Файл: Курсовое проектирование.pdf

ВУЗ: Не указан

Категория: Реферат

Дисциплина: Не указана

Добавлен: 04.12.2023

Просмотров: 105

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Министерство образования Республики Беларусь
Учреждение образования
«Белорусский государственный университет информатики и радиоэлектроники»
Факультет компьютерного проектирования
Кафедра инженерной психологии и эргономики
М. М. Меженная
ОСНОВЫ КОНСТРУИРОВАНИЯ ПРОГРАММ.
КУРСОВОЕ ПРОЕКТИРОВАНИЕ
Рекомендовано УМО по образованию
в области информатики и радиоэлектроники для специальностей
1-40 05 01 «Информационные системы и технологии (по направлениям)»,
1-58 01 01 «Инженерно-психологическое обеспечение
информационных технологий»
в качестве пособия
Минск БГУИР 2019

УДК 004.42(076)
ББК 32.973.3я73
М43
Рецензенты: кафедра интеллектуальных систем
Белорусского национального технического университета
(протокол №5 от 04.12.2018); старший научный сотрудник лаборатории логического проектирования государственного научного учреждения «Объединенный институт проблем информатики Национальной академии наук Беларуси», кандидат технических наук С. Н. Кардаш
Меженная, М. М.
Основы конструирования программ. Курсовое проектирование :
М43 пособие / М. М. Меженная. – Минск : БГУИР, 2019. – 80 с. : ил.
ISBN 978-985-543-507-6.
Пособие посвящено рассмотрению вопросов конструирования и реализации ком- пьютерных программ на языке С++ в рамках процедурной парадигмы. Содержит методи- ческие указания к выполнению курсовой работы.
УДК 004.42(076)
ББК 32.973.3я73
© Меженная М. М., 2019
ISBN 978-985-543-507-6 © УО «Белорусский государственный университет информатики и радиоэлектроники», 2019

3
Содержание
Введение ........................................................................................................................ 4 1 Цель и задачи курсовой работы, требования к ее выполнению .............................. 5 1.1 Исходные данные ................................................................................................ 5 1.2 Функциональные требования ............................................................................. 6 1.3 Требования к программной реализации .......................................................... 10 2 Структура и описание разделов пояснительной записки ...................................... 12 3 Порядок защиты и критерии оценки курсовой работы ......................................... 16 4 Рекомендации по проектированию программы ..................................................... 18 4.1
Принципы и уровни проектирования программы в курсовой работе ............ 18 4.2
Способы организации работы по чтению/записи в файл ............................... 20 4.3
Принципы организации работы с массивами и векторами............................. 21 4.4
Минимизация области видимости переменных .............................................. 27 4.5
Разделение программы на независимые cpp-файлы и их подключение с помощью заголовочных h-файлов ................................................................ 28 5 Рекомендации по разработке алгоритмов работы программы .............................. 32 6 Рекомендации по программированию курсовой работы ....................................... 45 6.1 Типичные ошибки начинающих при написании кода. Способы отслеживания и устранения ошибок. Создание exe-файла проекта .............. 45 6.2 Структуры. Запись и чтение из файла ............................................................. 48 6.3 Перевыделение памяти с целью увеличения размера динамически созданного массива ........................................................................................... 60 6.4
Проверка корректности вводимых данных ..................................................... 62 6.5
Определение текущей даты и времени ............................................................ 65
ПРИЛОЖЕНИЕ А Задания для курсовой работы .................................................... 69
ПРИЛОЖЕНИЕ Б Образец титульного листа курсовой работы ............................. 79
Список использованных источников......................................................................... 80


4
Введение
Настоящее пособие представляет собой методические указания к выполне- нию курсовой работы по дисциплине «Основы конструирования программ».
Курсовая работа ориентирована на студентов, изучающих С++, и направлена на формирование базового навыка – умения программировать в процедурной па- радигме. Это в свою очередь создаст фундамент для перехода в будущем к объ- ектно-ориентированному программированию.
В пособии подробно изложены цель и задачи курсовой работы, требования к ее выполнению, содержание пояснительной записки, порядок защиты и критерии оценки курсовой работы. В приложении к данному пособию приведены варианты заданий для курсовой работы.
Особое внимание уделено процессам проектирования программ, принципам организации работы с файлами, массивами, векторами. Подробно раскрыта тема разработки алгоритмов; рассмотрены примеры кода для реализации отдельных функциональных задач курсовой работы. Многочисленные рекомендации и при- меры, содержащиеся в настоящем пособии, сформированы по результатам анализа типичных ошибок и проблем, возникающих у студентов в процессе выполнения курсовой работы.
Для визуального выделения информационных блоков с различной смысло- вой нагрузкой в пособии используются следующие условные обозначения.
Важно: информация, требующая особого внимания. В основу информа- ции данного блока положены принципиально важные аспекты курсовой работы, а также предостережения ввиду часто возникающих ошибок.
Рекомендуется: полезные советы и инструменты, поясняющие или су- щественно облегчающие процесс работы над курсовой, а также способ- ствующие созданию качественных программ.
Дополнительно: предложения по расширению функциональных воз- можностей курсовой работы, зачастую предусматривающие самостоя- тельное изучение материала для их реализации.

5
1 Цель и задачи курсовой работы, требования к ее выполнению
Целью курсовой работы является получение студентами теоретических зна- ний и практических навыков по конструированию и реализации программ на язы- ке С++ в рамках процедурной парадигмы.
На уровне конструирования задачей курсовой работы является освоение тех- нологии нисходящего проектирования и принципов методологии структурного программирования. Результат этапа конструирования представляется в форме графических блок-схем алгоритмов.
На уровне программирования задачей курсовой работы является реализация графических блок-схем алгоритмов на языке С++ с соблюдением правил соглаше- ния о коде (С++ Code Convention). Результат этапа программирования представля- ется в форме проекта в среде разработки приложений на языке С++ (например,
Microsoft Visual Studio).
1.1 Исходные данные
1. Тема курсовой работы выбирается из списка, приведенного в приложении А.
2. Язык программирования С++.
––
3. Среда разработки Microsoft Visual Studio.
4. Вид приложения – консольное.
––
5. Парадигма программирования – процедурная (по согласованию с препода-
вателем
допускается
реализация
программы
в
рамках
объектно-
ориентированной парадигмы программирования).
6. Способ организации данных – структуры (struct) (либо поля классов в слу-
чае объектно-ориентированного программирования).
7. Способ хранения данных – файлы (по согласованию с преподавателем до-
пускается подключение баз данных).
8. Каждая логически завершенная подзадача программы должна быть реали- зована в виде отдельной функции (метода в случае объектно-ориентированного
программирования).
9. Построение программного кода должно соответствовать соглашению о коде «С++ Code Convention».
10. К защите курсовой работы представляются: консольное приложение и по- яснительная записка.


6 11. Текст пояснительной записки оформляется в соответствии со стандартом предприятия
СТП 01–2017.
Важно: код курсовой работы должен быть уникальным. Об уникально- сти отдельно взятой курсовой работы свидетельствуют соответствующие тематике имена переменных, констант, функций; комментарии в коде; проработка исключительных ситуаций; реализация дополнительных функциональных возможностей.
Допускается использовать классы string и vector, библиотеку algorithm.
Для защиты курсовой работы необходимо представить распечатанную пояс- нительную записку с листингом кода и продемонстрировать работу программы.
Рекомендуется: делать резервные копии своей программы на случай внезапной неисправности персонального компьютера. Используйте об- лачные технологии или внешние носители для резервного хранения ин- формации.
1.2 Функциональные требования
Первым этапом работы программы является авторизация – предостав-
ление прав доступа.
В рамках данного этапа необходимо считать данные из файла с учетными за- писями пользователей следующего вида:

login;

password;

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

в качестве администратора (в этом случае, например, role = 1);

в качестве пользователя (в этом случае, например, role = 0).
Важно: если файл с учетными записями пользователей не существует, то необходимо программно создать его и записать учетные данные админи- стратора.

7
Дополнительно: по соображениям безопасности в форме авторизации целесообразно маскировать пароль с помощью символов «звездочки» *.
Регистрация новых пользователей осуществляется администратором в режиме работы с учетными записями пользователей (т. е. администратор сам со- здает для пользователей аккаунты).
Рекомендуется: выполнять проверку новых учетных записей на уни- кальность логина.
Дополнительно: в курсовой работе можно реализовать еще один – аль- тернативный – способ регистрации, а именно регистрациюсамим поль- зователемпутемввода желаемых логина и пароля и ожидания подтвер- ждения администратором новой учетной записи. Для реализации этого способа в структуре учетных записей пользователей необходимо преду- смотреть дополнительное поле access:

login;

password;

role;

access (данное поле служит для подтверждения или блокировки адми- нистратором учетных записей).
По умолчанию access = 0 при попытке зарегистрироваться; далее адми- нистратор меняет значение на access = 1 и тем самым подтверждает но- вую учетную запись: пользователь может осуществить вход в систему.
Дополнительно: в действительностипо соображениям безопасности па- роли учетных записей никогда не хранятся в открытом виде. Целесооб- разно выполнять хеширование пароля с «солью» («соль» – случайная строка, специально сгенерированная для данной учетной записи).
И «соль», и результат применения хеш-функции к паролю с «солью» хранятся в базе данных. В этом случае структрура учетных записей поль- зователей будет иметь вид:

login;

salted_hash_password (результат хеширования пароля с «солью»);

salt («соль»);

role;

access.


8
Вторым этапом работы программы является собственно работа с данными, которая становится доступной только после прохождения авторизации. Данные хранятся в отдельном файле и имеют вид, описанный подробно в каждом варианте к курсовой работе.
Для работы с данными должны быть предусмотрены два функциональных модуля: модуль администратора и модуль пользователя.
Модуль администратора включает следующие подмодули (с указанием функциональных возможностей):
1. Управление учетными записями пользователей:

просмотр всех учетных записей;

добавление новой учетной записи;

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

удаление учетной записи.
Дополнительно: при реализацииальтернативного способа регистрации
(самим пользователем) необходимо предусмотреть еще две функцио- нальных возможности администатора:

подтверждение учетной записи;

блокировка учетной записи.
Допускается создавать учетные записи для нескольких администраторов.
Важно: при реализации функционала удаления учетных записей запре- тить возможность удаления администратором собственной учетной запи- си. Это позволит исключить ситуацию удаления всех администраторов
(что сделало бы дальшейшее редактирование учетных записей и данных невозможным).
2. Работа с данными: а) режим редактирования:

просмотр всех данных;

добавление новой записи;

удаление записи;

редактирование записи; б) режим обработки данных:

выполнение индивидуального задания;

поиск данных (как минимум по трем различным параметрам);

сортировка (как минимум по трем различным параметрам).

9
Модуль пользователя включает подмодуль работы с данными со следую- щими функциональными возможностями:

просмотр всех данных;

выполнение индивидуального задания;

поиск данных (как минимум по трем различным параметрам);

сортировка (как минимум по трем различным параметрам).
Для реализации перечисленных модулей/подмодулей необходимо создавать меню с соответствующими пунктами (примеры приведены на рисунках 1.1-1.3).
Рисунок 1.1 – Пример авторизации и меню для пользователя
Рисунок 1.2 – Пример поиска

10
Рисунок 1.3 – Пример сортировки
В курсовой работе необходимо предусмотреть:
1. Обработку исключительных ситуаций:

введенные пользователем данные не соответствуют формату поля
(например, символы в числовом поле);

введенные пользователем данные нелогичны (например, отрицательная
цена товара);

файл с данными для чтения не существует;

ничего не найдено по результатам поиска;

номер удаляемой записи выходит за пределы массива/вектора.
2. Возможность возврата назад (навигация).
3. Запрос на выполнение необратимых действий, а именно подтверждение удаления вида «Вы действительно хотите удалить файл (запись)?».
4. Обратную связь с пользователем, например вывод сообщения об успешно- сти удаления/редактирования записи и т. д.
1.3 Требования к программной реализации
1. Все переменные и константы должны иметь осмысленные имена в рамках тематики варианта курсовой работы. Переменным рекомендуется присваивать имена, состоящие из букв нижнего регистра; для формирования составного имени


11 используется нижнее подчеркивание (например, number_of_students) или
«верблюжья нотация» (например, flagExit). Константам рекомендуется присваи- вать имена, состоящие из букв верхнего регистра
(например,
SIZE_ARR_OF__ACCOUNTS, FILE_OF_ACCOUNTS).
2. Имена функций должны быть осмысленными, начинаться с буквы нижне- го регистра, строиться по принципу глагол + существительное (например, addAccount, findStudentBySurname). Если функция выполняет проверку и возвра- щает результат типа bool, то ее название должно начинаться с глагола is (напри- мер, isNumberNumeric, isLoginUnique).
3. Не допускается использование оператора прерывания goto.
4. Код не должен содержать неименованных числовых констант («магиче- ских» чисел), неименованных строковых констант (например, имен файлов и др.).
Подобного рода информацию следует представлять как глобальные константы. По правилам качественного стиля программирования тексты всех информационных сообщений, выводимых пользователю в ответ на его действия, также оформляют- ся как константы.
5. Код необходимо комментировать (как минимум в части объявления структур, массивов/векторов, прототипов функций, нетривиальной логики).
6. Код не должен дублироваться – для этого существуют функции!
7. Одна функция решает только одну задачу (например, не допускается в одной функции считывать данные из файла и выводить их на консоль – это две разные функции). При этом внутри функции возможен вызов других функций.
8. Выполнение операций чтения/записи в файл должно быть сведено к ми- нимуму (т. е. после однократной выгрузки данных из файла в массив/вектор даль- нейшая работа ведется с этим массивом/вектором, а не происходит многократное считывание данных из файла в каждой функции).
9. Следует избегать глубокой вложенности условных и циклических кон- струкций: вложенность блоков должна быть не более трех.
10. Следует избегать длинных функций: текст функции должен умещаться на один экран (размер текста не должен превышать 25–50 строк).
11. Следует выносить код логически независимых модулей в отдельные .cpp файлы и подключать их с помощью заголовочных .h файлов.

12
2 Структура и описание разделов пояснительной записки
Структура пояснительной записки следующая.
Титульный лист (образец приведен в приложении Б).
Задание по курсовой работе (заполненное и подписанное студентом и пре-
подавателем).
Содержание.
1. Требования к программе (см. пояснения ниже).
2.
2. Конструирование программы.
2.1 Разработка модульной структуры программы (см. пояснения ниже).
2.2 Выбор способа организации данных (см. пояснения ниже).
2.3 Разработка перечня пользовательских функций программы (см. пояс-
нения ниже).
3. Разработка алгоритмов работы программы (см. пояснения ниже).
3.1 Алгоритм функции main.
3.2 Алгоритм функции … (выбирается из перечня пользовательских
функций).
3.3 Алгоритм функции … (выбирается из перечня пользовательских
функций).
4. Описание работы программы (см. пояснения ниже).
4.1 Авторизация.
4.2 Модуль администратора.
4.3 Модуль пользователя.
4.4 Исключительные ситуации.
Приложение (обязательное): листинг кода с комментариями (приводится
ВЕСЬ код с авторским форматированием и комментариями; допускается
применение в листинге кода шрифта 12 пунктов и выше).
Далее приведены пояснения к разделам пояснительной записки.