piątek, 7 czerwca 2013

Ewidencja sprzętu komputerowego w C++

Ewidencja sprzętu komputerowego C++ Visual Studio


Bardzo prosty programik posiadający dane na temat sprzętu komputerowego, taka mała pseudo baza danych.


Cały projekt dostępny do pobrania/podglądu - dysk google


Poniżej kawałek kodu:

ZestawKomputerowy.h

#pragma once

ref class ZestawKomputerowy //klasa przechowująca dane dotyczące wpisów w obiekcie
{
public:
    System::String^ pracownik; //imie i nazwisko pracownika
    System::String^ numer; //numer zestawu
    System::String^ procesor;
    System::String^ ram;
    System::String^ dysk;
    System::String^ monitor;

    ZestawKomputerowy() //domyślny konstruktor klasy ZestawKomputerowy
    {
    }
//konstruktor klasy ZestawKomputerowy przypisujący wszystkie stringi do obiektu
    ZestawKomputerowy(System::String^ pracownik,System::String^ numer,     System::String^ procesor, System::String^ ram,     System::String^ dysk, System::String^ monitor)
    {
        this->pracownik = pracownik;
        this->numer = numer;
        this->procesor = procesor;
        this->ram = ram;
        this->dysk = dysk;
        this->monitor = monitor;
    }
   
    ~ZestawKomputerowy(void) //destruktor klasy ZestawKomputerowy
    {
   
    }
    //metoda klasy ZestawKomputerowy zapisująca zmiany podane jako argumenty
    void EdytujZapisz(System::String^ pracownik,System::String^ numer,     System::String^ procesor, System::String^ ram,     System::String^ dysk, System::String^ monitor)
    {
        this->pracownik = pracownik;
        this->numer = numer;
        this->procesor = procesor;
        this->ram = ram;
        this->dysk = dysk;
        this->monitor = monitor;
   
    }


};
Form1.h

 #pragma once
#include "ZestawKomputerowy.h"

namespace EwidencjaSprzętuKomputerowego {

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;

