Ticker

6/recent/ticker-posts

Membuat Aplikasi KRS menggunakan C++ dengan Relasi Kelas



Relasi Kelas
Jenis relasi antar kelas terdiri dari pewarisan, agregasi, asosiasi. Pewarisan merupakan hubungan antar satu kelas dengan kelas dengan kelas yang lain dalam suatu hirarki kelas induk dan kelas turunan. Superclass (“kelas dasar” atau “kelas induk”) merupakan kelas yang lebih general dalam relasi “is – a”. Subclass (“kelas turunan” atau “kelas anak”) merupakan kelas yang lebih spesifik dalam relasi “is – a”. objek yang dikelompokkan dalam sub kelas memiliki atribut dan perilaku kelas induk, dan juga atribut dan perilaku tambahan. Kita mengatakan subclass “mewarisi” suatu superclass (atau juga bisa dikatakan sebuah subclass “turunan dari” suatu superclass).
Ada beberapa karakteristik yang di-share oleh semua kelompok. Relasi antara kelas-kelas ini disebut dengan relasi “is-a”. Dalam setiap kasus, objek yang dikelompokkan bersama dalam satu sub-kategori merupakan anggota dari kategori yang lebih umum. Contohnya adalah seperti dibawah ini.
·         Mobil adalah (“is-a”) kendaran bermotor.
·         Truk adalah (“is-a”) kendaran bermotor.
·         Sepeda motor adalah (“is-a”) kendaran bermotor.
Download file lengkapnya disini
Objek yang dikelompokkan dalam satu kelas men-share sekumpulan atribut dan perilaku. Jadi, seluruh objek kendaraan bermotor memiliki sekumpulan atribut dan perilaku yang juga dimiliki oleh objekdari mobil. Keterkaitan antar kelas dalam relasi “is-a” berasal dari kenyataan bahwa sub kelas memiliki atribut dan perilaku yang dimiliki kelas induk, ditambah atributt dan perilaku yang dimiliki oleh sub kelas tersebut.
Superclass (“kelas dasar” atau “kelas induk”) merupakan kelas yang lebih general dalam relasi “is-a”. subclass ( “kelas turunan” atau “kelas anak”) merupakan kelas yang lebih spesifik dalam relasi “is-a”. objek yang dikelompokkan dalam sub kelas memiliki atribut dan perilaku sub kelas induk, dan juga atribut dan perilaku tambahan. (jadi, kumpulan atribut dan perilaku sub kelas lebih besar dari super kelas-nya). Relasi “is-a” antar superclass dan subclasses-nya disebut dengan pewarisan dan inheritance.
Subclass “mewarisi” sesuatu superclass (atau juga bisa dikatakan sebuah subclass “turunan dari” suatu superclass) karena reusabilitas perangkat lunak, membuat kelas baru (kelas turunan) dari kelas yang sudah ada (kelas dasar), kelas turunan mewarisi kelas induk yang mendapatkan data dan perilaku , merupakan bentuk special dari kelas induk, dan diperluas dengan perilaku tambahan.
Pewarisan ada dua jenis yaitu pewarisan tunggal dan pewarisan jamak. Pada protected acces, protected members dapat diakses oleh member kelas dasar, friend kelas dasar, member kelas turunan, dan rriend kelas turunan. Kelas turunan dapat merujuk/mengakses langsung public dan protected data member kelas induk dengan menggunakan nama atribut yang diakses.
Agregasi merupakan hubungan antar kelas yang menyatkan suatu kelas merupakan bagian dari kelas yang lain atau hubungan antar kelas yang menyatakan suatu kelas memiliki kelas lain [sebagai atribut]. Agregasi merupakan relasi “has a”. Contoh :
·         Mobil memiliki mesin.
·         Fakultas terdiri atas jurusan.
·         Rumah memiliki dapur.
Mobil, fakultas dan rumah dinyatakan sebagai kelas agregat. Mesin, jurusan dan dapur merupakan kelas penyusun.
Kardinalitas menyatakan jumlah objek penyusunan yang terlibat dalam pembentukan relasi agregasi. Suatu kelas agregat dibentuk dari beberapa (disimbolkan dengan *) objek kelas penyusun.
Asosiasi menggambarkan hubungan struktural antar kelas. Setiap kelas memiliki kedudukan yang sama (tidak merupakan bagian dari kelas lain). Pada saat merancang relasi antar kelas, ada dua hal yang perlu diperhatikan yaitu berapa objek yang terlibat dan masing-masing kelas yang berelasi dan apakah relasi tersebut bersifat wajib (mandatory) atau opsional.
Download file lengkapnya disini. 

