6220

Программное обеспечение для института селекции растений

Курсовая

Информатика, кибернетика и программирование

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

Русский

2012-12-30

535 KB

18 чел.

Аннотация

В данной курсовом проекте разработано программное обеспечение для института селекции растений на языке программирования С++.  Эта программа создана для хранения, ввода-вывода и обработки информации о покупках (номер покупки растения, цена покупки растения, отдел покупки растения), растениях (название растения, тип растения, срок хранения семян, технология посадки), сортах (название, характеристики, морозоустойчивость, дата выведения).

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

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

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

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

Содержание:

Аннотация 2

Введение 4

1. Описание программы 5

       1.1. Общие сведения 5

       1.2. Функциональное назначение 5

       1.3. Описание алгоритма функционирования программы 5

       1.4. Логическая структура 7

               1.4.1. Диаграммы классов  7

       1.5. Используемые технические и программные средства 9

       1.6. Вызов и загрузка 9

       1.7. Входные данные 9

       1.8. Выходные данные 9

2. Программа и методика испытаний 9

       2.1. Цель испытаний 9

       2.2. Требования к программе 9

       2.3. Средства и порядок испытаний 10

3. Руководство системного программиста 11

       3.1. Назначение и условия применения программы 11

       3.2. Характеристика программы 11

       3.3. Структура программы 11

       3.4. Проверка работоспособности программы 11

       3.5. Дополнительные возможности 11

4. Руководство оператора 12

Заключение 13

Список литературы 14

Приложение 1. Техническое задание 15

Приложение 2. Листинг программы 17


Введение

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

C++ - это попытка решения разработчиками языка С задач объектно-ориентированного программирования (Object Oriented Programming, OOP). Построенный на твердом фундаменте С, С++ помимо ООР поддерживает множество других полезных инструментов, не жертвуя при этом ни мощью, ни элегантностью, ни гибкостью С. С++ уже стал универсальным языком для программистов всего мира.

C++ - универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей C++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, C++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.

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


  1.  Описание программы.
    1.  Общие сведения.

Программное обеспечение для института селекции растений, хранения данных о клиентах, хранения данных о выданной клиентам аппаратуре и истории безналичного расчёта,  расчёта наличными, а также индикации поступления средств на лицевой счёт.

Программное обеспечение разработано для персонального компьютера IBM PC с процессором не ниже Pentium-120 со следующими характеристиками:

  •  Объем ОЗУ не менее 16 Мб;
  •  Графический адаптер SVGA;
  •  Манипулятор типа «мышь».
  •  Клавиатура

 Реализовано данное программное обеспечение на языке С++.

  1.  Функциональное назначение

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

  1.  Описание функционирования программы

Программное обеспечение не взаимодействует с другим ПО.

Основные действия пользователя в программе представлены следующими пунктами:

1.Выбор нужного пункта в меню.

2.Просмотр информации.

3. Возможность добавления информации.

4. Возможность редактирования информации.

5.Выход из программы.

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

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

 (Рис.1 схема алгоритма работы программы)


1.4Логическая структура

  1.  Диаграмма классов

(Рис.2.Диаграммы классов)

  1.  Используемые технические и программные средства

Программное обеспечение разработано для персонального компьютера Asus с процессором AMD Athlon II Dual-Core 320 со следующими характеристиками:

- Объем ОЗУ 2 Гб;

- Клавиатура

- Графический адаптер ATI Mobility Radeon HD 4500 Series;

- Манипулятор типа «touchpad»

1.6 Вызов и загрузка

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

Объем занимаемого места на носителе составляет 616 кб.(исполняемый файл) Объем памяти занимаемой программой в ОЗУ составляет 348 кб.

  1.  Входные данные

Входные данные могут быть реализованы 2-мя способами. Первый способ это ввод данных с клавиатуры. Второй способ чтение данных из файла.

Входными данными в данной программе являются 3 файла: о покупке - buy.txt, о растениях – Rastenie.txt и о сортах – Sort.txt. Формат файлов имеет расширение *.txt.

Файлы имеют следующую структуру:

buy.txt

  1.  Сохранено число, обозначающее, количество покупок находящихся в этом файле.
  2.  Сохранен номер покупки.
  3.  Сохранена сумма покупки.
  4.  Сохранен отдел покупки.
  5.  Сохранено количество растений, числящихся за этой покупкой (нумерация растений начинается с нуля).

Rastenie.txt

  1.  Сохранено название растений, находящихся в этом файле.
  2.  Сохранен тип растений.
  3.  Сохранена технология посадки.

Sort.txt

