3.         Number.cpp

 

#include <vcl.h>

#pragma hdrstop

#include "Number.h"

void Number::save(FILE *f)

{char s[1000];

char s1[1000];

char s2[1000];

sprintf(s,"%s",str.c_str());

sprintf(s1,"%s",str1.c_str());

sprintf(s2,"%s",str2.c_str());

for(int i=0;s[i];i++) if(s[i]==' ') s[i]='_';

fprintf(f,"%d %s %s %s %d %d %d ",d,s,s1,s2,day,month,year);

}

void Number::zvit(FILE *f)

{

char s[1000];

char s1[1000];

char s2[1000];

sprintf(s,"%s",str.c_str());

sprintf(s1,"%s",str1.c_str());

sprintf(s2,"%s",str2.c_str());

fprintf(f,"%5d %10s %10s %10s %2d %2d %4d ",d,s,s1,s2,day,month,year);

fprintf(f,"\n");

}

int Number::load(FILE *f)

{ char s[1000];

char s1[1000];

char s2[1000];

int rez = fscanf(f,"%d %s %s %s %d %d %d",&d,s,s1,s2,&day,&month,&year);

if(rez==7)

{ for(int i=0;s[i];i++) if(s[i]=='_') s[i]=' ';

for(int i=0;s1[i];i++) if(s1[i]=='_') s1[i]=' ';

for(int i=0;s2[i];i++) if(s2[i]=='_') s2[i]=' ';

str = AnsiString(s);

str1 = AnsiString(s1);

str2 = AnsiString(s2);

}

return rez;

}


4.         Number.h

#ifndef NumberH

#define NumberH

#include "Table.h"

#include "Date.h"

#include "My_date.h"

class Number : public Table::Data

{

public: int d;

int day; // число випуска

int year; // год випуска

int month; // месяц випуска

AnsiString str; // название мебели

AnsiString str1; // производитель

AnsiString str2; // вид мебели

void save(FILE *f);

void zvit(FILE *f);

int load(FILE *f);// 0 - помилка завантаження; EOF - кінець файла; >0 - завантаження успішне

};

5. Date.cpp

#include <vcl.h>

#pragma hdrstop

#include "Date.h"

bool Date::load(int d,int m,int y)

{ if(y>=1900)

{ switch(m)

{

case 1:// січень 31 день

case 3:// березень 31 день

case 5:// травень 31 день

case 7:// липень 31 день

case 8:// серпень 31 день

case 10:// жовтень 31 день

case 12:// грудень 31 день

if((d<1)||(d>31)) return false;

break;

case 2:// лютий 28-29 день

if(y%4)

{

if((d<1)||(d>29)) return false;

}

else

{

if((d<1)||(d>28)) return false;

}

break;

case 4:// квітень 30 день

case 6:// червень 30 день

case 9:// вересень 30 день

case 11:// листопад 30 день

if((d<1)||(d>30)) return false;

break;

default: return false;

}

Day = d;

Month = m;

Year = y;

X = d + m*100 + year*10000;

Name = StrToInt(d)+"."+StrToInt(m)+"."+StrToInt(y);

}

else return false;

}

bool Date::load(const AnsiString &s)

{

int x = s.Pos(".");

if(x)

{

AnsiString str = s.SubString(1,x-1);

int d = StrToInt(str);

str = s.SubString(x+1,s.Lenth-x);

int y = str.Pos(".");

if(y)

{

str = s.SubString(x+1,y+x-1);

int m = StrToInt(str);

str = s.SubString(y+x+1,s.Lenth-x-y);

int y = StrToInt(str);

return load(d,m,y);

}

else return false;

}

else return false;

}


6. Date.h

#ifndef DateH

#define DateH

class Date

{ int Day;

int Month;

int Year;

long X;

AnsiString Name;

public: bool load(int d,int m,int y);

bool load(const AnsiString &s);

int day(){return Day;}

int month(){return Month;}

int year(){return Year;}

const char& str(){return Str.c_str();}

const Date& operator=(const Date &D){Day = D.Day; Month = D.Month; Year = D.Year;}

bool operator>(const Date &D){return X>D.X;}

bool operator>=(const Date &D){return X>=D.X;}

bool operator<(const Date &D){return X<D.X;}

bool operator<=(const Date &D){return X<=D.X;}

bool operator==(const Date &D){return X==D.X;}

bool operator!=(const Date &D){return X==D.X;}

};

7. Main.cpp

#include <vcl.h>

#pragma hdrstop

#include "Main.h"

#include "My_date.h"

#include "Date.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TMainForm *MainForm;

__fastcall TMainForm::TMainForm(TComponent* Owner)

: TForm(Owner)

{

}

//------------------------------------------------------------------------void __fastcall TMainForm::Add(TObject *Sender)

{

Ptr p = list.record();

p->d = StrToInt(NewInt->Text);

p->day = StrToInt(Day->Text);

p->year = StrToInt(Year->Text);

p->month = StrToInt(Month->Text);

//p->x = StrToFloat(NewDouble->Text);

p->str = String->Text;

p->str1 = FirmaString->Text;

p->str2 = WidString->Text;

redraw();

}

