Project 1 : Tim’s Student Information Management System 1.0

Yazının öncesinde önemli not: Esasen bu yazı 6 kasım 2010 tarihinde, saat 23.45 sularında bitirilmiştir. Ancak Laptop’ın şarj aletinin yazarın yanında olmamasından ötürü ertesi gün yayınlanmıştır.

Sabahtan beri Ceng 353 kodlu Information Systems Analysis and Design dersine çalışmaktan “yeter artık ulen bu kadar information system incelediğimiz, bir tane de ben yazıyım da millet incelesin :P ” dedim. Ve telif haklarının tamamı can sıkıntıma ait olan bu Student Information Management System’i yazdım.

Şu an için herhangi bir dosyaya kayıt yapmıyor. Sadece program çalışırken aklında duruyor. Programı kapatıp tekrar açtığınızda eski kayıtlara rastlayamazsınız. Zira mevcut yorgunluğuma gözatında saat fazlasıyla geç olmuş durumda. :S😀

Önümüzdeki hafta olan vizelerimi atlattıktan sonra bu programa text dosyasına kayıt yapma özelliği ekledikten sonra bu programın Display Class Menüsünün altına önce sınıf numaralarını ve şubelerini içeren bir menü eklemeyi düşünüyorum. Bu menüye de yeni sınıf ekleyip çıkartma, sınıflar arası öğrenci transferi gibi özelliklerde bulunacak. Summary of Letter Grades kısmına da renkli output özelliğini kullanarak en büyük sayıya göre orantısal olarak değişen yatay olarak uzayıp giden “*”lardan oluşan bir grafik eklemek ve tüm bunları OOP çerçevesinde gerçekleştirmek gibi bir fantezim bile var.😀

Ama belki bunların hepsini o kadar işin gücün arasında yapmaya vakit ayırmamı da düşününce önümüzdeki bayramdan sonra bitmesi yüksek bir olasılık gibi görünüyor. Ancak bitirince o versiyonun kaynak kodunu paylaşmayı düşünmüyorum. Belki videosunu çekerim.😉

Neyse, o kadarcık kod için bu kadarcık laf yaptık, çok oldu. İşte söz konusu kod:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX 100
#define MAXSTR 80
#define CLS system("cls")

typedef struct _student{
int id;
int grade;
char name[MAXSTR];
}STUDENT;
int menu();
void insertStudent(STUDENT [],int *);
STUDENT readStudent();
void readStudent2(STUDENT *);
void displayClass(STUDENT [],int);
void printStudent(STUDENT);
int findStudent(STUDENT [],int,int);
void removeStudent(STUDENT [],int *);
void summaryOfGrades(STUDENT [],int sz);
float avreage(STUDENT list[],int size);
void cont();

int main()
{
STUDENT list[MAX];
int size=0;
int opt;

do{
opt=menu();
switch (opt){
case 1: insertStudent(list,&amp;size);break;
case 2: displayClass(list,size);break;
case 3: removeStudent(list,&amp;size);break;
case 4: printf("\nNumber of students:%d",size);cont();break;
case 5: summaryOfGrades(list,size);break;
case 6: printf("\nAverage of Grades:%f",avreage(list,size) );cont();break;
}//end switch
}while(opt !=9);

}

int menu()
{
int opt;
system("cls");
printf("\nStudent Information Management");
printf("\n------------------------------");
printf("\n1.Insert Student");
printf("\n2.Display Class");
printf("\n3.Remove Student");
printf("\n4.Number of Students");
printf("\n5.Summary of Letter Grades");
printf("\n6.Average of Grades");
printf("\n9.Exit");
printf("\nOption:");
scanf("%d",&amp;opt);
fflush(stdin);
return opt;
}

void cont()
{
printf("\nPress enter to continue...");
fflush(stdin);
getchar();
}

STUDENT readStudent()
{
STUDENT newSt;

printf("\nEnter id:");
scanf("%d",&amp;newSt.id);
printf("\nEnter Name:");
scanf("%s",newSt.name);
printf("\nEnter grade:");
scanf("%d",&amp;newSt.grade);
return newSt;
}