1     Сохранено название сортов, находящихся в этом файле.

  1.  Сохранено описание сорта.
  2.  Сохранена информация о морозоустойчивости растения.
  3.  Сохранен год выведения сорта.

  1.  Выходные данные

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

Данная программа использует 3 файла с входными данными (о покупке, растениях и сортах). Формат файлов имеет расширение *.txt. Файлы имеют такую же структуру как и входные данные (описана в пункте 1.7).


  1.  Программа и методика испытаний

2.1 Цель испытаний

Любое испытание нужно, чтобы проверить работу объекта, ее исправность. Для нас это очень важно, потому что от исправности зависит качество продукта. Цель испытаний - выявить все ошибки в программе и исправить их. Это  необходимо для корректной работы программы и получения верного результата, т.е. необходимо установить правильность выходных данных для любого произвольного набора входных.  Программу перед ее полным использованием нужно испытать и проверить. Для каждого файла программы можно использовать разные способы проверки, они могут быть похожи, но отличия будут. Нам нужно, чтобы программа быстро и точно выводила верный результат на экран и сохраняла в файл.

    К данной программе предъявляются следующие требования:

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

2.2 Требования к программе

Технические  и  программные  средства, требуемые для работы программы: Промышленный компьютер, программное обеспечение (Windows  98, Windows Vista, Windows XP, Windows 7), Microsoft Visual C++ 6.0. Обязательно нужны компьютерная мышь и  клавиатура.

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

Испытания проходили в следующей последовательности:

  1.  проверка корректного написания и последующее исправление ошибок, если таковые имеются, о наличии которых можно судить по сообщениям, выдаваемым редактором или отсутствии ожидаемого результата;
  2.  проверка правильности работы для каждого отдельного пункта меню:
  •  загрузка из файла покупка/растения/сорт
  •  сохранение в файл покупка/растения/сорт
  •  вывод на экран покупка/растения/сорт
  •  добавление покупка/растения/сорт

Было выполнено несколько раз испытание на правильное функционирование.

В ходе испытаний ошибок или сбоев найдено не было. Все работает верно.

 

  1.   Программа и методика испытаний

Для каждого отдельного подпункта меню

- добавление растения/покупки/сорта

- вывод на экран растения/покупки/сорта

- сохранение в файл растения/покупки/сорта и

- загрузка из файла растения/покупки/сорта

 Было выполнено несколько раз испытание на правильное функционирование. В ходе испытаний ошибок или сбоев найдено не было. Все работает верно.


 3 Руководство системного программиста

 3.1 Назначение и условия применения программы

Программное обеспечение должна обеспечивать ввод, хранение и выдачу информации:

- о покупках растений;

- о растениях;

- о сортах.

Температура окружающего воздуха должна находиться в пределах от 10 до 30 градусов по Цельсию.

Относительная влажность воздуха должно находиться в пределах 30-60%.  

Программное  обеспечение  разрабатывается для персонального компьютера IBM PC с процессором не ниже Pentium-120 со следующими характеристиками:

- объем ОЗУ не менее 16 Mb;

- графический адаптер SVGA;

- манипулятор типа "мышь" и "клавиатура".

ЭВМ должна работать под управлением операционной системы не ниже Windows 98.

Требование информационной совместимости должно быть обеспечено работой с файлами сбора информации о мониторинге определенной структуры в качестве входной и выходной информации.

3.2. Структура программы

Данная программа состоит их файлов с расширениями *.dsw, *.dsp, *.h,*.cpp, *.txt

Файлы расширения *.dsw  и *.dsp являются файлами проекта. Это Station.dsw и Station.dsp

Файлы расширения *.h являются классами. Это CAutobus.h, CRabotnic.h, CVoditel.h Класс CRabotnic.h является родительским классом для класса CVoditel.h.

В файлах расширения *.cpp записан программный код программы, описание программы. Это CAutobus.cpp, CRabotnic.cpp, CVoditel.cpp, Station.cpp

В файлах расширения *.txt записаны входные и выходные данные программы. Это autobus.txt, rabotnic.txt, voditel. txt 

3.3. Настройка программы

Настройка данной программы не требуется.

3.4. Дополнительные возможности

Программа не имеет дополнительных функций.

 3.2 Характеристика программы

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

  1.  Структура программы

Программа состоит из 3-х классов (Cbuy, Crastenie,Csort) и 12 основных функций (которые располагаются в buy.cpp). Класс Crastenie.h является родительским классом для класса Csort.h.

3.4.Проверка работоспособности программы

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


  1.  Руководство оператора

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

- отчет о продаже растений;

- список имеющихся растений;