void TMainForm::redraw()

{ List->Clear();

StrList->Clear();

for(Ptr p = list.first();p.valid();++p)

{

List->Items->Add(IntToStr(p->d));

StrList->Items->Add(p->str);

}

}

//------------------------------------------------------------------------void __fastcall TMainForm::Del(TObject *Sender)

{ int n = List->ItemIndex;

int i;

Ptr p;

for(i=0,p=list.first();p.valid()&&(i<n);++i,++p);

if((i==n)&&p.valid())

{

p.remove();

redraw();

}

}

//------------------------------------------------------------------------void __fastcall TMainForm::Find(TObject *Sender)

{ int x = StrToInt(NewInt->Text);

Ptr p;

int i;

for(i=0,p=list.first();p.valid()&&(p->d!=x);++p,++i);

if(p.valid())

{ List->ItemIndex = i;

StrList->ItemIndex = i;

NewInt->Text = IntToStr(p->d);

Day->Text = IntToStr(p->day);

Year->Text = IntToStr(p->year);

Month->Text = IntToStr(p->month);

//NewDouble->Text = FloatToStr(p->x);

String->Text = p->str;

FirmaString->Text = p->str1;

WidString->Text = p->str2;

}

else List->ItemIndex = -1;

}

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

void __fastcall TMainForm::Sort(TObject *Sender)

{

Ptr t,p,q;

for(t=list.first().next();t.valid();t=q)

{

q = t.next();

for(p=t.prev();p.valid()&&(p->d>t->d);--p);

p>>t;

}

redraw();

}

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

void __fastcall TMainForm::Save(TObject *Sender)

{

FILE *f;

if(SaveDialog->Execute())

{

f = fopen(SaveDialog->FileName.c_str(),"w");

if(f!=NULL)

{

list.save(f);

fclose(f);

}

}

}

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

void __fastcall TMainForm::ZvitClick(TObject *Sender)

{

FILE *f;

if(SaveDialog->Execute())

{

f= fopen(SaveDialog->FileName.c_str(),"w");

if(f!=NULL)

{

list.zvit(f);

fclose(f);

}

}

}

void __fastcall TMainForm::Open(TObject *Sender)

{

FILE *f;

if(OpenDialog->Execute())

{

f = fopen(OpenDialog->FileName.c_str(),"r");

if(f!=NULL)

{

list.clear();

String->Text="";

NewInt->Text="";

list.load(f);

redraw();

fclose(f);

}

}

}

//------------------------------------------------------------------------void __fastcall TMainForm::Clear(TObject *Sender)

{

list.clear();

redraw();

}

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

void __fastcall TMainForm::Select(TObject *Sender, TMouseButton Button,

TShiftState Shift, int X, int Y)

{

TPoint point;

point.x = X;

point.y = Y;

int sel = List->ItemAtPos(point,true);

int i;

Ptr t;

if(sel>=0)

{

List->ItemIndex = sel;

StrList->ItemIndex = sel;

for(t=list.first(),i=0;t.valid()&&(i<sel);++i,++t);

if(t.valid())

{

NewInt->Text = IntToStr(t->d);

Day->Text = IntToStr(t->day);

Year->Text = IntToStr(t->year);

Month->Text = IntToStr(t->month);

//NewDouble->Text = FloatToStr(t->x);

String->Text = t->str;

FirmaString->Text = t->str1;

WidString->Text = t->str2;

}

}

}

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

void __fastcall TMainForm::Update(TObject *Sender)

{

Ptr t;

int i;

int sel;

sel = List->ItemIndex;

if(sel>=0)

{ for(t=list.first(),i=0;t.valid()&&(i<sel);++i,++t);

if(t.valid())

{

t->d = StrToInt(NewInt->Text);

t->day = StrToInt(Day->Text);

t->year = StrToInt(Year->Text);

t->month = StrToInt(Month->Text);

t->str = String->Text;

t->str1 = FirmaString->Text;

t->str2 = WidString->Text;

//t->x = StrToFloat(NewDouble->Text);

redraw();

}

}

}

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

void __fastcall TMainForm::SelectStr(TObject *Sender, TMouseButton Button,

TShiftState Shift, int X, int Y)

{

TPoint point;

point.x = X;

point.y = Y;

int sel = StrList->ItemAtPos(point,true);

int i;

Ptr t;

if(sel>=0)

{

List->ItemIndex = sel;

StrList->ItemIndex = sel;

or(t=list.first(),i=0;t.valid()&&(i<sel);++i,++t);

if(t.valid())

{

NewInt->Text = IntToStr(t->d);

Day->Text = IntToStr(t->day);

Year->Text = IntToStr(t->year);

Month->Text = IntToStr(t->month);

String->Text = t->str;

FirmaString->Text = t->str1;

WidString->Text = t->str2;

}

}

}

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

void __fastcall TMainForm::SortNum(TObject *Sender)

{

Ptr t,p,q;

for(t=list.first().next();t.valid();t=q)

{

q = t.next();

for(p=t.prev();p.valid()&&(p->d>t->d);--p);

p>>t;

}

redraw();

}

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

