wtorek, 11 czerwca 2013

Parser zmieniający xml na csv - ulice, miasta, kody pocztowe

Program konwertujący bazę ulic, miast, kodów pocztowych

Konwertuje xml -> csv

przydatne to jest jak później chcemy utworzyć sobie jakieś masowe zapytanie, lub można też odrazu sobie stworzyć masowe zapytanie dodające do bazy SQL wszystkie

Aktualne dane można pobrać ze strony GUS - http://www.stat.gov.pl/bip/36_PLK_HTML.htm 
W sekcji plików do pobrania.

Żródło i pliki projektu - przeglądaj w dysku google

Poniżej screen:


poniedziałek, 10 czerwca 2013

Kontakty windows - tworzenie plików z kontaktami Visual Studio C# z xml

Kontakty windows - tworzenie wizytówek kontaktów na podstawie danych zapisanych w xml
w określonej strukturze. Nie wiem czy to można nazwać programem, ale było bardzo przydatne przy rozwiązaniu kilku problemów.
Ja generowałem wcześniej xml z jakiegoś programu do tworzenia danych testowych. Program spełnił swoje zadanie i oszczędził mi dużo czasu.
Program tworzy wiele pojedynczych plików z kontaktami - pliki *.contact.   Oczywiście xml nie musi zawierać wszystkich pól. Podane poniżej są obsługiwane.

<record>
<note>jakiś tekst</note>
<mail>maill</mail>
<mail2>maill</mail2>
<nick>nick</nick>
<title>teskt</title>
<last>tekst testowy</last>
<middle></middle>
<first></first>
<work country></work country>
<work postal code></work postal code>
<work state></work state>
<work city></work city>
<work street></work street>
<country></country>
<postalcode></postalcode>
<state></state>
<city></city>
<street></street>
<work pager></work pager>
<work fax></work fax>
<work phone></work phone>
<cell></cell>
<fax></fax>
<phone></phone>
<website></website>
<office></office>
<department></department>
<job title></job title>
<company></company>
</record>
<record>
...
</record>
</records>
Dostępny projekt do pobrania - przeglądaj dysk google.


Kod źródłowy:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
   


