#Praktikum 15#
Diketahuiarsipberuntun yang menyimpan data terstruktur di bawahini. Arsipmempunyai mark yang eksplisit.
Data Nilai SeorangMahasiswa pada Semester 1
KodeMakul
|
NamaMakul
|
Jumlah SKS
|
Nilai(A/B/C/D/E)
|
. . .
|
. . .
|
. . .
|
. . .
|
. . .
|
. . .
|
. . .
|
. . .
|
999
|
xxxx
|
999
|
Z
|
Buatlah program dalambahasa C yang terdiridari :
1. Menu dengansusunan :
1. Rekam Data Nilai
2. Tampil Isi Arsip
3. Hitung IPK
4. Tampilnilaisebuahmatakuliah
5. Keluar Program
2. Penggunadapatmemilih menu yang diinginkanberulang-ulangs.d.memilih menu keluar.
3. Jikapenggunamemilih menu 1, program akanmemanggilprosedurRekamDataNilai, dst
4. ProsedurRekamDataNilaibertugasmerekam data nilaikedalamarsipbernama DataNilai.txt
5. ProsedurTampilIsiArsipbertugasmenampilkanisiarsipkelayar
6. FungsiHitungIPKbertugasmenghitung IPK seorangmahasiswa
7. FungsiTampilNilaiuntukmenampilkannilaisebuahmatakuliah, dengan input parameter adalahnamamatakuliah
8. FungsiCekMarkuntukmenentukanapakahsebuahrekamanmerupakansebuah mark atautidak
#include <stdio.h>
#include <conio.h>
#include <string.h>
typedef struct {int KodeMakul; char NamaMakul[25]; int JumlahSKS; char nilai[5];} DataMhs;
DataMhs Msiswa;
FILE *Mhs;
void RekamDataNilai(FILE *Mhs);
void TampilIsiArsip (FILE *Mhs);
int HitungIPK();
int cekmark();
int main()
{
int i;
char y;
printf("Menu yang kami sediakan : ");
printf("\n1. Rekam Data Nilai ");
printf("\n2. Tampil Isi Arsip ");
printf("\n3. Hitung IPK ");
printf("\n4. Tampil nilai sebuah matakuliah ");
printf("\n5. Cek mark ");
printf("\n6. Keluar Program ");
while (y!='n')
{
printf("\n\nMasukkan nomor pilihan menu anda :");scanf("%d", &i);
switch(i)
{
case 1 : RekamDataNilai(Mhs); break; //procedur merekam file
case 2 : TampilIsiArsip(Mhs); break; //procedur menampilkan isi arsip
case 3 : printf("jumlah IPK : %d\n", HitungIPK()); break;
case 4 : HitungIPK(); 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 RekamDataNilai(FILE *Mhs)
{
char x;
printf("Kode Makul :");scanf("%d%c",&Msiswa.KodeMakul,&x);
Mhs=fopen("datanilai.dat","wb");fflush(stdin);
while(Msiswa.KodeMakul != 999)
{
printf("NamaMakul :");gets(Msiswa.NamaMakul); fflush(stdin);
printf("Jumlah SKS :");scanf("%d", &Msiswa.JumlahSKS); fflush(stdin);
printf("Nilai(A/B/C/D/E) :");scanf("%c", &Msiswa.nilai ); fflush(stdin);
fwrite(&Msiswa, sizeof(Msiswa),1,Mhs); fflush(stdin);
printf("\n");
printf("KodeMakul :");scanf("%d%c",&Msiswa.KodeMakul,&x); fflush(stdin);
}
Msiswa.KodeMakul = 999; strcpy(Msiswa.NamaMakul, "xxxx"); Msiswa.JumlahSKS = 999; strcpy(Msiswa.nilai, "z");
fwrite(&Msiswa, sizeof(Msiswa),1,Mhs); fflush(stdin);
fclose(Mhs);
}
//Ambil data dari arsip
void TampilIsiArsip(FILE *Mhs)
{
Mhs=fopen("datanilai.dat","rb");
fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
printf("\n===================================================\n");
printf("KodeMakul\tNamamakul\tsks\tnilai\n");
printf("===================================================\n");
while(Msiswa.KodeMakul!=999)
{
printf("%d\t", Msiswa.KodeMakul);
printf("%s\t\t\t", Msiswa.NamaMakul);
printf("%d\t", Msiswa.JumlahSKS);
printf("%s\t", Msiswa.nilai);
printf("\n");
fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
}
fclose(Mhs );
fflush(stdin);
printf("===================================================\n");
}
int HitungIPK()
{
int ipk, nilai;
Mhs=fopen("datanilai.dat","rb");
fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
ipk = 0;
while(Msiswa.KodeMakul!=999)
{
if (strcmp(Msiswa.nilai,"A")==0) nilai = 4;
else if (strcmp(Msiswa.nilai,"B")==0) nilai = 3;
else if (strcmp(Msiswa.nilai,"C")==0) nilai = 2;
else if (strcmp(Msiswa.nilai,"D")==0) nilai = 1;
else nilai = 0;
ipk = ipk + nilai;
fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
}
fclose(Mhs );
fflush(stdin);
return ipk;
}
int cekmark()
{
int mark;
mark = 0;
Mhs=fopen("datanilai.dat","rb");
fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
while(!feof(Mhs))
{
if (Msiswa.KodeMakul==999) mark = 1;
fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
}
fclose(Mhs ); fflush(stdin);
return mark;
}
|
Casino of the Day - Mapyro
BalasHapusA map 여주 출장마사지 showing the Wynn Las 수원 출장마사지 Vegas and Encore at Wynn Las Vegas. Casino 화성 출장안마 of 경상북도 출장마사지 the Day – Wynn Hotel 오산 출장안마 Casino, Wynn Tower, Encore Tower, Resort King and