Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример отчета по домашнему заданию.doc
Скачиваний:
3
Добавлен:
14.09.2019
Размер:
179.2 Кб
Скачать

14

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Математический факультет

Кафедра математического обеспечения информационных систем

ОТЧЕТ

по домашнему заданию

по курсу «Информатика и программирование»

Программа для работы с записями о спортсменах

ОГУ 010503.62.6012.391 О

Руководитель

­­­­­­­­_______________Полежаев П.Н.

“_____”________________2012г.

Исполнитель

студент гр. 11МОС(б)ТП

_______________Иванов И.И.

“_____”________________2012г.

Оренбург 2012

Содержание

1 Постановка задачи 3

2 Анализ задачи, выбор способа представления данных 4

3 Алгоритмы решения задачи 5

4 Реализация программы 9

4.1 Именованные константы 9

4.2 Пользовательские типы данных 9

4.3 Функции 10

5 Руководство пользователя 12

Список использованных источников 13

Приложение А – Текст программы 14

1 Постановка задачи

Даны сведения (записи) о спортсменах. Каждый спортсмен описывается фамилией, именем, отчеством, датой рождения, видом спорта и количеством сыгранных спортсменом игр.

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

  1. Добавление новой записи, введенной с клавиатуры.

  2. Удаление записи по ее номеру.

  3. Поиск записей о спортсменах по указанной фамилии.

  4. Сортировку записей в порядке не возрастания количества сыгранных игр.

  5. Вывод всех записей на экран.

  6. Сохранение всех записей в файл.

  7. Чтение всех записей из файла.

2 Анализ задачи, выбор способа представления данных

В результате анализа условия задачи принято решение представить сведения о спортсменах в виде следующей таблицы (см. таблицу 1):

Таблица 1 – Сведения о спортсменах

Номер

Фамилия

Имя

Отчество

Дата рождения

Вид спорта

Количество сыгранных игр

1

2

3

4

5

6

7

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

Строка таблицы состоит из полей различного типа: поля 2, 3 и 4 представляют собой строки символов; поле 5 имеет сложный тип и будет представлено в виде структуры, состоящей из трех числовых полей – года, месяца и дня; поле 6 имеет тип перечисления; поле 7 – числовой тип.

Тип перечисления, используемый для поля 6, будет включать в себя следующие виды спорта: теннис, шахматы и бег.

Описание используемых в программе типов на языке программирования С++ приведено в п. 4.2.

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

3 Алгоритмы решения задачи

Детальное изучение решаемой задачи позволяет выделить следующие подзадачи:

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

  2. вывод сведений об одном спортсмене на экран;

  3. добавление новой записи о спортсмене в конец массива экземпляров структур;

  4. удаление из массива записи о спортсмене по ее индексу;

  5. поиск в массиве записей о спортсменах, имеющих данную фамилию;

  6. сортировку сведений о спортсменах в порядке не возрастания количества сыгранных игр;

  7. вывод сведений обо всех спортсменах на экран в виде таблицы;

  8. сохранение сведений обо всех спортсменах в файл;

  9. чтение сведений обо всех спортсменах из файла;

  10. отображение меню программы.

Приведем словесное описание укрупненного алгоритма решения поставленной задачи (см. алгоритм 1):

Алгоритм 1 – Укрупненный алгоритм решения задачи

  1. Количество спортсменов = 0.

  2. Прочитать сведения обо всех спортсменах из файла и сохранить их в массив экземпляров структур, а их число – в переменную количества.

  3. Отобразить меню программы.

  4. Сохранить содержимое массива экземпляров структур и их количество в файл.

Опустим описания алгоритмов, решающих подзадачи ввода и вывода сведений об одном спортсмене в силу их очевидной тривиальности. То же самое касается алгоритма добавления новой записи о спортсмене в конец массива экземпляров структур.

Рассмотрим алгоритм удаления из массива записи о спортсмене по ее индексу (см. алгоритм 2):

Алгоритм 2 – Удаление из массива записи о спортсмене по ее индексу

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

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

  3. Уменьшаем на единицу количество спортсменов.