- список имеющихся семян;

- список имеющихся семян;

- сообщение о характеристиках выбранных растений;

- сообщение о технологии посадки выбранных растений;

- указания по выращиванию выбранных растений;

- дата выведения сорта выбранного растения;

- цена выбранного растения;

- морозоустойчиво ли выбранное растение;

Для выбора нужной функции необходимо следовать подсказкам главного и побочных меню. Например, если нам надо добавить покупку, то необходимо зайти в программу, затем ввести клавишу «1» и нажать клавишу «Enter». У нас на экране появится сообщение о необходимости ввести название файла, который мы хотим занести в вектор (например, buy.txt). Нажимаем «Enter» и возвращаемся в основное меню. В программе можно работать, опираясь на ее подсказки.

При запуске программы вызывается функция glav_meny() и происходит загрузка информации из файлов (buy.txt, rastenie.txt, sort.txt) в вектора(buy, rastenie, sort). И у нас на экране появляется главное меню программы:

(Главное меню программы)

Далее у пользователя программы появляется возможность выбора любого из возможных пунктов меню. При выборе 1 пункта главного меню, появляется возможность внести из любого файла в вектор buy.

(Функция 1 - Добавление файла в вектор)

Аналогичным образом ведут себя Функции 5 и 9. За исключением того, что при нажатии Функции 5 мы записываем в вектор rastenie, а при нажатии Функции 9 в вектор sort.

После чего мы возвращаемся в главное меню.

При выборе 2 пункта главного меню вызывается функция Записи из вектора в файл. и на экране появляется:

(Функция 2 – Запись из вектора в файл)

Аналогичным образом ведут себя Функции 6 и 10. За исключением того, что при нажатии Функции 6, мы записываем из вектора rastenie в файл rastenie.txt, а при нажатии Функции 10 из вектора sort в файл sort.txt.

После чего мы возвращаемся в главное меню.

При выборе 3 пункта главного меню вызывается функцию Вывод содержимого вектора buy на экран:

 (Функция 3 – Вывод на экран содержимого вектора)

Аналогичным образом ведут себя Функции 7 и 11. За исключением того, что при нажатии Функции 7, мы выводим на экран из вектора rastenie, а при нажатии Функции 11 из вектора sort.

При выборе 4 пункта главного меню вызывается функция Записи в вектор buy с новым содержимым:

Вводим новую покупку. После чего появляется подменю с тремя функциями.

1. Ввести новое растение

2. Выбрать растение из списка имеющихся.

0. Вернуться в главное меню

При выборе 1 пункта подменю программа выводится                                                                                                              ___________просьба ввести новое __________растение.

________При выборе 2 ____________пункта подменю программа выводится просьба ввести номер имеющегося растения (нумерация начинается с нуля).

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

При выборе 8 пункта главного меню вызывается функция Записи в вектор rastenie с новым содержимым:

 Вводим новое растение.

Аналогичным образом ведет себя Функции 12. За исключением того, что при нажатии Функции 12, мы вводим новый сорт.

При выборе 0 пункта главного меню программа заканчивает свою работу.


Заключение

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


Список литературы:

  1.  Лекции по курсу Программирование на ЯВУ С++ 
  2.  Методические указания к выполнению курсовой работы по дисциплине “Программирование на языке высокого уровня” для студентов второго курса специальности 071900 ”Информационные системы в технике”, — М.: Редакционно-издательский отдел РГАСХМ, 2004.
  3.  Павловская Т.А., С++ Практикум, — М.: Питер, 2002.
  4.  Технология разработки программного обеспечения: Учебник /С.Орлов — СПб.: Питер, 2002.
  5.  Халперн П. Стандартная библиотека C++ на примерах. — М.: Издательский дом “Вильямс”, 2001.

 


Приложение 1. Техническое задание

  1.  ВВЕДЕНИЕ

Наименование  — прикладное программное обеспечение деятельности института селекции растений.

Краткая характеристика — прикладное программное обеспечение института селекции растений с информационной базой об имеющихся растениях.

  1.  ОСНОВАНИЕ ДЛЯ РАЗРАБОТКИ

Учебный план специальности 230201 и задание преподавателя для выполнения курсовой работы.

3. НАЗНАЧЕНИЕ РАЗРАБОТКИ

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

4.ТРЕБОВАНИЯ К ПРОГРАММЕ

4.1. Требования к функциональным характеристикам

4.1.1. Программное обеспечение должно обеспечить ввод информации о:

- покупках:

  •  номер покупки растения
  •  цену покупки растения
  •  отдел покупки растения

