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:http://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.