Kadın Programı // C

Başlatan sem, 21 Haziran 2010 - 17:38:31

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

sem

Ya  kullanım olarak ya da kod örneği olarak birilerinin işine yararsa diye paylaşıyorum. Kadınlar içindir.


#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>

void yeniisim(char isim[20], char soyisim[20]);
void yeni (void);
void eski (void);
void degistir(char isim[40]);
void goster(char isim[40]);
void kontrol(char isim[40]);
void donemigoster(int *periyot, int *kacgun, int *gun, int *ay, int *yil, char isim[50]);

typedef struct _kisi{
                    int gun,ay,yil,periyot,kacgun;
                    char isim[40];
                    char sisim[20];
                    }kisi_bil;

void kaydet(kisi_bil kisibilgileri);

int main()
{
   int secim;

   while(1)
   {
      system("clear");
      fprintf(stdout,"1-)Kayıtlı kişi\n2-)Yeni kayıt\n3-)Cıkış\n\nSeçiminiz:");
      fscanf(stdin,"%d",&secim);
      if(secim == 1)
      {
           eski();
           continue;
      }
      if(secim == 2)
      {
          yeni();
          continue;
      }
      if(secim == 3)
      {
         exit(0);
      }
      else
      {
         fprintf(stdout,"Yanlış seçim\n");
         sleep(1);
      }
   }

}


void yeni (void)
{
   char secim,ch;
   int k;
   kisi_bil kisi;
git:
   fprintf(stdout,"İsim ve soyisim:");
   getchar();
   fgets(kisi.isim,41,stdin);

   k = strlen(kisi.isim);
   kisi.isim[k-1] = '\0';

   if((access(kisi.isim, 2)) == 0)
   {
      fprintf(stdout,"Bu isim kullanılmakta. Aynı isim, bir önceki isim silinerek kullanılsın mı? [e/h]");
while ((ch = getchar()) != '\n' && ch != EOF);
      secim = getchar();
      if(secim == 'e')
      {
         kaydet(kisi);
      }
      else
      {
         goto git;
      }

   }
   else
   {
      kaydet(kisi);
   }

}

void kaydet(kisi_bil kisibilgileri)
{
   FILE *bilgiler;
   if((bilgiler = fopen(kisibilgileri.isim,"w")) == NULL)
   {
      fprintf(stdout,"%s dosyası oluşturulamadı\n",kisibilgileri.isim);
      perror("fopen");
      exit(EXIT_FAILURE);
   }
   else
   {
      fprintf(stdout,"Regl Periyodunuz:");
      fscanf(stdin,"%d",&kisibilgileri.periyot);
      fprintf(stdout,"Bir dönem kaç gün sürüyor:");
      fscanf(stdin,"%d",&kisibilgileri.kacgun);
      fprintf(stdout,"En son regl olduğunu tarih(gg aa yyyy):");
      fscanf(stdin,"%d%d%d",&kisibilgileri.gun, &kisibilgileri.ay, &kisibilgileri.yil);

      fprintf(bilgiler,"%d\n%d\n%d %d %d",kisibilgileri.periyot, kisibilgileri.kacgun, kisibilgileri.gun, kisibilgileri.ay, kisibilgileri.yil);
   }
   fclose(bilgiler);
}


void eski (void)
{
   char isim[40];
   int secim,k;
oraya:
while (getchar() != '\n');
   fprintf(stdout,"İsim ve soy isim:");
   fgets(isim,41,stdin);
   k = strlen(isim);
   isim[k -1] = '\0';
   if((access(isim,2)) != 0)
   {
      fprintf(stdout,"Böyle birisi kayıtlı değil. İsmi kontrol edip tekrar deneyin.\n\n");
      goto oraya;
   }
   while(1)
   {
      system("clear");
      fprintf(stdout,"1-)Kontrol\n2-)Hesap Bilgileri\n3-)Bilgilerde değişiklik\n4-)Ana menü\n5-)Çıkış\n\n\nSeçiminiz:");
      fscanf(stdin,"%d",&secim);
      if(secim == 1)
      {
         kontrol(isim);
         continue;
      }
      if(secim == 2)
      {
         goster(isim);
         continue;
      }
      if(secim == 3)
      {
         degistir(isim);
         continue;
      }
      if(secim == 4)
      {
         main();
      }
      if(secim == 5)
      {
         exit(0);
      }
      else
      {
         fprintf(stdout,"Yanlış seçim...\n");
         sleep(1);
      }
   }

}


