Вывод объектов на консоль

237
25 мая 2018, 09:10

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

#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
#include <windows.h>
using namespace std; 
class details
{
    public:
    details( )
    {
        string m;
        ifstream fout("detail_info.txt");
        while(getline(fout, m))
{
    cout<<m<<endl;
}
    fout.close();
    }
    details(string names,string shapes,string materials,float amounts,string colours,float weights,int quantitys)   
{
    name=names;
    shape=shapes;
    material=materials;
    amount=amounts;
    colour=colours;
    weight=weights;
    quantity=quantitys;
getting();
}
    void getting()
    {
        system("cls");
        cout<<endl<<endl<<endl<<endl;
        cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
        cout<<"Название детали: "<<name<<endl;
        cout<<"Форма детали: "<<shape<<endl;
        cout<<"Материал детали: "<<material<<endl;
        cout<<"Объем детали: "<<amount<<endl;
        cout<<"Цвет детали: "<<colour<<endl;
        cout<<"Вес детали: "<<weight<<endl;
        cout<<"Количество деталей: "<<quantity<<endl;
        cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
        cout<<endl<<endl<<endl<<endl;
    }
    void set_name(string detail_name)
    {
        name=detail_name;
    }
    string get_name()
    {
        return name;
    }
    void set_shape(string detail_shape)
    {
        shape=detail_shape;
    }
    string get_shape()
    {
        return shape;
    }
    void set_amount(float detail_amount)
    {
        amount=detail_amount;
    }
    float get_amount()
    {
        return amount;
    }
    void set_material(string detail_material)
    {
        material=detail_material;
    }
    string get_material()
    {
        return material;    
    }   
    private:
        string name;
        string shape;
        float amount;
        string material;    
    protected: 
        string colour;
        float weight;
        int quantity;   
};
class details_1 : public details
{
    public:
    void set_colour(string detail_colour)
    {
        colour=detail_colour;
    }
    string get_colour()
    {
        return colour;
    }
    void set_weight(float detail_weight)
    {
        weight=detail_weight;
    }
    float get_weight()
    {
        return weight;
    }
    void set_quantity(int detail_quantity)
    {
        quantity=detail_quantity;
    }
    int get_quantity()
    {
        return quantity;
    }
};

    void creat_inf(details *detail,details_1 *detail_1)
        {
        ofstream fout;
        fout.open("detail_info.txt", ios_base::app);
        system("cls");
        std::string name;
        std::string shape;
        float amount;
        std::string material;
        std::string colour;
        int quantity;
        float weight;
        cout<<"~~~~~~~~~~~~Ввод информации~~~~~~~~~~~~"<<endl;
        cout<<"Введите название детали:  ";
        cin>>name;
        cout<<"Введите форму детали:  ";
        cin>>shape;
        cout<<"Введите материал детали:  ";
        cin>>material;
        cout<<"Введите объем детали:  ";
        while(!(cin>>amount) || cin.get() != '\n' ) 
    {
        cout<<"~~~~~~~~~~~~~"<<endl;
        cout<<"ОШИБКА"<<endl;
        cout<<"Введите число:  ";
        cout<<endl<<endl<<endl<<endl;
        cin.clear(); 
        cin.sync();  
   }
        cout<<"Введите цвет детали:  ";
        cin>>colour;
        cout<<"Введите вес детали:  ";
            while(!(cin>>weight) || cin.get() != '\n' ) 
    {
        cout<<"~~~~~~~~~~~~~"<<endl;
        cout<<"ОШИБКА"<<endl;
        cout<<"Введите число:  ";
        cout<<endl<<endl<<endl<<endl;
        cin.clear(); 
        cin.sync();  
   }
        cout<<"Введите количество деталь:  ";
            while(!(cin>>quantity) || cin.get() != '\n' ) 
    {
        cout<<"~~~~~~~~~~~~~"<<endl;
        cout<<"ОШИБКА"<<endl;
        cout<<"Введите число:  ";
        cout<<endl<<endl<<endl<<endl;
        cin.clear(); 
        cin.sync();  
   }

        detail->set_name(name);
        detail->set_shape(shape);
        detail->set_material(material);
        detail->set_amount(amount);
        detail_1->set_colour(colour);
        detail_1->set_weight(weight);
        detail_1->set_quantity(quantity);
        system("cls");
        cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
        cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
        cout<<"Название детали: "<<detail->get_name()<<endl;
        cout<<"Форма детали: "<<detail->get_shape()<<endl;
        cout<<"Материал детали: "<<detail->get_material()<<endl;
        cout<<"Объем детали: "<<detail->get_amount()<<endl;
        cout<<"Цвет детали: "<<detail_1->get_colour()<<endl;
        cout<<"Вес детали: "<<detail_1->get_weight()<<endl;
        cout<<"Количество деталь: "<<detail_1->get_quantity()<<endl;
        cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
        cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
        cout<<endl<<endl<<endl<<endl;
        fout<<"Название детали: "<<detail->get_name()<<endl;
        fout<<"Форма детали: "<<detail->get_shape()<<endl;
        fout<<"Материал детали: "<<detail->get_material()<<endl;
        fout<<"Объем детали: "<<detail->get_amount()<<endl;
        fout<<"Цвет детали: "<<detail_1->get_colour()<<endl;
        fout<<"Вес детали: "<<detail_1->get_weight()<<endl;
        fout<<"Количество деталь: "<<detail_1->get_quantity()<<endl;
        fout<<endl<<"-------------------------------------"<<endl;  
        fout.close();
        }

