Файл: Методические указания к выполнению курсовой работы по дисциплине Основы конструирования программ Минск бгуир 2017 содержание.doc

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

Категория: Не указан

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

Добавлен: 04.12.2023

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

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

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

Белорусский государственный университет

информатики и радиоэлектроники
Кафедра инженерной психологии и эргономики

М. М. Меженная

Методические указания

к выполнению курсовой работы по дисциплине «Основы конструирования программ»


Минск БГУИР 2017

СОДЕРЖАНИЕ




1 ОБЩИЕ ТРЕБОВАНИЯ К КУРСОВОЙ РАБОТЕ 3

1.1 Исходные данные к курсовой работе 3

1.2 Функциональные требования к курсовой работе 4

1.3 Требования к программной реализации курсовой работы 7

2 СТРУКТУРА ПОЯСНИТЕЛЬНОЙ ЗАПИСКИ 8

3 ПОРЯДОК ЗАЩИТЫ КУРСОВОЙ РАБОТЫ 11

4 КРИТЕРИИ ОЦЕНКИ КУРСОВОЙ РАБОТЫ 12

ПРИЛОЖЕНИЕ 1. Задания для курсовой работы 14

ПРИЛОЖЕНИЕ 2. Образец титульного листа курсовой работы 25



1 ОБЩИЕ ТРЕБОВАНИЯ К КУРСОВОЙ РАБОТЕ




1.1 Исходные данные к курсовой работе





  1. Тема курсовой работы выбирается из списка, приведенного в приложении 1.

  2. Язык программирования С++.––

  3. Среда разработки Microsoft Visual Studio версии 2010 и выше.

  4. Вид приложения – консольное.––

  5. Парадигма программирования – процедурная (по согласованию с преподавателем допускается реализация программы в рамках объектно-ориентированной парадигмы программирования).

  6. Способ организации данных – структуры (struct) (либо поля соответствующих классов в случае объектно-ориентированного программирования).

  7. Способ хранения данных – файлы (по согласованию с преподавателем допускается подключение баз данных).

  8. Каждая логически завершенная задача программы должна быть реализована в виде функции (метода в случае объектно-ориентированного программирования).

  9. Построение программного кода должно соответствовать правилам, определенным в документе «С++ Code Convention» (см. одноименный файл).

  10. Текст пояснительной записки оформляется в соответствии со стандартом предприятия СТП 01–2013.


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

Допускается использовать классы string и vector, библиотеку algorithm.
Для защиты курсовой работы необходимо распечатать пояснительную записку и продемонстрировать работу программу.

1.2 Функциональные требования к курсовой работе



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

  • login;

  • password;

  • role (данное поле служит для разделения в правах администраторов и пользователей).

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

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

Обратите внимание: РЕГИСТРАЦИЯ НОВЫХ ПОЛЬЗОВАТЕЛЕЙ ПРИ ВХОДЕ В СИСТЕМУ НЕ ПРЕДУСМОТРЕНА! Данную задачу выполняет администратор в режиме работы с учетными записями пользователей.

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

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

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

  1. Управление учетными записями пользователей:

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

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

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

  • удаление учетной записи.

  1. Работа с файлом данных:

  • создание файла;

  • открытие существующего файла;

  • удаление файла.

  1. Работа с данными:

а) режим редактирования:

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

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

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

      • редактирование записи;

б) режим обработки данных:

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

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

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

Модуль пользователя

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

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

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

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

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

Для реализации перечисленных модулей/подмодулей необходимо создавать меню с соответствующими пунктами (примеры приведены на
рис. 1-3; данные примеры не являются единственно правильным вариантом).


Рис.1 – Пример авторизации и меню для пользователя


Рис.2 – Пример поиска


Рис.3 – Пример сортировки
Предусмотреть:

  • обработку исключительных ситуаций:

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

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

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

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

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

  • логин новой учетной записи уже существует

  • возможность возврата назад (навигация);

  • запрос на выполнение необратимых действий, а именно, подтверждение удаления вида «Вы действительно хотите удалить файл (запись)?»;

  • обратную связь с пользователем, например, вывод сообщения об успешности создания файла/удаления записи/ и т.д.



