Автор работы: Пользователь скрыл имя, 08 Октября 2013 в 11:39, курсовая работа
Курсовая работа содержит описание программного комплекса по обработке заданного множества данных. Множество данных представляет собой массив записей - спортсмены футбольной команды, со следующей информацией о спортсмене: фамилия (string); рост (integer); вес (real); амплуа: вратарь, защитник, полузащитник, нападающий.
Введение 3
1 Описание программного комплекса 4
1.1 Главный модуль head. Структура программы 4
1.2 Описание модуля unit1.cpp 5
1.2.1 Описание класса CSportmans 5
1.2.2 Описание классов CSportmansVr, CSportmansZ, CSportmansPZ, CSportmansN 6
1.3 Описание модуля unit2.cpp 7
2 Описание работы программы 12
2.1 Запрос на расчет 12
2.1 Запрос на сортировку 13
2.1 Запрос на поиск 14
Заключение 15
Список использованных источников 16
Приложение А 17
Приложение Б 19
СОДЕРЖАНИЕ
Курсовая работа содержит описание программного комплекса по обработке заданного множества данных. Множество данных представляет собой массив записей - спортсмены футбольной команды, со следующей информацией о спортсмене: фамилия (string); рост (integer); вес (real); амплуа: вратарь, защитник, полузащитник, нападающий.
В курсовой работе требуется обеспечить реализацию следующих запросов к массиву:
− загрузка массива из текстовых файлов в форматах csv (данные, разделенные символом ";", причем одна строка задает один элемент массива); пример файла csv приведен далее;
− просмотр всех элементов массива (один элемент на одной строке);
− добавление новых элементов в конец массива из заданного файла;
− удаление элементов массива;
− сохранение массива в заданном файле в формате csv;
− получение трех отчетов (например, сортировка массива, поиск элемента в массиве, расчет групповых итогов по количеству, сумме, среднему, минимуму, максимуму, условию и т.п.).
Условия и ограничения при разработке программы:
− Использование объектно–ориентированного подхода при проектировании приложения обязательно.
− Все поля классов, описывающих элементы множества данных, – private (за исключением констант).
− Поля 1–3 варианта задания включить в базовый класс. Разработать наследуемые классы согласно 4-ого поля 4.
− Классы для элементов множества данных должны содержать конструкторы следующих видов: а) конструктор без параметров, очищающий переменные объекта класса; б) конструктор, инициализирующий все переменные класса, значениями, заданными в качестве параметра; в) конструктор приведения из строки символов (поля класса, разделенные символом ";");
− В наследуемых классах переопределить хотя бы один метод базового класса.
− Интерфейс разработанных классов продемонстрировать в форме консольного приложения.
− Выводить отчеты в виде таблицы (одна запись – одна строка таблицы).
Структура программы представлена на рисунке 1.
Рисунок 1 – Структура программы
Из рисунка видно, что структура программы состоит из:
– библиотек стандартных функций С++;
– главной программы head.cpp
– модуля unit1.cpp
– модуля unit2.cpp
Модуль с главной функцией – head.cpp.
Главная функция программы выполняет функции меню программы:
- Загрузить данные о спортсменах из файла
- Просмотр списка спортсменов
- Добавить в список спортсменов из файла
- Удалить данные спортсмена по номеру
- Записать список в файл
- Рассчитать количество
- Упорядочить список по типу игрока
- Найти самого тяжелого
- Выйти из программы
Функции обработки данных:
Menu_saw – Вывод на экран списка спортсменов в виде таблицы
Menu_del – Удалить спортсмена из массива по номеру
Menu_add – Добавить в массив данные из файла формата csv
Free – Освободить память из-под классов
Menu_from – Загрузка данных из файла формата csv
Menu_to – Сохранить данные в файл в формате csv
Функции запросов к множеству данных:
Menu_r1 – рассчитать количество спортсменов в команде и вывести их по группам амплуа.
Menu_r2 –упорядочить список спортсменов по росту.
Menu_r3 – поиск самого тяжелого спортсмена.
Базовый класс CSportmans содержит следующие свойства:
– char name[40], ФИО спортсмена;
– float ves, вес спортсмена (кг);.
– int rost, рост спортсмена (см).
– char cname[20], название класса. Для базового класса содержит значение CSportmans.
Базовый класс содержит 3 конструктора:
– без параметров, с очисткой переменных;
– c параметрами, с копированием входных значений в поля;
– с параметром строкой, с выделением значений полей из строки.
Методы класса CSportmans сведены в таблицу 1.
Таблица 1 – Методы класса CSportmans
Метод класса |
Параметры |
Описание |
Virtual int KOL |
Функция Без параметров |
Выводит количество спортсменов в команде согласно амплуа |
char*getname |
Функция Без параметров |
Получить указатель на строку с ФИО спортсмена |
int getrost |
Функция Без параметров |
Получить величину роста спортсмена |
float getves |
Функция Без параметров |
Получить величину веса спортсмена |
char*get |
Получить строку со значениями свойств класса | |
char*getclas |
Функция Без параметров |
Получить имя класса |
Set |
Char *s – строка с полями множества |
Установить значения свойств класса из строки |
Setclas |
Char *s – название класса |
Установить описание класса |
Функция Без параметров |
Вывести свойства класса на экран |
Наследуемые классы:
CSportmansVr – класс вратаря.
CSportmansZ – класс защитника.
CSportmansPZ – класс полузащитника.
CSportmansN – класс нападающего.
Каждый класс перегружает
Функция int KOL() возвращает количество спортсменов в команде соответственного амплуа.
Для базового класса принимается количество спортсменов в команде равное 0.
Для класса CSportmansVr (вратарь) принимается количество спортсменов в команде равное 1.
Для класса CSportmansZ (защитник) принимается количество спортсменов в команде равное 2.
Для класса CSportmansPZ (полузащитник) принимается количество спортсменов в команде равное 4.
Для класса CSportmansN (нападающий) принимается количество спортсменов в команде равное 4.
Модуль unit2.cpp содержит описание массива записей и количества элементов в массиве.
Функции модуля unit2.cpp без параметров и сведены в таблицу 2.
Таблица 2 – Функции модуля unit2.cpp
Имя функции |
Описание |
Menu_r1 |
Выполнить запрос – рассчитать количество спортсменов в команде и вывести их по группам амплуа. |
Menu_r2 |
Выполнить запрос – упорядочить список спортсменов по росту |
Menu_r3 |
Выполнить запрос – поиск самого тяжелого спортсмена |
Free |
Освободить память из-под классов |
Menu_from |
Загрузка данных из файла формата csv |
Menu_saw |
Вывод на экран списка спортсменов в виде таблицы |
Menu_del |
Удалить спортсмена из массива по номеру |
Menu_add |
Добавить в массив данные из файла формата csv |
Menu_to |
Сохранить данные в файл в формате csv |
На рисунке 3 представлена графическая схема алгоритма запроса 1.
Рисунок 3 – Блок-схема алгоритма запроса 1
Рисунок 3 – Блок-схема алгоритма запроса 1. Продолжение
На рисунке 4 представлена блок-схема алгоритма запроса 2.
Рисунок 4 – Блок-схема алгоритма запроса 2
На рисунке 5 представлена блок-схема алгоритма запроса 3.
Рисунок 5 – Блок-схема алгоритма запроса 3
Запуск программы
Рисунок 6 – Главное окно программы с меню
Из рисунка видно, что в окне меню содержит следующие команды:
- Загрузить данные о спортсменах из файла
- Просмотр списка спортсменов
- Добавить в список спортсменов из файла
- Удалить данные спортсмена по номеру
- Записать список в файл
- Рассчитать количество спортсменов
- Упорядочить список по типу игрока
- Найти самого тяжелого спортсмена
- Выйти из программы
Управление пунктами меню осуществляется через клавиши:
- вниз;
- вверх;
- enter.
Выбираем пункт «Загрузить данные», указываем файл komanda.csv. Далее выбираем пункт «Просмотр списка спортсменов». На рисунке 7 представлено окно программы после загрузки данных из файла – этот список является исходными данными для выполнения запроса.
Рисунок 7 – Исходные данные
Выполним запрос – подсчет количества спортсменов и вывод их по группам. Результат выполнения запроса можно увидеть на рисунке 8.
Рисунок 8 – Результат запроса о количестве.
Выполним запрос 2 – упорядочить список спортсменов по росту. Исходные данные для запроса представлены на рисунке 7. Результат выполнения запроса можно увидеть на рисунке 9.
Рисунок 9 – Результат запроса на сортировку
Выполним запрос 3 – найти самого тяжелого спортсмена в коменда. Исходные данные для запроса представлены на рисунке 7.
Результат выполнения запроса 3 можно увидеть на рисунке 9.
Рисунок 10 – Результат запроса на поиск
В ходе курсовой работе были получены навыки объектно-ориентированного программирования на языке программирования С++.
На основе теоретических знаний разработана иерархия классов. Для базового класса CSportmans разработаны четыре наследуемых по содержанию класса CSportmansVr, CSportmansZ, CSportmansPZ, CSportmansN.
Для демонстрации классов в программе head.exe разработано меню, которое выполняет следующие функции:
- Загрузить данные о спортсменах из файла
- Просмотр списка спортсменов
- Добавить в список спортсменов из файла
- Удалить данные спортсмена по номеру
- Записать список в файл
- Рассчитать количество
- Упорядочить список по типу игрока
- Найти самого тяжелого
- Выйти из программы
Описание запросов и функций приведено в курсовой работе.
Программа протестирована на заданном множестве из файла komanda.csv.
.
1. Дейтел, Х.М. Как программировать на С++ / Х.М. Дейтел, П. Дж. Дейтел; пер. с англ. – 3-е изд. – М.: Бином, 2001.
2. Страуструп, Б. Язык программирования С++ / Б. Страуструп; пер. с англ. – 3-е спец. Изд. – М. : Бином, 2002.
3. Луцик, Ю.А. Объектно-
4. Скляров, В.А. Язык С++ и объектно-ориентированное программирование: справ. Пособие / В.А. Скляров. – Минск : Вышэйш. Школа, 1997.
5. Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес «Приемы объектно-ориентированного проектирования. Паттерны проектирования». – Пер. с англ. – СПб.: Питер, 2007.
6. ГОСТ 19.101 – 77 ЕСПД. Виды программ и программных документов.
7. ГОСТ 19.105 – 78 ЕСПД. Общие требования к программным документам.
8. ГОСТ 19.106 – 78 ЕСПД. Требования к документам, выполненным печатным способом.
Приложение А
Главный модуль head.cpp
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <bios.h>
#include <stdlib.h>
#include <iostream.h>
// МЕНЮ
char MENUSTR[9][55]=
{
" Загрузить данные о спортсменах из файла ",
" Просмотр списка спортсменов
" Добавить в список спортсменов из файла ",
" Удалить данные спортсмена по номеру ",
" Записать список в файл ",
" Рассчитать количество спортсменов ",
" Упорядочить список по типу игрока ",
" Найти самого тяжелого спортсмена ",
" Выйти из программы
};
#include "unit1.cpp"
#include "unit2.cpp"
// Главная функция
void main()
{
int key;
int selected=1;
// Цикл обработки меню
do
{
textbackground(BLACK);
textcolor(YELLOW);
clrscr();
key=0;
// Цикл вывода меню
while (key!=7181&&key!=283)
{
textbackground(BLACK);
for (int i=0; i<9; i++)
{
gotoxy(15,6+i);
if (i==selected-1) textbackground(BLUE); else textbackground(BLACK);
cputs (MENUSTR[i]);
};
textbackground(BLACK); gotoxy(15,15);
while (!bioskey(1));
key=bioskey(0);
switch (key)
{
case 20480: if (++selected>9) selected=1; break;
case 18432: if (!--selected) selected=9; break;
};
};
textbackground(BLACK);
textcolor(WHITE);
clrscr();
switch (selected)
{
case 1: menu_from(); break;
case 2: menu_saw(); break;
case 3: menu_add(); break;
case 4: menu_del(); break;
case 5: menu_to(); break;
case 6: menu_r1(); break;
case 7: menu_r2(); break;
case 8: menu_r3(); break;
};
if (selected!=9)
{
/* Ожидание нажатия клавиши */
while (!bioskey(1));
bioskey(0);
};
}
while (selected!=9);
free();
};
Приложение Б
Модуль unit1.cpp:
// Класс спортсмена футбольной команды
class CSportmans
{
private:
// ФИО спортсмена
char name[40];
// Рост спортсмена
int rost;
// Вес спортсмена
Информация о работе Разработка программного комплекса по обработке заданного множества данных