C & Cpp

Küçük bir öğrenci-ders uygulamacığı:
 C++ da yazılmıştır.
coklu_liste.cpp 


#include<iostream>
#include<iomanip>
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include "fonksiyon.h"

using namespace std;
typedef struct Dosya Veriyapisi;
Veriyapisi dosya;
void menu(void);
int main(){
    int i,secim;
   
    char *dosyaadi[3] = {"eng101.txt","fiz101.txt","mat101.txt"};

    dosya.olustur();
    for(i=0;i<=2;i++)
    dosya.dosyadan_oku(dosyaadi[i]);


    menu();
    cin >> secim;
    while(secim!=9){
        switch(secim){
        case 1:
            dosya.ara();
            break;
        case 2:
            dosya.dersSil();
            break;
        case 3:
            dosya.ogrenciSil();
            break;
        case 4:
            dosya.listele();
            break;
        case 5:
            dosya.dosyayaYaz();
            cout << "cikti.txt adli dosyaya yazildi" << endl;
            break;
        case 6:
            dosya.kesisimBul();
            break;
        case 7:
            dosya.birlesimBul();
            break;
        case 8:
            dosya.farkBul();
            break;
        }
        menu();
        cin >> secim;
   
    }
   
   
    return EXIT_SUCCESS;
       
}
void menu(void){
  cout << "1 - Ara  " << endl;
  cout << "2 - Ders sil" << endl;
  cout << "3 - Ogrenci sil " << endl;
  cout << "4 - Listeyi göster "<< endl;
  cout << "5 - Dosyaya yaz " << endl;
  cout << "6 - Kesisim bul " << endl;
  cout << "7 - Birlesim bul "<< endl;
  cout << "8 - Fark bul "<< endl;
  cout << "9 - Cikis"<< endl;
}


dosyalama.cpp

#include<iostream>
#include<stdio.h>
#include<iomanip>
#include<conio.h>
#include<string.h>
#include<fstream>


#include "fonksiyon.h"

using namespace std;

void Dosya::dosyayaYaz(){
    struct Dosya_yaz{
        char on[Ogrenci_no_uzunluk];
        char isim[Ad_soyad_uzunluk];
        char soyisim[Ad_soyad_uzunluk];
        char crn[Ders_kodu_uzunluk];
        char course[Ders_adi_uzunluk];
    };
    Dosya_yaz save;
    ogrenciPtr ogrenciler;
    dersPtr dersler;
    if(!(okuldefteri=fopen("cikti.txt","w+"))){
        cerr << "Dosya acilamadi" << endl;
        return;
   
    }
    ogrenciler=bas;
    while(ogrenciler){
        dersler=ogrenciler->dersdugumu;
        while(dersler){
            strcpy(save.isim,ogrenciler->ad);
            strcpy(save.on,ogrenciler->ogrno);
            strcpy(save.soyisim,ogrenciler->soyad);
            strcpy(save.course,dersler->dersadi);
            strcpy(save.crn,dersler->derskodu);
            fprintf(okuldefteri,"%7s%s%-20s%s%-20s%10s%s%s%s%s",save.on,"\t",save.isim,"\t",save.soyisim,"\t",save.crn,"\t",save.course,"\n");
            dersler=dersler->sonraki;
        }
        ogrenciler=ogrenciler->sonraki;
    }
    fclose(okuldefteri);
}
void Dosya::olustur(){
  bas=NULL;
}
 ogrenciPtr Dosya::Dugum_olustur(char *no,char *name,char *surname,char *crn,char *course){
    ogrenciPtr yenikisi;
    dersPtr yeniders;
    yenikisi = new Ogrenci;
    yeniders =new Ders;
    strcpy(yenikisi->ad,name);
    strcpy(yenikisi->ogrno,no);
    strcpy(yenikisi->soyad,surname);
    yenikisi->dersdugumu=yeniders;
    strcpy(yeniders->dersadi,course);
    strcpy(yeniders->derskodu,crn);
    yeniders->sonraki=NULL;
    yenikisi->sonraki=NULL;
    return yenikisi;
}

 void Dosya::listeKur(char *no,char *name,char *surname,char *course,char *crn){
    ogrenciPtr tara,arka,yenikisi;
    dersPtr yenicourse;
    tara=bas;
    if(bas==NULL){
    bas=Dugum_olustur(no,name,surname,crn,course);
    return;
    }
    if(strcmp(no,tara->ogrno)<0){
    yenikisi=Dugum_olustur(no,name,surname,crn,course);
    yenikisi->sonraki=bas;
    bas=yenikisi;
    return;
    }
    while(tara && strcmp(no,tara->ogrno)>0){
    arka=tara;
    tara=tara->sonraki;
    }
    if(tara && strcmp(no,tara->ogrno)==0){
        yenicourse = new ders;
        yenicourse->sonraki = tara->dersdugumu;
        tara->dersdugumu=yenicourse;
        strcpy(yenicourse->dersadi,course);
        strcpy(yenicourse->derskodu,crn);
       
    }else{
        yenikisi = Dugum_olustur(no,name,surname,crn,course);
        if(tara){
            yenikisi->sonraki=tara;
            arka->sonraki=yenikisi;

        }else
            arka->sonraki = yenikisi;
    }
   

 }


