//Muhammad Balya Khaidir
#include <iostream>
#include <iomanip>
#include <string.h>
using namespace std;
struct Data {
int Tugas,N_Tugas,UTS,N_UTS,UAS,N_UAS,N_akhir,absen;
float N_absen;
string grade;
long int nim;
char nama[50];
char gender;
string gender1;
}f[50];
struct matakuliah {
int kode_mtk[50];
string nama_mtk[50];
}c;
struct dosen {
int kode_dosen[50];
string nama_dosen[50];
}d;
struct kelas {
int kode_kelas[50];
string kelas[50];
}e;
int main (){
Data temp1;
matakuliah temp2;
dosen temp3;
kelas temp4;
int x,z,i,j,a,m;
string pass,user;
char y;
//=========================================================================login screen
awal2:
cout<<"User Name : ";
cin>>user;
if(user=="Admin" || user=="admin"){
cout<<"Password : ";
cin>>pass;
if(pass=="12345"){
system("cls");
cout<<"Selamat! Anda Telah Memasuki Home Admin."<<endl;
awal:
cout<<"Masukkan jumlah mahasiswa : ";
cin>>x;
if(x<=5){
cout<<"================================"<<endl;
goto inputan;
}
else{
cout<<"Mahasiswa Kebanyakan Oe Nanti Pusing!"<<endl;
cout<<"Max 5 Aja Oe!"<<endl<<endl;
goto awal;
}
//=========================================================================input
inputan:
for(int z=1;z<=x;z++){
cout<<"Masukkan NIM Mahasiswa ke "<<z<<" : ";
cin>>f[z].nim;
cout<<"Masukkan Nama Mahasiswa ke "<<z<<" : ";
cin>>f[z].nama;
cout<<"Masukkan Jenis Kelamin (L/P) : ";
cin>>f[z].gender;
if(f[z].gender=='l' || f[z].gender=='L'){
f[z].gender1 = "Laki-Laki";
}
else if(f[z].gender=='p' || f[z].gender=='P'){
f[z].gender1 = "Perempuan";
}
cout<<"Masukkan Kode Kelas untuk "<<x<<" Mahasiswa : ";
cin>>e.kode_kelas[z];
switch(e.kode_kelas[z]){
case 106:
e.kelas[z] = "03TPLE006";
break;
default:
e.kelas[z] = "...";
}
cout<<"Masukkan Kode Dosen Untuk Kode Kelas "<<e.kode_kelas[z]<<" : ";
cin>>d.kode_dosen[z];
switch(d.kode_dosen[z]){
case 15:
d.nama_dosen[z] = "Niki Ratama";
c.nama_mtk[z] = "Structure Data";
break;
default:
d.nama_dosen[z] = "...";
c.nama_mtk[z] = "...";
}
cout<<"========================================"<<endl;
//========================================================================inputan nilai
cout<<"Masukkan nilai Absensi "<<f[z].nama<<" : "; //hitung nilai absensi
do{
cin>>f[z].absen;
}while(f[z].absen>14);
f[z].N_absen = (f[z].absen*10)/14;
cout<<"Masukkan nilai Tugas "<<f[z].nama<<" : "; //hitung nilai tugas
cin>>f[z].Tugas;
if(f[z].Tugas>100)
{
f[z].N_Tugas = 20;
cout<<"Masukkan nilai UTS "<<f[z].nama<<" : "; //hitung nilai UTS
cin>>f[z].UTS;
if(f[z].UTS>100)
{
f[z].N_UTS = 30;
cout<<"Masukkan nilai UAS "<<f[z].nama<<" : "; //hitung nilai UAS
cin>>f[z].UAS;
cout<<endl;
if(f[z].UAS>100)
{
f[z].N_UAS = 40;
f[z].N_akhir = f[z].N_absen+f[z].N_Tugas+f[z].N_UTS+f[z].N_UAS;
}
else
{
f[z].N_UAS = (f[z].UAS*40)/100;
f[z].N_akhir = f[z].N_absen+f[z].N_Tugas+f[z].N_UTS+f[z].N_UAS;
}
}
else
{
f[z].N_UTS = (f[z].UTS*30)/100;
cout<<"Masukkan nilai UAS "<<f[z].nama<<" : "; //hitung nilai UAS
cin>>f[z].UAS;
cout<<endl;
if(f[z].UAS>100)
{
f[z].N_UAS = 40;
f[z].N_akhir = f[z].N_absen+f[z].N_Tugas+f[z].N_UTS+f[z].N_UAS;
}
else
{
f[z].N_UAS = (f[z].UAS*40)/100;
f[z].N_akhir = f[z].N_absen+f[z].N_Tugas+f[z].N_UTS+f[z].N_UAS;
}
}
}
else
{
f[z].N_Tugas = (f[z].Tugas*20)/100; //hitung nilai Tugas
cout<<"Masukkan nilai UTS "<<f[z].nama<<" : "; //hitung nilai UTS
cin>>f[z].UTS;
if(f[z].UTS>100)
{
f[z].N_UTS = 30;
cout<<"Masukkan nilai UAS "<<f[z].nama<<" : "; //hitung nilai UAS
cin>>f[z].UAS;
cout<<endl;
if(f[z].UAS>100)
{
f[z].N_UAS = 40;
f[z].N_akhir = f[z].N_absen+f[z].N_Tugas+f[z].N_UTS+f[z].N_UAS;
}
else
{
f[z].N_UAS = (f[z].UAS*40)/100;
f[z].N_akhir = f[z].N_absen+f[z].N_Tugas+f[z].N_UTS+f[z].N_UAS;
}
}
else
{
f[z].N_UTS = (f[z].UTS*30)/100;
cout<<"Masukkan nilai UAS "<<f[z].nama<<" : "; //hitung nilai UAS
cin>>f[z].UAS;
cout<<endl;
if(f[z].UAS>100)
{
f[z].N_UAS = 40;
f[z].N_akhir = f[z].N_absen+f[z].N_Tugas+f[z].N_UTS+f[z].N_UAS;
}
else
{
f[z].N_UAS = (f[z].UAS*40)/100;
f[z].N_akhir = f[z].N_absen+f[z].N_Tugas+f[z].N_UTS+f[z].N_UAS;
}
}
}
}
//=======================================================================================output
system("cls");
cout<<"* Tabel Identitas Mahasiswa : "<<endl;
cout<<"|============|=================================|===========|"<<endl;
cout<<"|"<<setw(8)<<"NIM"<<setw(5)<<"|"<<setw(18)<<"NAMA"<<setw(16)<<"|"<<setw(8)<<"GENDER"<<setw(4)<<"|"<<endl;
cout<<"|============|=================================|===========|"<<endl;
for(int z=1;z<=x;z++){
cout<<"|"<<setiosflags(ios::left)<<setw(12)<<f[z].nim<<"|"<<setiosflags(ios::left)<<setw(33)<<strupr(f[z].nama)<<"|"<<setiosflags(ios::left)<<setw(11)<<f[z].gender1<<"|"<<endl;
}
cout<<"|============|=================================|===========|"<<endl;
cout<<"\n"<<endl;
cout<<"* Tabel Jadwal Perkuliahan Mahasiswa : "<<endl;
cout<<"|=================================|=========|============|===============|"<<endl;
cout<<"|"<<setiosflags(ios::left)<<setw(33)<<"NAMA MAHASISWA"<<"|"<<setiosflags(ios::left)<<setw(9)<<"KELAS"<<"|"<<setiosflags(ios::left)<<setw(12)<<"NAMA DOSEN"<<"|"<<setiosflags(ios::left)<<setw(15)<<"NAMA MATKUL"<<"|"<<endl;
cout<<"|=================================|=========|============|===============|"<<endl;
//sorting bubble sort ascending
for(i=0;i<=x;i++){
for(m=1;m<x-i;m++){
if(strcmp(f[m].nama, f[m+1].nama)>0){
//tukar nama
strcpy(temp1.nama,f[m].nama);
strcpy(f[m].nama,f[m+1].nama);
strcpy(f[m+1].nama,temp1.nama);
//tukar kelas
temp4.kelas[m]=e.kelas[m];
e.kelas[m]=e.kelas[m+1];
e.kelas[m+1]=temp4.kelas[m];
//tukar nama dosen
temp3.nama_dosen[m]=d.nama_dosen[m];
d.nama_dosen[m]=d.nama_dosen[m+1];
d.nama_dosen[m+1]=temp3.nama_dosen[m];
//tukar nama matkul
temp2.nama_mtk[m]=c.nama_mtk[m];
c.nama_mtk[m]=c.nama_mtk[m+1];
c.nama_mtk[m+1]=temp2.nama_mtk[m];
//tukar nilai akhir
temp1.N_akhir=f[m].N_akhir;
f[m].N_akhir=f[m+1].N_akhir;
f[m+1].N_akhir=temp1.N_akhir;
//tukar grade
temp1.grade=f[m].grade;
f[m].grade=f[m+1].grade;
f[m+1].grade=temp1.grade;
}
}
}
for(int z=1;z<=x;z++){
cout<<"|"<<setiosflags(ios::left)<<setw(33)<<strupr(f[z].nama)<<"|"<<setiosflags(ios::left)<<setw(9)<<e.kelas[z]<<"|"<<setiosflags(ios::left)<<setw(12)<<d.nama_dosen[z]<<"|"<<setiosflags(ios::left)<<setw(15)<<c.nama_mtk[z]<<"|"<<endl;
}
cout<<"|=================================|=========|============|===============|"<<endl;
cout<<"\n"<<endl;
cout<<"* Tabel Nilai Mahasiswa : "<<endl;
cout<<"|=================================|===============|============|=====|"<<endl;
cout<<"|"<<setiosflags(ios::left)<<setw(33)<<"NAMA MAHASISWA"<<"|"<<setiosflags(ios::left)<<setw(15)<<"MATA KULIAH"<<"|"<<setiosflags(ios::left)<<setw(12)<<"NILAI AKHIR"<<"|"<<setiosflags(ios::left)<<setw(5)<<"GRADE"<<"|"<<endl;
cout<<"|=================================|===============|============|=====|"<<endl;
//sorting buble sort descending
for(i=0;i<=x;i++){
for(j=1;j<x-i;j++){
if(f[j].N_akhir<f[j+1].N_akhir){
//tukar nilai akhir
temp1.N_akhir=f[j].N_akhir;
f[j].N_akhir=f[j+1].N_akhir;
f[j+1].N_akhir=temp1.N_akhir;
//tukar grade
temp1.grade=f[j].grade;
f[j].grade=f[j+1].grade;
f[j+1].grade=temp1.grade;
//tukar nama
strcpy(temp1.nama,f[j].nama);
strcpy(f[j].nama,f[j+1].nama);
strcpy(f[j+1].nama,temp1.nama);
//tukar matkul
temp2.nama_mtk[j]=c.nama_mtk[j];
c.nama_mtk[j]=c.nama_mtk[j+1];
c.nama_mtk[j+1]=temp2.nama_mtk[j];
}
}
}
for(int z=1;z<=x;z++){
if(f[z].N_akhir>=80)
{
f[z].grade = "A";
}
else if(f[z].N_akhir>=70)
{
f[z].grade = "B";
}
else if(f[z].N_akhir>=60)
{
f[z].grade = "C";
}
else if(f[z].N_akhir>=55)
{
f[z].grade = "D";
}
else
{
f[z].grade = "E";
}
cout<<"|"<<setiosflags(ios::left)<<setw(33)<<strupr(f[z].nama)<<"|"<<setiosflags(ios::left)<<setw(15)<<c.nama_mtk[z]<<"|"<<setiosflags(ios::left)<<setw(12)<<f[z].N_akhir<<"|"<<setiosflags(ios::left)<<setw(5)<<f[z].grade<<"|"<<endl;
}
cout<<"|=================================|===============|============|=====|"<<endl;
cout<<"\n";
cout<<"Ingin Mengulang Lagi?(Y/N)";
cin>>y;
if(y=='Y' || y=='y')
{system("cls");
goto awal;}
else if(y=='N' || y=='n')
{goto akhir;}
akhir:
exit(0);
}
else{
cout<<"Password Salah! Silahkan Masukkan Password Yang Benar!"<<"\n"<<endl;
goto awal2;
}
}
else{
cout<<"Anda Adalah Orang Asing! Masukkan User Yang Benar"<<"\n"<<endl;
goto awal2;
}
}