namespace kontaktywindows
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private String usun_specjalne(String ss)
        {
  
            //return Uri.EscapeUriString(ss);
            ss = ss.Replace("&", "&#38;");
            ss = ss.Replace("<", "&#60;");
           
            return ss;


        }


        private void button1_Click(object sender, EventArgs e)
        {
            this.openFileDialog1.ShowDialog();

            if (this.openFileDialog1.FileName != null)
            {
             
                if (System.IO.File.Exists(this.openFileDialog1.FileName))
                {
                    this.openFileDialog1.OpenFile();
                    System.IO.StreamReader sr = new System.IO.StreamReader(this.openFileDialog1.FileName,Encoding.UTF8);
                    String s;
                    String formatted_name = "";
                    String linia = "";
                    List<String> list;
                    list = new List<String>();
               
                    int id = 1;
                    while ((s = sr.ReadLine()) != "</records>")
                    {

                        while (s.Contains("\t"))
                            s = s.Replace("\t", "");
                    
                        if (s.Contains("<record>"))
                        {
                           
                            linia = "";
                            list.Add("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
                            list.Add("<c:contact c:Version=\"1\" xmlns:c=\"http://schemas.microsoft.com/Contact\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:MSP2P=\"http://schemas.microsoft.com/Contact/Extended/MSP2P\" xmlns:MSWABMAPI=\"http://schemas.microsoft.com/Contact/Extended/MSWABMAPI\">");
                   
                       
                       
                        }
                        if (s.Contains("<note>"))
                        {
                           
                            s = s.Remove(0, "<note>".Length);
                            s = s.Remove((s.Length - "</note>".Length), "</note>".Length);

                            linia = "<c:Notes>" + this.usun_specjalne(s);
                            linia = linia + "</c:Notes><c:Gender>Male</c:Gender><c:CreationDate>2011-11-02T11:33:06Z</c:CreationDate><c:Extended><MSWABMAPI:PropTag0x3A58101F c:ContentType=\"binary/x-ms-wab-mapi\" c:type=\"binary\">AgAAAAwAAABjAGgAaQBsAGQAAAAOAAAAYwBoAGkAbABkAGQAAAA=</MSWABMAPI:PropTag0x3A58101F></c:Extended>";
                            list.Add(linia);
                        }
                        if (s.Contains("<mail>"))
                        {
                            linia = "";
                            linia = "<c:ContactIDCollection><c:ContactID c:ElementID=\"d2bcb649-0b11-49e0-aa3e-32855dbf4ede\"><c:Value>49b1c7e3-ab89-4989-b4f9-3e92c065d330</c:Value></c:ContactID></c:ContactIDCollection><c:EmailAddressCollection><c:EmailAddress c:ElementID=\"6638fcf5-abd4-4f4a-a411-2d35a0898fd5\"><c:Type>SMTP</c:Type><c:Address>";

                            s = s.Remove(0, "<mail>".Length);
                            s = s.Remove((s.Length - "</mail>".Length), "</mail>".Length);

                            linia = linia + this.usun_specjalne(s);
                            linia = linia + "</c:Address><c:LabelCollection><c:Label>Preferred</c:Label></c:LabelCollection></c:EmailAddress><c:EmailAddress c:ElementID=\"914546a6-d45c-49f9-aae6-0796d3d3915a\"><c:Type>SMTP</c:Type><c:Address>";
                           
                           
                    
                        }
                        if (s.Contains("<mail2>"))
                        {
                          
                            s = s.Remove(0, "<mail2>".Length);
                            s = s.Remove((s.Length - "</mail2>".Length), "</mail2>".Length);

                            linia = linia + this.usun_specjalne(s);
                            linia = linia + "</c:Address></c:EmailAddress><c:EmailAddress c:ElementID=\"bb10129a-a318-487a-b5b9-4ed48b6e36ed\" xsi:nil=\"true\"/></c:EmailAddressCollection><c:NameCollection><c:Name c:ElementID=\"54897d81-37aa-438b-a03c-5e4ed2fe69bc\">";



                        }

                        if (s.Contains("<nick>"))
                        {
                            formatted_name = "";
                            s = s.Remove(0, "<nick>".Length);
                            s = s.Remove((s.Length - "</nick>".Length), "</nick>".Length);

                            linia = linia + "<c:NickName>" + this.usun_specjalne(s) + "</c:NickName>";
                            formatted_name = this.usun_specjalne(s);

                        }
                        if (s.Contains("<title>"))
                        {

                            s = s.Remove(0, "<title>".Length);
                            s = s.Remove((s.Length - "</title>".Length), "</title>".Length);

                            linia = linia + "<c:Title>" + this.usun_specjalne(s) + "</c:Title>";
                            formatted_name = formatted_name + this.usun_specjalne(s);

                            linia = linia + "<c:FormattedName>" + formatted_name + "</c:FormattedName>";


                        }
                        if (s.Contains("<last>"))
                        {

                            s = s.Remove(0, "<last>".Length);
                            s = s.Remove((s.Length - "</last>".Length), "</last>".Length);

                            linia = linia + "<c:FamilyName>" + this.usun_specjalne(s) + "</c:FamilyName>";
             
                        }
                        if (s.Contains("<middle>"))
                        {

                            s = s.Remove(0, "<middle>".Length);
                            s = s.Remove((s.Length - "</middle>".Length), "</middle>".Length);

                            linia = linia + "<c:MiddleName>" + this.usun_specjalne(s) + "</c:MiddleName>";

                        }

                        if (s.Contains("<first>"))
                        {

                            s = s.Remove(0, "<first>".Length);
                            s = s.Remove((s.Length - "</first>".Length), "</first>".Length);

                            linia = linia + "<c:GivenName>" + this.usun_specjalne(s) + "</c:GivenName>";
                            linia = linia + "</c:Name></c:NameCollection><c:PhysicalAddressCollection><c:PhysicalAddress c:ElementID=\"42b40d43-8ca6-4288-a660-1391b3368806\">";

                        }
                        if (s.Contains("<work country>"))
                        {

                            s = s.Remove(0, "<work country>".Length);
                            s = s.Remove((s.Length - "</work country>".Length), "</work country>".Length);

                            linia = linia + "<c:Country>" + this.usun_specjalne(s) + "</c:Country>";

                        }
                        if (s.Contains("<work postal code>"))
                        {

                            s = s.Remove(0, "<work postal code>".Length);
                            s = s.Remove((s.Length - "</work postal code>".Length), "</work postal code>".Length);

                            linia = linia + "<c:PostalCode>" + this.usun_specjalne(s) + "</c:PostalCode>";

                        }
                        if (s.Contains("<work state>"))
                        {

                            s = s.Remove(0, "<work state>".Length);
                            s = s.Remove((s.Length - "/<work state>".Length), "</work state>".Length);

                            linia = linia + "<c:Region>" + this.usun_specjalne(s) + "</c:Region>";

                        }
                        if (s.Contains("<work city"))
                        {

                            s = s.Remove(0, "<work city>".Length);
                            s = s.Remove((s.Length - "</work city>".Length), "</work city>".Length);

                            linia = linia + "<c:Locality>" + this.usun_specjalne(s) + "</c:Locality>";

                        }
                        if (s.Contains("<work street>"))
                        {

                            s = s.Remove(0, "<work street>".Length);
                            s = s.Remove((s.Length - "</work street>".Length), "</work street>".Length);

                            linia = linia + "<c:Street>" + this.usun_specjalne(s) + "</c:Street>";
                            linia = linia + "<c:LabelCollection><c:Label>Business</c:Label></c:LabelCollection></c:PhysicalAddress><c:PhysicalAddress c:ElementID=\"aff0aab1-d53c-41cb-8046-1d5ff5653b99\">";

                        }
                        if (s.Contains("<country>"))
                        {

                            s = s.Remove(0, "<country>".Length);
                            s = s.Remove((s.Length - "</country>".Length), "</country>".Length);

                            linia = linia + "<c:Country>" + this.usun_specjalne(s) + "</c:Country>";

                        }
                        if (s.Contains("<postalcode>"))
                        {

                            s = s.Remove(0, "<postalcode>".Length);
                            s = s.Remove((s.Length - "</postalcode>".Length), "</postalcode>".Length);

                            linia = linia + "<c:PostalCode>" + this.usun_specjalne(s) + "</c:PostalCode>";

                        }
                        if (s.Contains("<state>"))
                        {

                            s = s.Remove(0, "<state>".Length);
                            s = s.Remove((s.Length - "</state>".Length), "</state>".Length);

                            linia = linia + "<c:Region>" + this.usun_specjalne(s) + "</c:Region>";

                        }
                        if (s.Contains("<city>"))
                        {

                            s = s.Remove(0, "<city>".Length);
                            s = s.Remove((s.Length - "</city>".Length), "</city>".Length);

                            linia = linia + "<c:Locality>" + this.usun_specjalne(s) + "</c:Locality>";

                        }
                        if (s.Contains("<street>"))
                        {

                            s = s.Remove(0, "<street>".Length);
                            s = s.Remove((s.Length - "</street>".Length), "</street>".Length);

                            linia = linia + "<c:Street>" + this.usun_specjalne(s) + "</c:Street>";
                            linia = linia + "<c:LabelCollection><c:Label>Personal</c:Label></c:LabelCollection></c:PhysicalAddress></c:PhysicalAddressCollection><c:PhoneNumberCollection><c:PhoneNumber c:ElementID=\"77e15648-c3fa-4bf8-b93a-dcb370b68ffe\">";

                        }
                        if (s.Contains("<work pager>"))
                        {

                            s = s.Remove(0, "<work pager>".Length);
                            s = s.Remove((s.Length - "</work pager>".Length), "</work pager>".Length);

                            linia = linia + "<c:Number>" + this.usun_specjalne(s) + "</c:Number>";
                            linia = linia + "<c:LabelCollection><c:Label>Pager</c:Label></c:LabelCollection></c:PhoneNumber><c:PhoneNumber c:ElementID=\"8b4e501e-382d-480e-a4db-7a9028fad5b2\">";
                        }
                        if (s.Contains("<work fax>"))
                        {

                            s = s.Remove(0, "<work fax>".Length);
                            s = s.Remove((s.Length - "</work fax>".Length), "</work fax>".Length);

                            linia = linia + "<c:Number>" + this.usun_specjalne(s) + "</c:Number>";
                            linia = linia + "<c:LabelCollection><c:Label>Fax</c:Label><c:Label>Business</c:Label></c:LabelCollection></c:PhoneNumber><c:PhoneNumber c:ElementID=\"01c40bdc-8456-4f43-9c79-bbd6c3ad8233\">";

                        }
                        if (s.Contains("<work phone>"))
                        {

                            s = s.Remove(0, "<work phone>".Length);
                            s = s.Remove((s.Length - "</work phone>".Length), "</work phone>".Length);

                            linia = linia + "<c:Number>" + this.usun_specjalne(s) + "</c:Number>";
                            linia = linia + "<c:LabelCollection><c:Label>Voice</c:Label><c:Label>Business</c:Label></c:LabelCollection></c:PhoneNumber><c:PhoneNumber c:ElementID=\"44130e67-5a5b-4349-bb20-10bac426279b\">";

                        }
                        if (s.Contains("<cell>"))
                        {

                            s = s.Remove(0, "<cell>".Length);
                            s = s.Remove((s.Length - "</cell>".Length), "</cell>".Length);

                            linia = linia + "<c:Number>" + this.usun_specjalne(s) + "</c:Number>";
                            linia = linia + "<c:LabelCollection><c:Label>Cellular</c:Label></c:LabelCollection></c:PhoneNumber><c:PhoneNumber c:ElementID=\"6b9829ad-3b4c-48d6-a635-21cbe70b445b\">";

                        }
                        if (s.Contains("<fax>"))
                        {

                            s = s.Remove(0, "<fax>".Length);
                            s = s.Remove((s.Length - "</fax>".Length), "</fax>".Length);

                            linia = linia + "<c:Number>" + this.usun_specjalne(s) + "</c:Number>";
                            linia = linia + "<c:LabelCollection><c:Label>Fax</c:Label><c:Label>Personal</c:Label></c:LabelCollection></c:PhoneNumber><c:PhoneNumber c:ElementID=\"59970aa7-b922-41eb-bd5c-51926d81517e\">";

                        }
                        if (s.Contains("<phone>"))
                        {

                            s = s.Remove(0, "<phone>".Length);
                            s = s.Remove((s.Length - "</phone>".Length), "</phone>".Length);

                            linia = linia + "<c:Number>" + this.usun_specjalne(s) + "</c:Number>";
                            linia = linia + "<c:LabelCollection><c:Label>Voice</c:Label><c:Label>Personal</c:Label></c:LabelCollection></c:PhoneNumber></c:PhoneNumberCollection><c:UrlCollection><c:Url c:ElementID=\"ae09bacb-0f5b-4d2c-864f-e27ee18a3569\">";

                        }
                        if (s.Contains("<website>"))
                        {

                            s = s.Remove(0, "<website>".Length);
                            s = s.Remove((s.Length - "</website>".Length), "</website>".Length);

                            linia = linia + "<c:Value>" + this.usun_specjalne(s) + "</c:Value>";
                            linia = linia + "<c:LabelCollection><c:Label>Personal</c:Label></c:LabelCollection></c:Url></c:UrlCollection><c:PositionCollection><c:Position c:ElementID=\"c6aae636-c2a6-4b12-a14e-fca2c08d079e\">";

                        }
                        if (s.Contains("<office>"))
                        {

                            s = s.Remove(0, "<office>".Length);
                            s = s.Remove((s.Length - "</office>".Length), "</office>".Length);

                            linia = linia + "<c:Office>" + this.usun_specjalne(s) + "</c:Office>";
                          

                        }
                        if (s.Contains("<department>"))
                        {

                            s = s.Remove(0, "<department>".Length);
                            s = s.Remove((s.Length - "</department>".Length), "</department>".Length);

                            linia = linia + "<c:Department>" + this.usun_specjalne(s) + "</c:Department>";


                        }
                        if (s.Contains("<job title>"))
                        {

                            s = s.Remove(0, "<job title>".Length);
                            s = s.Remove((s.Length - "</job title>".Length), "</job title>".Length);

                            linia = linia + "<c:JobTitle>" + this.usun_specjalne(s) + "</c:JobTitle>";


                        }
                        if (s.Contains("<company>"))
                        {

                            s = s.Remove(0, "<company>".Length);
                            s = s.Remove((s.Length - "</company>".Length), "</company>".Length);

                            linia = linia + "<c:Company>" + this.usun_specjalne(s) + "</c:Company>";
                            linia = linia + "<c:LabelCollection><c:Label>Business</c:Label></c:LabelCollection></c:Position></c:PositionCollection><c:PersonCollection><c:Person c:ElementID=\"851be0c2-4038-4fed-bf5d-ab8729422b13\"><c:FormattedName>partner</c:FormattedName><c:LabelCollection><c:Label>wab:Spouse</c:Label></c:LabelCollection></c:Person></c:PersonCollection><c:DateCollection><c:Date c:ElementID=\"05915145-a43e-451d-b50f-de202322cb8a\"><c:Value>2011-11-02T12:36:28Z</c:Value><c:LabelCollection><c:Label>wab:Anniversary</c:Label></c:LabelCollection></c:Date><c:Date c:ElementID=\"e59b1ac2-e32d-41ce-a2cb-15554e3ae836\"><c:Value>2011-11-02T12:36:28Z</c:Value><c:LabelCollection><c:Label>wab:Birthday</c:Label></c:LabelCollection></c:Date></c:DateCollection><c:PhotoCollection><c:Photo c:ElementID=\"436904ec-84aa-4e57-9577-b687349dd06a\"><c:LabelCollection><c:Label>UserTile</c:Label></c:LabelCollection></c:Photo></c:PhotoCollection></c:contact>";

                        }

                        if (s.Contains("</record>"))
                        {
                               
                                list.Add(linia);
                                System.IO.StreamWriter sw = new System.IO.StreamWriter(id + ".contact", false,Encoding.UTF8);
                                foreach (String str in list)
                                {
                                 
                                    sw.WriteLine(str);
                                }
                                    sw.Close();
                                list.Clear();
                                id++;
                            
                        }


                    }
                    sr.Close();

                   


                


                   // sw.Close();
                    MessageBox.Show(" zakończono kontakty");
                }
            }
           
        }
    }
}

