Monday, August 04, 2014

TR KBP F. NIM 672012213 :D

Oke, semester ini aku dapet makul KBP dengan dosen Bapak Vyor.. jadi aku dpt tugas rancang bikin program sederhana dengan bahasa C++. mau tau kayak apa programnya? boleh copas kok untuk dicoba dan dijadiin referensi.. kita rela berbagi.. hehe.. ini hasil coding TR kelompok kami (aku, jefri, betin, ma adit).. semoga bermanfaat..

Langkah pertama yang kami lakukan adalah mempersiapkan library yang akan digunakan.Library yang kami pakai adalah :
#include<conio.h>      :  sediakan fungsi input dan output konsole
#include<iostream>    :  input dan output berdasarkan stream
#include<stdlib.h>      : sediakan fungsi general seperti managemen memori dinamis,generate nomer random, integer aritmatik
Langkah kedua kami sipakan struktur data untuk menyimpan elemen data.Disini kami mengunakan 2 buah grup data
struct TahunAjaran
{int tahun;
            int semester;};

struct Matakuliah
{char namaMK[99];
            char kode[20];
            int sks;
            TahunAjaran tahunajaran;
            Matakuliah *next;       };
Lalu kedua buah data stuktur tersebut akan digabung lagi menjadi sebuah struktur baru yaitu :
typedef struct Matakuliah *dataMK;
Untuk mendeklarasikan variabel pointer untuk menyimpand data yang nantinya disimpan distruktur data :


dataMK depan,belakang;
void link_L(dataMK *depan, dataMK *belakang)
{*depan=NULL;
            *belakang=NULL;}
            Program utama diaplikai ini berisi menu utama yang akan memanggil kelas dan fungsi yang telah disiapkan untuk menjalankan aplikasi ini.
int main(int argc, char** argv)
{
            int pilih;
            link_L(&depan,&belakang);
            main :
                        system("cls");
                        cout<<"1. Tambah Data Matakuliah"<<endl;
                        cout<<"2. Data Matakuliah (SKS Terbesar dan Terkecil)"<<endl;
                        cout<<"3. Data Matakuliah (Tahun Ajaran Terbesar)"<<endl;
                        cout<<"4. Daftar Matakuliah ditahun Ajaran Genap"<<endl;
                        cout<<"5. Daftar Semua Matakuliah"<<endl;
                        cout<<"6. Keluar\n"<<endl;
                        cout<<"Masukkan Pilihan Anda : "; cin>>pilih;
                        cout<<endl;

                        switch(pilih)
                        {
                                    case 1:
                                    system("cls");
                                                inputData(&depan,&belakang);
                                    break;
                                    case 2 :
                                    system("cls");
cout<<"\t\t\t\tSKS Terbesar dan Terkecil"<<endl<<endl;
                                                sksKecil_Besar(depan);
                                    break;
                                    case 3:
                                    system("cls");
cout<<"\t\t\t\tTahun Ajaran Terbesar"<<endl<<endl;
                                                TA_Terbesar(depan);
                                                break;
                                    case 4:
                                    system("cls");
cout<<"\t\t\tData Matakuliah di Tahun Ajaran Genap "<<endl<<endl;
                                                TA_genap(depan);
                                                break;
                                    case 5:
                                    system("cls");
cout<<"\t\t\t\t  Data Matakuliah"<<endl;
                                                output(depan);
                                                getch();
                                    break;
                                    case 6:
                                                system("cls");
                                                cout<<endl<<"\n\n\n\n\n\n\n\n";
                                                cout<<"\t\t\t        Program Exit"<<endl<<endl;
                                                cout<<"\t\t\t\t   Thanks!!";
                                                cout<<endl<<"\n\n\n\n\n\n\n\n";
                                    getche();
                                                _exit(0);
                                    break;
                                    default:
                                                cout<<"Inputan Anda Salah!!";                                             
                                                getche();
                                    break;
                        }
                        goto main;
            return (EXIT_SUCCESS);
}
 Kami menggunakan switch case untuk memilih menu yang ada dan di setiap case menu akan memanggil fungsi atau kelas.
