C# Sözlük Yapımı..
-
Selam arkadaşlar,
Bu vereceğim örnek ile StreamReader, StreamWriter kullanımının yanında dizi değişken ve dictionary kullanımını kafanızda oturtabilirsiniz..Tabi bunların yanında ufak split, rerplace vs gibi methodlarda var.
Grafik arayüzde ihtiyacımız olanlar:
textbox txtkelime textbox txtAnlam textbox txtkey button btnekle button btnarama label lblanlam Bu ufak programcık ne iş yapar:
kelime ve anlam boxlarına girilen verileri bir .txt de depolayarak istendiğinde sorgulanması işini gerçekleştirir.
Satır satır kodları açıklamayacağım. Anlaşılmayan bölümleri belirttiğiniz takdirde bir sonraki post da açıklamaya çalışacağım..
code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace winsozluk
{
public partial class Form1 : Form
{
// genel sekme.
string DbAdres = @"C:\Users\rappermcs\Desktop\uygulama DENEME\DB\texts.txt";
public Form1()
{
InitializeComponent();
}
private void btnEkle_Click(object sender, EventArgs e)
{
if (txtkelime.Text==string.Empty)
{
MessageBox.Show("Bir Kelime Yazmadınız.");
return;
}
if (txtAnlam.Text==string.Empty)
{
MessageBox.Show("Bir Anlam Yazmadınız.");
return;
}
// Sözlük Db ye yeni bir Kelime Ekler.
string Kelime = txtkelime.Text.ToLower();
string Anlam = txtAnlam.Text.ToLower();
string Satir = Kelime + ":" + Anlam + ";";
// kelime daha önce kayıt edilmişmi?
StreamReader sr=new StreamReader(DbAdres);
string db=sr.ReadToEnd();
sr.Close();
db = db.Replace("\r\n", "");
string[] arSatir = db.Split(';');
Dictionary<string, string> temp_dic = new Dictionary<string, string>();
for (int i = 0; i < arSatir.Length; i++)
{
if (arSatir[i].Length != 0)
{
string xkelime = arSatir[i].Split(':')[0];
string xanlam = arSatir[i].Split(':')[1];
temp_dic.Add(xkelime, xanlam);
}
}
if (temp_dic.ContainsKey(Kelime))
{
MessageBox.Show("Bu kelime daha önce eklenmiş.");
txtAnlam.Clear();
txtkelime.Clear();
return;
}
StreamWriter sw = new StreamWriter(DbAdres, true);
sw.WriteLine(Satir);
sw.Close();
MessageBox.Show("Kelime DB ye Eklendi.");
txtAnlam.Text = txtkelime.Text = string.Empty;
}
private void btnArama_Click(object sender, EventArgs e)
{
if (txtkey.Text==string.Empty)
{
MessageBox.Show("aranacak bir kelime yazmadınız.");
return;
}
StreamReader sr = new StreamReader(DbAdres);
string db = sr.ReadToEnd();
sr.Close();
db = db.Replace("\r\n", "");
string[] satirlar = db.Split(';');
Dictionary<string, string> dic = new Dictionary<string, string>();
for (int i = 0; i < satirlar.Length; i++)
{
if (satirlar[i].Length!=0)
{
string kelime = satirlar[i].Split(':')[0];
string anlam = satirlar[i].Split(':')[1];
dic.Add(kelime, anlam);
}
}
if (!dic.ContainsKey(txtkey.Text.ToLower()))
{
MessageBox.Show("Aradığınız Kelime Bulunamadı.");
txtkey.Clear();
return;
}
lblAnlam.Text = dic[txtkey.Text.ToLower()];
}
private void txtkey_KeyPress(object sender, KeyPressEventArgs e)
{
}
private void txtkey_KeyDown(object sender, KeyEventArgs e)
{
}
}
} -
Burası da benim..:)
Not: C/P yorumlarına direk cevabım şudur ki; Evet c/p yaptım ama nereden kendi yazdığım visual studio 2008 IDE içerisinden.. :)
-
teşekkürler hocam kodları alim kenara bakarım sırası gelince :)