void Dosya::dosyadan_oku(char *dosya1){
    char four[30];
    char c;
    struct Dosya_kayit{
        char on[Ogrenci_no_uzunluk];
        char isim[Ad_soyad_uzunluk];
        char soyisim[Ad_soyad_uzunluk];
    };
    Dosya_kayit kayit;
    struct Dosya_kayit2{
        char crn[Ders_kodu_uzunluk];
        char course[Ders_adi_uzunluk];
    };
    Dosya_kayit2 kayit2;
   
   
    ifstream spt;
    spt.open(dosya1,fstream::out);
    spt >> kayit2.crn >> kayit2.course;
   

    while(!spt.eof()){
        spt >> kayit.on >> kayit.isim >> kayit.soyisim;
        if(kayit.on==NULL)
            break;
           
        spt.get(c);
        c=spt.peek();
       
         if(c>='A' && c<='Z'){
             spt >> four;
             spt.ignore(1);
        strcat(kayit.isim," ");
        strcat(kayit.isim,kayit.soyisim);
        strcpy(kayit.soyisim,four);
   
         }else if(c>='0' && c<='9')
            ;
         else if(c=='\n')
            spt.get(c);
            c=spt.peek();
            if(c>='0' && c<='9')
                ;
            else
         {
             listeKur(kayit.on,kayit.isim,kayit.soyisim,kayit2.course,kayit2.crn);
            break;
         }
        listeKur(kayit.on,kayit.isim,kayit.soyisim,kayit2.course,kayit2.crn);
     }

    spt.close();
}
       