    /// <summary>
    /// Summary for Form1
    ///
    /// WARNING: If you change the name of this class, you will need to change the
    ///          'Resource File Name' property for the managed resource compiler tool
    ///          associated with all .resx files this class depends on.  Otherwise,
    ///          the designers will not be able to interact properly with localized
    ///          resources associated with this form.
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form  //klasa formy
    {
    public:
        System::Collections::Generic::List<ZestawKomputerowy^>^ lista; //wskaźnik na listę obiektów klasy ZestawKomputerowy
        ZestawKomputerowy^ zestaw; //wskaźnik na pomocniczy obiekt klasy ZestawKomputerowy
        bool czy_nowy_wpis; //zmienna pomocnicza określająca czy podczas nowy obiekt ma zostać utworzony, czy ma być zapis danych do istniejącego obiektu

    private: System::Windows::Forms::ErrorProvider^  errorProvider1; //do wyświetlania błędów przy wpisach
    public:
        Form1(void) //konstruktor formy
        {
            InitializeComponent();
            //
            //TODO: Add the constructor code here
            //
           
            this->czy_nowy_wpis = false; //ustawiam domyślnie false zeby obiekt nie był dodawany
            this->lista = gcnew System::Collections::Generic::List<ZestawKomputerowy^>(); //tworze nowy obiekt klasy lista przechowujący obiekty klasy ZestawKomputerowy
            this->OdczytajPlik("dane.txt"); //wywołuję metodę klasy form1 która służy do odczytania danych z pliku
            for each(ZestawKomputerowy^ tmp in this->lista) //dla każdego elementu znajdującego się w liście
                this->listBox1->Items->Add(tmp->numer); //wyświetla w listboxie jego numer ewidencyjny
            if(this->lista->Count>0) //jeżeli są jakieś obiekty w liście (licznik listy >0 )
                this->listBox1->SelectedIndex = 0; //to zaznacza pierwszy element
        }

    protected:
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        ~Form1() //destruktor formy
        {
            this->ZapiszPlik("dane.txt"); //po zgaszeniu aplikacji następuje zapis danych do pliku
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Label^  label1;
    protected:
    private: System::Windows::Forms::Label^  label2;
    private: System::Windows::Forms::Label^  label3;
    private: System::Windows::Forms::Label^  label4;
    private: System::Windows::Forms::Label^  label5;
    private: System::Windows::Forms::Label^  label6;

    private: System::Windows::Forms::TextBox^  textBox_ImieNazwisko;
    private: System::Windows::Forms::TextBox^  textBox_NumerEwidencyjny;
    private: System::Windows::Forms::TextBox^  textBox_Procesor;
    private: System::Windows::Forms::TextBox^  textBox_Ram;
    private: System::Windows::Forms::TextBox^  textBox_Dysk;
    private: System::Windows::Forms::TextBox^  textBox_Monitor;
    private: System::Windows::Forms::GroupBox^  groupBox1;
    private: System::Windows::Forms::ListBox^  listBox1;
    private: System::Windows::Forms::Button^  button_Nowy;
    private: System::Windows::Forms::Button^  button_Zapisz;
    private: System::Windows::Forms::Button^  button_Anuluj;
    private: System::Windows::Forms::Button^  button_Usun;
    private: System::ComponentModel::IContainer^  components;



    private:
        /// <summary>
        /// Required designer variable.
        /// </summary>


#pragma region Windows Form Designer generated code //z automatu się tworzy podczas pracy w Form designerze
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        void InitializeComponent(void)
        {
            this->components = (gcnew System::ComponentModel::Container());
            this->label1 = (gcnew System::Windows::Forms::Label());
            this->label2 = (gcnew System::Windows::Forms::Label());
            this->label3 = (gcnew System::Windows::Forms::Label());
            this->label4 = (gcnew System::Windows::Forms::Label());
            this->label5 = (gcnew System::Windows::Forms::Label());
            this->label6 = (gcnew System::Windows::Forms::Label());
            this->textBox_ImieNazwisko = (gcnew System::Windows::Forms::TextBox());
            this->textBox_NumerEwidencyjny = (gcnew System::Windows::Forms::TextBox());
            this->textBox_Procesor = (gcnew System::Windows::Forms::TextBox());
            this->textBox_Ram = (gcnew System::Windows::Forms::TextBox());
            this->textBox_Dysk = (gcnew System::Windows::Forms::TextBox());
            this->textBox_Monitor = (gcnew System::Windows::Forms::TextBox());
            this->groupBox1 = (gcnew System::Windows::Forms::GroupBox());
            this->listBox1 = (gcnew System::Windows::Forms::ListBox());
            this->button_Nowy = (gcnew System::Windows::Forms::Button());
            this->button_Zapisz = (gcnew System::Windows::Forms::Button());
            this->button_Anuluj = (gcnew System::Windows::Forms::Button());
            this->button_Usun = (gcnew System::Windows::Forms::Button());
            this->errorProvider1 = (gcnew System::Windows::Forms::ErrorProvider(this->components));
            this->groupBox1->SuspendLayout();
            (cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->errorProvider1))->BeginInit();
            this->SuspendLayout();
            //
            // label1
            //
            this->label1->AutoSize = true;
            this->label1->Location = System::Drawing::Point(195, 12);
            this->label1->Name = L"label1";
            this->label1->Size = System::Drawing::Size(78, 13);
            this->label1->TabIndex = 0;
            this->label1->Text = L"Imię i nazwisko";
            //
            // label2
            //
            this->label2->AutoSize = true;
            this->label2->Location = System::Drawing::Point(195, 57);
            this->label2->Name = L"label2";
            this->label2->Size = System::Drawing::Size(99, 13);
            this->label2->TabIndex = 1;
            this->label2->Text = L"Numer ewidencyjny";
            //
            // label3
            //
            this->label3->AutoSize = true;
            this->label3->Location = System::Drawing::Point(43, 26);
            this->label3->Name = L"label3";
            this->label3->Size = System::Drawing::Size(49, 13);
            this->label3->TabIndex = 2;
            this->label3->Text = L"Procesor";
            //
            // label4
            //
            this->label4->AutoSize = true;
            this->label4->Location = System::Drawing::Point(63, 51);
            this->label4->Name = L"label4";
            this->label4->Size = System::Drawing::Size(29, 13);
            this->label4->TabIndex = 3;
            this->label4->Text = L"Ram";
            //
            // label5
            //
            this->label5->AutoSize = true;
            this->label5->Location = System::Drawing::Point(61, 77);
            this->label5->Name = L"label5";
            this->label5->Size = System::Drawing::Size(31, 13);
            this->label5->TabIndex = 4;
            this->label5->Text = L"Dysk";
            //
            // label6
            //
            this->label6->AutoSize = true;
            this->label6->Location = System::Drawing::Point(50, 103);
            this->label6->Name = L"label6";
            this->label6->Size = System::Drawing::Size(42, 13);
            this->label6->TabIndex = 5;
            this->label6->Text = L"Monitor";
            //
            // textBox_ImieNazwisko
            //
            this->textBox_ImieNazwisko->Location = System::Drawing::Point(198, 28);
            this->textBox_ImieNazwisko->Name = L"textBox_ImieNazwisko";
            this->textBox_ImieNazwisko->Size = System::Drawing::Size(195, 20);
            this->textBox_ImieNazwisko->TabIndex = 7;
            //
            // textBox_NumerEwidencyjny
            //
            this->textBox_NumerEwidencyjny->Location = System::Drawing::Point(300, 54);
            this->textBox_NumerEwidencyjny->Name = L"textBox_NumerEwidencyjny";
            this->textBox_NumerEwidencyjny->Size = System::Drawing::Size(93, 20);
            this->textBox_NumerEwidencyjny->TabIndex = 8;
            //
            // textBox_Procesor
            //
            this->textBox_Procesor->Location = System::Drawing::Point(97, 23);
            this->textBox_Procesor->Name = L"textBox_Procesor";
            this->textBox_Procesor->Size = System::Drawing::Size(90, 20);
            this->textBox_Procesor->TabIndex = 9;
            //
            // textBox_Ram
            //
            this->textBox_Ram->Location = System::Drawing::Point(97, 48);
            this->textBox_Ram->Name = L"textBox_Ram";
            this->textBox_Ram->Size = System::Drawing::Size(90, 20);
            this->textBox_Ram->TabIndex = 10;
            //
            // textBox_Dysk
            //
            this->textBox_Dysk->Location = System::Drawing::Point(97, 74);
            this->textBox_Dysk->Name = L"textBox_Dysk";
            this->textBox_Dysk->Size = System::Drawing::Size(89, 20);
            this->textBox_Dysk->TabIndex = 11;
            //
            // textBox_Monitor
            //
            this->textBox_Monitor->Location = System::Drawing::Point(97, 100);
            this->textBox_Monitor->Name = L"textBox_Monitor";
            this->textBox_Monitor->Size = System::Drawing::Size(89, 20);
            this->textBox_Monitor->TabIndex = 12;
            //
            // groupBox1
            //
            this->groupBox1->Controls->Add(this->textBox_Monitor);
            this->groupBox1->Controls->Add(this->textBox_Dysk);
            this->groupBox1->Controls->Add(this->textBox_Ram);
            this->groupBox1->Controls->Add(this->textBox_Procesor);
            this->groupBox1->Controls->Add(this->label6);
            this->groupBox1->Controls->Add(this->label5);
            this->groupBox1->Controls->Add(this->label4);
            this->groupBox1->Controls->Add(this->label3);
            this->groupBox1->Location = System::Drawing::Point(198, 80);
            this->groupBox1->Name = L"groupBox1";
            this->groupBox1->Size = System::Drawing::Size(222, 154);
            this->groupBox1->TabIndex = 13;
            this->groupBox1->TabStop = false;
            this->groupBox1->Text = L"Komputer";
            //
            // listBox1
            //
            this->listBox1->FormattingEnabled = true;
            this->listBox1->Location = System::Drawing::Point(12, 12);
            this->listBox1->Name = L"listBox1";
            this->listBox1->Size = System::Drawing::Size(154, 303);
            this->listBox1->TabIndex = 14;
            this->listBox1->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::listBox1_SelectedIndexChanged);
            //
            // button_Nowy
            //
            this->button_Nowy->Location = System::Drawing::Point(12, 321);
            this->button_Nowy->Name = L"button_Nowy";
            this->button_Nowy->Size = System::Drawing::Size(74, 32);
            this->button_Nowy->TabIndex = 15;
            this->button_Nowy->Text = L"Nowy";
            this->button_Nowy->UseVisualStyleBackColor = true;
            this->button_Nowy->Click += gcnew System::EventHandler(this, &Form1::button_Nowy_Click);
            //
            // button_Zapisz
            //
            this->button_Zapisz->Location = System::Drawing::Point(198, 262);
            this->button_Zapisz->Name = L"button_Zapisz";
            this->button_Zapisz->Size = System::Drawing::Size(67, 32);
            this->button_Zapisz->TabIndex = 16;
            this->button_Zapisz->Text = L"Zapisz";
            this->button_Zapisz->UseVisualStyleBackColor = true;
            this->button_Zapisz->Click += gcnew System::EventHandler(this, &Form1::button_Zapisz_Click);
            //
            // button_Anuluj
            //
            this->button_Anuluj->Location = System::Drawing::Point(271, 262);
            this->button_Anuluj->Name = L"button_Anuluj";
            this->button_Anuluj->Size = System::Drawing::Size(68, 32);
            this->button_Anuluj->TabIndex = 17;
            this->button_Anuluj->Text = L"Anuluj";
            this->button_Anuluj->UseVisualStyleBackColor = true;
            this->button_Anuluj->Click += gcnew System::EventHandler(this, &Form1::button_Anuluj_Click);
            //
            // button_Usun
            //
            this->button_Usun->Location = System::Drawing::Point(92, 321);
            this->button_Usun->Name = L"button_Usun";
            this->button_Usun->Size = System::Drawing::Size(74, 32);
            this->button_Usun->TabIndex = 18;
            this->button_Usun->Text = L"Usuń";
            this->button_Usun->UseVisualStyleBackColor = true;
            this->button_Usun->Click += gcnew System::EventHandler(this, &Form1::button_Usun_Click);
            //
            // errorProvider1
            //
            this->errorProvider1->ContainerControl = this;
            //
            // Form1
            //
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(432, 357);
            this->Controls->Add(this->button_Usun);
            this->Controls->Add(this->button_Anuluj);
            this->Controls->Add(this->button_Zapisz);
            this->Controls->Add(this->button_Nowy);
            this->Controls->Add(this->listBox1);
            this->Controls->Add(this->groupBox1);
            this->Controls->Add(this->textBox_NumerEwidencyjny);
            this->Controls->Add(this->textBox_ImieNazwisko);
            this->Controls->Add(this->label2);
            this->Controls->Add(this->label1);
            this->Name = L"Form1";
            this->Text = L"Ewidencja sprzętu komputerowego";
            this->groupBox1->ResumeLayout(false);
            this->groupBox1->PerformLayout();
            (cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->errorProvider1))->EndInit();
            this->ResumeLayout(false);
            this->PerformLayout();

        }
