NIM : 20220801161
Program Studi : Teknik Informatika
Fakultas : Ilmu Komputer
Mata Kuliah : Desain dan Analisis Algoritma
PSEUDECODE
FLOWCHART
SOURCE CODE
#include <iostream>
#include <string>
#define max 100
char loop;
int pos = 0;
struct data {
string nama[max], fakultas[max], jurusan[max], nim[max], grade_algo[max], grade_kalku[max],
grade_statis[max];
int nilai_algo[max], nilai_kalku[max], nilai_statis[max], sks_algo[max], sks_kalku[max],
sks_statis[max], total_sks[max];
float point_algo[max], point_kalku[max], point_statis[max], ipk[max];
} d;
void tampil() {
if (pos > 0) {
cout << "========= DATA MAHASISWA ============" << endl;
cout << "No. |\t\tNIM\t\t|\t\tNAMA MAHASISWA\t\t|" << endl;
for (int a = 0; a < pos; a++) {
cout << a + 1 << ".\t" << d.nim[a] << "\t\t\t" << d.nama[a] << "\t" << endl;
}
} else {
cout << "========= DATA KOSONG ==========" << endl;
}
}
void add() {
do {
system("cls");
if (pos < max) {
cin.ignore();
cout << "Masukkan Nama Mahasiswa : ";
getline(cin, d.nama[pos]);
cout << "Masukkan NIM Mahasiswa : ";
getline(cin, d.nim[pos]);
cout << "Masukkan Nama Jurusan : ";
getline(cin, d.jurusan[pos]);
cout << "Masukkan Nama Fakultas : ";
getline(cin, d.fakultas[pos]);
cout << "Masukkan Jumlah SKS Algoritma : ";
cin >> d.sks_algo[pos];
cout << "Masukkan Nilai Algoritma : ";
cin >> d.nilai_algo[pos];
cout << "Masukkan Jumlah SKS Kalkulus : ";
cin >> d.sks_kalku[pos];
cout << "Masukkan Nilai Kalkulus : ";
cin >> d.nilai_kalku[pos];
cout << "Masukkan Jumlah SKS Statistik : ";
cin >> d.sks_statis[pos];
cout << "Masukkan Nilai Statistik : ";
cin >> d.nilai_statis[pos];
if(d.nilai_algo[pos] >= 80 ){
d.grade_algo[pos] = "A";
d.point_algo[pos] = 4;
}else if(d.nilai_algo[pos] >= 76 ){
d.grade_algo[pos] = "B+";
d.point_algo[pos] = 3.75;
}else if(d.nilai_algo[pos] >= 70 ){
d.grade_algo[pos] = "B";
d.point_algo[pos] = 3.5;
}else if(d.nilai_algo[pos] >= 66 ){
d.grade_algo[pos] = "B-";
d.point_algo[pos] = 3;
}else if(d.nilai_algo[pos] >= 63 ){
d.grade_algo[pos] = "C+";
d.point_algo[pos] = 2.5;
}else if(d.nilai_algo[pos] >= 60 ){
d.grade_algo[pos] = "C";
d.point_algo[pos] = 2;
}else if(d.nilai_algo[pos] >= 50 ){
d.grade_algo[pos] = "D";
d.point_algo[pos] = 1;
}else if(d.nilai_algo[pos] >= 0){
d.grade_algo[pos] = "E";
d.point_algo[pos] = 0;
}else{
d.grade_algo[pos] = "Tidak Ada Input";
d.point_algo[pos] = 0;
}
if(d.nilai_kalku[pos] >= 80 ){
d.grade_kalku[pos] = "A";
d.point_kalku[pos] = 4;
}else if(d.nilai_kalku[pos] >= 76 ){
d.grade_kalku[pos] = "B+";
d.point_kalku[pos] = 3.75;
}else if(d.nilai_kalku[pos] >= 70 ){
d.grade_kalku[pos] = "B";
d.point_kalku[pos] = 3.5;
}else if(d.nilai_kalku[pos] >= 66 ){
d.grade_kalku[pos] = "B-";
d.point_kalku[pos] = 3;
}else if(d.nilai_kalku[pos] >= 63 ){
d.grade_kalku[pos] = "C+";
d.point_kalku[pos] = 2.5;
}else if(d.nilai_kalku[pos] >= 60 ){
d.grade_kalku[pos] = "C";
d.point_kalku[pos] = 2;
}else if(d.nilai_kalku[pos] >= 50 ){
d.grade_kalku[pos] = "D";
d.point_kalku[pos] = 1;
}else if(d.nilai_kalku[pos] >= 0){
d.grade_kalku[pos] = "E";
d.point_kalku[pos] = 0;
}else{
d.grade_kalku[pos] = "Tidak Ada Input";
d.point_kalku[pos] = 0;
}
if(d.nilai_statis[pos] >= 80 ){
d.grade_statis[pos] = "A";
d.point_statis[pos] = 4;
}else if(d.nilai_statis[pos] >= 76 ){
d.grade_statis[pos] = "B+";
d.point_statis[pos] = 3.75;
}else if(d.nilai_statis[pos] >= 70 ){
d.grade_statis[pos] = "B";
d.point_statis[pos] = 3.5;
}else if(d.nilai_statis[pos] >= 66 ){
d.grade_statis[pos] = "B-";
d.point_statis[pos] = 3;
}else if(d.nilai_statis[pos] >= 63 ){
d.grade_statis[pos] = "C+";
d.point_statis[pos] = 2.5;
}else if(d.nilai_statis[pos] >= 60 ){
d.grade_statis[pos] = "C";
d.point_statis[pos] = 2;
}else if(d.nilai_statis[pos] >= 50 ){
d.grade_statis[pos] = "D";
d.point_statis[pos] = 1;
}else if(d.nilai_statis[pos] >= 0){
d.grade_statis[pos] = "E";
d.point_statis[pos] = 0;
}else{
d.grade_statis[pos] = "Tidak Ada Input";
d.point_statis[pos] = 0;
}
d.total_sks[pos] = d.sks_algo[pos] + d.sks_kalku[pos] + d.sks_statis[pos];
d.ipk[pos] = ((d.sks_algo[pos]*d.point_algo[pos])+
(d.sks_kalku[pos]*d.point_kalku[pos])+(d.sks_statis[pos]*d.point_statis[pos]))/d.total_sks[pos];
pos++;
cout << "Ingin Memasukkan Data Lagi? (y/t) : ";
cin >> loop;
} else {
cout << "----- Memori Penuh -----" << endl;
cout << "Ketik 't' untuk kembali: ";
cin >> loop;
}
} while (loop == 'y' || loop == 'Y');
}
void sortByNama() {
for (int i = 0; i < pos - 1; i++) {
for (int j = 0; j < pos - i - 1; j++) {
if (d.nama[j] > d.nama[j + 1]) {
swap(d.nama[j], d.nama[j + 1]);
swap(d.nim[j], d.nim[j + 1]);
swap(d.jurusan[j], d.jurusan[j + 1]);
swap(d.fakultas[j], d.fakultas[j + 1]);
swap(d.nilai_algo[j],d.nilai_algo[j+1]);
swap(d.nilai_kalku[j],d.nilai_kalku[j+1]);
swap(d.nilai_statis[j],d.nilai_statis[j+1]);
swap(d.sks_algo[j],d.sks_algo[j+1]);
swap(d.sks_kalku[j],d.sks_kalku[j+1]);
swap(d.sks_statis[j],d.sks_statis[j+1]);
}
}
}
cout << "Data Mahasiswa Berdasarkan Nama Telah Diurutkan" << endl;
tampil();
}
void sortByNIM() {
for (int i = 0; i < pos - 1; i++) {
for (int j = 0; j < pos - i - 1; j++) {
if (d.nim[j] > d.nim[j + 1]) {
swap(d.nama[j], d.nama[j + 1]);
swap(d.nim[j], d.nim[j + 1]);
swap(d.jurusan[j], d.jurusan[j + 1]);
swap(d.fakultas[j], d.fakultas[j + 1]);
swap(d.nilai_algo[j],d.nilai_algo[j+1]);
swap(d.nilai_kalku[j],d.nilai_kalku[j+1]);
swap(d.nilai_statis[j],d.nilai_statis[j+1]);
swap(d.sks_algo[j],d.sks_algo[j+1]);
swap(d.sks_kalku[j],d.sks_kalku[j+1]);
swap(d.sks_statis[j],d.sks_statis[j+1]);
}
}
}
cout << "Data Mahasiswa Berdasarkan NIM Telah Diurutkan" << endl;
tampil();
}
void searchByNama() {
string cari;
bool found = false;
cin.ignore();
cout << "Masukkan Nama Mahasiswa yang ingin dicari: ";
getline(cin, cari);
if (!found) {
cout << "Data Mahasiswa tidak ditemukan." << endl;
}
}
void searchByNIM() {
string cari;
bool found = false;
cin.ignore();
cout << "Masukkan NIM Mahasiswa yang ingin dicari: ";
getline(cin, cari);
if (!found) {
cout << "Data Mahasiswa tidak ditemukan." << endl;
}
}
int main() {
int pil_data;
int pilihan, y;
string find, nama_user;
char pil, looping;
cout << "Masukkan Nama Panggilan Anda : "; cin >> nama_user;
do {
menu:
system("cls");
cout << "Hi," << nama_user<<endl;
cout << "Selamat Datang di Aplikasi Pengelolaan Data IPK" << endl;
cout << "1) Input Data Mahasiswa" << endl;
cout << "2) Lihat / Edit Data Mahasiswa" << endl;
cout << "3) Urutkan Nama Mahasiswa berdasarkan Nama / NIM" << endl;
cout << "4) Pencarian Data Mahasiswa Berdasarkan Nama / NIM" << endl;
cout << "5) Keluar Aplikasi" << endl;
cout << "Silakan Pilih Menu Anda: ";
cin >> pilihan;
switch (pilihan) {
case 1:
system("cls");
add();
break;
case 2:
int pil_view;
system("cls");
tampil();
cout << "========== LIHAT / EDIT ========\n1. Ingin Melihat Data\n2. Mengubah
Data\nSilahkan Pilih Menu diatas : "; cin >> pil_view;
if (pil_view == 1){
do{
bool found = false;
cin.ignore();
cout << "Masukkan NIM : "; cin >> find;
for (int i = 0; i < pos; i++) {
if (d.nim[i] == find) {
cout << "============ DATA MAHASISWA
=============="<<endl;
cout << "Nama\t\t: "<<d.nama[i]<<endl;
cout << "NIM\t\t: "<<d.nim[i]<<endl;
cout << "Jurusan\t: "<<d.jurusan[i]<<endl;
cout << "Fakultas\t: "<<d.fakultas[i]<<endl;
cout << "================ NILAI MATA KULIAH
============"<<endl;
cout << "1. Algoritma (" << d.sks_algo[i] << " SKS)\t: " <<
d.nilai_algo[i] << " dengan Grade " << d.grade_algo[i]<<endl;
cout << "2. Kalkulus (" << d.sks_kalku[i] << " SKS)\t: " <<
d.nilai_kalku[i] << " dengan Grade " << d.grade_kalku[i]<<endl;
cout << "3. Statiska (" << d.sks_statis[i] << " SKS)\t: " <<
d.nilai_statis[i] << " dengan Grade " << d.grade_statis[i]<<endl;
cout << "IPK anda adalah " << d.ipk[i]<<endl;
found = true;
}
}
cout << "Apakah ingin Melihat data lagi? (y/t): "; cin>>pil_data;
}while(pil_data != 'y');
}else if(pil_view == 2){
cout << "Ingin Mengubah Data? (y/t) : ";
cin >> pil;
while (pil == 'y' || pil == 'Y') {
do {
if (pos > 0) {
cout << "Ubah Data Nomor? : ";
cin >> y;
cin.ignore();
cout << "Masukkan Nama Mahasiswa : ";
getline(cin, d.nama[y-1]);
cout << "Masukkan NIM Mahasiswa : ";
getline(cin, d.nim[y-1]);
cout << "Masukkan Nama Jurusan : ";
getline(cin, d.jurusan[y-1]);
cout << "Masukkan Nama Fakultas : ";
getline(cin, d.fakultas[y-1]);
cout << "Masukkan Jumlah SKS Algoritma : ";
cin >> d.sks_algo[y-1];
cout << "Masukkan Nilai Algoritma : ";
cin >> d.nilai_algo[y-1];
cout << "Masukkan Jumlah SKS Kalkulus : ";
cin >> d.sks_kalku[y-1];
cout << "Masukkan Nilai Kalkulus : ";
cin >> d.nilai_kalku[y-1];
cout << "Masukkan Jumlah SKS Statistik : ";
cin >> d.sks_statis[y-1];
cout << "Masukkan Nilai Statistik : ";
cin >> d.nilai_statis[y-1];
OUTPUT