void Det()
{
    details det1("Пусто","Пусто","Пусто",0,"Пусто",0,0);
}

void load_details(details *detail,details_1 *detail_1)
{
        cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
        cout<<"Название детали: "<<detail->get_name()<<endl;
        cout<<"Форма детали: "<<detail->get_shape()<<endl;
        cout<<"Материал детали: "<<detail->get_material()<<endl;
        cout<<"Объем детали: "<<detail->get_amount()<<endl; 
        cout<<"Цвет детали: "<<detail_1->get_colour()<<endl;
        cout<<"Вес детали: "<<detail_1->get_weight()<<endl;
        cout<<"Количество деталь: "<<detail_1->get_quantity()<<endl;
        cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}

void editing_detail(details *detail,details_1 *detail_1)
{
    string name;
    load_details(detail,detail_1);
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"Введите новое название детали:";
    cin>>name;
    detail->set_name(name);
    cout<<endl<<endl<<endl;
    cout<<"Название детали: "<<detail->get_name()<<endl;
    system("cls");
}
void editing_shape(details *detail,details_1 *detail_1)
{
    string shape;
    load_details(detail,detail_1);
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"Введите новую форму детали:";
    cin>>shape;
    detail->set_shape(shape);
    cout<<endl<<endl<<endl;
    cout<<"Форма детали: "<<detail->get_shape()<<endl;
    system("cls");
}
void editing_material(details *detail,details_1 *detail_1)
{
    string material;
    load_details(detail,detail_1);
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"Введите новый материал детали:";
    cin>>material;
    detail->set_material(material);
    cout<<endl<<endl<<endl;
    cout<<"Материал детали: "<<detail->get_material()<<endl;
    system("cls");
}
void editing_amount(details *detail,details_1 *detail_1)
{
    float amount;
    load_details(detail,detail_1);
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"Введите новый объем детали:";
    cin>>amount;
    detail->set_amount(amount);
    cout<<endl<<endl<<endl;
    cout<<"Объем детали: "<<detail->get_amount()<<endl;
    system("cls");
}
void editing_colour(details *detail,details_1 *detail_1)
{
    string colour;
    load_details(detail,detail_1);
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"Введите новый цвет детали:";
    cin>>colour;
    detail_1->set_colour(colour);
    cout<<endl<<endl<<endl;
    cout<<"Цвет детали: "<<detail_1->get_colour()<<endl;
    system("cls");
}
void editing_weight(details *detail,details_1 *detail_1)
{
    float weight;
    load_details(detail,detail_1);
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"Введите новый вес детали:";
    cin>>weight;
    detail_1->set_weight(weight);
    cout<<endl<<endl<<endl;
    cout<<"Вес детали: "<<detail_1->get_weight()<<endl;
    system("cls");
}