#pragma endregion
private: System::Void button_Nowy_Click(System::Object^  sender, System::EventArgs^  e)
    {
        this->czy_nowy_wpis = true; //ustawiam zmienną jako dodanie nowego wpisu
        this->CzyscPolaFormularza(); //czyszczę pola formularza poprzez wywołanie metody klasy form1
        this->listBox1->Enabled = false; //wyłączam aktywność listboxa - zeby nie dało się kliknąć na jakiś inny wpis
        this->button_Nowy->Enabled  = false; //wyłączam klawisz Nowy aby nie dało się ponownie go nacisnąć jeśli już został naciśnięty
        this->SprawdzPola(); //wywołuje metodę klasy form1 sprawdzającą czy pola nie są puste
    }

private: System::Void button_Anuluj_Click(System::Object^  sender, System::EventArgs^  e)
    {

            this->listBox1->Enabled = true; //załączam listboxa z powrotem
            this->button_Nowy->Enabled  = true; //włączam przycisk Nowy
            this->CzyscPolaFormularza(); //czyszczę pola formularza
            this->errorProvider1->Clear(); //czyszczę stan sprawdzania pól
            this->czy_nowy_wpis = false; //ustawiam na false jako że wpis nie jest dodawany

 if(this->lista->Count>0) //jeżeli lista ma jakieś elementy
 {
                this->listBox1->SelectedIndex = 0; //zaznaczam pierwszy
                this->PokazWybrany(this->lista[0]); //i go wyświetlam wywołując metodę klasy form1 podając jako argument wskaśnik na ten element
 }
    }

