c# konusunda yardım

atilla01
08-12-2017, 14:37   |  #1  
atilla01 avatarı
OP Taze Üye
Teşekkür Sayısı: 0
12 mesaj
Kayıt Tarihi:Kayıt: Ara 2016

merhaba ödev olarak fiyatlandırma yapmam gerekiyor fakat nasıl olacağını tam oturtamadım ödev şu ki bir otobüs koltuklarında doluluk oranına göre fiyatların belirli bir aralıkta artıp azalması gerekiyor tecrübeli arkadaşlar yardımcı olursa sevinirim teşekkürler.

Son Düzenleme: atilla01 ~ 08 Aralık 2017 14:37 Neden:
White-Fox
08-12-2017, 21:33   |  #2  
White-Fox avatarı
Yıllanmış Üye
Teşekkür Sayısı: 155
1,103 mesaj
Kayıt Tarihi:Kayıt: Eyl 2010

Çokta zor değil hocam , tam olarak ne yaptın , hangi oranlara göre neler oluyor bir izah edersen hallederiz.

Son Düzenleme: White-Fox ~ 08 Aralık 2017 21:42
atilla01
09-12-2017, 23:07   |  #3  
OP Taze Üye
Teşekkür Sayısı: 0
12 mesaj
Kayıt Tarihi:Kayıt: Ara 2016
Alıntı: White-Fox  
Çokta zor değil hocam , tam olarak ne yaptın , hangi oranlara göre neler oluyor bir izah edersen hallederiz.
 

çok teşekkürler durum şu ki otobüs koltukları doldukça kalan boş koltukların fiyatları belirli oranlarda artacak örneğin 40 kişilik otobüste her 10 kişiden sonra fiyat %10 artacak oran önemli değil değiştirilir ve ileri tarihlere göre bilet alınca ondada belirli oranlarda artıcak uçak biletleri gibi

Son Düzenleme: atilla01 ~ 10 Aralık 2017 00:52
White-Fox
12-12-2017, 13:36   |  #4  
White-Fox avatarı
Yıllanmış Üye
Teşekkür Sayısı: 155
1,103 mesaj
Kayıt Tarihi:Kayıt: Eyl 2010

Şöyle söyliyim sen geliştir bir sınıf tanımla içine liste oluştur maximum sayı al. dahas onra listenin eleman sayısı ile maximum elemanı karşılaştır.

maximum*x/100=liste.elemansayısı

oran = (100*listeeleman)/maximumsayi

sonrası if else oran şuysa bu oran buysa bu.

daha da geliştirilebilir tabi.

atilla01
13-12-2017, 00:45   |  #5  
OP Taze Üye
Teşekkür Sayısı: 0
12 mesaj
Kayıt Tarihi:Kayıt: Ara 2016
Alıntı: White-Fox  
Şöyle söyliyim sen geliştir bir sınıf tanımla içine liste oluştur maximum sayı al. dahas onra listenin eleman sayısı ile maximum elemanı karşılaştır.

maximum*x/100=liste.elemansayısı

oran = (100*listeeleman)/maximumsayi

sonrası if else oran şuysa bu oran buysa bu.

daha da geliştirilebilir tabi.

 private void button121_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
            textBox4.Clear();
            textBox5.Clear();
            SqlCommand cmd = new SqlCommand("insert into Müsteri (Ad,SoyAd,Cinsiyet,Telefon,Class,Ucret,KoltukNo ) values ('" + textBox1.Text.ToString() + "','" + textBox2.Text.ToString() + "','" + comboBox1.Text.ToString() + "','" + comboBox2.Text.ToString() + "','" + textBox3.Text.ToString() + "','" + textBox4.Text.ToString() + "','" + textBox5.Text.ToString() + "')", baglanti);
            baglanti.Open();
            cmd.ExecuteNonQuery();
            MessageBox.Show("Kayıt Gerçekleştirildi");
            baglanti.Close();
            i++;
            x--;
            label32.Text = "Dolu:" + i.ToString();
            label31.Text = "Boş" + x.ToString();

bu şekilde label de gösteren bir kod yazdım boş ve doluyu gösteriyor

White-Fox
13-12-2017, 00:54   |  #6  
White-Fox avatarı
Yıllanmış Üye
Teşekkür Sayısı: 155
1,103 mesaj
Kayıt Tarihi:Kayıt: Eyl 2010

parametre ile ekleme yap yoksa sql injection için açık bırakmış oluyorsun hemde okunabilirlik azalıyor.

SqlCommand komut2 = new SqlCommand("INSERT into ilk(Ad) VALUES (@Ad)", baglan);
            baglan.Open();
            komut2.Parameters.AddWithValue("@Ad", "merhaba");
            komut2.ExecuteNonQuery();
            baglan.Close();

gibi

Tabi connection ve command tanımlarken using blokları kullan ki sonunda dispose edilsin.

Ayrıca döngü kullanacaksan da transaction açmalısın.