-растениях:

  •  название растения
  •  тип растения
  •  срок хранения семян
  •  технологии посадки

- сортах:

  •  названия сорта
  •  характеристика сорта
  •  морозоустойчивость
  •  дата выведения сорта

4.1.1. По требованию пользователя система должна обеспечить хранение информации о:

- покупках:

  •  номер покупки растения
  •  цену покупки растения
  •  отдел покупки растения

-растениях:

  •  название растения
  •  тип растения
  •  срок хранения семян
  •  технологии посадки

- сортах:

  •  названия сорта
  •  характеристика сорта
  •  морозоустойчивость
  •  дата выведения сорта

4.1.2. По требованию пользователя система должна обеспечить выдачу:

- отчет о продаже растений;

- список имеющихся растений;

- список имеющихся семян;

- список имеющихся семян;

- сообщение о характеристиках выбранных растений;

- сообщение о технологии посадки выбранных растений;

- указания по выращиванию выбранных растений;

- дата выведения сорта выбранного растения;

- цена выбранного растения;

- морозоустойчиво ли выбранное растение;

4.1.3. Программное обеспечение должно работать в консольном режиме и поддерживать работу с клавиатуры.

4.1.4. Собранная информация может быть сохранена на внешнем носителе в выходном файле автоматически и по требованию пользователя.

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

4.1.6. Программное обеспечение при запуске может использовать в качестве входной информации файл с ранее записанными данными.

4.1.7. Системное время и дата поддерживаются встроенными часами.

4.2. Требования к надежности

4.2.1. Программа должна обрабатывать ошибочные действия пользователя и сообщать ему об этом.

4.2.2. Программа должна учитывать отсутствие данных за требуемый период в связи с возникшим сбоем.

4.3.  Условия эксплуатации

4.3.1. Температура окружающего воздуха  должна находится в пределах от 10 до 30 градусов по Цельсию.

4.3.2. Относительная влажность воздуха должна  находиться в пределах 30-60%.

4.3.3. Данным программным обеспечение может управлять любой квалифицированный сотрудник.

4.4.  Требования к составу и параметрам технических средств

4.4.1. Программное  обеспечение  разрабатывается для персонального компьютера IBM PC с процессором не ниже Pentium-120 со следующими характеристиками:

- объем ОЗУ не менее 16 Mb;

- графический адаптер SVGA;

- манипулятор типа "мышь".

4.4.2. ЭВМ должна работать под управлением операционной системы не ниже WINDOWS 98.

4.5. Требования к информационной и программной совместимости

4.5.1. Требование информационной совместимости должно быть обеспечено работой с файлами сбора информации о мониторинге определенной структуры в качестве входной и выходной информации.

5. ТРЕБОВАНИЯ К ПРОГРАММНОЙ ДОКУМЕНТАЦИИ

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

6. ТЕХНИКО-ЭКОНОМИЧЕСКИЕ ПОКАЗАТЕЛИ

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

7. СТАДИИ И ЭТАПЫ РАЗРАБОТКИ

7.1. Стадия аналитической разработки:

  •  ознакомление с теоретическим материалом;
  •  аналитическая обработка теоретической информации.
  •  объектно-ориентированный анализ;
  •  разработка диаграммы объектов;
  •  разработка диаграммы последовательности;
  •  объектно-ориентированное проектирование;
  •  разработка диаграммы классов.

7.2. Стадия программной разработки:

  •  разработка классов и отдельных модулей программы;
  •  отладка полученных классов и модулей;
  •  объединение структур и формирование единой программы;
  •  тестирование и получение результатов работы программы.

7.3. Стадия аналитического анализа:

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

8. ПОРЯДОК КОНТРОЛЯ И ПРИЕМКИ

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

8.2. Копии всех документов включают:

  •  исходный текст программы;
  •  загрузочные модули (скомпилированная программа и файлы с входными данными);
  •  текстовую и графическую документацию.

Копии передаются на магнитном носителе преподавателю не позднее, чем за 3 дня до защиты.


Приложение 2. Листинг программы

CBuy.h

#include <fstream>

#include <vector>

#include "CRastenie.h"

class CBuy

{

 private:

   int Number;

int Sum;

   char * Otdel;

  std::vector <CRastenie *> vr;

 public:

      int get_Number(void);

      void set_Number(int ANumber);

   int get_Sum(void);

      void set_Sum(int ASum);

   char * get_Otdel(void);

      void set_Otdel(char * AOtdel);

   

   CBuy();

   CBuy(CBuy & As);

   CBuy(int ANumber,int ASum,char * AOtdel);

