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

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

C örnek kodlar

Metin dosyasına kayıt yöntemiyle oluşturulmuş 50 kapasiteli veri kayıt sistemi

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


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

#define BOYUT 50

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 fonk8(void);              /* Dosyaya kaydetme              */
void fonk9(void);              /* Dosyadan yükleme              */

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

char cgdizi1[BOYUT][20];       /* İsim      */
char cgdizi2[BOYUT][20];       /* Soyadı    */
char cgdizi3[BOYUT][20];       /* Memleketi */
char cgdizi4[BOYUT][20];       /* Tahsili   */

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

int main(void)
{
  int id;

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

     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 */
           break;
        case 6 : fonk8();  /* Dosyaya kaydetme */
           break;
        case 7 : fonk9();  /* Dosyadan yükleme */
           break;
     }
  } while (id!=8);
}

/* 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]. Kayıtların dosyaya kaydedilmesi\n");
  printf("[7]. Kayıtların dosyadan yüklenmesi\n");
  printf("[8]. Çıkış\n");

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

  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(cgdizi1[id], 20);
       if (!*cgdizi1[id]) break;
       printf("Soyadı: ");
       bg_fgets(cgdizi2[id], 20);
       printf("Memleketi: ");
       bg_fgets(cgdizi3[id], 20);
       printf("Tahsili: ");
       bg_fgets(cgdizi4[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, cgdizi1[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, cgdizi2[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, cgdizi3[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", cgdizi1[id1], cgdizi2[id1], cgdizi3[id1], cgdizi4[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", cgdizi1[id], cgdizi2[id], cgdizi3[id], cgdizi4[id]);
     id++;
  } while (*cgdizi1[id]);
}

/* Kayıtların dosyaya kaydedilmesi */
void fonk8(void)
{
  FILE *fp;
  int id;

  if ((fp=fopen ("veri.txt", "w")) == NULL) {
      printf("Dosya açılamadı!\n");
      exit(1);
  }

  for (id=0; id<igd; id++)
       fprintf(fp, "%s %s %s %s\n", cgdizi1[id], cgdizi2[id], cgdizi3[id], cgdizi4[id]);

  fclose (fp);
}

/* Kayıtların dosyadan yüklenmesi */
void fonk9(void)
{
  FILE *fp;

  if ((fp=fopen ("veri.txt", "r")) == NULL) {
      printf("Dosya açılamadı!\n");
      exit(1);
  }
  igd = 0;
  while (!feof(fp)) {
     fscanf(fp,"%s%s%s%s", cgdizi1[igd], cgdizi2[igd], cgdizi3[igd], cgdizi4[igd]);
     igd++;
  }
  fclose (fp);
}

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);
}