C Bağlı Liste ile Bankalardaki Kuyruk Sistemi Tasarımı

Categories CPosted on

C Bağlı Listeler yardımı ile bankalarda yer alan kuyruk sistemi yapılabilir. Bankalarda yer alan kuyruk sistemine göre kullanıcıların öncelikleri bulunmaktadır. Ve müşteriler buna göre çağrılmaktadır. Kod ve detaylar aşağıda belirtilmiştir.

Bağlı Liste ile bankalardaki kuyruk sistemini tasarlamak

Sistem ilk aşamada kullanıcıdan istediği seçeneği seçmesini istemektedir. Kullanıcı yeni kişi ekleyebilir, sıradaki müşteriyi çağırabilir, kalan müşterileri görebilir veya çıkış yapabilir. Yukarıda belirtildiği amaca uygun tasarlanmıştır.

Müşteri ekleme aşamasında önceliği belirtebilirsiniz.

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>    
#include<string.h>
 
struct banka 
{
    char isim[30],soyad[30];
    int oncelik;
    struct banka *next;
    
}*front, *rear, *temp;

void goruntule()
{
    int i;
    if(front==NULL)
    {
        printf("\nKuyruk Su Anda Bos !");
        return;
    }
    struct banka *der=front;
    printf("\nSirada Bekleyen Dusteriler:\n\n");
   
    while(der!=NULL)
    {
        printf("\n\nOncelik Numarasi:\t%d",der->oncelik);
        printf("\n\n\tAdi:\t%s",der->isim);
        printf("\n\n\tSoyadi:\t%s",der->soyad);
        der=der->next;
    }
   
    printf("\n\n");  
    printf("-----------------------------------------------");
}

    
void bank(int oncelik,char *isim,char *soyad)
{   
    struct banka* newNode=(struct banka*)malloc(sizeof(struct banka));
    newNode->oncelik=oncelik;
    
    
    strcpy(newNode->isim,isim);
    strcpy(newNode->soyad,soyad);
    

    newNode->next=NULL;
    
    struct banka *prevTemp;
    if(front==NULL)
        front=rear=temp=newNode;
        else if(newNode->oncelik>=rear->oncelik)
        {
            rear->next=newNode;
            rear=newNode;
            return;
        }
            else if(newNode->oncelik>temp->oncelik)
        {
            while(1)
            {
                temp=temp->next;
                if(prevTemp->oncelik<newNode->oncelik&&temp->oncelik>newNode->oncelik)
                {
                    prevTemp->next=newNode;
                    newNode->next=temp;
                    temp=prevTemp=front;
                    break;
                }
                else if(prevTemp->oncelik<newNode->oncelik&&temp->oncelik==newNode->oncelik)
                {
                    while(temp->oncelik==newNode->oncelik)
                    {
                        prevTemp=temp;
                        temp=temp->next;
                    }
                    prevTemp->next=newNode;
                    newNode->next=temp;
                    break;
                }
                else
                prevTemp=temp;
            }
            temp=prevTemp=front;
        }        
        else if(newNode->oncelik<temp->oncelik)
        {
            newNode->next=front;
            front=temp=newNode;
            return;
        }
        else if(newNode->oncelik==temp->oncelik)
        {
            while(newNode->oncelik==temp->oncelik)
            {
                prevTemp=temp;
                temp=temp->next;
            }
            prevTemp->next=newNode;
            newNode->next=temp;                                                                            
            temp=prevTemp=front;
            return;
        }
}

     
void musteri_giris()
{
    if(front==NULL)
    {
    printf("Baska Musteri Yok!\n");
    return;
    }
    else
    {
        struct banka *temp=front;
        front=front->next;
        printf("\nSiradaki Musteri = \n\n\n\n");
        printf("\tOncelik Degeri:\t%d",temp->oncelik);
        printf("\n\tAdi:\t\t\t%s",temp->isim);
        printf("\n\tSoyadi:\t\t\t%s",temp->soyad);
        free(temp);
    }
}
     

    
int main()
{
    int sec, oncelik;
    char isim[20],soyad[20];
    front=rear=NULL;
 // 	printf("Oncelik Siralamasi : 0 > 1 > 2 > 3 > 4");
    do
    {
        printf("\n 1. Yeni Musteri Kayit");
        printf("\n 2. Siradaki Musteriyi Iste");
        printf("\n 3. Kalan Musteriler");
        printf("\n 4. Cikis");
     
        printf("\n Lutfen Seciminizi Yapiniz :");
        scanf("%d",&sec);
        printf("\n\n\n");
     
        switch(sec)
        {
            case 1:
                printf("0-)En Yuksek Oncelik \n");
                printf("1-)Yuksek Oncelik\n");
                printf("2-)Orta Oncelik\n");
                printf("3-)Dusuk Oncelik\n");
                
                printf("\nLutfen islem yapmak icin oncelik sirasini seciniz : ");
            	    scanf("%d",&oncelik);
                
                printf("Kullanici Adi: ");
                	scanf("%s",isim);
                
                printf("\nKullanici Soyadi: ");
                	scanf("%s",soyad);
 
                bank(oncelik,isim,soyad);
                goruntule();
                break;
                
			case 2:
                musteri_giris();
                break;
            case 3:
                goruntule();
                break;
            case 4:
                printf("Tesekkurler, Isleminiz Sonlandirilmistir ...");
                getch();
             
        }
    }while(sec!=4);
}

C Banka kuyruk sistemi, C Bağlı listeler ile kuyruk sistemi, C Bağlı listelerde banka kuyruk sistemi gibi sorularınıza bu yazıda cevap bulabilirsiniz. Soru ve sorunlarınız için yorum yapabilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

This site uses Akismet to reduce spam. Learn how your comment data is processed.