Senin, 04 Agustus 2014

Tugas Rancang sekaligus Tugas Akhir KBP (Konsep Bahasa Pemrograman)

          Oke, sesuai dengan judul post tersebut disini saya akan menjelaskan sedikit tentang Project kami yang merupakan salah satu Tugas Akhir Semester dari dosen pengampu Mata Kuliah Konsep Bahasa Pemrograman kami bapak Vyor. Sebetulnya ini tugas kelompok tetapi disini suruh menjelaskan per individu di blog masing-masing. Yak, langsung saja disini kami membuat project tentang penambahan data dan manipulasi data menggunakan Bahasa Pemrograan C / C++ tapi kami memakai bahasa C. Dan di project kami ini menggunakan single linked-list dan menggunakan 2 struct.

oke ini dia codingnya...

/* coding dibawah adalah library yang digunakan.*/
#include<conio.h>
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<sstream>
#include<iomanip>

/* selanjutnya library untuk menggunkan tipe data string dan lainya.*/
using namespace std;

/* ini untuk membuat variable struct Mata Kuliah dengan nama pMK*/
typedef struct MK *pMK;

/* selanjutnya ini pembuatan struct tahun_ajaran*/
struct tahun_ajaran
{
int tahun;
int semester;
};

/* selanjutnya ini pembuatan struct mata Kuliah, ini merupakan struct utamanya , nama Q adalah variable dari structnya dan untuk menghubungkan dengan struct tahun ajaran di dalam struc diberi inisialisasi tahun ajaran dengan nama ta.
Nah, Yang dimaksudkan dengan single linked list adalah karena disini pointer kita hanya memiliki satu list data, nah disini kan ada 2 struct maka struc-struct tersebut harus saling berhubungan sehingga menjadi satu list data saja, jika tidak berhubungan dan lebih dari satu list bukan termasuk single linked-list*/
struct MK
{
char nama_mk[99];
int sks;
char code[9];
tahun_ajaran ta;
pMK next;
}Q;

/* ini untuk inisialisasi penunujuk memorinya di struct MK dengan head dan tail.*/
pMK head,tail;

/* dan ini void ins untuk pengecekan data di struct MK dan mengeset head dan tail menjadi NULL*/
void ins(pMK *head,pMK *tail)
{
*head=NULL;
*tail=NULL;
}



/* nah,, disini Void untuk menambah data , dengan nama void tambah_data dnegan paramater pointer head
// dan tail di struct Mata Kuliah*/
int tambah_data(pMK *head, pMK *tail)
{
pMK baru;  /*ini merupakan pembuatan variabel baru untuk menunujuk ke struct yang kita buat tadi */
baru = (pMK)malloc(sizeof(Q)); // malloc disini untuk pengalokasian memori dalam sistem

if(baru!=NULL)
{
printf("===========================\n");
printf("== Input Data Matakuliah ==\n");
printf("=========================================\n");
printf("== !! gunakan tanda '_' untuk spasi !! ==\n");
printf("=========================================\n");
printf("\nMasukan Nama Matakuliah : "); scanf("%s",&baru->nama_mk);
printf("Masukan Kode Mata Kuliah : "); scanf("%s",&baru->code);
printf("Masukan SKS Mata Kuliah : "); scanf("%d",&baru->sks);
printf("Masukan Tahun Kuliah : "); scanf("%d",&baru->ta.tahun);
printf("Masukan Semester : "); scanf("%d",&baru->ta.semester);
baru->next=NULL;
if(*head==NULL)
{
*head=baru;
*tail=baru;
}
else
{
(*tail)-&gt;next=baru;
*tail=baru;
}
printf("Penambahan data sukses, silahkan tekan tombol ENTER untuk kembali :3");
getch();
}
return 0;
}


/* dan berikut ini void unutuk menampilkan data dengan nama tampil_data dan parameternya adalah head di
// struct Mata Kuliah, jika user tidak mnginputkan data terlebih dahulu maka akan memunculkan Data Masih
// Kosong.*/
void tampil_data(pMK head)
{
pMK p; int i=1;

printf("=======================\n");
printf("== Daftar Matakuliah ==\n");
printf("=======================\n");
if (head!=NULL)
{
cout<<setw(5)<<left<<"No."<<setw(14)<<left<<"Nama_MK"<<setw(14)<<left<<"Kode_MK"<<setw(14)<<left<<"SKS_MK"<<setw(14)<<left<<"Tahun_Ajaran"<<setw(14)<<left<<"Semester"<<endl;
p=head;
while (p!=NULL)
{
cout<<setw(5)<<left<<i<<setw(14)<<left<<p->nama_mk<<setw(14)<<left<<p->code<<setw(14)<<left<<p->sks<<setw(14)<<left<<p->ta.tahun<<setw(14)<<left<<p->ta.semester<<endl;
i++;
p=p->next;
}
}
else {
printf("Data Masih Kosong.\n");
}
printf("\nTekan Enter untuk kembali......");
}

