Объектно-ориентированное программирование на языке С++

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    217,86 Кб
  • Опубликовано:
    2014-12-13
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Объектно-ориентированное программирование на языке С++

Институт Информационных технологий

Кафедра Математическое и программное обеспечение ЭВМ

 










КУРСОВАЯ РАБОТА

по дисциплине Объектно-ориентированное программирование

на тему "Объектно-ориентированное программирование на языке С++"


Выполнил

студент группы 1ИС 310

Шидловская Валерия Игоревна





Череповец, 2014

Оглавление

Введение

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

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

3.      Объектно-ориентированный анализ предметной области

4. Описание логической структуры программы

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

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

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

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

. Тестирование программы

Заключение

Список используемой литературы

Приложения

Введение


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

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

1. Общие сведения


Программа предназначена для обработки информации об объектах предметной области "Бытовая техника".

В программе использовались следующие концепции ООП:

·        механизм наследования;

·        принцип инкапсуляции;

·        перегрузка операторов.

Для обработки объектов в программе предусмотрены функции добавления, удаления, сортировки, копирования и поиска по полям, выбранным пользователем.

Разработка программного продукта была произведена с использованием средств языка С++ в среде визуального программирования C++ Builder 6.0 в операционной системе Windows 7.

 

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


Программа предназначена для обработки данных, относящихся к предметной области "Бытовая техника" и выполняет следующие возможности:

ввод данных с клавиатуры;

сохранение данных в файл;

загрузка данных из файла;

просмотр данных об объектах выбранного класса;

сортировка данных по полю "Цена"(по возрастанию/убыванию);

сравнение объектов класса по полю "Цена";

копирование данных;

поиск данных по названию элемента интерьера.

 

 

3.      Объектно-ориентированный анализ предметной области


Для описания предметной области разработана следующая иерархия классов (рис.1):

Рис. 1. Иерархия родственных классов

Класс-интерфейс (абстрактный базовый класс) содержит объявление чисто виртуальных функций (или отложенных методов). В данном случае, это функция печати print(). Объявляется такая функция в открытой части класса.

Производный от АБК класс - базовый класс Бытовая техника - содержит общие характеристики элементов бытовой техники, такие как название, мощность, цена.

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

Классы Замораживающая техника, Пылесосы, Микроволновые печи являются производными для БК. Механизм наследования - одиночный. Каждый производный класс содержит элементы родительского класса и при этом включает собственные, присущие только ему характеристики.

Класс Замораживающая техника содержит 2 числовые характеристики - "Максим. температура" и "Количество камер" и в свою очередь имеет 2 производных класса со своими характеристиками:

Морозильные камеры ("Расположение");

Холодильники ("Схема компоновки");

Класс Пылесосы имеет числовые характеристики "Объём пылесборника", "Мощность всасывания", "Количество насадок" и не имеет производных классов.

Класс Микроволновые печи (СВЧ) содержит одну строковую характеристику - "Тип".

В программе создаются объекты классов Морозильные камеры, Холодильники, Пылесосы, Микроволновые печи. Внутри этих классов содержатся функции файлового ввода / вывода, перегруженные операторы присваивания, сравнения, а виртуальная функция вывода описана в соответствии с компонентными данными каждого класса.

 

4. Описание логической структуры программы


Программа одномодульная, содержащая в себе описание классов, создание объектов и осуществление работы с ними.

Для создания иерархии родственных типов используется механизм одиночного наследования. Количество уровней в иерархии - 4.

В программе предусмотрены следующие компонентные функции:

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

·        save - сохранение в файл, в качестве формального параметра указывается файл - приемник;

·        clear - очищает файл перед записью;

·        operator = - перегруженный оператор присваивания, используется для присвоения объектов;

·        оperator == - перегруженный оператор сравнения[1];

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

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

При нажатии на кнопку "Сортировать" производится сортировка по возрастанию / убыванию по полю "Цена".

Кнопка "Сравнить" позволяет сравнить выведенные в таблицу объекты по "Цене" с заданными номерами.

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

Обработка исключительных ситуаций выполняется при добавлении информации в таблицы: осуществляется проверка на соответствие типов данных введенной информации и проверка на ввод пустого значения. Также в поля, где предусмотрен ввод чисел, невозможен ввод букв. При возникновении ошибки появляется соответствующее информационное сообщение[2].

 

 

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

Системные средства:

) операционные системы:

·        Windows XP;

·        Windows 7;

·        Windows 8.

) аппаратные средства:

·        клавиатура;

·        мышь;

·        монитор.

 

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


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

 

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


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

 

Таблица 1.

Морозильные камеры.

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

Тип данных

Название

String

Мощность

Integer

Цена

Integer

Максим. Температура

Integer

Количество камер

Integer

Расположение

String


Таблица 2.

Холодильники.

Входные данные Тип данных


Название

String

Мощность

Integer

Цена

Integer

Максим. Температура

Integer

Количество камер

Integer

Схема компоновки

String


Таблица 3.

Пылесосы.

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

Тип данных

Название

String

Мощность

Integer

Цена

Integer

Объём пылесборника

Integer

Мощность всасывания

Integer

Количество насадок

Integer


Таблица 4.

Микроволновые печи.

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

Тип данных

Название

String

Мощность

Integer

Цена

Integer

Тип

String


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


Выходной информацией является информация сохраняемая в файл и выводимая на экран.

9. Тестирование программы


Тестирование программы оформлено в виде таблиц. Тестированию каждого класса соответствует отдельная таблица(табл.5 - табл.8).

 

Таблица 5.

Морозильные камеры.

Дата

Тестируемая функция

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

Результат работы

27.05.2014

Создание объекта класса

Нет

Успех

29.05.2014

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

moroz_kamera.txt

Успех

30.05.2014

Load - загрузка из файла

moroz_kamera.txt

Успех

30.05.2014

Print - вывод на экран

StringGrid1

