BAB I
1. Pendahuluan
Bab ini membahas tentang latar belakang masalah yang menjadi alasan pembuatan penulisan dengan disertai batasan masalah, tujuan pembuatan, pengertian dan fitur – fitur yang tersedia.
1.1 Latar Belakang
Teknologi informasi sampai dengan saat ini telah berkembang sangat pesat seiring dengan penemuan dan pengembangan ilmu pengetahuan dalam bidang informasi dan komunikasi, khususnya dalam perkembangan dunia komputer. Karena hal itu banyak sekali kemudahan-kemudahan yang tercipta dari peningkatan layanan teknologi.
Dahulunya komputer digunakan hanya sebagai alat hitung saja, tetapi karena perkembangannya yang sangat pesat komputer menjadi alat yang multiguna. Komputer banyak dipakai sebagai alat belajar, bisnis, hiburan, dan masih banyak lagi fungsinya. Perkembangan komputer juga mempengaruhi berkembangnya dunia internet. Internet menjadi pasangan yang yang tak bisa dipisahkan oleh komputer.
Layanan internet adalah salah satu kemajuan dari ilmu pengetahuan dalam bidang informasi dan komunikasi tersebut. Internet sudah menjadi suatu kebutuhan bagi hampir semua orang, dari yang masih kecil sampai orang tua, dari yang tua sampai yang muda semuanya menggunakan internet. Sekarang internet tidak hanya dapat diakses melalui komputer, handphone pun sekarang dapat mengakses internet.
Perkembangan internet di Indonesia juga semakin meningkat. Seiring dengan perkembangannya, maka banyak pula orang yang memanfaatkannya sebagai peluang bisnis. Salah satu dari peluang bisnis tersebut adalah warnet Namun untuk menjalankan bisnis ini memerlukan modal yang tidak sedikit, selain perangkat keras (hardware), perangkat lunak (software) pun sangat diperlukan untuk menjalankan bisnis ini. Dalam sebuah warnet pun memiliki kendala dalam penjualan jasanya. Awalnya warnet hanya memiliki sistem pembayaran yang manual. Pegawai warnet mencatat pada buku tulis jam berapa user mulai mengunakan komputer dan jam berapa user selesai menggunakan computer dan apa saja yang sudah dipesan oleh user, misalnya minuman. Kemudian pegawai atau operator warnet menghitung total biaya dengan mengalikan tarif awal dengan durasi dan menambahkannya dengan harga minuman yang dipesan.
Namun cara tersebut menyebabkan banyak sekali kesalahan yang terjadi pada perhitungan. Terkadang buku catatan tersebut hilang atau mungkin rusak sehingga. Karena itu warnet memerlukan sebuah aplikasi pembayaran.
Contohnya dalam warnet XXX. Warnet ini belum memiliki sebuah aplikasi billing. Di warnet tersebut hanya menggunakan penghitungan secara manual. Cara tesebut ternyata tidak efektif karena banyak transaksi yang tidak tercatat dalam buku sehingga warnet tersebut mengalami kerugian materi. Oleh karena itu penulis membuat PI yang berjudul “Membuat Aplikasi Billing Warnet menggunakan C".
Ketika sedang browsing untuk mencari informasi mengenai sistem billing untuk warnet linux (sebelumnya saya mengunjungi sebuah situs aplikasi billing komersil yang ternyata sekarang bisa run di linux, yang sering saya lihat bajakannya di warnet-warnet yang OS nya juga bajakan, he) saya menemukan sebuah situs aplikasi billing warnet gratis dan open source tentunya. Dari situs tersebut saya tidak hanya melihat sebuah sistem aplikasi billing warnet yang powerfull tetapi juga sebuah tujuan yang mulia banget apalagi kalo bukan untuk bermanfaat bagi orang lain, terutama untuk bangsa ini (pengembang aplikasi ini merupakan orang Indonesia dan mengharapkan aplikasi ini dikembangkan juga oleh orang Indonesia).
1.2 Batasan Masalah
Permasalahan dibatasi pada tidak dibuatnya print out dari bukti transaksi, atau struk pembayaran dari server. Aplikasi ini hanya menampilkan total biaya dan durasi penggunaan dalam aplikasi billing.
1.3 Tujuan Pembuatan dan Penulisan
Membuat aplikasi billing dengan menampilkan form yang terdiri dari durasi yang telah dipakai dan biaya yang harus dikeluarkan oleh klien. Dan juga memudahkan pemilik untuk mengontrol kegiatan pada warnet atau rental komputer khususnya dalam penghitungan biaya.
Kata orang, mengembangkan free software atau software bebas di negara ini tidak ada gunanya, berbeda dengan di luar sana, yang mana orang lain akan sangat tertarik untuk melakukan kontribusi seperti menjadi developer, melaporkan bug, menulis dokumentasi, donasi, dan sebagainya. Orang-orang di negara ini hanya tertarik untuk memakai saja. Kata-kata ini ada benarnya, karena saya sudah merasakannya ;p. Tapi kita tidak bisa begitu saja menyalahkan ini, ada unsur politik (i hate politics!). Di negara ini sudah biasa disuap dengan software bajakan, pendidikan yang mono-sistem (hanya tergantung pada satu sistem), dan sebagainya. Bagaimana bisa berkreasi jika pembajakan di sana-sini, bagaimana bisa berkontribusi jika di mata kuliah hanya diajarkan Windows, Visual Basic, dan Microsoft Offices. Saya sebenarnya tidak peduli dengan kata-kata di atas, saya hanya cinta menulis program dan menikmatinya, saya bisa saja mengajak teman-teman developer di luar sana untuk mengembangkan gBilling, tapi tentu saja gBilling bukan buatan orang Indonesia lagi, harapan saya adalah gBilling 100% buatan orang-orang Indonesia.
1.4 Pengertian Billing
Billing adalah aplikasi sistem pembayaran warnet (warnet billing system) yang terdiri dari server dan client, Billing diharapkan bisa berjalan di multi-platform (Linux, BSD, MacOS, atau Microsoft Windows). Billing di tulis dalam bahasa C, dengan GUI toolkit GTK2 (The GIMP Toolkit), dan menggunakan SQLite sebagai sistem database dan penyimpanan data. Billing akan selalu berada di bawah lisensi GNU Public License (GPL) versi 2. Penulis membuat aplikasi ini pertama kalinya ketika sedang menulis aplikasi network untuk server FreeBSD (Maret, 2008) yang kira-kira hampir sama dengan cara kerja aplikasi billing warnet, dan pada waktu proyek aplikasi network itu selesai, penulis tertarik untuk menulis aplikasi billing warnet yang sesungguhnya. Penulis memilih porting ke GNU/Linux (Linux) karena Linux adalah sistem yang sangat ideal untuk Warnet. Walaupun dengan waktu luang yang tidak banyak (suka nongkrong dan banyak dengar lagu ;p) gBilling pun mulai ditulis dari awal. Karena socket programming pada setiap sistem kompatibel, dan library-libraryyang dipakai bisa berjalan di semua sistem tersebut, gBilling juga seharusnya bisa berjalan di setiap sistem dengan tanpa atau sedikit modifikasi, ini seperti Winsock di Windows yang menggunakan fungsi-fungsi khusus (tapi tetap menyediakan kompabilitas dengan socket UNIX/BSD) dan kode error yang tidak seperti UNIX. Pertama kali gBilling ditulis denganPython, seiring perkembangan aplikasi ini seperti system call, API library-library yang digunakan, bahasa scripting dianggap tidak cocok lagi dan gBilling ditulis ulang ke C sampai saat ini dengan GLib untuk fungsi-fungsi wrapper POSIX dan API Windows. gBilling menggunakan model concurrent TCP/IP server model, artinya server dapat malayani request client secara bersamaan (concurrent) tanpa menunggu request dari client lainnya selesai. Concurrent ini dicapai dengan menggunakan thread pada setiap request client seperti scheduling, timeout atau operasi socket (I/O). gBilling telah diprogram dengan baik untuk memenuhi kondisi thread-safe, tapi gBilling tidak dapat dijamin thread-safe, kerena untuk itu pemeriksaan program harus dilakukan dengan debugging atau menggunakan aplikasi pendeteksi thread-safety. Debugging pada aplikasi yang kompleks dan multi-thread sangat tidak mudah, kita harus punya kesabaran, skill, dan banyak waktu (ya, kita harus punya banyak waktu ;p). gBilling ditulis dalam bahasa C untuk kecepatan dan portabilitas, tidak seperti bahasa high-level seperti Java, PHP atau Python yang mengaksessystem call dan API melalui runtime-nya (yang juga merupakan system-level programming). C akan mengajarkan kita bagaimana mengakses system call dan API langsung dari library-library yang disediakan oleh sistem.
1.5 Kelebihan
Karena Billing adalah software bebas (free software), anda dapat mengambil keuntungan dari aplikasi ini. Anda bisa memodifikasi sesuai keperluan anda, anda bisa mempelajari cara kerja Billing dan membuat aplikasi billing anda sendiri, anda bisa berpartisipasi mengembangkan program ini, dan lain-lain. Billing akan selalu ditulis dengan mangacu pada portabilitas, Billing tidak akan mengacu hanya pada satu sistem yang mana akan membuang-buang waktu saja.
Billing tidak dibuat untuk mendapat keuntungan atau penghargaan, Billing dibuat untuk mendukung sistem operasi yang bebas seperti Linux agar bisa digunakan dengan baik untuk warnet. Sekali lagi Billing adalah software bebas yang berada di bawah lisensi GNU General Public License versi 2, bukan OSI Open Source, lisensi BSD dan sebagainya.
Melalui berbagai metode penelitian yang kami jalani selama penulisan makalah ini.
Metode yang dipakai dalam pembuatan penulisan ilmiah ini adalah observasi, yaitu dengan mengumpulkan data dan informasi dari beberapa warnet. Tahapan rancangnnya sebagai berikut :
- Membuat form yang terdiri dari beberapa button dan list.
- Memasukan coding pada button.
Diantanya terdapat :
· Multiplatform (UNIX: Linux, MacOS, BSD, dan Microsoft Windows) untuk arsitektur 32 bit dan 64 bit
· Concurrent TCP/IP server model (IPv4)
· Orientasi penyimpanan database (SQLite embedding)
· Kontrol penuh dari server (logout, shutdown, restart, tutup/buka login client)
· Mendeteksi client yang tidak aktif (program client yang tidak aktif atau komputer client)
· Sistem logging dan export log ke format CSV
· Sistem paket
· Sistem Item (Item-item yang dijual di warnet ditampilkan di client)
· Kostumisasi sesuai dengan warnet anda (nama warnet, slogan, alamat)
· Free software
Fitur-fitur lainnya seperti sistem member (anggota), voucher, screen capture dan lain-lain akan dikembangkan pada versi selanjutnya.
1.7 Cara Penggunaan
Silahkan baca lisensi di situs resminya sebelum penggunaan, distribusi dan modifikasi Billing. Dukung pengembangan Billing dengan ikut serta dalam penulisan kode program, menulis dokumentasi, laporan bug atau melakukan donasi. Donasi yang masuk akan sangat membantu pengembangan Billing seperti untuk membeli distro-distro Linux, membeli sistem operasi yang belum di uji coba seperti Windows Vista (jangan pernah pikir bajakan ;p), dan keperluan lainnya. Untuk melakukan donasi, silahkan hubungi penulis. Perhatian: Anda tetap selalu bisa mendapatkan gBilling dengan bebas dan tanpamelakukan donasi terlebih dahulu, jika ada pihak yang menjual atau meminta donasi untuk mendapatkan gBilling, silahkan hubungi penulis.
BAB II
Setelah membuat dan meneliti berbagai macam eksperimen yang kita lakukan, maka tiba saat nya mencoba listing program billing di bawah ini.
Listing Program :
#nclude <stdio.h>
#include <string.h>
#include <conio.h>
#include <time.h>
enum boolean {false, true}; /*membuat tipe data boolean*/
int main()
{
enum boolean loopPass = true, loopMenu = true;
int pilMenu = 0, pilClient;
int mntPakai1, jamPakai1, bayar1, per15Mnt1;
int mntPakai2, jamPakai2, bayar2, per15Mnt2;
int mntPakai3, jamPakai3, bayar3, per15Mnt3;
int mntPakai4, jamPakai4, bayar4, per15Mnt4;
char userAdmin[5], passAdmin[5], inUserAdmin[5], inPassAdmin[5];
char userClient1[20], userClient2[20], userClient3[20], userClient4[20];
strcpy(userAdmin, "2IA05"); /*memasukkan nilai ke variabel userAdmin*/
strcpy(passAdmin, "2IA05");
strcpy(userClient1, "");
strcpy(userClient2, "");
strcpy(userClient3, "");
strcpy(userClient4, "");
do /*tampilan layar awal*/
{
printf("***********************\n");
printf("* *\n");
printf("* 2IA05 Internet Cafe *\n");
printf("* *\n");
printf("***********************\n\n");
printf("ADMINISTRATOR LOGIN\n");
printf("USERNAME\t: ");
scanf("%s", &inUserAdmin);
printf("PASSWORD\t: ");
scanf("%s", &inPassAdmin);
if((strcmp(userAdmin,inUserAdmin) == 0) && (strcmp(passAdmin,inPassAdmin) == 0)) /*membandingkan nilai dua buah string*/
{
loopPass = false;
printf("\nAnda telah berhasil login\n");
printf("Tekan sembarang tombol untuk melanjutkan. :)\n");
getch();
clrscr();
}
else
{
loopPass = true;
printf("\nUsername dan/atau Password anda salah!\n");
printf("Tekan sembarang tombol untuk mengulangi!\n");
getch();
clrscr();
}
}
while (loopPass == true);
do /*tampilan layar utama*/
{
time_t start_time1 ; time_t start_time2 ; time_t start_time3 ;time_t start_time4 ;
time_t stop_time1 ; time_t stop_time2 ; time_t stop_time3 ; time_t stop_time4 ;
int dtkPakai1 ; int dtkPakai2 ; int dtkPakai3 ; int dtkPakai4 ;
pilClient = 0;
printf("***** 2IA05 Internet Cafe *****\n\n");
printf("MENU :\n");
printf("[1] User Masuk\n");
printf("[2] User Keluar\n");
printf("[3] Tampilkan Daftar Klien Yang Aktif\n\n");
printf("Pilihan Menu : ");
scanf("%d/n", &pilMenu);
switch (pilMenu)
{
case 1 :
{
printf("Komputer Client yang tersedia adalah : ");
if (strcmp(userClient1, "") == 0) printf("[1] ");
if (strcmp(userClient2, "") == 0) printf("[2] ");
if (strcmp(userClient3, "") == 0) printf("[3] ");
if (strcmp(userClient4, "") == 0) printf("[4] ");
printf("\nPilih client yang akan digunakan : ");
scanf("%d", &pilClient);
switch (pilClient)
{
case 1 :
{
if (strcmp(userClient1, "") == 0)
{
printf("User\t\t: ");
scanf("%s", &userClient1);
start_time1 = time( NULL ) ;
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{
printf("Komputer client ini sudah ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
case 2:
{
if (strcmp(userClient2, "") == 0)
{
printf("User\t\t: ");
scanf("%s", &userClient2);
start_time2 = time( NULL ) ;
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{ printf("Komputer client ini sudah ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
case 3 :
{
if (strcmp(userClient3, "") == 0)
{
printf("User\t\t: ");
scanf("%s", &userClient3);
start_time3 = time( NULL ) ;
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{
\printf("Komputer client ini sudah ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
case 4 :
{
if (strcmp(userClient4, "") == 0)
{
printf("User\t\t: ");
scanf("%s", &userClient4);
start_time4 = time( NULL ) ;
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{
printf("Komputer client ini sudah ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
default :
{
printf("Pilihan tidak tersedia!");
break;
}
}
break;
}
case 2:
{
printf("Komputer Client yang sedang dipakai adalah : ");
if (strcmp(userClient1, "") != 0) printf("[1] ");
if (strcmp(userClient2, "") != 0) printf("[2] ");
if (strcmp(userClient3, "") != 0) printf("[3] ");
if (strcmp(userClient4, "") != 0) printf("[4] ");
printf("\nPilih client yang ingin keluar : ");
scanf("%d", &pilClient);
switch (pilClient)
{
case 1 :
{
if (strcmp(userClient1, "") != 0)
{
printf("User\t\t: %s\n", userClient1);
stop_time1 = time( NULL ) ;
dtkPakai1 = difftime( stop_time1 , start_time1 );
mntPakai1 = (dtkPakai1 % 3600)/60;
per15Mnt1 = mntPakai1/15;
jamPakai1 = dtkPakai1 / 3600;
bayar1 = (jamPakai1*4000) + (per15Mnt1*1000);
if (bayar1 == 0) bayar1 = 500;
printf("Pemakaian\t: %d jam %d menit\n", jamPakai1, mntPakai1);
printf("Total Bayar\t: Rp. %d,-\n", bayar1);
strcpy(userClient1, "");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{
printf("Komputer client tidak ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
case 2 :
{
if (strcmp(userClient2, "") != 0)
{
printf("User\t\t: %s\n", userClient2);
stop_time2 = time( NULL ) ;
dtkPakai2 = difftime( stop_time2 , start_time2 ) ;
mntPakai2 = (dtkPakai2 % 3600)/60;
per15Mnt2 = mntPakai2/15;
jamPakai2 = dtkPakai2 / 3600;
bayar2 = (jamPakai2*4000) + (per15Mnt2*1000);
if (bayar2 == 0) bayar2 = 500;
printf("Pemakaian\t: %d jam %d menit\n", jamPakai2, mntPakai2);
printf("Total Bayar\t: Rp. %d,-\n", bayar2);
strcpy(userClient2, "");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{
printf("Komputer client tidak ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
case 3 :
{
if (strcmp(userClient3, "") != 0)
{
printf("User\t\t: %s\n", userClient3);
stop_time3 = time( NULL ) ;
dtkPakai3 = difftime( stop_time3 , start_time3 ) ;
mntPakai3 = (dtkPakai3 % 3600)/60;
per15Mnt3 = mntPakai3/15;
jamPakai3 = dtkPakai3 / 3600;
bayar3 = (jamPakai3*4000) + (per15Mnt3*1000);
if (bayar3 == 0) bayar3 = 500;
printf("Pemakaian\t: %d jam %d menit\n", jamPakai3, mntPakai3);
printf("Total Bayar\t: Rp. %d,-\n", bayar3);
strcpy(userClient3, "");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{
printf("Komputer client tidak ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
case 4 :
{
if (strcmp(userClient4, "") != 0)
{
printf("User\t\t: %s\n", userClient4);
stop_time4 = time( NULL ) ;
dtkPakai4 = difftime( stop_time4 , start_time4 ) ;
mntPakai4 = (dtkPakai4 % 3600)/60;
per15Mnt4 = mntPakai4/15;
jamPakai4 = dtkPakai4 / 3600;
bayar4 = (jamPakai4*4000) + (per15Mnt4*1000);
if (bayar4 == 0) bayar4 = 500;
printf("Pemakaian\t: %d jam %d menit\n", jamPakai4, mntPakai4);
printf("Total Bayar\t: Rp. %d,-\n", bayar4);
strcpy(userClient4, "");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{
printf("Komputer client tidak ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
default :
{
printf("Pilihan tidak tersedia!");
break;
}
}
break;
}
case 3 :
{
printf("No. Client\tUser\n");
printf("----------------------------\n");
printf("Client [1]\t%s\n", userClient1);
printf("Client [2]\t%s\n", userClient2);
printf("Client [3]\t%s\n", userClient3);
printf("Client [4]\t%s\n\n", userClient4);
printf("Tekan sembarang tombol untuk melanjutkan!\n");
break;
}
default :
{
printf("Pilihan tidak tersedia, ulangi lagi!\n");
printf("Tekan sembarang tombol untuk mengulangi!\n");
break;
}
}
getch();
clrscr();
}
while (loopMenu == true);
return 0;
}
BAB III
Mempelajari tak semudah mempelajari ilmu pengetahuan umum. Tapi perlu pembuktian dari berbagai fungsi dan tipe data yang di pergunakan. Menempatkan sebuah statement, dan memilih variable yang tepat merupakan modal utama, sebab program merupakan ilmu pasti dan bukan ilmu pertaruhan batin.
Logika program
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <time.h>
Logika : fungsi include adalah fungsi yang berhubungan langsung dengan fungsi pustaka, terdapat berbagai macam fungsi include,yang membedakan adalah setiap perintah atau kata yang berada di dalam kurung. Misalnya stdio.h berhubungan dengan perintah printf, string.h berhubungan dengan perintah srtcpy,jika conio.h berhubungan dengan perintah getch, sedangkan time.h berhubungan dengan perintah time untuk menjalankan waktu.
enum boolean {false, true}; /*membuat tipe data boolean*/ perintah untuk membuat tipe data menjadi tipe data Boolean yang bernilai 1 jika benar dan bernilai 0 jika salah.
int main() fungsi utama bertipe data integer.
{ ini menandakan awal dari suatu statement
enum boolean loopPass = true, loopMenu = true; menu ini adalah menu yang berbungan dengan menu Boolean yang pertama, looping password dan looping menu akan dijalankan jika bernilai benar.
int pilMenu = 0, pilClient; jika pilihan menu bernilai benar maka akan ke perintah selanjutnya yaitu pilihan client
int mntPakai1, jamPakai1, bayar1, per15Mnt1;
int mntPakai2, jamPakai2, bayar2, per15Mnt2;
int mntPakai3, jamPakai3, bayar3, per15Mnt3;
int mntPakai4, jamPakai4, bayar4, per15Mnt4;
logika: mendeklarasikan tipe data menit pakai,jam pakai,bayar,nilai akan di hitung jika dalam watu per 15 menit
char userAdmin[5], passAdmin[5], inUserAdmin[5], inPassAdmin[5];
char userClient1[20], userClient2[20], userClient3[20], userClient4[20];
logika: mendeklarasikan tipe data char untuk user admindan user client
strcpy(userAdmin, "2IA05"); /*memasukkan nilai ke variabel userAdmin*/ mengubah tipe data char menjadi string dan memasukan nilai 2IA05 ke dalam variable user admin.
strcpy(passAdmin, "2IA05"); "); /*memasukkan nilai ke variabel passAdmin*/ mengubah tipe data char menjadi string dan memasukan nilai 2IA05 ke dalam variable pass admin.
Keterangan: nilai yang dimasukkan harus sesuai dengan nilai awal yang telah diinput kedalam variable awal.
strcpy(userClient1, "");
strcpy(userClient2, "");
strcpy(userClient3, "");
strcpy(userClient4, "");
keterangan: memasukkan nilai kedalam variable userClient, jadi jika kita ingin login maka user atau nama komputer yang kita pakai akan kita input di dalam perintah ini.
do /*tampilan layar awal*/ mencetak atau menampilkan tampilan awal di layar,yang mana tampilan awalnya akan dijelaskan pada perintah selanjutnya.
{ menandai awalan statement
printf("***********************\n"); mencetak suatu string yang berada di dalam tanda (“) yaitu garis pembatas dengan symbol bintang
printf("* *\n"); mencetak suatu string yang berada di dalam tanda (")
printf("* 2IA05 Internet Cafe *\n"); mencetak suatu string yang berada di dalam tanda (“) yaitu 2IA05 Internet cafe
printf("* *\n");
printf("***********************\n\n");
printf("ADMINISTRATOR LOGIN\n");
printf("USERNAME\t: ");
logika: perintah printf yaitu untuk mencetak nilai atau suatu string yang berdaa dalam tanda (“)
scanf("%s", &inUserAdmin); perintah ini berhubungan ke perintah UserAdmin, perintah ini untuk penjalankan perintah selanjutnya.
printf("PASSWORD\t: "); perintah ini untuk mencetak suatu string yang berada di dalam tanda(“) yang mana isi inputannya harus sesusai dengan inputan di dalam username yang nilainya sudah diiinput dari awal. Yaitu 2IA05
scanf("%s", &inPassAdmin); menginput nilai , atau memasukkan nilai dengan yang sudah ada dalam PassAdmin
if((strcmp(userAdmin,inUserAdmin) == 0) && (strcmp(passAdmin,inPassAdmin) == 0)) /*membandingkan nilai dua buah string*/
{
loopPass = false;
printf("\nAnda telah berhasil login\n");
printf("Tekan sembarang tombol untuk melanjutkan. :)\n");
getch();
clrscr();
}
Else
{
loopPass = true;
printf("\nUsername dan/atau Password anda salah!\n");
printf("Tekan sembarang tombol untuk mengulangi!\n");
getch();
clrscr();
}
}
while (loopPass == true);
do /*tampilan layar utama*/
{
time_t start_time1 ; time_t start_time2 ; time_t start_time3 ;time_t start_time4 ;
time_t stop_time1 ; time_t stop_time2 ; time_t stop_time3 ; time_t stop_time4 ;
int dtkPakai1 ; int dtkPakai2 ; int dtkPakai3 ; int dtkPakai4 ;
pilClient = 0;
printf("***** 2IA05 Internet Cafe *****\n\n");
printf("MENU :\n");
printf("[1] User Masuk\n");
printf("[2] User Keluar\n");
printf("[3] Tampilkan Daftar Klien Yang Aktif\n\n");
printf("Pilihan Menu : ");
scanf("%d/n", &pilMenu);
switch (pilMenu)
{
case 1 :
{
printf("Komputer Client yang tersedia adalah : ");
if (strcmp(userClient1, "") == 0) printf("[1] ");
if (strcmp(userClient2, "") == 0) printf("[2] ");
if (strcmp(userClient3, "") == 0) printf("[3] ");
if (strcmp(userClient4, "") == 0) printf("[4] ");
printf("\nPilih client yang akan digunakan : ");
scanf("%d", &pilClient);
switch (pilClient)
{
case 1 :
{
if (strcmp(userClient1, "") == 0)
{
printf("User\t\t: ");
scanf("%s", &userClient1);
start_time1 = time( NULL ) ;
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{
printf("Komputer client ini sudah ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
case 2:
{
if (strcmp(userClient2, "") == 0)
{
printf("User\t\t: ");
scanf("%s", &userClient2);
start_time2 = time( NULL ) ;
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{
printf("Komputer client ini sudah ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
case 3 :
{
if (strcmp(userClient3, "") == 0)
{
printf("User\t\t: ");
scanf("%s", &userClient3);
start_time3 = time( NULL ) ;
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{
printf("Komputer client ini sudah ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
case 4 :
{
if (strcmp(userClient4, "") == 0)
{
printf("User\t\t: ");
scanf("%s", &userClient4);
start_time4 = time( NULL ) ;
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{
printf("Komputer client ini sudah ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
default :
{
printf("Pilihan tidak tersedia!");
break;
}
}
break;
}
case 2:
{
printf("Komputer Client yang sedang dipakai adalah : ");
if (strcmp(userClient1, "") != 0) printf("[1] ");
if (strcmp(userClient2, "") != 0) printf("[2] ");
if (strcmp(userClient3, "") != 0) printf("[3] ");
if (strcmp(userClient4, "") != 0) printf("[4] ");
printf("\nPilih client yang ingin keluar : ");
scanf("%d", &pilClient);
switch (pilClient)
{
case 1 :
{
if (strcmp(userClient1, "") != 0)
{
printf("User\t\t: %s\n", userClient1);
stop_time1 = time( NULL ) ;
dtkPakai1 = difftime( stop_time1 , start_time1 );
mntPakai1 = (dtkPakai1 % 3600)/60;
per15Mnt1 = mntPakai1/15;
jamPakai1 = dtkPakai1 / 3600;
bayar1 = (jamPakai1*4000) + (per15Mnt1*1000);
if (bayar1 == 0) bayar1 = 500;
printf("Pemakaian\t: %d jam %d menit\n", jamPakai1, mntPakai1);
printf("Total Bayar\t: Rp. %d,-\n", bayar1);
strcpy(userClient1, "");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{
printf("Komputer client tidak ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
case 2 :
{
if (strcmp(userClient2, "") != 0)
{
printf("User\t\t: %s\n", userClient2);
stop_time2 = time( NULL ) ;
dtkPakai2 = difftime( stop_time2 , start_time2 ) ;
mntPakai2 = (dtkPakai2 % 3600)/60;
per15Mnt2 = mntPakai2/15;
jamPakai2 = dtkPakai2 / 3600;
bayar2 = (jamPakai2*4000) + (per15Mnt2*1000);
if (bayar2 == 0) bayar2 = 500;
printf("Pemakaian\t: %d jam %d menit\n", jamPakai2, mntPakai2);
printf("Total Bayar\t: Rp. %d,-\n", bayar2);
strcpy(userClient2, "");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{
printf("Komputer client tidak ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
case 3 :
{
if (strcmp(userClient3, "") != 0)
{
printf("User\t\t: %s\n", userClient3);
stop_time3 = time( NULL ) ;
dtkPakai3 = difftime( stop_time3 , start_time3 ) ;
mntPakai3 = (dtkPakai3 % 3600)/60;
per15Mnt3 = mntPakai3/15;
jamPakai3 = dtkPakai3 / 3600;
bayar3 = (jamPakai3*4000) + (per15Mnt3*1000);
if (bayar3 == 0) bayar3 = 500;
printf("Pemakaian\t: %d jam %d menit\n", jamPakai3, mntPakai3);
printf("Total Bayar\t: Rp. %d,-\n", bayar3);
strcpy(userClient3, "");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{
printf("Komputer client tidak ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
case 4 :
{
if (strcmp(userClient4, "") != 0)
{
printf("User\t\t: %s\n", userClient4);
stop_time4 = time( NULL ) ;
dtkPakai4 = difftime( stop_time4 , start_time4 ) ;
mntPakai4 = (dtkPakai4 % 3600)/60;
per15Mnt4 = mntPakai4/15;
jamPakai4 = dtkPakai4 / 3600;
bayar4 = (jamPakai4*4000) + (per15Mnt4*1000);
if (bayar4 == 0) bayar4 = 500;
printf("Pemakaian\t: %d jam %d menit\n", jamPakai4, mntPakai4);
printf("Total Bayar\t: Rp. %d,-\n", bayar4);
strcpy(userClient4, "");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
else
{
printf("Komputer client tidak ada yang menggunakan!\n");
printf("Tekan sembarang tombol untuk melanjutkan!\n");
}
break;
}
default :
{
printf("Pilihan tidak tersedia!");
break;
}
}
break;
}
case 3 :
{
printf("No. Client\tUser\n");
printf("----------------------------\n");
printf("Client [1]\t%s\n", userClient1);
printf("Client [2]\t%s\n", userClient2);
printf("Client [3]\t%s\n", userClient3);
printf("Client [4]\t%s\n\n", userClient4);
printf("Tekan sembarang tombol untuk melanjutkan!\n");
break;
}
default :
{
printf("Pilihan tidak tersedia, ulangi lagi!\n");
printf("Tekan sembarang tombol untuk mengulangi!\n");
break;
}
}
getch();
clrscr();
}
while (loopMenu == true);
return 0;
}