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 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