private: System::Void button_Zapisz_Click(System::Object^  sender, System::EventArgs^  e)
    {

if(this->lista->Count==0)  //jeżeli w liście nie ma żadnego elementu (a nie był nacisnięty przycisk Nowy)
{
    this->czy_nowy_wpis = true; //to ustawiam zmienną jako true zeby dodało nowy wpis

}
if(false==this->SprawdzPola()) //jeżeli nie będzie żadnego pustego pola
    {
        if(this->czy_nowy_wpis) //jeżeli ma zostać dodany nowy wpis
        {   //to tworzę nowy obiekt wywołując konstruktor, pobierając tekst z pól formularza i przypisuje wskaźnik na obiekt do zmiennej pomocniczej
            this->zestaw = gcnew ZestawKomputerowy(this->textBox_ImieNazwisko->Text, this->textBox_NumerEwidencyjny->Text,    this->textBox_Procesor->Text, this->textBox_Ram->Text, this->textBox_Dysk->Text, this->textBox_Monitor->Text);
            this->lista->Add(this->zestaw); //dodaję ten obiekt do listy
            this->czy_nowy_wpis = false; //resetuję zmienną jako że obiekt został dodany
        }
        else if(this->listBox1->SelectedItem!=nullptr) // w przeciwnym wypadku jeżeli jakiś numer w listboxie został zaznaczony
            this->zestaw->EdytujZapisz(this->textBox_ImieNazwisko->Text, this->textBox_NumerEwidencyjny->Text,    this->textBox_Procesor->Text, this->textBox_Ram->Text, this->textBox_Dysk->Text, this->textBox_Monitor->Text); //pobieram dane i zapisuję jako edycja
        else //lub w jeszcze innym wypadku nieokreślonym - traktuję to jako dodawanie nowego wpisu
        {
            this->zestaw = gcnew ZestawKomputerowy(this->textBox_ImieNazwisko->Text, this->textBox_NumerEwidencyjny->Text,    this->textBox_Procesor->Text, this->textBox_Ram->Text, this->textBox_Dysk->Text, this->textBox_Monitor->Text);
            this->lista->Add(this->zestaw);
            this->czy_nowy_wpis = false;
        }
        this->listBox1->Enabled = true; //załączam listboxa z powrotem
        this->button_Nowy->Enabled  = true;     //przycisk Nowy też
        this->CzyscPolaFormularza(); //czyszczę pola
        this->listBox1->Items->Clear(); //czyszczę pola listboxa
        for each(ZestawKomputerowy^ tmp in this->lista) //dla każdego obiektu klasy ZestawKomputerowy w liscie
            this->listBox1->Items->Add(tmp->numer); //dodaję jako numer ewidencyjny do listboxa
        if(this->lista->Count>0) //jeżeli coś jest w liscie
            {
                this->listBox1->SelectedIndex = 0; //to ustawiam zaznaczenie na pierwszy element
            }
    }
    }

