BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C örnek kodlar > c_ornek00038

C örnek kodlar

Global karakter dizileri ile oluşturulmuş 25 kapasiteli kayıt sistemi

Program, global karakter dizileri ile oluşturulmuş 25 kapasiteli personel kayıt sistemi oluşturmamızı sağlar. Kişiler hakkında bilgi girme, bilgi okuma ve arama seçenekleri sunar.


#include <stdio.h>
#include <conio.h>
#include <string.h>

#define BOYUT 25

int fonk1(void);               /* Menü seçeneği belirleme       */
void fonk2(void);              /* Bilgi girişi                  */
void fonk3(void);              /* İsme göre arama               */
void fonk4(void);              /* Soyadına göre arama           */
void fonk5(void);              /* Memleketine göre arama        */
void fonk6(int id1, int id2);  /* Bilgileri ekranda gösterme    */
void fonk7(void);              /* Bütün kayıtların listelenmesi */

void bg_fgets(char *cp, unsigned int sz);
unsigned int bg_strlen(const char *str);

char gcdizi1[BOYUT][20];       /* İsim      */
char gcdizi2[BOYUT][20];       /* Soyadı    */
char gcdizi3[BOYUT][20];       /* Memleketi */
char gcdizi4[BOYUT][20];       /* Tahsili   */

int igd = 0;                   /* Son kayıt */

int main(void)
{
  int id;

  for ( ; ; ) {
       printf("\n");
       id = fonk1();

       if (id==6) break;

       switch (id) {
          case 1 : fonk2();  /* Kayıt girişi */
             break;
          case 2 : fonk3();  /* İsme göre arama */
             break;
          case 3 : fonk4();  /* Soyadına göre arama */
             break;
          case 4 : fonk5();  /* Memleketine göre arama */
             break;
          case 5 : fonk7();  /* Bütün kayıtların listelenmesi */
       }
  }

  return 0;
}

/* Bir menü seçeneği seçmenizi sağlar. */
int fonk1(void)
{
  int id;

  printf("[1]. Kayıt girişi\n");
  printf("[2]. İsme göre arama\n");
  printf("[3]. Soyadına göre arama\n");
  printf("[4]. Memleketine göre arama\n");
  printf("[5]. Bütün kayıtların listelenmesi\n");
  printf("[6]. Çıkış\n");

  do {
     printf("\nSeçeneğinizi giriniz [1-6]: ");
     id = getche()-'0';
     printf("\n");
  } while (id<1 || id>6);

  return id;
}

/* Veritabanına bilgi girişi */
void fonk2(void)
{
  int id;

  for (id=igd; id<BOYUT; id++) {
       printf("İsmi (Çıkış için Enter tuşuna basınız):");
       bg_fgets(gcdizi1[id], 20);
       if (!*gcdizi1[id]) break;
       printf("Soyadı: ");
       bg_fgets(gcdizi2[id], 20);
       printf("Memleketi: ");
       bg_fgets(gcdizi3[id], 20);
       printf("Tahsili: ");
       bg_fgets(gcdizi4[id], 20);
  }
  igd = id;
}

/* İsme göre arama */
void fonk3(void)
{
  char cdizi[20];
  int id1, id2;

  printf("Aradığınız şahsın ismini giriniz: ");
  bg_fgets(cdizi, 20);
  id2 = 0;

  for (id1=0; id1<igd; id1++) {
       if (!strcmp (cdizi, gcdizi1[id1])) {
           fonk6 (id1, id2);
           id2 = 1;
           printf("\n");
       }
  }
  if (!id2) printf("Bulunamadı!\n");
}

/* Soyadına göre arama */
void fonk4(void)
{
  char cdizi[20];
  int id1, id2;

  printf("Aradığınız şahsın soyadını giriniz: ");
  bg_fgets(cdizi, 20);
  id2 = 0;

  for (id1=0; id1<igd; id1++) {
      if (!strcmp (cdizi, gcdizi2[id1])) {
          fonk6 (id1, id2);
          id2 = 1;
          printf("\n");
      }
  }
  if (!id2) printf("Bulunamadı!\n");
}

/* Memleketine göre arama */
void fonk5(void)
{
  char cdizi[20];
  int id1, id2;

  printf("Aradığınız şahsın memleketini giriniz: ");
  bg_fgets(cdizi, 20);
  id2 = 0;

  for (id1=0; id1<igd; id1++) {
       if (!strcmp (cdizi, gcdizi3[id1])) {
           fonk6 (id1, id2);
           id2=1;
           printf("\n");
       }
  }
  if (!id2) printf("Bulunamadı!\n");
}

/* Bilgileri ekranda gösterme */
void fonk6(int id1, int id2)
{
  if (!id2) {
      printf("\n%-20s%-20s%-20s%-20s\n", "ADI", "SOYADI", "MEMLEKETİ", "TAHSİLİ");
  }

  printf("%-20s%-20s%-20s%-20s", gcdizi1[id1], gcdizi2[id1], gcdizi3[id1], gcdizi4[id1]);
}

/* Bütün kayıtların listelenmesi */
void fonk7(void)
{
  int id=0;

  printf("\n%-20s%-20s%-20s%-20s\n", "ADI", "SOYADI", "MEMLEKETİ", "TAHSİLİ");

  do {
     printf("%-20s%-20s%-20s%-20s\n", gcdizi1[id], gcdizi2[id], gcdizi3[id], gcdizi4[id]);
     id++;
  } while (*gcdizi1[id]);
}

void bg_fgets(char *cp, unsigned int sz)
{
  unsigned int len;

  fgets(cp, 20, stdin);
  len = bg_strlen(cp); // cdizi dizisine aktarılan karakter sayısı

  // Eğer girilen karakter sayısı dizi boyutunun bir eksiğinden az ise
  // giriş yapılan karakterlerin sonuna eklenen '\n' (10) karakteri yerine '\0' karakteri konur.
  if (len<sz) *(cp+len) = '\0'; // Dizide yer alan '\n' karakterini devre dışı bırakmak için
}

unsigned int bg_strlen(const char *str)
{
  const char *s;
  for (s = str; *s && *s!='\n'; ++s);

  return(s - str);
}