randevu takvimi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
menderes

randevu takvimi

Mesaj gönderen menderes »

Herkese kolay gelsin...
Bir dershaneye öğrencilerle ilgili birebir çalışma için (öğretmen öğrenci)randevu takip programı yazmıştım. Programda, öğretmenlerin boş ve dolu saatlerini önceden her gün için tek tek giriyorlardı.TAbiki bu zor oluyordu ve bu işin daha pratik olmasını söylediler haklı olarak...

Kod: Tümünü seç


Öğretmen      SALI

....................09:00 -09:50 -10:40 -11:30 -13:30 -14:20 -17:00 -17:50
....................09:40 -10:30 -11:20 -12:10 -14:10 -15:00 -17:40 -18:30

Ahmet Dem...  boş   dolu  boş   boş   boş   dolu   dolu    dolu
 
 
Öğretmen - Gün ve Saatler ve bu saatlere göre boş dolu saatleri
Günler SALI,ÇARŞAMBA PERŞEMBE, vs. devam ediyor.
Amaç öğretmenin boş ve dolu saatlerinin girilmesi ve bu boş saatlerede öğrenciye randevu verilecek.....<br>
Benim yaptığımda tarih seçiliyor ve o tarihe saatler giriliyor saat girme esnasındada boş veya dolu olduğuda kayıt ediliyordu...<br>tabi bu her öğretmen için tek tek olacağı için zor oluyor....<br>
Düşündüm; dönem açayım ve bu döneme tarih ve saatleri bir kereye mahsus kullanıcı kayıt etsin.Fakat bu yöntemde 10 öğretmen olsa ki fazla olacak 10 öğretmen için 365 gün 3650 kayıt eder saatleride eklersek 3650x10 saat olsa 36500 kayıt eder. Bu sadece bir dönem için...
Sorum
Bu konuyu en pratik bir şekilde nasıl çözebilirim... Yardımcı olabilirseniz çok sevineceğim....Şimdiden Allah Razı olsun....Teşekkür ederim....
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Bu konu başlı başına bir matematik ve mühendislik konusu ve tam olarak çözüme ulaşabilen de henüz yok. Öğretmenlerin boş olduğu saatler, dersanenin boş olduğu saatler, dersin arka arkaya tekrarlanmaması gerekliliği, dersanenin verilecek derse uygun olması (ör. kimya lab.) vs. vs. gibi kısıt listesi uzadıkça çözüme ulaşmak o kadar güçleşiyor.

Bunun için Brute force ve heuristic yöntemler izleniyor.

Detaylar için bkz.

Time Planning, Time Scheduling
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Sorunu bir kez daha okuyunca yanlış anladığımı farkettim.

Sorununu şöyle çözebilirsin. Öğretmenin sadece Dolu saatini girdirirsen geriye kalanları boş olarak kabul edebilirsin.

Bunun için şöyle bir tablo yapısı tutulabilir.
OGRETMEN SAAT TARIH
Buraya dolu olduğu saatleri girdirir geri kalan saatleri de boş algılayabilirsin. Bu sayede giriş sayısı ve kayıt sayısı azalmış olacak.
menderes

Mesaj gönderen menderes »

dediğin gibi bir table daha önce oluşturmuştum. Hoca diyorki ben her sefer veri girmim. Mesela salı gününü gireyim bir daha salı günlerini girmiyeyim. Ancak değişiklik olursa düzelteyim..... Buna göre bir örnek alabilirmiyim....
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

sistemini tam olarak bilmiyorum ama o zaman gün bazında yapabilirsin.
yani OgretmenAdi - GUN - Saat gibi...
böylece ayın, her o gününde hocanın kayıtlarını sorgulayabilirsin..
DeveloperToolKit

..::|YeşilMavi|::..
menderes

Mesaj gönderen menderes »

