Государственное образовательное учреждение высшего профессионального образования
МОСКОВСКИЙ АВТОМОБИЛЬНО-ДОРОЖНЫЙ
ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ (МАДИ)
ВОЛЖСКИЙ ФИЛИАЛ
Кафедра «Математика и информатика»
Методические указания
по оформлению курсовой работы по
дисциплине «Программирование»
для направления 230100 на 2013-2014 учебный год
СОДЕРЖАНИЕ
1. ЦЕЛИ И ЗАДАЧИ КУРСОВОЙ РАБОТЫ.2. РАЗРАБОТКА ТЕХНИЧЕСКОГО ЗАДАНИЯ
3. СОДЕРЖАНИЕ ОТЧЕТА
4. ВЫБОР ТЕМЫ.
5. ПЛАН КУРСОВОЙ РАБОТЫ
6. ТРЕБОВАНИЯ К ПРОГРАММНОМУ ПРИЛОЖЕНИЮ
7. РАБОТА НАД ЛИТЕРАТУРОЙ.
8. ОСНОВНЫЕ ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ РАБОТЫ.
9. ЗАЩИТА КУРСОВОЙ РАБОТЫ.
10. ОЦЕНКА РАБОТЫ.
ПРИЛОЖЕНИЕ 1
1. Цели и задачи курсовой работы.
Цель курсовой работы заключается в получении и закреплении навыков создания программного обеспечения для решения поставленных задач.
Задачами курсовой работы являются обучение:
разработке алгоритмов и программ для решения прикладных задач, осуществление постановки и выбор алгоритмов решения экономикоуправленческих задач, в том числе с применением математических методов;
применению на практике основных алгоритмических структур, графических средств языка;
использованию алгоритмических языков высокого уровня, средств автоматизации программирования.
Выполнение курсовой работы начинается с разработки технического задания (ТЗ) и завершается составлением отчета, в котором должно содержаться описание всей проделанной работы.
В результате выполнения курсовой работы студент должен научиться:
создавать программу в соответствии с основными этапами ее разработки;
строить схему алгоритма работы программы в соответствии с требованиями ГОСТ 19.701-90;
грамотно тестировать программу;
анализировать результаты работы программы и делать выводы.
2. Разработка технического задания Техническое задание - это основной документ, регламентирующий все этапы выполнения курсовой работы. Техническое задание должно содержать следующие разделы:
назначение программы;
требования к программе;
требования к программной документации;
стадии и этапы разработки.
В разделе "назначение программы" указывается, для решения какой задачи разрабатывается программа.
В разделе "требования к программе" должны быть следующие подразделы:
"требования к функциональным характеристикам" - здесь перечисляются все функции, которые должна выполнять программа, требования к организации входных и выходных данных (именно требования, а не сама организация);
"требования к надежности" - в этом подразделе указываются требования к обеспечению надежного функционирования программы (контроль входной информации, защита от сбоев, и т.п.).
"требования к составу технических средств" - здесь указывается состав технических средств: тип ЭВМ, необходимый комплект внешних устройств, и т.п.;
"требования к информационной и программной совместимости" - это требования к информационным структурам на входе и выходе, методам решения, языкам программирования, операционным системам и другим программным средствам, которые будет использовать данная программа.
В разделе "требования к программной документации" указываются программные документы, которые следует разработать (в данной работе разрабатывается ТЗ).
В разделе "стадии и этапы разработки" устанавливаются необходимые стадии разработки, этапы и содержание работ, а также сроки их выполнения.
Содержание работ срок Разработка структуры входных и выходных данных Разработка алгоритма решения задачи Разработка структуры программы Разработка тестов Написание текста программы Отладка программы Написание отчета о работе 3. Содержание отчета Отчет включает в себя следующие разделы:
1. Титульный лист 2. Техническое задание 3. Содержание 4. Введение 5. Теоретическая часть 6. Практическая часть 7. Руководство по использованию 9. Список литературы 4. Выбор темы.
Тематика курсовых работ разрабатывается преподавателем по дисциплине «программирование», ежегодно дополняется и уточняется (приложение 1). Темы курсовых работ рассматриваются и утверждаются на заседании кафедры. Студенты выбирают тему курсовой работы самостоятельно, из предложенного списка.
Незначительное изменение темы разрешается только по согласованию с преподавателем.
5. План курсовой работы.
Выбор темы и беседа с руководителем;
Сбор материала, поиск литературы по теме, подготовка библиографии, составление личного рабочего плана;
Подготовка первого варианта;
Сдача первого варианта курсовой работы научному руководителю;
Доработка текста по замечаниям, его окончательное оформление и представление на кафедру, где должен быть приложен отзыв научного руководителя с оценкой проделанной работы. Присутствие руководителя на защите курсовой работы студента обязательно.
Рекомендуется следующая структура курсовой работы:
1. Техническое задание Во введении обосновывается целесообразность выбора темы, актуальность и практическая значимость проблемы. Формулируются цели и задачи работы.
Показывается, на что автор обращает особое внимание, какие моменты опускает.
3. Теоретическая часть 3.1. Характеристика ПК 3.2. Характеристика ОС 3.3. Характеристика системы программирования Указываются общие сведения о языке, элементы языка, типы, используемых в приложении данных, основные операторы и их синтаксис, способы структурирования программы, средства отладки программы, ошибки компиляции.
4. Практическая часть 4.1. Постановка задачи - организационно-экономическую сущность задачи, в которой указывается: место решения задачи, цель решения задачи, назначение задачи, периодичность решения задачи, описательную модель задачи, функциональную диаграмму верхнего уровня.
- описание входной информации, в котором указывается описание входных документов, описание входных данных. Входные данные описываются в виде таблице со следующим заголовком - описание выходной информации, в котором указывается описание выходных документов, описание выходных данных. Выходные данные описываются в виде таблице со следующим заголовком Наименование Идентификатор Тип данных Источник данных - логическую модель задачи, которая должна быть представлена виде контекстной диаграммы.
- требования к программе, в которых перечисляются функциональные требования к программе.
4.2. Блок-схема программы 4.3. Логическая модель программы - структурную диаграмму, с описанием основных модулей;
- логическую схему программы;
- схемы алгоритмов модулей программы;
4.4. Код программы Помещается структурированный, комментированный программный код приложения.
4.6. Тестовые данные Указываются тестовые данные на выявление ошибок в работе приложения 4.7. Результаты работы программы Приводятся результаты работы программы, в виде создаваемых отчетов, диаграмм.
5. Руководство по использованию Должно содержать:
- назначение и функции программы - подробное описание действий по использованию программы.
6. Заключение Заключение должно содержать краткие выводы по результатам исследования, основные рекомендации и предложения.
7. Список литературы Указывается библиография используемой литературы в алфавитном порядке фамилий авторов.
6. Требования к программному приложению Приложение разрабатывается в любой среде программирования С++, Pascal, Delphi.
7. Работа над литературой.
Список литературы подбирается студентами самостоятельно (не менее источников). Рекомендуется использование литературы, изданной за последние 3- года.
8. Основные требования к оформлению работы.
Курсовая работа выполняется на нелинованных листах (формат А4) согласно ЕСПД. Работа должна быть сброшюрована, иметь титульный лист, оформленный по правилам. Текст пишется на одной стороне листа.
Поля – левое – 30 мм; правое – 10 мм; верхнее – 20 мм; нижнее – 20 мм Ориентация – книжная.
Шрифт – Times New Roman.
Размер основного текста – 14 пт.
Междустрочный интервал – полуторный.
Расстановка переносов – автоматическая.
Форматирование основного текста – «по ширине».
Цвет шрифта – чёрный.
Красная строка – 1,25 см.
9. Защита курсовой работы.
Условием получения оценки по курсовой работе является не только подготовка текста, но и устная защита. К защите допускается готовые работы - окончательный вариант, исправленный на основании замечаний руководителя. К защите допускаются работы, имеющие письменный отзыв руководителя. Защита проводится как на практических занятиях, так и во внеурочное время. Автор работы выступает с докладом, в котором излагает основные итоги работы над проблемой, выводы и рекомендации. Продолжительность выступления - 7 минут. Защита проводится с использованием наглядного материала и демонстрацией разработанного приложения.
На защите присутствуют студенты из группы, руководитель работы. Возможно присутствие представителей администрации и преподавателей кафедры. Во время защиты необходимо ответить на заданные вопросы.
10. Оценка работы.
Курсовая работа оценивается по пятибалльной системе. Итоговая оценка является результатом оценок:
1) за приложение;
2) за пояснительную записку;
3) за устную защиту работы.
Приложение 1: Тематика курсовых работ.
Тема курсовой работы: Обработка данных, вводимых в виде символьных строк или последовательности чисел на примере … 1. «Абитуриенты, потерпевшие неудачу». В некотором вузе абитуриенты проходят предварительное тестирование, по результатам которого могут быть допущены к сдаче вступительных экзаменов в первом потоке. Тестирование проводится по двум предметам, по каждому предмету абитуриент может набрать от 0 до 100 баллов. При этом к сдаче экзаменов в первом потоке допускаются абитуриенты, набравшие по результатам тестирования не менее 30 баллов по каждому из двух предметов. На вход программы подаются сведения о результатах предварительного тестирования. Известно, что общее количество участников тестирования не превосходит 500. В первой строке вводится количество абитуриентов, принимавших участие в тестировании, N. Далее следуют N строк, имеющих следующий формат:
Здесь – строка, состоящая не более чем из 20 символов; – строка, состоящая не более чем из 15 символов; – строка, содержащая два целых числа, разделенных пробелом, соответствующих баллам, полученным на тестировании по каждому из двух предметов. При этом и, и разделены одним пробелом. Примеры входных строк:
Ветров Роман Анисимова Екатерина Напишите программу, которая будет выводить на экран фамилии и имена абитуриентов, потерпевших неудачу, то есть не допущенных к сдаче экзаменов в первом потоке. При этом фамилии должны выводиться в алфавитном порядке.
2. «Сотрудники из одного подразделения». На вход программе подаются сведения о телефонах всех сотрудников некоторого учреждения. В первой строке сообщается количество сотрудников N, каждая из следующих N строк имеет следующий формат:
где – строка, состоящая не более чем из 20 символов, строка, состоящая не более чем из 4-х символов (буква, точка, буква, точка), – семизначный номер, 3-я и 4, я, а также 5-я и 6-я цифры которого разделены символом «–». и, а также и разделены одним пробелом. Пример входной строки:
Иванов П.С. 555-66- Сотрудники одного подразделения имеют один и тот же номер телефона. Номера телефонов в учреждении отличаются только двумя последними цифрами. Требуется написать программу, которая будет выводить на экран информацию, сколько в среднем сотрудников работает в одном подразделении данного учреждения.
3. «Молочные магазины». В молочных магазинах города Х продается сметана с жирностью 15, 20 и 25 процентов. В городе X был проведен мониторинг цен на сметану. Напишите программу, которая будет определять для каждого вида сметаны, сколько магазинов продают ее дешевле всего. На вход программе сначала подается число магазинов N. В каждой из следующих N строк находится информация в следующем формате:
где – строка, состоящая не более, чем из 20 символов без пробелов, – строка, состоящая не более, чем из 20 символов без пробелов, – одно из чисел – 15, 20 или 25, – целое число в диапазоне от 2000 до 5000, обозначающее стоимость одного литра сметаны в копейках. и, и, а также и разделены ровно одним пробелом. Пример входной строки:
Перекресток Короленко Программа должна выводить через пробел 3 числа – количество магазинов, продающих дешевле всего сметану с жирностью 15, 20 и 25 процентов. Если какой-то вид сметаны нигде не продавался, то следует вывести 0.
Пример выходных данных:
12 4. «Автозаправочная станция». На автозаправочных станциях (АЗС) продается бензин с маркировкой 92, 95 и 98. В городе N был проведен мониторинг цены бензина на различных АЗС. Напишите программу, которая будет определять для каждого вида бензина, сколько АЗС продают его дешевле всего.
На вход программе в первой строке подается число данных N о стоимости бензина. В каждой из последующих N строк находится информация в следующем формате:
где – строка, состоящая не более, чем из 20 символов без пробелов, – строка, состоящая не более, чем из 20 символов без пробелов, – одно из чисел – 92, 95 или 98, – целое число в диапазоне от 1000 до 3000, обозначающее стоимость одного литра бензина в копейках.
и, и, а также и разделены ровно одним пробелом. Пример входной строки:
Синойл Цветочная Программа должна выводить через пробел 3 числа – количество АЗС, продающих дешевле всего 92-й, 95-й и 98-й бензин соответственно. Если бензин какой-то марки нигде не продавался, то следует вывести 0.
Пример выходных данных:
12 5. «Соревнования по многоборью». В соревнованиях по многоборью (из M видов спорта) участвуют N спортсменов (N < 1000). На вход программе в первой строке подается число спортсменов N, во второй – число видов спорта M. В каждой из последующих N строк находится информация в следующем формате:
где – строка, состоящая не более, чем из 20 символов без пробелов, – строка, состоящая не более, чем из 12 символов без пробелов, – M целых чисел, обозначающие количество баллов, набранных спортсменом в каждом из видов многоборья.
и, и, а также отдельные числа в поле разделены ровно одним пробелом. Пример входных строк:
Иванов Сергей 100 30 Петров Антон 90 16 Сидоров Юрий 100 70 Программа должна выводить результирующую таблицу, содержащую список спортсменов, отсортированный по убыванию суммы баллов, набранные суммы и занятые места.
В данном случае программа должна вывести Иванов Сергей Сидоров Юрий Петров Антон 6. «Камера хранения». На вход программе подаются сведения о пассажирах, сдавших свой багаж в камеру хранения. В первой строке задано текущее время: через двоеточие два целых числа, соответствующие часам (от 00 до 21, ровно 2 символа) и минутам (от 00 до 59, ровно 2 символа). Во второй строке задается количество пассажиров N, которое не меньше 10, но не превосходит 1000. В каждой из последующих N строк находится информация о пассажирах в следующем формате:
где – строка, состоящая не более, чем из 20 символов без пробелов, – через двоеточие два целых числа, соответствующие часам (от 00 до 21, ровно 2 символа) и минутам (от 00 до 59, ровно 2 символа). и разделены ровно одним пробелом. Пример входных строк:
10: Иванов 12: Петров 10: Сидоров 12: Программа должна выводить список пассажиров, которые в ближайшие 2 часа должны освободить ячейки. Список должен быть отсортирован в хронологическом порядке освобождения ячеек. В данном случае программа должна вывести Петров Иванов 7. «Заклинание». На вход программе подается текст заклинания, состоящего не более, чем из 200 символов, заканчивающийся точкой (другие точки во входных данных отсутствуют). Гарри Поттеру нужно зашифровать его следующим образом. Сначала Гарри определяет количество букв в самом коротком слове, обозначив полученное число через K (словом называется непрерывная последовательность английских букв, слова друга от друга отделяются любыми другими символами, длина слова не превышает 20 символов). Затем он заменяет каждую английскую букву в заклинании на букву, стоящую в английском алфавите на K букв ранее (алфавит считается циклическим, то есть, перед буквой A стоит буква Z), оставив другие символы неизменными. Строчные буквы при этом остаются строчными, а прописные – прописными.
Требуется написать программу для Гарри Поттера, которая будет выводить на экран текст зашифрованного заклинания. Например, если исходный текст был таким:
Zb Ra Ca Dab Ra.
то результат шифровки должен быть следующий:
Xz Py Ay Byz Py.
8. «Голосование». Имеется список результатов голосования избирателей за несколько партий, в виде списка названий данных партий. На вход программе в первой строке подается количество избирателей в списке N. В каждой из последующих N строк записано название партии, за которую проголосовал данный избиратель, в виде текстовой строки. Длина строки не превосходит 50 символов, название может содержать буквы, цифры, пробелы и прочие символы.
Пример входных данных:
Party one Party two Party three Party three Party two Party three Программа должна вывести список всех партий, встречающихся в исходном списке, в порядке убывания количества голосов, отданных за эту партию. При этом название каждой партии должно быть выведено ровно один раз, вне зависимости от того, сколько голосов было отдано за данную партию. Пример выходных данных для приведенного выше примера входных данных:
Party three Party two Party one При этом следует учитывать, что количество голосов избирателей в исходном списке может быть велико (свыше 1000), а количество различных партий в этом списке не превосходит 10.
9. «Олимпиада по программированию». В командных олимпиадах по программированию для решения предлагается не более 12 задач. Команда может решать предложенные задачи в любом порядке. Подготовленные решения команда посылает в единую проверяющую систем соревнований. Вам предлагается написать эффективную, в том числе и по используемой памяти, программу, которая будет статистически обрабатывать пришедшие запросы на проверку, чтобы определить популярность той или иной задачи. Следует учитывать, что количество запросов в списке может быть очень велико, например, когда олимпиада проводится через Интернет. перед текстом программы кратко опишите используемый вами алгоритм решения задачи. На вход программе в первой строчке подается количество пришедших запросов N. В каждой из последующих N строк записан номер задачи от 1 до 12.
Пример входных данных:
Программа должна вывести список всех задач, встречающихся в запросах, в порядке возрастания (неубывания) количества запросов по ней с указанием этого количества запросов. Каждая задача должна быть выведена только один раз. Пример выходных данных для приведенных входных данных:
10. «Конкурс на выбор лучшего фильма». Популярная газета объявила конкурс на выбор лучшего фильма, для которого стоит снять продолжение. На выбор читателей было предложено 10 фильмов. Вам предлагается написать эффективную, в том числе и по используемой памяти, программу, которая будет статистически обрабатывать результаты sms-голосования по этому вопросу, чтобы определить популярность того или иного фильма. Следует учитывать, что количество голосов в списке может быть очень велико. На вход программе в первой строчке подается количество пришедших sms-сообщений N. В каждой из последующих N строк записано название фильма.
Пример входных данных:
Белое солнце пустыни Бриллиантовая рука Белое солнце пустыни Белое солнце пустыни Гараж Бриллиантовая рука Программа должна вывести список всех фильмов, встречающихся в списке, в порядке убывания (невозрастания) количества отданных за них голосов с указанием этого количества голосов. Название каждого фильма должно быть выведено только один раз.
Пример выходных данных для приведенных входных данных:
Белое солнце пустыни Бриллиантовая рука Гараж 11. «Канал связи». По каналу связи передается последовательность положительных целых чисел, все числа не превышают 1000, их количество заранее неизвестно. Каждое число передается отдельно. Признаком конца передаваемой последовательности является число 0. После числа 0 передается контрольное значение – наибольшее число R, удовлетворяющее следующим условиям:
1) R – произведение двух различных переданных элементов последовательности («различные» означает, что не рассматриваются квадраты переданных чисел, произведения различных, но равных по величине элементов допускаются);
2) R делится на Напишите эффективную программу, которая получает последовательность чисел и следующие за ней признак конца и контрольное значение, а также проверяет правильность контрольного значения. Программа должна напечатать отчет по следующей форме:
Получено.. чисел Полученное контрольное значение: ….
Вычисленное контрольное значение:… Контроль пройден (или – контроль не пройден) Размер памяти, которую использует Ваша программа, не должен зависеть от длины переданной последовательности чисел. Перед текстом программы кратко опишите используемый вами алгоритм решения задачи.
Пример входных данных:
Пример выходных данных для приведенного выше примера входных данных:
Получено 6 чисел Полученное контрольное значение: Вычисленное контрольное значение: Контроль пройден.
12. «Распознования чисел». Вам необходимо написать программу распознавания чисел, записанных прописью. Сначала на вход программе подается обучающий блок, состоящий из 27 строк. Первые 9 строк содержат слова «один», «два»,..., «девять», следующие 9 строк - слова «одиннадцать», «двенадцать»,... «девятнадцать», следующие 9 строк - слова «десять», «двадцать»,..., «девяносто». Все слова записаны маленькими русскими буквами без лишних пробелов в начале и в конце строки.
Затем на вход программе подается значение N - количество записей, которые необходимо обработать. Следующие N строк содержат записанные словами числа.
Каждое число записано по-русски, маленькими буквами, без ошибок. Если число состоит из нескольких слов, между словами находится ровно один пробел, лишних пробелов в начале и в конце строк нет.
Напишите эффективную программу, которая определит сумму тех входных чисел, которые находятся в интервале от 1 до 99.
Размер памяти, которую использует Ваша программа, не должен зависеть от длины исходного списка.
Перед текстом программы кратко опишите используемый вами алгоритм решения задачи.
Пример входных данных (обучающий блок показан в примере с сокращениями):
один два девяносто двадцать восемь два миллиона четырнадцать сто двадцать три тысяча девятьсот восемьдесят четыре Пример выходных данных для приведённого выше примера входных данных:
13. «Ускоритель». На ускорителе для большого числа частиц производятся замеры скорости каждой из них. Чтобы в документации качественно отличать одну серию от другой, каждую серию решили характеризовать числом, равным минимальному произведению из всех произведений пар скоростей различных частиц. Вам предлагается написать эффективную, в том числе по используемой памяти, программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая будет обрабатывать результаты эксперимента, находя искомую величину. В нашей модели скорость частицы - это величина, которая может принимать как положительные, так и отрицательные значения. Следует учитывать, что частиц, скорость которых измерена, может быть очень много, но не может быть меньше двух.
Перед текстом задачи кратко опишите используемый вами алгоритм решения задачи.
На вход программе в первой строке подается количество частиц N. В каждой из последующих N строк записано одно целое число со знаком (плюс или минус), по абсолютной величине не превосходящее 10000.
Пример входных данных:
+ + + + + Программа должна вывести одно число - минимальное произведение из всех произведений пар скоростей различных частиц.
Пример выходных данных для приведенного выше примера входных данных:
14. «Электронная почта». На электронную почту Вам пришло письмо, подписанное аббревиатурой (первыми буквами фамилии, имени и отчества (далее - ФИО) отправителя). Аббревиатура оказалась Вам незнакома. У Вас есть список всех предполагаемых отправителей, взятый из ранее полученных писем, среди которых различных людей с такой аббревиатурой не больше 10.
Вам предлагается написать программу, которая определит всех вероятных адресатов – людей, ФИО которых можно сократить до нужной аббревиатуры. ФИО следует выдать в порядке убывания частоты их встречаемости в списке.
На вход программе в первой строке подается аббревиатура – строка, состоящая из трех заглавных латинских букв. Во второй строке находится число N – количество ФИО, полученных в результате анализа почты, не все из них подходят под указанную аббревиатуру. Значение N может быть очень велико. В каждой из следующих N строк записано три слова: Фамилия Имя Отчество соответствующего человека. Слова разделяются одним пробелом. В конце и в начале строки пробелов нет. Все слова записаны заглавными латинскими буквами. Длина ФИО не превышает 100 символов.
Гарантируется, что хотя бы один человек с нужной аббревиатурой есть.
Пример входных данных:
IPI
IVANOV PETR IVANOVICH
PETROV IVAN IVANOVICH
IVANOV PETR IVANOVICH
ILYIN PETR ILYICH
Программа должна вывести предполагаемых отправителей письма с указанием частоты их встречаемости в списке (в порядке убывания частоты).Пример выходных данных для приведенного выше примера входных данных:
IVANOV PETR IVANOVICH
ILYIN PETR ILYICH
15. «Радиотелескоп». Радиотелескоп пытается получать и анализировать сигналы из космоса. Различные шумы переводятся в последовательность вещественные неотрицательные числа, заданные с точностью до 1 знака после десятичной точки. Для того чтобы описывать различные участки космоса, данные, получаемые из одного района, было решено характеризовать числом, равным максимальному произведению, которое можно получить, перемножая значения сигналов, приходящих из этого района.То есть требуется выбрать такое непустое подмножество сигналов (в него может войти как один сигнал, так и все поступившие сигналы), произведение значений у которого будет максимальным. Если таких подмножеств несколько, то выбрать можно любое из них.
Напишите программу, которая будет обрабатывать результаты эксперимента, находя искомое подмножество. Сигналов может быть очень много, но не может быть меньше трех. Все сигналы различны.
На вход программе в первой строке подается количество сигналов N. В каждой из последующих N строк записано одно вещественное число с точностью до 1 знака после десятичной точки. Все числа различны.
Пример входных данных:
12. 0. 100. 0. 1. Программа должна вывести в порядке возрастания номера сигналов, произведение которых будет характеризовать данную серию. Нумерация сигналов ведется с единицы.
Пример выходных данных для приведенного выше примера входных данных: