Главная страница
Навигация по странице:

  • // один из векторов пуст

  • ООП(Курсовой проект). курсовой проект ООП. Индивидуальное задание


    Скачать 312.07 Kb.
    НазваниеИндивидуальное задание
    АнкорООП(Курсовой проект
    Дата27.05.2021
    Размер312.07 Kb.
    Формат файлаdocx
    Имя файлакурсовой проект ООП.docx
    ТипДокументы
    #210713




    Индивидуальное задание

    Одна запись журнала содержит поля: код игрушки, название игрушки, тип игрушки, возрастные границы (например, от 10 до 15), цена за единицу, количество в наличии, дата поступления в магазин, поставщик. Поиск по дате поступления, поставщику, возрастным границам.

    Введение

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

    Теоретическая часть.

    В последовательном контейнере хранится упорядоченный набор элементов одного типа. В нем существует первый элемент, второй элемент и так далее вплоть до последнего элемента. ' Вектор и список - два основных типа контейнеров, которые относятся к последовательным. Вектор хранит элементы в непрерывной области памяти. Последовательные контейнеры эффективно обрабатывают произвольную выборку, например, обращение к 5, к 17, а затем - к 19 элементу. Каждый элемент имеет фиксированное смещение от начала вектора. Однако вставка элемента в любую позицию, кроме конца вектора, неэффективна. Для этого потребуется сдвинуть все элементы, расположенные справа от точки вставки, последовательным копированием их значений. По той же причине неэффективным является удаление любого элемента, кроме последнего.
    Список представляет собой отдельные области в памяти, которые связаны между собой двойными связями, обеспечивающими проход по списку в прямом и обратном направлениях. Каждый элемент списка содержит три поля: значение и указатели на предшествующий и последующий элемент списка. Вставка и удаление элементов работают эффективно для любой позиции элемента в списке. Для этого просто изменяют значения соответствующей пары из прямого и обратного указателей. С другой сто-
    роны, произвольный доступ к элементам списка поддерживается менее эффективно. Чтобы получить доступ к элементу номер 5, а затем к элементам номер 17 и 9, нужно пройти по всем элементам списка от одной позиции до другой. (Это напоминает различие в переходе от одной песни к другой на кассете и на компакт-диске.)
    Для представления элементов числового ряда вектор подходит лучше, чем другие контейнеры. Зачастую придется обращаться к элементам с произвольно выбранной позицией. Например, функция fibon_e1em() выбирает из контейнера элемент с номером, указанным пользователем. Кроме того, удалять элементы ряда нам не нужно, а вставляются они только в конец вектора.
    Список удобнее использовать если из файла считываются значения счета каждого пользователя, которые нужно упорядочивать по возрастанию, то в контейнер такие значения будут добавляться произвольно. Поэтому предпочтение нужно отдать контейнеру-списку.
    Третий вид последовательных контейнеров - дек (deque). Дек во многом аналогичен вектору, элементы хранятся в неразрывной области памяти. Но в отличие от вектора дек эффективно поддерживает вставку и удаление первого элемента (так же, как и последнего). Если, например, требуется вставлять элементы в начало и удалять из конца контейнера, то дек для такой задачи подойдет лучше всего. (Класс стандартной библиотеки очередь (queue) реализован с использованием контейнера дек для хранения элементов очереди.)
    Чтобы использовать последовательный контейнер, нужно включить в программу связанный с ним заголовочный файл.
    #inc1ude #iinclude #ittc1ude
    Существует пять способов определить объект для последовательного контейнера.
    1. Создать пустой контейнер.
    1ist< string > slist; vector< int > ivec;
    2. Создать контейнер определенного размера и инициализировать каждый его элемент начальным значением, принятым по умолчанию. (Напомним, что для таких встроенных числовых типов данных, как int и doublе, принято значение 0.)
    "Iist< int > ilistC 1024 );
    vector< string > svec( 32 );
    3. Создать контейнер данного размера и указать начальное значение каждого элемента.
    vector< int > ivecC 10, -1 );
    list< string > slistC 16, "не определен" );
    4. Создать контейнер и задать пару итераторов для обозначения диапазона элементов для инициализации контейнера.
    int ia[ 8 ] =- { 1, 1, 2, 3, 5, 8, 13, 21 }; vector < int > fib() ia, ia+8 );
    5. Создать контейнер, задав второй объект-контейнер. Новый контейнер будет инициализирован копированием заданного контейнера.
    list< string > slist; // пуст // заполнить slist ...
    list< string > slist2( slist ); // копия slist ...
    Для вставки и удаления последнего элемента контейнера используются две специальные операции: push_back() и pop_back(). Операция push_back() добавляет элемент в конец контейнера. Операция pop_back() удаляет последний элемент контейнера. Кроме того, список и дек (но не вектор) поддерживают операции push_front() и pop_front(). Операции pop_back() и pop_front() не возвращают удаленное значение. Чтобы считать первый элемент, используют операцию f ront(), а для считывания последнего элемента - операцию back(). Например:
    #include deque a_line; int ival;
    while С cin " ival ) {
    // вставить ival в конец a_line a_line.push_back( ival );
    // ок: прочитать первое значение a_line int curr_value = a_line.front();
    // ... сделать что-нибудь ...
    // удалить первый элемент a_line a_line.pop_front();

    Следующие операции являются общими для всех классов-контейнеров (так же, как и для класса string).
    • Операторы равенства (==) и неравенства (!=) возвращают значение true или false.
    • Оператор присваивания (=) копирует один контейнер в другой.
    • Операция size() возвращает количество элементов, которые в настоящий момент хранятся в контейнере.
    • Операция clear() удаляет все элементы.
    Применение перечисленных операций показано в следующей функции, void comp() vector &vl, vector &v2 ) // два вектора равны?
    if ( vl == v2 ) .
    return;

    // один из векторов пуст?
    if ( vl.empty() || v2.empty() ) return;
    // нет нужды определять вектор, если он не будет использован! vector t;
    // t присвоить больший вектор
    t = vl.size() > v2.size() ? vl : v2;
    // ... использовать t ...
    // ок. обнулить // t.empty() will now return true // t.size() will now return 0 t.clear();
    П ... ok, fill up t and use it some more ...
    Каждый из контейнеров поддерживает операции begin() и end (), которые возвращают соответствующие значения итератора. В частности:
    • операция begin() возвращает значение итератора для первого элемента;
    • операция end() возвращает значение итератора, которое на 1 больше, чем значение для последнего элемента.
    Обычно элементы контейнера перебирают, начиная с элемента, указатель на который получают с помощью операции begin(), и останавливаются, когда значение итератора достигает значения, возвращаемого операцией end (). Все контейнеры поддерживают операцию insert(), которая используется для добавления элементов, и операцию erase(), которая используется для удаления элементов.
    • Операция insert() добавляет в контейнер один элемент или диапазон элементов.
    • Операция erase() удаляет из контейнера один элемент или диапазон элементов.
    Действия операций insert() и erase() различаются для ассоциативных и последовательных контейнеров.

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

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


    Для добавления новой игрушки используется кнопка добавить.



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


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


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


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


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

    Листинг программы.

    Unit1.cpp

    #include

    #pragma hdrstop

    #include "Unit1.h"

    #include

    #include

    #include

    #include

    #include

    using namespace std;

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

    #pragma package(smart_init)

    #pragma resource "*.dfm"

    TForm1 *Form1;

    Games *I;

    std::list Igr;

    std::list::iterator w = Igr.begin();

    int selectCell;

    int Razmer=0;

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

    __fastcall TForm1::TForm1(TComponent* Owner)

    : TForm(Owner)

    {

    Form1->StringGrid1->Cells[0][0]="Код игрушки";

    Form1->StringGrid1->Cells[1][0]="Название игрушки";

    Form1->StringGrid1->Cells[2][0]="Тип игрушки";

    Form1->StringGrid1->Cells[3][0]="Возростные границы";

    Form1->StringGrid1->Cells[4][0]="Цена за единицу";

    Form1->StringGrid1->Cells[5][0]="Количество в наличаи";

    Form1->StringGrid1->Cells[6][0]="Дата поступления";

    Form1->StringGrid1->Cells[7][0]="Поставщик";

    I=new Games;

    }

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

    Games::Games()

    {

    }

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

    void __fastcall TForm1::FormCreate(TObject *Sender)

    {

    int g1; AnsiString g2; AnsiString g3; AnsiString g4; double g5;

    int g6; AnsiString g7; AnsiString g8;

    AnsiString s,s1;

    int m,t;

    TStringList *S;

    S=new TStringList;

    S->LoadFromFile("Game.txt") ;

    for (int i=0; iCount; i++)

    {

    s=S->Strings[i];

    m=s.Pos(" "); g1=s.SubString(1,m-1).ToInt();

    s=s.SubString(m+2,s.Length()-1);

    m=s.Pos(" "); g2=s.SubString(1,m-1);

    s=s.SubString(m+2,s.Length()-1);

    m=s.Pos(" "); g3=s.SubString(1,m-1);

    s=s.SubString(m+2,s.Length()-1);

    m=s.Pos(" "); g4=s.SubString(1,m-1);

    s=s.SubString(m+2,s.Length()-1);

    m=s.Pos(" "); g5=s.SubString(1,m-1).ToDouble();

    s=s.SubString(m+2,s.Length()-1);

    m=s.Pos(" "); g6=s.SubString(1,m-1).ToInt();;

    s=s.SubString(m+2,s.Length()-1);

    m=s.Pos(" "); g7=s.SubString(1,m-1);

    s=s.SubString(m+2,s.Length()-1);

    m=s.Pos(" "); g8=s.SubString(1,m-1);

    I->pId_G=g1;

    I->pName_G=g2;

    I->pTyp_G=g3;

    I->pAge=g4;

    I->pPrise=g5;

    I->pKol=g6;

    I->pDate=g7;

    I->pPost=g8;

    Igr.push_back(*I);

    w++;

    Razmer++;

    }

    int i=1;

    for (w=Igr.begin();w!=Igr.end();w++)

    {

    print(i);

    i++;

    }

    }

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

    void TForm1::print(int i)

    {

    Form1->StringGrid1->RowCount=Form1->StringGrid1->RowCount+1;

    Form1->StringGrid1->Cells[0][i]=w->pId_G;

    Form1->StringGrid1->Cells[1][i]=w->pName_G;

    Form1->StringGrid1->Cells[2][i]=w->pTyp_G;

    Form1->StringGrid1->Cells[3][i]=w->pAge;

    Form1->StringGrid1->Cells[4][i]=w->pPrise;

    Form1->StringGrid1->Cells[5][i]=w->pKol;

    Form1->StringGrid1->Cells[6][i]=w->pDate;

    Form1->StringGrid1->Cells[7][i]=w->pPost;

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

    void TForm1::print(int i, Games &w)

    {

    Form1->StringGrid1->RowCount=Form1->StringGrid1->RowCount+1;

    Form1->StringGrid1->Cells[0][i]=w.pId_G;

    Form1->StringGrid1->Cells[1][i]=w.pName_G;

    Form1->StringGrid1->Cells[2][i]=w.pTyp_G;

    Form1->StringGrid1->Cells[3][i]=w.pAge;

    Form1->StringGrid1->Cells[4][i]=w.pPrise;

    Form1->StringGrid1->Cells[5][i]=w.pKol;

    Form1->StringGrid1->Cells[6][i]=w.pDate;

    Form1->StringGrid1->Cells[7][i]=w.pPost;

    }

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

    void TForm1::clear1()

    {

    for(int i=1;iStringGrid1->RowCount;i++)

    {

    Form1->StringGrid1->Cells[0][i]="";

    Form1->StringGrid1->Cells[1][i]="";

    Form1->StringGrid1->Cells[2][i]="";

    Form1->StringGrid1->Cells[3][i]="";

    Form1->StringGrid1->Cells[4][i]="";

    Form1->StringGrid1->Cells[5][i]="";

    Form1->StringGrid1->Cells[6][i]="";

    Form1->StringGrid1->Cells[7][i]="";

    }

    };

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

    void __fastcall Games::SetpId_G(int value)

    { if(Id_G != value) { Id_G = value; } }

    int __fastcall Games::GetpId_G()

    { return Id_G; }

    void __fastcall Games::SetpName_G(AnsiString value)

    { if(Name_G != value) { Name_G = value; }}

    AnsiString __fastcall Games::GetpName_G()

    { return Name_G;}

    void __fastcall Games::SetpTyp_G(AnsiString value)

    { if(Typ_G != value) { Typ_G = value; }}

    AnsiString __fastcall Games::GetpTyp_G()

    { return Typ_G;}

    void __fastcall Games::SetpAge(AnsiString value)

    { if(Age != value) { Age = value; }}

    AnsiString __fastcall Games::GetpAge()

    { return Age;}

    void __fastcall Games::SetpPrise(double value)

    { if(Prise != value) { Prise = value; }}

    double __fastcall Games::GetpPrise()

    { return Prise;}

    void __fastcall Games::SetpKol(int value)

    { if(Kol != value) { Kol = value; }}

    int __fastcall Games::GetpKol()

    { return Kol;}

    void __fastcall Games::SetpDate(AnsiString value)

    { if(Date != value) { Date = value; }}

    AnsiString __fastcall Games::GetpDate()

    { return Date; }

    void __fastcall Games::SetpPost(AnsiString value)

    { if(Post != value) { Post = value; }}

    AnsiString __fastcall Games::GetpPost()

    { return Post;}

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

    void __fastcall TForm1::Button6Click(TObject *Sender)

    {GroupBox2->Visible=false;}

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

    void __fastcall TForm1::Button1Click(TObject *Sender)

    {GroupBox2->Visible=true;}

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

    void TForm1::Add()

    {int i,j;

    I->pId_G=Form1->Edit2->Text.ToInt();

    I->pName_G=Form1->Edit3->Text;

    I->pTyp_G=Form1->Edit4->Text;

    I->pAge=Form1->Edit5->Text;

    I->pPrise=Form1->Edit6->Text.ToDouble();

    I->pKol=Form1->Edit7->Text.ToInt();

    I->pDate=Form1->Edit14->Text;

    I->pPost=Form1->Edit15->Text;

    Igr.push_back(*I);

    Form1->StringGrid1->Cells[0][Razmer+1]=Form1->Edit2->Text;

    Form1->StringGrid1->Cells[1][Razmer+1]=Form1->Edit3->Text;

    Form1->StringGrid1->Cells[2][Razmer+1]=Form1->Edit4->Text;

    Form1->StringGrid1->Cells[3][Razmer+1]=Form1->Edit5->Text;

    Form1->StringGrid1->Cells[4][Razmer+1]=Form1->Edit6->Text;

    Form1->StringGrid1->Cells[5][Razmer+1]=Form1->Edit7->Text;

    Form1->StringGrid1->Cells[6][Razmer+1]=Form1->Edit14->Text;

    Form1->StringGrid1->Cells[7][Razmer+1]=Form1->Edit15->Text;

    Form1->StringGrid1->RowCount=2;

    i=1;

    for(w=Igr.begin();w!=Igr.end();w++)

    {print(i);

    i++;}
    TStringList *T;

    T = new TStringList;

    AnsiString S;

    for (i=1;iRowCount-1;i++)

    {S="";

    for (j=0; jColCount;j++)

    {S=S+StringGrid1->Cells[j][i]+" ";}

    T->Add(S);}

    T->SaveToFile("Game.txt");

    }

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

    void __fastcall TForm1::Button5Click(TObject *Sender)

    {Add();

    Form1->GroupBox2->Visible=false;}

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

    void __fastcall TForm1::Button8Click(TObject *Sender)

    { GroupBox3->Visible=false;}

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

    void __fastcall TForm1::Button2Click(TObject *Sender)

    {GroupBox3->Visible=true;

    Form1->Edit8->Text=Form1->StringGrid1->Cells[0][selectCell];

    Form1->Edit9->Text=Form1->StringGrid1->Cells[1][selectCell];

    Form1->Edit10->Text=Form1->StringGrid1->Cells[2][selectCell];

    Form1->Edit11->Text=Form1->StringGrid1->Cells[3][selectCell];

    Form1->Edit12->Text=Form1->StringGrid1->Cells[4][selectCell];

    Form1->Edit13->Text=Form1->StringGrid1->Cells[5][selectCell];

    Form1->Edit16->Text=Form1->StringGrid1->Cells[6][selectCell];

    Form1->Edit17->Text=Form1->StringGrid1->Cells[7][selectCell];}

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

    void __fastcall TForm1::Button7Click(TObject *Sender)

    {int i,j;

    Form1->GroupBox3->Visible=false;

    I->pId_G=Form1->StringGrid1->Cells[0][selectCell].ToDouble();

    I->pName_G=Form1->StringGrid1->Cells[1][selectCell];

    I->pTyp_G=Form1->StringGrid1->Cells[2][selectCell];

    I->pAge=Form1->StringGrid1->Cells[3][selectCell];

    I->pPrise=Form1->StringGrid1->Cells[4][selectCell].ToDouble();

    I->pKol=Form1->StringGrid1->Cells[5][selectCell].ToDouble();

    I->pDate=Form1->StringGrid1->Cells[6][selectCell];

    I->pPost=Form1->StringGrid1->Cells[7][selectCell];

    w=find(Igr.begin(),Igr.end(),*I);

    if (w!=Igr.end()){}

    (*w).pId_G=Form1->Edit8->Text.ToDouble();

    (*w).pName_G=Form1->Edit9->Text;

    (*w).pTyp_G=Form1->Edit10->Text;

    (*w).pAge=Form1->Edit11->Text;

    (*w).pPrise=Form1->Edit12->Text.ToDouble();

    (*w).pKol=Form1->Edit13->Text.ToDouble();

    (*w).pDate=Form1->Edit16->Text;

    (*w).pPost=Form1->Edit17->Text;

    Form1->StringGrid1->RowCount=1;

    i=1;

    for(w=Igr.begin();w!=Igr.end();w++)

    {print(i);

    i++;}

    TStringList *T;

    T = new TStringList;

    AnsiString S;

    for (i=1;iRowCount-1;i++)

    {S="";

    for (j=0;jColCount;j++)

    {S=S+StringGrid1->Cells[j][i]+" ";}

    T->Add(S);}

    T->SaveToFile("Game.txt");}

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

    void __fastcall TForm1::Button4Click(TObject *Sender)

    {int i=1;

    clear1();

    for (w=Igr.begin();w!=Igr.end();w++)

    { if (Form1->ComboBox1->Text=="Дата поступления")

    { if ((*w).pDate==Form1->Edit1->Text)

    { Form1->StringGrid1->RowCount=2;

    print(i,*w);

    Form1->StringGrid1->RowCount=Form1->StringGrid1->RowCount+i-1;

    i++; } }

    else

    if (Form1->ComboBox1->Text=="Поставщик")

    { if ((*w).pPost==Form1->Edit1->Text)

    { Form1->StringGrid1->RowCount=2;

    print(i,*w);

    Form1->StringGrid1->RowCount=Form1->StringGrid1->RowCount+i-1;

    i++; } }

    else

    if (Form1->ComboBox1->Text=="Возростные границы")

    { if ((*w).pAge==Form1->Edit1->Text)

    { Form1->StringGrid1->RowCount=2;

    print(i,*w);

    Form1->StringGrid1->RowCount=Form1->StringGrid1->RowCount+i-1;

    i++; } }

    else

    {ShowMessage("Введите параметры для поиска");return;};

    } }

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

    void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,

    int ARow, bool &CanSelect)

    {selectCell = ARow;}

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

    void __fastcall TForm1::Button9Click(TObject *Sender)

    {int i=1;

    Form1->StringGrid1->RowCount=2;

    for(w=Igr.begin();w!=Igr.end();w++)

    {print(i);i++;}}

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

    void __fastcall TForm1::Button3Click(TObject *Sender)

    {int i,j;

    I->pId_G=Form1->StringGrid1->Cells[0][selectCell].ToDouble();

    I->pName_G=Form1->StringGrid1->Cells[1][selectCell];

    I->pTyp_G=Form1->StringGrid1->Cells[2][selectCell];

    I->pAge=Form1->StringGrid1->Cells[3][selectCell];

    I->pPrise=Form1->StringGrid1->Cells[4][selectCell].ToDouble();

    I->pKol=Form1->StringGrid1->Cells[5][selectCell].ToDouble();

    I->pDate=Form1->StringGrid1->Cells[6][selectCell];

    I->pPost=Form1->StringGrid1->Cells[7][selectCell];

    w=find(Igr.begin(),Igr.end(),*I);

    if (w!=Igr.end()){}

    {Igr.erase(w);}

    Form1->StringGrid1->RowCount=1;

    i=1;

    for(w=Igr.begin();w!=Igr.end();w++)

    {print(i);

    i++;}

    TStringList *T;

    T = new TStringList;

    AnsiString S;

    for (i=1;iRowCount;i++)

    {S="";

    for (j=0;jColCount;j++)

    {S=S+StringGrid1->Cells[j][i]+" ";}

    T->Add(S);}

    T->SaveToFile("Game.txt");}

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

    Unit1.h

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

    #ifndef Unit1H

    #define Unit1H

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

    #include

    #include

    #include

    #include

    #include

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

    class Games

    { private:

    AnsiString Name_G, Typ_G, Age, Date,Post;

    double Id_G, Kol;

    double Prise;

    void __fastcall SetpName_G(AnsiString value);

    AnsiString __fastcall GetpName_G();

    void __fastcall SetpTyp_G(AnsiString value);

    AnsiString __fastcall GetpTyp_G();

    void __fastcall SetpAge(AnsiString value);

    AnsiString __fastcall GetpAge();

    void __fastcall SetpDate(AnsiString value);

    AnsiString __fastcall GetpDate();

    void __fastcall SetpPost(AnsiString value);

    AnsiString __fastcall GetpPost();

    void __fastcall SetpId_G(int value);

    int __fastcall GetpId_G();

    void __fastcall SetpPrise(double value);

    double __fastcall GetpPrise();

    void __fastcall SetpKol(int value);

    int __fastcall GetpKol();

    public:

    Games();

    void add (double g1, AnsiString g2, AnsiString g3, AnsiString g4, double g5,

    double g6, AnsiString g7, AnsiString g8);

    bool operator ==(const Games &KK) //перегрузка операции сравнения на равенство

    {return(this->Id_G==KK.Id_G);}

    __property AnsiString pName_G = { read=GetpName_G, write=SetpName_G };

    __property AnsiString pTyp_G = { read=GetpTyp_G, write=SetpTyp_G };

    __property AnsiString pAge = { read=GetpAge, write=SetpAge };

    __property AnsiString pDate = { read=GetpDate, write=SetpDate };

    __property AnsiString pPost = { read=GetpPost, write=SetpPost };

    __property int pId_G = { read=GetpId_G, write=SetpId_G };

    __property double pPrise = { read=GetpPrise, write=SetpPrise };

    __property int pKol = { read=GetpKol, write=SetpKol };

    };

    class TForm1 : public TForm

    {__published: // IDE-managed Components

    TStringGrid *StringGrid1;

    TButton *Button1;

    TButton *Button2;

    TGroupBox *GroupBox1;

    TEdit *Edit1;

    TButton *Button4;

    TComboBox *ComboBox1;

    TLabel *Label1;

    TGroupBox *GroupBox2;

    TLabel *Label2;

    TLabel *Label3;

    TLabel *Label4;

    TLabel *Label5;

    TLabel *Label6;

    TLabel *Label7;

    TEdit *Edit2;

    TEdit *Edit3;

    TEdit *Edit4;

    TEdit *Edit5;

    TEdit *Edit6;

    TEdit *Edit7;

    TButton *Button5;

    TButton *Button6;

    TGroupBox *GroupBox3;

    TEdit *Edit8;

    TEdit *Edit9;

    TEdit *Edit10;

    TEdit *Edit11;

    TEdit *Edit12;

    TEdit *Edit13;

    TButton *Button7;

    TButton *Button8;

    TButton *Button9;

    TButton *Button3;

    TEdit *Edit14;

    TEdit *Edit15;

    TLabel *Label14;

    TLabel *Label15;

    TEdit *Edit16;

    TEdit *Edit17;

    TLabel *Label8;

    TLabel *Label9;

    TLabel *Label10;

    TLabel *Label11;

    TLabel *Label12;

    TLabel *Label13;

    TLabel *Label16;

    TLabel *Label17;

    void __fastcall FormCreate(TObject *Sender);

    void __fastcall Button6Click(TObject *Sender);

    void __fastcall Button1Click(TObject *Sender);

    void __fastcall Button5Click(TObject *Sender);

    void __fastcall Button8Click(TObject *Sender);

    void __fastcall Button2Click(TObject *Sender);

    void __fastcall Button7Click(TObject *Sender);

    void __fastcall Button4Click(TObject *Sender);

    void __fastcall StringGrid1SelectCell(TObject *Sender, int ACol,

    int ARow, bool &CanSelect);

    void __fastcall Button9Click(TObject *Sender);

    void __fastcall Button3Click(TObject *Sender);

    private: // User declarations

    public: // User declarations

    void print(int i);

    void Add();

    void clear1();

    void print(int i,Games &w);

    __fastcall TForm1(TComponent* Owner);

    };

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

    extern PACKAGE TForm1 *Form1;

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

    #endif

    UML диаграмма.



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

    1. http://alenacpp.blogspot.com/2006/12/vector-vs-deque.html

    2. http://alenacpp.blogspot.com/2006/07/blog-post_10.html

    3. http://ru.wikipedia.org/wiki/%D0%9E%D1%87%D0%B5%D1%80%D0%B5%D0%B4%D1%8C_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)

    4. http://c-prog.ru/obobschennoe-programmirovanie/ispolzovanie-posledovatelnych-konteynerov.html




    написать администратору сайта