void Dosya::listele(){
    ogrenciPtr ogrenciler1;
    dersPtr dersler1;
    ogrenciler1=bas;
    while(ogrenciler1){
        dersler1=ogrenciler1->dersdugumu;
        cout << ogrenciler1->ogrno << " " << ogrenciler1->ad << " " << ogrenciler1->soyad << " ";
        while(dersler1){
       
        cout << dersler1->derskodu << " " << dersler1->dersadi << " " ;
           
        dersler1=dersler1->sonraki;
    }  
        cout << endl;
        ogrenciler1=ogrenciler1->sonraki;
}

}
void Dosya::ara(){
    struct genel{
    char surname[30];
    char ogrencino[15];
    };
    typedef struct genel General;
    General *gptr;
    gptr = new genel;
    int secim,sayac=0,bulunan=0;
    ogrenciPtr tara;
    dersPtr buck;
    cout << "Numaraya gore aramak icin 1'e basiniz :" << endl;
    cout << "Soyada gore aramak icin 2'e basiniz :"<< endl;
    cout << "Cikis icin 3'e basiniz" << endl;
    cin >> secim;
    while(secim!=3){
        switch(secim){
        case 1:
            cout << "Lutfen kisinin ogrenci numarasini giriniz : ";
            cin.ignore(16,'\n');
            cin.getline(gptr->ogrencino,15);
            tara=bas;
            while(tara){
            sayac++;
                if(strncmp(tara->ogrno,gptr->ogrencino,strlen(tara->ogrno))==0){
                bulunan++;
                cout << "\n" << sayac << ".ogrenci : " << tara->ad << " " << tara->soyad << " ";
                buck=tara->dersdugumu;
                    while(buck){
                    cout << buck->derskodu << " " << buck->dersadi << " ";
                    buck=buck->sonraki;
                   
                    }
                    cout << "" << endl;
                }
                tara=tara->sonraki;
            }
            if(bulunan==0)
                cout << "kayit bulunamadi" << endl;
            break;

        case 2:
            cout << "Lutfen kisinin soyadini giriniz : ";
            cin.ignore(31,'\n');
            cin.getline(gptr->surname,30);
            tara=bas;
            cout << "" << endl;
            while(tara){
                sayac++;
                if(strncmp(tara->soyad,gptr->surname,strlen(tara->soyad))==0){
                bulunan++;
                cout  << sayac << ".ogrenci : " << tara->ogrno << " " << tara->ad << " ";
                buck=tara->dersdugumu;
                        while(buck){
                        cout << buck->derskodu << " " << buck->dersadi << " ";
                        buck=buck->sonraki;
                    }
                        cout << "" << endl;
                }
                tara=tara->sonraki;
            }
            if(bulunan==0)
                cout << "kayit bulunamadi" << endl;
            break;
        default :
            cout << "Yanlis giris tekrar deneyin." << endl;
            break;
        }
    cout << "Numaraya gore aramak icin 1'e basiniz :" << endl;
    cout << "Soyada gore aramak icin 2'e basiniz :"<< endl;
    cout << "Cikis icin 3'e basiniz" << endl;
    cin >> secim;
   
    }


}
void Dosya::dersSil(){
    struct silinecek{
    char silinecekno[15];
    char silinecekders[10];
    };
    typedef struct silinecek S;
    S *sptr;
    sptr = new silinecek;
   
    cout << "Dersi silinecek ogrenci numarasini giriniz : ";
    cin.ignore(16,'\n');
    cin >> setw(15) >> sptr->silinecekno;
    cout << "\n" <<"Silinecek dersi giriniz(ENG,MAT) : " ;
    cin.ignore(11,'\n');
    cin >> setw(10) >> sptr->silinecekders;
   
    ogrenciPtr tara,arka;
    dersPtr sil,arka2;
    tara=bas;
    int sayac=0,sayac1=0;

    while(tara && strcmp(tara->ogrno,sptr->silinecekno)!=0){
    arka=tara;
    tara=tara->sonraki;
   
    }
    if(tara==NULL)
        cout << "Bu numarada bir ogrenci yok" << endl;
    else {
         
        sil=tara->dersdugumu;
        while(sil && strncmp(sil->derskodu,sptr->silinecekders,strlen(sptr->silinecekders))!=0){
        arka2=sil;
        sil=sil->sonraki;
        sayac++;
        }
            if(sil==NULL)
            cout << "Yanlis ders ismi girdiniz" << endl;
            else{
                if(sayac==0){
                arka2=sil->sonraki;
                tara->dersdugumu=arka2;
                delete sil;
                }
                else{
                arka2->sonraki=sil->sonraki;
                tara->dersdugumu=arka2;
                delete sil;
                }
                cout << sptr->silinecekno << " numarali ogrencinin " << sptr->silinecekders << " dersi silindi."<< endl;
            }     
           
    }
}
void Dosya::ogrenciSil(){
    struct ogrenci{
    char silinecekogr[15];
    };
    struct ogrenci * optr;
    optr = new ogrenci;
    cout << "Kaydi silinecek ogrencinin ogrenci numarasini giriniz : ";
    cin.ignore(16,'\n');
    cin >> setw(15) >> optr->silinecekogr;
    ogrenciPtr tara,arka;
    dersPtr sil;
    tara=bas;
    while(tara && strcmp(tara->ogrno,optr->silinecekogr)!=0){
        arka=tara;
        tara=tara->sonraki;
    }if(tara==NULL)
        cout << "Bu numarada bir ogrenci yok" << endl;
    else{
        if(tara==bas){
            bas=bas->sonraki;
            sil=tara->dersdugumu;
            while(sil){
            tara->dersdugumu = sil->sonraki;
            delete sil;
            sil = tara->dersdugumu;
        }
            delete tara;
        }else{
        arka->sonraki=tara->sonraki;
        sil=tara->dersdugumu;
        while(sil){
            tara->dersdugumu = sil->sonraki;
            delete sil;
            sil = tara->dersdugumu;
        }
        delete tara;
        }
        cout << "Ogrenci kaydi silindi." << endl;
    }

}
void Dosya::kesisimBul(){
    struct intersection{
    char kesisim[10];
    char kesisim2[10];
    char kesisim3[10];
    int sayac;
    };
    struct intersection *kesptr;
    kesptr = new intersection;
    int adet;
   
    cout << "Ders adedini giriniz : " ;
    cin.ignore(2,'\n');
    cin >> adet;
    if(adet>=1 && adet<=3){
    cout << "\n" << "Ders kodunu giriniz : ";
    cin.ignore(11,'\n');
    cin >> setw(10) >> kesptr->kesisim;
    }
    if(adet>=2){
    cout << "\n" <<"Ders kodunu giriniz : ";
    cin.ignore(11,'\n');
    cin >> setw(10) >> kesptr->kesisim2;
    }
    if(adet==3){
    cout << "\n" <<"Ders kodunu giriniz : ";
    cin.ignore(11,'\n');
    cin >> setw(10) >> kesptr->kesisim3;
    }
    ogrenciPtr tara,arka;
    dersPtr a,b;
    tara=bas;
    arka=bas;
    if(adet==1){
        while(tara){
            a=tara->dersdugumu;
            if(a->sonraki==NULL)
             if(strncmp(a->derskodu,kesptr->kesisim,strlen(kesptr->kesisim))==0){
                cout << tara->ogrno << " " << tara->ad << " " << tara->soyad << " " << a->derskodu <<" " << a->dersadi << endl;
                kesptr->sayac++;
            }
           
            tara=tara->sonraki;   
           
        }
        if(kesptr->sayac==0)
            cout << "kayit bulunamadi "<<endl;
    }
    kesptr->sayac=0;
    tara=bas;
    arka=bas;
    dersPtr arka2;
    if(adet==2){
        while(tara){
            a=tara->dersdugumu;
            arka2=a->sonraki;
            if(strncmp(a->derskodu,kesptr->kesisim,strlen(kesptr->kesisim))==0){
                b=a->sonraki;
                if(b && strncmp(b->derskodu,kesptr->kesisim2,strlen(kesptr->kesisim2))==0){
                cout << tara->ogrno << " " << tara->ad << " " << tara->soyad << " " << a->derskodu <<" " << a->dersadi
                <<" "<< b->derskodu <<" " << b->derskodu << endl;
                kesptr->sayac++;
                }
            }else if(arka2 && strncmp(arka2->derskodu,kesptr->kesisim,strlen(kesptr->kesisim))==0){
                b=a;
                if(strncmp(b->derskodu,kesptr->kesisim2,strlen(kesptr->kesisim2))==0){
                cout << tara->ogrno << " " << tara->ad << " " << tara->soyad << " " << a->derskodu <<" " << a->dersadi
                <<" "<< b->derskodu <<" " << b->derskodu << endl;
                kesptr->sayac++;
                }
            }else
            ;           
            tara=tara->sonraki;   
        }
        if(kesptr->sayac==0)
            cout << "kayit bulunamadi "<<endl;
    }
   
   
    kesptr->sayac=0;
    tara=bas;
    arka=bas;
    dersPtr c;
    if(adet==3){
        while(tara){
            a=tara->dersdugumu;
            if(a->sonraki){
            b=a->sonraki;
                if(b){
            c=b->sonraki;
                    if(a)
                        if(b)
                            if(c){
               
                    cout << tara->ogrno << " " << tara->ad << " " << tara->soyad << " " << a->derskodu <<" " << a->dersadi
                        <<" "<< b->derskodu <<" " << b->derskodu << " "<< c->derskodu<<" "<<c->dersadi<<endl;
                    kesptr->sayac++;
                            }
                }
            }
        tara=tara->sonraki;   
        }
        if(kesptr->sayac==0)
        cout << "kayit bulunamadi "<<endl;
   
    }
}
void Dosya::birlesimBul(){

    struct combination{
    char birlesim[10];
    char birlesim2[10];
    char birlesim3[10];
    int sayac;
    };
    struct combination *birptr;
    birptr = new combination;
    int adet;
   
    cout << "Ders adedini giriniz : " ;
    cin.ignore(2,'\n');
    cin >> adet;
    if(adet>=1 && adet<=3){
    cout << "\n" << "Ders kodunu giriniz : ";
    cin.ignore(11,'\n');
    cin >> setw(10) >> birptr->birlesim;
    }
    if(adet>=2){
    cout << "\n"  <<"Ders kodunu giriniz : ";
    cin.ignore(11,'\n');
    cin >> setw(10) >> birptr->birlesim2;
    }
    if(adet==3){
    cout << "\n" <<"Ders kodunu giriniz : ";
    cin.ignore(11,'\n');
    cin >> setw(10) >> birptr->birlesim3;
    }
    ogrenciPtr tara,arka;
    dersPtr a,b;
    tara=bas;
    arka=bas;
    if(adet==1){
        while(tara){
            a=tara->dersdugumu;
            while(a && strncmp(a->derskodu,birptr->birlesim,strlen(birptr->birlesim))!=0){
                a=a->sonraki;
            }
            if(a==NULL)
                ;
            else{
                cout << tara->ogrno << " " << tara->ad << " " << tara->soyad << " " << a->derskodu <<" " << a->dersadi << endl;
                    birptr->sayac++;
               
            }
            tara=tara->sonraki;   
        }
        if(birptr->sayac==0)
            cout << "kayit bulunamadi "<<endl;
    }
    tara=bas;
    arka=bas;
    if(adet==2){
        while(tara){
            a=tara->dersdugumu;
            while(a && strncmp(a->derskodu,birptr->birlesim,strlen(birptr->birlesim))!=0){
                a=a->sonraki;
            }
            if(a==NULL)
                ;
            else{
                cout << tara->ogrno << " " << tara->ad << " " << tara->soyad << " " << a->derskodu <<" " << a->dersadi;
                b=tara->dersdugumu;
                while(b && strncmp(b->derskodu,birptr->birlesim2,strlen(birptr->birlesim2))!=0)
                    b=b->sonraki;
                if(b==NULL)
                    ;
                else
                    cout << " "<< b->derskodu <<" " <<b->dersadi;
                birptr->sayac++;
                cout<<endl;
            }
            b=tara->dersdugumu;
            while(b && strncmp(b->derskodu,birptr->birlesim2,strlen(birptr->birlesim2))!=0)
                b=b->sonraki;
            if(b==NULL)
                ;
            else{
                a=tara->dersdugumu;
                while(a && strncmp(a->derskodu,birptr->birlesim,strlen(birptr->birlesim))!=0)
                    a=a->sonraki;
                if(a==NULL)
                    cout << tara->ogrno <<" "<< tara->ad <<" "<< tara->soyad <<" "<< b->derskodu <<" "<< b->dersadi<<endl;
                else
                    ;
            }
            tara=tara->sonraki;   
        }
   
    }
    tara=bas;
    dersPtr c;
    if(adet==3){
        while(tara){
            a=tara->dersdugumu;
            while(a && strcmp(a->derskodu,birptr->birlesim))
                a=a->sonraki;
            if(a==NULL)
                ;
            else{
            cout << tara->ogrno << " " << tara->ad << " " << tara->soyad << " " << a->derskodu <<" " << a->dersadi;
            b=tara->dersdugumu;
            while(b && strncmp(b->derskodu,birptr->birlesim2,strlen(birptr->birlesim2))!=0)
                b=b->sonraki;
            if(b==NULL)
                ;
            else
                cout<<" "<<b->derskodu<<" "<<b->dersadi;
            c=tara->dersdugumu;
            while(c && strncmp(c->derskodu,birptr->birlesim3,strlen(birptr->birlesim3))!=0)
                c=c->sonraki;
            if(c==NULL)
                ;
            else
                cout <<" "<<c->derskodu<<" "<<c->dersadi;
            cout<<endl;
            }
        /////////////////////////////////////////
            a=tara->dersdugumu;
            while(a && strcmp(a->derskodu,birptr->birlesim2))
                a=a->sonraki;
            if(a==NULL)
                ;
            else{
            c=tara->dersdugumu;   
            b=tara->dersdugumu;
            while(b && strncmp(b->derskodu,birptr->birlesim,strlen(birptr->birlesim))!=0)
                b=b->sonraki;
            while(c && strncmp(c->derskodu,birptr->birlesim3,strlen(birptr->birlesim3))!=0)
                c=c->sonraki;
            if(b==NULL && c==NULL)
                cout << tara->ogrno << " " << tara->ad << " " << tara->soyad << " " << a->derskodu <<" " << a->dersadi<<endl;
            else
                ;
            }
            ////////////////////////////////////
            a=tara->dersdugumu;
            while(a && strcmp(a->derskodu,birptr->birlesim3))
                a=a->sonraki;
            if(a==NULL)
                ;
            else{
            b=tara->dersdugumu;
            c=tara->dersdugumu;
            while(b && strncmp(b->derskodu,birptr->birlesim,strlen(birptr->birlesim))!=0)
                b=b->sonraki;
                while(c && strncmp(c->derskodu,birptr->birlesim2,strlen(birptr->birlesim2))!=0)
                    c=c->sonraki;
            if(b==NULL && c==NULL)
                cout<<tara->ogrno<<" "<<tara->ad<<" "<<tara->soyad<<" "<<a->derskodu<<" "<<a->dersadi<<endl;
            else
                ;
            }
            ////////////////////////
            tara=tara->sonraki;
        }
    }

}
void Dosya::farkBul(){
struct difference{
char fark[10];
char fark2[10];
};
struct difference *dptr;
dptr = new difference;
cout << "Farki bulunmasi istenen ilk dersi giriniz : ";
cin.ignore(11,'\n');
cin >> dptr->fark;
cout << "Ikinci dersi giriniz : ";
cin.ignore(11,'\n');
cin >> dptr->fark2;
ogrenciPtr tara,arka;
dersPtr a,b;
    tara=bas;
    while(tara){
        a=tara->dersdugumu;
        while(a && strcmp(a->derskodu,dptr->fark)!=0)
            a=a->sonraki;
        if(a==NULL)
            ;
        else{
           
            b=tara->dersdugumu;
            while(b && strcmp(b->derskodu,dptr->fark2)!=0)
                b=b->sonraki;
            if(b==NULL)
                cout << tara->ogrno <<" "<< tara->ad <<" "<< tara->soyad <<" " << a->derskodu <<" "<<a->dersadi<<endl;
            else
                ;
        }
        tara=tara->sonraki;
    }
}