BAB II
CODING PROGRAM
#include<stdio.h>
#include<conio.h>
#include<iomanip.h>
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>

class mahasiswa {
protected:
            char dumb[100],less[100], nama[50],noreg[50], nim[50], alamat[100],                                      fakultas[20], jurusan[20], prodi[20], semester[20], dosen[50],no_sandi[20];
            int i, tahun,jen;
            struct mhs
            {
                        char more[100], ex[100],komat[50], namat[100], kel[8], nm_dos[50];
            float ip;
    int nilsks,kredit, nip, kredit_in, kredit_out, kredit_up;
            }
            data[10];

            typedef mhs mhsArr[50];
            mhsArr x;
public:
            void gotoxy(int x, int y)
            {
                        HANDLE hConsoleOutput;
                        COORD dwCursorPosition;

                        cout.flush();
                        dwCursorPosition.X = x;
                        dwCursorPosition.Y = y;
                        hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
                        SetConsoleCursorPosition(hConsoleOutput,dwCursorPosition);
            }

            void menu_utama()
            {
                        system("cls");
                        gotoxy(27,0);cout<<"=========================="<<endl;
                        gotoxy(27,1);cout<<"||      MENU UTAMA      ||"<<endl;
                        gotoxy(27,2);cout<<"=========================="<<endl;
                        gotoxy(27,3);cout<<"||     1. INPUT KRS     ||"<<endl;
                        gotoxy(27,4);cout<<"||     2. PRINT KRS     ||"<<endl;
                        gotoxy(27,5);cout<<"||     3. KELUAR         ||"<<endl;
                        gotoxy(27,6);cout<<"=========================="<<endl;
            }


            void data_mahasiswa()
            {
                        system("cls");
                        gotoxy(11,1);cout<<"D E P A R T E M E N   P E N I D I K A N   N A S I O N A L"<<endl;
                        gotoxy(16,2);cout<<"U N I V E R S I T A S   P A L A N G K A R A Y A"<<endl;
                        gotoxy(1,3);cout<<"=============================================================================="<<endl;
                        gotoxy(1,3);cout<<""<<endl;
                        gotoxy(27,4);cout<<"KARTU RENCANA STUDI (KRS)"<<endl;
                        cout<<endl;
                        gotoxy(1,6);cout<<"Nama     : "; cin.getline(nama,50); cin.getline(less,100);
                        gotoxy(1,7);cout<<"No. Reg  : "; cin.getline(noreg,50);
                        gotoxy(1,8);cout<<"NIM      : "; cin.getline(nim,50);
                        gotoxy(1,9);cout<<"Alamat   : "; cin.getline(alamat,100);
                        gotoxy(1,10);cout<<"Fakultas : "; cin.getline(fakultas,20);
                        gotoxy(1,11);cout<<"Jurusan  : "; cin.getline(jurusan,20);
                        gotoxy(42,6);cout<<"Program Studi : "; cin.getline(prodi,20);
                        gotoxy(42,7);cout<<"Jenjang       : Sarjana-";cin>>jen;
                        try {
                        gotoxy(42,8);cout<<"Th. Akademik  : "; cin>>tahun;
                        }
                        catch(int tahun)
                        {
                                    cout<<"INPUT ANGKA!!!"<<endl;
                        }
                        gotoxy(63,8);cout<<"/ "<<(tahun+1);
                        gotoxy(42,9);cout<<"Semester      : "; cin.getline(semester,20);cin.getline(dumb,100);
                        gotoxy(42,10);cout<<"Dosen P.A.    : "; cin.getline(dosen,50);
                        gotoxy(42,11);cout<<"No.Sandi Dosen: "; cin.getline(no_sandi,20);
            }

