Управление массивом указателей средствами объектно-ориентированного программирования

Автор работы: Пользователь скрыл имя, 21 Мая 2013 в 09:55, курсовая работа

Краткое описание

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

Содержание

Введение 3
1 Структура программы и описание модулей 4
1.1 Описание главной функции программы и перечень модулей 4
1.1.1 Функция void Line() 4
1.2 Модуль cls1.cpp 4
1.3 Модуль cls2.cpp 6
2 Работа программы по контрольному примеру 8
2.1 Запуск программы 8
2.2 Пункт меню “New BD” 8
2.3 Просмотр данных “Full view” 9
2.4 Добавление элементов «Add data» 9
2.5 Просмотр элемента по номеру “Show by number” 10
2.6 Выбор минимального элемента «Show minimal». 11
2.7 Поиск максимального элемента «Show maximal» 12
2.8 Сохранение данных на компьютер “Save in file” 12
2.9 Удаление всех данных “Delete data” 12
2.10 Открытие данных, сохраненных на компьютере “Open database” 13
Заключение 14

Прикрепленные файлы: 1 файл

Otchet_1.doc

— 774.50 Кб (Скачать документ)


 

Министерство образования Республики Беларусь

 

 

Учреждение образования

«Гомельский государственный университет  
имени Франциска Скорины»

 

 

Физический факультет

 

Кафедра автоматизированных систем обработки  информации

!!!тут что то про заочку»»!!

 

 

 

 

 

 

Управление массивом указателей средствами объектно-ориентированного программирования

 

 

 

Курсовой проект

 

 

 

 

 

Исполнитель

студентка группы Ф-26      Касаткина Е

 

Руководитель 

преподаватель                                              Говорушкина Н.А.

 

 

 

Гомель 2013

 

СОДЕРЖАНИЕ

 

Введение

 

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

Структура данных выглядит следующим  образом:

  1. название (string);
  2. цена (longint);
  3. количество единиц (integer);
  4. товарная группа: мясные, молочные, хлебо-булочные, консервы, напитки.

Отчет состоит из двух глав. Так  же в нем присутствует приложение А, в котором можно увидеть  код программы. В первой главе  описывается структура программного комплекса, разработанного в ходе выполнения заданий курсового проекта . Вторая глава – это результат работы программы по контрольному примеру со скриншотами.

Шаблоны, которые также называют родовыми или параметризованными типами, позволяют конструировать семейства  функций и классов. В отличие  от механизма перегрузки, когда для  каждого набора формальных параметров устанавливается своя функция, шаблон семейства функций определяется один раз, но при этом оно параметризуется. Параметризовать в шаблоне функции можно тип возвращаемого функцией значения и типы параметров, количество и порядок которых должны быть фиксированы. В определении шаблона употребляется служебное слово template. Для параметризации используется список формальных параметров шаблона, который заключается в угловые скобки <>. Каждый формальный параметр шаблона помечен служебным словом class, за которым следует имя параметра.

В соответствии с моим вариантом  следует реализовать следующие  запросы:

  1. Загрузка данных из источника (файла формата *.CSV).
  2. Просмотр всех элементов.
  3. Добавление новых элементов.
  4. Удаление элементов.
  5. Сохранение а файл (источник).
  6. Получение ряда отчетов(поиск, минимальное, максимальное).

1 Структура программы и описание  модулей

 

Программа, написанная для выполнения поставленной задачи, состоит из главной  программы и двух модулей. Первый модуль cls1.cpp – это модуль, который содержит классы и методы работы с данными. Второй модуль – cls2.cpp. Здесь содержится меню.

    1. Описание главной функции программы и перечень модулей

Главная процедура программы выполняет  обработку данных согласно выбранным пунктам меню. Для наибольшей эффективности главная процедура представлена бесконечным циклом с выходом по выбору определенного пункта меню. Так же в главном модуле объявлены все переменные согласно классам и необходимым потребностям, выявленным при составлении программы.

Модуль  cls1.cpp содержит в себе все классы, которые необходимы нам для работы. В данных классах описаны методы, для дальнейшей работы с данными. Согласно задания, один, или несколько методов должны быть переопределены в классах-потомках, что и представлено в программе.

Модуль cls2.cpp создает и выводит на экран меню, со списком всех возможных действий.

      1. Функция void Line()

Первая вспомогательная функция отвечает за частичную прорисовку таблицы. Точнее она выводит разделительную горизонтальную линию таблицы.

 