fonksiyon.h

#ifndef FOKSIYON_H
#define FONKSIYON_H

#include <stdio.h>
#include "ogrenci.h"
struct Dosya{
 FILE *okuldefteri;
 ogrenciPtr bas;
 void olustur();
 void dosyadan_oku(char *);
 ogrenciPtr Dugum_olustur(char *,char *,char *,char *,char *);
 void listeKur(char *,char *,char *,char *,char *);
 void dersSil();
 void ogrenciSil();
 void listele();
 void kesisimBul();
 void birlesimBul();
 void farkBul();
 void ara();
 void dosyayaYaz();
};

#endif

ogrenci.h

#define Ogrenci_no_uzunluk 15
#define Ad_soyad_uzunluk 30
#define Ders_kodu_uzunluk 10
#define Ders_adi_uzunluk 50
#include<stdio.h>

struct ders{
char derskodu[Ders_kodu_uzunluk];
char dersadi[Ders_adi_uzunluk];
ders *sonraki;
};
typedef struct ders Ders;
typedef Ders *dersPtr;
struct ogrenci{
char ogrno[Ogrenci_no_uzunluk];
char ad[Ad_soyad_uzunluk];
char soyad[Ad_soyad_uzunluk];
dersPtr dersdugumu;
ogrenci *sonraki;
};

typedef struct ogrenci Ogrenci;
typedef Ogrenci *ogrenciPtr;





No comments:

Post a Comment