void goster (char isim[40])
{

   FILE *bilgiler;
   int periyot,kacgun, gun, ay, yil;

      if((bilgiler = fopen(isim,"r")) == NULL)
      {
         fprintf(stdout,"%s dosyası acilamadi...\n",isim);
      }
      else
      {
         fscanf(bilgiler,"%d",&periyot);
         fscanf(bilgiler,"%d",&kacgun);
         fscanf(bilgiler,"%d",&gun);
         fscanf(bilgiler,"%d",&ay);
         fscanf(bilgiler,"%d",&yil);
         fprintf(stdout,"Periyodunuz   : %d\nDönem Süreniz : %d\nEn son dönem  : %d/%d/%d\n\n\nMenüye dönmek için enter'a basın...\n",periyot, kacgun, gun, ay, yil);
         getchar();
         getchar();
      }
   fclose(bilgiler);

}




void degistir (char isim[40])
{
   FILE * bilgiler;
   int periyot, kacgun, gun, ay, yil,secim;

      if((bilgiler = fopen(isim,"a+")) == NULL)
      {
         fprintf(stdout,"%s dosyası acilamadi...\n", isim);
         perror("fopen");
         exit(EXIT_FAILURE);
      }
      else
      {
         fscanf(bilgiler,"%d",&periyot);
         fscanf(bilgiler,"%d",&kacgun);
         fscanf(bilgiler,"%d",&gun);
         fscanf(bilgiler,"%d",&ay);
         fscanf(bilgiler,"%d",&yil);
         while(1)
         {
            fprintf(stdout,"1-)Periyodunuz   : %d\n2-)Dönem Süreniz : %d\n3-)En son dönem  : %d/%d/%d\n\n\nDeğişiklik yapmak istediğiniz yerin numarasını girin (Çıkış için 4):",periyot, kacgun, gun, ay, yil);

            fscanf(stdin,"%d",&secim);
            if(secim == 1)
            {
               fprintf(stdout,"Yeni periyot:");
               fscanf(stdin,"%d",&periyot);
               continue;
            }
            if(secim == 2)
            {
               fprintf(stdout,"Yeni dönem süresi:");
               fscanf(stdin,"%d",&kacgun);
               continue;
            }
            if(secim == 3)
            {
               fprintf(stdout,"Yeni dönem (gg aa yyyy):");
               fscanf(stdin,"%d%d%d",&gun, &ay, &yil);
               continue;
            }
            if(secim == 4)
            {
               break;
            }
            else
            {
               fprintf(stdout,"Yanlış seçim...\n");
            }
         }
         fclose(bilgiler);
         if((bilgiler = fopen(isim,"w")) == NULL)
         {
            fprintf(stdout,"Bilgiler güncellenirken %s dosyası açılamadı...\n", isim);
            perror("fopen");
            exit(EXIT_FAILURE);
         }
         else
         {
            fprintf(bilgiler,"%d\n%d\n%d %d %d",periyot, kacgun, gun, ay, yil);
            fclose(bilgiler);
         }
      }
      fprintf(stdout,"Menüye Dönülüyor...\n");
      sleep(1);

}


void kontrol (char isim[40])
{
     FILE *bilgiler;
     int ay,gun,yil,periyot,kacgun, k;

         if((bilgiler = fopen(isim, "a+")) == NULL)
         {
            fprintf(stdout,"%s dosyası açılamadı...\n",isim);
         }
         else
         {
            fscanf(bilgiler,"%d",&periyot);
            fscanf(bilgiler,"%d",&kacgun);
            fscanf(bilgiler,"%d",&gun);
            fscanf(bilgiler,"%d",&ay);
            fscanf(bilgiler,"%d",&yil);
            fclose(bilgiler);

               donemigoster(&periyot, &kacgun, &gun, &ay, &yil, isim);
         }

}