void __fastcall TMainForm::SortStr(TObject *Sender)

{

Ptr t,p,q;

for(t=list.first().next();t.valid();t=q)

{

q = t.next();

for(p=t.prev();p.valid()&&(p->str>t->str);--p);

p>>t;

}

redraw();

}

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

void __fastcall TMainForm::Button1Click(TObject *Sender)

{

Close();

}


8.         Main.h

#ifndef MainH

#define MainH

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include "Number.h"

#include <Dialogs.hpp>

#include <ComCtrls.hpp>

#include <ExtCtrls.hpp>

#include <jpeg.hpp>

#include "Date.h"

#include "My_date.h"

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

typedef MyTable<Number> Data;

typedef MyTable<Number>::Iterator Ptr;

class TMainForm : public TForm

{

__published:// IDE-managed Components

TEdit *NewInt;

TLabel *NewIntLabel;

TButton *AddButton;

TListBox *List;

TButton *DelButton;

TButton *FindButton;

TButton *SortButton;

TButton *SaveButton;

TButton *OpenButton;

TButton *Button3;

TButton *Zvit;

TSaveDialog *SaveDialog;

TOpenDialog *OpenDialog;

TEdit *String;

TLabel *Label1;

TButton *ChangeButton;

TListBox *StrList;

TLabel *NumLabel;

TLabel *StrLabel;

TEdit *FirmaString;

TEdit *WidString;

TLabel *Label3;

TLabel *Label4;

TLabel *Label5;

TLabel *Label6;

TLabel *Label7;

TLabel *Label8;

TEdit *Day;

TEdit *Month;

TEdit *Year;

TButton *Button1;

TImage *Image1;

void __fastcall Add(TObject *Sender);

void __fastcall Del(TObject *Sender);

void __fastcall Find(TObject *Sender);

void __fastcall Sort(TObject *Sender);

void __fastcall Save(TObject *Sender);

oid __fastcall Open(TObject *Sender);

void __fastcall Clear(TObject *Sender);

void __fastcall Select(TObject *Sender, TMouseButton Button,

TShiftState Shift, int X, int Y);

void __fastcall Update(TObject *Sender);

void __fastcall SelectStr(TObject *Sender, TMouseButton Button,

TShiftState Shift, int X, int Y);

void __fastcall SortNum(TObject *Sender);

void __fastcall SortStr(TObject *Sender);

void __fastcall Button1Click(TObject *Sender);

private:// User declarations

Data list;

void redraw();

public:// User declarations

__fastcall TMainForm(TComponent* Owner);

};

 

9. Magazin.cpp

#include <vcl.h>

#include "Date.h"

#pragma hdrstop

USERES("Magazin.res");

USEFORM("Main.cpp", MainForm);

USEUNIT("Table.cpp");

USEUNIT("Number.cpp");

USEUNIT("Date.cpp");

USEFILE("Date.h");

USEUNIT("My_date.cpp");

USEUNIT("data.cpp");

//------------------------------------------------------------------------WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application->Initialize();

Application->CreateForm(__classid(TMainForm), &MainForm);

&ProgramForm);

Application->Run();

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

return 0;

}


Информация о работе «Об’єктно-орієнтована програма обліку продуктового магазину»
Раздел: Информатика, программирование
Количество знаков с пробелами: 40325
Количество таблиц: 0
Количество изображений: 3

Похожие работы

Скачать
304576
89
18

... Чарка, стакан 4 320 2 80 400 Столові прибори (комплект) 4 320 2 80 400 Далі наведемо характеристику посуду, який будуть використовувати в комплексному закладі ресторанного господарства (табл. 2.8–2.11). Таблиця 2.8. Характеристика та призначення класичного вітчизняного порцелянового та фаянсового посуду Найменування Розміри, мм Місткість, см3, порцій Призначення ...

Скачать
87719
8
5

... , що в свою чергу призводить до збільшення прибутку. Об’єктом дослідження в курсовій роботі виступає логістична система розподілу продукції на ЖКУВП “Біатрон-3”. Предметом дослідження є сукупність методичних та практичних проблем управління логістичною системою розподілу продукції. Метою написання курсової роботи є вивчення теоретичних аспектів управління логістичною системою розподілу та дослі ...

Скачать
169717
23
3

... кількість робочих місць, та незначний обсяг пенсійних виплат за віком, тиснуть на свідомість, та впливають на поведінку людей. Це має велике значення на становлення та теоретичні аспекти ділових взаємовідносин саме в апараті управління. Тому, перше місце, на нашу думку, займає саме вплив особистісної характеристики керівника (групи, підрозділу, відділу і т. інш.). У зв’язку з цим, ми вважаємо, ...

Скачать
157062
12
4

... для проведення перетворень. Але при такому підході може виникнути ситуація, при якій проведення перетворень нічого не дасть. Справа в тому, що в силу різночасовості змін подій, що відбуваються в параметрах, що впливають на конкурентоспроможність підприємства в стадії загальної зрілості деякі з них будуть знаходитись в стані занепаду, і на їх зміни буде потрібно багато часу. Тому у відповідності з ...

0 комментариев


Наверх