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

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

Программа, решающая поставленную задачу, была реализована в среде разработки Visual Studio 2008 на языке программирования С++.

Далее опишем именованные константы, пользовательские типы данных и функции, используемые в программе.

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

Разработанная программа включает именованные константы, перечисленные в таблице 2:

Таблица 2 – Именованные константы

Определение константы

Назначение константы

const int MAX_NAME_LENGTH = 100;

Максимальная длина строк фамилии, имени и отчества.

const int MAX_SPORTSMEN_COUNT = 1000;

Максимальное количество записей о спортсменах в массиве экземпляров структур.

const char* FILE_NAME = "sportsmen.dat";

Имя файла для хранения записей о спортсменах.

const char* HEADER = "Index Surname Name Patronymic Birth date Sport Games count";

Заголовочная константная строка, используемая при выводе записей на экран.

const char* SEPARATING_LINE = "-------------------------------------------------------------------------------";

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

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

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

Таблица 3 – Пользовательские типы данных

Определение типа

Назначение типа

enum SportKind {skNone, skTennis, skChess, skSprint};

Перечисление, описывающее вид спорта, которым занимается спортсмен: kNone - вид спорта не указан; skTennis – теннис; skChess – шахматы; skSprint – бег.

struct Date

{

unsigned short int Year; //Год

unsigned short int Month; //Месяц

unsigned short int Day; //День

};

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

struct Sportsman

{

//Фамилия

char Surname[MAX_NAME_LENGTH + 1];

//Имя

char Name[MAX_NAME_LENGTH + 1];

//Отчество

char Patronymic[MAX_NAME_LENGTH + 1];

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

Date DateOfBirth;

//Вид спорта

SportKind KindOfSport;

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

int GamesCount;

};

Структура, описывающая сведения (запись) о спортсмене.

4.3 Функции

Основные функции, используемые в программе, сведены в таблицу 4. Данные функции реализуют алгоритмы, описанные в пункте 6.

Таблица 4 – Основные функции

Объявление функции

Назначение функции

void InputSportsman(Sportsman& Man);

Функция, осуществляющая ввод записи о спортсмене с консоли. Введенная запись возвращается в параметре Man, передаваемом по ссылке.

void PrintSportsman(Sportsman Man, int Index);

Функция вывода на консоль полей записи (структуры) Man, имеющей индекс Index.

void AddSportsman(Sportsman SportsmenArray[], int& SportsmenCount, Sportsman Man);

Функция, добавляющая запись о спортсмене Man в конец массива спортсменов SportsmenArray. SportsmenCount - количество экземпляров структур в массиве SportsmenArray.

bool RemoveSportsman(Sportsman SportsmenArray[], int& SportsmenCount, int RemovingIndex);

Функция, удаляющая в массиве SportsmenArray запись-элемент с индексом RemovingIndex. SportsmenCount - количество экземпляров структур в массиве SportsmenArray. Функция возвращает истину, если RemovingIndex лежит в допустимом диапазоне от 0 до SportsmenCount-1, иначе функция возвращает ложь.

void SearchAndPrintSportsmen(Sportsman SportsmenArray[], int SportsmenCount, char KeySurname[]);

Функция, осуществляющая поиск и вывод на консоль элементов массива SportsmenArray, фамилия которых совпадает со строкой KeySurname (ключом для поиска).

SportsmenCount - количество экземпляров структур в массиве SportsmenArray.

void SortSportsmenByGamesCount(Sportsman SportsmenArray[], int SportsmenCount);

Функция, осуществляющая сортировку массива спортсменов по не возрастанию количества сыгранных игр. SportsmenArray – массив записей о спортсменах. SportsmenCount - количество экземпляров структур в массиве SportsmenArray.

void PrintAllSportsmen(Sportsman SportsmenArray[], int SportsmenCount);

Функция, осуществляющая вывод на консоль сведений обо всех спортсменах из массива SportsmenArray размера SportsmenCount.

void LoadFromFile(Sportsman SportsmenArray[], int& SportsmenCount, const char* FileName);

Функция, осуществляющая чтение массива SportsmenArray и его размера SportsmenCount файла с именем FileName.

void SaveToFile(Sportsman SportsmenArray[], int SportsmenCount, const char* FileName);

Функция, осуществляющая сохранение массива SportsmenArray и его размера SportsmenCount в файл FileName.

void MainMenu(Sportsman SportsmenArray[], int& SportsmenCount);

Функция, реализующая главное меню программы. В зависимости от выбора пользователя, осуществляет вызов соответствующих функций. Параметры: SportsmenArray - массив элементов-записей о спортсменах; SportsmenCount - количество элементов в массиве.

int main();

Главная функция программы.