void donemigoster(int *periyot, int *kacgun, int *gun, int *ay, int *yil, char isim[50])
{
   int k,i;
   char secim;
   int ay2,ay3,gun2,gun3,yil2,yil3,periyot2,kacgun2;

   char *gunler[] = {"Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"};
   long t;
   struct tm *tarih_bilgileri;

   periyot2 = *periyot;
   kacgun2 = *kacgun;
   gun2 = *gun;
   ay2  = *ay;
   yil2 = *yil;
   gun3 = gun2;
   ay3  = ay2;
   yil3 = yil2;


   for(i = 1; ; ++i)
   {
      gun2 += periyot2;
      system("clear");
      fprintf(stdout,"%02d:%02d:%04d    Tarihinden Sonraki    %d. Dönem\n-----------------------------------------------------\n",gun3, ay3, yil3, i);
      for(k = 1; k != kacgun2+1; ++k)
      {
         if(ay2 == 1 || ay2 == 3 || ay2 == 5 || ay2 == 7 || ay2 == 8 || ay2 == 10 || ay2 == 12)
         {
            if(gun2 > 31)
            {
               gun2 %= 31;
               ay2 += 1;
               goto SON;
            }

         }
         if(ay2 == 4 || ay2 == 6 || ay2 == 9 || ay2 == 11 )
         {
            if(gun2 > 30)
            {
               gun2 %= 30;
               ay2  += 1;
               goto SON;
            }
         }
         if(ay2 == 2)
         {
            if((yil2 % 4) == 0 )
            {
               if(gun2 > 29)
               {
                  gun2 %= 29;
                  ay2  += 1;
               }
            }
            else
            {
               if(gun2 > 28)
               {
                  gun2 %= 28;
                  ay2 +=  1;
               }
            }
         }
SON:
         if(ay2 > 12)
         {
            ay2 %= 12;
            yil2 += 1;
         }
         if(k == 1)
         {
            *gun = gun2;
            *ay  = ay2;
            *yil = yil2;
         }
         t = time(NULL);
         tarih_bilgileri = localtime(&t);
         tarih_bilgileri->tm_year = yil2 - 1900;
         tarih_bilgileri->tm_mon = ay2 -1;
         tarih_bilgileri->tm_mday = gun2;
         mktime(tarih_bilgileri);
         fprintf(stdout,"%d.Gün----->>>%02d:%02d:%04d          %s\n",k,gun2,ay2,yil2,gunler[tarih_bilgileri->tm_wday]);
         gun2 += 1;

      }
      gun2 = *gun;
      ay2  = *ay;
      yil2 = *yil;
      if(i == 1)
      {
         getchar();
      }
      fprintf(stdout,"\n\n\n\nBir sonraki dönem için enter'a\nÇıkmak için 'c'ye basın\nSecim:");
      secim = getchar();
      if(secim == 'c')
      {
         break;
      }
      else
      {
         continue;
      }
   }
}


void yeniisim(char isim[20], char soyisim[20])
{
   int k;
   k = strlen(isim);
   isim[k]   = ' ';
   isim[k+1] = '\0';
   strcat(isim,soyisim);
   k = strlen(isim);
   isim[k] = '\0';

}
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

heartsmagic

Elien sağlık @sem0900, her geçen gün forumda farklı kod örnekleri paylaşılmaya başlandı. Gayet güzel bir hareketlilik var kısacası :)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

ironic

@sem, birilerinin işine elbet yarayacaktır. Güzel bir uygulama olmuş. Teşekkürler.

sem

@heartsmagic, @ironic teşekkür ederim ikinize de.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

sema

Ellerine sağlık @sem, son eklediğin kodları çalıştırma imkânı bulamadım geçen iki günde, yarın deneyeceğim hepsini. Diğer konuya gelen yorumlara bakılırsa da eğlenceli bir program olmuş.  Ellerine sağlık tekrar.
susema