            void cetak_data_mahasiswa()
            {
                        system("cls");
                        gotoxy(12,1);cout<<"D E P A R T E M E N   P E N I D I K A N   N A S I O N A L"<<endl;
                        gotoxy(18,2);cout<<"U N I V E R S I T A S   P A L A N G K A R A Y A"<<endl;
                        gotoxy(1,3);cout<<"================================================================================="<<endl;
                        gotoxy(30,4);cout<<"KARTU RENCANA STUDI"<<endl;
                        cout<<endl;
                        gotoxy(1,6) ;cout<<"Nama           : "<<(nama,less)<<endl;
                        gotoxy(1,7) ;cout<<"No. Reg        : "<<noreg<<endl;
                        gotoxy(1,8) ;cout<<"NIM            : "<<nim<<endl;
                        gotoxy(1,9) ;cout<<"Alamat         : "<<alamat<<endl;
                        gotoxy(1,10);cout<<"Fakultas       : "<<fakultas<<endl;
                        gotoxy(1,11);cout<<"Jurusan        : "<<jurusan<<endl;
                        gotoxy(42,6);cout<<"Program Studi  : "<<prodi<<endl;
                        gotoxy(42,7);cout<<"Jenjang        : Sarjana"<<jen<<endl;
                        gotoxy(42,8);cout<<"Th. Akademik   : "<<tahun<<" / "<<(tahun+1)<<endl;
                        gotoxy(42,9);cout<<"Semester       : "<<(semester,dumb)<<endl;
                        gotoxy(42,10);cout<<"Dosen P.A.     : "<<dosen<<endl;
                        gotoxy(42,11);cout<<"No.Sandi Dosen : "<<no_sandi<<endl;
            }
};

class mata_kuliah : public mahasiswa {
protected:
            int jumat;
            char tbt[20],kosong[10];
            char kajur[50],nipkajur[50],dosenPA[50],nipPA[50],namaMHybs[50],nimMHybs[50];
public:
            void gotoxy(int x, int y)
            {
                        HANDLE hConsoleOutput;
                        COORD dwCursorPosition;

                        cout.flush();
                        dwCursorPosition.X = x;
                        dwCursorPosition.Y = y;
                        hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
                        SetConsoleCursorPosition(hConsoleOutput,dwCursorPosition);
            }