Son Düzenleme: White-Fox ~ 13 Aralık 2017 00:55
atilla01
13-12-2017, 00:58   |  #7  
OP Taze Üye
Teşekkür Sayısı: 0
12 mesaj
Kayıt Tarihi:Kayıt: Ara 2016
Alıntı: White-Fox  
Şöyle söyliyim sen geliştir bir sınıf tanımla içine liste oluştur maximum sayı al. dahas onra listenin eleman sayısı ile maximum elemanı karşılaştır.

maximum*x/100=liste.elemansayısı

oran = (100*listeeleman)/maximumsayi

sonrası if else oran şuysa bu oran buysa bu.

daha da geliştirilebilir tabi.

Alıntı: White-Fox  
parametre ile ekleme yap yoksa sql injection için açık bırakmış oluyorsun hemde okunabilirlik azalıyor.

SqlCommand komut2 = new SqlCommand("INSERT into ilk(Ad) VALUES (@Ad)", baglan);
baglan.Open();
komut2.Parameters.AddWithValue("@Ad", "merhaba");
komut2.ExecuteNonQuery();
baglan.Close();

gibi

Tabi connection ve command tanımlarken using blokları kullan ki sonunda dispose edilsin.

Ayrıca döngü kullanacaksan da transaction açmalısın.

çok  teşekkür ederim biraz beni aşar gibi ama bir şekilde halledicem artık

White-Fox
13-12-2017, 01:13   |  #8  
White-Fox avatarı
Yıllanmış Üye
Teşekkür Sayısı: 155
1,103 mesaj
Kayıt Tarihi:Kayıt: Eyl 2010

using (SQLiteConnection conn = new SQLiteConnection("Data Source=" + dataFile))
        using (SQLiteCommand sql = new SQLiteCommand(
         @"INSERT INTO Test
     (Id, Ad, Soyad, Tarih)
     VALUES
     (@Id, @ad, @soyad, @Tarih )", conn))
        {


                conn.Open();
                using (SQLiteTransaction transaction = conn.BeginTransaction())
                {
                        for (int i = 0; i < rows; i++)
                        {
                                sql.Parameters["@Id"].Value = i;
                                sql.Parameters["@ad"].Value = "Ad #" + i;
                                sql.Parameters["@soyad"].Value = "Soyad #" + i;
                                sql.Parameters["@Tarih"].Value = DateTime.Now.AddHours(-i);
                                sql.ExecuteNonQuery();
                        }
                        transaction.Commit();
                }

conn.Close();


Şeklinde yapabilirsin , lakin ortada bir döngü yoksa zaten tek bir transaction da atacağı için tekrar tanımlaman vs gerekmez.using blokları kullanmazsan belleği şişirir hatta access violation hatalarına kadar gidecek buglara yol açabilirsin.Kolay gelsin.

atilla01
13-12-2017, 01:26   |  #9  
OP Taze Üye
Teşekkür Sayısı: 0
12 mesaj
Kayıt Tarihi:Kayıt: Ara 2016
Alıntı: White-Fox  
Şöyle söyliyim sen geliştir bir sınıf tanımla içine liste oluştur maximum sayı al. dahas onra listenin eleman sayısı ile maximum elemanı karşılaştır.

maximum*x/100=liste.elemansayısı

oran = (100*listeeleman)/maximumsayi

sonrası if else oran şuysa bu oran buysa bu.

daha da geliştirilebilir tabi.

Alıntı: White-Fox  
parametre ile ekleme yap yoksa sql injection için açık bırakmış oluyorsun hemde okunabilirlik azalıyor.

SqlCommand komut2 = new SqlCommand("INSERT into ilk(Ad) VALUES (@Ad)", baglan);
baglan.Open();
komut2.Parameters.AddWithValue("@Ad", "merhaba");
komut2.ExecuteNonQuery();
baglan.Close();

gibi

Tabi connection ve command tanımlarken using blokları kullan ki sonunda dispose edilsin.

Ayrıca döngü kullanacaksan da transaction açmalısın.

Alıntı: White-Fox  
using (SQLiteConnection conn = new SQLiteConnection("Data Source=" + dataFile))
using (SQLiteCommand sql = new SQLiteCommand(
@"INSERT INTO Test
(Id, Ad, Soyad, Tarih)
VALUES
(@Id, @ad, @soyad, @Tarih )", conn))
{


conn.Open();
using (SQLiteTransaction transaction = conn.BeginTransaction())
{
for (int i = 0; i < rows; i++)
{
sql.Parameters["@Id"].Value = i;
sql.Parameters["@ad"].Value = "Ad #" + i;
sql.Parameters["@soyad"].Value = "Soyad #" + i;
sql.Parameters["@Tarih"].Value = DateTime.Now.AddHours(-i);
sql.ExecuteNonQuery();
}
transaction.Commit();
}

conn.Close();


Şeklinde yapabilirsin , lakin ortada bir döngü yoksa zaten tek bir transaction da atacağı için tekrar tanımlaman vs gerekmez.using blokları kullanmazsan belleği şişirir hatta access violation hatalarına kadar gidecek buglara yol açabilirsin.Kolay gelsin.

 tekrardan teşekkür ederim deneyeceğim birazdan dediklerinizi