   ~CBuy ();

void Read();

void Write();

void ReadF(std::ifstream &f);

void WriteF(std::ofstream &f);

void WriteV( );

void WriteFV(std::ofstream &f);

void ReadFV(std::ifstream &f);

void AddRastenieInBuy(CRastenie * r);

int CountRastenieInBuy ( );

};

 CRastenie.h

#ifndef __CRastenie__

#define __CRastenie__

#include <fstream>

class CRastenie

{

 private:

   char Name [30];

char Tip [50];

   char Tehnologi [120];

 public:

      char  * get_Name(void);

      void set_Name(char * AName);

   char  * get_Tip(void);

      void set_Tip(char * ATip);

      char  * get_Tehnologi(void);

      void set_Tehnologi(char * ATehnologi);

  CRastenie();

  CRastenie(CRastenie & As);

  CRastenie(char * AName,char * ATip,char * ATehnologi);

void Read();

void Write();

void ReadF(std::ifstream &f);

void WriteF(std::ofstream &f);

};

#endif

CSort.h

#include <fstream>

#include "CRastenie.h"

class CSort:public CRastenie

{

 private:

  char  NameSort[50];

  char  Description[300];

  char  Frost[3];

     int Year;

 public:

      char * get_NameSort(void);

      void set_NameSort(char * AnewNameSort);

   char * get_Description(void);

      void set_Description(char * AnewDescription);

   char * get_Frost(void);

      void set_Frost(char * AnewFrost);

      int get_Year(void);

   void set_Year(int AnewYear);

CSort();

   CSort(char * AName,char * ATip,char * ATehnologi,char * ANameSort,char * ADescription,char * AFrost,int AYear);  

   ~CSort();

void Write();

void Read();

void WriteF(std::ofstream & f);

void ReadF(std::ifstream & f);

};

 b.cpp

#include "stdafx.h"

#include <string.h>

#include "CBuy.h"

#include <iostream.h>

extern std::vector <CBuy *> v;

extern std::vector <CRastenie *> w;

int CBuy::get_Number(void)

   { return Number;}

void CBuy::set_Number(int  ANumber)

    { Number = ANumber;}

int CBuy::get_Sum(void)

   { return Sum;}

void CBuy::set_Sum(int  ASum)

    { Sum = ASum;}

char  * CBuy::get_Otdel(void)

  { return Otdel;}

CBuy::CBuy()

{

Number = 10;

Sum = 370;

    Otdel= new char [8];

    strcpy( Otdel ,"Flowers");

}

 

  CBuy::CBuy(CBuy & As)

{

Number = As.Number;

Sum = As.Sum;

    Otdel= new char [strlen( As.Otdel)+1];

 strcpy(Otdel, As.Otdel);     

}

CBuy::CBuy(int ANumber, int ASum, char * AOtdel)

{

Number = ANumber;

Sum = ASum;

    Otdel= new char [strlen( AOtdel)+1];

 strcpy(Otdel, AOtdel);

}

 

CBuy::~CBuy()

 {

      delete [ ] Otdel;

 }

  void CBuy::set_Otdel(char * AOtdel)

  {

    if (Otdel!=0)

  delete[] Otdel;

    Otdel = new char[strlen(AOtdel)+1];

    strcpy(Otdel, AOtdel);

  }

void CBuy::Read(void)

{

cout << "vvedite informazhiy o pokupke" << endl;

cout << "vvedite Number" << endl;

cin >> Number;

cout << "vvedite Sum" << endl;

   cin >> Sum;

cout << "vvedite Otdel" << endl;

 char s[1000];

 cin >> s;

 Otdel = new char [strlen(s)+1];

 strcpy(Otdel, s);  

 int i;

int command = 4;

 CRastenie  * Temp100;

 while (command != 0)

 { cout << "Please enter operation..." << endl;

  cout << "1. Add new Rastenie in Buy" << endl;

  cout << "2. Add Rastenie in Buy" << endl;

  cout << "0. Exit from this menu" << endl;

  cin >> command;

  if (command==1)

  { Temp100=new CRastenie();

   Temp100->Read();

   w.push_back(Temp100 );

   AddRastenieInBuy(Temp100);

  }

  else if (command==2)

  {

cout << "Vvedite nomer rastenija v glob-spiske";

cin >> i;

   AddRastenieInBuy (w[i]);

  }

  else

  {cout << "Invalid command" << endl;

  }

 }

}

void CBuy::ReadF(std::ifstream &f)

{

char s[1000];

f >> Number >> Sum >> s;

Otdel= new char [strlen(s)+1];

  strcpy(Otdel, s);

ReadFV(f);

}

void CBuy::Write(void)