            void matkul()
            {
                        gotoxy(1,14);cout<<"Jumlah Mata Kuliah Yang Diambil : "; cin>>jumat;
                        puts(" =================================================================================");
        puts(" |No.|  KODE  | MATA KULIAH | KEL |KREDIT|    NAMA DOSEN    |         NIP        |");
        puts(" =================================================================================");
         for (i=1;i<=jumat;i++)
           {
             cout<<" |";
             gotoxy(2,17+i);cout<<i;
             gotoxy(5,17+i);cout<<"|";
                                     gotoxy(6,17+i);cin.getline(x[i].komat,50);cin.getline(x[i].more,100);
             gotoxy(14,17+i);cout<<"|";
             gotoxy(16,17+i);cin.getline(x[i].namat,100);
             gotoxy(28,17+i);cout<<"|";
                                     gotoxy(30,17+i);cin.getline(x[i].kel,8);
             gotoxy(34,17+i);cout<<"|";
             gotoxy(37,17+i);cin>>x[i].kredit;
                                     gotoxy(41,17+i);cout<<"|";
             gotoxy(43,17+i);cin.getline(x[i].nm_dos,50);cin.getline(x[i].ex,100);
             gotoxy(60,17+i);cout<<"|";
                                     gotoxy(62,17+i);cin>>x[i].nip;
             gotoxy(81,17+i);cout<<"|"<<endl;
                        }
                        puts(" =================================================================================");
                        cout<<" |                     Jumlah Kredit yang diprogramkan semester ini     : "; cin>>x[i].kredit_in;
                        cout<<" |                     Jumlah Kredit yang dikumpulkan s/d semester lalu : "; cin>>x[i].kredit_out;
                        puts(" =================================================================================");
                        cout<<endl;
                        cout<<"  IP. Semester lalu            : "; cin>>x[i].ip;
                        cout<<"  Jumlah kredit yang diijinkan : "; cin>>x[i].kredit_up;
                        cout<<"";cin.getline(kosong,10);
                        cout<<"  Ketua Jurusan         : ";cin.getline(kajur,50);
                        cout<<"  NIP Ketua Jurusan     : ";cin.getline(nipkajur,50);
                        cout<<"  Dosen PA              : ";cin.getline(dosenPA,50);
                        cout<<"  NIP Dosen PA          : ";cin.getline(nipPA,50);
                        cout<<"  Nama Mahasiswa ybs    : ";cin.getline(namaMHybs,50);
                        cout<<"  NIM                   : ";cin.getline(nimMHybs,50);
                        cout<<"  Tanggal Pembuatan KRS : ";cin.getline(tbt,20);endl;
                        cout<<endl;
   }

            void cetak_matkul()
            {
                        cout<<endl;
                        puts(" =================================================================================");
        puts(" |No.|  KODE  | MATA KULIAH | KEL |KREDIT|    NAMA DOSEN    |         NIP        |");
        puts(" =================================================================================");
         for (i=1;i<=jumat;i++)
           {
             cout<<" |";
             gotoxy(2,15+i);cout<<i;
             gotoxy(5,15+i);cout<<"|";
                                     gotoxy(6,15+i);cout<<(x[i].komat,x[i].more);
             gotoxy(14,15+i);cout<<"|";
             gotoxy(16,15+i);cout<<(x[i].namat);
             gotoxy(28,15+i);cout<<"|";
                                     gotoxy(30,15+i);cout<<x[i].kel;
             gotoxy(34,15+i);cout<<"|";
             gotoxy(37,15+i);cout<<x[i].kredit;
                                     gotoxy(41,15+i);cout<<"|";
             gotoxy(43,15+i);cout<<(x[i].nm_dos,x[i].ex);
             gotoxy(60,15+i);cout<<"|";
                                     gotoxy(621,15+i);cout<<x[i].nip;
             gotoxy(81,15+i);cout<<"|"<<endl;
                                    }
                        puts(" ======================================");
                        cout<<" |                        Jumlah Kredit yang diprogramkan semester ini     : "<<x[i].kredit_in<<"   |"<<endl;
                        cout<<" |                        Jumlah Kredit yang dikumpulkan s/d semester lalu : "<<x[i].kredit_out<<"   |"<<endl;
                        puts(" =================================================================================");
                        cout<<endl;
                        cout<<"  IP. Semester lalu            : "<<x[i].ip<<"\t\tPalangka Raya, "<<tbt;
                        cout<<"\n  Jumlah kredit yang diijinkan : "<<x[i].kredit_up<<"\t\tMahasiswa yang bersangkutan"<<endl;
                        cout<<endl;                                                                                                    
                        cout<<"  KRS dibuat 4 rangkap.\t\t\t\t\t"<<namaMHybs<<endl;
                        cout<<"  1. Putih         - Mahasiswa ybs\t\t\t\t--------------"<<endl;
                        cout<<"  2. Hijau        - Dosen PA\t\t\t\t"<<nimMHybs<<endl;
                        cout<<"  3. Merah       - Fakultas"<<endl;
                        cout<<"  4. Biru Tua   - BAAK"<<endl;
                        cout<<endl;
                        cout<<endl;
                        cout<<"\t\tMembenarkan :";                                                               cout<<"\t\t\t\tMengetahui :"<<endl;
                        cout<<"\tKetua Jurusan/Program Studi";                               cout<<"\t\tDosen Pembimbing Akademik"<<endl;
                        cout<<"";                                                                                                                     cout<<endl;    
                        cout<<"";                                                                                                                     cout<<endl;
                        cout<<"         "<<kajur;                                                                       cout<<"\t\t "<<dosenPA<<endl;
                        cout<<"        ---------------------------";   cout<<"\t\t-------------------------"<<endl;
                        cout<<"         NIP. "<<nipkajur;                                             cout<<"\t\t NIP. "<<nipPA<<endl;
            }

};
void gotoxy(int, int);

            int main()
            {
                        int pilihan;
                        mahasiswa saya;
                        mata_kuliah saya_juga;
awal :
                        saya.menu_utama();
                        gotoxy(27,7);cout<<"Pilihan [1/2/3] : "; cin>>pilihan;
                        cout<<endl;
                        if (pilihan==3) {
                           char sambutan[]="                  Copyright(C) by MUSTAFA ARIFIN  DBC 113 005";
           for(int x=0;sambutan[x]!=NULL;x++)
             {
               gotoxy(x,9);cout<<sambutan[x];
               for (double y=0;y<=9999000;y++){}
                                       cout<<endl;
             }

                           Sleep(3600);
                        return 0;
            }
                        switch (pilihan) {
                        case 1: saya.data_mahasiswa();
                                                saya_juga.matkul();
                                                break;
                        case 2: saya.cetak_data_mahasiswa();
                                                saya_juga.cetak_matkul();
                                                break;
                        default: gotoxy(12,9);cout<<"Maaf Pilihan Yang Anda Masukkan Salah!!!";
                        }
                        cin.get(); cin.get();
                        goto awal;
     }

            void gotoxy(int x, int y)
{
            HANDLE hConsoleOutput;
            COORD dwCursorPosition;

            cout.flush();
            dwCursorPosition.X = x;
            dwCursorPosition.Y = y;
            hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
            SetConsoleCursorPosition(hConsoleOutput,dwCursorPosition);
}



