Anda di halaman 1dari 23

Turbo C

Program
Pengolahan
Pemesanan Tiket
KA
Algoritma & Struktur Data II

Ai Hayati 10507451
Andri Kurnaedi 10507454
Arif Noor Iman 10507457
Feri Faisal M 10507430
Heru Novriyendra 10507444
Susi Warnengsih 10507459

Teknik & Ilmu Komputer


Manajemen Informatika
MI-10
2007
Program Pengolahan Pemesanan Tiket KA

PENGOLAHAN PEMESANAN TIKET KERETA API


Permasalahan 2008
• Percaloan tiket Kereta Api
Batasan / Asumsi Masalah
• Pencaloan yang dilakukan oleh oknum Luar / Pembeli
• Pembeli hanya bisa di pesan sejak H-5
• Hanya untuk KA Argo Gede dan Prahyangan
• Hanya untuk kelas Eksekutif dan Bisnis
• Jurusan hanya antara Bandung - Gambir
Solusi Masalah
• Pembeli hanya bisa membeli tiket sebanyak 4 buah pembelian
• Pembelian Selanjutnya tak bisa jika :
 No .KTP telah terdaftar untuk tiket dengan tujuan dan tanggal
pemberangkatan belum lewat tanggal pemesanan kedua
 Apabila ada kesalahan pemesanan tiket dapat diubah tanggal
keberangkatannya, baik tanggal maupun jamnya

Tutorial Program Pengolahan Tiket KA

Gambar tampilan awal program


Ini adalah tampilan utama dari program KA. Apabila ada menekan salah satu
tombol pada keyboard, maka akan muncul tampilan menu dibawah ini.

1
Program Pengolahan Pemesanan Tiket KA

2008

Gambar menu utama


Jika anda memilih menu nomor 1, maka tampilannya sebagai berikut :

Gambar sub menu 1


Ini adalah menu persyaratan angkutan penumpang, apabila anda menekan
angka 1, maka tampilan sebagai berikut :

1
Program Pengolahan Pemesanan Tiket KA

2008

Gambar sub menu 1-1


Ini merupakan tampilan tarif angkutan penumpang. Bila tekan enter akan
kembali ke sub menu 1. Apabila anda menekan tombol angka 2, maka menu
sebagai berikut :

Gambar sub menu 1-2


Ini tampilan menu pembatalan karcis pesanan. Bila anda tekan enter maka akn
kembali ke sub menu 1. Apabila anda memilih 3 maka tampilan sebagai
berikut :

1
Program Pengolahan Pemesanan Tiket KA

2008

Gambar sub menu 1-3


Ini adalah tampilan menu perubahan jam keberangkatan. Bila anda tekan
enter maka akan kembali ke sub menu 1. Bila anda memilih 4 maka akan
kembali ke menu utama.

Pada menu utama, apabila anda memilih angka 2, maka tampilan sebagai
berikut :

Gambar sub menu 2


Ini adalah menu jadwal keberangkatan. Bila tekan 1 maka tampilan sebagai
berikut :

1
Program Pengolahan Pemesanan Tiket KA

2008

Gambar sub menu 2-1


Ini adalah tampilan jadwal KA Argo Gede. Bila tekan enter maka kembali ke
sub menu 2.
Pada sub menu 2, apabila menekan tombol 2, maka tampilan sebagai berikut :

Gambar sub menu 2-2


Ini adalah tampilan Jadwal KA Parahyangan. Bila tekan enter maka kembali ke
sub menu 2.
Pada sub menu 2, apabila menekan tombol 3, maka akan kembali ke menu
utama.
Apabila anda menekan tobol 3, maka tampilan seperti dibawah ini :

1
Program Pengolahan Pemesanan Tiket KA

2008

Gambar sub menu 3


