#include<iostream>
#include<conio.h>
#include<fstream>
#include<cstring>
using namespace std;
class mahasiswa //class yang memuat data mahasiswa
{
public:
char nama[255];
char kehadiran[20][2];
int hadir=0;
int nim;
float persen;
};
mahasiswa mhs[40]; //objek dari class mahasiswa dibuat ARRAY
void dataMasuk(int i) //Fungsi ketika mengisi data2 awal mahasiswa (hanya
dilakukan sekali)
{
ofstream datamhs("[Link]"); //membuat file(database) yang memuat
data2 pada class mahasiswa
cout << "Input Data Mahasiswa Ke-" << i + 1 << endl;
cout << "NIM\t: "; cin >> mhs[i].nim;
cout << "Nama\t: "; cin >> mhs[i].nama;
[Link]((char*)&mhs, sizeof(mhs)); //menyimpan data
[Link](); //menutup data
void dataPresensi(int j, int minggu) //fungsi ketika mahasiswa melakukan
presensi
{
cout << "Ket :" << endl;
cout << "1.(H)adir \n2.(A)bsen \n3.(I)zin \n4.(S)akit" << endl;
cout << "============================================" << endl;
ifstream bukadata("[Link]"); //membuka data yang sudah dibuat
[Link]((char*)&mhs, sizeof(mhs));
cout << mhs[j].nim <<"\t"<< mhs[j].nama<<"\t";
cout << "\t Kehadiran[H/A/I/S]: ";
fflush(stdin); //menghapus buffer
cin >> mhs[j].kehadiran[minggu]; //mengisi data kehadiran per pertemuan
ofstream simpandata("[Link]"); //menyimpan data yang telah diupdate
[Link]((char*)&mhs, sizeof(mhs));
[Link]();
[Link]();
}
void rekapData(int banyakMhs) //fungsi ketika semua data kehadiran direkap
{
int i, j;
int banding;
ifstream fileRekap("[Link]");
[Link]((char*)&mhs, sizeof(mhs));
cout << "NIM\tNama\t\t1\t2\t3\t4\t5\t6\t7\t8\t9\t10\t%" << endl <<
endl;
for (i = 0; i < banyakMhs; i++)
{
cout << mhs[i].nim <<"\t"<< mhs[i].nama<<"\t\t";
for (j = 0; j < 10; j++)
{
cout << mhs[i].kehadiran[j]<<"\t";
banding = _strcmpi(mhs[i].kehadiran[j], "H"); //proses
mengambil nilai jika absensi H
if (banding == 0)
{
mhs[i].hadir += 1;
}
}
mhs[i].persen = mhs[i].hadir*100/10;
cout << mhs[i].persen;
cout << endl;
}
[Link]();
}
int main()
{
int i, n = 5;
int x; int Minggu=0
;
int pilihan;
char lagi;
cout<<"
====================================================";cout<<endl;
cout<<"Program Absensi Mahasiswa PTIK Unimed ";cout<<endl;
cout<<"
====================================================";cout<<endl; cout<<endl;
cout << "Pilih Opsi" << endl;
cout << "1. Masukkan data Mahasiswa\n2. Cek Absensi Mahasiswa\n3. Rekap
Data Kehadiran" << endl;
cout << "======================" << endl;
cout << "Pilihan: ";
cin >> pilihan;
system("cls");
switch (pilihan)
{
case 1:
{
for (i = 0; i < n; i++)
{
dataMasuk(i);
system("cls");
}
} break;
case 2:
{
do{
cout << "============================================" <<
endl;
cout << "Absensi Minggu ke-" << Minggu + 1 << endl;
cout << "============================================" <<
endl;
for (x = 0; x < n; x++) //n merupakan banyaknya mahasiswa
{
dataPresensi(x, Minggu);
}
cout << "Absensi Minggu Berikutnya[Y/N]= ";
cin >> lagi;
Minggu++;
} while (lagi == 'y' || lagi == 'Y');
}
break;
case 3:
{
rekapData(n);
}
break;
default: cout << "pilihan salah";
}
getch();