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