Selasa, 18 Desember 2012

Praktikum 15 Arsip Beruntun

Praktikum 15 Arsip Beruntun

Bagian 1 :
Nama  proyek : Praktikum15_1_NIM
Nama file : soal1.c
Soal
Diketahui arsip beruntun yang menyimpan data terstruktur di bawah ini. Arsip tidak mempunyai mark.Data Mahasiswa Jurusan Teknik Informatika Semester 1
NIM
Nama
Program Studi
Alamat
 . . .
  . . .
 . . . 
  . . .
  . . .
  . . .
  . . .
  . . .
 Buatlah program dalam bahasa C yang terdiri dari :
1.    Menu dengan susunan :
1.    Rekam Data Mahasiswa
2.    Tampil Isi Arsip
3.    Salin Data
4.    Tampil Hasil Penyalinan
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 DtMhs.txt.Prosedur ini memungkinkan penambahan data mahasiswa tanpa menghapus isi arsip yang sudah ada.
5.    Prosedur TampilIsiArsip bertugas menampilkan isi arsip ke layar
6.    Prosedur SalinData bertugas menyalin data mahasiswa yang tinggal di Batam Center ke arsip baru bernama DtMhsBatamCenter.txt. Prosedur ini memungkinkan penambahan data mahasiswa tanpa menghapus isi arsip yang sudah ada.
7.      Prosedur TampilHasilPenylinan untuk menampilkan isi arsip DtMhsBatamCenter.txt ke layar


Tulis algoritmanya

Hasil Penerjemahan algoritma ke dalam bahasa C
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct{int NIM; char nama[25]; char Program_Study[25]; char Alamat[50];}DataMhs;
DataMhs Msiswa;
FILE *Mhs;
FILE *Mhs2;

void RekamFile(FILE *Mhs);
void AmbilData (FILE *Mhs);
void SalinFile(FILE *Mhs);
void AmbilDataBaru (FILE *Mhs);

int main()
{
    int i;

        system("CLS");
        printf("Menu yang kami sediakan : ");
        printf("\n1. Rekam Data Mahasiswa ");
        printf("\n2. Tampil Isi Arsip ");
        printf("\n3. Salin Data ");
        printf("\n4. Tampil Hasil Penyalinan ");
        printf("\n5. Keluar Program ");
        printf("\n\nMasukkan nomor pilihan menu anda :");scanf("%d", &i);

        switch(i)
        {
            case 1 : RekamFile(Mhs); break;
            case 2 : AmbilData(Mhs); break;
            case 3 : SalinFile(Mhs); break;
            case 4 : AmbilDataBaru(Mhs); break;
            default: break;
        }

 return 0;
}

//rekam file
void RekamFile(FILE *Mhs)
{
    DataMhs Msiswa;
    char x;
    int cek;
    printf("Anda ingin menambah (1) atau buat baru (0) :"); scanf("%d", &cek);

    if (cek == 1)
        {Mhs=fopen("DtMhs.txt","ab");fflush(stdin);}
    else
        Mhs=fopen("DtMhs.txt","wb");

    printf("NIM           :");scanf("%d%c",&Msiswa.NIM,&x);
    while(Msiswa.NIM != 9999)
    {
        printf("Nama          :");gets(Msiswa.nama); fflush(stdin);
        printf("Program Study :");gets(Msiswa.Program_Study); fflush(stdin);
        printf("Alamat        :");gets(Msiswa.Alamat ); fflush(stdin);
        fwrite(&Msiswa, sizeof(Msiswa),1,Mhs); fflush(stdin);
        printf("\n");
        printf("NIM           :");scanf("%d%c",&Msiswa.NIM,&x); fflush(stdin);
    }
        fclose(Mhs);
}

//Ambil data dari arsip
void AmbilData (FILE *Mhs)
{
    Mhs=fopen("DtMhs.txt","rb");
    fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
      while(!feof(Mhs))
    {
        printf("%d\t", Msiswa.NIM);
        printf("%s\t\t", Msiswa.nama);
        printf("%s\t", Msiswa.Program_Study);
        printf("%s\t", Msiswa.Alamat);
        printf("\n");
        fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
    }
    fclose(Mhs);
    fflush(stdin);
}

void SalinFile(FILE *Mhs)
{
    int m, cek;
    char cari[100];
    fflush(stdin);
    printf("Anda ingin menambah (1) atau buat baru (0) :"); scanf("%d", &cek);     fflush(stdin);
    printf("Alamat yang akan disorting :"); gets(cari);

    Mhs=fopen("DtMhs.txt","rb");
    fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
    m=0;
    while(!feof(Mhs))
    {
        if(strcmp(Msiswa.Alamat, cari)==0)
        {
            if (cek==1) Mhs2=fopen("DtMhsBatamCenter.txt","ab");
            else Mhs2=fopen("DtMhsBatamCenter.txt","wb");
            fwrite(&Msiswa, sizeof(Msiswa), 1, Mhs2);  m++;
        }
        fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
    }
    fclose(Mhs); fclose(Mhs2); fflush(stdin);

    if (m==0)printf("Data Tak ada yang sesuai\n");
    else printf("Sukses %d data telah di transfer\n", m);
 }

void AmbilDataBaru (FILE *Mhs)
{
    Mhs=fopen("DtMhsBatamCenter.txt","rb");
    if(Mhs==NULL){printf("Data Tak ada : ");}
    else
    {
        fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
                    while(!feof(Mhs))
        {
            printf("%d\t", Msiswa.NIM);
            printf("%s\t\t", Msiswa.nama);
            printf("%s\t", Msiswa.Program_Study);
            printf("%s\t", Msiswa.Alamat);
            printf("\n");
            fread(&Msiswa, sizeof(Msiswa), 1, Mhs);
        }
                }
    fclose(Mhs);
    fflush(stdin);
}

















4 komentar:

  1. thanks to mas naru, you bring my name to your program...hehehehe @_@

    BalasHapus
  2. I don't think so, at this time i haven't a much job, and i try to undestand your p0sting. . If i have a problem, i will send massage to you. Thankz a l0t mas naru. :-D

    BalasHapus
  3. Mas naru, how about the last menu. . > keluar program. . How we make it ?

    BalasHapus