Ejemplo n.º 1
0
        private void NotlariRasgeleDagit(ExcelProgramla excel, int row, int enAzNot, int toplaminEsitlenecegiDeger)
        {
            var r = new Random();

            excel.ToplamNot = 0;

            for (int i = excel.AktifSutun; i < excel.ToplamSutunu; i++)
            {
                if (toplaminEsitlenecegiDeger == 0)
                {
                    excel.ToplamNot = 0;
                    excel.WriteCell(row, i, 0);
                }
                else
                {
                    var a = enAzNot;
                    var b = excel.ReadCellInt(excel.KriterSatiri, i);
                    var hesaplanacakSayi = Math.Round(r.NextDouble() * (b - a) + a, 0);
                    var modHesapla       = hesaplanacakSayi % 5;
                    if (modHesapla > 0)
                    {
                        do
                        {
                            hesaplanacakSayi--;
                            modHesapla = hesaplanacakSayi % 5;
                        } while (modHesapla != 0);
                    }
                    excel.WriteCell(row, i, hesaplanacakSayi);
                    excel.ToplamNot += hesaplanacakSayi;
                }
            }
        }
Ejemplo n.º 2
0
        private void NotVer_Click(object sender, RoutedEventArgs e)
        {
            var excelProgramla = new ExcelProgramla();

            NotVer(excelProgramla);

            void NotVer(ExcelProgramla excel)
            {
                var row           = excel.AktifSatir;
                var col           = excel.AktifSutun;
                var enAzNot       = Convert.ToInt32(txtEnAzNot.Text);
                var katsayi       = Convert.ToInt32(txtKatsayi.Text);
                var ogrenciSayisi = excel.ToplamSatirSayisi - excel.AktifSatir + 1;
                var notlar        = new int[ogrenciSayisi, excel.KriterSayisi + 1];
                var r             = new Random();
                var r2            = row;

                if (excel.KriterlerinToplami != 100)
                {
                    MessageBox.Show("Kriterlerin toplamı 100 olmalıdır.");
                    return;
                }

                for (int i = 0; i < ogrenciSayisi; i++)
                {
                    var toplaminEsitlenecegiDeger = excel.ReadCellInt(r2, excel.ToplaminEsitlenecegiSutun);
                    var c2 = col;

                    for (int j = 0; j < excel.KriterSayisi; j++)
                    {
                        var a = enAzNot;
                        var b = excel.ReadCellInt(excel.KriterSatiri, c2);
                        var hesaplanacakSayi = Math.Round(r.NextDouble() * (b - a) + a, 0);
                        var modHesapla       = hesaplanacakSayi % katsayi;
                        if (modHesapla > 0)
                        {
                            do
                            {
                                hesaplanacakSayi--;
                                modHesapla = hesaplanacakSayi % katsayi;
                            } while (modHesapla != 0);
                        }
                        notlar[i, j] = (int)hesaplanacakSayi;
                        notlar[i, excel.KriterSayisi] += (int)hesaplanacakSayi;//toplam
                        c2++;
                    }

                    if (toplaminEsitlenecegiDeger < enAzNot * excel.KriterSayisi)
                    {
                        MessageBox.Show($"Eşitlenecek not en az {enAzNot * excel.KriterSayisi} olmalıdır. (Girilen Not: {toplaminEsitlenecegiDeger})");
                        return;
                    }

                    var h  = 0;
                    var c3 = col;

                    if (notlar[i, excel.KriterSayisi] < toplaminEsitlenecegiDeger)
                    {
                        do
                        {
                            if (notlar[i, h] < excel.ReadCellInt(excel.KriterSatiri, c3))
                            {
                                notlar[i, h] += katsayi;
                                notlar[i, excel.KriterSayisi] += katsayi;
                            }

                            if (h == excel.KriterSayisi - 1)
                            {
                                h  = 0;
                                c3 = col;
                            }
                            else
                            {
                                h++;
                                c3++;
                            }
                        } while (notlar[i, excel.KriterSayisi] < toplaminEsitlenecegiDeger);
                    }
                    else
                    {
                        do
                        {
                            if (notlar[i, h] > enAzNot)
                            {
                                notlar[i, h] -= katsayi;
                                notlar[i, excel.KriterSayisi] -= katsayi;
                            }

                            if (h == excel.KriterSayisi - 1)
                            {
                                h = 0;
                            }
                            else
                            {
                                h++;
                            }
                        } while (notlar[i, excel.KriterSayisi] > toplaminEsitlenecegiDeger);
                    }

                    r2++;
                }

                excel.WriteRange(excel.AktifSatir, excel.AktifSutun, excel.ToplamSatirSayisi, excel.ToplamSutunSayisi + 1, notlar);

                //do
                //{
                //    var toplaminEsitlenecegiDeger = excel.ReadCellInt(row, excel.ToplaminEsitlenecegiSutun);
                //    //excel.ToplamNot = 0;

                //    NotlariRasgeleDagit(excel, row, enAzNot, toplaminEsitlenecegiDeger);

                //    excel.WriteCell(row, excel.ToplamSutunu, excel.ToplamNot);

                //    if (toplaminEsitlenecegiDeger < enAzNot * excel.KriterSayisi)
                //    {
                //        MessageBox.Show($"Eşitlenecek not en az {enAzNot * excel.KriterSayisi} olmalıdır. ({toplaminEsitlenecegiDeger})");
                //        return;
                //    }

                //    var h = col;

                //    if (excel.ToplamNot < toplaminEsitlenecegiDeger)
                //    {
                //        do
                //        {
                //            var artacakSayi = excel.ReadCellInt(row, h);

                //            artacakSayi += 5;
                //            excel.ToplamNot += 5;

                //            excel.WriteCell(row, h, artacakSayi);
                //            excel.WriteCell(row, excel.ToplamSutunu, excel.ToplamNot);

                //            if (h == excel.ToplamSutunu)
                //            {
                //                h = col;
                //            }
                //            else
                //            {
                //                h++;
                //            }

                //        } while (excel.ToplamNot < toplaminEsitlenecegiDeger);
                //    }
                //    else
                //    {
                //        do
                //        {
                //            var azlacakSayi = excel.ReadCellInt(row, h);

                //            if (azlacakSayi > enAzNot)
                //            {
                //                azlacakSayi -= 5;
                //                excel.ToplamNot -= 5;

                //                excel.WriteCell(row, h, azlacakSayi);
                //                excel.WriteCell(row, excel.ToplamSutunu, excel.ToplamNot);
                //            }

                //            if (h == excel.ToplamSutunu)
                //            {
                //                h = col;
                //            }
                //            else
                //            {
                //                h++;
                //            }

                //        } while (excel.ToplamNot > toplaminEsitlenecegiDeger);
                //    }

                //    row++;

                //} while (excel.ReadCellString(row, excel.AktifSutun - 1) != "");

                MessageBox.Show("Notlar başarı ile verildi.");
                //lblSonuc.Content = "Notlar başarı ile verildi.";
            }
        }