private void PreviousButton_Click(object sender, EventArgs e)
        {
            int x = uj_lista.IndexOf(hanyadik_variaciot_nezzuk_eppen);

            hanyadik_variaciot_nezzuk_eppen = uj_lista[x - 1];

            if (hanyadik_variaciot_nezzuk_eppen <= uj_lista.First())
            {
                PreviousButton.Enabled = false;
                PreviousButton.Visible = false;
            }
            if (hanyadik_variaciot_nezzuk_eppen < uj_lista.Last())
            {
                NextButton.Enabled = true;
                NextButton.Visible = true;
            }

            torles();

            Kurzus[] egy_variacio = new Kurzus[kivalasztott_targy_objektumok.Count()];
            for (int i = 0; i < kivalasztott_targy_objektumok.Count(); i++)
            {
                egy_variacio[i] = matrix[hanyadik_variaciot_nezzuk_eppen, i];
            }
            orarendgeneralas(egy_variacio);
        }
        //konstruktor
        public Orarend(List <Targy> targyobjektumok)
        {
            InitializeComponent();
            kivalasztott_targy_objektumok = targyobjektumok;


            variaciok_megszamolasa(kivalasztott_targy_objektumok);
            //MessageBox.Show("variációk: " + variaciok_szama.ToString());

            utkozesek              = new bool[variaciok_szama];
            egyikSeJoLabel.Text    = "";
            PreviousButton.Visible = false;

            //Id generálás
            int sorId = 0;

            foreach (Targy t in kivalasztott_targy_objektumok)
            {
                int oszlopId = 0;
                foreach (Kurzus k in t.kurzus_lista)
                {
                    k.SetId(sorId, oszlopId);
                    //MessageBox.Show("id generated for " + k.EgeszSor + " " + k.getRowId() + " " + k.getColoumnId());
                    oszlopId++;
                }
                sorId++;
            }


            matrix = new Kurzus[variaciok_szama, kivalasztott_targy_objektumok.Count()];

            Matrix_generalasa();


            PreviousButton.Enabled = false;
            if (variaciok_szama > 1)
            {
                NextButton.Enabled = true;
            }


            hanyadik_variaciot_nezzuk_eppen = 0;
            Kurzus[] egy_variacio = new Kurzus[kivalasztott_targy_objektumok.Count()];
            for (int i = 0; i < kivalasztott_targy_objektumok.Count(); i++)
            {
                egy_variacio[i] = matrix[hanyadik_variaciot_nezzuk_eppen, i];
            }

            orarendgeneralas(egy_variacio);
        }
        private void NextButton_Click(object sender, EventArgs e)
        {
            hanyadik_variaciot_nezzuk_eppen += 1;
            if (hanyadik_variaciot_nezzuk_eppen >= variaciok_szama - 1)
            {
                NextButton.Enabled = false;
                NextButton.Visible = false;
            }
            if (hanyadik_variaciot_nezzuk_eppen > 0)
            {
                PreviousButton.Enabled = true;
                PreviousButton.Visible = true;
            }

            torles();

            Kurzus[] egy_variacio = new Kurzus[kivalasztott_targy_objektumok.Count()];
            for (int i = 0; i < kivalasztott_targy_objektumok.Count(); i++)
            {
                egy_variacio[i] = matrix[hanyadik_variaciot_nezzuk_eppen, i];
            }

            orarendgeneralas(egy_variacio);

            bool egyik_se_jo = true;
            int  v           = variaciok_szama - 1;

            if (hanyadik_variaciot_nezzuk_eppen == v)
            {
                foreach (bool b in utkozesek)
                {
                    if (b == false)
                    {
                        egyik_se_jo = false;
                        break;
                    }
                }
                if (egyik_se_jo)
                {
                    egyikSeJoLabel.Text      = ("Sajnos ezeket\naz órákat \nnem tudod \nütközés nélkül \nfelvenni.");
                    egyikSeJoLabel.BackColor = Color.FromArgb(255, 77, 77);
                    egyikSeJoPanel.BackColor = Color.FromArgb(255, 77, 77);
                }
            }
        }
        public void Vannak_e_utkozesek()
        {
            for (int i = 0; i < variaciok_szama; i++)
            {
                hanyadik_variaciot_nezzuk_eppen = i;
                Kurzus[] kurzus_sor = new Kurzus[kivalasztott_targy_objektumok.Count()];
                for (int j = 0; j < kivalasztott_targy_objektumok.Count(); j++)
                {
                    kurzus_sor[j] = matrix[i, j];
                }
                orarendgeneralas_utkozesek_megszamolasara(kurzus_sor);
                torles();
            }


            for (int i = 0; i < variaciok_szama; i++)
            {
                if (utkozesek[i] == false)
                {
                    uj_lista.Add(i);     //ezek a sorai a mátrixnak amik nem ütköznek
                }
            }
            hanyadik_variaciot_nezzuk_eppen = 0;
        }
        private void PreviousButton_Click(object sender, EventArgs e)
        {
            hanyadik_variaciot_nezzuk_eppen -= 1;

            if (hanyadik_variaciot_nezzuk_eppen <= 0)
            {
                PreviousButton.Enabled = false;
                PreviousButton.Visible = false;
            }
            if (hanyadik_variaciot_nezzuk_eppen < variaciok_szama - 1)
            {
                NextButton.Enabled = true;
                NextButton.Visible = true;
            }

            torles();

            Kurzus[] egy_variacio = new Kurzus[kivalasztott_targy_objektumok.Count()];
            for (int i = 0; i < kivalasztott_targy_objektumok.Count(); i++)
            {
                egy_variacio[i] = matrix[hanyadik_variaciot_nezzuk_eppen, i];
            }
            orarendgeneralas(egy_variacio);
        }
        //konstruktor
        public Orarend2(List <Targy> targyobjektumok)
        {
            InitializeComponent();



            kivalasztott_targy_objektumok = targyobjektumok;


            variaciok_megszamolasa(kivalasztott_targy_objektumok);
            //MessageBox.Show("variációk: " + variaciok_szama.ToString());

            utkozesek = new bool[variaciok_szama];
            PreviousButton.Visible = false;

            //Id generálás
            int sorId = 0;

            foreach (Targy t in kivalasztott_targy_objektumok)
            {
                int oszlopId = 0;
                foreach (Kurzus k in t.kurzus_lista)
                {
                    k.SetId(sorId, oszlopId);
                    oszlopId++;
                }
                sorId++;
            }


            matrix = new Kurzus[variaciok_szama, kivalasztott_targy_objektumok.Count()];

            Matrix_generalasa();


            PreviousButton.Enabled = false;
            if (variaciok_szama > 1)
            {
                NextButton.Enabled = true;
            }

            Vannak_e_utkozesek();

            //szerintem ez nem kell de nem merem kivenni

            /*if (uj_lista.Count == 0)
             * {
             *  MessageBox.Show("Sajnos ezeket a tárgyakat nem tudod ütközés nélkül felvenni");
             *  Form1 f1 = new Form1();
             *//*f1.Show();
             *  this.Close();*//*
             *  Environment.Exit(0);        //nem mukodik, ezert be kell zarni
             * }*/


            hanyadik_variaciot_nezzuk_eppen = uj_lista[0];

            szamLabel.Text = uj_lista.Count().ToString();

            Kurzus[] egy_variacio = new Kurzus[kivalasztott_targy_objektumok.Count()];
            for (int i = 0; i < kivalasztott_targy_objektumok.Count(); i++)
            {
                egy_variacio[i] = matrix[hanyadik_variaciot_nezzuk_eppen, i];
            }

            orarendgeneralas(egy_variacio);
        }
