- •Содержание
- •1 Постановка задачи
- •2 Анализ задачи, выбор способа представления данных
- •3 Алгоритмы решения задачи
- •4 Реализация программы
- •4.1 Именованные константы
- •4.2 Пользовательские типы данных
- •4.3 Функции
- •5 Руководство пользователя
- •Список использованных источников
- •Приложение а – Текст программы (обязательное)
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(); |
Главная функция программы. |