public List <OgrenciProfilDBModel> GetProfileStudent() //Bu fonksiyonda ise eklenen veriler tablodan okunur(Gridviewe basmak için) { List <OgrenciProfilDBModel> Ogrenciler = new List <OgrenciProfilDBModel>(); string path = @"C:\Users\User\AllFriendDatabase.db"; SQLiteConnection con = new SQLiteConnection("DataSource =" + path); con.Open(); SQLiteCommand cmd = new SQLiteCommand("select * from OgrenciProfil", con); SQLiteDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { OgrenciProfilDBModel OgrenciProfilModel = new OgrenciProfilDBModel(); OgrenciProfilModel.Numara = dr.GetString(dr.GetOrdinal("OgrKendisi")); OgrenciProfilModel.P1 = dr.GetInt32(dr.GetOrdinal("P1")); OgrenciProfilModel.P2 = dr.GetInt32(dr.GetOrdinal("P2")); OgrenciProfilModel.P3 = dr.GetInt32(dr.GetOrdinal("P3")); OgrenciProfilModel.P4 = dr.GetInt32(dr.GetOrdinal("P4")); OgrenciProfilModel.P5 = dr.GetInt32(dr.GetOrdinal("P5")); OgrenciProfilModel.P6 = dr.GetInt32(dr.GetOrdinal("P6")); OgrenciProfilModel.P7 = dr.GetInt32(dr.GetOrdinal("P7")); OgrenciProfilModel.P8 = dr.GetInt32(dr.GetOrdinal("P8")); OgrenciProfilModel.P9 = dr.GetInt32(dr.GetOrdinal("P9")); OgrenciProfilModel.P10 = dr.GetInt32(dr.GetOrdinal("P10")); OgrenciProfilModel.P11 = dr.GetInt32(dr.GetOrdinal("P11")); OgrenciProfilModel.P12 = dr.GetInt32(dr.GetOrdinal("P12")); OgrenciProfilModel.P13 = dr.GetInt32(dr.GetOrdinal("P13")); OgrenciProfilModel.P14 = dr.GetInt32(dr.GetOrdinal("P14")); OgrenciProfilModel.P15 = dr.GetInt32(dr.GetOrdinal("P15")); Ogrenciler.Add(OgrenciProfilModel); } con.Close(); return(Ogrenciler); }
public void AddProfileStudent(OgrenciProfilDBModel ogrenci) //Bu fonksiyonda ogrenciprofil tablosuna button1 click olayında açılan profil dosyasından gelen verilerin ekleme işlemleri yapılır { string path = @"C:\Users\User\AllFriendDatabase.db"; SQLiteConnection con = new SQLiteConnection("DataSource =" + path); con.Open(); SQLiteCommand cmd = new SQLiteCommand("insert into OgrenciProfil(OgrKendisi,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15) values(@no,@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8,@p9,@p10,@p11,@p12,@p13,@p14,@p15)", con); cmd.Parameters.AddWithValue("@no", ogrenci.Numara); cmd.Parameters.AddWithValue("@p1", ogrenci.P1); cmd.Parameters.AddWithValue("@p2", ogrenci.P2); cmd.Parameters.AddWithValue("@p3", ogrenci.P3); cmd.Parameters.AddWithValue("@p4", ogrenci.P4); cmd.Parameters.AddWithValue("@p5", ogrenci.P5); cmd.Parameters.AddWithValue("@p6", ogrenci.P6); cmd.Parameters.AddWithValue("@p7", ogrenci.P7); cmd.Parameters.AddWithValue("@p8", ogrenci.P8); cmd.Parameters.AddWithValue("@p9", ogrenci.P9); cmd.Parameters.AddWithValue("@p10", ogrenci.P10); cmd.Parameters.AddWithValue("@p11", ogrenci.P11); cmd.Parameters.AddWithValue("@p12", ogrenci.P12); cmd.Parameters.AddWithValue("@p13", ogrenci.P13); cmd.Parameters.AddWithValue("@p14", ogrenci.P14); cmd.Parameters.AddWithValue("@p15", ogrenci.P15); cmd.ExecuteNonQuery(); con.Close(); }
private void button2_Click(object sender, EventArgs e)//Bu button asıl işlemlerin gerçekleştiği buttondur.Arkadaş öneri buttonu { //Gerekli olan bütün sınıfların nesneleri üretiliyor OgrenciListesiOku OgrenciListOku = new OgrenciListesiOku(); OgrenciNetworkDatabase OgrenciNetwork = new OgrenciNetworkDatabase(); OgrenciProfilDatabase OgrenciProfil = new OgrenciProfilDatabase(); ArkadaslarıBulma arkadaslar = new ArkadaslarıBulma(); var ArananNumara = textBox1.Text; //Textboxdaki numara değeri alınıyor. List <OgrenciNetworkDBModel> NetworkList = new List <OgrenciNetworkDBModel>(OgrenciNetwork.GetNetworkStudent()); //Network tablosundaki bütün veriler Network model tipinde bir listeye alınıyor List <OgrenciProfilDBModel> ProfilList = new List <OgrenciProfilDBModel>(OgrenciProfil.GetProfileStudent()); //Profil tablosundaki bütün veriler Profil model tipinde bir listeye alınıyor if (ArananNumara.Length != 10)//eğer numara 10 haneden küçükse hata gösteriliyor. { MessageBox.Show("10 haneli numara giriniz"); } else { var Arkadaslar = arkadaslar.FindFriend(ArananNumara); //eğer girilen numara hatasız ise oluşturduğumuş arkadaslar nesnesi yani veritabanında girilen numaraya göre arama yapan sınıfın nesnesi //ve sınıfın içindeki arama fonksiyonu çağırılıyor textboxdaki arananNumara değeri parametre olarak gönderildi ve o numaraya göre arama yapıldı. //Aranan numaranın arkadaşları da bulundu ve Arkadaslar adlı değişkene alındı. if (string.IsNullOrEmpty(Arkadaslar[0])) //Eğer ilk değer yani numaranın kendisi boş geliyorsa böyle bir numara yok demektir bunun kontrolü sağlanıyor. { MessageBox.Show("Bu numarada öğrenci bulunmamaktadır"); } else { List <OgrenciAnketModel> AnketList = new List <OgrenciAnketModel>(); //Girilen numaranın arkadaş bilgilerinin alınacağı liste foreach (var item in ProfilList) //Tüm profil bilgilerinin içerisinde sadece girilen numaranın arkadaşlarının profli bilgilerinin alınacağı döngü { for (int i = 1; i < 10; i++) //Girilen numaranın arkadaşlarının profil bilgilerinin alındığı döndü { if (!string.IsNullOrEmpty(Arkadaslar[i])) { if (Arkadaslar[i] == item.Numara)//Eğer arkadaslarının numarası ile profil listesindeki numaralar eşit ise { OgrenciAnketModel AnketModel = new OgrenciAnketModel(); AnketModel.Arkadaslik = 1;//Arkadaslık 1 olarak belirlendi çünkü arkadaşlar. AnketModel.ArkadaslikDegeri = 0; AnketModel.Arkadaslar = item.Numara; AnketModel.P1 = item.P1; AnketModel.P2 = item.P2; AnketModel.P3 = item.P3; AnketModel.P4 = item.P4; AnketModel.P5 = item.P5; AnketModel.P6 = item.P6; AnketModel.P7 = item.P7; AnketModel.P8 = item.P8; AnketModel.P9 = item.P9; AnketModel.P10 = item.P10; AnketModel.P11 = item.P11; AnketModel.P12 = item.P12; AnketModel.P13 = item.P13; AnketModel.P14 = item.P14; AnketModel.P15 = item.P15; AnketList.Add(AnketModel);//tüm arkadaslarının profil bilgilerini alır ve Anketlist'e atar } } } } List <OgrenciProfilDBModel> Liste = new List <OgrenciProfilDBModel>(); //ardından tekrar bütün profil bilgileri alınıyor Liste = OgrenciProfil.GetProfileStudent(); //Ve listenin içine atılıyor OgrenciProfilDBModel ogrenciProfil = new OgrenciProfilDBModel(); for (int i = 0; i < Arkadaslar.Length; i++) //Numarası girilen kişinin arkadaşlarını bütün profil bilgilerinden çıkarır. { if (!string.IsNullOrEmpty(Arkadaslar[i])) { ogrenciProfil = Liste.FirstOrDefault(x => x.Numara == Arkadaslar[i]); Liste.Remove(ogrenciProfil); } } for (int i = 0; i < Liste.Count / 2; i++)//kalan profil bilglerinden ilk 40 kişi regresyon için alınır. { OgrenciAnketModel Anket = new OgrenciAnketModel(); Anket.ArkadaslikDegeri = 0; Anket.Arkadaslik = 0; Anket.Arkadaslar = Liste[i].Numara; Anket.P1 = Liste[i].P1; Anket.P2 = Liste[i].P2; Anket.P3 = Liste[i].P3; Anket.P4 = Liste[i].P4; Anket.P5 = Liste[i].P5; Anket.P6 = Liste[i].P6; Anket.P7 = Liste[i].P7; Anket.P8 = Liste[i].P8; Anket.P9 = Liste[i].P9; Anket.P10 = Liste[i].P10; Anket.P11 = Liste[i].P11; Anket.P12 = Liste[i].P12; Anket.P13 = Liste[i].P14; Anket.P15 = Liste[i].P15; AnketList.Add(Anket); } for (int i = 0; i < AnketList.Count; i++)//Regresyon için alınan 40 kişi de çıkarılır. { var AnketSil = Liste.FirstOrDefault(x => x.Numara == AnketList[i].Arkadaslar); Liste.Remove(AnketSil); } List <OgrenciAnketModel> AranacakOgrenciListe = new List <OgrenciAnketModel>(); for (int i = 0; i < Liste.Count; i++)//Ardından hiç dokunulmamış 40 kişi karşılaştırma yapılmak için bir listeye alınır { OgrenciAnketModel Anket = new OgrenciAnketModel(); Anket.ArkadaslikDegeri = 0; Anket.Arkadaslik = 0; Anket.Arkadaslar = Liste[i].Numara; Anket.P1 = Liste[i].P1; Anket.P2 = Liste[i].P2; Anket.P3 = Liste[i].P3; Anket.P4 = Liste[i].P4; Anket.P5 = Liste[i].P5; Anket.P6 = Liste[i].P6; Anket.P7 = Liste[i].P7; Anket.P8 = Liste[i].P8; Anket.P9 = Liste[i].P9; Anket.P10 = Liste[i].P10; Anket.P11 = Liste[i].P11; Anket.P12 = Liste[i].P12; Anket.P13 = Liste[i].P14; Anket.P15 = Liste[i].P15; AranacakOgrenciListe.Add(Anket); } int N = AnketList.Count; //Regresyon için alınan 40 kişi int Loop = 100; //iterasyon sayısı double stepSize = 0.001; double[] beta = new double[16]; //Betaların değerlerinin tutulduğu dizi for (int i = 0; i < beta.Length; i++) { beta[i] = 1; } double[] newBeta = new double[16]; double toplam1 = 0.0; double toplam2 = 0.0; for (int k = 1; k <= Loop; k++) { toplam1 = 0.0; for (int i = 0; i < N; i++) { int[] Degerler = Deger(AnketList[i]);//regresyon için alınan 40 kişinin profil bilgileri bu dizide tutuluyor. double hx = Math.Exp(-(beta[0] + beta[1] * Degerler[1] + beta[2] * Degerler[2] + beta[3] * Degerler[3] + beta[4] * Degerler[4] + beta[5] * Degerler[5] + beta[6] * Degerler[6] + beta[7] * Degerler[7] + beta[8] * Degerler[8] + beta[9] * Degerler[9] + beta[10] * Degerler[10] + beta[11] * Degerler[11] + beta[12] * Degerler[12] + beta[13] * Degerler[13] + beta[14] * Degerler[14] + beta[15] * Degerler[15])); //Ardından bu değerlere göre regresyon uygulanır double hb = 1.0 / (1.0 + hx); double y = AnketList[i].Arkadaslik; //Arkadas olup olmadıkları durumu toplam1 += hb - y; } newBeta[0] = beta[0] - (stepSize * toplam1 / N);//Beta 0'ın yeni değerlerini bu dizide tutuyoruz for (int t = 0; t < 15; t++) { toplam2 = 0.0; for (int i = 0; i < N; i++) { int[] Degerler = Deger(AnketList[i]);//tekrardan regresyon için alınan ilk 40 kişinin profil değerleri alınıyor double hb = 1.0 / (1.0 + Math.Exp(-(beta[0] + beta[1] * Degerler[1] + beta[2] * Degerler[2] + beta[3] * Degerler[3] + beta[4] * Degerler[4] + beta[5] * Degerler[5] + beta[6] * Degerler[6] + beta[7] * Degerler[7] + beta[8] * Degerler[8] + beta[9] * Degerler[9] + beta[10] * Degerler[10] + beta[11] * Degerler[11] + beta[12] * Degerler[12] + beta[13] * Degerler[13] + beta[14] * Degerler[14] + beta[15] * Degerler[15]))); double y = AnketList[i].Arkadaslik; toplam2 += (hb - y) * Degerler[t]; } newBeta[t] = beta[t] - (stepSize * toplam2 / N);//Beta0 hariç diğer tüm betaların yeni değerlerini burda tutuyoruz } for (int i = 0; i < beta.Length; i++) { beta[i] = newBeta[i];//Betalara yeni değerlerini atıyoruz } } for (int i = 0; i < AranacakOgrenciListe.Count; i++) //Ardından hiç dokunmadığımız 40 kişiye ait döngüye geliyoruz { //Regresyona aldığımız kişilerden çıkan beta değerlerine göre dokunmadığımız 40 kişinin de değerlerini buluyoruz int[] Degerler = Deger(AranacakOgrenciListe[i]); double hb = 1.0 / (1.0 + Math.Exp(-(beta[0] + beta[1] * Degerler[1] + beta[2] * Degerler[2] + beta[3] * Degerler[3] + beta[4] * Degerler[4] + beta[5] * Degerler[5] + beta[6] * Degerler[6] + beta[7] * Degerler[7] + beta[8] * Degerler[8] + beta[9] * Degerler[9] + beta[10] * Degerler[10] + beta[11] * Degerler[11] + beta[12] * Degerler[12] + beta[13] * Degerler[13] + beta[14] * Degerler[14] + beta[15] * Degerler[15]))); AranacakOgrenciListe[i].ArkadaslikDegeri = hb; //Bu değerleri hiç dokunmadığımız 40 kişinin arkadaşlık değerlerine atıyoruz } List <OgrenciAnketModel> BulunanArkadaslar = (from x in AranacakOgrenciListe //Ardından arkadaslık değeri en yüksek olan kişiler bulunuyor. orderby x.ArkadaslikDegeri descending select x).ToList(); var OgrenciListesi = OgrenciListOku.getStudenList(); //Önerilen arkadasların adlarını da görüntülemek için Ogrencilistesi excelini okudugumuz Fonksiyonu cagırıyoruz List <OgrenciListesiModel> OnerilenArkadasListe = new List <OgrenciListesiModel>(); //Ogrencilistesi modelimizin tipinde bir liste olusturuyoruz 10 arkadas bu listeye alınacak. for (int i = 0; i < BulunanArkadaslar.Count; i++) //Bulunan tüm arkadaşların sayısı kadar bir for { for (int j = 0; j < OgrenciListesi.Count; j++) //Ardından excel dosyasındaki tüm ögrenciler kadar dönecek bir for { if (BulunanArkadaslar[i].Arkadaslar == OgrenciListesi[j].OgrNo) //Eğer bulunan arkadaşların numaraları ile ögrenci listesindeki ögrencilerin numaraları eşit ise { if (OnerilenArkadasListe.Count < 10) //o eşit olanların ilk 10 tanesini alıyor. { OnerilenArkadasListe.Add(OgrenciListesi[j]); //ve bu ilk 10 kişieye OnerilenArkadas listesine atıyor. } } } } dataGridView3.DataSource = OnerilenArkadasListe;//Ardından önerilen arkadaşlar grid view'e basılıyor. } } }
private void button1_Click(object sender, EventArgs e) //Dosya aç butonu; bu butonda open file dialog ile kullanıcıya gerekli dosyalar açtırılır { OgrenciNetworkDatabase OgrenciNetwork = new OgrenciNetworkDatabase(); //OgrenciProfil ve network dosyalarının içindeki verilerin veritabanı tablolarına eklenmesi veya geri istenmesi için OgrenciProfilDatabase OgrenciProfil = new OgrenciProfilDatabase(); //Gerekli nesneler oluşturuluyor. OpenFileDialog openFile = new OpenFileDialog();//Dialog açtırılıyor... openFile.Filter = @"CSV files (*.csv)|*.csv|XML files (*.xml)|*.xml"; openFile.DefaultExt = ".csv"; openFile.ShowDialog(); var SafeFileName = openFile.SafeFileName; var ExcelFileName = openFile.FileName; if (SafeFileName == "ogrenciNetwork.csv") //eğer dialogda seçilen dosyanın adı ogrenciNetwork ise { string[] NetworkRow = File.ReadAllLines(ExcelFileName); //Bu dosyanın bütün satırları okunuyor for (int i = 0; i < NetworkRow.Length; i++) //satırların uzunluguna kadar dönecek for yani 90 kez. { OgrenciNetworkDBModel networkModel = new OgrenciNetworkDBModel(); //Network modeli oluşturuluyor gelen veriler bu modelin içine atılıp ordan tabloya gidecek. string[] AllStudents = NetworkRow[i].Split(','); //her bir satır virgüllere göre ayrılıp okunuyor. networkModel.Numara = AllStudents[0]; //satırın 0. elemanı yani ögrencinin kendisi geri kalan alanlar ise arkadasları bu işlem tüm satırlara uygulanıyor. networkModel.Friend1 = AllStudents[1]; networkModel.Friend2 = AllStudents[2]; networkModel.Friend3 = AllStudents[3]; networkModel.Friend4 = AllStudents[4]; networkModel.Friend5 = AllStudents[5]; networkModel.Friend6 = AllStudents[6]; networkModel.Friend7 = AllStudents[7]; networkModel.Friend8 = AllStudents[8]; networkModel.Friend9 = AllStudents[9]; networkModel.Friend10 = AllStudents[10]; OgrenciNetwork.AddNetworkStudent(networkModel);//ardından dolan model network dosyalarını ekleyeceğimiz tabloya parametre olarak geçiliyor. //yani OgrenciNetwork tablosu dosyadan okunan bütün verilerle düzenli bir şekilde doldu. } dataGridView1.DataSource = OgrenciNetwork.GetNetworkStudent();//ardından veritabanındaki kayıtlar grid view'e basılıyor. } if (SafeFileName == "ogrenciProfil.csv")//Ogrenci network için gerçekleşen tüm işlemlerin aynısı Ogrenci Profil içiinde gerçekleştiriliyor. { string[] ProfileRow = File.ReadAllLines(ExcelFileName); for (int i = 0; i < ProfileRow.Length; i++) { OgrenciProfilDBModel ogrenciProfil = new OgrenciProfilDBModel(); string[] AllProfile = ProfileRow[i].Split(','); ogrenciProfil.Numara = AllProfile[0]; ogrenciProfil.P1 = Convert.ToInt32(AllProfile[1]); ogrenciProfil.P2 = Convert.ToInt32(AllProfile[2]); ogrenciProfil.P3 = Convert.ToInt32(AllProfile[3]); ogrenciProfil.P4 = Convert.ToInt32(AllProfile[4]); ogrenciProfil.P5 = Convert.ToInt32(AllProfile[5]); ogrenciProfil.P6 = Convert.ToInt32(AllProfile[6]); ogrenciProfil.P7 = Convert.ToInt32(AllProfile[7]);; ogrenciProfil.P8 = Convert.ToInt32(AllProfile[8]); ogrenciProfil.P9 = Convert.ToInt32(AllProfile[9]); ogrenciProfil.P10 = Convert.ToInt32(AllProfile[10]); ogrenciProfil.P11 = Convert.ToInt32(AllProfile[11]); ogrenciProfil.P12 = Convert.ToInt32(AllProfile[12]); ogrenciProfil.P13 = Convert.ToInt32(AllProfile[13]); ogrenciProfil.P14 = Convert.ToInt32(AllProfile[14]); ogrenciProfil.P15 = Convert.ToInt32(AllProfile[15]); OgrenciProfil.AddProfileStudent(ogrenciProfil); } dataGridView2.DataSource = OgrenciProfil.GetProfileStudent(); } }