Monday 19 November 2012

file read & write (example) pada c++


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
 
#define NEW_LINE printf("\n");
#define CLS system("cls");
#define PAUSE system("pause");
#define GETCHAR getchar();
 
int main()
{
    FILE *fout;
    FILE *fin;
 
    struct Mahasiswa {
        char NPM[10], Nama[256], Fakultas[64], Jurusan[64];
        float Nilai;
    };
 
    struct block {
        struct Mahasiswa Mhs;
 
        char *getNPM() {
            return Mhs.NPM;
        }
 
        char *getNama() {
            return Mhs.Nama;
        }
 
        char *getFakultas() {
            return Mhs.Fakultas;
        }
 
        char *getJurusan() {
            return Mhs.Jurusan;
        }
 
        void setNPM(char value[10]) {
            strcpy(Mhs.NPM, value);
        }
 
        void setNama(char value[256]) {
            strcpy(Mhs.Nama, value);
        }
 
        void setFakultas(char value[64]) {
            strcpy(Mhs.Fakultas, value);
        }
 
        void setJurusan(char value[64]) {
            strcpy(Mhs.Jurusan, value);
        }
 
        void setNilai(float value) {
            Mhs.Nilai = value;
        };
 
        float getNilai() {
            return Mhs.Nilai;
        };
 
        void setMhs(char npm[10], char nama[256], char fakultas[64], char jurusan[64], float nilai) {
            setNPM(npm);
            setNama(nama);
            setFakultas(fakultas);
            setJurusan(jurusan);
            setNilai(nilai);
        }
    } block;
 
    char input;
    int pilihan;
    char npm[10], nama[255], fakultas[64], jurusan[64];
    float nilai;
 
    do {
        NEW_LINE; CLS;
        printf("1. Input Data\n");
        printf("2. Lihat Data\n");
        printf("0. Keluar\n");
        printf("\nMasukan pilihan Anda : ");
        scanf("%d", &pilihan);
 
        switch (pilihan) {
            case 1:
                input = 'y';
                while (input == 'y' || input == 'Y') {
                    NEW_LINE; CLS; GETCHAR;
                    printf("NPM      : "); scanf("%[^\n]", npm); GETCHAR;
                    printf("Nama     : "); scanf("%[^\n]", nama); GETCHAR;
                    printf("Fakultas : "); scanf("%[^\n]", fakultas); GETCHAR;
                    printf("Jurusan  : "); scanf("%[^\n]", jurusan); GETCHAR;
                    printf("Nilai    : "); scanf("%f", &nilai);
 
                    block.setMhs(npm, nama, fakultas, jurusan, nilai);
 
                    fout = fopen("database.adb", "ab");
                    if (fout == NULL) {
                        fprintf(stderr, "\nError!. Tidak dapat mengakses file database.adb\n");
                        exit(1);
                    }
 
                    fwrite((struct Mahasiswa *)&block.Mhs, sizeof(struct Mahasiswa), 1, fout);
                    fclose(fout);
 
                    printf("\nIngin menginputkan lagi (y/n): ");
                    scanf("%s", &input);
                }
                break;
 
            case 2:
                fin = fopen("database.adb", "rb");
                if (fin == NULL) {
                    fprintf(stderr, "\nError!. Tidak dapat mengakses file database.adb\n");
                    exit(1);
                }
 
                NEW_LINE; CLS;
                while (!feof(fin)) {
                    fread((struct Mahasiswa *)&block.Mhs, sizeof(struct Mahasiswa), 1, fin);
 
                    if (feof(fin)) break;
 
                    printf(
                        "%s  %s  %s  %s  %f",
                        block.getNPM(), block.getNama(), block.getFakultas(),
                        block.getJurusan(), block.getNilai()
                    );
 
                    NEW_LINE;
                }
                fclose(fin);
                NEW_LINE; PAUSE;
                break;
 
            case 0: break;  
 
            default:
                printf("\nPilihan salah !\n");
                break;
        }
    } while (pilihan != 0);
 
    return 0;
}

No comments:

Post a Comment