ubuntuki lilith

#5
Faydalı bir program olmuş lakin 2. seçip yeni kayıt girişi yaparken
Alıntı YapBöyle birisi kayıtlı değil. İsmi kontrol edip tekrar deneyin.
uyarısı veriyor ve yeni kayıt bu nedenle yapılamıyor ya da ben beceremedim.
Hatta 3 ile çıkış yapmak istediğimde de gene isim soyisim soruyor...

sem

İki farklı bilgisayardan deniyorum, ikisinde de bir hata almadım. Siz derleme sırasında ("gcc dosyaismi.c -o program" aşamasında) bir hata ya da uyarı aldınız mı?
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

ubuntuki lilith

Oluşturduğum program klasörü açık kalmış sanırım bu nedenle çalışırken hata verdi. Klasörü kapatıp tekrar deneyince çalıştı. Sorun yok yani.

sem

Aslında o şekilde de bir sorun olmaması lazım. Neden sorun oldu neden çözüldü anlamadım... Sizden ya da sistem ile alakalı bir durum mu oldu bilemiyorum. Fakat bazı kontrolleri yapmamıştım(gerek görmediğim için), bu kontroller; mesela gün istenen yere alfabetik bir şey yazılması gibi yani aslında olmaması gereken şeyleri konrtrol etmemiştim. Bu durumda program kararsız çalışmaya başlayacaktır fakat zaten nasılsa yapılmaz diye gerek görmemiştim.  Aynı hatayı yaşayan olursa tekrardan gözden geçericeğim programı. Sorun kendliğinden çözüldüğü için gerek yok sanırım kod kontrolüne... Herhangi bir sorun yaşayan arkadaşlar geri dönerse, tamamı ile sorunsuz çalışan program yapabiliriz. Ya da deneyen olursa çalışıyor diye dönerse de sorunun kodda mı, anlık bir şey mi olduğunu, nerden kaynaklandığını daha rahat anlarız.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

eribol

@sem0900, eline sağlık güzel güzel çalışıyor. Programı kontrol ettim 2 kayıt yaptım sonra kontrol ettim herhangi bir sorunla karşılaşmadım. Ayrıca Kayıt ararken biraz daha geniş düşünülebilir. Ad ve soyad büyük küçük harfe duyarlı olmasa daha iyi olur mesela. Hatta yapılabilirse sadece Ad veya sadece soyad ile arama da yapılabilir.

sem

@eribol, aslında isim ve soyisim sorma karışıklık olabilecek durumlarda kullanılabilir diye düşündüm, yoksa sadece isim ya da sadece soyisim ile de kayıt oluşturulabiliyor. Ama adı X soyadı Y olan birisi ile adı A soyadı Y olan birisi aynı anda kayıt yaparsa, sadece soyada göre arama sıkıntı yaratacaktır. Ya da tam tersi isimleri aynı soyadları farklı olanlar da sadece isim ile yapılan arama da sıkıntı yaratacaktır. Fakat dediğim gibi örneğin iki kişi kullanacaksa programı herhangi bir karışıklık olmayacağı için birisi "a" diğeri "b" olarak bile kayıt yapabilirler. Ayrıca çok teşekkür ederim geri dönüşün için...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

eribol

O sebeplen yapılabilirse dedim. Çünkü arama yapılırken listeleme yapması daha havalı olur :) Ayşe ismindeki kayıtları listeler ve seçime zorlar. Tek kayıt varsa direk onu açar gibi. Ama karışık olur böyle durumda tabii. En kısayolu bir id girişi sağlamak olur ve arama bu id ile yapılır(kimlik no gibi).

sem

Aynen dediğin gibi, en kısayol aslında ID bence de. Aslında benim de aklıma ilk önce direk her isme bir ID atayarak onu bir dosyada tutmak geldi. Fakat daha sonra "en fazla kullanıcı sayısı"nı göz önünde alarak isme yöneldim tekrar. Fakat dediğine katılıyorum, gerek olduğu zaman bir ID ataması ile bütün karışıklıkların önüne geçilebilir.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?