{

cout << "informazhiy o pokupke" << endl;

cout << "Number: " << Number <<endl;

cout << "Sum: " << Sum << endl;

cout << "Otdel: " << Otdel << endl;

}

void CBuy::WriteF(std::ofstream &f)

{

f << Number << std::endl << Sum << std::endl << Otdel << std::endl;

   WriteFV( f );  

}

void CBuy::AddRastenieInBuy(CRastenie * r)

{ vr.push_back( r );

}

void CBuy::WriteV( )

{cout << "Kolichestvo rasteni: " <<

CountRastenieInBuy() << endl;

 for(int i =0; i< CountRastenieInBuy(); i++)

 {vr[i]->Write( );

}

}

void CBuy::WriteFV( std::ofstream &f)

{  f << CountRastenieInBuy () << std::endl;

 for(int i =0; i< CountRastenieInBuy (); i++)

 {for(int n = 0; n<w.size(); n++)

{  if(w[n] == vr[i])  break;

}

 f << n << std::endl;

}

}

void CBuy::ReadFV(std::ifstream & f )

{  int N2, n2;

 f >> N2;

 for(int i = 0; i < N2; i++)

{

f >> n2;

vr.push_back(w[n2]);

}

}

int CBuy::CountRastenieInBuy ( )

{  return vr.size();

}

 

Cr.cpp

#include "stdafx.h"

#include <string.h>

#include "CBuy.h"

#include <iostream.h>

char  * CRastenie::get_Name (void)

  { return Name;}

void CRastenie::set_Name (char * AName)

   { strcpy (Name,AName);}

char  * CRastenie::get_Tip (void)

  { return Tip;}

void CRastenie::set_Tip (char * ATip)

   { strcpy(Tip ,ATip);}

char  * CRastenie::get_Tehnologi(void)

  { return Tehnologi;}

void CRastenie::set_Tehnologi (char * ATehnologi)

   { strcpy (Tehnologi ,ATehnologi);}

CRastenie::CRastenie()

{ strcpy( Name ,"Tomato");

   strcpy( Tip ,"Seeds");

   strcpy( Tehnologi ,"To_plant_in_the_earth_and_to_water");

}

   CRastenie::CRastenie(CRastenie & As)

{ strcpy( Name, As.Name);

 strcpy(Tip, As.Tip);

   strcpy( Tehnologi, As.Tehnologi);

}

CRastenie::CRastenie(char * AName,char * ATip,char * ATehnologi)

{ strcpy( Name ,AName);

 strcpy(Tip ,ATip);

   strcpy( Tehnologi ,ATehnologi);

}

 

void CRastenie::Read(void)

{

cout << "vvedite informazhiy o rastenie" << endl;

cout << "vvedite Name" << endl;

cin >> Name;

cout << "vvedite Tip" << endl;

 cin >> Tip;

cout << "vvedite Tehnologi" << endl;

cin >> Tehnologi;

}

void CRastenie::ReadF(std::ifstream &f)

{

 f >> Name >> Tip >> Tehnologi ;

}

void CRastenie::Write(void)

{

cout << "informazhiy o rastenie" << endl;

cout << "Name: " << Name <<endl;

cout << "Tip: " << Tip << endl;

cout << "Tehnologi: " << Tehnologi << endl;

}

void CRastenie::WriteF(std::ofstream &f)

{ f << Name << std::endl << Tip << std::endl << Tehnologi << std::endl;

}

S.cpp 

#include "stdafx.h"

#include <string.h>

#include "CSort.h"

#include "CRastenie.h"

#include <iostream.h>

char * CSort::get_NameSort(void)

  { return NameSort;}

void CSort::set_NameSort(char * ANameSort)

   { strcpy( NameSort ,ANameSort);}

char * CSort::get_Description(void)

  { return Description;}

void CSort::set_Description(char * ADescription)

   { strcpy( Description ,ADescription);}

char * CSort::get_Frost(void)

  { return Frost;}

void CSort::set_Frost(char * AFrost)

   { strcpy( Frost ,AFrost);}

int CSort::get_Year(void)

   { return Year;}

void CSort::set_Year(int AYear)

    { Year = AYear;}

CSort::CSort():CRastenie()

{

strcpy( NameSort ,"Kivi");

strcpy( Description ,"Leaves_roundish,with_slightly_pointed_top,dark_green_colour,with_a_glossy_surface_and_the_rough_bottom_party.Fruits_large,weight_from_80_to_150,the_oval_form.");

   strcpy( Frost ,"yes");

Year = 2011;

}

 

 CSort::CSort(char * AName,char * ATip,char * ATehnologi,char * ANameSort,char * ADescription,char * AFrost,int AYear):CRastenie(AName,ATip,ATehnologi)