Exemple #7
0
        private void OpenFileButton_Click(object sender, EventArgs e)
        {
            List <string> fileContent       = new List <string>();
            List <string> osszes_targy      = new List <string>();
            List <string> idopontos_targyak = new List <string>();

            var filePath = string.Empty;

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                //Get the path of specified file
                filePath = openFileDialog1.FileName;


                //Read the contents of the file into a stream
                var      fileStream   = openFileDialog1.OpenFile();
                Encoding encodingType = Encoding.GetEncoding("Windows-1250");

                StreamReader reader = new StreamReader(fileStream, encodingType);  //encodingType 2. paraméter ha nem lenne jó a kódolás
                while (reader.Peek() >= 0)
                {
                    fileContent.Add(reader.ReadLine());
                }

                foreach (string line in fileContent)    //ha tárgyról van szó
                {
                    if (!line.Equals("*") && !line.Contains(":"))
                    {
                        osszes_targy.Add(line);
                    }
                }



                //tárgyak megjelölése ahol nem volt időpont, kell a megjelölgetés mert közben nem lehet törölni mert újrasorszámozódik (asszem) meg akkor nem tudnánk kiírni hogy hány tárgyat töröltünk
                for (int i = 0; i < fileContent.Count - 1; i++)                                      //utolsó elemet nem kell nézni
                {
                    if ((osszes_targy.Contains(fileContent[i])) && (fileContent[i + 1].Equals("*"))) //ha az adott sor tárgy és a rákövetkező elem csillag (vagyis nincs hozzá időpont)
                    {
                        fileContent[i]     = fileContent[i].Insert(0, "?");                          //új stringgel tér vissza
                        fileContent[i + 1] = fileContent[i + 1].Insert(0, "?");
                    }
                }

                //tárgyak törlése ahol nem volt időpont
                removed_classes = fileContent.RemoveAll(StartsWithQuestionMark) / 2;



                //itt már a fileContent nem tartalmazza azokat a tárgyakat amikhez nincs időpont

                foreach (string line in fileContent)
                {
                    if (!line.Equals("*") && !line.Contains(":"))
                    {
                        idopontos_targyak.Add(line);
                    }
                }

                for (int i = 0; i < idopontos_targyak.Count; i++)
                {
                    listBoxLeft.Items.Insert(i, idopontos_targyak[i]);
                }


                //classokba olvasás
                foreach (string ora in idopontos_targyak)
                {
                    Targy t = new Targy(ora);
                    targy_objektumok.Add(t);
                    int idx = fileContent.IndexOf(ora); //megkeresi hogy a fileContent-ben hol van ez az óra
                    ++idx;                              //+1 mert különben saját magát is nézné, ami nem * tehát kurzusnak venné

                    try
                    {
                        for (int i = idx; i < fileContent.Count() - 1; i++)
                        {
                            if (fileContent[i].Equals("*")) //ha csillag
                            {
                                break;
                            }
                            else   //ha kurzus
                            {
                                Kurzus k = new Kurzus(fileContent[i]);
                                t.Kurzus_listahoz_adas(k);
                                k.Ora_neve = t.Nev;
                            }
                        }
                    }
                    catch (ArgumentOutOfRangeException ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }


                //ez csak egy teszt hogy sikerült-e a példányosítás
                for (int i = 0; i < idopontos_targyak.Count(); i++)
                {
                    //testLabel.Text += targy_objektumok[i].ToString() + "\n";
                }
            }
        }