Ini adalah tampilan data penumpang yang sudah diinputkan. Untuk Jurusan
dan Kelas, tidak akan dapat diinputkan kecuali sesuai dengan pilihan yang ada.
Apabila tekan Y, maka akan tambah data, apabila tekan N maka kembali ke
menu utama.
Apabila di menu utama menekan angka 4 maka akan muncul tampilan sebagai
berikut :

Gambar sub menu 4


Ini adalah tampilan perubahan jam/tanggal keberangkatan yang sudah
diinputkan sesuai dengan data (no. KTP) yang sebelumnya sudah diinputkan.
Apabila tekan enter maka tampilan sebagai berikut :

1
Program Pengolahan Pemesanan Tiket KA

2008

Gambar sub menu 4-1


Ini adalah tampilan info penumpang setelah mengganti tanggal keberangkatan
dan waktu keberangkatan. Dengan merubah tanggal dan waktu
keberangkatan maka biaya pembayaran sesuai yang telah ditentukan.
Bila anda menekan enter maka akan kembali ke menu utama. Apabila di menu
utama anda menekan 5, maka tampilan sebagai berikut :

Gambar sub menu 5


Ini adalah tampilan info penumpang. Bila anda menekan Y, maka tampilan
sebagai berikut :

1
Program Pengolahan Pemesanan Tiket KA

2008

Gambar info penumpang


Ini adalah tampilan menu info penumpang yang telah diinputkan sebelumnya.
Bila pada tampilan sub menu 5 menekan tombol T, maka tampilan sebagai
berikut :

Gambar sub menu 5


Ini adalah gambar sub menu 5 bila ditekan T. Ini digunakan untuk melihat data
penumpang sesuai No.KTP yang diinginkan. Bila tidak sesuai dengan No.KTP,
maka akan tampil keterangan ”File Tidak Ditemukan”.
Terakhir menu pilihan 6 adalah keluar dari aplikasi ini..

1
Program Pengolahan Pemesanan Tiket KA

Flowchart Pengolahan Pemesanan Tiket Kereta Api


2008

Operator/Petugas Penumpang

1 Pilih Menu KTP

4
Cetak Baca
no ktp
Cetak
Menu1
Stop Input
looping Data

Pelang gan
Data B ase

& Tiket
Pilih 6
4 submenu 1
3 pencarian
1
2

Cetak Cetak Cetak kondisi


submenu submenu submenu 2
1-1 1-2 1-3

5 false
True Cetak Data
Pelanggan

Cetak Tidak
Cetak Ketemu Edit Tgl &
Menu 1 Jam Pergi
KTP
Pelang gan &
Data Base

Stop
Tiket

looping

Pilih
3 submenu2
1 Input Tidak
Data Cetak Baca
2 no ktp

Cetak Cetak
submenu submenu Input
Hitung Data
2 -1 2-2
Bayar
P elangg an
Data Ba se

ya
pencarian
Tampilkan
Inputan

kondisi

Pendataan
kembali false
True Cetak Data
Pelanggan
KTP

Cetak Tidak
Keluar
Ketemu

1
Program Pengolahan Pemesanan Tiket KA

#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#include<graphics.h> 2008
#include<dos.h>
#include<alloc.h>
#include<string.h>
#include<stdlib.h>
//===============
#ifdef __cplusplus
int max (int value1, int value2);
int max (int value1, int value2)
{return ( (value1 > value2) ? value1 : value2);}
#endif
//===============
void suara();
void tarif_angkutan_penumpang();
void pembatalan_karcis();
void perubahan_jam();
void fpilih(int x,int y,char z);
void parahyangan();
void argo();
buat_senarai_data();
float ambil_tiket();
float bayar();
urutkan();
tampilkan();
pencarian();
edit();
//===============
char pilih,tanya,data_cari[20];
int i,j,index_ambil,tiket_diambil,ketemu;
float a;
//===============
static char menu[][50]=
{" Menu Aplikasi"," ",
" 1. Persyaratan Angkutan Penumpang",
" 2. Jadwal Keberangkatan",
" 3. Pembelian Tiket",
" 4. Perubahan Tiket",
" 5. Info Penumpang",
" 6. Keluar"};
//===============
struct time waktu;
struct date tgl;
//===============
struct tkt
{ float no;
struct tkt *next;
};
struct tkt *tiket[5]={NULL,NULL,NULL,NULL,NULL};
//===============
struct dat
{ char nama[25],jur[8],kls[10],jam[5],ktp[20];
int umur,tgl,n_tiket,hke;
float notiket[5],byr;
struct dat *next;
};
struct dat *data=NULL,*tambah=NULL,*bantu=NULL;