void Line()

{

     cout << "-";

     cout.fill('-');

     cout<<setw(61)<<"-" << endl;

     cout.fill(' ');

}

    1. Модуль cls1.cpp

Данный модуль содержит классы предка и потомков. А так же в каждом из классов описаны их методы. Краткая структура модулей представлена ниже.

class Product

{

      private:

              string name;

              int  sale;

              int num;

              int group;

      public:

             Product ();

             Product (string name, int sale, int  num, int group){};

             virtual ~Product(){};      

      virtual void addName(string name);

        virtual void addSale(int sale);

        virtual void addNum(int num); 

        virtual void addGroup(int group);    

        virtual string getName();

  virtual int getSale();

  virtual int getNum();

  int getGroup();

};     

                 

class Meat : public Product

{

private:

string name;

int sale;

int num;

int group;

string gr1;

public:

  Meat();

        Meat(string name, int sale, int num){};

        virtual int getGroup();

  virtual string getGr();

 

};         

class Milk : public Product

{

private:

string name;

int sale;

int num;

int group;

string gr2;

public:

  Milk();

        Milk(string name, int sale, int num){};

        virtual int getNum();

  virtual string getGr(); 

};

class Broat : public Product

{

private:

string name;

int sale;

int num;

int group;

string gr3;

public:

   Broat();

         Broat(string name, int sale, int num){};

        virtual int getGroup(); 

   virtual string getGr();

  };

  class Drink : public Product

{

private:

string name;

int sale;

int num;

int group;

string gr4;

public:  

        Drink(string name, int sale, int num){}

        virtual int getGroup();

  virtual string getGr();

  };

  class Tinned : public Product

{

private:

string name;

int sale;

int num;

int group;

string gr5;

public:

  Tinned()

        Tinned (string name, int sale, int num){};

  virtual int getGroup(); 

  virtual string getGr();

  };

    1. Модуль cls2.cpp

Данный модуль содержит функцию, которая при вызове выводит на экран все необходимые пункты меню для работы с программой. Меню состоит из 10 пунктов.

 

void Menu ()

{

     system("cls");

     cout<<"/--------------------------------------------/"<<endl;

     cout <<setw(45)<<left<<"|1 - New BD" <<"|"<< endl;

     cout <<setw(45)<<left<< "|2 - Open file" <<"|"<< endl;

     cout <<setw(45)<<left<< "|3 - Save in file" <<"|"<< endl;

     cout <<setw(45)<<left<< "|4 - Delete data" << "|"<<endl;

     cout <<setw(45)<<left<< "|5 - Full view" << "|"<<endl;

     cout <<setw(45)<<left<<"|6 - Add data" << "|"<<endl;

     cout <<setw(45)<<left<< "|7 - Show by nymber" << "|"<<endl;

     cout <<setw(45)<<left<< "|8 - Show Minimal" <<"|"<< endl;

     cout <<setw(45)<<left<< "|9 - Show Maximal" <<"|"<< endl;

     cout <<setw(45)<<left<< "|0 - Exit" <<"|"<< endl;

    cout<<"/--------------------------------------------/"<<endl;

};

  1. Работа программы по контрольному примеру

    1. Запуск программы

После компилирования в папке с  классами появляется исполняемая программа. При запуске появляется меню со списком действий. Так как программа зациклена, мы будем возвращаться в меню до тех пор, пока не выберем для выхода соответствующий пункт меню. Для нас это 10ый пункт с номером «0». После ввода цифры «0» программа завершит работу.

Рисунок 1 – Главное меню

    1. Пункт меню “New BD”

Пункт «New BD» - вызывает процедуру, описанную в главном модуле. При ее работе создается новая база данных, согласно нашему варианту. Далее в диалоговом режиме мы производим ввод данных и после ввода, выбрав пункт 2 запроса о продолжении, выходим из процедуры ввода данных (рисунок 2) .

Рисунок 2 – Создание новой коллекции

    1.  Просмотр данных “Full view”

Так как в программе предустмотрена процедура для вывода по номеру элемента, пункт меню для просмотра всех элементов мы назвали «Full view»  - полный просмотр. После выбора этого пункта меню на экране появится таблица, в которой будут содержаться данные, хранящиеся в памяти. На рисунке 3 представлен результат работы этого пункта меню

Рисунок 3 – Просмотр данных

В данной процедуре так же предусмотрена  проверка. Если в памяти данных не храниться, то на экран будет выведено соответствующее сообщение, как представлено на рисунке 4.

