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.
c# konusunda yardım
Ç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
Şö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.
Şö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.private void button121_Click(object sender, EventArgs e)maximum*x/100=liste.elemansayısı
oran = (100*listeeleman)/maximumsayi
sonrası if else oran şuysa bu oran buysa bu.
daha da geliştirilebilir tabi.
{
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
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.
Şö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.
parametre ile ekleme yap yoksa sql injection için açık bırakmış oluyorsun hemde okunabilirlik azalıyor.çok teşekkür ederim biraz beni aşar gibi ama bir şekilde halledicem artıkSqlCommand 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.
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.
Şö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.
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.
using (SQLiteConnection conn = new SQLiteConnection("Data Source=" + dataFile))tekrardan teşekkür ederim deneyeceğim birazdan dediklerinizi
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.