Успех

30.05.2014

Сравнение

Объекты данного класса

Успех


Таблица 6.

Холодильники.

ДатаТестируемая функцияВходные данныеРезультат работы




27.05.2014

Создание объекта класса

Нет

Успех

29.05.2014

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

holodilniki.txt

Успех

30.05.2014

Load - загрузка из файла

holodilniki.txt

Успех

30.05.2014

Print - вывод на экран

StringGrid2

Успех

30.05.2014

Сравнение

Объекты данного класса

Успех


Таблица 7.

Пылесосы.

ДатаТестируемая функцияВходные данныеРезультат работы




29.05.2014

Создание объекта класса

Нет

Успех

01.06.2014

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

pilesos.txt

Успех

01.06.2014

Load - загрузка из файла

pilesos.txt

Успех

01.06.2014

Print - вывод на экран

StringGrid4

Успех

01.06.2014

Сравнение

Объекты данного класса

Успех


 

Таблица 8.

Микроволновая печь.

ДатаТестируемая функцияВходные данныеРезультат работы




27.05.2014

Создание объекта класса

Нет

Успех

04.06.2014

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

microv_pechi.txt

Успех

04.06.2014

Load - загрузка из файла

microv_pechi.txt

Успех

04.06.2014

Print - вывод на экран

StringGrid3

Успех

04.06.2014

Сравнение

Объекты данного класса

Успех

 

Заключение


В результате проделанной работы был закреплен материал, изученный в курсе дисциплины "Объектно-ориентированное программирование". Приобретены навыки программирования в среде C++ Builder,также было разработано приложение, которое отвечает всем требованиям, описанным в техническом задании (Приложение 1).

Список используемой литературы


1.      Лаптев В.В. "С++. Объектно - ориентированное программирование: Учебное пособие. - СПб.: Питер, 2008. - 464 с.: ил. - (Серия "Учебное пособие")"

.        Р. Лафоре "Объектно-Ориентированное Программирование в С++.": 4-е издание.; - М.:Питер, - 2004. - 902 с.

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

 

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

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

1.      Основание для разработки.

Основанием для разработки является задание на курсовую работу по дисциплине "Объектно-ориентированное программирование" по теме "Объектно-ориентированное программирование на языке C++".

Задание: программирование визуальный класс файловый

A.      Разработайте иерархию родственных типов, корневой класс которой абстрактный базовый класс (класс-интерфейс), для моделирования и обработки данных предметной области набором отложенных методов - полиморфная обработка родственных объектов (согласно варианта А.х.х).

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

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

2.      Назначение.

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

Пользователю предоставляются возможности:

         просмотр информации о элементах бытовой техники;

         добавление данных о элементах бытовой техники;

         чтение данных из файла;

         сохранение данных в файл;

         сортировка элементов по стоимости;

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

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

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

         Программа должна включать в себя:

1.      Иерархию родственных типов, корневой класс которой абстрактный базовый класс - класс интерфейс, для моделирования предметной области "Бытовая техника". Абстрактные классы используются в качестве обобщенных концепций, на основе которых можно создавать более конкретные производные классы. Невозможно создать объект типа абстрактного класса; однако можно использовать указатели и ссылки на типы абстрактного класса. Класс, содержащий хотя бы одну чисто виртуальную функцию, считается абстрактным. Классы, производные от абстрактного класса, должны реализовать все его чисто виртуальные функции, иначе они также будут абстрактными классами.

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

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

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

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

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

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

Добавление элемента с некорректными данными (вместо букв введены цифры или наоборот). При этом выводится сообщение об ошибке.

Добавление пустого элемента (заполнены не все поля). При этом выводится сообщение об ошибке. Для корректного добавления необходимо заполнить все поля.

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

Система предназначена для работы на IBM-совместимых персональных компьютерах с ОС Windows 98/ME/2000/XP/Vista/7/8.

Минимальная конфигурация:

-        тип процессора PentiumIII / PentiumIV;

-        объем оперативного запоминающего устройства 16 Мб и более;

         объем свободного места на жестком диске 5 Мб.

Для работы программы требуются внешние устройства - монитор, клавиатура, мышь.

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

Программа будет разработана на языке C++ в среде C++ Builder 6 и должна работать под управлением операционной системы семейства Windows (Windows 98/ME/2000/XP/Vista/7/8). Дополнительного программного обеспечения для функционирования программы не требуется.

5. Требования к программной документации.

Программная документация будет содержать:

·        расчетно-пояснительную записку;

·        текст программы;

·        руководство пользователя.

6. Стадии и этапы разработки.

 

Таблица П1.1.

Этапы разработки

Этапы разработки

Плановая дата

Фактическая дата

Объектно-ориентированный анализ предметной области



Проектирование необходимых динамических структур



Разработка и реализация алгоритмов



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



Отладка и тестирование



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



. Порядок контроля и приемки.

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

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


//---------------------------------------------------------------

//AБК - ИНТЕРФЕЙС

//---------------------------------------------------------------

class interf

{:void print(TStringGrid*,int&) const=0;(){};~interf(){};

};

//-----------------------

// БК БЫТОВАЯ ТЕХНИКА 2

//---------------------------------------------------------------bit_texnica:public interf

{protected:name; // названиеpower; // мощность

int cena; //стоимоть:_texnica(); //конструктор по умолчанию

bit_texnica(AnsiString n, int mo, int p); // констр c параметрами_texnica (const bit_texnica &m); //копирующий конструкторprint(TStringGrid*,int&)const; //печатьsave(char *s); //сохранениеclear(char* s); //очистка файла перед записьюload (char* s,TStringGrid*,int&); //загрузка_texnica& operator=(const bit_texnica &m); //перегрузка присваиванияbool operator==(const bit_texnica& m1, bit_texnica& m2); //перегрузка сравнения

};

bit_texnica::bit_texnica() // конструктор по умолчанию !

