Aplikasi untuk mencatat informasi kontak personal

Berikut adalah source code sederhana untuk mencatat informasi kontak. Program ini menggunakan database berupa file txt yang diakses untuk menyimpan data.

/*------------------------------------*
 | Copyright:Ilmucerdas.wordpress.com |
 | Author:iin.aryani@yahoo.co.id      |
 |                                    |
 | Aplikasi pencatat informasi kontak |
 | Versi 01                           |
 | oleh : Iin Aryani                  |
 | 2012                               |
 *------------------------------------*/
/* kumpulan file library */
#include <stdio.h>
#include <stdlib.h>
#include <direct.h>
#include <string.h>
/* kumpulan deklarasi-deklarasi prototype fungsi dan variabel */
void tambahKontak();
void lihatKontak();
void cariKontakFromNama(char nama[]);
void cariKontakFromNo(char no[]);
void cekFile();
void keluar();
void back();
void errMsg();
struct kontak
{
    char nama[20];
    char nomor[20];
    char alamat[30];
}
kontak;
int jumlahKontak=0;
char keyword,cariNama[20],cariNomor[20];
FILE *Fileku,*Fileku2;

void main()
{
    mkdir("db");
    system("cls");
    printf("\n ________APLIKASI PENCATAT KONTAK________\n"
           "\n 1. Tambahkan data kontak"
           "\n 2. Lihat semua kontak"
           "\n 3. Cari kontak"
           "\n 4. Keluar"
           "\n\n Perintah : ");
    scanf("%c",&keyword);
    system("cls");
    if(keyword=='1'){
        tambahKontak();
    }
    else if(keyword=='2'){
        lihatKontak();
    }
    else if(keyword=='3'){
        printf("\n 1. Cari berdasarkan nama"
               "\n 2. Cari berdasarkan nomor"
               "\n\n Perintah : ");
        fflush(stdin);
        scanf("%c",&keyword);
        system("cls");
        printf("\n _________CARI KONTAK________\n");
        if(keyword=='1'){
            printf("\n Nama : ");
            fflush(stdin);
            gets(cariNama);
            cariKontakFromNama(cariNama);
        }
        if(keyword=='2'){
            printf("\n No : ");
            fflush(stdin);
            gets(cariNomor);
            cariKontakFromNo(cariNomor);
        }
        else errMsg();
    }
    else if(keyword=='4'){
        keluar();
    }
    else errMsg();
}
void tambahKontak(){
    Fileku=fopen("db/kontakList.txt","a+");
    printf("\n ________TAMBAH KONTAK________\n"
           "\n Nama : ");
    fflush(stdin);
    gets(kontak.nama);

    printf(" Alamat : ");
    fflush(stdin);
    gets(kontak.alamat);
    printf(" No.Telp/Hp. : ");
    fflush(stdin);
    gets(kontak.nomor);
    fwrite(&kontak, sizeof(kontak),1,Fileku);
    printf("\n Data berhasil ditambahkan...\n");
    fclose(Fileku);
    back();
}
void lihatKontak(){
    cekFile();
    Fileku = fopen("db/kontakList.txt","a+");
    printf("\n _____________________________DAFTAR SEMUA KONTAK______________________________\n");
    printf("\n %20s | %30s | %20s |\n","Nama","Alamat","Nomor");
    while(fread(&kontak, sizeof(kontak),1,Fileku)!=0){
    printf("\n %20s | %30s | %20s |",
           kontak.nama,kontak.alamat,kontak.nomor);
    }
    fclose(Fileku);
    printf("\n");
    back();
}
void cekFile(){
    Fileku=fopen("db/kontakList.txt","a+");
    if(fread(&kontak, sizeof(kontak),1,Fileku)==0){
    printf("\n Database kosong!\n");
    fclose(Fileku);
    back();
    }
    fclose(Fileku);
}
void cekJumlah(){
    Fileku = fopen("db/kontakList.txt","a+");
    while(fread(&kontak,sizeof(kontak),1,Fileku)==1)
            {
                jumlahKontak++;
            }
    fclose(Fileku);
}
void cariKontakFromNama(char nama[]){
    int ketemu=0;
    Fileku = fopen("db/kontakList.txt","a+");
    int no_rekaman=0;
            while(fread(&kontak,sizeof(kontak),1,Fileku)==1)
            {
                no_rekaman++;
                if(strcmp(kontak.nama,nama)==0)
                    {ketemu=1;break;}
            }
    fclose(Fileku);
    if(ketemu==1)
        {
            printf("\n _______DATA DITEMUKAN_______\n"
                   "\n Nama \t\t: %10s%20s"
                   "\n Alamat\t\t: %30s"
                   "\n No.Telp/Hp\t: %10s%20s"," ",
                   kontak.nama,kontak.alamat," ",kontak.nomor);
            printf("\n 1. Hapus"
                   "\n 2. Kembali"
                   "\n\n Perintah : ");
            fflush(stdin);
            scanf("%c",&keyword);
            if(keyword=='1'){
                Fileku = fopen("db/kontakList.txt","a+");
                Fileku2=fopen("db/kontakList2.txt","w+");
                no_rekaman--;
                int hit=0;

                while(fread(&kontak,sizeof(kontak),1,Fileku)==1)
                {
                 if(hit!=no_rekaman){
                 fwrite(&kontak, sizeof(kontak),1,Fileku2);
                 }
                 hit++;
                }
                fclose(Fileku);
                printf("\n Data berhasil dihapus ");
            fclose(Fileku2);
            unlink("db/kontakList.txt");
            rename("db/kontakList2.txt","db/kontakList.txt");
            }
    }
    else printf("\n TIDAK DITEMUKAN\n");
    fclose(Fileku);
    back();
}
void cariKontakFromNo(char no[]){
    int ketemu=0;
    Fileku = fopen("db/kontakList.txt","a+");
    int no_rekaman=0;
            while(fread(&kontak,sizeof(kontak),1,Fileku)==1)
            {
                no_rekaman++;
                if(strcmp(kontak.nomor,no)==0)
                    {ketemu=1;break;}
            }
    fclose(Fileku);
    if(ketemu==1)
        {
            printf("\n _______DATA DITEMUKAN_______\n"
                   "\n Nama \t\t: %10s%20s"
                   "\n Alamat\t\t: %30s"
                   "\n No.Telp/Hp\t: %10s%20s"," ",
                   kontak.nama,kontak.alamat," ",kontak.nomor);
            printf("\n 1. Hapus"
                   "\n 2. Kembali"
                   "\n\n Perintah : ");
            fflush(stdin);
            scanf("%c",&keyword);
            if(keyword=='1'){
                Fileku = fopen("db/kontakList.txt","a+");
                Fileku2=fopen("db/kontakList2.txt","w+");
                no_rekaman--;
                int hit=0;

                while(fread(&kontak,sizeof(kontak),1,Fileku)==1)
                {
                 if(hit!=no_rekaman){
                 fwrite(&kontak, sizeof(kontak),1,Fileku2);
                 }
                 hit++;
                }
                fclose(Fileku);
                printf("\n Data berhasil dihapus ");
            fclose(Fileku2);
            unlink("db/kontakList.txt");
            rename("db/kontakList2.txt","db/kontakList.txt");
            }
    }
    else printf("\n TIDAK DITEMUKAN\n");
    fclose(Fileku);
    back();
}
void back(){
    getchar();
    getchar();
    main();
}
void keluar(){
    system("cls");
    printf("\n Terimakasih...\n by:https://ilmucerdas.wordpress.com\n\n");
    getchar();
    getchar();
    exit(1);
}
void errMsg(){
    system("cls");
    printf("\n Perintah salah!\n");
    getchar();
    getchar();
    main();
}

Beritahu saya jika ada yang salah.

About Iin aryani

I don't wanna be a "Copycat" but, something they need to copy.

Posted on 27 April 2012, in Open Source ( C Program ) and tagged . Bookmark the permalink. 2 Comments.

  1. kasih tau langkah – langkah awal sampai akhir !

Komentar untuk penulis

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: