Связный список футболистов

 

Содержание


Введение

1. Руководство пользователя

2. Руководство программиста

2.1 "Дерево" объектов

2.2 Работа со списком

2.3 Программный интерфейс

Заключение

Введение


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

При написании программы использовались следующие свойства объектно-ориентированного языка программирования C ++:

·инкапсуляция - механизм, связывающий код и данные, которыми манипулирует код и защищает от некорректного использования;

·наследование - процесс, с помощью которого один объект приобретает свойства другого, т.е. поддерживается иерархическая классификация;

·полиморфизм - свойство, позволяющее использовать один и тот же интерфейс для общего класса действий.

Другой, также немаловажной целью проектирования являлось изучение такого средства языка C ++, как контейнер. В данной курсовой работе был реализован контейнер типа "список", позволяющий упорядоченно хранить данные о тех или иных объектах, и удобно манипулировать ими.

В курсовой работе был реализован список футболистов разных амплуа: центральный нападающий, центральный полузащитник, фланговый нападающий и фланговый полузащитник. Создано соответствующее "дерево" объектов.

Автор курсового проекта считает, что написанная им программа является хорошим учебным пособием для школьников и студентов, интересующихся футболом.

программный интерфейс список язык

1. Руководство пользователя


1.Скопировать папку "Пользователь" с диска на компьютер.

2.Открыть папку "Программа".

.Запустить. exe файл программы.

.Перед пользователем открывается меню, приведенное на рисунке 1.

Рисунок 1.


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

6.При вводе пользователем команды "1" (ввод производится нажатием на соответствующую клавишу на клавиатуре с последующим нажатием клавиши "Enter"), программа переходит в подменю, представленное на рисунке 2. Здесь пользователю предлагается самому добавить информацию о стране.


Рисунок 2.


.Для примера, введем команду "1" и добавим в базу данных информацию оЦентральном нападающем. Например, этим Центральным нападающим будет Роман Павлюченко. Далее вводим информацию в соответствующие поля данных, которые нам предложит программа. После ввода информации программой будет выведено сообщение о том, что информация о футболисте успешно сохранена (см. рисунок 3).


Рисунок 3.


Для возвращения в подменю вводим команду "1"и нажимаем клавишу "Enter".

.Аналогичным образом добавляется информация о других футболистах.

9.Для возвращения в главное меню программы необходимо ввести команду "5" и нажать клавишу "Enter" (см. рисунок 2).

.Рассмотрим подменю, в котором пользователю предлагается добавить информацию из файла. Для этого в главном меню программы вводим команду "2", нажимаем клавишу "Enter" (см. рисунок 5).


Рисунок 5.


.Далее, введем команду "1" и добавим информацию о Фланговом полузащитнике из файла. Если файл с названием, которое вводит пользователь, не существует или указан неверный путь к нему, то программа должна выдать сообщение о том, что файл не найден. Если путь указан верно, то программа добавит информацию о стране в перечень самолетов и выдаст соответствующее сообщение (см. рисунок 6).


Рисунок 6.


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

13.Для того, чтобы осуществить поиск конкретного футболиста, необходимо ввести команду "3" в главном меню программы и нажать клавишу "Enter". После этого программа осуществит переход в подменю, где поиск футболиста можно вести по соответствующим категориям. Если введенное пользователем имя футболиста совпадет с названием из списка, то программа выведет на экран информацию об этом стране (см. рис.7). Если введенное пользователем имя футболиста не совпадет с названием из списка, то программа выведет сообщение о том, что такого футболиста нет в списке (см. рис.8).


Рисунок 7.


Рисунок 8.


.Следующее подменю - удаление из списка. Для перехода в это подменю необходимо ввести команду "4" в главном меню и нажать клавишу "Enter". Подменю удаления из списка представлено на рисунке 9.


Рисунок 9.


.При выполнении программой команд 1 - 4 из списка футболистов будет удалена информация по соответствующим категориям футболистов. При этом программа выдаст соответствующее сообщение и предложит вернуться в подменю удаления из списка (см. рис.10).


Рисунок 10.


.При вводе команды "5" в подменю удаления из списка и последующем нажатии клавиши "Enter" пользователь сможет удалить конкретный элемент списка футболистов. Если пользователь некорректно введет номер элемента списка, программа выдаст сообщение об ошибке ввода номера элемента (см. рис.11). В случае, если бы был указан номер элемента с превышением размера списка, программа выдаст сообщение, в котором будет указано число записей в списке, что поможет пользователю корректно удалить записи из списка (см. рис.12).


Рисунок 11.


Рисунок 12.


.При выполнении программой команды "6" в подменю удаления из списка удалятся все записи о футболистах.