Penjelasan menu :
1.      Case 1 : akan memanggil fungsi input data
int inputData(dataMK *depan, dataMK *belakang) //Tambah Data Matakuliah
{
            dataMK newData;
            newData = (dataMK)malloc(sizeof(struct Matakuliah));      
            if(newData!=NULL)
            {                     
                        cout<<"\t\t\t\tInput Data Matakuliah"<<endl<<endl;
                        cout<<"\nMasukan Nama Matakuliah    : "; cin>>newData->namaMK;
                        cout<<"Masukan Kode Mata Kuliah   : "; cin>>newData->kode;
                        cout<<"Masukan SKS Mata Kuliah    : "; cin>>newData->sks;
                        cout<<"Masukan Tahun Ajaran       : "; cin>>newData->tahunajaran.tahun;
                        cout<<"Masukan Semester           : "; cin>>newData->tahunajaran.semester;
                        newData->next=NULL;
                        if(*depan==NULL)
                                    {
                                                *depan=newData;
                                                *belakang=newData;
                                    }
                        else
                                    {
                                                (*belakang)->next=newData;
                                                *belakang=newData;
                                    }
            cout<<endl<<"\t\t\t    Data Berhasil ditambah!!";
            getch();
            }
            return 0;
}
Di dalam fungsi inputData terdapat alur sebagai berikut:
-          kami membuat satu objek bernama newData.
-          newData ini nantinya akan menyimpan data dalam memori yang bersifat dinamik, karena menggunakan malloc.
-          masuk ke percabangan,
Jika newData tidak sama dengan NULL (sudah ada alokasi memori pada newData), maka instruksi selanjutnya dijalankan.
·         Nama makul disimpan di newData dalam variabel namaMK dengan penulisan; newData -> namaMK karena menggunakan pointer of struct.
·         kode makul disimpan di newData dalam variabel kode dengan penulisan; newData -> kode karena menggunakan pointer of struct.
·         SKS makul disimpan di newData dalam variabel sks dengan penulisan; newData -> sks karena menggunakan pointer of struct.
·         Tahun Ajaran makul disimpan di newData dalam struct tahunajaran dalam variabel tahun dengan penulisan; newData -> tahunajaran.tahun karena menggunakan pointer of struct.
·         Semester makul disimpan di newData dalam struct tahunajaran dalam variabel semester dengan penulisan; newData -> tahunajaran.semester karena menggunakan pointer of struct.
newData->next=NULL adalah intstruksi untuk mendeklarasikan newData ke next adalah selalu NULL, selama user belum  menginputkan data yang baru.
Masuk percabangan lagi, jika pointer depan masih kosong, maka pointer depan menyimpan newData/data yang baru diinputkan dan pointer belakang juga menyimpan newData/data yang baru dimasukkan. jika tidak, pointer belakang ke next dan menyimpan newData. pointer belakang berisikan newData/data yang baru diinputkan.
2.      Case 2 : memanggil kelas untuk menampilkan mata kulaih dengan sks terbesar dan terkecil
void sksKecil_Besar(dataMK depan)  //Data Matakuliah (SKS Terbesar dan Terkecil)
{
            dataMK a;
            int max = 0, min = 0;
            string MKbesar = "", MKkecil = "", KDbesar = "", KDkecil = "";                  
             if (depan!=NULL)
            {
                        a=depan;
                        max = a->sks;
                        min = a->sks;
                       
                        while (a!=NULL)
                        {
                                    if (a->sks>=max){
                                                max = a->sks;
                                                MKbesar = a->namaMK;
                                                KDbesar = a->kode;
                                    }

                                    if (a->sks<=min){
                                                min = a->sks;
                                                MKkecil = a->namaMK;
                                                KDkecil = a->kode;                           
                                    }                                 
                                    a=a->next;
                        }
cout<<"SKS Terbesar : "<<max<<" Dengan Matakuliah : "<<MKbesar<<" Dan Kode Matakuliah : "<<KDbesar<<endl;
           
cout<<"SKS Terkecil : "<<min<<" Dengan Matakuliah : "<<MKkecil<<" Dan Kode Matakuliah : "<<KDkecil<<endl;
                        cout<<endl;    
            }
            else {
                        cout<<"Kosong"<<endl;
            }         
            cout<<"\nTekan Enter untuk kembali";
            getch();           
}
Di dalam fungsi sksKecil_Besar terdapat alur sebagai berikut:
-      Membuat objek a dari struct dataMK.
-      Membuat variabel string : string MKbesar = "", MKkecil = "", KDbesar = "", KDkecil = "";
-      Jika variabel depan tidak sama dengan NULL, maka objek a menyimpan data yang terdapat di variabel depan. var MAX menyimpan sks yang ada di a. var MIN menyimpan sks yang ada di a.
-      Selama a tidak sama dengan null, dia mengecek apakah sks yang ada di a >= max atau tidak. jika, maka max berisikan sks yang ada di a, MKbesar berisikan namaMK yang ada di a, dan KDbesar menyimpan kode yang ada di a.
-      Apabila sks yang di a <= min, maka min berisikan sks yang ada di a, MKkecil berisikan namaMK yang ada di a, dan KDkecil menyimpan kode yang ada di a.
-      Lalu a menyimpan a->next.
-      Lika masih null (kosong), maka keluar output "kosong".
3.      Case 3 : memanggil kelas untuk menampilkan matakuliah dengan tahun ajaran terbesar
void TA_Terbesar(dataMK depan) //Data Matakuliah (Tahun Ajaran Terbesar)
{
            dataMK a;
            int max = 0;
            if (depan!=NULL)
            {
                        a=depan;
                        max = a->tahunajaran.tahun;
                                   
                        while (a!=NULL)
                        {
                                    if (a->tahunajaran.tahun>=max)
                                    {                                             
                                                system("cls");
                                                cout<<"Tahun ajaran Terbesar : "<<a->tahunajaran.tahun<<" Dengan Matakuliah : "<<a->namaMK<<" Dan Kode Matakuliah : "<<a->kode;                         
                                    }
                                    a=a->next;
                        }
                        cout<<endl;
                       
            }
            else {
                        cout<<"Kosong"<<endl;
            }
            cout<<"\nTekan Enter untuk kembali";
            getch();
}
Di dalam fungsi TA_Terbesar terdapat alur sebagai berikut:
-    Membuat objek a dari struct dataMK.
-    Membuat variabel i dengan tipe data integer yang bernilai 0.
-    Jika depan tidak sama dengan NULL a = depan dan max = a->tahunajaran.tahun;
-    Selama a tidak sama dengan NULL a->tahunajaran.tahun dibandingkan dengan max, jika a->tahunajaran.tahun lebih besar sama dengan max maka cetak cout<<"Tahun ajaran Terbesar : "<<a->tahunajaran.tahun<<" Dengan Matakuliah : "<<a->namaMK<<" Dan Kode Matakuliah : "<<a->kode;
-    Lalu a menyimpan a->next;
-    Jika tidak cout<<"Kosong"<<endl;
4.      Case 4 : memanggil kelas untuk menampilkan mata kuliah dengan tahun ajaran yang genap
void TA_genap(dataMK depan) //Daftar Matakuliah ditahun Ajaran Genap
{
     dataMK a; int i = 1;
          if(depan != NULL)
     {
             a=depan;
             while(a!= NULL)
             {
               if(a->tahunajaran.tahun%2==0)
               {                            
                  cout<<"\nDATA Matakuliah Ke-"<<i<<endl;
                  cout<<"Nama Matakuliah : "<<a->namaMK; cout<<endl;
                  cout<<"Kode Matakuliah : "<<a->kode; cout<<endl;
                  cout<<"SKS Matakuliah  : "<<a->sks<<" SKS"; cout<<endl;
                  cout<<"Tahun Ajaran    : "<<a->tahunajaran.tahun; cout<<endl;
                  cout<<"Semester        : "<<a->tahunajaran.semester; cout<<endl;
                  i++;              
               }
               a=a->next;
             }
             cout<<endl;
     }
     else{
                  cout<<"Kosong"<<endl;
      }
      cout<<"\nTekan Enter untuk kembali";
      getch();
}
Di dalam fungsi TA_Genap terdapat alur sebagai berikut:
-    Membuat objek a dari struct dataMK.
-    Membuat variabel i dengan tipe data integer yang bernilai 1.
-    Jika depan tidak sama dengan NULL a = depan.
-    Selama a tidak sama dengan NULL maka di cek apakah a->tahunajaran.tahun dibagi 2 sama dengan 0.
-    Jika benar cetak :
cout<<"\nDATA Matakuliah Ke-"<<i<<endl;
cout<<"Nama Matakuliah : "<<a->namaMK; cout<<endl;
cout<<"Kode Matakuliah : "<<a->kode; cout<<endl;
cout<<"SKS Matakuliah  : "<<a->sks<<" SKS"; cout<<endl;
cout<<"Tahun Ajaran    : "<<a->tahunajaran.tahun; cout<<endl;
cout<<"Semester        : "<<a->tahunajaran.semester; cout<<endl;
i++;    
-    Jika tidak cetak cout<<"Kosong"<<endl;