private: System::Void button_Usun_Click(System::Object^  sender, System::EventArgs^  e)
    {
        if(this->listBox1->SelectedItem!=nullptr) //jeżeli coś zostało zaznaczone w listboxie
        {
            System::String^ nazwa; //zmienna pomocnicza przechowująca nazwę
            nazwa = this->listBox1->SelectedItem->ToString(); //przypisuję nazwę - numer ewidencyjny zaznaczonego stringa
            for each(ZestawKomputerowy^ tmp in this->lista)
            { //przeszukuję listę
                if(this->lista->Equals(nazwa,tmp->numer))//jeżeli numer identyfikacyjny zostanie znaleziony w liscie
                {
                this->lista->Remove(tmp); //usuwam ten obiekt z listy
                break; //przerywam pętlę
                }
            }
            this->listBox1->Items->Clear(); //czyszczę listboxa
            for each(ZestawKomputerowy^ tmp in this->lista) //ładuję do niego obecny stan listy
                this->listBox1->Items->Add(tmp->numer);
            if(this->lista->Count>0) //jeżeli coś jest w liscie
            {
                this->listBox1->SelectedIndex = 0; // to zaznaczam pierwszy element w listboxie
            }
        }


    }
public: void CzyscPolaFormularza(void) //czysci pola tekstowe formularza
{
    this->textBox_ImieNazwisko->Clear();
    this->textBox_NumerEwidencyjny->Clear();
    this->textBox_Procesor->Clear();
    this->textBox_Ram->Clear();
    this->textBox_Dysk->Clear();
    this->textBox_Monitor->Clear();
    return;
}