niedziela, 9 czerwca 2013

Snake v2 - obsługa plansz, szybkości top10 - Visual Studio C#

Snake v2 - level, bonus, top10, opcje

Rozbudowana wersja poprzedniego snejka o wiele dobrych rzeczy.

Możliwość tworzenia leveli , w aplikacji jest możliwość jedynie ich wczytywania - za pomocą edytora tekstowego - trzeba trochę użyć wyobraźni i matematyki - ale nie jest to trudne - na dole podam przykład.

Bonus pojawiający na określony czas - po zebraniu punktów pojawi się bonus zaznaczony na inny kolor niż zwykłe "jedzenie"

Top10 i zapisywanie wyników

Zmiana prędkości gry


Do przejrzenia i pobrania wszystkie pliki projektu - link

Tworzenie poziomów - generalnie chodzi o to aby ustawić współrzędne punktu A oraz szerokość i wysokość od tego punktu. Będzie malowany taki prostokąt.
Szerokość i wysokość planszy ustalona jest na sztywno w kodzie - trzeba brać to pod uwagę.


Przykładowy plik z levelami:
<level>
zwykły
<elements>
</elements>
<level>
nazwa level1
<elements>
0;0;300;10;
50;30;20;100;
80;80;30;20;
</elements>
<level>
nazwa level k2
<elements>
0;0;300;10;
50;30;20;100;
80;80;100;200;
</elements>
<level>
nazwa level k3
<elements>
0;0;300;10;
50;30;70;200;
80;80;100;20;
</elements>
<end>