void editing_quantity(details *detail,details_1 *detail_1)
{
    int quantity;
    load_details(detail,detail_1);
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout<<"Введите новое количество деталей:";
    cin>>quantity;
    detail_1->set_quantity(quantity);
    cout<<endl<<endl<<endl;
    cout<<"Количество деталей: "<<detail_1->get_quantity()<<endl;
    system("cls");
}

void edit_menu(details *detail,details_1 *detail_1)
{
        int nums;
        system("cls");
    cout<<" Меню редактирования данных  "<<endl<<endl;  
    cout<<"1) Редактирование названия детали"<<endl;
    cout<<"2) Редактирование формы детали"<<endl;
    cout<<"3) Редактирование материала детали"<<endl;
    cout<<"4) Редактирование объема детали"<<endl;
    cout<<"5) Редактирование цвета детали"<<endl;
    cout<<"6) Редактирование веса детали"<<endl;
    cout<<"7) Редактирование количества деталь"<<endl;
    cout<<endl<<endl<<endl<<"Введите номер пукнкта меню:  ";
    cin>>nums;
    switch(nums)
    {
    case 1: editing_detail(detail,detail_1);
            break;
    case 2: editing_shape(detail,detail_1);
            break;
    case 3: editing_material(detail,detail_1);
            break;
    case 4: editing_amount(detail,detail_1);
            break;
    case 5: editing_colour(detail,detail_1);
            break;
    case 6: editing_weight(detail,detail_1);
            break;  
    case 7: editing_quantity(detail,detail_1);
            break;  

    }
}
void remove_infile()
{
        ofstream fout;
        fout.open("detail_info.txt", ios_base::trunc);  
        fout.close();
        system("cls");
}
    int main()
    {
        details *detail = new details;
        details_1 *detail_1 = new details_1;
        int num;
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251); 
            system("cls");
    do{
        cout<<"     Меню        "<<endl;
        cout<<"1) Ввод информации о детали" <<endl;
        cout<<"2) Загрузка информации о деталях из файла"<<endl;
        cout<<"3) Вывод информации на экран"<<endl;
        cout<<"4) Очистка консоли"<<endl;
        cout<<"5) Редактирование информации о детали"<<endl;
        cout<<"6) Загрузка конструктора"<<endl;
        cout<<"7) Удаление содержимого в файле"<<endl;
        cout<<"8) Выход"<<endl;
        cout<<endl<<endl<<endl<<"Введите номер пукнкта меню:  ";
        cin>>num;
        switch(num)
        {
            case 1: creat_inf(detail,detail_1);
            break;
            case 2: details();
            break;
            case 3: load_details(detail,detail_1);
            break;
            case 4: system("cls");
            break;
            case 5: edit_menu(detail,detail_1); 
            break;  
            case 6: Det();
            break;
            case 7: remove_infile();
            break;
            case 8: exit(0);
        }
    }
        while(num>0);
        system("pause");
        return 0;
    }
READ ALSO
Как в wxString записать ентер?

Как в wxString записать ентер?

Как ентер сделать частью wxString строки?

226
Error C2660: &#39;strcpy_s&#39;: function does not take 2 arguments

Error C2660: 'strcpy_s': function does not take 2 arguments

Я не могу понять в чем моя ошибкаДобавила "_s", не помогает

197
Собственная функция вместо ButtonClick

Собственная функция вместо ButtonClick

C++ Builder 2006Имеется БД Access, подключенная к Builder C++ через ADOConnection, ADOTable и DataSource

194
Ошибка с xutility

Ошибка с xutility

пытаясь создать функцию которая бы выдавала случайное простое число, я получаю следующие ошибки при компиляции:

200