{ name="Ariston";

power=123;

cena=11500; }

//конструктор с параметрами !

bit_texnica::bit_texnica (AnsiString n ,int mo, int p)

{ name=n ;=mo;=p;

}

//копирующий конструктор !_texnica::bit_texnica (const bit_texnica &m)

{if (this!=&m)

{ name=m.name;= m.power;=m.cena; }

}bit_texnica::print(TStringGrid *k,int &j) const //печать

{=j+1;>RowCount=j+1;>Cells[0][j] = name;>Cells[1][j] = IntToStr(power);>Cells[2][j] = IntToStr(cena);

};//-------------------------------------------------------------

//ПК1 ЗАМОРАЖИВАЮЩАЯ ТЕХНИККА 3.1//----------------------------------------------------------zamor_tehnica:public bit_texnica

{public:_tehnica();_tehnica (AnsiString n ,int mo, int p,int maxt,int s); //maxt-максим темп,s-кол-во камер_tehnica (const zamor_tehnica &m); //копирующий конструктор

~zamor_tehnica(){}; //деструкторprint(TStringGrid *k,int &j) const; //печатьsave(char *s); //сохранениеclear(char* s); //очистка файла перед записьюload (char* s,TStringGrid*,int&); //загрузка из файла_tehnica& operator=(const zamor_tehnica &m); //перегрузка присваиванияbool operator==(const zamor_tehnica& m1, zamor_tehnica& m2); //перегрузка сравнения: //доступ ограничен, но наследуются!

int max_temp;kol_kamer;: //не наследуются!

};zamor_tehnica::zamor_tehnica():bit_texnica() // конструктор по умолчанию !

{_temp=20;_kamer=4;

}

//конструктор с параметрами !

zamor_tehnica::zamor_tehnica (AnsiString n ,int mo, int p,int maxt,int s):bit_texnica(n,mo,p)

{_temp=maxt;_kamer=s;

}

//копирующий конструктор_tehnica::zamor_tehnica(const zamor_tehnica& m):bit_texnica(m)

{_temp=m.max_temp;_kamer=m.kol_kamer;

}

//печать !zamor_tehnica::print(TStringGrid *k,int &j) const

{=j+1;>RowCount=j+1;>Cells[0][j] = name;>Cells[1][j] = IntToStr(power);>Cells[2][j] = IntToStr(cena);>Cells[3][j] = IntToStr(max_temp);

>Cells[4][j] = IntToStr(kol_kamer);

}//------------------------------------------------

//------ МОРОЗИЛЬНЫЕ КАМЕРЫ 3.1.1moroz_kamera:public zamor_tehnica