/* dan ini void unutk menampilkan data SKS terbesar dan terkecil
, disini pada saat kita menampilkan data kenapa menggunakan c_str() ? karena disini kita ingin mengubah yang awalnya variabel char array diubah ke bentuk string untuk dapat dimasukan ke variabel string dan saat pencetakan kita menggunakan c_str() tersebut, jadi sewaktu menampilkan data  di tampung  di variabel string lalu saan pencetakan di beri c_str() agar bisa di rubah menjadi string unutk di tampilkan*/
 void sks_TT(pMK head) {
pMK p;

int max = 0; string namaMax = ""; string codeMax = "";
int min = 0; string namaMin = ""; string codeMin = "";

printf("====================================\n");
printf("== Data SKS Terbesar dan Terkecil ==\n");
printf("====================================\n");

if (head!=NULL)
{
p=head;
min = p->sks;
max = p->sks;
while (p!=NULL)
{
if (p->sks>=max){
max = p->sks;
namaMax = p->nama_mk;
codeMax = p->code;
}
if (p->sks<=min){
min = p->sks;
namaMin = p->nama_mk;
codeMin = p->code;
}
p=p->next;
}
printf("\n");
printf("SKS Terbesar adalah : %d\n", max);
printf("Dalam matakuliah %s dan yang bercode %s\n\n",namaMax.c_str(),codeMax.c_str());
printf("SKS Terkecil adalah : %d\n", min);
printf("Dalam matakuliah %s dan yang bercode %s\n",namaMin.c_str(),codeMin.c_str());
}
else {
printf("Data Masih Kosong.\n");
}
printf("\nTekan Enter untuk kembali......");
getch();
}

/* dan ini void untuk menampilkan salah satu data tahun Ajaran terbesar
*/
 void tAt(pMK head)
{
pMK p;
int max = 0;
string nama = "", code = "";
printf("================================\n");
printf("== Data Tahun Ajaran Terbesar ==\n");
printf("================================\n");
i
if (head!=NULL)
{
p=head;
while (p!=NULL)
{
if (p->ta.tahun>=max)
{
max = p->ta.tahun;
nama = p->nama_mk;
code = p->code;
}
p=p->next;
}
printf("\nTahun Ajaran Terbesar adalah : %d\n", max);
printf("Dalam matakuliah %s dan yang bercode %s\n",nama.c_str(),code.c_str());
}
else {
printf("Data Masih Kosong.\n");
}
printf("\nTekan Enter untuk kembali......");
getch();
}

/* ini untuk menampilkan semua data tahun ajaran genap
*/
 void genap(pMK head)
{
     pMK p; int i = 1;
     printf("======================================\n");
     printf("== Data Tahun Ajaran di Tahun Genap ==\n");
printf("======================================\n");
      
 if(head != NULL)
     {
         p=head;
         printf("\n");
         while(p!= NULL)
         {
           if(p->ta.tahun%2==0)
           {
              printf("%d. Matakuliah %s \nPada tahun %d, dengan kode%s\n\n",i ,p->nama_mk, p->ta.tahun, p->code);
              i++;
           }
           p=p->next;
         }
     }
     else {
printf("Data Masih Kosong.\n");
}
printf("\nTekan Enter untuk kembali......");
getch();
}

/* nah disini merupakan void utama yaitu void int main, dsini berisi tampilan menu dari program dan setiap
// pemanggilan di setiap nomor dipanggil void-void diatas sesuai dengan menunya.
*/
 int main(int argc, char** argv)
{
int pilih;
ins(&amp;head,&amp;tail);
menu :
system("cls");
printf("=====================\n");
printf("== Data Matakuliah ==\n");
printf("=====================\n");
printf("1. Tambahkan Data Matakuliah\n");
printf("2. SKS terkecil dan terbesar\n");
printf("3. Data matakuliah tahun ajaran terbesar\n");
printf("4. Daftar matakuliah ditahun genap\n");
printf("5. Daftar matakuliah\n");
printf("6. Keluar\n");
printf("Pilihan anda : ");
scanf("%d", &amp;pilih);

switch(pilih)
{
case 1:
system("cls");
tambah_data(&head,&tail);
break;
case 2 :
system("cls");
sks_TT(head);
break;
case 3:
system("cls");
tAt(head);
break;
case 4:
system("cls");
genap(head);
break;
case 5:
system("cls");
tampil_data(head);
getch();
break;
case 6:
system("cls");
printf("terimakasih :3");
getche();
_exit(0);
break;
default:
printf("Maaf, Pilihan Tidak Tersedia");
getche();
break;
}
goto menu;
return (EXIT_SUCCESS);
}


Output :
1. Menu

2. Input Data

3. Data SKS Terbesar dan Terkecil

4. Data Tahun Ajaran Terbesar

5. Data Tahun Ajaran di Tahun Genap

6. Daftar Mata Kuliah

7. Exit


        Nah itulah tadi penjelasan singkat saya dari coding kami diatas. Terima Kasih. :). Dan saya ucapkan terima kasih juga kepada kak Vyor yang telah mengajar kami selama satu semester ini :)

Tidak ada komentar:

Posting Komentar