Anda di halaman 1dari 15

Tugas Kelompok

Struktur Data

Anggota Kelompok G Kelas XA


Gelar Nurcahya - 2211600412
Didi Andriawan - 2211600537
Mahmudatun Hasanah - 221600867
Risti Jimah - 2211600875
Abdul Hamid - 2211600883
Risqa Taufik - 2211600891
Dosen : Dr. Ir. Gandung Triyono, S.Kom., M.Kom.

UNIVERSITAS BUDI LUHUR


Fakultas Teknologi Informasi
Magister Ilmu Komputer
2022
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023

Program Studi : Magister Ilmu Komputer


Mata Kuliah : Martikulasi
Hari/Tanggal : Sabtu, 20 Agustus 2022
Kelompok : XA
Dosen : Dr. Ir. Gandung Triyono, S.Kom., M.Kom.

A. Ketentuan Tugas:

1) Jawaban dikerjakan dalam bahasa C++


2) Dikerjakan secara berkelompok
3) Kelompok berjumlah 4 mahasiswa (dibagi urut presensi) lihat di daftar
4) Batas pengumpulan Hari Sabtu, 3 September 2022 pukul 18.00, jika terlambat maka tidak
dikoreksi
5) Jika ada jawaban yang sama, maka semua kelompok tidak diberikan nilai
5) Dokumen yang dikumpulkan (a) Data kelompok, (b) Source Code, (c) bukti hasil running
setiap fungsi

B. Tugas berupa pembuatkan program untuk menginput nilai mahasiswa .


Berikut ini beberpa contoh alur dan bentuk aplikasi yang harus di buat:

Tampilan Menu Utama sbb:

=============================
DATA NILAI
=============================
1. Input Mahasiswa
2. Input Matakuliah
3. Input Nilai Mahasiswa
4. Cetak Daftar Nilai Mahasiswa
=============================
Masukkan Pilihan [1...4]: ....
=============================

Jika dipilih Nomor 1, maka akan muncul tampilan sbb:

INPUT DATA MAHASISWA


==============================================
Input Mahasiswa: 1 (sesuai data yang diinput)
NIM = 0101
NAMA = Agus
JURUSAN = TI
Pilih X untuk kembali ke Menu Utama
============================================
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023

Program Studi : Magister Ilmu Komputer


Mata Kuliah : Martikulasi
Hari/Tanggal : Sabtu, 20 Agustus 2022
Kelompok : XA
Dosen : Dr. Ir. Gandung Triyono, S.Kom., M.Kom.

Jika dipilih Nomor 2, maka akan muncul tampilan sbb:

INPUT DATA MATAKULIAH


=========================================
Input Matakuliah: 1 (sesuai data yang diinput)
Kode Matakuliah = MT01
Nama Matakuliah = Algoritma
Bobot SKS =4
Pilih X untuk kembali ke Menu Utama
========================================

//Catatan: Input semua NIM, Nama dan Jurusan dari kelompok masing-masing

Jika dipilih Nomor 3, maka akan muncul tampilan sbb:


