|
|
|
Builder C++
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Нужна помощь, дали задание написать программу "автомат по продаже продуктов" с обязательным использованием классов. я ее написала на Builder c++, только не смогла найти применение классов, помогите пожалуйста, какие можно добавить классы и куда? Код программы: //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- float sum = 0; float ost = 0; float opl = 0; //Zakaz vybor; float ch2,ch9,ch10,ch11,ch12,ch13,ch14; float ch1,ch3,ch4,ch5,ch6,ch7,ch8; int flg = 0; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::CheckBox1Click(TObject *Sender) { ch1=StrToFloat(Form1->Edit1->Text); if(Form1->CheckBox1->Checked) sum=sum+ch1; else sum=sum-ch1; Form1->Label4->Caption="В сумме"; Form1->Label3->Caption=FloatToStr(sum); } //--------------------------------------------------------------------------- void __fastcall TForm1::CheckBox2Click(TObject *Sender) { ch2=StrToFloat(Form1->Edit2->Text); if(Form1->CheckBox2->Checked) sum = sum + ch2; else sum=sum-ch2; Form1->Label4->Caption="В сумме"; Form1->Label3->Caption=FloatToStr(sum); } //--------------------------------------------------------------------------- void __fastcall TForm1::CheckBox3Click(TObject *Sender) { ch3=StrToFloat(Form1->Edit3->Text); if(Form1->CheckBox3->Checked) { sum=sum+ch3; } else sum=sum-ch3; Form1->Label4->Caption="В сумме"; Form1->Label3->Caption=FloatToStr(sum); } //--------------------------------------------------------------------------- void __fastcall TForm1::CheckBox4Click(TObject *Sender) { ch4=StrToFloat(Form1->Edit4->Text); if(Form1->CheckBox4->Checked) { sum=sum+ch4; } else sum=sum-ch4; Form1->Label4->Caption="В сумме"; Form1->Label3->Caption=FloatToStr(sum); } //--------------------------------------------------------------------------- void __fastcall TForm1::CheckBox5Click(TObject *Sender) { ch5=StrToFloat(Form1->Edit5->Text); if(Form1->CheckBox5->Checked) { sum=sum+ch5; } else sum=sum-ch5; Form1->Label4->Caption="В сумме"; Form1->Label3->Caption=FloatToStr(sum); } //--------------------------------------------------------------------------- void __fastcall TForm1::CheckBox6Click(TObject *Sender) { ch6=StrToFloat(Form1->Edit6->Text); if(Form1->CheckBox6->Checked) { sum=sum+ch6; } else sum=sum-ch6; Form1->Label4->Caption="В сумме"; Form1->Label3->Caption=FloatToStr(sum); } //--------------------------------------------------------------------------- void __fastcall TForm1::CheckBox1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { ch1=StrToFloat(Form1->Edit1->Text); Form1->Label4->Caption="В сумме"; Form1->Label3->Caption=FloatToStr(sum); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { Form1->CheckBox1->Checked=false; Form1->CheckBox2->Checked=false; Form1->CheckBox3->Checked=false; Form1->CheckBox4->Checked=false; Form1->CheckBox5->Checked=false; Form1->CheckBox6->Checked=false; /*Form1->CheckBox7->Checked=false; Form1->CheckBox8->Checked=false; Form1->CheckBox9->Checked=false; Form1->CheckBox10->Checked=false; Form1->CheckBox11->Checked=false; Form1->CheckBox12->Checked=false; Form1->CheckBox13->Checked=false; Form1->CheckBox14->Checked=false; */ Form1->Label12->Caption=""; Form1->Label3->Caption=""; Form1->Label4->Caption=""; Form1->Label5->Caption=""; Form1->Label6->Caption=""; Form1->Label7->Caption=""; Form1->Label8->Caption=""; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if(flg == 1) { randomize(); opl = random(100000); } else opl=StrToFloat(Form1->Edit15->Text); if (opl>sum) { ost=opl-sum; Form1->Label7->Caption="К оплате:" ; Form1->Label8->Caption=FloatToStr(opl) ; Form1->Label5->Caption="Возьмите сдачу:" ; Form1->Label6->Caption=FloatToStr(ost); Form1->Label12->Caption = "Спасибо за покупку!"; } if (opl<sum) { Form1->Label7->Caption="К оплате" ; Form1->Label8->Caption=FloatToStr(opl) ; Form1->Label5->Caption="Доплатите" ; Form1->Label6->Caption=FloatToStr(sum-opl); } if (opl==sum) { Form1->Label7->Caption="К оплате" ; Form1->Label8->Caption=FloatToStr(opl) ; Form1->Label5->Caption="Прямо в точку" ; Form1->Label6->Caption=""; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Form2->Show(); } //--------------------------------------------------------------------------- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 18:34 |
|
||
|
Builder C++
|
|||
|---|---|---|---|
|
#18+
asyulya, Я так думаю, что необходимымй минимум будет состоять: первый класс - описатель продуктов. Там должна быть обязательно цена продукта и остаток в автомате (чтобы не продать то, чего нет в наличии), а также методы по вводу параметров (цены и начального количества) и продаже товара. второй класс - буфер-накопитель, который хранит выбор пользователя и возвращает итоговую сумму заказа. третий класс - расчет за продукты, где анализируется переданная сумма и сравнивается с тем, на какую сумму сохранено товаров в накопителе. Сначала нужно прописать алгоритм взаимодействия этих классов. И только потом навешивать всякие "рюшечки" в виде форм, кнопочек, обработчиков нажатия клавиш мыши и т.д. Перечень классов может быть расширен и ограничен только Вашей фантазией... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 21:13 |
|
||
|
Builder C++
|
|||
|---|---|---|---|
|
#18+
Станислав С...кий, спасибо, что ответили, но не могли бы вы, пожалуйста в примере как-то описать, с классами у меня туго, к сожалению. Мне главное присутствие классов в коде, может есть какие-то "бесполезные", чтобы код не переписывать, а просто добавить для количества, сроки поджимают( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 21:44 |
|
||
|
Builder C++
|
|||
|---|---|---|---|
|
#18+
asyulyaСтанислав С...кий, спасибо, что ответили, но не могли бы вы, пожалуйста в примере как-то описать, с классами у меня туго, к сожалению. Мне главное присутствие классов в коде, может есть какие-то "бесполезные", чтобы код не переписывать, а просто добавить для количества, сроки поджимают( Во-первых, "просто так" делать ничего не нужно. Во-вторых, если Вы пошли учиться, то это был Ваш собственный выбор, никто под дулом автомата Вас не заставлял. Так что, ноги в руки и "Учиться, учиться, учиться! И еще раз учиться!", как говорил великий Ленин (умный был человек) Набросок одного из классов (нужно проверять, убирать ошибки и т.д.): class Product { private: int ostatok; double cena; public: //Конструкторы (перегруженные) product() {ostatok = (int)0; price = (double)0;} product(double price, int kol) { if kol >= 0 ostatok = kol; else ostatok = (int)0; if price >=(double)0 cena = price; else cena = (double)0; } // надо добавить еще конструктор копирования. // сервисные функции double getprice () {return cena;} int getrest() {return ostatok;} void setrest(int kol) {ostatok = kol;} void setprice(double price) {cena = price;} int add (int kol) {ostatok +=kol; return ostatok;} int sale () { if ostatok = (int)0 return 0; else { ostatok -=1; return 1; } } ... } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2014, 07:31 |
|
||
|
|

start [/forum/topic.php?fid=16&gotonew=1&tid=1341358]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
10ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 332ms |

| 0 / 0 |
