Struktur Data
A. Ketentuan Tugas:
=============================
DATA NILAI
=============================
1. Input Mahasiswa
2. Input Matakuliah
3. Input Nilai Mahasiswa
4. Cetak Daftar Nilai Mahasiswa
=============================
Masukkan Pilihan [1...4]: ....
=============================
//Catatan: Input semua NIM, Nama dan Jurusan dari kelompok masing-masing
=====================================================================================
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
=====================================================================================
Jawaban :
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023
Source Code
#include <iostream>
#include <fstream>
#include <string>
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
// 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);
while(pilihan != FINISH){
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023
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:
cin.get();
return 0;
}
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023
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){
if(size == 0){
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023
inputMataKuliah.pk = 1;
} else {
lastMataKuliah = readDataMataKuliah(data,size);
cout << "pk = " << lastMataKuliah.pk << endl;
inputMataKuliah.pk = lastMataKuliah.pk + 1;
}
writeDataMatkul(data,size+1,inputMataKuliah);
}
// mahasiswa
void writeData(fstream &data, int posisi, Mahasiswa &inputMahasiswa){
Fakultas Teknologi Informasi
SEMESTER GASAL 2022/2023
if(size == 0){
inputMahasiswa.pk = 1;
} else {
lastMahasiswa = readDataMahasiswa(data,size);
cout << "pk = " << lastMahasiswa.pk << endl;
inputMahasiswa.pk = lastMahasiswa.pk + 1;
}
writeData(data,size+1,inputMahasiswa);
}
data.seekg(0,ios::end);
end = data.tellg();
return (end-start)/sizeof(Mahasiswa);
}
// Nilai Mahasiswa
void addDataNilaiMahasiswa(fstream &data){
if(size == 0){
inputNilaiMahasiswa.pk = 1;
} else {
lastNilaiMahasiswa = readDataNilaiMahasiswa(data,size);
cout << "pk = " << lastNilaiMahasiswa.pk << endl;
inputNilaiMahasiswa.pk = lastNilaiMahasiswa.pk + 1;
}
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);
}