Поиск в массиве экземпляров структур записей о спортсменах, имеющих указанную фамилию, осуществляется следующим образом (см. алгоритм 3):

Алгоритм 3 – Поиск в массиве записей о спортсменах, имеющих данную фамилию

  1. Количества найденных записей = 0.

  2. Для каждого спортсмена в массиве выполнить:

начало

  1. если фамилия спортсмена совпадает с искомой фамилией, то

начало

      1. вывести на экран сведения о данном спортсмене;

      2. количество найденных записей увеличить на 1;

конец.

конец.

Алгоритм сортировки сведений о спортсменах в порядке не возрастания количества сыгранных игр выглядит следующим образом (см. алгоритм 4):

Алгоритм 4 – Сортировка сведений о спортсменах в порядке не возрастания количества сыгранных игр

  1. Для каждого i от 0 до количества спортсменов – 2 с шагом 1

начало

    1. MaxIndex = i;

    2. для каждого j от i + 1 до количества спортсменов – 1 с шагом

начало

      1. если количество игр, сыгранных j-м спортсменом больше числа игр, сыгранным спортсменом с индексом MaxIndex, то

начало

        1. MaxIndex = i;

конец

конец

    1. в массиве экземпляров структур переставить местами элементы с индексами i и MaxIndex;

конец.

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

Алгоритм 5 – Вывод на экран сведений обо всех спортсменах

  1. Вывести заголовок таблицы.

  2. Для каждого спортсмена в массиве выполнить:

начало

2.1 вывести на экран сведения о данном спортсмене;

конец.

Следующий алгоритм осуществляет сохранение сведений обо всех спортсменах в файл (см. алгоритм 6):

Алгоритм 6 – Сохранение сведений обо всех спортсменах в файл

  1. Открыть файловый поток на запись, передав ему имя открываемого файла.

  2. Сохранить в поток количество спортсменов.

  3. Сохранить в поток все используемые элементы массива экземпляров структур, содержащего сведения о спортсменах.

  4. Закрыть файловый поток.

Чтение сведений обо всех спортсменах из файла осуществляется с помощью следующего алгоритма (см. алгоритм 7):

Алгоритм 7 – Чтение сведений обо всех спортсменах из файла

  1. Открыть файловый поток на чтение, передав ему имя открываемого файла.

  2. Прочитать из потока количество спортсменов.

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

  4. Закрыть файловый поток.

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

Алгоритм 8 – Отображение меню программы

  1. Делай

      1. вывести заголовок меню;

      2. вывести пункт 1 – “[1] Add sportsman”;

      3. вывести пункт 2 – “[2] Remove sportsman”;

      4. вывести пункт 3 – “[3] Search sportsman”;

      5. вывести пункт 4 – “[4] Sort sportsmen ”;

      6. вывести пункт 5 – “[5] Show all sportsmen”;

      7. вывести пункт 6 – “[6] Exit”;

      8. ввести номер выбранного пользователем пункта и сохранить в переменную UserChoice;

      9. выбор (UserChoice)

1 :

        1. ввести сведения о спортсмене с клавиатуры;

        2. добавить запись о спортсмене в конец массива экземпляров структуры;

        3. покинуть выбор;

2 :

        1. ввести индекс удаляемой записи о спортсмене;

        2. удалить из массива экземпляров структур элемент с введенным индексом;

        3. покинуть выбор;

3 :

        1. ввести фамилию для поиска;

        2. выполнить поиск в массиве записей о спортсменах, имеющих данную фамилию;

        3. покинуть выбор;

4 :

        1. выполнить сортировку сведений о спортсменах в порядке не возрастания количества сыгранных игр;

        2. покинуть выбор;

5 :

        1. вывести сведения обо всех спортсменах на экран в виде таблицы;

        2. покинуть выбор;

6 :

        1. вывести "Bye-bye...";

        2. покинуть выбор;

по умолчанию:

        1. вывести сообщение об ошибке и просьбу повторить ввод;

все-выбор;

Пока UserChoice не равен 6.