A to kilka kawałków kodu dla niecierpliwych:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace SnakeGameII
{
    public class Snake
    {
        private Rectangle[] snakeRec;
        private SolidBrush brush;
        private int x, y, width, height;

        public Rectangle[] SnakeRec
        {
            get
            {
                return snakeRec;
            }
        }

        public Snake()
        {
            snakeRec = new Rectangle[3];
            brush = new SolidBrush(Color.Blue);

            x = 30;
            y = 60;
            width = 10;
            height = 10;

            for (int i = 0; i < snakeRec.Length; i++)
            {               
                snakeRec[i] = new Rectangle(x, y, width, height);
                x -= 10;
            }
        }

        public void drawSnake(Graphics paper)
        {
            foreach (Rectangle rec in snakeRec)
            {
                paper.FillRectangle(brush, rec);
            }
        }

        public void drawSnake()
        {
            for (int i = snakeRec.Length - 1; i > 0; i--)
            {
                snakeRec[i] = snakeRec[i - 1];
            }
        }
        public void moveDown()
        {
            drawSnake();
            snakeRec[0].Y += 10;
        }
        public void moveUp()
        {
            drawSnake();
            snakeRec[0].Y -= 10;
        }
        public void moveRight()
        {
            drawSnake();
            snakeRec[0].X += 10;
        }
        public void moveLeft()
        {
            drawSnake();
            snakeRec[0].X -= 10;
        }

        public void growSnake()
        {
            List<Rectangle> rec = snakeRec.ToList();
            rec.Add(new Rectangle(snakeRec[snakeRec.Length-1].X, snakeRec[snakeRec.Length-1].Y,width,height));
            snakeRec = rec.ToArray();
        }
    }
}

