Kartu Hasil Studi (Header dan Operasi File)

   Kartu Hasil Studi


main.cpp

#include <iostream>
#include <string.h>
#include<cstring>
#include<stdlib.h>
#include<iomanip>
#include "main.h"
#include <windows.h>
using namespace std;

// Warna teks pada Windows
#define BLACK     0
#define RED       FOREGROUND_RED
#define GREEN     FOREGROUND_GREEN
#define YELLOW    FOREGROUND_RED | FOREGROUND_GREEN
#define BLUE      FOREGROUND_BLUE
#define MAGENTA   FOREGROUND_RED | FOREGROUND_BLUE
#define CYAN      FOREGROUND_GREEN | FOREGROUND_BLUE
#define WHITE     FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE


//kamus global
mahasiswa mhs;
int pil; // variabel untuk switch case
int y; // variabel untuk looping yang didalam fungsi
string cari;//untuk mencari data mahasiswa
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

//diskripsi
int main(){



    // Set warna teks menjadi kuning
    SetConsoleTextAttribute(hConsole, YELLOW);
    cout << setw(55) << setfill('*')<<"*"<<endl;

    // Set warna teks menjadi ijo
    SetConsoleTextAttribute(hConsole, GREEN);
    cout  << setw(45)<<setfill(' ')<<right<<"SELAMAT DATANG DI PROGRAM SIADIN"<<endl;
    // Set warna teks menjadi kuning
    SetConsoleTextAttribute(hConsole, YELLOW);
    cout << setw(55) << setfill('*') <<"*"<< endl;

    //set warna teks menjadi biru muda
    SetConsoleTextAttribute(hConsole, CYAN);
        cout << "Pilih Menu"<<endl;
        cout << "1. Buat Kartu Hasil Studi"<<endl;
        cout << "2. Cek Kartu Hasil Studi"<<endl;
         // Set warna teks menjadi putih

        cout << "Pilih Menu: "; cin >> pil;
        cin.ignore(); // Mengabaikan inputan getline sebelumnya
        system("cls"); // menghapus tampilan menu jika sudah memilih menu
        // set warna teks menjadi putih
    SetConsoleTextAttribute(hConsole, WHITE);

      switch(pil){
        case 1:
                // Set warna teks menjadi kuning
                SetConsoleTextAttribute(hConsole, YELLOW);
                cout << setw(55) << setfill('*')<<"*"<<endl;

                // Set warna teks menjadi Greeb
                SetConsoleTextAttribute(hConsole, GREEN);
                cout  << setw(45)<<setfill(' ')<<right<<"BUAT KARTU HASIL STUDI"<<endl;
                // Set warna teks menjadi yellow
                SetConsoleTextAttribute(hConsole, YELLOW);
                cout << setw(55) << setfill('*') <<"*"<< endl;

                //reset warna teks menjadi putih
                SetConsoleTextAttribute(hConsole, WHITE);

                mhs.inputprofil();//input profil mahasiswa
                cin.ignore();
                cout << "Berapa jumlah matkul yang ingin anda input: ";
                cin >> y;

                mhs.isidatamatkul(y);//input matkul yang diambil mahasiswa beserta sks dan nilainya
                system("cls");//menghapus tampilan inputan
                mhs.output(y); //menampilkan output untuk data yang akan disimpan kedalam database
                mhs.simpandata(y);//menyimpan data kedalam database


                break;

            case 2:
                  // Set warna teks menjadi yellow
                SetConsoleTextAttribute(hConsole, YELLOW);
                cout << setw(55) << setfill('*') <<"*"<< endl;
                  // Set warna teks menjadi cyan
                SetConsoleTextAttribute(hConsole, GREEN);
                cout  << setw(45)<<setfill(' ')<<right<<"CEK KARTU HASIL STUDI"<<endl;
                // Set warna teks menjadi yellow
                SetConsoleTextAttribute(hConsole, YELLOW);
                cout << setw(55) << setfill('*') <<"*"<< endl;

                //reset warna teks menjadi putih
                SetConsoleTextAttribute(hConsole, WHITE);
                cout << "Masukkan Nim Anda: ";
                cin >> cari;
                mhs.caridata(cari);
                break;

    }
};

main.h