{

strcpy( NameSort ,ANameSort);

strcpy( Description ,ADescription);

strcpy( Frost ,AFrost);

   Year = AYear;

}

 

CSort::~CSort()

 {

 }

void CSort::Read(void)

{

 CRastenie::Read();

cout << "vvedite informazhiy o sorte" << endl;

cout << "vvedite NameSort" << endl;

cin >> NameSort;

cout << "vvedite Description" << endl;

cin >> Description;

cout << "vvedite Frost" << endl;

cin >> Frost;

cout << "vvedite Year"<< endl;

cin >> Year;

}

void CSort::ReadF(std::ifstream & f)

{

    CRastenie::ReadF(f);

 f >> NameSort >> Description >> Frost >> Year;

}

void CSort::Write(void)

{

cout << endl;

CRastenie::Write();

cout << "informazhiy o sorte" << endl;

cout << "NameSort: " << NameSort << endl;

cout << "Description: " << Description << endl;

cout << "Frost: " << Frost << endl;

cout << "Year: "<< Year << endl;

}

void CSort::WriteF(std::ofstream & f)

{

CRastenie::WriteF(f);

f << NameSort << std::endl << Description << std::endl << Frost << std::endl  << Year << std::endl;

}

buy.cpp

#include "stdafx.h"

#include <string.h>

#include "CBuy.h"

#include "CRastenie.h"

#include "CSort.h"

#include <iostream.h>

#include <fstream>

#include <vector>

void ReadFAllCBuy(char * fn, std::vector <CBuy *> & v)

{  std::ifstream f(fn);

 int N;

 f>>N;

 CBuy *b;

for(int i=0; i<N; i++)

{ b = new CBuy();

  b->ReadF(f);

  v.push_back(b);

}

f.close();

}

void WriteFAllCBuy(char * fn, std::vector <CBuy *> v)

{  std::ofstream f(fn);

 f<<v.size()<< std::endl;

for(int i=0; i<v.size(); i++)

{   v[i]->WriteF(f);

}

f.close();

}

void WriteAllCBuy(std::vector <CBuy *> v)

{   cout<<"kolich buy =" <<v.size()<< endl;

for(int i=0; i<v.size(); i++)

{   v[i]->Write();

}

}

void ReadFAllCRastenie(char * fn, std::vector < CRastenie *> & w)

{  std::ifstream f(fn);

 int N;

 f>>N;

 CRastenie *m;

for(int i=0; i<N; i++)

{ m = new CRastenie();

 m->ReadF(f);

 w.push_back(m);

}

f.close();

}

void WriteFAllCRastenie(char * fn, std::vector < CRastenie *> w)

{  std::ofstream f(fn);

 f<<w.size()<< std::endl;

for(int i=0; i<w.size(); i++)

{  w[i]->WriteF(f);

}

f.close();

}

void WriteAllCRastenie(std::vector <CRastenie *> w)

{   cout<<"kolich rasteni =" <<w.size()<< endl;

for(int i=0; i<w.size(); i++)

{ w[i]->Write();

}

}

void ReadFAllCSort(char * fn, std::vector <CSort *> & vs)

{  std::ifstream f(fn);

 int N;

 f>>N;

 CSort *o;

for(int i=0; i<N; i++)

{ o = new CSort();

  o->ReadF(f);

  vs.push_back(o);

}

f.close();

}

void WriteFAllCSort(char * fn, std::vector <CSort *> vs)

{  std::ofstream f(fn);

 f<<vs.size()<< std::endl;

for(int i=0; i<vs.size(); i++)

{   vs[i]->WriteF(f);

}

f.close();

}

void WriteAllCSort(std::vector <CSort *> vs)

{   cout<<"kolich sort =" <<vs.size()<< endl;

for(int i=0; i<vs.size(); i++)

{   vs[i]->Write();

}

}

std::vector <CBuy *> v;

std::vector <CRastenie *> w;

   std::vector <CSort *> vs;

void main(void)