18.Пользователь может выбрать подменю "Вывод на экран" главного меню программы, введя команду "5" и нажав клавишу "Enter".

.Появляется меню, представленное на рисунке 13.


Рисунок 13.


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


Рисунок 14.


.Используя команды 2-5 из подменю печати, пользователь может вывести на экран информацию о какой-либо категории футболистов (см. рис.15).


Рисунок 15.


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

23.Пользователь может выбрать подменю "Сохранение в файл" главного меню программы, введя команду "5" и нажав клавишу "Enter".

.Подменю "Сохранение в файл" представлено на рисунке 16.


Рисунок 16.


.При выполнении команды "1" подменю "Сохранение в файл", программа предложит пользователю сохранить в файл запись о футболисте, которую укажет пользователь (см. рис.17). Далее пользователю необходимо будет ввести имя файла для сохранения информации и нажать клавишу "Enter".


Рисунок 17.


.При выполнении команд 2-5 подменю "Сохранение в файл", программа предложит пользователю сохранить записи о футболистах по соответствующим категориям (при этом сохранение осуществляется так же как представлено в п.17).

27.При выполнении команды 6подменю "Сохранение в файл", программа предложит пользователю сохранить все записи о футболистах.

.Для выхода из программы в главном меню программы необходимо ввести команду "8" и нажать клавишу "Enter".


2. Руководство программиста


Программа состоит из 27 файлов, среди которых 13 заголовочных файла с расширением". h" и 14 файлов с расширением". cpp". В таблице 1 приведено пояснение, к какому файлу относится то и или иное пространство имен.


Таблица 1

". h"файл". cpp" файлПространство имен (namespace) rf. Hrf. cpprfforward. Hforward. cppforwardhalfback. Hhalfback. cpphalfbackcenterforward. Hcenterforward. cppcenterforwardflangforward. Hflangforward. cppflangforwardcenterhalfback. Hcenterhalfback. cppcenterhalfbackflangforward. Hflangforward. cppflangforwardrus. Hrus. cpprususeful_functions. Huseful_functions. cppsomeusefulfunctionsColour. HColour. cppcolourfunctions_in_list. Hfunctions_in_list. cppmylistsomemenues. Hsomemenues. cppstdmyinterfacefunctionsprogram. Hprogram. cppmyprogrammain. cpp

2.1 "Дерево" объектов


Одной из задач курсового проектирования было создание так называемого "дерева" объектов. Автор курсового проектирования предложил модель, представленную на рисунке 18. Следует отметить, что главным классом (классом родителем) является верхний класс, а остальные классы (классы потомки) наследуют все методы и данные классов предков публичным способом наследования. При этом наследование идет сверху вниз (указано с помощью стрелок на рисунке).


Рисунок 18.


Класс-родитель rf, который описан в одноименном файле rf. h, содержит основные поля данных записи, соответствующей каждому футболисту:

private:

Club; // футбольный клуб

string Number; // игровой номер

string Age; // возраст

string Name; // имя футболиста


При объявлении данных использовалось ключевое слово "private". Это означает, что данные класса country закрытые и получить доступ к ним можно только при помощи специальных методов, описанных ниже (в качестве примера приводится метод доступа к переменной Name, содержащей название имя футболиста).


// имя футболиста

inline string GetName () {return Name; }void SetName (string &s) {Name = s; }


Метод inline<тип возвращаемого значения>Get… () возвращает соответствующее поле данных, а метод - inlinevoidSet… (<тип сохраняемого значения>&s) заполняет соответствующее поле данных. В данном случае в этом заключается принцип инкапсуляции, одного из свойств объектно-ориентированного программирования.

Кроме методов, представленных выше, класс countryсодержит также ряд следующих методов:


// обработка данных

virtualvoidDownloading (istream&); // считывание из файла

virtual void Printing (); // вывод на экранvoid SetingNewData (); // заполнение с клавиатуры

virtual void Uploading (ostream &); // загрузка в файл

// действия

virtual void Whatzadacha () {}; // главная задачаvoid Whatvtorzadacha () {}; // вторичная задача () {}; // рабочая нога


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

То же самое касается и методов, описывающих некие действия, совершаемые объектами. К примеру, для Центрального нападающего и Флангового нападающего актуальным является действие, описывающее их задачу, но задача этих футболистов выглядит по-разному, то есть метод описывающий действие на поле один и тот же, но результат его выполнения различен для объектов разных классов (в нашем случае эти объекты - Центральный нападающий и Фланговый нападающий). В этом заключается смысл полиморфизма в парадигме объектно-ориентированного программирования.

Также в классе countryреализована такая возможность языка C ++ как перегрузка оператора. Был перегружен оператор == с целью замены действия (strstr (getTypeName () , str_1)! = NULL).


2.2 Работа со списком