Sistem şu an acces ama firebird olacak herhalde....Arkadaşlar bir örnek alabilirsem bana güzel bir fikir olabilir. Bir haftalık mı bir aylık mı bir dönemmi. Nasıl
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

Evet bu hususta bir çalışma yapacam yakında dah akapsamlı bir sey olacak ama suan kafamdakilerden bir kısımını sana söleyeyim....

Şimdi bizim sorunumuz su...öğretmenin dolu saatleri ve boş saatleri ..
ve bunları her gün girmek isyemiyor...bence sunu izlemek daha mantıklı...

bunu haftalık bir standart yapalım mesala
haftalar tablom olsun

haftalar tablomda olacak veriler...
alanlar

randevular tablosu
Randevuid ogretmeid saatilk saatson pazartesi sali carsamba persembe cuma cumartesi pazar
2 1 13:10:00 14:10:00 Evet Evet Evet Evet Hayır Hayır Hayır
3 2 13:10:00 14:10:00 Evet Evet Evet Evet Hayır Hayır Hayır

öğretmenler tablosu

ogretmenid ogretmenadi ogretmensoyadi ogretmenbrans ogretmenevtel ogretmengsm
1 TUANNA DELPHİTURKİYE SOFT DEVELOPER SANAL ALEM SANALALEM 2
2 UĞUR DELPHİTURKİYE SOFT DEVELOPER
bunun gibi bir sey olabilir ama bunu gelistirmek lazım bir fikir olsun diye yazdım...

yani her gün için işleme haftalık bir defaya mahsus al...değiştirmek isterlerse kendileri değiştirsinler sende veri tabanındaki bu kayıtar üzerinden işlem yaparsın ama veri tabanının yapısını biraz değiştirmen gerekecek sanırım
Siz hayal edin...Biz yapalım TuannaSoft...
menderes

Mesaj gönderen menderes »

tuanna derki:haftalar tablomda olacak veriler...
alanlar


Yaklaşım güzel oldu ama sorun bu haftaları nasıl oluşturabiliriz zaten o olsa sorun çözülecek gibi...Çünkü pazartesi,salı,çarşamba,perşembe,cuma,cumartesi,pazar bu günleri de tarihlemek gerekecek..... Biraz daha açabilirsek herhalde taş yerine oturacak....Çok teşekkür ederim....
İnanın forumun başında bekliyorum bir arkadaş yardımcı olur diye...Hepinize müteşekkirim...Allah razı olsun....
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

bu tek hafta olacak
yani bir den fazla hafta yapmana gerek yok...
güne bakacaksın...zaten onalrın takvimleri çok fazla değişmez...dğişirse hepsini değişecek ve mebcuren girmeleri lazım bak bu hususta çok profesyonellece bir sey yazacam ben biraz zamanın varsa beraber yapabiliriz...bir seyler...
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,

Bence ogretmen ile ilgili bilgilerin kaydedildiği bir tablo,

Kod: Tümünü seç


CREATE TABLE OGRETMEN_CARI (
    IDNO          INTEGER,
    OGRETMEN_ADI  VARCHAR(30)
);


ders hareketlerinin kaydedildiği bir tablo ,

Kod: Tümünü seç


CREATE TABLE OGRETMEN_DERSLER (
    DIDNO      INTEGER,
    MASTER_ID  INTEGER,
    PAZARTESI  VARCHAR(10),
    SALI       VARCHAR(10),
    CARSAMBA   VARCHAR(10),
    PERSEMBE   VARCHAR(10),
    CUMA       VARCHAR(10),
    SAAT       VARCHAR(10)
);


ve randevuların tutulduğu bir tablo olabilir.

Yukarıdaki ogretmen_cari ye
1 ali
2 veli
3 mehmet


ogretmen_derse
1 1 boş dolu boş dolu dolu boş 09:00 -09:40
1 1 dolu boş boş dolu dolu 09:50 - 10:40
.
.
.