{

ReadFAllCBuy ("buy.txt", v);

ReadFAllCRastenie ("rastenie.txt", w);

ReadFAllCSort ("sort.txt", vs);

char fn[600];

int kod;

do{ cout << "1. Buy File -> vector" <<  endl;

cout << "2. Buy vector -> File" <<  endl;

cout << "3. Buy vector -> Display" <<  endl;

cout << "4. Add Buy to vector" <<  endl;

cout << "5. Rastenie File -> vector" <<  endl;

cout << "6. Rastenie vector -> File" <<  endl;

cout << "7. Rastenie vector -> Display" <<  endl;

cout << "8. Add Rastenie to vector" <<  endl;

cout << "9. Sort File -> vector" <<  endl;

cout << "10.Sort vector -> File" <<  endl;

cout << "11.Sort vector -> Display" <<  endl;

cout << "12.Add Sort to vector" <<  endl;

cout << "0. Exit" <<  endl;

cout << "Select: 1-12 or 0." <<  endl;

cin >> kod;

switch (kod)

{ case 1:

cout << "Input File name: " << endl;

cin >> fn;

ReadFAllCBuy(fn, v);

break;

case 2:

cout << "Input File name: " << endl;

cin >> fn;

WriteFAllCBuy(fn, v);

break;

case 3:

WriteAllCBuy(v);

break;

case 4:

  CBuy * b;

           b=new CBuy;

b->Read();

v.push_back(b);

break;

case 5:

cout << endl;

cout << "Input File name: " << endl;

cin >> fn;

ReadFAllCRastenie(fn, w);

break;

case 6:

cout << endl;

cout << "Input File name: " << endl;

cin >> fn;

WriteFAllCRastenie(fn, w);

break;

case 7:

WriteAllCRastenie(w);

break;

case 8:

  CRastenie *a;

  a=new CRastenie;

a->Read();

w.push_back(a);

break;

    case 9:

cout << "Input File name: " << endl;

cin >> fn;

ReadFAllCSort(fn, vs);

break;

case 10:

cout << "Input File name: " << endl;

cin >> fn;

WriteFAllCSort(fn, vs);

break;

case 11:

WriteAllCSort(vs);

break;

case 12:

  CSort * o;

           o=new CSort;

o->Read();

vs.push_back(o);

break;

}

}  while (kod > 0);

cout << "GOOD BYE"<< endl;

}

PAGE 6


 

А также другие работы, которые могут Вас заинтересовать

82618. Возникновение Олимпийских игр 98.5 KB
  Античные Олимпийские игры. Олимпийские игры крупнейшие международные комплексные спортивные соревнования современности которые проводятся каждые четыре года. Как же оно всё–-таки возникло это легендарное это удивительное явление под названием Олимпийские игры...
82619. История развития легкой атлетики 38 KB
  Зарождение легкоатлетического спорта берёт своё начало в глубокой древности. Первобытные люди приобретали навыки быстроты, выносливость и ловкости. Древний человек научился использовать в качестве метательного оружия разнообразные предметы: палку, острогу, копьё.
82620. Организация и судейство соревнований 92.5 KB
  Деятельность судейской коллегии по легкой атлетике Коллегия судей соответствующей федерации для проведения соревнований назначает главную судейскую коллегию ГСК которая состоит из главного судьи главного секретаря их заместителей и помощников в зависимости от ранга соревнований.
82621. Возрождение Олимпийских игр 374 KB
  По-настоящему древними Играми стали интересоваться лишь когда начались раскопки Олимпии спящей под многовековыми наслоениями. Олимпийские игры просто должны были состояться Однако дело ведь это очень сложное: целые горы организационной работы.
82622. Виды легкой атлетики и их характеристика 89 KB
  Легкая атлетика - вид спорта, объединяющий такие дисциплины как: ходьба, бег, прыжки (в длину, высоту, тройной, с шестом), метания (диск, копье, молот, и толкание ядра) и легкоатлетические многоборья. Один из основных и наиболее массовых видов спорта. Лёгкая атлетика относится к весьма консервативным видам спорта.
82623. ОРГАНИЗАЦИЯ, ПРОВОДЯЩАЯ СОРЕВНОВАНИЯ 107 KB
  Вышестоящие спортивные организации могут поручать подготовку и проведение соревнований подчиненным им организациям или советам спортивных обществ и ведомств. Ответственность за подготовку и проведение соревнований несут ОПС дирекция СББ судейская коллегия.
82625. Легкая атлетика. Спринт 86.5 KB
  Спринт — совокупность легкоатлетических дисциплин, где спортсмены соревнуются в беге на короткие дистанции («бег на скорость») по стадиону. Длина дистанции в спринте составляет от 30 до 600 метров. В программу Олимпийских игр включен гладкий бег на 100, 200 и 400 метров у мужчин и женщин...
82626. Легкая атлетика. Бег на средние дистанции 393 KB
  Бег на средние дистанции это бег на расстояние от 800 метров до двух километров. Он является одним из популярных видов легкой атлетики так как не такой продолжительный как бег на длинные дистанции и не настолько быстрый как спринт.