Food.cs

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace SnakeGameII
{
    public class Food
    {
        private int x, y, width, height;
        private SolidBrush brush;
        public Rectangle foodRec;
        public Rectangle specialfoodRec;
        private SolidBrush specialbrush;

        public Food(Random randFood)
        {
            x = randFood.Next(1, 30) * 10;
            y = randFood.Next(5, 34) * 10;
            brush = new SolidBrush(Color.Black);

            width = 10;
            height = 10;

            foodRec = new Rectangle(x, y, width, height);
        }

        public Food(Random randFood, Color color)
        {
          
            x = randFood.Next(1, 30) * 10;
            y = randFood.Next(5, 34) * 10;
            specialbrush = new SolidBrush(color);

            width = 10;
            height = 10;

            specialfoodRec = new Rectangle(x, y, width, height);
        
        }

        public void foodLocation(Random randFood)
        {
            x = randFood.Next(1, 30) * 10;
            y = randFood.Next(5, 34) * 10;
        }

        public void drawFood(Graphics paper)
        {
            foodRec.X = x;
            foodRec.Y = y;

            paper.FillRectangle(brush, foodRec);
        }

         public void drawSpecialFood(Graphics paper)
        {
            specialfoodRec.X = x;
            specialfoodRec.Y = y;

            paper.FillRectangle(specialbrush, specialfoodRec );
        }

    }
}