#include <iostream>
#include <string.h>
#include <string>
#include<fstream>
#include<stdlib.h>
#include<iomanip>
using namespace std;


class mahasiswa{
    public:
    //attribut utama
    string nama;
    string prodi;
    string nim;
    string matkul[100];
    string sks[100];
    string nilaihuruf[100];
    float nilaitugas[100];
    float nilaiuts[100];
    float nilaiuas[100];
    string tp;
    //attribut untuk mengolah file database
    fstream data;
    //attribut temporary
    string mtk;
    string skks;
    string nhuruf;
    float ntugas;
    float nuast;
    float nuasp;
    float nutst;
    float nutsp;
    float nuts;
    float nilaiakhir;

    void inputprofil(){
    cout << "Masukkan Nama Mahasiswa: "; getline(cin,nama);
    cout << "Masukkan Nim Mahasiswa: "; getline(cin,nim);
    cout << "Masukkan prodi Mahasiswa: "; getline(cin,prodi);
    }
   void inputmatkul() {
        cout << "Masukkan Mata Kuliah: ";
        getline(cin, mtk);
        cin.ignore(); // Mengabaikan inputan getline sebelumnya
        cout << "Masukkan sks " << mtk;
        cin >> skks;
        cout << "teori atau Praktek: (t/p/tp)";
        cin >> tp;
}

    //prosedur untuk input nilai matakuliah berdasarkan kondisi teori praktek
    void inputnilai(string tpp){
     if(tpp == "tp"){
        cout << "masukkan nilai tugas: "; cin >> ntugas;
        cout << "masukkan nilai uts teori: "; cin >> nutst;
        cout << "masukkan nilai uts praktek: "; cin >> nutsp;
        cout << "masukkan nilai uas teori: "; cin >> nuast;
        cout << "masukkan nilai uas praktek: "; cin >> nuasp;
     }
     else if(tpp =="t"){
        cout << "masukkan nilai tugas: "; cin >> ntugas;
        cout << "masukkan nilai uts teori: "; cin >> nutst;
        cout << "masukkan nilai uas teori: "; cin >> nuast;

     }
     else if(tpp == "p"){
         cout << "masukkan nilai tugas"; cin >> ntugas;
        cout << "masukkan nilai uts praktek"; cin >> nutsp;
        cout << "masukkan nilai uas praktek"; cin >> nuasp;
        }
     }

     //fungsi untuk menghitun nilai uts teori praktek
      float hitungnilaiuts(float ntst, float ntsp) {
        return (ntst + ntsp) / 2;
    }

    //fungsi untuk menghitun nilai uas teori praktek
    float hitungnilaiuas(float nast, float nasp) {
        return (nast + nasp) / 2;
    }

    //fungsi untuk menentukan nilai akhir dari nuts nuas dan ntugas
    float totalnilai(float utst, float utsp, float uast, float uasp, float tgs,string tpp){
     float nilai;
     if(tpp == "tp"){
        nilai = (((utst + utsp) / 2) + ((uast + uasp) / 2) + tgs) / 3;
     }
     else if(tpp =="t"){
         nilai = (utst  + uast  + tgs) / 3;;
    }
    else if(tpp == "p"){
         nilai = (utsp  + uasp  + tgs) / 3;;
    }
    return nilai;
    }

    string konversihuruf(float nilai) {
        nilai = totalnilai(nutst, nutsp, nuast, nuasp, ntugas,tp);
        if (nilai >= 80) {
            return "A";
        } else if (nilai >= 70) {
            return "B";
        } else if (nilai >= 60) {
            return "C";
        } else if (nilai >= 50) {
            return "D";
        } else {
            return "E";
        }
    }