BAB III
PEMBAHASAN

Dalam program KRS ini kita mempunyai 2 kelas yaitu class mahasiswa dan class mata_kuliah yang menggunakan relasi Pewarisan karena class mahasiswaadalah sebagai kelas induk yang mewarisi sifatnya terhadap class mata_kuliah yang merupakan kelas anak.
·        Dalam program KRS ini kita membutuhkan beberapa header diantaranya.
#include<stdio.h>
#include<conio.h>
#include<iomanip.h>
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
Berikut ini fungsi-fungsi dari header diatas:
-        stdlib.h dipergunakan untuk prototype fungsi operasi matematika seperti : sqrt (akar kuadrat), sin, cos, tan, acos, asin, atan, atan2, cosh, sinh, tanh, exp, prexp, ldexp, log, log10, modf, pow, ceil, fabs, fmod
-        conio.h digunakan Fungsi-fungsi pustaka yang umum digunakan untuk menampilkan hasil seperti bila melibatkan clrscr( ), yaitu perintah untuk membersihkan layar dan fungsi getch( ) untuk menerima sembarang input keyboard dari user.
-        iomanip.h diperlukan bila melibatkan setw( ) yang bermanfaat untuk mengatur lebar dari suatu tampilan data.
-        Stdlib.h adalah fungsi-fungsi pustaka yang umum digunakan untuk menampilkan hasil prototype-nya berada di file judul.
-        iostream.h diperlukan pada program yang melibatkan objek cout dan cin
-        windows.hdan string.h diperlukan bila melibatkantipe string dan fungsi gotoxy digunakan untuk menempatkan kursor ditempat yang tidak dapat di capai bila kita hanya menggunakan sekuensi program saja.
Include Merupakan salah satu pengarah Prepocessor Directive yang
Download file lengkapnya disini.

Posting Komentar

0 Komentar