1.3 Требования к программной реализации курсовой работы





  1. Все переменные и константы должны иметь осмысленные имена в рамках тематики варианта к курсовой работе.

  2. Имена функций должны быть осмысленными и строится по принципу глагол+существительное. Если функция выполняет какую-либо проверку и возвращает результат типа bool, то ее название должно начинаться с глагола is (например, isFileExist, isUnicLogin).

  3. goto под запретом.

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

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

  6. Код не должен дублироваться – для этого существуют функции!

  7. Одна функция решает только одну задачу (например, не допускается в одной функции считывать данные из файла и выводить их на консоль – это две разные функции!). При этом внутри функции возможен вызов других функций.

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

  9. Следует избегать длинных функций и глубокой вложенности: текст функции должен умещаться на один экран, а вложенность блоков и операторов должна быть не более трёх.

  10. Выносите код логически независимых модулей в отдельные .cpp файлы и подключайте их с помощью заголовочных .h файлов.




2 СТРУКТУРА ПОЯСНИТЕЛЬНОЙ ЗАПИСКИ



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

Титульный лист (образец приведен в приложении 2)

Задание по курсовой работе (заполненное и подписанное студентом и преподавателем)

Содержание

  1. Требования к программе (см. пояснения ниже)

  2. Конструирование программы

    1. Разработка модульной структуры программы (см. пояснения ниже)

    2. Выбор способа организации данных (см. пояснения ниже)

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

3. Разработка алгоритмов работы программы (см. пояснения ниже)

3.1 Алгоритм функции main

3.2 Алгоритм функции … (выбирается из перечня пользовательских функций)

3.3 Алгоритм функции … (выбирается из перечня пользовательских функций)

4. Описание работы программы (см. пояснения ниже)

4.1 Авторизация

4.2 Модуль администратора

4.3 Модуль пользователя

4.4 Исключительные ситуации

Приложение (обязательное): листинг кода с комментариями (приводится ВЕСЬ код с Вашим авторским форматированием и комментариями).
Требования к программе включают:

  • полный текст Вашего варианта задания,

  • исходные данные для курсовой работы из документа Общие требования к курсовой работе (выберите основной или альтернативный вариант),

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

  • требования к программной реализации (см. Общие требования к курсовой работе).

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

Разработка модульной структуры программы подразумевает графическое представление структуры программы с указанием модулей, подмодулей и их функциональных возможностей. Для объектно-ориентированного программирования в данном подразделе приводится UML диаграмма классов!


Рисунок 1 – Пример структуры программы

(не для копирования в Вашу курсовую работу!)

Графическая среда может быт любой; в качестве рекомендации обращаю ваше внимание на online-редакторы, например:

http://www.newart.ru/htm/flash/risovalka_42.php
Выбор способов организации данных:

  • в качестве выбора способа описания входных данных: приводится описание типов struct (1. для учетных записей пользователей, 2. для данных) с указанием конкретных полей. В случае объектно-ориентированного программирования приводятся названия предполагаемых классов и содержащихся в них полей. При работе с базой данных дополнительно приводится структура таблиц.

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

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

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

Разработка алгоритмов работы программы включает блок-схемы алгоритмов с кратким словесным описанием их работы для функции main и двух любых пользовательских функций (в случае использования объектно-ориентированного программирования разрабатываются алгоритмы для двух любых методов классов + алгоритм функции main). Обратите внимание: так как алгоритмы разрабатываются до непосредственного кодирования программы, то они не могут содержать просто копии строчек кода. Алгоритм может содержать словесные инструкции с упоминанием имен структур, массивов/векторов, функций.

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

Алгоритм должен быть оформлен согласно ГОСТ 19.701-90 Схемы алгоритмов, программ, данных и систем (вспомогательная информация по данной теме доступна по ссылке http://bit.ly/1skqzkw).