void readStudent2(STUDENT *nwSt)
{
// nwSt-&gt;id //(*nwSt).id are equivalent
printf("\nEnter id:");
scanf("%d",&amp;nwSt-&gt;id);
printf("\nEnter Name:");
scanf("%s",nwSt-&gt;name);
printf("\nEnter grade:");
scanf("%d",&amp;nwSt-&gt;grade);

}
void insertStudent(STUDENT nlist[],int *sz)
{
STUDENT yeni;
if(*sz&gt;=MAX){
printf("\n Sorry No place");
}
else{
yeni=readStudent(); //readStudent2(&amp;yeni);
nlist[*sz]=yeni;
(*sz)++;
}

cont();
}//end insert student
void printStudent(STUDENT student)
{
printf("\n %d %20s %d",student.id,student.name,student.grade);
}
void displayClass(STUDENT nlist[],int size)
{
CLS;
printf("\nClassRoster\n");
for(int i=0;i&lt;size;i++){
printStudent(nlist[i]);
//printf("\n %d %20s %d",nlist[i].id,nlist[i].name,nlist[i].grade);

}
cont();

}//end displayClass
char letterGra(int gr)
{
if(gr&gt;90)
return 'a';
else if(gr&gt;80)
return 'b';
else if(gr&gt;70)
return 'c';
else if(gr&gt;60)
return 'd';
else
return 'f';

}
void summaryOfGrades(STUDENT list[],int sz)
{
int freq[5]={0};
for(int i=0;i&lt;sz;i++)
{
int harf=letterGra(list[i].grade);
switch(harf){
case 'a': freq[0]++; break;
case 'b': freq[1]++; break;
case 'c': freq[2]++; break;
case 'd': freq[3]++; break;
case 'f': freq[4]++; break;
}//end switch
}//end for
printf("\n Letter grade a:%d",freq[0]);
printf("\n Letter grade b:%d",freq[1]);
printf("\n Letter grade c:%d",freq[2]);
printf("\n Letter grade d:%d",freq[3]);
printf("\n Letter grade f:%d",freq[4]);
cont();
}
int findStudent(STUDENT list[],int size,int key)
{
for(int i=0;i&lt;size;i++)
if(key==list[i].id)
return i;
return -1;
}

void removeStudent(STUDENT nlist[],int *sz)
{
int id,idx;
printf("\nRemove Student Module");
printf("\nEnter id:");
scanf("%d",&amp;id);
idx=findStudent(nlist,*sz,id);
if(idx==-1)
{
printf("\nStudent Not found..");
}
else{
for(int i=idx;i&lt;*sz-1;i++)
nlist[i]=nlist[i+1];

(*sz)--;
}
cont();
}//end removestudent
float avreage(STUDENT list[],int size)
{
int sum=0;
for(int i=0;i&lt;size;i++)
sum += list[i].grade;
return sum/size;
}

6 Yorum

Filed under C & C++, Projelerim

6 responses to “Project 1 : Tim’s Student Information Management System 1.0

  1. {
    STUDENT list[MAX];
    int size=0;
    int opt;

    do{
    opt=menu();
    switch (opt){
    case 1: insertStudent(list,&size);break;
    case 2: displayClass(list,size);break;
    case 3: removeStudent(list,&size);break;
    case 4: printf(“\nNumber of students:%d”,size);cont();break;
    case 5: summaryOfGrades(list,size);break;
    case 6: printf(“\nAverage of Grades:%f”,avreage(list,size) );cont();break;
    }//end switch
    }while(opt !=9);

    }

    Kodun yukarıdaki kısmında

    case 4: printf(“\nNumber of students:%d”,size);cont();break;

    kısmı Dev-C++ derleyici tarafından hatalı olarak imleniyor. Genel anlamda kodu değerlendirdiğim zaman mantıksal bir hata görmedim. Muhtemelen bir işaret hatası nedeni ile bu satırdan sonra derleme yapılamıyor.

    • Timur Aykut YILDIRIM

      Selam, şu an kullandığım bilgisayarda bir ide yok ama kodu az önce gözden geçirdim.

      Sorunun söz ettiğin satırda çağırdığım ” cont(); ” fonksiyonunun içindeki fflush ile ilgili olduğunu tahmin ediyorum. muhtemelen bir compiler meselesidir.😉

  2. Asım Şenyuva

    Peki neden Nesneye yönelik yazmıyorsun. yani bir öğrenci nesnesi olsa, onu yaratıp işlerini onun üzerinden görsen daha güzel olmazmıydı diye düşündüm. ama bizde üniversitede aynen böyle kodluyorduk. kolay gelsin, eline sağlık.

    • Timur Aykut YILDIRIM

      Merhabalar Asım,
      Dediğin gibi obje tabanlı programlama daha iyi, modüler yapısı karmaşık problemleri bile çok basite indirgeyebiliyor. Ben ilk başladığım zamanlarda çok zorlanmıştım obje tabanlı programlamada ama bu programın OOP methodlarına uygun versiyonunu da yapmıştım, fakat artık paylaşmıyorum onu, birçok insan ödevleri için kopyalayıp yapıştırarak çalmayı tercih ediyor.

      Yazıyı beğenmene çok sevindim, teşekkürler🙂

  3. Eren Yağdıran

    büyüksün timur🙂

  4. Timur Aykut YILDIRIM

    teşekkürler eren😉

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s