şeklinde girilebilir. Randevu eklendiği zaman öğretmenin kartından bunlar okunup randevuya dolu boş olarak doldurulur.

Kolay gelsin.
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Randevu table ı için

Kod: Tümünü seç



CREATE TABLE RANDEVU (
    RIDNO   INTEGER,
    TARIH   DATE,
    OGR_ID  INTEGER,
    1_SAAT  VARCHAR(10),
    2_SAAT  VARCHAR(10),
    3_SAAT  VARCHAR(10),
    4_SAAT  VARCHAR(10),
    5_SAAT  VARCHAR(10)
);

gibi kullanabilirsin.
Veri olarak
1 15.10.2005 1 - ogr sait - - -

gibi girilebilir.

Kolay gelsin.

Kısaca özetlemem gerekirse öğretmen ekleme yaptığın zaman bir defaya mahsus olarak öğretmenin bir haftalık boş ve dolu derslerini giriyorsun.

randevuya gelince girilen tarihin hangi güne denk geleceğini bulacan (dayofweek) ondan sonra ogretmenin dersler tablosundan bu bilgiye göre gününü randevu table ına aktaracan adam da gerekli düzenlemeyi yapacak.

Kolay gelsin.
menderes

Mesaj gönderen menderes »

İlginize teşekkür ederim....
OGRETMEN_DERSLER tablesini dönem fieldi ekleyerek bir döneme kullandım. Yani bir senelik kayıt olmuş oldu....Bir öğretmen için...
Yalnız;
mesela SALI gününe randevu verirken salı gününün tarihini nasıl eşleştirecem onu düşünüyorum. Yani öğretmen kartından baktım salı günü 09:00-09:40 saati boş buraya öğrenci için randevu verecem, verecemde tarihi nasıl yazacam.....kullanıcının hata yapmaması için. verdiği tarih salı yerine çarşambaya denk gelen bir tarih olmaması lazım....
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Siz randevu tarihini 15.09.2005 olarak girdiğinizde programınız Perşembe günü olduğunu bilecek, öğretmeni de seçtiğinizde gidip o öğretmenin perşembe günün durumunu randevuya dolu boş olarak aktaracak. ve bir yere öğrenci girdikten sonra on exit olayı ile oranın boş olup olmadığını bir daha kontrol edeceksiniz.

İyi çalışmalar.
En son ofenX tarafından 27 Eyl 2005 05:54 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
menderes

Mesaj gönderen menderes »

Tekrar teşekkür ederim...
OGRETMEN_DERSLER tablesinde günü field olarak tanımladık. içine de veriyi boş ve dolu olarak girdik.Randevu tablesine saatleri field olarak tanımlayamıyorum çünkü saatler sabit değil....Neyse...
Ama sayenizde sonuca yaklaşıyorum.
Anlamadığım randevu verirken salı veya perşembe olduğunu tanımlamadan nasıl anlayacak? programa biz tanıtmazsak o fieldin salıya veya perşembeye ait olduğunu????????
tekrar teşekkür ederim.
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

menderes yazdı:
Anlamadığım randevu verirken salı veya perşembe olduğunu tanımlamadan nasıl anlayacak? programa biz tanıtmazsak o fieldin salıya veya perşembeye ait olduğunu????????
Örneğin randevu tarihine 15.09.2005 verdiğinizi düşünelim.

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
begin
        showmessage(inttostr(dayofweek(strtodate('15.09.2005'))));

end;

kodu bize 5 rakamını döndürür. Bu da perşembe gününe denk gelir.

Dayofweek fonksiyonu girilen tarihin gününü pazar 0,ptesi 1,.... c.tesi 7
olarak döndürür.

Günden sonra öğretmen de girilirse bir query ile ordan alırsın.
Ayrıca ogr_dersler deki saat kısmını aktardığın dblistbox in items kısmına sabit saat leri girersen bulman daha kolay olur.
Cevapla