    //prosedur untuk input mata kuliah dan pengoperasian nilai
    void isidatamatkul(int n) {
        int x = 0;
        while (x<n) {

            inputmatkul();
            inputnilai(tp);
            matkul[x] = mtk;
            cin.ignore();
            sks[x] = skks;
            nilaitugas[x] = ntugas;
            nilaiuts[x] = hitungnilaiuts(nutst, nutsp);
            nilaiuas[x] = hitungnilaiuas(nuast, nuasp);
            nilaihuruf[x] = konversihuruf(nilaiakhir);
            x++;
        }
    }
    void output(int n){
        int x;//kamus local untukk loop
        //table header 1
        cout << setw(100) << setfill('=') << "=" << endl;
        cout << setw(38) << setfill(' ') << " "
         << " Kartu Hasil Studi Mahasiswa " << setw(30) << setfill(' ') << " " << endl;
            cout << setw(100) << setfill('=') << "=" << setfill(' ') << endl;
        // table header 2
        cout << setw(5) << left << "Nama: " << nama << setw(20) << right << "Prodi: " << prodi << endl;
        cout << setw(5) << left << "Nim : " << nim << endl;
        cout << setfill('-') << setw(100) << '-' << setfill(' ') << endl;
        cout << setw(19) << right << "Mata Kuliah" << setw(18) << right << "SKS" << setw(15) << right << "Nilai UAS" << setw(15) << right << "Nilai UTS" << setw(15) << right << "Nilai Tugas" << setw(10) << right << "Nilai" << endl;
        cout << setfill('-') << setw(100) << '-' << setfill(' ') << endl;
        x = 0;
        while (x < n)
        {
            // isi tabel utama
            cout << setw(30) << left << matkul[x] << setw(1) << "|" << setw(5) << right << sks[x] << setw(5) << right << "|" << setw(8) << right << nilaiuts[x] << setw(7) << right << "|" << setw(8) << nilaiuas[x] << setw(6) << right << "|" << setw(8) << nilaitugas[x] << setw(6) << right << "|" << setw(5) << right << " " << setw(3) << left << nilaihuruf[x] << endl;
            cout << setfill('-') << setw(100) << '-' << setfill(' ') << endl;
            x++;
    }


    }

    /*Operasi File*/

    //prosedur untuk menyimpan data
    void simpandata(int n){
        //data adalah variabel bertype fstream untuk mengisi data pada file database
        data.open("data.txt", ios::app);// membuka file txt
        //table header 1
        data<< setw(100) << setfill('=') << "=" << endl;
        data << setw(38) << setfill(' ') << " "
         << " Kartu Hasil Studi Mahasiswa " << setw(30) << setfill(' ') << " " << endl;
        data << setw(100) << setfill('=') << "=" << setfill(' ') << endl;
        // table header 2
        data << setw(5) << left << "Nama: " << nama << setw(20) << right << "Prodi: " << prodi << endl;
        data << setw(5) << left << "Nim : " << nim << endl;
        data << setfill('-') << setw(100) << '-' << setfill(' ') << endl;
        data << setw(19) << right << "Mata Kuliah" << setw(18) << right << "SKS" << setw(15) << right << "Nilai UAS" << setw(15) << right << "Nilai UTS" << setw(15) << right << "Nilai Tugas" << setw(10) << right << "Nilai" << endl;
        data << setfill('-') << setw(100) << '-' << setfill(' ') << endl;
        int x = 0;
        while (x < n)
        {
            // isi tabel utama
            data<< setw(30) << left << matkul[x] << setw(1) << "|" << setw(5) << right << sks[x] << setw(5) << right << "|" << setw(8) << right << nilaiuts[x] << setw(7) << right << "|" << setw(8) << nilaiuas[x] << setw(6) << right << "|" << setw(8) << nilaitugas[x] << setw(6) << right << "|" << setw(5) << right << " " << setw(3) << left << nilaihuruf[x] << endl;
            data << setfill('-') << setw(100) << '-' << setfill(' ') << endl;
            x++;
        }

        data.close();//menutup file
    }

  void caridata(string nim) { //mengecek kartu hasil studi mahasiswa berdasarkan nim
    ifstream data("data.txt");//membaca data txt

    if (data.is_open()){//kondisi jika data terbuka
        string line;
        bool found = false;
        while (getline(data, line)) {
            if (line.find("Nim : " + nim) != string::npos) {//mencari nim
                found = true;
                while (getline(data, line)) {//menampilkan baris baris dari database yang sesuai dengan nim yang dicari
                    cout << line << endl;
                }

            }
        }

        if (!found) {//kondisi jika nim tidak ketemu
            cout << "Data dengan NIM " << nim << " tidak ditemukan." << endl;
        }

        data.close();
    } else {
        cout << "File tidak dapat dibuka." << endl;
    }
}
};

Komentar

Postingan Populer