Разработка программного комплекса по обработке заданного множества данных

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

Отчет.doc

— 217.50 Кб (Скачать файл)

СОДЕРЖАНИЕ

 

 

 

 

Введение

 

Курсовая работа содержит описание программного комплекса по обработке заданного множества данных. Множество данных представляет собой массив записей - спортсмены футбольной команды, со следующей информацией о спортсмене: фамилия (string); рост (integer); вес (real); амплуа: вратарь, защитник, полузащитник, нападающий.

В курсовой работе требуется обеспечить реализацию следующих запросов к массиву:

− загрузка массива из текстовых файлов в форматах csv (данные, разделенные символом ";", причем одна строка задает один элемент массива); пример файла csv приведен далее;

− просмотр всех элементов массива (один элемент на одной строке);

− добавление новых элементов в конец массива из заданного файла;

− удаление элементов массива;

− сохранение массива в заданном файле в формате csv;

− получение трех отчетов (например, сортировка массива, поиск элемента в массиве, расчет групповых итогов по количеству, сумме, среднему, минимуму, максимуму, условию и т.п.).

Условия и ограничения при разработке программы:

− Использование объектно–ориентированного подхода при проектировании приложения обязательно.

− Все поля классов, описывающих элементы множества данных, – private (за исключением констант).

− Поля 1–3 варианта задания включить в базовый класс. Разработать наследуемые классы согласно 4-ого поля 4.

− Классы для элементов множества данных должны содержать конструкторы следующих видов: а) конструктор без параметров, очищающий переменные объекта класса; б) конструктор, инициализирующий все переменные класса, значениями, заданными в качестве параметра; в) конструктор приведения из строки символов (поля класса, разделенные символом ";");

− В наследуемых классах переопределить хотя бы один метод базового класса.

− Интерфейс разработанных классов продемонстрировать в форме консольного приложения.

− Выводить отчеты в виде таблицы (одна запись – одна строка таблицы).

 

1 Описание программного комплекса

1.1 Главный модуль head. Структура программы

 

Структура программы представлена на рисунке 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 – поиск самого тяжелого спортсмена.

 

1.2 Описание модуля unit1.cpp

1.2.1 Описание класса CSportmans

 

Базовый класс  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 – название класса

Установить описание класса

Print

Функция Без параметров

Вывести свойства класса на экран


1.2.2 Описание классов CSportmansVr, CSportmansZ, CSportmansPZ, CSportmansN

 

Наследуемые классы:

CSportmansVr – класс вратаря.

CSportmansZ – класс защитника.

CSportmansPZ – класс полузащитника.

CSportmansN – класс нападающего.

Каждый класс перегружает виртуальную  функцию KOL базового класса:

Функция int KOL() возвращает количество спортсменов в команде соответственного амплуа.

Для базового класса принимается количество спортсменов в команде равное 0.

Для класса CSportmansVr (вратарь) принимается количество спортсменов в команде равное 1.

Для класса CSportmansZ (защитник) принимается количество спортсменов в команде равное 2.

Для класса CSportmansPZ (полузащитник) принимается количество спортсменов в команде равное 4.

Для класса CSportmansN (нападающий) принимается количество спортсменов в команде равное 4.

1.3 Описание модуля unit2.cpp

 

Модуль 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

 

2 Описание работы программы

2.1 Запрос на расчет

 

Запуск программы осуществляется через head.exe. После запуска открывается окно DOS с меню программы, представленное на рисунке 6.

 

 

Рисунок 6 – Главное окно программы с меню

 

Из рисунка  видно, что в окне меню содержит следующие  команды:

- Загрузить данные о спортсменах из файла

- Просмотр  списка спортсменов

- Добавить  в список спортсменов из файла

- Удалить  данные спортсмена по номеру

- Записать  список в файл

- Рассчитать  количество спортсменов

- Упорядочить  список по типу игрока

- Найти  самого тяжелого спортсмена

- Выйти  из программы

Управление пунктами меню осуществляется через клавиши:

- вниз;

- вверх;

- enter.

Выбираем пункт «Загрузить данные», указываем файл komanda.csv. Далее выбираем пункт «Просмотр списка спортсменов». На рисунке 7 представлено окно программы после загрузки данных из файла – этот список является исходными данными для выполнения запроса.

 

 

 

 

Рисунок 7 – Исходные данные

 

Выполним запрос – подсчет количества спортсменов и вывод их по группам. Результат выполнения запроса можно увидеть на рисунке 8.

 

 

Рисунок 8 – Результат запроса о количестве.

2.1 Запрос на сортировку

 

Выполним запрос 2 – упорядочить  список спортсменов по росту. Исходные данные для запроса представлены на рисунке 7. Результат выполнения запроса можно увидеть на рисунке 9.

 

 

Рисунок 9 – Результат запроса  на сортировку

 

2.1 Запрос на поиск

 

Выполним запрос 3 – найти  самого тяжелого спортсмена в коменда. Исходные данные для запроса представлены на рисунке 7.

Результат выполнения запроса 3 можно  увидеть на рисунке 9.

 

 

Рисунок 10 – Результат запроса  на поиск

Заключение

 

В ходе курсовой работе были получены навыки объектно-ориентированного программирования на языке программирования С++.

На основе теоретических знаний разработана иерархия классов. Для  базового класса CSportmans разработаны четыре наследуемых по содержанию класса CSportmansVr, CSportmansZ, CSportmansPZ, CSportmansN.

Для демонстрации классов в программе  head.exe разработано меню, которое выполняет следующие функции:

- Загрузить данные о спортсменах из файла

- Просмотр списка спортсменов

- Добавить в список спортсменов  из файла

- Удалить данные спортсмена  по номеру

- Записать список в файл

- Рассчитать количество спортсменов

- Упорядочить список по типу  игрока

- Найти самого тяжелого спортсмена

- Выйти из программы

Описание запросов и функций  приведено в курсовой работе.

Программа протестирована на заданном множестве из файла komanda.csv.

 

.

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

 

 

1. Дейтел, Х.М. Как программировать  на С++ / Х.М. Дейтел, П. Дж. Дейтел; пер. с англ. – 3-е изд. –  М.: Бином, 2001.

2. Страуструп, Б. Язык программирования  С++ / Б. Страуструп; пер. с англ. – 3-е спец. Изд. – М. : Бином, 2002.

3. Луцик, Ю.А. Объектно-ориентированное  программирования на языке С++ / Ю.А. Луцик, А.М. Ковальчук, И.В. Лукьянова. – Минск : БГУИР, 2003.

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;

 

    // Вес спортсмена

Информация о работе Разработка программного комплекса по обработке заданного множества данных