public: void PokazWybrany(ZestawKomputerowy^ wybrany) //wyświetla w textboxach dane obiektu klasy ZestawKomputerowy którego wskaźnik jest podawany jako argument tej metody
{
    if(wybrany!=nullptr) //jeżeli wybrany nie jest null pointerem
    {
    this->textBox_ImieNazwisko->Text = wybrany->pracownik->ToString();
    this->textBox_NumerEwidencyjny->Text = wybrany->numer->ToString();
    this->textBox_Procesor->Text = wybrany->procesor->ToString();
    this->textBox_Ram->Text = wybrany->ram->ToString();
    this->textBox_Dysk->Text = wybrany->dysk->ToString();
    this->textBox_Monitor->Text = wybrany->monitor->ToString();
    }
    return;
}



private: System::Void listBox1_SelectedIndexChanged(System::Object^  sender, System::EventArgs^  e)
    { //jeżeli index w listboxie zostanie zmieniony
        this->zestaw = nullptr; //przypisuje pusty wskaźnik do zmiennej pomocniczej zeby nie było np problemów z edycją
        if(this->listBox1->SelectedItem!=nullptr) //jeżeli jest coś zaznaczone
             {       
             System::String^ nazwa;
             nazwa = this->listBox1->SelectedItem->ToString(); //przypisuję zaznaczony text w listboxie
            for each(ZestawKomputerowy^ tmp in this->lista)
            { //przeszukuję listę
                if(this->lista->Equals(nazwa,tmp->numer)) //jeśli znajdę element który został zaznaczony
                {
                this->zestaw = tmp; //do zmiennej pomocniczej przypisuję znaleziony wskaźnik na obiekt
                break; //przerywam pętlę
                }
            }
        this->PokazWybrany(this->zestaw); //pokazuje w formularzu dane tego obiektu
        }
    }