{ public:_kamera();_kamera (AnsiString n ,int mo, int p, int maxt,int s, AnsiString c); //c - расположение

~moroz_kamera(){};print(TStringGrid *k,int &j) const;save(char *s); //сохранениеclear(char* s); //очистка файла перед записьюload (char* s,TStringGrid*,int&); //загрузка_kamera& operator=(const moroz_kamera &m); //перегрузка присваиванияbool operator==(const moroz_kamera& m1, moroz_kamera& m2); //перегрузка сравнения:raspoloshenie;

//очистка перед записьюmoroz_kamera::clear(char* s)

{* f1 ;=fopen(s,"w");(f1);

}

//сохранеине в файлmoroz_kamera::save(char *s)

{* f1;=fopen(s,"a"); //a - открывает файл для добавления

fprintf(f1,"%s\n",name);(f1,"%i\n",power);(f1,"%i\n",cena);(f1,"%i\n",max_temp);(f1,"%i\n",kol_kamer);(f1,"%s\n",raspoloshenie);(f1);

}

// загрузка из файлаmoroz_kamera::load (char* s,TStringGrid* s1,int& j)

{ AnsiString fn=s;fin(s);ss;(!fin.eof() )

{moroz_kamera m ;(fin,ss,'\n'); //читает целую строку(ss!="")

{ m.name=ss.c_str(); }(fin,ss,'\n');(ss!="")

{.power=StrToInt(ss.c_str()); }(fin,ss,'\n');(ss!="")

{.cena=StrToInt(ss.c_str());}(fin,ss,'\n');(ss!="")

{.max_temp=StrToInt(ss.c_str());}(fin,ss,'\n');(ss!="")

{.kol_kamer=StrToInt(ss.c_str());}(fin,ss,'\n');(ss!="")

{.raspoloshenie=ss.c_str();.print(s1,j); }

}.close();

}

//конструктор по умолчанию!_kamera::moroz_kamera():zamor_tehnica()

{="вертикальная";

}_kamera::moroz_kamera(AnsiString n ,int mo, int p,int maxt,int s,AnsiString c):zamor_tehnica(n,mo,p,maxt,s)

{=c;

}

//перегрузка присваивания !_kamera& moroz_kamera :: operator=(const moroz_kamera &m) //объекты =

{ if (this!=&m)

{=m.name;= m.power;=m.cena;_temp=m.max_temp;_kamer=m.kol_kamer;=m.raspoloshenie;

}*this;

}

//перегрузка сравненияoperator == (const moroz_kamera& m1, moroz_kamera& m2)

{srav;(m1.cena == m2.cena)

{srav=true;} else

{srav=false;};srav;

}

//печатьmoroz_kamera::print(TStringGrid *k,int &j) const

{=j+1;>RowCount=j+1;>Cells[0][j] = name;>Cells[1][j] = IntToStr(power);>Cells[2][j] = IntToStr(cena);>Cells[3][j] = IntToStr(max_temp);>Cells[4][j] = IntToStr(kol_kamer);>Cells[5][j] = raspoloshenie;

//------------------------------------------------

//------ ХОЛОДИЛЬНИКИ 3.1.2 -----------------------------holodilniki:public zamor_tehnica

{ public:();(AnsiString n ,int mo, int p, int maxt,int s,AnsiString cx); //cx-схема

~holodilniki(){};print(TStringGrid *k,int &j) const;save(char *s); //сохранениеclear(char* s); //очистка файла перед записьюload (char* s,TStringGrid*,int&); //загрузка из файла& operator=(const holodilniki &m); //перегрузка присваиванияbool operator==(const holodilniki& m1, holodilniki& m2); //перегрузка сравнения:shema_komponovki;

} ;

//очистка перед записьюholodilniki::clear(char* s)

{* f1 ;=fopen(s,"w");(f1);

}

//сохранеине в файлholodilniki::save(char *s)

{* f1;=fopen(s,"a"); //a - открывает файл для добавления

fprintf(f1,"%s\n",name);(f1,"%i\n",power);(f1,"%i\n",cena);(f1,"%i\n",max_temp);(f1,"%i\n",kol_kamer);(f1,"%s\n",shema_komponovki);(f1);

}

// загрузка из файлаholodilniki::load (char* s,TStringGrid* s1,int& j)

{ AnsiString fn=s;fin(s);ss;(!fin.eof() )

{holodilniki m ;(fin,ss,'\n'); //читает целую строку(ss!="")

{ m.name=ss.c_str(); }(fin,ss,'\n');(ss!="")

{.power=StrToInt(ss.c_str()); }(fin,ss,'\n');(ss!="")

{.cena=StrToInt(ss.c_str());}(fin,ss,'\n');(ss!="")

{.max_temp=StrToInt(ss.c_str());}(fin,ss,'\n');(ss!="")

{.kol_kamer=StrToInt(ss.c_str());}(fin,ss,'\n');(ss!="")

{.shema_komponovki=ss.c_str();.print(s1,j); }

}.close();

}::holodilniki():zamor_tehnica()

{_komponovki="американская";

}::holodilniki (AnsiString n ,int mo, int p,int maxt,int s,AnsiString cx):zamor_tehnica(n,mo,p,maxt,s)

{_komponovki = cx;

}

//перегрузка присваивания !& holodilniki :: operator=(const holodilniki &m) //объекты =

{ if (this!=&m)

{=m.name;= m.power;=m.cena;_temp=m.max_temp;_kamer=m.kol_kamer;_komponovki=m.shema_komponovki;

}*this;

}

//перегрузка сравненияoperator == (const holodilniki& m1, holodilniki& m2)

{srav;(m1.cena == m2.cena)

{srav=true;} else

{srav=false;};srav;

}

//печатьholodilniki::print(TStringGrid *k,int &j) const

{=j+1;>RowCount=j+1;>Cells[0][j] = name;>Cells[1][j] = IntToStr(power);>Cells[2][j] = IntToStr(cena);>Cells[3][j] = IntToStr(max_temp);>Cells[4][j] = IntToStr(kol_kamer);>Cells[5][j] = shema_komponovki;

};//-------------------------------------------------------------

//-----------------------------------------------

//----------ПЫЛЕСОСИКИ 3.2.-----

//---------------------------------------------------------------------------pilesos:public bit_texnica

{:();(AnsiString n ,int mo, int p,int obv,int pow1,int kol);

//obv-объём,pow1-можность всасывания,kol-количество насадок

pilesos (const pilesos &k); //копирующий конструктор

~pilesos(){}; //деструкторprint(TStringGrid *k,int &j) const; //печатьsave(char *s); //сохранениеclear(char* s); //очистка файла перед записьюload (char* s,TStringGrid*,int&); //загрузка из файла& operator=(const pilesos &k); //перегрузка присваиванияbool operator==(const pilesos& m1, pilesos& m2);: //доступ ограничен, но наследуются!

int obv1;pow11;kolnas;: //не наследуются!

};

//очистка перед записью

void pilesos::clear(char* s)

{* f1 ;=fopen(s,"w");(f1);

}

//сохранеине в файлpilesos::save(char *s)

{* f1;=fopen(s,"a");(f1,"%s\n",name);(f1,"%i\n",power);(f1,"%i\n",cena);(f1,"%i\n",obv1);(f1,"%i\n",pow11);(f1,"%i\n",kolnas);(f1);

}

// загрузка из файлаpilesos::load (char* s,TStringGrid* s1,int& j)

{ AnsiString fn=s;fin(s);ss;(!fin.eof() )

{pilesos m ;(fin,ss,'\n'); //читает целую строку(ss!="")

{ m.name=ss.c_str(); }(fin,ss,'\n');(ss!="")

{.power=StrToInt(ss.c_str()); }(fin,ss,'\n');(ss!="")

{.cena=StrToInt(ss.c_str());}(fin,ss,'\n');(ss!="")

{.obv1=StrToInt(ss.c_str());}(fin,ss,'\n');(ss!="")

{.pow11=StrToInt(ss.c_str());}(fin,ss,'\n');(ss!="")

{.kolnas=StrToInt(ss.c_str());.print(s1,j); }

}.close();

}::pilesos():bit_texnica() // конструктор по умолчанию

{

obv1=4;

pow11=250;

kolnas=5; }

//конструктор с параметрами 2

pilesos::pilesos (AnsiString n ,int mo, int p,int obv,int pow1,int kol):bit_texnica(n,mo,p)

{=obv;=pow1;=kol;

}

//копирующий конструктор::pilesos(const pilesos& k) :bit_texnica(k)

{=k.name;= k.power;=k.cena;=k.obv1;=k.pow11;=k.kolnas;

}

//перегрузка присваивания 1& pilesos :: operator=(const pilesos &k) //объект =

{ if (this!=&k)

{=k.name;= k.power;=k.cena;=k.obv1;=k.pow11;=k.kolnas;

}*this;

}

//перегрузка сравненияoperator == (const pilesos& m1,pilesos& m2)

{srav;(m1.cena == m2.cena)

{srav=true;} else

{srav=false;};srav;

}

//печатьpilesos::print(TStringGrid *k,int &j) const

{=j+1;>RowCount=j+1;>Cells[0][j] = name;>Cells[1][j] = IntToStr(power);>Cells[2][j] = IntToStr(cena);>Cells[3][j] = IntToStr(obv1);>Cells[4][j] = IntToStr(pow11);>Cells[5][j] = IntToStr(kolnas);

}

//------ МИКРОВОЛНОВАЯ ПЕЧЬ 3.3 -----------------------------microv_pechi:public bit_texnica

{ public:_pechi();_pechi (AnsiString n ,int mo, int p, AnsiString t); //t-тип

~microv_pechi(){};print(TStringGrid *k,int &j) const;save(char *s); //сохранениеclear(char* s); //очистка файла перед записьюload (char* s,TStringGrid*,int&); //загрузка из файла_pechi& operator=(const microv_pechi &m); //перегрузка присваиванияbool operator==(const microv_pechi& m1, microv_pechi& m2); //перегрузка сравнения:tip;

};

//очистка перед записьюmicrov_pechi::clear(char* s)

{* f1 ;=fopen(s,"w");(f1);

}

//сохранеине в файлmicrov_pechi::save(char *s)

{* f1;=fopen(s,"a");(f1,"%s\n",name);(f1,"%i\n",power);(f1,"%i\n",cena);(f1,"%s\n",tip);(f1);

}

// загрузка из файлаmicrov_pechi::load (char* s,TStringGrid* s1,int& j)

{ AnsiString fn=s;fin(s);ss;(!fin.eof() )

{microv_pechi m ;(fin,ss,'\n'); //читает целую строку(ss!="")

{ m.name=ss.c_str(); }(fin,ss,'\n');(ss!="")

{.power=StrToInt(ss.c_str()); }(fin,ss,'\n');(ss!="")

{.cena=StrToInt(ss.c_str());}(fin,ss,'\n');(ss!="")

{.tip=ss.c_str();.print(s1,j); }

}.close();

}_pechi::microv_pechi():bit_texnica()

{="соло";

}_pechi::microv_pechi (AnsiString n ,int mo, int p,AnsiString t):bit_texnica(n,mo,p)

{=t;

}

//перегрузка присваивания !_pechi& microv_pechi :: operator=(const microv_pechi &m) //объект =

{ if (this!=&m)

{=m.name;= m.power;=m.cena;=m.tip;

}*this;

}

//перегрузка сравненияoperator == (const microv_pechi& m1, microv_pechi& m2)

{srav;(m1.cena == m2.cena)

{srav=true;} else

{srav=false;};srav;

}

//печатьmicrov_pechi::print(TStringGrid *k,int &j) const

{=j+1;>RowCount=j+1;>Cells[0][j] = name;>Cells[1][j] = IntToStr(power);>Cells[2][j] = IntToStr(cena);>Cells[3][j] = tip;

};__fastcall TForm1::RadioGroup1Click(TObject *Sender)

{Label12->Visible=true;=RadioGroup1->ItemIndex ;(i==0) //Морозильные камеры

{GroupBox2->Visible=True;->Visible=False;->Visible=False;->Visible=False;->Visible=False;->Visible=False;->Visible=False;->Visible=True;->Visible=True;->Visible=True;->Visible=True;->Visible=False;->Visible=False;->Visible=False;

}(i==1) //Холодильники

{->Visible=False;->Visible=True;->Visible=False;->Visible=True;->Visible=False;->Visible=False;->Visible=False;->Visible=False;->Visible=False;->Visible=True;->Visible=False;->Visible=True;->Visible=False;->Visible=False;

} if (i==2) //Микроволновые печи

{GroupBox2->Visible=False;->Visible=False;->Visible=True;->Visible=False;->Visible=False;->Visible=False;->Visible=True;->Visible=False;->Visible=False;->Visible=True;->Visible=False;->Visible=False;->Visible=True;->Visible=False;

}(i==3) //Пылесосы

{->Visible=False;->Visible=False;->Visible=False;->Visible=False;->Visible=False;->Visible=False;->Visible=False;->Visible=True;->Visible=True;->Visible=True;->Visible=False;->Visible=False;->Visible=False;->Visible=True;

}

}__fastcall TForm1::Button1Click(TObject *Sender)

{name;power,cena;raspoloshenie;max_temp,kol_kamer;shema_komponovki;tip;obv1,pow11,kolnas;*p;

if (i==0) //морозильные камеры

{

{

if ((Edit1->Text=="") && (Edit2->Text=="")&& (Edit3->Text=="")&& (Edit5->Text=="")&& (Edit8->Text=="")&& (Edit17->Text==""))

{throw(1);}((Edit1->Text=="") || (Edit2->Text=="")|| (Edit3->Text=="")|| (Edit5->Text=="")|| (Edit8->Text=="")|| (Edit17->Text==""))

{throw('a');}= (Edit1->Text);= StrToInt(Edit2->Text);= StrToInt(Edit3->Text);_temp=StrToInt(Edit5->Text);_kamer=StrToInt(Edit8->Text);=Edit17->Text;_kamera m(name,power,cena,max_temp,kol_kamer,raspoloshenie);=&m;>print(StringGrid1,j);

//m.print(StringGrid1,j);

}(char b)

{MessageDlg ("Заполните поля!", mtError,TMsgDlgButtons() << mbOK,0);

}(int a)

{MessageDlg ("Заполнены не все поля! Будут выведены значения по умолчанию!", mtError,TMsgDlgButtons() << mbOK,0);

moroz_kamera m;.print(StringGrid1,j);=&m;

// p->print(StringGrid1,j);

}(EConvertError &err)

{MessageDlg ("Проверьте ввод данных", mtError,TMsgDlgButtons() << mbOK,0);}

}(i==1) //Холодильники

{

{((Edit1->Text=="") && (Edit2->Text=="")&& (Edit3->Text=="")&&(Edit6->Text=="")&&(Edit18->Text=="")&&(Edit19->Text==""))

{throw(1);}((Edit1->Text=="") || (Edit2->Text=="")|| (Edit3->Text=="")||(Edit6->Text=="")&&(Edit18->Text=="")&&(Edit19->Text==""))

{throw('a');}= (Edit1->Text);= StrToInt(Edit2->Text);= StrToInt(Edit3->Text);_temp =StrToInt( Edit6->Text);_kamer=StrToInt(Edit18->Text);_komponovki=Edit19->Text;m(name,power,cena,max_temp,kol_kamer,shema_komponovki);=&m;>print(StringGrid2,j1);

// m.print(StringGrid2,j1);

}(char b)

{MessageDlg ("Заполните поля!", mtError,TMsgDlgButtons() << mbOK,0);

}(int a)

{MessageDlg ("Заполнены не все поля! Будут выведены значения по умолчанию!", mtError,TMsgDlgButtons() << mbOK,0);

holodilniki m;.print(StringGrid2,j1);}(EConvertError &err)

{MessageDlg ("Проверьте ввод данных", mtError,TMsgDlgButtons() << mbOK,0);}

}(i==2) //Микроволновые печи

{

{

if ((Edit1->Text=="") && (Edit2->Text=="")&& (Edit3->Text=="")&&(Edit7->Text==""))

{throw(1);}((Edit1->Text=="") || (Edit2->Text=="")|| (Edit3->Text=="")||(Edit7->Text==""))

{throw('a');}= (Edit1->Text);= StrToInt(Edit2->Text);= StrToInt(Edit3->Text);=Edit7->Text;_pechi m(name,power,cena,tip);=&m;>print(StringGrid3,j2);

//m.print(StringGrid3,j2);

}(char b)

{MessageDlg ("Заполните поля!", mtError,TMsgDlgButtons() << mbOK,0);

}(int a)

{MessageDlg ("Заполнены не все поля! Будут выведены значения по умолчанию!", mtError,TMsgDlgButtons() << mbOK,0);

microv_pechi m;.print(StringGrid3,j2);}(EConvertError &err)

{MessageDlg ("Проверьте ввод данных", mtError,TMsgDlgButtons() << mbOK,0);}

}(i==3) //Пылесосы

{

{((Edit1->Text=="") && (Edit2->Text=="")&& (Edit3->Text=="")

&&(Edit4->Text=="")&&(Edit20->Text=="")&&(Edit21->Text==""))

{throw(1);}((Edit1->Text=="") || (Edit2->Text=="")|| (Edit3->Text=="")

||(Edit4->Text=="")||(Edit20->Text=="")||(Edit21->Text==""))

{throw('a');}= (Edit1->Text);= StrToInt(Edit2->Text);= StrToInt(Edit3->Text);= StrToInt(Edit4->Text);=StrToInt(Edit20->Text);=StrToInt(Edit21->Text);m(name,power,cena,obv1,pow11,kolnas);=&m;>print(StringGrid4,j3);

//m.print(StringGrid4,j3);

}(char b)

{MessageDlg ("Заполните поля!", mtError,TMsgDlgButtons() << mbOK,0);

}(int a)

{MessageDlg ("Заполнены не все поля! Будут выведены значения по умолчанию!", mtError,TMsgDlgButtons() << mbOK,0);

pilesos m;.print(StringGrid4,j3);

}(EConvertError &err)

{MessageDlg ("Проверьте ввод данных", mtError,TMsgDlgButtons() << mbOK,0);}

}

}

//-----------------

//копирование для БК__fastcall TForm1::Button2Click(TObject *Sender)

{

{q1;name,raspoloshenie;power,cena,max_temp,kol_kamer;=Edit12->Text;(q1 == "") {throw(1);}->Visible=True;->Visible=True;pos = StrToInt(Edit12->Text);= StringGrid1->Cells [0][pos];= StrToInt(StringGrid1->Cells [1][pos]);= StrToInt(StringGrid1->Cells [2][pos]);_temp=StrToInt(StringGrid1->Cells [3][pos]);_kamer= StrToInt(StringGrid1->Cells [4][pos]);=StringGrid1->Cells [5][pos];_kamera n(name,power,cena,max_temp,kol_kamer,raspoloshenie);

moroz_kamera m(n); //в объект m копируем n

m.print(StringGrid8, x1);

}(int a)

{MessageDlg ("Введите № записи для копирования", mtError, TMsgDlgButtons() << mbOK,0);

}(EConvertError &err)

{MessageDlg ("Проверьте ввод данных", mtError,TMsgDlgButtons() << mbOK,0);}

}

//Сравнение для канц товаров__fastcall TForm1::Button3Click(TObject *Sender)

{try

{int a1, a2;o1,o2;=Edit10->Text;=Edit11->Text;(o1 == "") {throw(1);}(o2 == "") {throw(2);}=StrToInt(Edit10->Text);=StrToInt(Edit11->Text);m1(StringGrid2->Cells[0][a1],StrToInt(StringGrid2->Cells[1][a1]),StrToInt(StringGrid2->Cells[2][a1]),StrToInt(StringGrid2->Cells[3][a1]),StrToInt(StringGrid2->Cells[4][a1]),StringGrid2->Cells[5][a1]);pic m2(StringGrid2->Cells[0][a2],StrToInt(StringGrid2->Cells[1][a2]),StrToInt(StringGrid2->Cells[2][a2]),StrToInt(StringGrid2->Cells[3][a2]),StrToInt(StringGrid2->Cells[4][a2]),StringGrid2->Cells[5][a2]);if (m1==m2) {Edit13->Text = "Равны";} else {Edit13->Text = "Не равны";} //сравнение

}(int a)

{MessageDlg ("Заполните поля!", mtError, TMsgDlgButtons() << mbOK,0);}(EConvertError &err)

{MessageDlg ("Проверьте ввод данных", mtError,TMsgDlgButtons() << mbOK,0);}

}

//Сравнение__fastcall TForm1::Button3Click(TObject *Sender)

{try{a1, a2;o1,o2;=Edit10->Text;=Edit11->Text;(o1 == "") {throw(1);}(o2 == "") {throw(2);}=StrToInt(Edit10->Text);=StrToInt(Edit11->Text);ob1(StringGrid2->Cells[0][a1],StrToInt(StringGrid2->Cells[1][a1]),StrToInt(StringGrid2->Cells[2][a1]),StrToInt(StringGrid2->Cells[3][a1]),StrToInt(StringGrid2->Cells[4][a1]),StringGrid2->Cells[5][a1]);holodilniki ob2(StringGrid2->Cells[0][a2],StrToInt(StringGrid2->Cells[1][a2]),StrToInt(StringGrid2->Cells[2][a2]),StrToInt(StringGrid2->Cells[3][a2]),StrToInt(StringGrid2->Cells[4][a2]),StringGrid2->Cells[5][a2]);if (ob1==ob2) {Edit13->Text = "Равны";} else {Edit13->Text = "Не равны";} //сравнение (перегрузка)

}catch (int a)

{MessageDlg ("Заполните поля!", mtError, TMsgDlgButtons() << mbOK,0);}(EConvertError &err)

{MessageDlg ("Проверьте ввод данных", mtError,TMsgDlgButtons() << mbOK,0);}

} //------------------ Edit14->Color=clRed;->Color=clRed;}(EConvertError &err)

{MessageDlg ("Проверьте ввод данных", mtError,TMsgDlgButtons() << mbOK,0);}

}__fastcall TForm1::Button4Click(TObject *Sender)

{(RadioGroup1->ItemIndex==0)

{i=1;_kamera m;.clear("moroz_kamera");(StringGrid1->Cells[0][i]!="")

{_kamera ob1(StringGrid1->Cells[0][i],StrToInt(StringGrid1->Cells[1][i]),StrToInt(StringGrid1->Cells[2][i]),StrToInt(StringGrid1->Cells[3][i]),StrToInt(StringGrid1->Cells[4][i]),StringGrid1->Cells[5][i]);.save("moroz_kamera");=i+1;

}

}(RadioGroup1->ItemIndex==1)

{i=1;m;.clear("holodilniki");(StringGrid2->Cells[0][i]!="")

{ob1(StringGrid2->Cells[0][i],StrToInt(StringGrid2->Cells[1][i]),StrToInt(StringGrid2->Cells[2][i]),StrToInt(StringGrid2->Cells[3][i]),StrToInt(StringGrid2->Cells[4][i]),StringGrid2->Cells[5][i]);.save("holodilniki");=i+1;

}

}(RadioGroup1->ItemIndex==2)

{i=1;_pechi m;.clear("microv_pechi");(StringGrid3->Cells[0][i]!="")

{_pechi ob1(StringGrid3->Cells[0][i],StrToInt(StringGrid3->Cells[1][i]),StrToInt(StringGrid3->Cells[2][i]),StringGrid3->Cells[3][i]);.save("microv_pechi");=i+1;

}

}(RadioGroup1->ItemIndex==3)

{i=1;m;.clear("pilesos");(StringGrid4->Cells[0][i]!="")

{ob1(StringGrid4->Cells[0][i],StrToInt(StringGrid4->Cells[1][i]),StrToInt(StringGrid4->Cells[2][i]),StrToInt(StringGrid4->Cells[3][i]),StrToInt(StringGrid4->Cells[4][i]),StrToInt(StringGrid4->Cells[5][i]));.save("pilesos");=i+1;

}}

} ;

//загрузить

//---------------------------------------------------------------__fastcall TForm1::Button5Click(TObject *Sender)

{(RadioGroup1->ItemIndex==0)

{_kamera m;.load("moroz_kamera",StringGrid1,j1);

}(RadioGroup1->ItemIndex==1)

{m;.load("holodilniki",StringGrid2,j2);

}(RadioGroup1->ItemIndex==2)

{_pechi m;.load("microv_pechi",StringGrid3,j3);

}(RadioGroup1->ItemIndex==3)

{m;.load("pilesos",StringGrid4,j4);

}}

//соритровка по убываниюsort_ub (TStringGrid * s, int a)

{b,c;e;(int i=1; s->Cells[a][i]!="";i++)(int j=i+1;s->Cells[a][j]!="";j++)

{ b =StrToInt(s->Cells[a][i]);= StrToInt(s->Cells[a][j]);(c>b)

{(int j1=0; j1<s->ColCount;j1++) //меняются строки

{= s->Cells[j1][i];>Cells[j1][i] = s->Cells[j1][j];>Cells[j1][j]= e;

//Form1->Refresh();

}}

}

};sort_voz (TStringGrid * s, int a)

{b,c;e;(int i=1; s->Cells[a][i]!="";i++)(int j=i+1;s->Cells[a][j]!="";j++)

{ b =StrToInt(s->Cells[a][i]);= StrToInt(s->Cells[a][j]);(c<b)

{(int j1=0; j1<s->ColCount;j1++)

{= s->Cells[j1][i];>Cells[j1][i] = s->Cells[j1][j];->Cells[j1][j]= e;

}}}};

// сортировка по возрастанию

void sort_voz (TStringGrid * s, int a)

{b,c;e;(int i=1; s->Cells[a][i]!="";i++)(int j=i+1;s->Cells[a][j]!="";j++)

{ b =StrToInt(s->Cells[a][i]);= StrToInt(s->Cells[a][j]);(c<b)

{(int j1=0; j1<s->ColCount;j1++)

{= s->Cells[j1][i];>Cells[j1][i] = s->Cells[j1][j];>Cells[j1][j]= e;

// Form1->Refresh();

}}

}

};__fastcall TForm1::Button7Click(TObject *Sender)

{=0;=0;=0;=0;=0;=0;=0;=0;(int i = 0; i < StringGrid1->ColCount; i++)(int j = 1; j < StringGrid1->RowCount; j++)->Cells[i][j] = "";

}__fastcall TForm1::Button8Click(TObject *Sender)

{

{a1, a2;o1,o2;=Edit9->Text;=Edit22->Text;(o1 == "") {throw(1);}(o2 == "") {throw(2);}=StrToInt(Edit9->Text);=StrToInt(Edit22->Text);_pechi ob1(StringGrid3->Cells[0][a1],StrToInt(StringGrid3->Cells[1][a1]),StrToInt(StringGrid3->Cells[2][a1]),StringGrid3->Cells[3][a1]);microv_pechi ob2(StringGrid3->Cells[0][a2],StrToInt(StringGrid3->Cells[1][a2]),StrToInt(StringGrid3->Cells[2][a2]),StringGrid3->Cells[3][a2]);if (ob1==ob2) {Edit23->Text = "Равны";} else {Edit23->Text = "Не равны";} //сравнение (перегрузка)}(int a)

{MessageDlg ("Заполните поля для ввода", mtError, TMsgDlgButtons() << mbOK,0);->Text=clRed;->Text=clRed;}(EConvertError &err)

{MessageDlg ("Проверьте ввод данных", mtError,TMsgDlgButtons() << mbOK,0);}

}__fastcall TForm1::Button9Click(TObject *Sender)

{

{a1, a2;o1,o2;=Edit24->Text;=Edit25->Text;(o1 == "") {throw(1);}(o2 == "") {throw(2);}=StrToInt(Edit24->Text);=StrToInt(Edit25->Text);ob1(StringGrid4->Cells[0][a1],StrToInt(StringGrid4->Cells[1][a1]),StrToInt(StringGrid4->Cells[2][a1]),StrToInt(StringGrid4->Cells[3][a1]),StrToInt(StringGrid4->Cells[4][a1]),StrToInt(StringGrid4->Cells[5][a1]));pilesos ob2(StringGrid4->Cells[0][a2],StrToInt(StringGrid4->Cells[1][a2]),StrToInt(StringGrid4->Cells[2][a2]),StrToInt(StringGrid4->Cells[3][a2]),StrToInt(StringGrid4->Cells[4][a1]),StrToInt(StringGrid4->Cells[5][a1]));if (ob1==ob2) {Edit26->Text = "Равны";} else {Edit26->Text = "Не равны";} //сравнение (перегрузка)

}(int a)

{MessageDlg ("Заполните поля для ввода", mtError, TMsgDlgButtons() << mbOK,0);

}(EConvertError &err)

{MessageDlg ("Проверьте ввод данных", mtError,TMsgDlgButtons() << mbOK,0);}

}__fastcall TForm1::Edit4KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//---------------------------------------------------------------__fastcall TForm1::Edit20KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//---------------------------------------------------------------__fastcall TForm1::Edit21KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//---------------------------------------------------------------__fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//---------------------------------------------------------------__fastcall TForm1::Edit3KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//---------------------------------------------------------------__fastcall TForm1::Edit24KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//---------------------------------------------------------------------------__fastcall TForm1::Edit25KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//---------------------------------------------------------------__fastcall TForm1::Edit12KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//---------------------------------------------------------------__fastcall TForm1::Edit6KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//---------------------------------------------------------------__fastcall TForm1::Edit18KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

//---------------------------------------------------------------__fastcall TForm1::Edit5KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//---------------------------------------------------------------__fastcall TForm1::Edit8KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//---------------------------------------------------------------__fastcall TForm1::Edit9KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//---------------------------------------------------------------__fastcall TForm1::Edit22KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//---------------------------------------------------------------__fastcall TForm1::Edit14KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//--------------------------------------------------------------__fastcall TForm1::Edit15KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//-------------------------------------------------------------__fastcall TForm1::Edit10KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//---------------------------------------------------------------__fastcall TForm1::Edit11KeyPress(TObject *Sender, char &Key)

{(((Key < '0') || (Key > '9')) && (Key != VK_BACK)) Key = NULL;

}

//---------------------------------------------------------------

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

 

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

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

ввод данных с клавиатуры;

загрузка данных из файла;

сохранение данных в файл;

просмотр данных об объектах выбранного класса;

сортировка данных об объектах выбранного класса, по полю "цена";

сравнение объектов по цене

копирование данных;

Описание установки

Данная программа не требует установки.

Описание запуска

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

Рис. П3.1. Главное окно программы.

 

Ввод данных с клавиатуры.

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

Рис. П3.2. Ввод данных.

 

Файловый ввод / вывод.

Для файлового ввода / вывод необходимо воспользоваться кнопками "Сохранить" и "Загрузить".

Сортировка данных.

Сортировка осуществляется по полю "Цена", для ее осуществления необходимо выбрать вид сортировки: по возрастанию или по убыванию.

Рис. П3.3. Исходные данные.

Рис. П3.4. Сортировка по возрастанию.

Рис. П3.5. Сортировка по убыванию.

 

Сравнение данных.

Для сравнения данных необходимо ввести номера элементов интерьера в таблице по счету и нажать на кнопку "Сравнить".

Рис. П3.6. Сравнение по цене.

Рис. П3.7. Сравнение по цене.

 

Копирование данных.

Для копирования данных (строки таблицы) необходимо внести номер таблицы и нажать кнопку "Копировать", при этом появится новая таблица с результатом копирования.

Рис. П3.8. Копирование данных.

 

 

Обработка исключительных ситуаций

В программе предусмотрена обработка исключительных ситуации.

)        Если заполнены не все поля, появляется сообщение.

Рис. П3.11. Ошибка ввода.

)        Где предусмотрено вводить числовые значения невозможен ввод букв.

Похожие работы на - Объектно-ориентированное программирование на языке С++

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!