Data Mahasiswa Jurusan Teknik Informatika Semester 1
NIM Nama IPK TotalKehadiran(%)
. . . . . . . . . . . .
. . . . . . . . . . . .
999 xxxx 9.99 999
Buatlah program dalam bahasa C yang terdiri dari :
1. Menu dengan susunan :
1. Rekam Data Mahasiswa
2. Tampil Isi Arsip
3. Hitung rata-rata IPK
4. Cari peraih IPK tertinggi
5. Keluar Program
2. Pengguna dapat memilih menu yang diinginkan berulang-ulang s.d. memilih menu keluar.
3. Jika pengguna memilih menu 1, program akan memanggil prosedur RekamDataMahasiswa, dst
4. Prosedur RekamDataMahasiswa bertugas merekam data mahasiswa ke dalam arsip bernama DataMhs.txt
5. Prosedur TampilIsiArsip bertugas menampilkan isi arsip ke layar
6. Fungsi HitungRata2 bertugas menghitung rata-rata IPK seluruh mahasiswa
7. Prosedur PeraihIPKTertinggi untuk menampilkan nama mahasiswa yang mempunyai IPK tertinggi dan IPK-nya
8. Fungsi CekMark untuk menentukan apakah sebuah rekaman merupakan sebuah mark atau tidak"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct{int NIM; char nama[25]; float IPK; int TotalKehadiran;}DataMhs;
DataMhs Msiswa;
FILE *Mhs;
void RekamDataMahasiswa(FILE *Mhs);
void TampilIsiArsip (FILE *Mhs);
float HitungRataRataIPK();
void CariIPKTertinggi();
int cekmark();
int main()
{
int i;
char y;
while (y!='n')
{
system("CLS");
printf("Menu yang kami sediakan : ");
printf("\n1. Rekam Data Mahasiswa ");
printf("\n2. Tampil Isi Arsip ");
printf("\n3. Hitung rata rata IPK ");
printf("\n4. cari peraih IPK tertinggi ");
printf("\n5. Cek mark ");
printf("\n6. Keluar Program ");
printf("\n\nMasukkan nomor pilihan menu anda :");scanf("%d", &i);
switch(i)
{
case 1 : RekamDataMahasiswa(Mhs); break; //procedur merekam file
case 2 : TampilIsiArsip(Mhs); break; //procedur menampilkan isi arsip
case 3 : printf("Rata rata IPK : %.1f\n", HitungRataRataIPK()); break;
case 4 : CariIPKTertinggi(); break;
case 5 : if (cekmark()==1)printf("Arsip ini menggunakan mark");
else printf("Arsip ini tidak menggunakan mark"); break; //fungsi mengecek mark
default: break;
}
if (i==6) break;
printf("\nApakah anda ingin mengulang transaksi y/n : "); scanf("%c", &y); fflush(stdin);
}
return 0;
}
//rekam file
void RekamDataMahasiswa(FILE *Mhs)
{
char x;
printf("Nim :");scanf("%d%c",&Msiswa.NIM,&x);
Mhs=fopen("datamahasiswa.dat","wb");fflush(stdin);
while(Msiswa.NIM != 9999)
{
printf("nama Siswa :");gets(Msiswa.nama); fflush(stdin);
printf("IPK :");scanf("%f", &Msiswa.IPK); fflush(stdin);
printf("Kehadiran :");scanf("%d", &Msiswa.TotalKehadiran ); fflush(stdin);
fwrite(&Msiswa, sizeof(Msiswa),1,Mhs); fflush(stdin);
printf("\n");
printf("Nim :");scanf("%d%c",&Msiswa.NIM,&x); fflush(stdin);
}
Msiswa.NIM = 9999; strcpy(Msiswa.nama, "xxxx"); Msiswa.IPK = 9999; Msiswa.TotalKehadiran = 9999;
fwrite(&Msiswa, sizeof(Msiswa),1,Mhs); fflush(stdin);
fclose(Mhs);
}
//Ambil data dari arsip
void TampilIsiArsip(FILE *Mhs)
{
Mhs=fopen("datamahasiswa.dat","rb");
fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
printf("\n===================================================\n");
printf("Nim\tNama\t\tIPK\tKehadiran\n");
printf("===================================================\n");
while(Msiswa.NIM!=9999)
{
printf("%d\t", Msiswa.NIM);
printf("%s\t\t", Msiswa.nama);
printf("%.1f\t", Msiswa.IPK);
printf("%d\t", Msiswa.TotalKehadiran);
printf("\n");
fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
}
fclose(Mhs );
fflush(stdin);
printf("===================================================\n");
}
//hitung rata-rata
float HitungRataRataIPK()
{
float ratarata;
int jumlahsiswa;
Mhs=fopen("datamahasiswa.dat","rb");
fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
ratarata = 0;
jumlahsiswa = 0;
while(Msiswa.NIM!=9999)
{
ratarata = ratarata + Msiswa.IPK;
jumlahsiswa = jumlahsiswa + 1;
fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
}
fclose(Mhs );fflush(stdin);
ratarata = ratarata / jumlahsiswa;
return ratarata;
}
//cari harga
void CariIPKTertinggi()
{
float IPKtertinggi;
char Nama[20];
IPKtertinggi = 0;
Mhs=fopen("datamahasiswa.dat","rb");
fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
while(Msiswa.NIM!=9999)
{
if (Msiswa.IPK > IPKtertinggi)
{
IPKtertinggi = Msiswa.IPK;
strcpy(Nama, Msiswa.nama);
}
fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
}
fclose(Mhs ); fflush(stdin);
printf("Ipk Tertinggi adalah :%s dengan nilai :%.1f\n", Nama, IPKtertinggi);
}
int cekmark()
{
int mark;
mark = 0;
Mhs=fopen("datamahasiswa.dat","rb");
fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
while(!feof(Mhs))
{
if (Msiswa.NIM==9999) mark = 1;
fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
}
fclose(Mhs ); fflush(stdin);
return mark;
}
|
Tidak ada komentar:
Posting Komentar