From 18ee5f86f0d05c34fc7d6b6a89aebbe63159562d Mon Sep 17 00:00:00 2001 From: Ikhwanul Abiyu Dhiyya'ul Haq <86358803+wannn-one@users.noreply.github.com> Date: Sun, 24 Jul 2022 19:41:18 +0700 Subject: [PATCH] added login for mahasiswa bug fix while adding matkul, separate global function to a header file, adding sksLulus, adding input of ips, count ipk --- include/function.hpp | 266 +++++++ include/mahasiswa.hpp | 87 +-- include/matkul.hpp | 5 +- sim.exe | Bin 221817 -> 238897 bytes src/mahasiswa.cpp | 73 +- src/main.cpp | 1730 +++++++++++++++++++++-------------------- src/matkul.cpp | 5 +- 7 files changed, 1248 insertions(+), 918 deletions(-) create mode 100644 include/function.hpp diff --git a/include/function.hpp b/include/function.hpp new file mode 100644 index 0000000..54596ce --- /dev/null +++ b/include/function.hpp @@ -0,0 +1,266 @@ +#include +#include +#include +#include +using namespace std; + +const int maxYear = 9999; +const int minYear = 1800; + +string unameAdm = "admin", passAdm = "admin", unameAdmInput, passAdmInput; +string unameMhs = "mahasiswa", passMhs = "mahasiswa", unameMhsInput, passMhsInput; +string unameDsn = "dosen", passDsn = "dosen", unameDsnInput, passDsnInput; +string unameTndk = "tendik", passTndk = "tendik", unameTndkInput, passTndkInput; +int userIndex = 0; + +// enum IN { +// IN_BACK = 8, +// IN_RET = 13 +// }; + +// std::string takePass(char sp = '*'){ +// string pw = ""; +// char ch_ipt; +// while (true){ +// ch_ipt = getch(); +// if (ch_ipt == IN::IN_RET){ +// cout << endl; +// return pw; +// }else if(ch_ipt == IN::IN_BACK && pw.length() != 0){ +// pw.pop_back(); +// cout << "\b \b"; +// continue; +// }else if(ch_ipt == IN::IN_BACK && pw.length() == 0){ +// continue; +// } +// pw.push_back(ch_ipt); +// cout << sp; +// } +// } + +bool isLeap(int yyInput){ + return (((yyInput % 4 == 0) && (yyInput % 100 != 0)) || (yyInput % 400 == 0)); +} + +bool dateValidation(int ddInput, int mmInput, int yyInput){ + if ((yyInput > maxYear) || (yyInput < minYear)) { + return false; + } + if ((mmInput < 1) || (mmInput > 12)){ + return false; + } + if ((ddInput < 1) || (ddInput > 31)){ + return false; + } + if (mmInput == 2){ + if (isLeap(yyInput)){ + return (ddInput <= 29); + }else{ + return (ddInput <= 28); + } + } + if ((mmInput == 4) || (mmInput == 6) || (mmInput == 9) || (mmInput == 11)){ + return (ddInput <= 30); + } + + return true; +} + +void defaultError(){ + cout << "Pilihan tidak tersedia!" << endl; + sleep(3); + system("cls || clear"); +} + +void login(){ + bool ulangAdm = false, ulangMhs = false, ulangDsn = false, ulangTndk = false, ulangTapiSelamatDatang = true; + int i = 0, pilihan; + while (ulangTapiSelamatDatang){ + system("cls || clear"); + cout << "Selamat Datang di Benedetta Academy" << endl; + cout << "1. Keluar program" << endl; + cout << "2. Masuk sebagai admin" << endl; + cout << "3. Masuk sebagai mahasiswa" << endl; + cout << "4. Masuk sebagai dosen" << endl; + cout << "5. Masuk sebagai tendik" << endl; + cout << "Masukkan pilihan anda : "; cin >> pilihan; + switch (pilihan){ + case 1: + { + system("cls || clear"); + exit(0); + } + case 2: + { + userIndex = 2; + ulangTapiSelamatDatang = false; + ulangAdm = true; + } + break; + case 3: + { + userIndex = 3; + ulangTapiSelamatDatang = false; + ulangMhs = true; + } + break; + case 4: + { + userIndex = 4; + ulangTapiSelamatDatang = false; + ulangDsn = true; + } + break; + case 5: + { + userIndex = 5; + ulangTapiSelamatDatang = false; + ulangTndk = true; + } + break; + default: + defaultError(); + continue; + } + } + while (ulangAdm){ + i++; + system("cls || clear"); + cout << "Masukkan username (admin) : "; cin >> unameAdmInput; cout << endl; + cout << "Masukkan password (admin) : "; cin >> passAdmInput; cout << endl; + if ((unameAdm.compare(unameAdmInput) == 0) && (passAdm.compare(passAdmInput) == 0)){ + ulangAdm = false; + i = 0; + break; + }else if((unameAdm.compare(unameAdmInput) != 0) && (passAdm.compare(passAdmInput) == 0)){ + cout << "Username anda salah!" << endl; + cout << "Percobaan ke " << i << " dari 5 percobaan"; + sleep(3); + if (i == 5){ + exit(0); + } + continue; + }else if ((unameAdm.compare(unameAdmInput) == 0) && (passAdm.compare(passAdmInput) != 0)){ + cout << "password anda salah!" << endl; + cout << "Percobaan ke " << i << " dari 5 percobaan"; + sleep(3); + if (i == 5){ + exit(0); + } + continue; + }else{ + cout << "Username dan password salah!" << endl; + cout << "Percobaan ke " << i << " dari 5 percobaan"; + sleep(3); + if (i == 5){ + exit(0); + } + continue; + } + } + while (ulangMhs){ + i++; + system("cls || clear"); + cout << "Masukkan username (mahasiwa) : "; cin >> unameMhsInput; cout << endl; + cout << "Masukkan password (mahasiswa) : "; cin >> passMhsInput; cout << endl; + if ((unameMhs.compare(unameMhsInput) == 0) && (passMhs.compare(passMhsInput) == 0)){ + ulangMhs = false; + i = 0; + break; + }else if((unameMhs.compare(unameMhsInput) != 0) && (passMhs.compare(passMhsInput) == 0)){ + cout << "Username anda salah!" << endl; + cout << "Percobaan ke " << i << " dari 5 percobaan"; + sleep(3); + if (i == 5){ + exit(0); + } + continue; + }else if ((unameMhs.compare(unameMhsInput) == 0) && (passMhs.compare(passMhsInput) != 0)){ + cout << "password anda salah!" << endl; + cout << "Percobaan ke " << i << " dari 5 percobaan"; + sleep(3); + if (i == 5){ + exit(0); + } + continue; + }else{ + cout << "Username dan password salah!" << endl; + cout << "Percobaan ke " << i << " dari 5 percobaan"; + sleep(3); + if (i == 5){ + exit(0); + } + continue; + } + } + while (ulangDsn){ + i++; + system("cls || clear"); + cout << "Masukkan username (dosen) : "; cin >> unameDsnInput; cout << endl; + cout << "Masukkan password (dosen) : "; cin >> passDsnInput; cout << endl; + if ((unameDsn.compare(unameDsnInput) == 0) && (passDsn.compare(passDsnInput) == 0)){ + ulangDsn = false; + i = 0; + break; + }else if((unameDsn.compare(unameDsnInput) != 0) && (passDsn.compare(passDsnInput) == 0)){ + cout << "Username anda salah!" << endl; + cout << "Percobaan ke " << i << " dari 5 percobaan"; + sleep(3); + if (i == 5){ + exit(0); + } + continue; + }else if ((unameDsn.compare(unameDsnInput) == 0) && (passDsn.compare(passDsnInput) != 0)){ + cout << "password anda salah!" << endl; + cout << "Percobaan ke " << i << " dari 5 percobaan"; + sleep(3); + if (i == 5){ + exit(0); + } + continue; + }else{ + cout << "Username dan password salah!" << endl; + cout << "Percobaan ke " << i << " dari 5 percobaan"; + sleep(3); + if (i == 5){ + exit(0); + } + continue; + } + } + while (ulangTndk){ + i++; + system("cls || clear"); + cout << "Masukkan username (tendik) : "; cin >> unameTndkInput; cout << endl; + cout << "Masukkan password (tendik) : "; cin >> passTndkInput; cout << endl; + if ((unameTndk.compare(unameTndkInput) == 0) && (passTndk.compare(passTndkInput) == 0)){ + ulangTndk = false; + i = 0; + break; + }else if((unameTndk.compare(unameTndkInput) != 0) && (passTndk.compare(passTndkInput) == 0)){ + cout << "Username anda salah!" << endl; + cout << "Percobaan ke " << i << " dari 5 percobaan"; + sleep(3); + if (i == 5){ + exit(0); + } + continue; + }else if ((unameTndk.compare(unameTndkInput) == 0) && (passTndk.compare(passTndkInput) != 0)){ + cout << "password anda salah!" << endl; + cout << "Percobaan ke " << i << " dari 5 percobaan"; + sleep(3); + if (i == 5){ + exit(0); + } + continue; + }else{ + cout << "Username dan password salah!" << endl; + cout << "Percobaan ke " << i << " dari 5 percobaan"; + sleep(3); + if (i == 5){ + exit(0); + } + continue; + } + } +} \ No newline at end of file diff --git a/include/mahasiswa.hpp b/include/mahasiswa.hpp index c0b9e0a..ab56bad 100644 --- a/include/mahasiswa.hpp +++ b/include/mahasiswa.hpp @@ -1,50 +1,49 @@ #ifndef __MAHASISWA_HPP__ #define __MAHASISWA_HPP__ - - + #include -#include -#include +#include #include "include/person.hpp" - -class mahasiswa : public person { -private: - std::string nrp; - std::string departemen; - int tahunmasuk; - int semesterke; - int skslulus; - float ipk; - std::set matkulDiambil; - std::vector ips; - -public: - mahasiswa(int id, std::string nama, int dd, int mm, int yy, std::string nrp, std::string departemen, int tahunmasuk, int semesterke, std::set matkulDiambil); - std::string getNRP(); - void setNRP(std::string newNRP); - - std::string getDepartemen(); - void setDepartemen(std::string newDepartemen); - - void setSemester(int semesterke); - int getSemester(); - - void setTahunMasuk(int tahunmasuk); - int getTahunMasuk(); - - // void setSKSLulus(int skslulus); - // int getSKSLulus(); - - // float getIPK(); - // void setIPK(float ips); - // void hitungIPK(); - - // void setIPS(int semester, float ips); - // float getIPS(int semester); - // std::vector getAllIPS(); - - void setMatkulDiambil(std::string matkul); - std::set getMatkulDiambil(); -}; +#include "include/matkul.hpp" + +class mahasiswa : public person{ + private: + std::string nrp; + std::string departemen; + int tahunmasuk; + int semesterke; + int skslulus; + float ipk; + int jumlahMatkul; + // std::vectormatkulTerambil; + std::vector ips; + + public: + mahasiswa(int id, std::string nama, int dd, int mm, int yy, std::string nrp, std::string departemen, int tahunmasuk, int semesterke, int sksLulus, int jumlahMatkul); + std::string getNRP(); + void setNRP(std::string newNRP); + + std::string getDepartemen(); + void setDepartemen(std::string newDepartemen); + + void setSemester(int semesterke); + int getSemester(); + + void setTahunMasuk(int tahunmasuk); + int getTahunMasuk(); + + void setSKSLulus(int skslulus); + int getSKSLulus(); + + float getIPK(); + void setIPK(float ips); + void hitungIPK(); + + void setIPS(int semester, float ips); + float getIPS(int semester); + std::vector getAllIPS(); + + std::vectormatkulTerambil; + }; #endif diff --git a/include/matkul.hpp b/include/matkul.hpp index 99b9793..a9d657e 100644 --- a/include/matkul.hpp +++ b/include/matkul.hpp @@ -1,8 +1,6 @@ #ifndef __MATKUL_HPP__ #define __MATKUL_HPP__ -#include -#include class matkul{ private: int idMatkul; @@ -10,6 +8,7 @@ class matkul{ std::string kodeMatkul; int sksMatkul; public: + matkul(); matkul(int idMatkul, std::string namaMatkul, std::string kodeMatkul, int sksMatkul); int getIdMatkul(); @@ -23,6 +22,8 @@ class matkul{ int getSKSMatkul(); void setSKSMatkul(int sksMatkul); + + void middleErase(int index); }; #endif \ No newline at end of file diff --git a/sim.exe b/sim.exe index e71102ad8ba913d521649b82b6c8302d2127010a..aef0c499350113bdf9ada2914a45eb34848d9448 100644 GIT binary patch literal 238897 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 delta 75016 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 diff --git a/src/mahasiswa.cpp b/src/mahasiswa.cpp index 27e0ed3..9018edd 100644 --- a/src/mahasiswa.cpp +++ b/src/mahasiswa.cpp @@ -2,16 +2,15 @@ #include #include #include "include/mahasiswa.hpp" +#include "include/matkul.hpp" -mahasiswa::mahasiswa(int id, std::string nama, int dd, int mm, int yy, std::string nrp, std::string departemen, int tahunmasuk, int semesterke, std::set matkulDiambil) - : person(id, nama, dd, mm, yy), nrp(nrp), departemen(departemen), tahunmasuk(tahunmasuk), semesterke(semesterke), matkulDiambil(matkulDiambil) +mahasiswa::mahasiswa(int id, std::string nama, int dd, int mm, int yy, std::string nrp, std::string departemen, int tahunmasuk, int semesterke, int skslulus, int jumlahMatkul) + : person(id, nama, dd, mm, yy), nrp(nrp), departemen(departemen), tahunmasuk(tahunmasuk), semesterke(semesterke), skslulus(skslulus), jumlahMatkul(jumlahMatkul) { - // this->ipk = 0.0; - // //this->semesterke = 1; - // this->skslulus = 0; - - // this->ips = std::vector(14,0); + this->ipk = 0.0; + this->ips = std::vector(14,0); + this->jumlahMatkul = 0; } std::string mahasiswa::getNRP(){ @@ -50,49 +49,37 @@ int mahasiswa::getSemester() return this->semesterke; } -void mahasiswa::setMatkulDiambil(std::string matkul){ - matkulDiambil.insert(matkul); -} -std::set mahasiswa::getMatkulDiambil(){ - return this->matkulDiambil; -} - -// void mahasiswa::setSKSLulus(int skslulus) -// { -// this->skslulus = skslulus; +// void mahasiswa::setMatkulDiambil(std::string matkul){ +// matkulDiambil.insert(matkul); // } - -// int mahasiswa::getSKSLulus() -// { -// return this->skslulus; +// std::set mahasiswa::getMatkulDiambil(){ +// return this->matkulDiambil; // } -// void mahasiswa::hitungIPK() -// { - -// } +void mahasiswa::setSKSLulus(int skslulus){ + this->skslulus = skslulus; +} +int mahasiswa::getSKSLulus(){ + return this->skslulus; +} +void mahasiswa::setIPS(int semester, float ips){ + // semester mulai dari 1 + if (semester < 15) { + this->ips[semester-1] = ips; + } +} -// void mahasiswa::setIPS(int semester, float ips) -// { -// // semester mulai dari 1 -// if (semester < 15) { -// this->ips[semester-1] = ips; -// this->hitungIPK(); -// } -// } +float mahasiswa::getIPS(int semester){ + if (semester < 15) + return this->ips[semester-1]; -// float mahasiswa::getIPS(int semester) -// { -// if (semester < 15) -// return this->ips[semester-1]; + return -1.0; +} -// return -1.0; -// } -// std::vector mahasiswa::getAllIPS() -// { -// return this->ips; -// } +std::vector mahasiswa::getAllIPS(){ + return this->ips; +} diff --git a/src/main.cpp b/src/main.cpp index 7a81fd1..69163af 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,4 @@ #include -#include #include #include #include @@ -12,936 +11,1013 @@ #include "include/dosen.hpp" #include "include/tendik.hpp" #include "include/matkul.hpp" - -const int maxYear = 9999; -const int minYear = 1800; +#include "include/function.hpp" using namespace std; -string uname = "admin", pass = "admin", unameInput, passInput; -bool kabisatNgga(int yyInput){ - return (((yyInput % 4 == 0) && (yyInput % 100 != 0)) || (yyInput % 400 == 0)); -} - -bool validasiTanggal(int ddInput, int mmInput, int yyInput){ - if ((yyInput > maxYear) || (yyInput < minYear)) { - return false; - } - if ((mmInput < 1) || (mmInput > 12)){ - return false; - } - if ((ddInput < 1) || (ddInput > 31)){ - return false; - } - if (mmInput == 2){ - if (kabisatNgga(yyInput)){ - return (ddInput <= 29); - }else{ - return (ddInput <= 28); - } - } - if ((mmInput == 4) || (mmInput == 6) || (mmInput == 9) || (mmInput == 11)){ - return (ddInput <= 30); - } - - return true; -} -void defaultError(){ - cout << "Pilihan tidak tersedia!" << endl; - sleep(3); - system("cls || clear"); -} - -void login(){ - bool ulang = false, ulangTapiSelamatDatang = true; - int i = 0, pilihan; - while (ulangTapiSelamatDatang){ - system("cls || clear"); - cout << "Selamat Datang di Benedetta Academy" << endl; - cout << "1. Keluar program" << endl; - cout << "2. Masuk sebagai admin" << endl; - cout << "Masukkan pilihan anda : "; cin >> pilihan; - switch (pilihan){ - case 1: - system("cls || clear"); - exit(0); - case 2: - ulangTapiSelamatDatang = false; - ulang = true; - break; - default: - defaultError(); - } - } - while (ulang){ - i++; - system("cls || clear"); - cout << "Masukkan username (admin) : "; cin >> unameInput; cout << endl; - cout << "Masukkan password (admin) : "; cin >> passInput; cout << endl; - if ((uname.compare(unameInput) == 0) && (pass.compare(passInput) == 0)){ - ulang = false; - break; - }else if((uname.compare(unameInput) != 0) && (pass.compare(passInput) == 0)){ - cout << "Username anda salah!" << endl; - cout << "Percobaan ke " << i << " dari 5 percobaan"; - sleep(3); - if (i == 5){ - exit(0); - } - continue; - }else if ((uname.compare(unameInput) == 0) && (pass.compare(passInput) != 0)){ - cout << "Password anda salah!" << endl; - cout << "Percobaan ke " << i << " dari 5 percobaan"; - sleep(3); - if (i == 5){ - exit(0); - } - continue; - }else{ - cout << "Username dan password salah!" << endl; - cout << "Percobaan ke " << i << " dari 5 percobaan"; - sleep(3); - if (i == 5){ - exit(0); - } - continue; - } - } -} - int main(){ vector recMhs; vector recDosen; vector recTendik; vector recMatkul; - int menu_terpilih; string nama, nrp, npp, departemen, pendidikan, unit, namaMatkul, kodeMatkul; - int dd, mm, yy, tahunmasuk, semester, sksMatkul; - set matkulTerambil; - int idMhs = 0, idDsn = 0, idTndk = 0, idMatkul = 0; - int noID = 0; + long long unsigned int dd, mm, yy, tahunmasuk, semester, sksMatkul, sksLulus, jumlahMatkul = 0, idMhs = 0, idDsn = 0, idTndk = 0, idMatkul = 0, noID = 0, menu_terpilih; + double ipSem = 0.0; + program: login(); - while(1) { - cout << "Selamat datang di Benedetta Academy" << endl << endl; - cout << "Data statistik:" << endl; - cout << " 1. Jumlah Mahasiswa : " << recMhs.size() << " mahasiswa" << endl; - cout << " 2. Jumlah Dosen : " << recDosen.size() << " dosen" << endl; - cout << " 3. Jumlah Tenaga Kependidikan : " << recTendik.size() << " tendik" << endl; - cout << " 4. Jumlah Matkul : " << recMatkul.size() << " matkul" << endl; - cout << endl; - cout << "Menu: " << endl; - cout << " 1. Tambah Mahasiswa" << endl; - cout << " 2. Tambah Dosen" << endl; - cout << " 3. Tambah Tenaga Kependidikan" << endl; - cout << " 4. Tampilkan semua Mahasiswa" << endl; - cout << " 5. Tampilkan semua Dosen" << endl; - cout << " 6. Tampilkan semua Tenaga Kependidikan" << endl; - cout << " 7. Tambah Matkul" << endl; - cout << " 8. Tampilkan semua Matkul" < Silahkan memilih salah satu: "; - cin >> menu_terpilih; - - switch (menu_terpilih) { - case 1: - { - if (recMatkul.empty()){ - cout << "Belum ada matkul ditambahkan!"; - sleep(3); - system("cls || clear"); - break; - } - int pilihan; - bool flag = true, flagMatkul = true, flagTTL = true; - // ofstream outfile; - // outfile.open("databaseMhs.txt"); - while (flag){ - system("cls || clear"); - idMhs++; - cout << "Masukkan Nama : "; cin.ignore(); getline(cin, nama); cout << endl; - while (flagTTL){ - cout << "Masukkan TTL (dd mm yy) : "; cin >> dd >> mm >> yy; cout << endl; - - if (validasiTanggal(dd, mm, yy)){ - flagTTL = false; - }else{ - cout << "TTL yang anda masukkan tidak valid!" << endl; - continue; - } - } - cout << "Masukkan NRP : "; cin >> nrp; cout << endl; - cout << "Masukkan Departemen : "; cin.ignore(); getline(cin, departemen); cout << endl; - cout << "Masukkan Tahun Masuk : "; cin >> tahunmasuk; cout << endl; - cout << "Masukkan Semester : "; cin >> semester; cout << endl << endl; - - for (long long unsigned int i = 0; i < recMatkul.size(); i++){ - cout << recMatkul[i].getIdMatkul() << ". Nama Matkul : " << recMatkul[i].getMatkul() << endl << endl; - } - while (flagMatkul){ - cout << "Masukkan ID matkul yang diambil : "; cin >> noID; - cout << endl; - - matkulTerambil.insert(recMatkul[noID-1].getMatkul()); - cout << endl; - cout << "Ingin mengambil matkul lagi?" << endl; - cout << "1. Ya" << endl; - cout << "2. Tidak" << endl; - cout << "Pilihan anda : "; cin >> pilihan; - switch (pilihan){ - case 1: - continue; - case 2: - { - flagMatkul = false; - cout << "Matkul Mahasiswa " << nama << " berhasil ditambahkan!" << endl << endl; - sleep(3); - } - break; - default: - defaultError(); - break; - } - } - system("cls || clear"); - - //outfile.close(); + while (userIndex == 2){ + while(1) { + system("cls || clear"); + cout << "Selamat datang di Benedetta Academy" << endl << endl; + cout << "Data statistik:" << endl; + cout << " 1. Jumlah Mahasiswa : " << recMhs.size() << " mahasiswa" << endl; + cout << " 2. Jumlah Dosen : " << recDosen.size() << " dosen" << endl; + cout << " 3. Jumlah Tenaga Kependidikan : " << recTendik.size() << " tendik" << endl; + cout << " 4. Jumlah Matkul : " << recMatkul.size() << " matkul" << endl; + cout << endl; + cout << "Menu: " << endl; + cout << " 1. Tambah Mahasiswa" << endl; + cout << " 2. Tambah Dosen" << endl; + cout << " 3. Tambah Tenaga Kependidikan" << endl; + cout << " 4. Tampilkan semua Mahasiswa" << endl; + cout << " 5. Tampilkan semua Dosen" << endl; + cout << " 6. Tampilkan semua Tenaga Kependidikan" << endl; + cout << " 7. Tambah Matkul" << endl; + cout << " 8. Tampilkan semua Matkul" < Silahkan memilih salah satu: "; + cin >> menu_terpilih; - mahasiswa mhs(idMhs, nama, dd, mm, yy, nrp, departemen, tahunmasuk, semester, matkulTerambil); - recMhs.push_back(mhs); - - cout << "Apakah anda ingin mengisi mahasiswa lagi?" << endl; - cout << " 1. Ya" << endl; - cout << " 2. Tidak" << endl; - cout << "Pilihan anda : "; - cin >> pilihan; - if (pilihan == 1){ - continue; - }else if(pilihan == 2){ - flag = false; + switch (menu_terpilih) { + case 1: + { + if (recMatkul.empty()){ + cout << "Belum ada matkul ditambahkan!" << endl; + sleep(3); system("cls || clear"); + break; } - } - } - break; - case 2: - { - int pilihan; - bool flag = true, flagTTL = true; - while (flag){ - system("cls || clear"); - idDsn++; - cout << "Masukkan Nama : "; cin.ignore(); getline(cin, nama); cout << endl; + int pilihan; + bool flag = true, flagTTL = true; + while (flag){ + system("cls || clear"); + idMhs++; + cout << "Masukkan Nama : "; cin.ignore(); getline(cin, nama); cout << endl; + while (flagTTL){ + cout << "Masukkan TTL (dd mm yy) : "; cin >> dd >> mm >> yy; cout << endl; - while (flagTTL){ - cout << "Masukkan TTL (dd mm yy) : "; cin >> dd >> mm >> yy; cout << endl; + if (dateValidation(dd, mm, yy)){ + flagTTL = false; + }else{ + cout << "TTL yang anda masukkan tidak valid!" << endl; + continue; + } + } + cout << "Masukkan NRP : "; cin >> nrp; cout << endl; + cout << "Masukkan Departemen : "; cin.ignore(); getline(cin, departemen); cout << endl; + cout << "Masukkan Tahun Masuk : "; cin >> tahunmasuk; cout << endl; + cout << "Masukkan Semester : "; cin >> semester; cout << endl; + cout << "Masukkan SKS Lulus : "; cin >> sksLulus; cout << endl; - if (validasiTanggal(dd, mm, yy)){ - flagTTL = false; - }else{ - cout << "TTL yang anda masukkan tidak valid!" << endl; + mahasiswa mhs(idMhs, nama, dd, mm, yy, nrp, departemen, tahunmasuk, semester, sksLulus, jumlahMatkul); + recMhs.push_back(mhs); + + cout << "Apakah anda ingin mengisi mahasiswa lagi?" << endl; + cout << " 1. Ya" << endl; + cout << " 2. Tidak" << endl; + cout << "Pilihan anda : "; + cin >> pilihan; + if (pilihan == 1){ continue; + }else if(pilihan == 2){ + flag = false; + system("cls || clear"); } } - - cout << "Masukkan NPP : "; cin >> npp; cout << endl; - cout << "Masukkan Departemen : "; cin.ignore(); getline(cin, departemen); cout << endl; - cout << "Masukkan Pendidikan Terakhir : "; cin.ignore(); getline(cin, pendidikan); cout << endl; - - dosen dsn(idDsn,nama,dd,mm,yy,npp,departemen,pendidikan); - recDosen.push_back(dsn); - cout << "Dosen baru berhasil ditambahkan!" << endl << endl; - - cout << "Apakah anda ingin mengisi dosen lagi?" << endl; - cout << " 1. Ya" << endl; - cout << " 2. Tidak" << endl; - cout << "Masukkan pilihan anda : "; - cin >> pilihan; - if (pilihan == 1){ - continue; - }else if(pilihan == 2){ - flag = false; - system("cls || clear"); - } } - } - break; - case 3: - { - int pilihan; - bool flag = true, flagTTL = true; - while (flag) + break; + case 2: { - system("cls || clear"); - idTndk++; - cout << "Masukkan Nama : "; cin.ignore(); getline(cin, nama); cout << endl; + int pilihan; + bool flag = true, flagTTL = true; + while (flag){ + system("cls || clear"); + idDsn++; + cout << "Masukkan Nama : "; cin.ignore(); getline(cin, nama); cout << endl; - while (flagTTL){ - cout << "Masukkan TTL (dd mm yy) : "; cin >> dd >> mm >> yy; cout << endl; + while (flagTTL){ + cout << "Masukkan TTL (dd mm yy) : "; cin >> dd >> mm >> yy; cout << endl; - if (validasiTanggal(dd, mm, yy)){ - flagTTL = false; - }else{ - cout << "TTL yang anda masukkan tidak valid!" << endl; - continue; + if (dateValidation(dd, mm, yy)){ + flagTTL = false; + }else{ + cout << "TTL yang anda masukkan tidak valid!" << endl; + continue; + } } - } - cout << "Masukkan NPP : "; cin >> npp; cout << endl; - cout << "Masukkan Unit : "; cin.ignore(); getline(cin, unit); cout << endl; + cout << "Masukkan NPP : "; cin >> npp; cout << endl; + cout << "Masukkan Departemen : "; cin.ignore(); getline(cin, departemen); cout << endl; + cout << "Masukkan Pendidikan Terakhir : "; cin.ignore(); getline(cin, pendidikan); cout << endl; - tendik tndk(idTndk,nama,dd,mm,yy,npp,unit); - recTendik.push_back(tndk); - cout << "Tendik baru berhasil ditambahkan!" << endl << endl; - - cout << "Apakah anda ingin mengisi tendik lagi?" << endl; - cout << " 1. Ya" << endl; - cout << " 2. Tidak" << endl; - cout << "Masukkan pilihan anda : "; - cin >> pilihan; - if (pilihan == 1){ - continue; - }else if(pilihan == 2){ - flag = false; - system("cls || clear"); + dosen dsn(idDsn,nama,dd,mm,yy,npp,departemen,pendidikan); + recDosen.push_back(dsn); + cout << "Dosen baru berhasil ditambahkan!" << endl << endl; + + cout << "Apakah anda ingin mengisi dosen lagi?" << endl; + cout << " 1. Ya" << endl; + cout << " 2. Tidak" << endl; + cout << "Masukkan pilihan anda : "; + cin >> pilihan; + if (pilihan == 1){ + continue; + }else if(pilihan == 2){ + flag = false; + system("cls || clear"); + } } } - } - break; - case 4: - { - if (recMhs.empty()){ - system("cls || clear"); - cout << "Tidak ada Mahasiswa terdaftar!"; - sleep(3); - system("cls || clear"); - break; - } - int pilihan; - bool flag = true; - while (flag){ - system("cls || clear"); - for (long long unsigned int i = 0; i < recMhs.size(); i++){ - cout << recMhs[i].getId() << ". Nama Mahasiswa : " << recMhs[i].getNama() << endl; - cout << " NRP : " << recMhs[i].getNRP() << endl << endl; - } + break; + case 3: + { + int pilihan; + bool flag = true, flagTTL = true; + while (flag) + { + system("cls || clear"); + idTndk++; + cout << "Masukkan Nama : "; cin.ignore(); getline(cin, nama); cout << endl; - cout << "Masukkan ID Mahasiswa yang ingin dilihat detailnya : "; cin >> noID; - system("cls || clear"); - cout << recMhs[noID-1].getId() << ". Nama Mahasiswa : " << recMhs[noID-1].getNama() << endl; - cout << " NRP : " << recMhs[noID-1].getNRP() << endl; - cout << " Tanggal Lahir : " << recMhs[noID-1].getTglLahir() << "/" << recMhs[noID-1].getBulanLahir() << "/" << recMhs[noID-1].getTahunLahir() << endl; - cout << " Departemen : " << recMhs[noID-1].getDepartemen() << endl; - cout << " Tahun Masuk : " << recMhs[noID-1].getTahunMasuk() << endl; - cout << " Semester : " << recMhs[noID-1].getSemester() << endl; - cout << " Matkul diambil : " << endl; - set::iterator it; - for (it = matkulTerambil.begin(); it != matkulTerambil.end(); it++){ - cout << " " << *it << endl; - } - - cout << endl; - cout << "1. Kembali ke Daftar Mahasiswa " << endl; - cout << "2. Kembali ke Menu Utama " << endl; - cout << "3. Edit Detail Mahasiswa" << endl; - cout << "Masukkan pilihan anda : "; cin >> pilihan; + while (flagTTL){ + cout << "Masukkan TTL (dd mm yy) : "; cin >> dd >> mm >> yy; cout << endl; + + if (dateValidation(dd, mm, yy)){ + flagTTL = false; + }else{ + cout << "TTL yang anda masukkan tidak valid!" << endl; + continue; + } + } + + cout << "Masukkan NPP : "; cin >> npp; cout << endl; + cout << "Masukkan Unit : "; cin.ignore(); getline(cin, unit); cout << endl; - switch (pilihan){ - case 1: - continue; - case 2: - { + tendik tndk(idTndk,nama,dd,mm,yy,npp,unit); + recTendik.push_back(tndk); + cout << "Tendik baru berhasil ditambahkan!" << endl << endl; + + cout << "Apakah anda ingin mengisi tendik lagi?" << endl; + cout << " 1. Ya" << endl; + cout << " 2. Tidak" << endl; + cout << "Masukkan pilihan anda : "; + cin >> pilihan; + if (pilihan == 1){ + continue; + }else if(pilihan == 2){ flag = false; system("cls || clear"); } - break; - case 3: - { - system("cls || clear"); - int uhuk; - bool uhuk1 = true; - while (uhuk1) + } + } + break; + case 4: + { + if (recMhs.empty()){ + system("cls || clear"); + cout << "Tidak ada Mahasiswa terdaftar!"; + sleep(3); + system("cls || clear"); + break; + } + int pilihan; + bool flag = true; + while (flag){ + system("cls || clear"); + for (long long unsigned int i = 0; i < recMhs.size(); i++){ + cout << recMhs[i].getId() << ". Nama Mahasiswa : " << recMhs[i].getNama() << endl; + cout << " NRP : " << recMhs[i].getNRP() << endl << endl; + } + + cout << "Masukkan ID Mahasiswa yang ingin dilihat detailnya : "; cin >> noID; + if (noID > recMhs.size()){ + cout << endl << "Mahasiswa dengan id " << noID << " tidak ditemukan." << endl; + sleep(3); + continue; + } + system("cls || clear"); + cout << recMhs[noID-1].getId() << ". Nama Mahasiswa : " << recMhs[noID-1].getNama() << endl; + cout << " NRP : " << recMhs[noID-1].getNRP() << endl; + cout << " Tanggal Lahir : " << recMhs[noID-1].getTglLahir() << "/" << recMhs[noID-1].getBulanLahir() << "/" << recMhs[noID-1].getTahunLahir() << endl; + cout << " Departemen : " << recMhs[noID-1].getDepartemen() << endl; + cout << " Tahun Masuk : " << recMhs[noID-1].getTahunMasuk() << endl; + cout << " Semester : " << recMhs[noID-1].getSemester() << endl; + cout << " SKS Lulus : " << recMhs[noID-1].getSKSLulus() << endl; + + cout << endl; + cout << "1. Input Matkul Diambil" << endl; + cout << "2. Input IP Semester" << endl; + cout << "3. Lihat IP Semester & IP Kumulatif" << endl; + cout << "4. Kembali ke Daftar Mahasiswa " << endl; + cout << "5. Kembali ke Menu Utama " << endl; + cout << "6. Edit Detail Mahasiswa" << endl; + cout << "Masukkan pilihan anda : "; cin >> pilihan; + + switch (pilihan){ + case 1: { - cout << "Data yang ingin diubah : " << endl; - cout << "1. Nama" << endl; - cout << "2. NRP" << endl; - cout << "3. Tanggal Lahir" << endl; - cout << "4. Departemen" << endl; - cout << "5. Tahun Masuk" << endl; - cout << "6. Semester" << endl; - cout << "7. Matkul diambil" << endl; - cout << "8. Kembali ke daftar mahasiswa" << endl; - cout << "Masukkan pilihan : "; cin >> uhuk; - switch (uhuk){ - case 1: - { - cout << "Masukkan nama baru : "; - cin.ignore(); getline(cin, nama); - recMhs[noID-1].setNama(nama); - cout << "Nama berhasil diubah!"; - sleep(3); - uhuk1 = false; - } - break; - case 2: - { - cout << "Masukkan NRP baru : "; - cin.ignore(); cin >> nrp; - recMhs[noID-1].setNRP(nrp); - cout << "NRP berhasil dirubah!"; - sleep(3); - uhuk1 = false; - } - break; - case 3: - { - bool flagTTL = true; - while (flagTTL){ - cout << "Masukkan TTL (dd mm yy) : "; cin >> dd >> mm >> yy; cout << endl; - - if (validasiTanggal(dd, mm, yy)){ - flagTTL = false; - }else{ - cout << "TTL yang anda masukkan tidak valid!" << endl; - continue; - } - } - recMhs[noID-1].setTglLahir(dd,mm,yy); - cout << "TTL berhasil dirubah!"; - sleep(3); - uhuk1 = false; + bool flag = true; + while (flag){ + system("cls || clear"); + cout << "Daftar Mata Kuliah" << endl; + for (long long unsigned int i = 0; i < recMatkul.size(); i++){ + cout << recMatkul[i].getIdMatkul() << ". " << "Nama Matkul : "<> idMatkul; + + if (idMatkul > recMatkul.size()){ + cout << "Mata Kuliah dengan id " << idMatkul << " tidak ditemukan." << endl; sleep(3); - uhuk1 = false; + continue; } - break; - case 5: - { - cout << "Masukkan tahun masuk baru : "; - cin.ignore(); cin >> tahunmasuk; - recMhs[noID-1].setTahunMasuk(tahunmasuk); - cout << "Tahun masuk berhasil diubah!"; - sleep(3); - uhuk1 = false; + + int tempID = recMatkul[idMatkul-1].getIdMatkul(); + string tempNamaMatkul = recMatkul[idMatkul-1].getMatkul(); + string tempKode = recMatkul[idMatkul-1].getKodeMatkul(); + int tempSKS = recMatkul[idMatkul-1].getSKSMatkul(); + + matkul temp; + recMhs[noID-1].matkulTerambil.push_back(temp); + recMhs[noID-1].matkulTerambil[jumlahMatkul].setIdMatkul(tempID); + recMhs[noID-1].matkulTerambil[jumlahMatkul].setMatkul(tempNamaMatkul); + recMhs[noID-1].matkulTerambil[jumlahMatkul].setKodeMatkul(tempKode); + recMhs[noID-1].matkulTerambil[jumlahMatkul].setSKSMatkul(tempSKS); + jumlahMatkul++; + + cout << "Mata Kuliah berhasil ditambahkan!" << endl; + sleep(3); + + cout << "Ingin menambah mata kuliah lagi?" << endl; + cout << "1. Ya" << endl; + cout << "2. Tidak" << endl; + cout << "Pilihan anda : "; + int pilih; + cin >> pilih; + switch (pilih){ + case 1: + continue; + case 2: + flag = false; + break; + default: + defaultError(); + break; } - break; - case 6: - { - cout << "Masukkan Semester baru : "; - cin.ignore(); cin >> semester; - recMhs[noID-1].setSemester(semester); - cout << "Semester berhasil diubah!"; + } + } + break; + case 2: + { + cout << "Silahkan input IP Semester Mahasiswa " << recMhs[noID-1].getNama() << " (Maks IP Semester 4.0)" << endl; + for (int i = 1; i <= recMhs[noID-1].getSemester(); i++){ + cout << "IP Semester " << i << " : "; cin >> ipSem; + if (ipSem > 4.0){ + cout << "IP Semester tidak boleh lebih dari 4.0!" << endl; sleep(3); - uhuk1 = false; + continue; } + recMhs[noID-1].setIPS(i, ipSem); + } + cout << "IP Semester Mahasiswa " << recMhs[noID-1].getNama() << " berhasil ditambahkan!" << endl; + sleep(3); + } + break; + case 3: + { + if (recMhs[noID-1].getIPS(1) == 0 && recMhs[noID-1].getIPS(2) == 0){ + cout << "IP Semester " << recMhs[noID-1].getNama() << " belum diinput!" << endl; + sleep(3); break; - case 7: - { - int choice; - system("cls || clear"); - set::iterator it; - for (it = matkulTerambil.begin(); it != matkulTerambil.end(); it++){ - cout << *it << endl; + } + + for (int i = 1; i <= recMhs[noID-1].getSemester(); i++){ + cout << "IP Semester " << i << " : " << recMhs[noID-1].getIPS(i) << endl; + } + + float ipk = 0, totalIPK = 0; + for (int i = 1; i <= recMhs[noID-1].getSemester(); i++){ + totalIPK += recMhs[noID-1].getIPS(i); + } + + ipk += totalIPK / (recMhs[noID-1].getSemester()); + cout << "IP Kumulatif : " << ipk << endl; + + cout << "Press any key to continue..." << endl; system("pause || read"); + } + break; + case 4: + continue; + case 5: + { + flag = false; + system("cls || clear"); + } + break; + case 6: + { + system("cls || clear"); + int uhuk; + bool uhuk1 = true; + while (uhuk1) + { + cout << "Data yang ingin diubah : " << endl; + cout << "1. Nama" << endl; + cout << "2. NRP" << endl; + cout << "3. Tanggal Lahir" << endl; + cout << "4. Departemen" << endl; + cout << "5. Tahun Masuk" << endl; + cout << "6. Semester" << endl; + cout << "7. SKS Lulus" << endl; + cout << "8. Mata Kuliah diambil" << endl; + cout << "9. Kembali ke daftar mahasiswa" << endl; + cout << "Masukkan pilihan : "; cin >> uhuk; + switch (uhuk){ + case 1: + { + cout << "Masukkan nama baru : "; + cin.ignore(); getline(cin, nama); + recMhs[noID-1].setNama(nama); + cout << "Nama berhasil diubah!"; + sleep(3); + uhuk1 = false; } - cout << "1. Menambah Matkul Mahasiswa " << recMhs[noID-1].getNama() << endl; - cout << "2. Hapus semua matkul diambil" << endl; - cout << "Pilihan anda : "; cin >> choice; - switch(choice){ - case 1: - { - for (long long unsigned int i = 0; i < recMatkul.size(); i++){ - cout << recMatkul[i].getIdMatkul() << ". Nama Matkul : " << recMatkul[i].getMatkul() << endl << endl; - } - bool flagMatkul = true; - while (flagMatkul){ - cout << "Masukkan ID matkul yang diambil : "; cin >> noID; - cout << endl; - - matkulTerambil.insert(recMatkul[noID-1].getMatkul()); - cout << endl; - cout << "Ingin mengambil matkul lagi?" << endl; - cout << "1. Ya" << endl; - cout << "2. Tidak" << endl; - cout << "Pilihan anda : "; cin.ignore(); cin >> pilihan; - switch (pilihan){ - case 1: - continue; - case 2: - { - flagMatkul = false; - cout << "Matkul Mahasiswa " << nama << " berhasil ditambahkan!" << endl << endl; - sleep(3); - system("cls || clear"); - } - break; - default: - defaultError(); - break; - } - } + break; + case 2: + { + cout << "Masukkan NRP baru : "; + cin.ignore(); cin >> nrp; + recMhs[noID-1].setNRP(nrp); + cout << "NRP berhasil dirubah!"; + sleep(3); + uhuk1 = false; + } + break; + case 3: + { + bool flagTTL = true; + while (flagTTL){ + cout << "Masukkan TTL (dd mm yy) : "; cin >> dd >> mm >> yy; cout << endl; + + if (dateValidation(dd, mm, yy)){ + flagTTL = false; + }else{ + cout << "TTL yang anda masukkan tidak valid!" << endl; + continue; } - break; - // case 2: + } + recMhs[noID-1].setTglLahir(dd,mm,yy); + cout << "TTL berhasil dirubah!"; + sleep(3); + uhuk1 = false; + } + break; + case 4: + { + cout << "Masukkan departemen baru : "; + cin.ignore(); getline(cin, departemen); + recMhs[noID-1].setDepartemen(departemen); + cout << "Departemen berhasil diubah!"; + sleep(3); + uhuk1 = false; + } + break; + case 5: + { + cout << "Masukkan tahun masuk baru : "; + cin.ignore(); cin >> tahunmasuk; + recMhs[noID-1].setTahunMasuk(tahunmasuk); + cout << "Tahun masuk berhasil diubah!"; + sleep(3); + uhuk1 = false; + } + break; + case 6: + { + cout << "Masukkan Semester baru : "; + cin.ignore(); cin >> semester; + recMhs[noID-1].setSemester(semester); + cout << "Semester berhasil diubah!"; + sleep(3); + uhuk1 = false; + } + break; + case 7: + { + cout << "Masukkan SKS Lulus baru : "; + cin.ignore(); cin >> sksLulus; + recMhs[noID-1].setSKSLulus(sksLulus); + cout << "SKS Lulus berhasil diubah!"; + sleep(3); + uhuk1 = false; + } + break; + case 8: + { + int choice, index = 0; + cout << "Mata Kuliah Mahasiswa " << recMhs[noID-1].getNama() << endl << endl; + for (long long unsigned int i = 0; i < recMhs[noID-1].matkulTerambil.size(); i++){ + index++; + cout << index << ". " << "Nama Matkul : "<< recMhs[noID-1].matkulTerambil[i].getMatkul() << endl; + cout << " Kode : " << recMhs[noID-1].matkulTerambil[i].getKodeMatkul() << endl; + cout << " SKS : " << recMhs[noID-1].matkulTerambil[i].getSKSMatkul() << endl; + } + cout << endl; + cout << "Menu Edit Matkul Terambil" << endl; + // cout << "1. Hapus Mata Kuliah yang sudah diambil" << endl; + cout << "1. Hapus semua Mata Kuliah diambil" << endl; + cout << "2. Kembali ke menu sebelumnya" << endl; + cout << "Pilihan anda : "; cin >> choice; + + switch (choice){ + // case 1: // { - // int matkulDihapus; - // set::iterator it; - // for (it = matkulTerambil.begin(); it != matkulTerambil.end(); it++){ - // cout << *it << endl; - // } - // set::iterator itr; - // cout << "Masukkan matkul yang ingin dihapus : "; cin.ignore(); cin >> matkulDihapus; - // itr = matkulTerambil.begin(); - // for (int i = 0; i < matkulDihapus; i++){ - // itr++; - // } - // matkulTerambil.erase(itr); - // cout << "Matkul berhasil dihapus!"; + // int index; + // cout << "Masukkan ID Matkul yang ingin dihapus : " << endl; cin >> index; + // vector::iterator it; + // vector::iterator it; + // ! Must be fixed + // } - case 2: - { - matkulTerambil.clear(); - cout << "Matkul mahasiswa berhasil dihapus!" << endl; - sleep(3); + // break; + case 1: + { + recMhs[noID-1].matkulTerambil.clear(); + cout << "Seluruh Matkul terambil sudah terhapus!" << endl; + sleep(3); + system("cls || clear"); + } + break; + case 2: system("cls || clear"); - } - break; - default: - { + continue; + default: defaultError(); - } - break; + break; } - } - break; - case 8: - { - uhuk1 = false; + } break; + case 9: + { + uhuk1 = false; + } + break; + default: + { + defaultError(); + } + continue; } - default: - { - defaultError(); - } - continue; } + break; } - break; + default: + defaultError(); + continue; } - default: - defaultError(); - continue; } } - } - break; - case 5: - { - if (recDosen.empty()){ - system("cls || clear"); - cout << "Tidak ada Dosen terdaftar!"; - sleep(3); - system("cls || clear"); - break; - } - int pilihan; - bool flag = true; - while (flag){ - system("cls || clear"); - for (long long unsigned int i = 0; i < recDosen.size(); i++){ - cout << recDosen[i].getId() << ". Nama Dosen : " << recDosen[i].getNama() << endl; - cout << " NPP : " << recDosen[i].getNPP() << endl << endl; + break; + case 5: + { + if (recDosen.empty()){ + system("cls || clear"); + cout << "Tidak ada Dosen terdaftar!"; + sleep(3); + system("cls || clear"); + break; } - - cout << "Masukkan ID Dosen yang ingin dilihat detailnya : "; cin >> noID; - system("cls || clear"); - cout << recDosen[noID-1].getId() << ". Nama Dosen : " << recDosen[noID-1].getNama() << endl; - cout << " NPP : " << recDosen[noID-1].getNPP() << endl; - cout << " Tanggal Lahir : " << recDosen[noID-1].getTglLahir() << "/" << recDosen[noID-1].getBulanLahir() << "/" << recDosen[noID-1].getTahunLahir() << endl; - cout << " Departemen : " << recDosen[noID-1].getDepartemen() << endl; - cout << " Pendidikan Terakhir : " << recDosen[noID-1].getPendidikan() << endl; - - cout << "1. Kembali ke Daftar Dosen " << endl; - cout << "2. Kembali ke Menu Utama " << endl; - cout << "3. Edit Detail Dosen" << endl; - cout << "Masukkan pilihan anda : "; cin >> pilihan; - - switch (pilihan){ - case 1: - continue; - case 2: - { - flag = false; - system("cls || clear"); + int pilihan; + bool flag = true; + while (flag){ + system("cls || clear"); + for (long long unsigned int i = 0; i < recDosen.size(); i++){ + cout << recDosen[i].getId() << ". Nama Dosen : " << recDosen[i].getNama() << endl; + cout << " NPP : " << recDosen[i].getNPP() << endl << endl; } - break; - case 3: - { - system("cls || clear"); - int uhuk; - bool uhuk1 = true; - while (uhuk1) + + cout << "Masukkan ID Dosen yang ingin dilihat detailnya : "; cin >> noID; + if (noID > recDosen.size()){ + cout << endl << "Dosen dengan id " << noID << " tidak ditemukan." << endl; + continue; + } + + system("cls || clear"); + cout << recDosen[noID-1].getId() << ". Nama Dosen : " << recDosen[noID-1].getNama() << endl; + cout << " NPP : " << recDosen[noID-1].getNPP() << endl; + cout << " Tanggal Lahir : " << recDosen[noID-1].getTglLahir() << "/" << recDosen[noID-1].getBulanLahir() << "/" << recDosen[noID-1].getTahunLahir() << endl; + cout << " Departemen : " << recDosen[noID-1].getDepartemen() << endl; + cout << " Pendidikan Terakhir : " << recDosen[noID-1].getPendidikan() << endl; + + cout << "1. Kembali ke Daftar Dosen " << endl; + cout << "2. Kembali ke Menu Utama " << endl; + cout << "3. Edit Detail Dosen" << endl; + cout << "Masukkan pilihan anda : "; cin >> pilihan; + + switch (pilihan){ + case 1: + continue; + case 2: { - cout << "Data yang ingin diubah : " << endl; - cout << "1. Nama" << endl; - cout << "2. NRP" << endl; - cout << "3. Tanggal Lahir" << endl; - cout << "4. Departemen" << endl; - cout << "5. Pendidikan Terakhir" << endl; - cout << "6. Kembali ke daftar dosen" << endl; - cout << "Masukkan pilihan : "; cin >> uhuk; - switch (uhuk){ - case 1: - { - cout << "Masukkan nama baru : "; - cin.ignore(); getline(cin, nama); - recDosen[noID-1].setNama(nama); - cout << "Nama berhasil diubah!" << endl; - sleep(3); - uhuk1 = false; - } - break; - case 2: - { - cout << "Masukkan NPP baru : "; - cin.ignore(); cin >> npp; - recDosen[noID-1].setNPP(npp); - cout << "NRP berhasil dirubah!" << endl; - sleep(3); - uhuk1 = false; - } - break; - case 3: - { - bool flagTTL = true; - while (flagTTL){ - cout << "Masukkan TTL (dd mm yy) : "; cin >> dd >> mm >> yy; cout << endl; - - if (validasiTanggal(dd, mm, yy)){ - flagTTL = false; - }else{ - cout << "TTL yang anda masukkan tidak valid!" << endl; - continue; + flag = false; + system("cls || clear"); + } + break; + case 3: + { + system("cls || clear"); + int uhuk; + bool uhuk1 = true; + while (uhuk1) + { + cout << "Data yang ingin diubah : " << endl; + cout << "1. Nama" << endl; + cout << "2. NRP" << endl; + cout << "3. Tanggal Lahir" << endl; + cout << "4. Departemen" << endl; + cout << "5. Pendidikan Terakhir" << endl; + cout << "6. Kembali ke daftar dosen" << endl; + cout << "Masukkan pilihan : "; cin >> uhuk; + switch (uhuk){ + case 1: + { + cout << "Masukkan nama baru : "; + cin.ignore(); getline(cin, nama); + recDosen[noID-1].setNama(nama); + cout << "Nama berhasil diubah!" << endl; + sleep(3); + uhuk1 = false; + } + break; + case 2: + { + cout << "Masukkan NPP baru : "; + cin.ignore(); cin >> npp; + recDosen[noID-1].setNPP(npp); + cout << "NRP berhasil dirubah!" << endl; + sleep(3); + uhuk1 = false; + } + break; + case 3: + { + bool flagTTL = true; + while (flagTTL){ + cout << "Masukkan TTL (dd mm yy) : "; cin >> dd >> mm >> yy; cout << endl; + + if (dateValidation(dd, mm, yy)){ + flagTTL = false; + }else{ + cout << "TTL yang anda masukkan tidak valid!" << endl; + continue; + } } + recDosen[noID-1].setTglLahir(dd,mm,yy); + cout << "TTL berhasil dirubah!" << endl; + sleep(3); + uhuk1 = false; } - recDosen[noID-1].setTglLahir(dd,mm,yy); - cout << "TTL berhasil dirubah!" << endl; - sleep(3); - uhuk1 = false; - } - break; - case 4: - { - cout << "Masukkan departemen baru : "; - cin.ignore(); getline(cin, departemen); - recDosen[noID-1].setDepartemen(departemen); - cout << "Departemen berhasil diubah!" << endl; - sleep(3); - uhuk1 = false; - } - break; - case 5: - { - cout << "Masukkan pendidikan terakhir baru : "; - cin.ignore(); getline(cin, pendidikan); - recDosen[noID-1].setPendidikan(pendidikan); - cout << "Pendidikan terakhir berhasil diubah!" << endl; - sleep(3); - uhuk1 = false; - } - break; - case 6: - { - uhuk1 = false; break; + case 4: + { + cout << "Masukkan departemen baru : "; + cin.ignore(); getline(cin, departemen); + recDosen[noID-1].setDepartemen(departemen); + cout << "Departemen berhasil diubah!" << endl; + sleep(3); + uhuk1 = false; + } + break; + case 5: + { + cout << "Masukkan pendidikan terakhir baru : "; + cin.ignore(); getline(cin, pendidikan); + recDosen[noID-1].setPendidikan(pendidikan); + cout << "Pendidikan terakhir berhasil diubah!" << endl; + sleep(3); + uhuk1 = false; + } + break; + case 6: + { + uhuk1 = false; + break; + } + default: + { + defaultError(); + } + continue; } - default: - { - defaultError(); - } - continue; } + break; } - break; + default: + defaultError(); + continue; } - default: - defaultError(); - continue; } } - } - break; - case 6: - { - if (recTendik.empty()){ - system("cls || clear"); - cout << "Tidak ada Tendik terdaftar!"; - sleep(3); - system("cls || clear"); - break; - } - int pilihan; - bool flag = true; - while (flag){ - system("cls || clear"); - for (long long unsigned int i = 0; i < recTendik.size(); i++){ - cout << recTendik[i].getId() << ". Nama Tendik : " << recTendik[i].getNama() << endl; - cout << " NPP : " << recTendik[i].getNPP() << endl << endl; + break; + case 6: + { + if (recTendik.empty()){ + system("cls || clear"); + cout << "Tidak ada Tendik terdaftar!"; + sleep(3); + system("cls || clear"); + break; } - cout << "Masukkan ID Tendik yang ingin dilihat detailnya : "; cin >> noID; - system("cls || clear"); - cout << recTendik[noID-1].getId() << ". Nama Tendik : " << recTendik[noID-1].getNama() << endl; - cout << " NPP : " << recTendik[noID-1].getNPP() << endl; - cout << " Tanggal Lahir : " << recTendik[noID-1].getTglLahir() << "/" << recTendik[noID-1].getBulanLahir() << "/" << recTendik[noID-1].getTahunLahir() << endl; - cout << " Unit : " << recTendik[noID-1].getUnit() << endl; - - cout << "1. Kembali ke Daftar Tendik " << endl; - cout << "2. Kembali ke Menu Utama " << endl; - cout << "3. Edit Detail Tendik" << endl; - cout << "Masukkan pilihan anda : "; cin >> pilihan; - - switch (pilihan){ - case 1: - continue; - case 2: - { - flag = false; - system("cls || clear"); + int pilihan; + bool flag = true; + while (flag){ + system("cls || clear"); + for (long long unsigned int i = 0; i < recTendik.size(); i++){ + cout << recTendik[i].getId() << ". Nama Tendik : " << recTendik[i].getNama() << endl; + cout << " NPP : " << recTendik[i].getNPP() << endl << endl; } - break; - case 3: - { - system("cls || clear"); - int uhuk; - bool uhuk1 = true; - while (uhuk1) + cout << "Masukkan ID Tendik yang ingin dilihat detailnya : "; cin >> noID; + if (noID > recTendik.size()){ + cout << endl << "Dosen dengan id " << noID << " tidak ditemukan." << endl; + continue; + } + + system("cls || clear"); + cout << recTendik[noID-1].getId() << ". Nama Tendik : " << recTendik[noID-1].getNama() << endl; + cout << " NPP : " << recTendik[noID-1].getNPP() << endl; + cout << " Tanggal Lahir : " << recTendik[noID-1].getTglLahir() << "/" << recTendik[noID-1].getBulanLahir() << "/" << recTendik[noID-1].getTahunLahir() << endl; + cout << " Unit : " << recTendik[noID-1].getUnit() << endl; + + cout << "1. Kembali ke Daftar Tendik " << endl; + cout << "2. Kembali ke Menu Utama " << endl; + cout << "3. Edit Detail Tendik" << endl; + cout << "Masukkan pilihan anda : "; cin >> pilihan; + + switch (pilihan){ + case 1: + continue; + case 2: { - cout << "Data yang ingin diubah : " << endl; - cout << "1. Nama" << endl; - cout << "2. NPP" << endl; - cout << "3. Tanggal Lahir" << endl; - cout << "4. Unit" << endl; - cout << "5. Kembali ke daftar tendik" << endl; - cout << "Masukkan pilihan : "; cin >> uhuk; - switch (uhuk){ - case 1: - { - cout << "Masukkan nama baru : "; - cin.ignore(); getline(cin, nama); - recTendik[noID-1].setNama(nama); - cout << "Nama berhasil diubah!" << endl; - sleep(3); - uhuk1 = false; - } - break; - case 2: - { - cout << "Masukkan NPP baru : "; - cin.ignore(); cin >> npp; - recTendik[noID-1].setNPP(npp); - cout << "NRP berhasil dirubah!" << endl; - sleep(3); - uhuk1 = false; - } - break; - case 3: - { - bool flagTTL = true; - while (flagTTL){ - cout << "Masukkan TTL (dd mm yy) : "; cin >> dd >> mm >> yy; cout << endl; - - if (validasiTanggal(dd, mm, yy)){ - flagTTL = false; - }else{ - cout << "TTL yang anda masukkan tidak valid!" << endl; - continue; + flag = false; + system("cls || clear"); + } + break; + case 3: + { + system("cls || clear"); + int uhuk; + bool uhuk1 = true; + while (uhuk1) + { + cout << "Data yang ingin diubah : " << endl; + cout << "1. Nama" << endl; + cout << "2. NPP" << endl; + cout << "3. Tanggal Lahir" << endl; + cout << "4. Unit" << endl; + cout << "5. Kembali ke daftar tendik" << endl; + cout << "Masukkan pilihan : "; cin >> uhuk; + switch (uhuk){ + case 1: + { + cout << "Masukkan nama baru : "; + cin.ignore(); getline(cin, nama); + recTendik[noID-1].setNama(nama); + cout << "Nama berhasil diubah!" << endl; + sleep(3); + uhuk1 = false; + } + break; + case 2: + { + cout << "Masukkan NPP baru : "; + cin.ignore(); cin >> npp; + recTendik[noID-1].setNPP(npp); + cout << "NRP berhasil dirubah!" << endl; + sleep(3); + uhuk1 = false; + } + break; + case 3: + { + bool flagTTL = true; + while (flagTTL){ + cout << "Masukkan TTL (dd mm yy) : "; cin >> dd >> mm >> yy; cout << endl; + + if (dateValidation(dd, mm, yy)){ + flagTTL = false; + }else{ + cout << "TTL yang anda masukkan tidak valid!" << endl; + continue; + } } + recTendik[noID-1].setTglLahir(dd,mm,yy); + cout << "TTL berhasil dirubah!" << endl; + sleep(3); + uhuk1 = false; } - recTendik[noID-1].setTglLahir(dd,mm,yy); - cout << "TTL berhasil dirubah!" << endl; - sleep(3); - uhuk1 = false; - } - break; - case 4: - { - cout << "Masukkan unit baru : "; - cin.ignore(); getline(cin, unit); - recTendik[noID-1].setUnit(unit); - cout << "Unit berhasil diubah!" << endl; - sleep(3); - uhuk1 = false; - } - break; - case 5: - { - uhuk1 = false; break; + case 4: + { + cout << "Masukkan unit baru : "; + cin.ignore(); getline(cin, unit); + recTendik[noID-1].setUnit(unit); + cout << "Unit berhasil diubah!" << endl; + sleep(3); + uhuk1 = false; + } + break; + case 5: + { + uhuk1 = false; + break; + } + default: + { + defaultError(); + } + continue; } - default: - { - defaultError(); - } - continue; } } + break; + default: + defaultError(); + continue; } - break; - default: - defaultError(); - continue; } } - } - break; - case 7: - { - int pilihan; - bool flag = true; - while (flag){ - system("cls || clear"); - idMatkul++; - cout << "Masukkan Nama Mata Kuliah : "; cin.ignore(); getline(cin, namaMatkul); cout << endl; - cout << "Masukkan Kode Matkul : "; cin >> kodeMatkul; cout << endl; - cout << "Masukkan SKS Matkul : "; cin >> sksMatkul; cout << endl; - - matkul mtkl(idMatkul, namaMatkul, kodeMatkul, sksMatkul); - recMatkul.push_back(mtkl); - - cout << "Apakah anda ingin mengisi matkul lagi?" << endl; - cout << " 1. Ya" << endl; - cout << " 2. Tidak" << endl; - cout << "Masukkan pilihan anda : "; - cin >> pilihan; - if (pilihan == 1){ - continue; - }else if(pilihan == 2){ - flag = false; + break; + case 7: + { + int pilihan; + bool flag = true; + while (flag){ system("cls || clear"); + idMatkul++; + cout << "Masukkan Nama Mata Kuliah : "; cin.ignore(); getline(cin, namaMatkul); cout << endl; + cout << "Masukkan Kode Matkul : "; cin >> kodeMatkul; cout << endl; + cout << "Masukkan SKS Matkul : "; cin >> sksMatkul; cout << endl; + + matkul mtkl(idMatkul, namaMatkul, kodeMatkul, sksMatkul); + recMatkul.push_back(mtkl); + + cout << "Apakah anda ingin mengisi matkul lagi?" << endl; + cout << " 1. Ya" << endl; + cout << " 2. Tidak" << endl; + cout << "Masukkan pilihan anda : "; + cin >> pilihan; + if (pilihan == 1){ + continue; + }else if(pilihan == 2){ + flag = false; + system("cls || clear"); + } } - } - break; - } - break; - case 8: - { - if (recMatkul.empty()){ - system("cls || clear"); - cout << "Tidak ada Matkul terdaftar!"; - sleep(3); - system("cls || clear"); break; } - int pilihan; - bool flag = true; - while (flag){ - system("cls || clear"); - for (long long unsigned int i = 0; i < recMatkul.size(); i++){ - cout << recMatkul[i].getIdMatkul() << ". Nama Matkul : " << recMatkul[i].getMatkul() << endl << endl; + break; + case 8: + { + if (recMatkul.empty()){ + system("cls || clear"); + cout << "Tidak ada Matkul terdaftar!"; + sleep(3); + system("cls || clear"); + break; } + int pilihan; + bool flag = true; + while (flag){ + system("cls || clear"); + for (long long unsigned int i = 0; i < recMatkul.size(); i++){ + cout << recMatkul[i].getIdMatkul() << ". Nama Matkul : " << recMatkul[i].getMatkul() << endl << endl; + } - cout << "Masukkan ID Matkul yang ingin dilihat detailnya : "; cin >> noID; - system("cls || clear"); - cout << recMatkul[noID-1].getIdMatkul() << ". Nama Matkul : " << recMatkul[noID-1].getMatkul() << endl; - cout << " Kode Matkul : " << recMatkul[noID-1].getKodeMatkul() << endl; - cout << " SKS Matkul : " << recMatkul[noID-1].getSKSMatkul() << endl << endl; - - cout << "1. Kembali ke Daftar Matkul " << endl; - cout << "2. Kembali ke Menu Utama " << endl; - cout << "3. Edit Detail Matkul" << endl; - cout << "Masukkan pilihan anda : "; cin >> pilihan; - - switch (pilihan){ - case 1: - continue; - case 2: - { - flag = false; - system("cls || clear"); + cout << "Masukkan ID Matkul yang ingin dilihat detailnya : "; cin >> noID; + if (noID > recMatkul.size()){ + cout << endl << "Matkul dengan id " << noID << " tidak ditemukan." << endl; + continue; } - break; - case 3: - { - system("cls || clear"); - int uhuk; - bool uhuk1 = true; - while (uhuk1){ - cout << "Data yang ingin diubah : " << endl; - cout << "1. Nama Matkul" << endl; - cout << "2. Kode Matkul" << endl; - cout << "3. SKS Matkul" << endl; - cout << "4. Kembali ke menu utama" << endl; - cout << "Masukkan pilihan : "; cin >> uhuk; - switch (uhuk){ - case 1: - { - cout << "Masukkan nama matkul baru : "; - cin.ignore(); getline(cin, namaMatkul); - recMatkul[noID-1].setMatkul(namaMatkul); - cout << "Nama matkul berhasil diubah!" << endl; - sleep(3); - uhuk1 = false; - } - break; - case 2: - { - cout << "Masukkan kode matkul baru : "; - cin.ignore(); cin >> kodeMatkul; - recMatkul[noID-1].setKodeMatkul(kodeMatkul); - cout << "Kode Matkul berhasil diubah!" << endl; - sleep(3); - uhuk1 = false; - } - break; - case 3: - { - cout << "Masukkan SKS Matkul baru : "; - cin.ignore(); cin >> sksMatkul; - recMatkul[noID-1].setSKSMatkul(sksMatkul); - cout << "SKS Matkul berhasil diubah!" << endl; - sleep(3); - uhuk1 = false; - } - break; - case 4: - { - uhuk1 = false; + + system("cls || clear"); + cout << recMatkul[noID-1].getIdMatkul() << ". Nama Matkul : " << recMatkul[noID-1].getMatkul() << endl; + cout << " Kode Matkul : " << recMatkul[noID-1].getKodeMatkul() << endl; + cout << " SKS Matkul : " << recMatkul[noID-1].getSKSMatkul() << endl << endl; + + cout << "1. Kembali ke Daftar Matkul " << endl; + cout << "2. Kembali ke Menu Utama " << endl; + cout << "3. Edit Detail Matkul" << endl; + cout << "Masukkan pilihan anda : "; cin >> pilihan; + + switch (pilihan){ + case 1: + continue; + case 2: + { + flag = false; + system("cls || clear"); + } + break; + case 3: + { + system("cls || clear"); + int uhuk; + bool uhuk1 = true; + while (uhuk1){ + cout << "Data yang ingin diubah : " << endl; + cout << "1. Nama Matkul" << endl; + cout << "2. Kode Matkul" << endl; + cout << "3. SKS Matkul" << endl; + cout << "4. Kembali ke menu utama" << endl; + cout << "Masukkan pilihan : "; cin >> uhuk; + switch (uhuk){ + case 1: + { + cout << "Masukkan nama matkul baru : "; + cin.ignore(); getline(cin, namaMatkul); + recMatkul[noID-1].setMatkul(namaMatkul); + cout << "Nama matkul berhasil diubah!" << endl; + sleep(3); + uhuk1 = false; + } + break; + case 2: + { + cout << "Masukkan kode matkul baru : "; + cin.ignore(); cin >> kodeMatkul; + recMatkul[noID-1].setKodeMatkul(kodeMatkul); + cout << "Kode Matkul berhasil diubah!" << endl; + sleep(3); + uhuk1 = false; + } + break; + case 3: + { + cout << "Masukkan SKS Matkul baru : "; + cin.ignore(); cin >> sksMatkul; + recMatkul[noID-1].setSKSMatkul(sksMatkul); + cout << "SKS Matkul berhasil diubah!" << endl; + sleep(3); + uhuk1 = false; + } + break; + case 4: + { + uhuk1 = false; + break; + } + default: + defaultError(); break; } - default: - defaultError(); - break; } } + break; + default: + defaultError(); + break; } - break; - default: - defaultError(); - break; } } + break; + case 9: + { + system("cls || clear"); + userIndex = 0; + goto program; + } + break; + default: + { + defaultError(); + } + break; + } + } + } + + while (userIndex == 3){ + long long unsigned int inputIDMhs; + while (1){ + system("cls || clear"); + if (recMhs.empty()){ + cout << "Belum ada mahasiwa ditambahkan!" << endl; + sleep(3); + system("cls || clear"); + goto program; + } + + cout << "Selamat datang di Benedetta Academy" << endl << endl; + for (long long unsigned int i = 0; i < recMhs.size(); i++){ + cout << recMhs[i].getId() << ". Nama : " << recMhs[i].getNama() << endl; + cout << " NRP : " << recMhs[i].getNRP() << endl << endl; + } + cout << "Masukkan ID Mahasiswa : "; cin >> inputIDMhs; + + while (inputIDMhs > recMhs.size()){ + cout << "ID Mahasiwa tidak ditemukan!" << endl; + sleep(3); + break; + } + + cout << "Selamat datang, " << recMhs[inputIDMhs-1].getNama() << "!" << endl; + cout << "Data Mahasiwa" << endl; + cout << " Nama : " << recMhs[inputIDMhs-1].getNama() << endl; + cout << " TTL : " << recMhs[inputIDMhs-1].getTglLahir() << "/" << recMhs[inputIDMhs-1].getBulanLahir() << "/" << recMhs[inputIDMhs-1].getTahunLahir() << endl; + cout << " NRP : " << recMhs[inputIDMhs-1].getNRP() << endl; + cout << " Departemen : " << recMhs[inputIDMhs-1].getDepartemen() << endl; + cout << " Tahun Masuk : " << recMhs[inputIDMhs-1].getTahunMasuk() << endl; + cout << " Semester : " << recMhs[inputIDMhs-1].getSemester() << endl; + cout << " SKS Lulus : " << recMhs[inputIDMhs-1].getSKSLulus() << endl; + + cout << "Menu :" << endl; + cout << "1. Lihat IP Semester dan IP Kumulatif" << endl; + cout << "2. Lihat Matkul diambil" << endl; + cout << "3. Keluar" << endl; + cout << "-> Silahkan memilih salah satu: "; + cin >> menu_terpilih; + switch (menu_terpilih){ + case 1: + { + system("cls || clear"); + if (recMhs[inputIDMhs-1].getIPS(1) == 0 && recMhs[inputIDMhs-1].getIPS(2) == 0){ + cout << "IP Semester " << recMhs[inputIDMhs-1].getNama() << " belum diinput!" << endl; + sleep(3); + break; + } + + for (int i = 1; i <= recMhs[inputIDMhs-1].getSemester(); i++){ + cout << "IP Semester " << i << " : " << recMhs[inputIDMhs-1].getIPS(i) << endl; + } + + float ipk = 0, totalIPK = 0; + for (int i = 1; i <= recMhs[inputIDMhs-1].getSemester(); i++){ + totalIPK += recMhs[inputIDMhs-1].getIPS(i); + } + + ipk += totalIPK / (recMhs[inputIDMhs-1].getSemester()); + cout << "IP Kumulatif : " << ipk << endl; + system("pause || read"); } break; - case 9: + case 2: { system("cls || clear"); - login(); + cout << "Mata Kuliah Mahasiswa " << recMhs[noID-1].getNama() << endl << endl; + for (long long unsigned int i = 0; i < recMhs[noID-1].matkulTerambil.size(); i++){ + cout << recMhs[noID-1].matkulTerambil[i].getIdMatkul() << ". " << "Nama Matkul : "<< recMhs[noID-1].matkulTerambil[i].getMatkul() << endl; + cout << " Kode : " << recMhs[noID-1].matkulTerambil[i].getKodeMatkul() << endl; + cout << " SKS : " << recMhs[noID-1].matkulTerambil[i].getSKSMatkul() << endl; + } + int sksDitempuh = 0; + for (long long unsigned int i = 0; i < recMhs[noID-1].matkulTerambil.size(); i++){ + sksDitempuh += recMhs[noID-1].matkulTerambil[i].getSKSMatkul(); + } + cout << endl << "SKS yang sedang anda tempuh : " << sksDitempuh << " sks" << endl; + system("pause || read"); } break; - default: + case 3: { - defaultError(); + system("cls || clear"); + userIndex = 0; + goto program; } break; + default: + defaultError(); + break; + } } } + + while (userIndex == 4){ + system("cls || clear"); + cout << "Menu dosen belum dibuat, silahkan kembali ke menu utama." << endl; + sleep(3); + system("pause || read"); + goto program; + } + + while (userIndex == 5){ + system("cls || clear"); + cout << "Menu tendik belum dibuat, silahkan kembali ke menu utama." << endl; + sleep(3); + system("pause || read"); + goto program; + } return 0; -} +} \ No newline at end of file diff --git a/src/matkul.cpp b/src/matkul.cpp index aa845b3..fb48964 100644 --- a/src/matkul.cpp +++ b/src/matkul.cpp @@ -1,10 +1,11 @@ #include #include "include/matkul.hpp" +matkul::matkul(){} + matkul::matkul(int idMatkul, std::string namaMatkul, std::string kodeMatkul, int sksMatkul) : idMatkul(idMatkul), namaMatkul(namaMatkul), kodeMatkul(kodeMatkul), sksMatkul(sksMatkul) -{ -} +{} void matkul::setIdMatkul(int idMatkul){ this->idMatkul = idMatkul; }