0% found this document useful (0 votes)
11 views

Arya Uts

The document contains source code for a C++ program that manages student data. The program allows the user to add student records, display student data, sort students by name or ID number, and search for students by name or ID number. The program stores student names, ID numbers, majors, faculties, course grades, credits, and GPAs in arrays.

Uploaded by

OCID GAMING
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

Arya Uts

The document contains source code for a C++ program that manages student data. The program allows the user to add student records, display student data, sort students by name or ID number, and search for students by name or ID number. The program stores student names, ID numbers, majors, faculties, course grades, credits, and GPAs in arrays.

Uploaded by

OCID GAMING
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 17

Nama : Tengku Arya Saputra

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

Jawaban UTS (Ulangan Tengah Semester)

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");
tampil();
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;
}

PSEUDECODE

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
OUTPUT

You might also like