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