Еще одной задачей курсового проектирования было создание контейнера типа "список" и ряда функций для его обработки. Прототипы этих функций описаны в файле "functions_in_list. h, а их реализация в файле "functions_in_list. cpp. Пространство имен stdmyspisok содержит следующие функции обработки списка:


// включение нового элемента в список с клавиатуры

void IncludeElement (list <Rf*>&, Rf *);

// включение нового элемента в список из файла

void IncludeElementFromFile (list <Rf*>&, Rf *, char *);

// поиск элемента

Void SearchingElement (list <Rf*>&, Rf *, string &, const char *); // печать всего списка(list<Rf*>&);

// печать конкретного элемента из списка

voidPrintElementFromList (list<Rf*>&, int&);

// печать определенной категории списка

void PrintCategoryFromList (list <Rf*>&, const char *);

// удаление элемента из списка

void DeleteElementFromList (list <Rf*>&, int &);

// удаление категорию из списка

void DeleteCategoryFromList (list <Rf*>&, const char *);

// печать конкретного элемента из списка в файл

void PrintElementFromListToFile (list <Rf*>&, int &, char *);

// печать категории из списка в файл

void PrintCategoryFromListToFile (list <Rf*>&, const char *, char *); // Печать всего списка в файл

void PrintListToFile (list <Rf*>&, char *);

// Печать действий, выполняемых объектом

void PrintAllObjectsActions (list <Rf*>&);


В качестве аргумента во всех этих функциях фигурирует список объектов класса Rf. Это означает, что к данному заголовочному файлу необходимо подключить заголовочные файлы всех классов, из которых состоит "дерево" и их пространства имен:


#include "rf. h"

#include "flanghalfback. h"

#include "centerhalfback. h"

#include "flangforward. h"

#include "centerforward. h"namespace rf;namespace flanghalfback;namespace centerhalfback;namespace flangforward;namespace centerforward;


Также необходимо подключение стандартной библиотеки <list> для получения возможности использования стандартных библиотечных функций работы со списком:

#include <list>


2.3 Программный интерфейс


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

·rus

·colour

·stdmyinterfacefunctions

·myprogram

Пространство имен rus.

Пространство имен stdrus содержит единственную функцию для корректного вывода букв русского алфавита в консольное меню:

* Rus (const char *); // русификация строки вывода консольное меню


При реализации этой функции была использована функция перекодировки AnsiToOem (constchar *, char *) из стандартной библиотеки<windows. h>.

Пространство имен colour.

В пространстве имен colour описаны функции настройки цветов фона и текста


#include <windows. h>

// устанавливает цвет текста и подложки в консоли

void SetColor (ConsoleColor text, ConsoleColor background);

// устанавливает цвет в меню и подменю

void SetColorMenu ();

// устанавливает цвет текста и фона в рабочей области

void SetColorWorkPlace ();


Параметрыtextиbackground - коды цветов текста и фона.

Пространство имен stdmyinterfacefunctions

В пространстве имен stdmyinter face functions описаны функции, реализующие и синхронизирующие работу всех подменю программы.


// возврат назад

void Return (int);

// проверка на введенный элемент списка

int Checking (list <Rf*>&spisok, int &number);

// вводим имя файла

void interfaceIncludeNewElementInListByKeyboard (list <Rf*>&);

// добавляет элемент списка в конец (заполнение из файла)

voidinterfaceIncludeNewElementInListFromFile (list<Rf*>&);

// поиск (по названию страны и соответственно по категориям)

void interfaceSearchingList (list <Rf*>&);

// удаление определенной категории из списка объектов

void interfaceDeleteSomethingFromList (list <Rf*>&);

// распечатка

void interfacePrintList (list <Rf*>&);

// сохранение в файл

void interface Print List In File (list <Rf*>&);

Для корректной работы этих функций необходимо подключение следующих файлов и пространств имен:

#include "functions_in_list. h"

#include "Colour. h"namespace space stdmyspisok; namespace colour;


Пространство имен myprogram

Пространство имен myprogram содержит единственную функциюprogram, которая реализует работу главного меню программы. Необходимо подключение файла "somenues. h" и соответствующего ему пространства имен:


#include "somemenues. h"namespace stdmyinterfacefunctions;myprogram

{Program (list <Rf*>&);

}


Заключение


В процессе курсового проектирования были выполнены следующие задачи:

·реализовано "дерево" объектов, состоящее из семи классов;

·реализован список объектов;

·реализованы методы объекта, такие как отображение полей данных, загрузка данных из файла, сохранение данных в файл, добавление данных об объекте с клавиатуры;

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


Содержание Введение 1. Руководство пользователя 2. Руководство программиста 2.1 "Дерево" объектов 2.2 Работа со списком 2.3 Прог

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