public: bool SprawdzPola(void)
 {
     bool error = false; //zmienna pomocnicza określająca czy jest gdziekolwiek błąd, false -oznacza brak błędu
    //każde pole musi być zapisane jakimkolwiek tekstem
    if (this->textBox_ImieNazwisko->Text->Equals("")) //jeżeli textbox jest pusty
    {
        this->errorProvider1->SetError(this->textBox_ImieNazwisko, "Uzupełnij wpis!");//ustawia dla tego pola błąd
        error = true;//i zmienia na true czyli jest błąd
    }
    else //w przeciwnym wypadku
        this->errorProvider1->SetError(this->textBox_ImieNazwisko, ""); //czyści stan błędu dla obecnego elementu
     //itd . . .
    if (this->textBox_NumerEwidencyjny->Text->Equals(""))
    {
        this->errorProvider1->SetError(this->textBox_NumerEwidencyjny, "Uzupełnij wpis!");
        error = true;
    }
    else
        this->errorProvider1->SetError(this->textBox_NumerEwidencyjny, "");

    if (this->textBox_Procesor->Text->Equals(""))
    {
        this->errorProvider1->SetError(this->textBox_Procesor, "Uzupełnij wpis!");
        error = true;
    }
    else
        this->errorProvider1->SetError(this->textBox_Procesor, "");

    if (this->textBox_Ram->Text->Equals(""))
    {   
        this->errorProvider1->SetError(this->textBox_Ram, "Uzupełnij wpis!");
        error = true;
    }
    else
        this->errorProvider1->SetError(this->textBox_Ram, "");

    if (this->textBox_Dysk->Text->Equals(""))
    {
        this->errorProvider1->SetError(this->textBox_Dysk, "Uzupełnij wpis!");
        error = true;
    }
    else
        this->errorProvider1->SetError(this->textBox_Dysk, "");

    if (this->textBox_Monitor->Text->Equals(""))
    {
        this->errorProvider1->SetError(this->textBox_Monitor, "Uzupełnij wpis!");
        error = true;
    }
    else
        this->errorProvider1->SetError(this->textBox_Monitor, "");

    return error; //po zakończeniu zwraca stan błędu. Jesli nie było zadnego błędu to pozostaje false.
 }

public: void ZapiszPlik(System::String^ nazwa)
 {
    System::IO::StreamWriter^ zapis; //wskaźnik na strumień zapisujący
    System::String^ linia; //string przechowujący linię która będzie zapisana
    zapis = gcnew System::IO::StreamWriter(nazwa); //otwieram strumień zapisu o podanej scieżce w arguencie tej metody
    for each(ZestawKomputerowy^ tmp in this->lista) //dla każdego obiektu w liscie
    {
        linia = tmp->pracownik+"\t"+tmp->numer+"\t"+tmp->procesor+"\t"+tmp->ram+"\t"+tmp->dysk+"\t"+tmp->monitor+"\t"; //do linii przypisuję dane w odpowiedniej kolejnosci i oddzielam tabulatorami każdą daną
        zapis->WriteLine(linia); //zapisuję tą linię do pliku
    }
    zapis->Close(); //zamykam strumień

 }
public: void OdczytajPlik(System::String^ nazwa)
 {
    if(System::IO::File::Exists(nazwa)) //jeżeli plik o podanej scieżce istnieje
    {
    System::IO::StreamReader^ odczyt; //strumień odczytu
    System::String ^linia, ^pracownik, ^numer, ^procesor, ^dysk, ^ram, ^monitor;
    odczyt = gcnew System::IO::StreamReader(nazwa); //otwieram strumień odczytu o podanej scieżce

    while(linia = odczyt->ReadLine())//dopóki są linie w pliku, przypisuję je do zmiennej linia
    {
       
        pracownik = linia->Substring(0, linia->IndexOf("\t")); //pobieram pierwszą część tekstu do zmiennej
        linia = linia->Remove(0, linia->IndexOf("\t")+1); //kasuję pobraną część tekstu i tabulator
        numer = linia->Substring(0, linia->IndexOf("\t"));//itd
        linia = linia->Remove(0, linia->IndexOf("\t")+1);
        procesor = linia->Substring(0, linia->IndexOf("\t"));
        linia = linia->Remove(0, linia->IndexOf("\t")+1);
        ram = linia->Substring(0, linia->IndexOf("\t"));
        linia = linia->Remove(0, linia->IndexOf("\t")+1);
        dysk = linia->Substring(0, linia->IndexOf("\t"));
        linia = linia->Remove(0, linia->IndexOf("\t")+1);
        monitor = linia->Substring(0,linia->IndexOf("\t"));
        this->zestaw = gcnew ZestawKomputerowy(pracownik,numer,procesor,ram,dysk,monitor);    //wywołuję konstruktor podając jako argumenty zczytane dane
        this->lista->Add(this->zestaw); //dodaję obiekt do listy
        linia = ""; //resetuję linię
        }
        }
    }


};


}


Brak komentarzy:

Prześlij komentarz