INPUT NILAI
=========================================================================
Input Nilai Mahasiswa: 1 (sesuai data yang diinput)
Input NIM = 0101
Nama = Agus (display/tampil)
Jurusan = TI (display/tampil)
Input Kode Matakuliah= MT01
Nama Matakuliah = Algoritma (display/tampil)
Bobot SKS = 4 (TI (display/tampil)
Input Nilai UTS = 80
Input Nilai TUGAS = 80
Input Nilai UAS = 100
Nilai Akhir = 88 (dihitung 0.3 x UTS + 0.3 x TUGAS + 0.4 x UAS)
Grade =A
Pilih X untuk kembali ke Menu Utama
=====================================================================================

Ketentuan Perhitungan Grade:


A= 85 <= Akhir <= 100
B= 75 <= Akhir < 85
C= 60 <= Akhir <75
D= 40 <= Akhir < 60
E= 0 <= Akhir < 40
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023

Program Studi : Magister Ilmu Komputer


Mata Kuliah : Martikulasi
Hari/Tanggal : Sabtu, 20 Agustus 2022
Kelompok : XA
Dosen : Dr. Ir. Gandung Triyono, S.Kom., M.Kom.

Jika dipilih Nomor 4, maka akan muncul tampilan sbb:

DATA NILAI MAHASISWA KELOMPOK A

=====================================================================================
NO. | NIM | NAMA | JURUSAN | KODE MTK| NAMA MTK | SKS | UTS | TUGAS |UAS | AKHIR | GRADE
=====================================================================================
1. | 0101 | Agus | TI | MT01 | Algoritma |4 | 80 | 80 | 100 | 88 | A
2. | 0102 | Budi | TI | MT01 | Algoritma |4 | 70 | 80 | 80 | 77 | B

=====================================================================================

Pilih X untuk kembali ke Menu Utama

Jawaban :
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023

Program Studi : Magister Ilmu Komputer


Mata Kuliah : Martikulasi
Hari/Tanggal : Sabtu, 20 Agustus 2022
Kelompok : XA
Dosen : Dr. Ir. Gandung Triyono, S.Kom., M.Kom.

Source Code

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

struct MataKuliah {
int pk;
string KodeMataKuliah;
string nama;
string sks;
};

struct Mahasiswa {
int pk;
string NIM;
string nama;
string jurusan;
};

struct NilaiMahasiswa {
int pk;
string NIM;
string nama;
string jurusan;
string kodeMataKuliah;
string namaMataKuliah;
string sks;
int nilaiUts;
int nilaiTugas;
int nilaiUas;
float nilaiAkhir;
string Grade;
};

int getOption();
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023

Program Studi : Magister Ilmu Komputer


Mata Kuliah : Martikulasi
Hari/Tanggal : Sabtu, 20 Agustus 2022
Kelompok : XA
Dosen : Dr. Ir. Gandung Triyono, S.Kom., M.Kom.

// mata kuliah
void checkDatabase(fstream &data);
void writeDataMatkul(fstream &data, int posisi, MataKuliah &inputMataKuliah);
int getDataSizeMataKuliah(fstream &data);
MataKuliah readDataMataKuliah(fstream &data, int posisi);
void addDataMataKuliah(fstream &data);
// void displayDataMataKuliah(fstream &data);

// mahasiswa
int getOption();
void checkDatabase(fstream &data);
void writeData(fstream &data, int posisi, Mahasiswa &inputMahasiswa);
int getDataSize(fstream &data);
Mahasiswa readDataMahasiswa(fstream &data, int posisi);
void addDataMahasiswa(fstream &data);
// void displayDataMahasiswa(fstream &data);

// Nilai Mahasiswa
int getOption();
void checkDatabase(fstream &data);
void writeDataNilaiMahasiswa(fstream &data, int posisi, NilaiMahasiswa &inputNilaiMahasiswa);
int getDataSizeNilaiMahasiswa(fstream &data);
NilaiMahasiswa readDataNilaiMahasiswa(fstream &data, int posisi);
void addDataNilaiMahasiswa(fstream &data);
void displayDataNilaiMahasiswa(fstream &data);

int main(){

fstream data;

checkDatabase(data);

int pilihan = getOption();


char is_continue;

enum option{CREATE_MAHASISWA = 1, CREATE_MATA_KULIAH,


INPUT_NILAI_MAHASISWA,CETAK_NILAI_MAHASISWA, FINISH};

while(pilihan != FINISH){
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023

Program Studi : Magister Ilmu Komputer


Mata Kuliah : Martikulasi
Hari/Tanggal : Sabtu, 20 Agustus 2022
Kelompok : XA
Dosen : Dr. Ir. Gandung Triyono, S.Kom., M.Kom.

switch(pilihan){
case CREATE_MAHASISWA:
cout << "Menambah data Mahasiswa" << endl;
addDataMahasiswa(data);
break;
case CREATE_MATA_KULIAH:
cout << "Menambah data Mata Kuliah" << endl;
addDataMataKuliah(data);
break;
case INPUT_NILAI_MAHASISWA:
cout << "Tampilkan data Mata Kuliah" << endl;
addDataNilaiMahasiswa(data);
break;
case CETAK_NILAI_MAHASISWA:
cout << "Tampilkan data Mata Kuliah" << endl;
displayDataNilaiMahasiswa(data);
break;
default:
cout << "Pilihan tidak ditemukan" << endl;
break;
}

label_continue:

cout << "Pilih Y Untuk Kembali Ke menu Utama?(Y/N) : ";


cin >> is_continue;
if ( (is_continue == 'y') | (is_continue == 'Y')){
pilihan = getOption();
} else if ((is_continue == 'n') | (is_continue == 'N')){
break;
} else {
goto label_continue;
}
}

cout << "akhir dari program" << endl;

cin.get();
return 0;
}
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023

Program Studi : Magister Ilmu Komputer


Mata Kuliah : Martikulasi
Hari/Tanggal : Sabtu, 20 Agustus 2022
Kelompok : XA
Dosen : Dr. Ir. Gandung Triyono, S.Kom., M.Kom.

void checkDatabase(fstream &data){


data.open("data.bin", ios::out | ios::in | ios::binary);

// check file ada atau tidak


if (data.is_open()){
cout << "database ditemukan" << endl;
} else {
cout << "database tidak ditemukan, buat database baru" << endl;
data.close();
data.open("data.bin", ios::trunc | ios::out | ios::in | ios::binary);
}
}

int getOption(){
int input;
system("clear");
// system("cls");
cout << "=============================" << endl;
cout << "\n Data Nilai" << endl;
cout << "=============================" << endl;
cout << "1. Input Mahasiswa" << endl;
cout << "2. Input Matakuliah" << endl;
cout << "3. Input Nilai Mahasiswa" << endl;
cout << "4. Cetak Daftar Nilai Mahasiswa" << endl;
cout << "5. Selesai" << endl;
cout << "=============================" << endl;
cout << "pilih [1-5]? : ";
cin >> input;
cin.ignore(numeric_limits<streamsize>::max(),'\n');
return input;
}

// mata kuliah
void addDataMataKuliah(fstream &data){

MataKuliah inputMataKuliah, lastMataKuliah;

int size = getDataSizeMataKuliah(data);

cout << "ukuran data : " << size << endl;

if(size == 0){
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023

Program Studi : Magister Ilmu Komputer


Mata Kuliah : Martikulasi
Hari/Tanggal : Sabtu, 20 Agustus 2022
Kelompok : XA
Dosen : Dr. Ir. Gandung Triyono, S.Kom., M.Kom.

inputMataKuliah.pk = 1;
} else {
lastMataKuliah = readDataMataKuliah(data,size);
cout << "pk = " << lastMataKuliah.pk << endl;
inputMataKuliah.pk = lastMataKuliah.pk + 1;
}

cout << "Nama: ";


getline(cin, inputMataKuliah.nama);
cout << "KodeMataKuliah: ";
getline(cin, inputMataKuliah.KodeMataKuliah);
cout << "sks: ";
getline(cin, inputMataKuliah.sks);

writeDataMatkul(data,size+1,inputMataKuliah);
}

int getDataSizeMataKuliah(fstream &data){


int start, end;
data.seekg(0,ios::beg);
start = data.tellg();
data.seekg(0,ios::end);
end = data.tellg();
return (end-start)/sizeof(MataKuliah);
}

void writeDataMatkul(fstream &data, int posisi, MataKuliah &inputMataKuliah){


data.seekp((posisi - 1)*sizeof(MataKuliah), ios::beg);
data.write(reinterpret_cast<char*>(&inputMataKuliah),sizeof(MataKuliah));
}

MataKuliah readDataMataKuliah(fstream &data, int posisi){


MataKuliah readMataKuliah;
data.seekg((posisi - 1)*sizeof(MataKuliah),ios::beg);
data.read(reinterpret_cast<char*>(&readMataKuliah),sizeof(MataKuliah));
return readMataKuliah;
}

// mahasiswa
void writeData(fstream &data, int posisi, Mahasiswa &inputMahasiswa){
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023

Program Studi : Magister Ilmu Komputer


Mata Kuliah : Martikulasi
Hari/Tanggal : Sabtu, 20 Agustus 2022
Kelompok : XA
Dosen : Dr. Ir. Gandung Triyono, S.Kom., M.Kom.

data.seekp((posisi - 1)*sizeof(Mahasiswa), ios::beg);


data.write(reinterpret_cast<char*>(&inputMahasiswa),sizeof(Mahasiswa));
}

Mahasiswa readDataMahasiswa(fstream &data, int posisi){


Mahasiswa readMahasiswa;
data.seekg((posisi - 1)*sizeof(Mahasiswa),ios::beg);
data.read(reinterpret_cast<char*>(&readMahasiswa),sizeof(Mahasiswa));
return readMahasiswa;
}

void addDataMahasiswa(fstream &data){

Mahasiswa inputMahasiswa, lastMahasiswa;

int size = getDataSize(data);

cout << "ukuran data : " << size << endl;

if(size == 0){
inputMahasiswa.pk = 1;
} else {
lastMahasiswa = readDataMahasiswa(data,size);
cout << "pk = " << lastMahasiswa.pk << endl;
inputMahasiswa.pk = lastMahasiswa.pk + 1;
}

cout << "Nama: ";


getline(cin, inputMahasiswa.nama);
cout << "Jurusan: ";
getline(cin, inputMahasiswa.jurusan);
cout << "NIM: ";
getline(cin, inputMahasiswa.NIM);

writeData(data,size+1,inputMahasiswa);
}

int getDataSize(fstream &data){


int start, end;
data.seekg(0,ios::beg);
start = data.tellg();
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023

Program Studi : Magister Ilmu Komputer


Mata Kuliah : Martikulasi
Hari/Tanggal : Sabtu, 20 Agustus 2022
Kelompok : XA
Dosen : Dr. Ir. Gandung Triyono, S.Kom., M.Kom.

data.seekg(0,ios::end);
end = data.tellg();
return (end-start)/sizeof(Mahasiswa);
}

// Nilai Mahasiswa
void addDataNilaiMahasiswa(fstream &data){

NilaiMahasiswa inputNilaiMahasiswa, lastNilaiMahasiswa;

int size = getDataSizeNilaiMahasiswa(data);

cout << "ukuran data : " << size << endl;

if(size == 0){
inputNilaiMahasiswa.pk = 1;
} else {
lastNilaiMahasiswa = readDataNilaiMahasiswa(data,size);
cout << "pk = " << lastNilaiMahasiswa.pk << endl;
inputNilaiMahasiswa.pk = lastNilaiMahasiswa.pk + 1;
}

cout << "Input NIM: ";


getline(cin, inputNilaiMahasiswa.NIM);
cout << "Input Nama Mahasiswa: ";
getline(cin, inputNilaiMahasiswa.nama);
cout << "Input Jurusan: ";
getline(cin, inputNilaiMahasiswa.jurusan);
cout << "Input Kode Mata Kuliah: ";
getline(cin, inputNilaiMahasiswa.kodeMataKuliah);
cout << "Input Nama Mata Kuliah ";
getline(cin, inputNilaiMahasiswa.namaMataKuliah);
cout << "Input sks: ";
getline(cin, inputNilaiMahasiswa.sks);
cout << "Input Nilai UTS: ";cin >> inputNilaiMahasiswa.nilaiUts;
cout << "Input Nilai Tugas: ";cin >> inputNilaiMahasiswa.nilaiTugas;
cout << "Input Nilai UAS: ";cin >> inputNilaiMahasiswa.nilaiUas;
// cout << "Input Nilai Akhir: ";cin >> inputNilaiMahasiswa.nilaiAkhir;
inputNilaiMahasiswa.nilaiAkhir = (0.3 * inputNilaiMahasiswa.nilaiUts + 0.3 *
inputNilaiMahasiswa.nilaiTugas + 0.4 * inputNilaiMahasiswa.nilaiUas);
// cout << "Input Grade: "; cin >> inputNilaiMahasiswa.Grade;
if (inputNilaiMahasiswa.nilaiAkhir >= 85){
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023

Program Studi : Magister Ilmu Komputer


Mata Kuliah : Martikulasi
Hari/Tanggal : Sabtu, 20 Agustus 2022
Kelompok : XA
Dosen : Dr. Ir. Gandung Triyono, S.Kom., M.Kom.

inputNilaiMahasiswa.Grade='A';
}else if (inputNilaiMahasiswa.nilaiAkhir >= 70 && inputNilaiMahasiswa.nilaiAkhir <85 ){
inputNilaiMahasiswa.Grade='B';
}else if(inputNilaiMahasiswa.nilaiAkhir >= 60 && inputNilaiMahasiswa.nilaiAkhir <75){
inputNilaiMahasiswa.Grade='C';
}else if (inputNilaiMahasiswa.nilaiAkhir >= 40 && inputNilaiMahasiswa.nilaiAkhir <60){
inputNilaiMahasiswa.Grade='D';
}else {
inputNilaiMahasiswa.Grade='E';
}
cout << "Nilai Akhir :";
cout << inputNilaiMahasiswa.nilaiAkhir << endl;
cout << "Grade :";
cout << inputNilaiMahasiswa.Grade << endl;

writeDataNilaiMahasiswa(data,size+1,inputNilaiMahasiswa);
}

int getDataSizeNilaiMahasiswa(fstream &data){


int start, end;
data.seekg(0,ios::beg);
start = data.tellg();
data.seekg(0,ios::end);
end = data.tellg();
return (end-start)/sizeof(NilaiMahasiswa);
}

void writeDataNilaiMahasiswa(fstream &data, int posisi, NilaiMahasiswa &inputNilaiMahasiswa){


data.seekp((posisi - 1)*sizeof(NilaiMahasiswa), ios::beg);
data.write(reinterpret_cast<char*>(&inputNilaiMahasiswa),sizeof(NilaiMahasiswa));
}

NilaiMahasiswa readDataNilaiMahasiswa(fstream &data, int posisi){


NilaiMahasiswa readNilaiMahasiswa;
data.seekg((posisi - 1)*sizeof(NilaiMahasiswa),ios::beg);
data.read(reinterpret_cast<char*>(&readNilaiMahasiswa),sizeof(NilaiMahasiswa));
return readNilaiMahasiswa;
}

void displayDataNilaiMahasiswa(fstream &data){


int size = getDataSizeNilaiMahasiswa(data);
NilaiMahasiswa showNilaiMahasiswa;
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023

Program Studi : Magister Ilmu Komputer


Mata Kuliah : Martikulasi
Hari/Tanggal : Sabtu, 20 Agustus 2022
Kelompok : XA
Dosen : Dr. Ir. Gandung Triyono, S.Kom., M.Kom.

cout << "no.\tpk.\tNIM.\tNama.\tJur.\tKode.\tNama.\tSKS.\tUTS.\tTugas.\tUAS.\tAkhir.\


tGrade" << endl;
for(int i = 1; i <= size; i++){
showNilaiMahasiswa = readDataNilaiMahasiswa(data,i);
cout << i << "\t";
cout << showNilaiMahasiswa.pk << "\t";
cout << showNilaiMahasiswa.NIM << "\t";
cout << showNilaiMahasiswa.nama << "\t";
cout << showNilaiMahasiswa.jurusan << "\t";
cout << showNilaiMahasiswa.kodeMataKuliah << "\t";
cout << showNilaiMahasiswa.namaMataKuliah << "\t";
cout << showNilaiMahasiswa.sks << "\t";
cout << showNilaiMahasiswa.nilaiUts << "\t";
cout << showNilaiMahasiswa.nilaiTugas << "\t";
cout << showNilaiMahasiswa.nilaiUas << "\t";
cout << showNilaiMahasiswa.nilaiAkhir << "\t";
cout << showNilaiMahasiswa.Grade << endl;
}
}

1. Screen Shot Menu 1


Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023

Program Studi : Magister Ilmu Komputer


Mata Kuliah : Martikulasi
Hari/Tanggal : Sabtu, 20 Agustus 2022
Kelompok : XA
Dosen : Dr. Ir. Gandung Triyono, S.Kom., M.Kom.

2. Screen Shot Menu 2


Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023

Program Studi : Magister Ilmu Komputer


Mata Kuliah : Martikulasi
Hari/Tanggal : Sabtu, 20 Agustus 2022
Kelompok : XA
Dosen : Dr. Ir. Gandung Triyono, S.Kom., M.Kom.

3. Screen Shot Menu 3

4. Screen Shot Menu 4

Anda mungkin juga menyukai