Anda di halaman 1dari 21

Nama : Ferdy Al Firdaus

NIM : 20220801076
Program Studi : Teknik Informatika
Fakultas : Ilmu Komputer
Mata Kuliah : Desain dan Analisis Algoritma

PSEUDECODE

1. Inisialisasi variabel loop dan pos dengan nilai awal 0.


2. Inisialisasi struct data dengan array dan variabel yang sesuai.
3. Buat fungsi tampil() untuk menampilkan data mahasiswa.
4. Buat fungsi add() untuk menambahkan data mahasiswa.
a. Selama loop adalah 'y' atau 'Y', lakukan langkah-langkah berikut:
- Tampilkan data mahasiswa dengan memanggil fungsi tampil().
- Jika pos < max, lakukan langkah-langkah berikut:
- Kosongkan buffer input.
- Minta pengguna memasukkan nama mahasiswa dan simpan dalam d.nama[pos].
- Minta pengguna memasukkan NIM mahasiswa dan simpan dalam d.nim[pos].
- Minta pengguna memasukkan jurusan mahasiswa dan simpan dalam d.jurusan[pos].
- Minta pengguna memasukkan fakultas mahasiswa dan simpan dalam d.fakultas[pos].
- Minta pengguna memasukkan jumlah SKS Algoritma dan simpan dalam d.sks_algo[pos].
- Minta pengguna memasukkan nilai Algoritma dan simpan dalam d.nilai_algo[pos].
- Minta pengguna memasukkan jumlah SKS Kalkulus dan simpan dalam d.sks_kalku[pos].
- Minta pengguna memasukkan nilai Kalkulus dan simpan dalam d.nilai_kalku[pos].
- Minta pengguna memasukkan jumlah SKS Statistik dan simpan dalam d.sks_statis[pos].
- Minta pengguna memasukkan nilai Statistik dan simpan dalam d.nilai_statis[pos].
- Tentukan grade dan point Algoritma berdasarkan nilai dan simpan dalam
d.grade_algo[pos] dan d.point_algo[pos].
- Tentukan grade dan point Kalkulus berdasarkan nilai dan simpan dalam
d.grade_kalku[pos] dan d.point_kalku[pos].
- Tentukan grade dan point Statistik berdasarkan nilai dan simpan dalam
d.grade_statis[pos] dan d.point_statis[pos].
- Hitung total SKS mahasiswa dan simpan dalam d.total_sks[pos].
- Hitung IPK mahasiswa dan simpan dalam d.ipk[pos].
- Tambahkan 1 ke pos.
- Minta pengguna memasukkan apakah ingin memasukkan data lagi (y/t) dan simpan
dalam loop.
- Jika pos >= max, tampilkan pesan "Memori Penuh" dan minta pengguna mengetik 't' untuk
kembali. Simpan dalam loop.
5. Buat fungsi sortByNama() untuk mengurutkan data mahasiswa berdasarkan nama.
a. Gunakan algoritma bubble sort untuk mengurutkan data.
b. Tampilkan pesan "Data Mahasiswa Berdasarkan Nama Telah Diurutkan" dan panggil fungsi
tampil().
6. Buat fungsi sortByNIM() untuk mengurutkan data mahasiswa berdasarkan NIM.
a. Gunakan algoritma bubble sort untuk mengurutkan data.
b. Tampilkan pesan "Data Mahasiswa Berdasarkan NIM Telah Diurutkan" dan panggil fungsi
tampil().
7. Buat fungsi searchByNama() untuk mencari data mahasiswa berdasarkan nama.
a. Minta pengguna memasukkan nama mahasiswa yang ingin dicari.
a. Minta pengguna memasukkan nama mahasiswa yang ingin dicari.
b. Jika ditemukan, tampilkan data mahasiswa yang sesuai.
c. Jika tidak ditemukan, tampilkan pesan "Data Mahasiswa Tidak Ditemukan".
8. Buat fungsi searchByNIM() untuk mencari data mahasiswa berdasarkan NIM.
a. Minta pengguna memasukkan NIM mahasiswa yang ingin dicari.
b. Jika ditemukan, tampilkan data mahasiswa yang sesuai.
c. Jika tidak ditemukan, tampilkan pesan "Data Mahasiswa Tidak Ditemukan".
9. Pada fungsi utama (main):
a. Tampilkan pesan "Masukkan jumlah maksimum data: " dan simpan dalam max.
b. Selama loop adalah 'y' atau 'Y', lakukan langkah-langkah berikut:
- Tampilkan menu:
1. Tambah Data Mahasiswa
2. Urutkan Data Mahasiswa Berdasarkan Nama
3. Urutkan Data Mahasiswa Berdasarkan NIM
4. Cari Data Mahasiswa Berdasarkan Nama
5. Cari Data Mahasiswa Berdasarkan NIM
6. Keluar
- Minta pengguna memilih menu dan simpan dalam loop.
- Jika loop adalah 1, panggil fungsi add().
- Jika loop adalah 2, panggil fungsi sortByNama().
- Jika loop adalah 3, panggil fungsi sortByNIM().
- Jika loop adalah 4, panggil fungsi searchByNama().
- Jika loop adalah 5, panggil fungsi searchByNIM().
- Jika loop adalah 6, keluar dari program.
10. Selesai.

FLOWCHART
SOURCE CODE

#include <iostream>
#include <string>
#define max 100

using namespace std;

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);

for (int i = 0; i < pos; i++) {


if (d.nama[i] == cari) {
cout << "============ DATA MAHASISWA =============="<<endl;
cout << "Nama\t\t: "<<d.nama[i]<<endl;
cout << "NIM\t\t: "<<d.nim[i]<<endl;
cout << "Jurusan\t\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;
}
}

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);

for (int i = 0; i < pos; i++) {


if (d.nim[i] == cari) {
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;
}
}

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];

cout << "Ingin Mengubah data lagi? (y/t) : ";


cin >> looping;
if (looping == 't' || looping == 'T') {
goto menu;
}
} else {
cout << " DATA KOSONG !!! \nKetik 't' untuk kembali: ";
cin >> pil;
}
} while (pil != 't' && pil != 'T');
goto menu;
}
}
break;
case 3:
tampil();
int pil_sort;
cout << "============= URUTKAN ==========="<<endl;
cout << "1) Urutkan berdasarkan Nama" << endl;
cout << "2) Urutkan berdasarkan NIM" << endl;
cout << "Silakan pilih opsi pengurutan: ";
cin >> pil_sort;
if (pil_sort == 1) {
system("cls");
sortByNama();
} else if (pil_sort == 2) {
system("cls");
sortByNIM();
} else {
cout << "Opsi tidak valid." << endl;
}
break;
case 4:
system("cls");
tampil();
int pil_search;
cout << "============ SEARCH =============="<<endl;
cout << "1) Cari berdasarkan Nama" << endl;
cout << "2) Cari berdasarkan NIM" << endl;
cout << "Silakan pilih opsi pencarian: ";
cin >> pil_search;
if (pil_search == 1) {
system("cls");
searchByNama();
} else if (pil_search == 2) {
system("cls");
searchByNIM();
} else {
cout << "Opsi tidak valid." << endl;
}
break;
}

} while (pilihan != 5);


cout << "Program Selesai...";
return 0;
}

OUTPUT

Anda mungkin juga menyukai