Data Pembelian Seorang Pembeli di Minimarket
Kode Barang Nama Barang Harga Jumlah Pembelian
. . . . . . . . . . . .
. . . . . . . . . . . .
9999 xxxx 0 0
Buatlah program dalam bahasa C yang terdiri dari :
1. Menu dengan susunan :
1. Rekam Data Pembelian
2. Tampil Isi Arsip
3. Hitung Jumlah yang harus Dibayar
4. Cari harga barang yang 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 RekamDataPembelian, dst
4. Prosedur RekamDataPembelian bertugas merekam data pembelian seorang pelanggan ke dalam arsip bernama DataPembelian.dat
5. Prosedur TampilIsiArsip bertugas menampilkan isi arsip ke layar
6. Fungsi HitungBayar bertugas menghitung jumlah uang yang harus dibayar
7. Fungsi CariHarga untuk menampilkan harga barang yang paling mahal
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 kode_barang; char nama_barang[25]; float harga_barang; int jumlah_barang;}Databrg;
Databrg barang;
FILE *brg;
void RekamDataPembelian(FILE *brg);
void TampilIsiArsip (FILE *brg);
float HitungPembayaran();
float CariHargaTertinggi();
int cekmark();
int main()
{
int i;
char y;
while (y!='n')
{
system("CLS");
printf("Menu yang kami sediakan : ");
printf("\n1. Rekam Data barang ");
printf("\n2. Tampil Isi Arsip ");
printf("\n3. Hitung stock ");
printf("\n4. cari harga ");
printf("\n5. Cek mark ");
printf("\n6. Keluar Program ");
printf("\n\nMasukkan nomor pilihan menu anda :");scanf("%d", &i);
switch(i)
{
case 1 : RekamDataPembelian(brg); break; //procedur merekam file
case 2 : TampilIsiArsip(brg); break; //procedur menampilkan arsip
case 3 : TampilIsiArsip(brg); printf("Total yang di bayar\t\t%.0f\n", HitungPembayaran()); break; //fungsi menghitung jumlah pembayaran
case 4 : printf("%.0f", CariHargaTertinggi()); break; //fungsi mencari harga tertinggi
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 RekamDataPembelian(FILE *brg)
{
char x;
printf("Kode Barang :");scanf("%d%c",&barang.kode_barang,&x);
brg=fopen("datapembelian.dat","wb");fflush(stdin);
while(barang.kode_barang != 9999)
{
printf("nama barang :");gets(barang.nama_barang); fflush(stdin);
printf("jumlah stock :");scanf("%d", &barang.jumlah_barang); fflush(stdin);
printf("harga barang :");scanf("%f", &barang.harga_barang ); fflush(stdin);
fwrite(&barang, sizeof(barang),1,brg); fflush(stdin);
printf("\n");
printf("kode barang :");scanf("%d%c",&barang.kode_barang,&x); fflush(stdin);
}
barang.kode_barang = 9999; strcpy(barang.nama_barang, "xxxx"); barang.jumlah_barang = 9999; barang.harga_barang = 9999;
fwrite(&barang, sizeof(barang),1,brg); fflush(stdin);
fclose(brg);
}
//Ambil data dari arsip
void TampilIsiArsip(FILE *brg)
{
brg=fopen("datapembelian.dat","rb");
fread(&barang, sizeof(barang), 1, brg);
printf("\n===================================================\n");
printf("kode\tNama\t\tjumlah\tharga\n");
printf("===================================================\n");
while(barang.kode_barang!=9999)
{
printf("%d\t", barang.kode_barang);
printf("%s\t\t", barang.nama_barang);
printf("%d\t", barang.jumlah_barang);
printf("%.0f\t", barang.harga_barang);
printf("\n");
fread(&barang, sizeof(barang), 1, brg);
}
fclose(brg );
fflush(stdin);
printf("===================================================\n");
}
//hitung total
float HitungPembayaran()
{
float Total_Harga;
brg=fopen("datapembelian.dat","rb");
fread(&barang, sizeof(barang), 1, brg);
Total_Harga = 0;
while(barang.kode_barang!=9999)
{
Total_Harga = Total_Harga + (barang.jumlah_barang * barang.harga_barang);
fread(&barang, sizeof(barang), 1, brg);
}
fclose(brg );fflush(stdin);
return Total_Harga;
}
//cari harga
float CariHargaTertinggi()
{
int hargatertinggi;
hargatertinggi = 0;
brg=fopen("datapembelian.dat","rb");
fread(&barang, sizeof(barang), 1, brg);
while(barang.kode_barang!=9999)
{
if (barang.harga_barang > hargatertinggi)
{
hargatertinggi = barang.harga_barang;
}
fread(&barang, sizeof(barang), 1, brg);
}
fclose(brg ); fflush(stdin);
return hargatertinggi;
}
int cekmark()
{
int mark;
mark = 0;
brg=fopen("datapembelian.dat","rb");
fread(&barang, sizeof(barang), 1, brg);
while(!feof(brg))
{
if (barang.kode_barang==9999) mark = 1;
fread(&barang, sizeof(barang), 1, brg);
}
fclose(brg ); fflush(stdin);
return mark;
}
|
Tidak ada komentar:
Posting Komentar