1
Program Pengolahan Pemesanan Tiket KA

//=======================================================================
====
main()
{
clrscr();
2008
printf("\n Selamat Datang\n");
puts(" Di Aplikasi");
puts(" Pengolahan Tiket KA");
printf("\n\n Press Anykey");
//========inisialisasi tiket===========
struct tkt *baru=NULL;

for(i=0;i<5;i++)
{
for(a=240;a>0;a--)
{
baru = (struct tkt *) malloc(sizeof(struct tkt));
baru->no=a;
baru->next=NULL;
if (tiket[i]==NULL)
tiket[i]=baru;
else
{
baru->next=tiket[i];
tiket[i]=baru;
}
}
}
getch();suara();

do{
//========menu utama===================
clrscr();
puts(" ");
for (i=0;i<8;i++)
printf("%s\n",menu[i]);
fpilih(67,11,'6');
//========sub menu 1===================
if (pilih=='1')
{
do{
clrscr();
gotoxy(2,2);cputs("Persyaratan Angkutan Penumpang");
gotoxy(5,5);cputs("1. Tarif Angkutan Penumpang");
gotoxy(5,6);cputs("2. Pembatalan Karcis Pesanan & Pengambilan Bea");
gotoxy(5,7);cputs("3. Perubahan Jam/Tgl Keberangkatan");
gotoxy(5,8);cputs("4. Kembali");
fpilih(67,11,'4');

if (pilih=='1') tarif_angkutan_penumpang();
else if (pilih=='2') pembatalan_karcis();
else if (pilih=='3') perubahan_jam();
else break;
}while(kbhit);
}
//========sub menu 2===================
else if (pilih=='2')
{
do{
clrscr();

1
Program Pengolahan Pemesanan Tiket KA

gotoxy(2,2);cputs("Jadwal Keberangkatan");
gotoxy(5,5);cputs("1. Argo Gede");
gotoxy(5,6);cputs("2. Parahyangan");
gotoxy(5,7);cputs("3. Kembali");
fpilih(67,10,'3');
if (pilih=='1') argo(); 2008
else if (pilih=='2') parahyangan();
else break;
}while(kbhit);
}
//========sub menu 3===================
else if (pilih=='3')
{
tambah = (struct dat *) malloc(sizeof(struct dat));

buat_senarai_data();
// urutkan();
}
//========sub menu 4===================
else if (pilih=='4')
{
clrscr();
printf("\n Perubahan Jam/Tgl Keberangkatan\n");
puts(" ______________");
printf("\n\n No. KTP : ");gets(data_cari);
pencarian();
edit();
}
//========sub menu 5===================
else if (pilih=='5')
{
clrscr();
printf("\n Info Penumpang\n");
puts(" ______________");
do
{
gotoxy(2,5);delline();
cputs("Tampilkan Semua Data Penumpang [y/t] : ");pilih=getche();
}while(!((tolower(pilih)=='y')||(tolower(pilih)=='t')));

if(tolower(pilih!='y'))
{
printf("\n\n No. KTP : ");gets(data_cari);
pencarian();
tampilkan();
}
else
{
bantu=data;
if(bantu!=NULL)
while(bantu!=NULL)
{
ketemu=1;
tampilkan();
bantu=bantu->next;
}
else
{
ketemu=0;
tampilkan();
}

1
Program Pengolahan Pemesanan Tiket KA

}
}
//========keluar=======================
else if (pilih=='6') break;

}while(kbhit); 2008
return 0;
}
//=======================================================================
====
void suara()
{
sound(440);
delay(100);
nosound();
}
//=======================================================================
=====
void fpilih(int x,int y,char z)
{
gettime(&waktu);
gotoxy(x,2);
cprintf("%2d:%2d:%2d",waktu.ti_hour,waktu.ti_min,waktu.ti_sec);
getdate(&tgl);
gotoxy(x,3);
cprintf("%d-%d-%d",tgl.da_day,tgl.da_mon,tgl.da_year);
do{
gotoxy(x,y);delline();
cputs("Pilih : ");pilih=getch();
}while(!(isdigit(pilih)!=0)||(pilih>z));
suara();
}
//=======================================================================
====
void tarif_angkutan_penumpang()
{
clrscr();

printf("\n Tarif Angkutan Penumpang\n");


puts(" 1. Usia kurang dari 3 tahun tidak mengambil tempat untuk duduk
sendiri");
puts(" untuk kelas bisnis bebas biaya tarif, sedangkan kelas
eksekutif");
printf(" dikenakan 10% dari tarif murni dewasa\n\n");

puts(" 2. Usia kurang dari 3 tahun mengambil untuk duduk sendiri");


puts(" untuk kelas bisnis dikenakan tarif anak/reduksi C");
printf(" sedangkan untuk kelas eksekutif dikenakan tarif
dewasa\n\n");

puts(" 3. Usia 3-10 tahun untuk kelas bisnis dikenakan tarif


anak/reduksi");

printf(" sedangkan untuk kelas eksekutif dikenakan tarif


dewasa\n\n");

puts(" 4. Usia > 10 tahun dikenakan tarif dewasa untuk semua kelas");

printf("\n 5. Tidak memiliki karcis dikenakan 2X tarif berlaku");


getch();
suara();

1
Program Pengolahan Pemesanan Tiket KA

}
//=======================================================================
====
void pembatalan_karcis()
{
clrscr(); 2008
printf("\n Pembatalan karcis pesanan dan pengambilan bea\n");
puts(" 1. Setiap pembatalan bea pesanan dan pengantaran tidak
dikembalikan");

printf("\n 2. Sampai 1 hari sebelum pemberangkatan KA bea dikembalikan


75%\n");

puts(" 3. Pada hari keberangkatan sampai 3 jam sebelum KA berangkat


bea");
puts(" dikembalikan 50%");

printf("\n 4. Kurang dari 3 jam sampai KA berangkat atau karcis


pembelian langsung\n");
puts(" (tanpa melalui pesanan) atau penumpang terlambat (ketinggalan
KA)");
puts(" tidak ada pengembalian bea (hangus)");

printf("\n 5. Pembatalan karena tidak terselenggaranya angkutan di


stasiun awal\n");
cputs(" bea dikembalikan penuh");
getch();
suara();
}
//=======================================================================
====
void perubahan_jam()
{
clrscr();
printf("\n Perubahan Jam/Tanggal Keberangkatan\n\n");
puts(" Pemesanan boleh dilakukan 1X selambat-lambatnya h-5 hingga
h-1");
puts(" dengan biaya administrasi sebagai berikut:");

printf("\n * 10.000,- untuk kelas eksekutif\n");


cputs(" * 6.000,- untuk kelas bisnis");
getch();
suara();
}
//=======================================================================
====
void parahyangan()
{
clrscr();
printf("\n Jadwal KA Parahyangan\n\n");

puts("
ÚÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄ
Ä¿");
puts(" ³ ³ ³Bandung³ Cimahi ³ Bekasi ³JatiNegara ³Gambir³
³");
puts(" ³No.³ KA ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÅÄÄÄÄÄÄ´
Katerangan ³");
puts(" ³ ³ ³ Br ³ Br ³ Da ³ Br ³ Da ³ Br ³ Da ³ Da ³
³");

1
Program Pengolahan Pemesanan Tiket KA

puts("
ÃÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄ
Ä´");
puts(" ³ 1 ³KA 51³ 04.00 ³ Ls ³ Ls ³06.33³06.35³06.49³06.51³ 07.01³stlh
libur ³");
puts(" 2008
ÃÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄ
Ä´");
puts(" ³ 2 ³KA 53³ 05.00 ³ LS ³ Ls ³07.36³07.38³07.53³07.55³ 08.05³
³");
puts("
ÃÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄ
Ä´");
puts(" ³ 3 ³KA 55³ 06.35 ³ Ls ³ Ls ³09.16³09.18³09.33³19.33³ 09.45³
³");
puts("
ÃÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄ
Ä´");
puts(" ³ 4 ³KA 57³ 08.45 ³08.55³08.57³11.24³11.26³11.41³11.43³ 11.53³
³");
puts("
ÃÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄ
Ä´");
puts(" ³ 5 ³KA 59³ 12.45 ³12.55³12.57³15.28³15.30³15.44³15.46³
15.56³Cimahi Stop ³");
puts("
ÃÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄ
Ä´");
puts(" ³ 6 ³KA 61³ 17.05 ³17.15³17.17³19.40³19.42³19.56³19.58³
20.08³Cimahi Stop ³");
puts("
ÃÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄ
Ä´");
puts(" ³ 7 ³KA 63³ 19.15 ³ Ls ³ Ls ³21.55³21.57³22.12³22.14³ 22.24³Kpn
diprlkan³");
cputs("
ÀÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄ
ÄÙ");
getch();
suara();
}
//=======================================================================
====
void argo()
{
clrscr();
printf("\n Jadwal KA Argo Gede\n\n");

puts("
ÚÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄ¿");
puts(" ³ ³ ³Bandung³ Bekasi ³Jatinegara ³Gambir³
³");
puts(" ³No.³ KA ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÅÄÄÄÄÄÄ´
Keterangan ³");
puts(" ³ ³ ³ Br ³ Br ³ Da ³ Br ³ Da ³ Da ³
³");
puts("
ÃÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´");
puts(" ³ 1 ³KA 15 ³ 06.00 ³08.24³08.26³08.40³08.42³ 08.52³
³");

1
Program Pengolahan Pemesanan Tiket KA

puts("
ÃÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´");
puts(" ³ 2 ³KA 17 ³ 07.35 ³09.59³10.01³10.14³10.16³ 10.26³
³");
puts("
ÃÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´"); 2008
puts(" ³ 3 ³KA 19 ³ 10.30 ³12.58³13.00³13.15³13.17³ 13.27³
³");
puts("
ÃÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´");
puts(" ³ 4 ³KA 21 ³ 14.30 ³16.56³16.58³17.12³17.14³ 17.24³
³");
puts("
ÃÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´");
puts(" ³ 5 ³KA 23 ³ 16.15 ³18.42³18.44³18.58³19.00³ 19.10³
³");
puts("
ÃÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´");
puts(" ³ 6 ³KA 25 ³ 18.30 ³21.02³21.04³21.18³21.20³ 21.31³
³");
puts("
ÃÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´");
puts(" ³ 7 ³KA 7029³ 09.30 ³11.51³11.53³12.04³12.06³ 12.15³ Hari
Minggu ³");
puts("
ÃÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´");
puts(" ³ 8 ³KA 7013³ 07.00 ³09.22³09.24³19.36³19.38³ 09.47³ Hari
Senin ³");
puts("
ÀÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÙ");
getch();
suara();
}
//=======================================================================
====
float ambil_tiket()
{
struct tkt *ambil;
ambil = (struct tkt *) malloc(sizeof(struct tkt));
a=tiket[index_ambil]->no;

if (tiket[index_ambil]->next==NULL)
{
free(tiket[index_ambil]);
tiket[index_ambil]=NULL;
}
else
{
ambil=tiket[index_ambil];
tiket[index_ambil]=tiket[index_ambil]->next;
free(ambil);
}
return (a);
}
//=======================================================================
====
float bayar()
{
float a;
if ((tambah->umur>3)&&(tambah->umur<10))
{

1
Program Pengolahan Pemesanan Tiket KA

if (strcmp(strlwr(tambah->kls),"bisnis")==0) a=float(tambah-
>n_tiket*15000);
else a=float(tambah->n_tiket*65000);
}
else if(tambah->umur>10)
{ 2008
if (strcmp(strlwr(tambah->kls),"bisnis")==0) a=float(tambah-
>n_tiket*45000);
else a=float(tambah->n_tiket*65000);
}
return(a);
}
//=======================================================================
====
buat_senarai_data()
{
do{
tambah = (struct dat *) malloc(sizeof(struct dat));
for(i=0;i<25;i++) tambah->nama[i]=NULL;
clrscr();

printf("\n Data Penumpang\n");


puts(" ______________");

printf("\n Nama : ");gets(tambah->nama);


cputs(" No. KTP : ");gets(tambah->ktp);
cputs(" Umur : ");scanf("%d",&tambah-
>umur);fflush(stdin);
gotoxy(36,7);puts("Tahun");

do{
gotoxy(2,8);delline();
cputs(" Jurusan [Bandung/Jakarta] : ");gets(tambah->jur);
}while((strcmp(strlwr(tambah-
>jur),"bandung")!=0)&&(strcmp(strlwr(tambah->jur),"jakarta")!=0));

do{
gotoxy(2,9);delline();
cputs(" Kelas [Eksekutif/Bisnis] : ");gets(tambah->kls);
}while((strcmp(strlwr(tambah-
>kls),"eksekutif")!=0)&&(strcmp(strlwr(tambah->kls),"bisnis")!=0));

cprintf(" Tgl Sekarang : %d-%d-


%d",tgl.da_day,tgl.da_mon,tgl.da_year);

do{
gotoxy(2,12);delline();
gotoxy(2,11);delline();
cputs(" Tgl Keberangkatan [max h-4]: ");scanf("%d",&tambah-
>tgl);fflush(stdin);
gotoxy(35,11);cprintf("-%d-%d",tgl.da_mon,tgl.da_year);
tambah->hke=(tambah->tgl-tgl.da_day);
gotoxy(2,12);delline();
cputs(" H-ke : ");printf("h-%d\n",tambah->hke);
}while((tambah->hke<0)||(tambah->hke>4));
index_ambil=tambah->hke;

if(tiket[index_ambil]!=NULL)
{
for (j=0;j<5;j++) tambah->jam[j]=NULL;

1
Program Pengolahan Pemesanan Tiket KA

for (j=0;j<5;j++)
{
do{
gotoxy(2,13);delline();
cputs(" Waktu Keberangkatan : ");
for (i=0;i<5;i++) 2008
{
if (tambah->jam[i]!=NULL) printf("%c",tambah->jam[i]);
else break;
}
gotoxy(33+j,13);
if (j!=2)tambah->jam[j]=getche();
else {tambah->jam[j]='.';break;}
}while((isdigit(tambah->jam[j])==0));
}

do{
gotoxy(2,14);delline();
cputs(" Jumlah Tiket [max 4] : ");scanf("%d",&tambah-
>n_tiket);fflush(stdin);
}while(tambah->n_tiket>4);

cputs(" No. Tiket : ");


for(i=0;i<(tambah->n_tiket);i++)
{
tambah->notiket[i]=ambil_tiket();
printf("| no.%.0f |",tambah->notiket[i]);
}

tambah->byr=bayar();
printf("\n Bayar : ");printf("Rp %.0f",tambah-
>byr);
}
else printf("\n\n\nTiket H-%d Habis",tambah->hke);

tambah->next=NULL;

if (data==NULL)
data=tambah;
else
{
tambah->next=data;
data=tambah;
}

do{
gotoxy(2,18);delline();
cputs("Tambah Data [Y/N]");tanya=getch();
}while(!((toupper(tanya)=='Y')||(toupper(tanya)=='N')));

}while(toupper(tanya)=='Y');
return 0;
}
//=======================================================================
====
urutkan()
{
struct dat *bantu1=NULL,*bantu2=NULL,*index=NULL;
char t_nama[25],t_jur[8],t_kls[10],t_jam[5],t_ktp[20];
int t_umur,t_tgl,t_n_tiket,t_hke;
float t_notiket[4],t_byr;

1
Program Pengolahan Pemesanan Tiket KA

if(data!=NULL)
{
bantu1=data;
while(bantu1->next!=NULL)
{ 2008
bantu2=bantu1;
index=bantu1;
bantu2=bantu2->next;
while(bantu2!=NULL)
{
for (i=0;i<max(strlen(bantu2->nama),strlen(index->nama));i++)
if (int(tolower(bantu2->nama[i]))<=int(tolower(index->nama[i])))
{
index=bantu2;
break;
}
bantu2=bantu2->next;
}

strcpy(t_nama,bantu1->nama);
strcpy(bantu1->nama,index->nama);
strcpy(index->nama,t_nama);

strcpy(t_ktp,bantu1->ktp);
strcpy(bantu1->ktp,index->ktp);
strcpy(index->ktp,t_ktp);

strcpy(t_jur,bantu1->jur);
strcpy(bantu1->jur,index->jur);
strcpy(index->jur,t_jur);

strcpy(t_kls,bantu1->kls);
strcpy(bantu1->kls,index->kls);
strcpy(index->kls,t_kls);

t_umur=bantu1->umur;
bantu1->umur=index->umur;
index->umur=t_umur;
t_tgl=bantu1->tgl;bantu1->tgl=index->tgl;index->tgl=t_tgl;

for(j=0;j<4;j++)
{
t_jam[j]=bantu1->jam[j];
bantu1->jam[j]=index->jam[j];
index->jam[j]=t_jam[j];
}

t_n_tiket=bantu1->n_tiket;
bantu1->n_tiket=index->n_tiket;
index->n_tiket=t_n_tiket;

t_hke=bantu1->hke;
bantu1->hke=index->hke;
index->hke=t_hke;

t_byr=bantu1->byr;
bantu1->byr=index->byr;
index->byr=t_byr;

for(j=0;j<4;j++)

1
Program Pengolahan Pemesanan Tiket KA

{
t_notiket[j]=bantu1->notiket[j];
bantu1->notiket[j]=index->notiket[j];
index->notiket[j]=t_notiket[j];

} 2008
bantu1=bantu1->next;
}
}
return 0;
}
//=======================================================================
====
pencarian()
{
struct dat *p;

if(data!=NULL)
{
ketemu=0;
p=data;

while((p!=NULL)&&(ketemu==0))
{
if(strcmp(strlwr(p->ktp),strlwr(data_cari))==0)
{
ketemu=1;
bantu=p;
}
else p=p->next;
}
}
return 0;
}
//=======================================================================
====
tampilkan()
{
clrscr();

printf("\n Info Penumpang\n");


puts(" ______________");

if (ketemu)
{
printf("_____________________________________________________________\n
");
printf("\n Nama : ");printf("%s\n",bantu->nama);
cputs(" No. KTP : ");printf("%s\n",bantu->ktp);
cputs(" Umur : ");printf("%d Tahun\n",bantu-
>umur);
cputs(" Jurusan [Bandung/Jakarta] : ");printf("%s\n",bantu->jur);
cputs(" Kelas [Eksekutif/Bisnis] : ");printf("%s\n",bantu->kls);
cprintf(" Tgl Sekarang : %d-%d-
%d",tgl.da_day,tgl.da_mon,tgl.da_year);
printf("\n Tgl Keberangkatan [max h-5]: ");printf("%d-%d-%d\n",bantu-
>tgl,tgl.da_mon,tgl.da_year);
cputs(" H-ke : ");printf("h-%d\n",bantu->hke);
cputs(" Waktu Keberangkatan : ");
for (i=0;i<5;i++)
{

1
Program Pengolahan Pemesanan Tiket KA

if (i!=2) printf("%c",bantu->jam[i]);
else cputs(".");
}
printf("\n Jumlah Tiket [max 4] : ");printf("%d\n",bantu-
>n_tiket);
cputs(" No. Tiket : "); 2008
for (i=0;i<bantu->n_tiket;i++)
printf("| no.%3.0f | ",bantu->notiket[i]);
printf("\n\n Bayar : ");printf("Rp %.0f\n",bantu-
>byr);
printf("_____________________________________________________________\n
");
}
else printf("\n\n File Tidak Di Temukan");

getch();
return 0;
}
//=======================================================================
====
edit()
{
clrscr();

printf("\n Info Penumpang\n");


puts(" ______________");

if (ketemu)
{
printf("_____________________________________________________________\n
");
printf("\n Nama : ");printf("%s\n",bantu->nama);
cputs(" No. KTP : ");printf("%s\n",bantu->ktp);
cputs(" Umur : ");printf("%d Tahun\n",bantu-
>umur);
cputs(" Jurusan [Bandung/Jakarta] : ");printf("%s\n",bantu->jur);
cputs(" Kelas [Eksekutif/Bisnis] : ");printf("%s\n",bantu->kls);
cprintf(" Tgl Sekarang : %d-%d-
%d",tgl.da_day,tgl.da_mon,tgl.da_year);

do{
gotoxy(2,13);delline();
gotoxy(2,12);delline();
cputs(" Tgl Keberangkatan [max h-4]: ");scanf("%d",&bantu-
>tgl);fflush(stdin);
gotoxy(35,11);cprintf("-%d-%d",tgl.da_mon,tgl.da_year);
bantu->hke=(bantu->tgl-tgl.da_day);
gotoxy(2,13);delline();
cputs(" H-ke : ");printf("h-%d\n",bantu->hke);
}while((bantu->hke<0)||(bantu->hke>4));
index_ambil=bantu->hke;

if(tiket[index_ambil]!=NULL)
{
for (j=0;j<5;j++) tambah->jam[j]=NULL;
for (j=0;j<5;j++)
{
do{
gotoxy(2,14);delline();
cputs(" Waktu Keberangkatan : ");

1
Program Pengolahan Pemesanan Tiket KA

for (i=0;i<5;i++)
{
if (bantu->jam[i]!=NULL) printf("%c",bantu->jam[i]);
else break;
}
gotoxy(33+j,14); 2008
if (j!=2)bantu->jam[j]=getche();
else
{
bantu->jam[j]='.';
break;
}
}while((isdigit(bantu->jam[j])==0));
}

printf("\n Jumlah Tiket [max 4] : ");printf("%d\n",bantu-


>n_tiket);

if (strcmp(strlwr(bantu->kls),"eksekutif")==0)
bantu->byr+=(bantu->n_tiket*10000);
else
bantu->byr+=(bantu->n_tiket*6000);

cputs(" No. Tiket : ");


for (i=0;i<bantu->n_tiket;i++)
printf("| no.%3.0f | ",bantu->notiket[i]);
printf("\n\n Bayar : ");printf("Rp
%.0f\n",bantu->byr);
printf("_____________________________________________________________\
n");
}
}
else printf("\n\n File Tidak Di Temukan");

getch();
return 0;
}
//=======================================================================
====