Bilet satış projesi

Yazar : zafer 18. Aralık 2008 21:27

Merhabalar, bir süredir yeni yazılar ekleyememiştim. Bayram tatili, tatil dönüşü derken zaman geçti gitti. Bir süredir Deitel'in kitabının üzerinden C çalışmalarıma devam ediyorum. Oldukça güzel alıştırma soruları var. Eğer C diline yeni başlamışsanız kitabı alıp incelemenizi veya bir şekilde bu sorulara ulaşıp gözden geçirmenizi salık veririm.

Bu sorulardan biriside bir havayolu şirketine ait bilet satış uygulaması geliştirmek. Şu an soruyu tam hatırlamıyorum ama kısaca uçak iki bölümden oluşuyor, sigara içilen ve içilmeyen bölüm, gelen yolcuya ilgili bölüm seçiminden sonra o bölümden bir koltuk veriliyor. Eğer o bölüm dolmuşsa yolcuya diğer bölümden bilet isteyip istemediği soruluyor ve cevap evet ise diğer bölümden boş bir koltuk veriliyor.

Proje kodları aşağıda ancak CodeBlocks ile çalışanlar için bir ekstra daha var. CodeBlocks proje dosyasınıda ekte yayınlıyorum. Bu sayade sadece CodeBlocks içinden project dosyasını açarak tüm projeye ulaşmış olucaksınız.

CodeBlocks Proje Dosyası : THY_Project.zip (12,08 kb)

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

#define KOLTUK_SAYISI 10

int KoltukSat(int dizi[], int boyut, int sigara);
int BosKoltukVerSigaraVar(int dizi[], int boyut);
int BosKoltukVerSigaraYok(int dizi[], int boyut);
void DiziYazdir(int dizi[], int boyut);

int main()
{
    int koltuklar[KOLTUK_SAYISI] = {0};
    int sigaraSec, koltukNo;

    while(sigaraSec != 0)
    {
        printf("THY Bilet Satis Bolumu!\n");
        printf("Lutfen sigara opsiyonunu seciniz\n\n");

        printf("1-Sigara icilen bolum\n");
        printf("2-Sigara icilmeyen bolum\n");
        printf("Seciminiz[1/2] : ");
        scanf("%d", &sigaraSec);
        system("CLS");

        if((sigaraSec != 1) && (sigaraSec != 2)) continue;

        koltukNo = KoltukSat(koltuklar, KOLTUK_SAYISI, sigaraSec);

        if(koltukNo == -1)
            printf("\n\nUzgunuz! Istediginiz seferde bos koltuk kalmadi.\n\n");
        else
            printf("\n\nRezervasyonunuz yapildi. Koltuk numaraniz %2d olarak belirlendi.\n\n", koltukNo);

        system("PAUSE");
        system("CLS");

    }

    DiziYazdir(koltuklar, KOLTUK_SAYISI);

    return 0;
}

int BosKoltukVerSigaraYok(int dizi[], int boyut)
{
    int i;

    for(i=(KOLTUK_SAYISI / 2); i<boyut; i++)
    {
        if(dizi[i] == 0)
            return i;
    }

    return -1;
}

int BosKoltukVerSigaraVar(int dizi[], int boyut)
{
    int i;

    for(i=0; i<boyut; i++)
    {
        if(dizi[i] == 0)
            return i;
    }

    return -1;
}

int KoltukSat(int dizi[], int boyut, int sigara)
{
    int bosKoltuk;
    char baskaKoltukBak;

    switch(sigara)
    {
        case 1:
            bosKoltuk = BosKoltukVerSigaraVar(dizi, 5);
            if(bosKoltuk == -1)
            {
                printf("\n\nSigara icilen bolum doldu. Diger bolume bakilsin mi? [E/H]..>");
                scanf(" %c", &baskaKoltukBak);

                if((baskaKoltukBak == 'e') || (baskaKoltukBak == 'E'))
                    bosKoltuk = BosKoltukVerSigaraYok(dizi, boyut);
            }
            if(bosKoltuk != -1) dizi[bosKoltuk] = 1; /* Koltuk satildi isaretle */
            break;
        case 2:
            bosKoltuk = BosKoltukVerSigaraYok(dizi, boyut);
            if(bosKoltuk == -1)
            {
                printf("\n\nSigara icilmeyen bolum doldu. Diger bolume bakilsin mi? [E/H]..>");
                scanf(" %c", &baskaKoltukBak);

                if((baskaKoltukBak == 'e') || (baskaKoltukBak == 'E'))
                    bosKoltuk = BosKoltukVerSigaraVar(dizi, 5);
            }
            if(bosKoltuk != -1) dizi[bosKoltuk] = 1; /* Koltuk satildi isaretle */
            break;
        default:
            printf("Lutfen gecerli bir secim yapiniz!\n\n");
    }

    return bosKoltuk;
}

void DiziYazdir(int dizi[], int boyut)
{
    int satir;

    for(satir=0; satir<boyut; satir++)
    {
        printf("%2d", dizi[satir]);
    }
}

Tags: , ,

C Notları

Yorum ekle




  Country flag
biuquote
  • Yorum
  • Canlı önizleme
Loading


Zafer Günlükleri © 2008 - 2012 Zafer'in kişisel paylaşım sitesi.
BlogEngine.NET 2.0.0.36 | Tema : Mads Kristensen | Düzenleyen : Zafer Çelenk
Oturum Aç | APML ile filtrele

Anket

D dilini duydunuz mu?




Sonuçlar

Projeler

Galeri

Takvim

<<  Mayıs 2012  >>
PaSaÇaPeCuCuPa
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

Yazıları takvimde göster

Satranç

I play chess at Chess.com!

Son Yorumlar

Comment RSS

Yasal Uyarı

Bu site görüşlerin paylaşıldığı kişisel bir blogdur. Site içeriğinden meydana gelebilecek sorunlardan site sahibi sorumlu değildir. Yorumlar site sahibi tarafından onaylandıktan sonra yayınlanacaktır.