5.      Case 5 : memanggil kelas untukmenampilkan semua data mata kuliah
void output(dataMK depan) //Daftar Semua Matakuliah
{
      dataMK a; int i=1;     
      if (depan!=NULL)
      {
                  a=depan;
                  while (a!=NULL)
                  {                                 
                  cout<<"\nDATA Matakuliah Ke-"<<i<<endl;
                  cout<<"Nama Matakuliah : "<<a->namaMK;
                  cout<<", Kode Matakuliah : "<<a->kode;
                  cout<<", SKS Matakuliah : "<<a->sks<<" SKS";
                  cout<<", Tahun Ajaran : "<<a->tahunajaran.tahun;
                  cout<<", Semester : "<<a->tahunajaran.semester; cout<<endl;         
                  i++;
                  a=a->next;
                  }
                  cout<<endl;                
      }
      else {
                  cout<<"Kosong"<<endl;
      }
      cout<<"\nTekan Enter untuk kembali";
}
Di dalam fungsi output terdapat alur sebagai berikut:
-    Membuat objek a dari struct dataMK.
-    Membuat variabel i dengan tipe data integer yang bernilai 1.
-        Jika depan tidak sama dengan NULL a sama dengan depan.
-        Selama a tidak sama dengan NULL cetak :
cout<<"\nDATA Matakuliah Ke-"<<i<<endl;
cout<<"Nama Matakuliah : "<<a->namaMK;
cout<<", Kode Matakuliah : "<<a->kode;
cout<<", SKS Matakuliah : "<<a->sks<<" SKS";
cout<<", Tahun Ajaran : "<<a->tahunajaran.tahun;
cout<<", Semester : "<<a->tahunajaran.semester; cout<<endl;         
i++;
-        Lalu a menyimpan a->next;
-       Jika tidak cetak cout<<"Kosong"<<endl;

6.      Case 6 : mengakhiri atau keluar dari program

No comments:

Post a Comment