Chrome'da ingilizce sitelerde gezinirken bazen terimleri translate etme ihtiyacı duymak için bir eklenti edinmiştim. Bu eklentinin en sevdiğim özelliği , kelimeyi kütüphaneye ekleyince sizin ayarladığınız sürelerde size o kelimeyi soruyor dilerseniz kelimenin çevirisini de görebiliyorsunuz. Bilirseniz (+) bilemezseniz (-) tuşuna basıyorsunuz bu sayede kelimelerdeki ilerleyişinizi takip edip kendinizi ona gore şekillendirebiliyorsunuz.
Bu eklentiyi çok sevdim bilgisayar başında da vakit geçiren biri olduğum için neden sadece ingilizce için kullanayım ki bunu dedim. Diğer dersler için de hatırlatıcım olsa çok iyi olur dedim araştırdım biraz böyle bir şey bulamadım ben de kendim yazdım Uygulamanın kodlarıyla birlikte aşağıda veriyorum
Uygulamada kullanılan yapılar
- ListBox
- CreateDatabase
- CreateTable
- SqlConnection
- SqlCommand
- NotifyIcon
- Timer
- Form Oluşturma
- Formlar arası veri aktarımı
- SQL Komutları (insert update delete)
Sanırım bu kadar eklemediğimi gördüğünüz olursa yorum kısmında belirtebilirsiniz.
Uygulamayı açıklama satırları içerisinde açıkladım ek bir açıklama yapmak istemiyorum. Anlaşılmayan bir kısım olursa ister iletişim ister de yorum kısmında belirtebilirsiniz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
| using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ders_calisma_gercek
{
public partial class Form1 : Form
{
//Değerleri listbox içersinde tutmak istedim
//Bu değerler soruların idleri sorular ve soruların açıklama kısımları
ListBox lb_idler = new ListBox();
ListBox lb_sorular = new ListBox();
ListBox lb_aciklamalar = new ListBox();
//bilinme ise o sorunun bilinme sayısıdır
int bilinme;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//Soru ekle formunu açan kod
SoruEkle sr = new SoruEkle();
sr.ShowDialog();
}
private void button2_Click(object sender, EventArgs e)
{
//Soru goruntuleformunu açan kod
SoruGoruntule sg = new SoruGoruntule();
sg.ShowDialog();
}
private void button3_Click(object sender, EventArgs e)
{
//Ekrana soru formunu getiren fonksiyonu örnek soru getir butonunun içine yazdım
soruAc();
}
private void soruAc()
{
//Bu fonksiyon ile ekranda soru beliriyor
lb_idler.Items.Clear();
lb_aciklamalar.Items.Clear();
lb_sorular.Items.Clear();
Random rnd = new Random();
//veri tabanı bağlantısı
string baglanti = "Data Source=.;Initial Catalog=db_dersCalisma; Trusted_Connection=True;";
using (SqlConnection conn = new SqlConnection(baglanti))
{
//veri tabanında çalışacak olan komut
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
//veri tabanındaki bütün soruları çekiyoruz
cmd.CommandText = "select * from sorular";
SqlDataReader dr = null;
//veri tabanında komutu çalıştırabilmek için bağlantıyı açıyoruz.
conn.Open();
try
{
//data reader içine veri tabanından dönen değişkenleri kaydediyoruz
dr = cmd.ExecuteReader();
}
catch (Exception ex)
{
//hata olursa ekrana yazdırıyoruz
MessageBox.Show(ex.ToString());
}
int soru_sayisi;
while (dr.Read())
{
//dataReader içindeki değişkenlrei ilgili kısımlara aktarıyoruz.
lb_sorular.Items.Add(dr["soru"].ToString());
lb_idler.Items.Add(dr["id"].ToString());
lb_aciklamalar.Items.Add(dr["aciklama"].ToString());
this.bilinme = Int32.Parse(dr["bilinme"].ToString());
}
}
//rastgele bir soru seçiyoruz
//soru seçme algoritması şu şekildedir
//0dan başlayıp soruların idlerini kaydettiğimiz listbox'ımızın değerleri arasında
//rastgele birini seçiyoruz
int soruSec = rnd.Next(0, lb_idler.Items.Count);
try
{
//Seçtiğimiz değişkendeki id , soru ve aciklamayi soruSor formuna yolluyoruz.
soruSor sr = new soruSor(lb_sorular.Items[soruSec].ToString(), lb_aciklamalar.Items[soruSec].ToString(), lb_idler.Items[soruSec].ToString(), bilinme);
//Daha sonra ise oluşturduğumuz formu ekranda gösteriyoruz
sr.ShowDialog();
}
catch (Exception ex)
{
//Eğer Yukarıdaki kod çalışmaz ise büyük ihtimalle soru ekli değildir
/*
*
*
*/
MessageBox.Show("Sanırım Hiç soru ekli değil");
}
}
private void timer1_Tick(object sender, EventArgs e)
{
//Forma bir timer ekledim timer belirlenen süre içerisinde çalıştığında
//soruAc() fonksiyonunu çalıştırıyor.
soruAc();
}
private void button4_Click(object sender, EventArgs e)
{
//Rastgele soru açma kısmını açmak için oluşturduğum buton
//timer değerlerini gerektiği gibi ayarlıyoruz
timer1.Enabled = true;
lbl_durum.Text = "AÇIK";
lbl_durum.ForeColor = Color.Green;
}
private void button5_Click(object sender, EventArgs e)
{
//Rastgele soru açma kısmını KAPATMAK için oluşturduğum buton
//timer değerlerini gerektiği gibi ayarlıyoruz
timer1.Enabled = false;
lbl_durum.Text = "KAPALI";
lbl_durum.ForeColor = Color.Red;
}
//timer süresini ayarlayan fonksiyon
private void btn_sureAyarla_Click(object sender, EventArgs e)
{
int sure =Int32.Parse(nm_sure.Value.ToString());
if (sure == 0)
{
MessageBox.Show("Süre 0 dakika olarak seçilemez!\nBu yüzden 1 dakika olarak değiştirildi!");
sure = 1;
}
else
{
MessageBox.Show("Süre Ayarlandı");
}
//timer miliSecond üzerinde işlem yaptığı için saniye çevirme işlemi yapıyoruz
//1 saniye 1000ms ve 1 dakika da 60 saniye olduğu için gerekli sayılarla çarpıyoruz.
int gercek_sure = sure * 60 * 1000;
timer1.Interval = gercek_sure;
}
private void nm_sure_ValueChanged(object sender, EventArgs e)
{
//Girilmiş olan timer süresinin 0 olarak ayarlanabilmesini engellemek için yazdığım fonksiyon
int deger = Int32.Parse(nm_sure.Value.ToString());
if (deger == 0)
{
nm_sure.Value = 1;
MessageBox.Show("0 Dakika seçilemez!");
}
}
private void button6_Click(object sender, EventArgs e)
{
//arkaplanda çalışmasını sağlayan kısım formu gizliyor ve bildirim kısmında bir icon belirtiyor
this.Hide();
Displaynotify();
}
protected void Displaynotify()
{
//bildirim kısmındaki NotifyIconu değiştiriyoruz
try
{
notifyIcon1.Text = "Programı göster";
notifyIcon1.Visible = true;
notifyIcon1.BalloonTipTitle = "Hatırlatıcı uygulama hala çalışıyor.";
notifyIcon1.BalloonTipText = "Detayları görüntülemek için tıklayın";
notifyIcon1.ShowBalloonTip(100);
}
catch (Exception ex)
{
}
}
private void notifyIcon1_DoubleClick(object sender, EventArgs e)
{
//Bildirim icon'una çift tıklanırsa formu gösteriyoruz
this.Show();
}
private void Form1_Load(object sender, EventArgs e)
{
//veri tabanı var mı kontrol ediyor yoksa oluşturan fonksiyonu çağırıyor.
if (!vtVarmiKontrol())
{
vtOlustur();
}
//Bu kısmı yazmadan bende bildirim çubuğunda icon gözükmedi ne işe yarıyor bilmiyom.
notifyIcon1.Icon = SystemIcons.Application;
}
private void vtOlustur()
{
//Veri tabanı oluşturan kod scriptini çalıştıran kısım veri tabanı oluşturma kodlarını vereceğim
//önemli olan kısım vereceğim veritabanı kodlarını programın bulunduğu dizine atıp adını Script.sql olarak kaydetmeniz.
List<string> cmds = new List<string>();
if (File.Exists(Application.StartupPath + "\\Script.sql"))
{
TextReader tr = new StreamReader(Application.StartupPath + "\\Script.sql");
string line = "";
string cmd = "";
while ((line = tr.ReadLine()) != null)
{
if (line.Trim().ToUpper() == "GO")
{
cmds.Add(cmd);
cmd = "";
}
else
{
cmd += line + "\r\n";
}
}
if (cmd.Length > 0)
{
cmds.Add(cmd);
cmd = "";
}
tr.Close();
}
if (cmds.Count > 0)
{
SqlCommand command = new SqlCommand();
//sql connection for master database
command.Connection = new SqlConnection(@"Data Source=.\sqlexpress;Inıtıal Catalog=MASTER;Integrated Security=True");
command.CommandType = System.Data.CommandType.Text;
command.Connection.Open();
for(int i = 0; i < cmds.Count; i++)
{
command.CommandText = cmds[i];
command.ExecuteNonQuery();
}
}
}
private bool vtVarmiKontrol()
{
//Veri tabanı var mı kontrol eden fonksiyon
SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=db_dersCalisma; Trusted_Connection=True;");
try
{
//eğer başarılı şekilde bağlantı açılırsa true değişkeni döndürüyor
conn.Open();
return true;
}catch(Exception ex)
{
//bağlantı sırasında hata oluşursa false değişkeni döndürüyor
return false;
}
}
}
}
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
| using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ders_calisma_gercek
{
public partial class SoruGoruntule : Form
{
//Soruları görüntülemek için veri tabanından çekmemiz gerekiyor gerekli değişken tanımları
string sql = null;
string connectionString = "Data Source=.;Initial Catalog=db_dersCalisma; Trusted_Connection=True;";
ListBox lb_id = new ListBox();
ListBox lb_soru = new ListBox();
ListBox lb_aciklama = new ListBox();
public SoruGoruntule()
{
InitializeComponent();
//form yuklendikten sonra soruları listbox'a yükleyen fonksiyon çalıştırılıyor
soruYukle();
}
private void soruYukle()
{
//güncel listbox verileri temizleniyor
lb_soru.Items.Clear();
lb_id.Items.Clear();
lb_sorular.Items.Clear();
lb_aciklama.Items.Clear();
//bu kısımda da veri tabanından veriler alınıp listBox verilerine ekleniyor
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "Select * from sorular";
conn.Open();
SqlDataReader dr = null;
try
{
dr = cmd.ExecuteReader();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
while (dr.Read())
{
lb_id.Items.Add(dr["id"].ToString());
lb_soru.Items.Add(dr["soru"].ToString());
lb_aciklama.Items.Add(dr["aciklama"].ToString());
}
for (int i = 0; i < lb_soru.Items.Count; i++)
{
lb_sorular.Items.Add(lb_soru.Items[i].ToString());
}
}
}
private void lb_sorular_SelectedIndexChanged(object sender, EventArgs e)
{
//sorular listbox'ımızda seçili kısıma göre sağ taraftaki verileri değiştirebilmek için
//selectedIndexChanged fonksiyonumuzu yazıyoruz
//ve gerekli verileri ayarlıyoruz
int x;
bool y=Int32.TryParse(lb_sorular.SelectedIndex.ToString(),out x);
if(x>=0 && y)
{
tb_soru.Text = lb_soru.Items[x].ToString();
tb_aciklama.Text = lb_aciklama.Items[x].ToString();
lb_soruid.Text = lb_id.Items[x].ToString();
}
}
private void btn_SoruDuzenle_Click(object sender, EventArgs e)
{
//Soruyu guncelle butonu
string aciklama, soru;
int sira = Int32.Parse(lb_soruid.Text);
aciklama = tb_aciklama.Text;
soru = tb_soru.Text;
int id = Int32.Parse(lb_soruid.Text);
using(SqlConnection con=new SqlConnection(connectionString))
{
sql = "update sorular set aciklama='" + aciklama + "' , soru='" + soru + "' where id='" + sira + "'";
SqlCommand cmd = new SqlCommand();
cmd.Connection=con;
cmd.CommandText = sql;
try
{
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
soruYukle();
}
private void button1_Click(object sender, EventArgs e)
{
//Soruyu veri tabanından ve listBox'tan silen fonksiyon
int id = Int32.Parse(lb_soruid.Text);
using (SqlConnection con = new SqlConnection(connectionString))
{
sql = "Delete from sorular where id='" + id + "'";
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = sql;
try
{
con.Open();
cmd.ExecuteNonQuery();
con.Close();
tb_soru.Clear();
tb_aciklama.Clear();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
soruYukle();
}
}
}
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ders_calisma_gercek
{
public partial class SoruEkle : Form
{
//soru eklemek için gerekli değişkenler tanımlanıyor bütün fonksiyonlarda kullanılabilmesi için
//global olarak tanımlandı
string connectionString = null;
string sql = null;
public SoruEkle()
{
InitializeComponent();
}
private void btn_soruKaydet_Click(object sender, EventArgs e)
{
//Soruyu kaydet butonuna tıklandığında veri tabanına ekliyoruz ve textBox verilerini temizliyoruz
connectionString = "Data Source=.;Initial Catalog=db_dersCalisma; Trusted_Connection=True;";
string soru, aciklama;
aciklama = tb_aciklama.Text;
soru = tb_soru.Text;
string sqlKomutu = "insert into sorular (soru,aciklama,bilinme)values (@soru,@aciklama2,0)";
using (SqlConnection cnn = new SqlConnection(connectionString))
{
try
{
cnn.Open();
using(SqlCommand cmd=new SqlCommand(sqlKomutu, cnn))
{
cmd.Parameters.Add("@soru", SqlDbType.Text).Value = soru;
cmd.Parameters.Add("@aciklama2", SqlDbType.Text).Value = aciklama;
int rowsAdded = cmd.ExecuteNonQuery();
if (rowsAdded > 0)
{
tb_aciklama.Clear();
tb_soru.Clear();
}
else
{
//eklenen veri sayısı 0'dan küçükse eklenmemiş demek oluyor
//VAYYY BEEE
MessageBox.Show("başarısız");
}
}
}
catch (Exception ex)
{
//Hata alınırsa hata mesajı ekrana yazdırılıyor
MessageBox.Show(ex.ToString());
}
}
}
}
}
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
| using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ders_calisma_gercek
{
public partial class soruSor : Form
{
//bağlantı stringi ve kullanılacak değişkenler
string baglanti= "Data Source=.;Initial Catalog=db_dersCalisma; Trusted_Connection=True;";
string soru, aciklama;
int id;
public soruSor(string s,string a,string i,int bilinme)
{
InitializeComponent();
this.CenterToScreen();
//diğer formdan gelen verileri bu formda kullanabilmek için
//Bu formda oluşturulmuş değişkenlerin içine atıyorum.
this.soru = s;
this.aciklama = a;
this.id = Int32.Parse(i);
lbl_soru.Text = s;
lbl_aciklama.Text = a;
lbl_bilinme.Text = bilinme+"";
}
private void button2_Click(object sender, EventArgs e)
{
//açıklamayı göster butonuna tıklanırsa bi fonksiyon çalışıyor
lbl_aciklama.Visible = true;
}
private void button1_Click(object sender, EventArgs e)
{
//bilemedim butonuna tıklanırsa bu fonksiyon çalışıyor
int bilinmeSonrasi = Int32.Parse(lbl_bilinme.Text) - 1;
string sql = "update sorular set bilinme='" + bilinmeSonrasi + "' where id='" + this.id + "'"; ;
using (SqlConnection conn = new SqlConnection(baglanti))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = sql;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
this.Close();
}
private void button3_Click(object sender, EventArgs e)
{
//Bildim butonuna tıklanırsa bu fonksiyon çalışıyor.
int bilinmeSonrasi = Int32.Parse(lbl_bilinme.Text) + 1;
string sql = "update sorular set bilinme='" + bilinmeSonrasi + "' where id='" + this.id + "'"; ;
using(SqlConnection conn=new SqlConnection(baglanti))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = sql;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
this.Close();
}
}
}
|
Yorumlar
Yorum Gönder