sobota, 8 czerwca 2013

Program do obsługi firmy taksówkarskiej - Visual Studio C++

Program do obsługi taksówek, postojów, ulic 

Bardzo rozbudowany program pozwalający na obsługę wielu taksówek z centrali.
Program napisany w języku C++ w Visual Studio 2010.

Uwaga!
Jeśli chcesz wykorzystać kod, program - skontaktuj się najpierw ze mną mailowo - prokopiuk.m@gmail.com Nie zezwalam na wykorzystywanie kodu, aplikacji w celach komercyjnych, jedynie zezwalam na pobranie i przeglądanie w formie niezmienionej.

 Dostęp do źródeł projektu - dysk google.


Poniżej kilka screenów wraz z opisem:

Ekran główny aplikacji - znajduje się tu lista ulic i lista postojów taxi, oraz lista aktywnych taxi.
Po wybraniu ulicy pojawia się priorytet dla danego postoju. Można wysyłać taksówkę z danego postoju - wtedy trafia ona do listy aktywnych.
Możliwa jest też obsługa tzw "pudła" - jeśli np klient zamówi taksówkę a później anuluje zamówienie - wtedy numer taxi zaznaczany jest na czerwono.


Ekran  konfiguracji - tu można stworzyć kilka konfiguracji - do każdej konfiguracji jest przypisana osobna lista ulic i lista postojów. Można również edytować i usuwać pojedyncze wpisy w konfiguracjach. Możliwe jest też edytowanie priorytetów dla postojów.
 Wysyłanie taksówki z postoju, lub ustawianie pudła, usuwanie.
Dodawanie taxi do postoju.
 Ekran konfiguracji - ustawianie priorytetów postoju

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ę
        }
        }
    }


};


}