Рисунок 4– Сообщение об ошибке

    1. Добавление элементов «Add data»

После создание новой БД есть возможность  добавления данных в ее конец. Эта функция представлена процедурой, вызываемой шестым пунктом меню. На рисунке 5 представлена работа данной процедуры и добавление новых данных в конец текущего массива.

Рисунок 5 – Добавление данных

Просмотрим результат с помощью предыдущего пункта меню.

 

Рисунок 6 – Просмотр результатов

    1.  Просмотр элемента по номеру “Show by number”

Если вы не хотите просматривать  весь массив информации, но знаете номер  необходимой вам записи, то вы можете воспользоваться данным пунктом меню. Он вызывает процедуру, которая выполняет переход на запись с введенным номером. Результат работы представлен на рисунке 7.

 

Рисунок 7 – Поиск элемента

Если мы выберем номер несуществующего элемента, то программа выдаст сообщение об ошибке (рисунок 8). Так же можно продолжить поиск не выходя из данной процедуры выбрав необходимый ответ о продолжении.

Рисунок 8– Поиск элемента

    1.  Выбор минимального элемента «Show minimal».

Пункт меню номер 8 предусматривает поиск минимального элемента по количеству товара в заданном массиве. Программа выдаст ошибку если записи не были загружены во время работы программы или не были введены. В противном случае она выполнит поиск минимального элемента и выведет его на экран.

Рисунок 9 – Ошибка при неоткрытом НД

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

Рисунок 10 – Поиск минимального элемента

    1. Поиск максимального элемента «Show maximal»

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

Рисунок 11 – Максимальный элемент

    1. Сохранение данных на компьютер “Save in file”

Введенные данные мы можем сохранить  на компьютер в файле с расширение *.csv, которые затем сможем открыть с помощью, например, Microsoft Excel. Для сохранения выбираем пункт меню  “Save in file”. Программа выдаст сообщение о успешном выполнении (рисунок 12).

Рисунок 12  – Удачное сохранение в файл

    1. Удаление всех данных “Delete data”

Для того, чтобы удалить данные из таблицы необходимо выбрать данный пункт меню. Согласно требованиям мы удаляем все данные, и чтобы не произошло казусов мы должны вывести сообщение о подтверждении удаления данных, и в соответствии с выбранным пунктом меню выполнить действия. На рисунке 13 представлено сообщение с предупреждением и сообщение о завершении операции.

Рисунок 13  – Подтверждение удаления

На рисунке 14 мы видим, что удаление прошло успешно.

Рисунок 14  – Проверка

Теперь все функции кроме  создания данных, добавления в конец  и открытия будут сообщать о невозможности их выполнения, так как нельзя сортировать, удалять пустое множество.

    1. Открытие данных, сохраненных на компьютере “Open database”

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

 

Рисунок 15  – Успешное открытие

Заключение

 

  1. Загрузка данных из источника (файла формата *.CSV).
  2. Просмотр всех элементов.
  3. Добавление новых элементов.
  4. Удаление элементов.
  5. Сохранение а файл (источник).
  6. Получение ряда отчетов(поиск, минимальное, максимальное).

 

 

 

 

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

  1. Страуструп, Б. Язык программирования С++ 3-е изд./ Пер. с англ. — СПб.; М.: «Невский Диалект» — «Издательство БИНОМ», 1999 г. — 991 с., ил.
  2. Стенли Б. Липпман. C++ для начинающих: Пер. с англ. 2тт. - Москва: Унитех; Рязань: Гэлион, 1992, 304-345сс.
  3. Х. Дейтел, П. Дейтел. Как программировать на C++: Пер. с англ. - Москва: ЗАО "Издательство БИНОМ", 1998. 1024с.
  4. Шилдт,  Г. А. С++ Базовый курс / Г. А. Шилдт // М.: Диалектика, 2010. — 608 с.
  5. Свободная энциклопедия ВикипедиЯ [Электронный ресурс]. – 2012. – Режим доступа: http://ru.wikipedia.org. – Дата доступа: 28.04.2012.

Приложение А

#include "cls1.cpp"

#include "cls2.cpp"

#include <iostream>

#include <fstream>

#include <stdlib.h>

#include <list>

#include <iomanip>

#include <conio.h>

#include <string>

 

 

using namespace std;

 

void Line()

{

     cout << "-";

Информация о работе Управление массивом указателей средствами объектно-ориентированного программирования