laporan program ka
TRANSCRIPT
Program Pengolahan Pemesanan Tiket KAAlgoritma & Struktur Data II
Ai Hayati 10507451Andri Kurnaedi 10507454Arif Noor Iman 10507457Feri Faisal M 10507430Heru Novriyendra 10507444Susi Warnengsih 10507459
Teknik & Ilmu KomputerManajemen InformatikaMI-102007
Turbo C
2008
1
Program Pengolahan Pemesanan Tiket KA
PENGOLAHAN PEMESANAN TIKET KERETA API
Permasalahan 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.
2008
1
Program Pengolahan Pemesanan Tiket KA
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 :
2008
1
Program Pengolahan Pemesanan Tiket KA
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 :
2008
1
Program Pengolahan Pemesanan Tiket KA
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 :
2008
1
Program Pengolahan Pemesanan Tiket KA
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 :
2008
1
Program Pengolahan Pemesanan Tiket KA
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 :
2008
1
Program Pengolahan Pemesanan Tiket KA
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 :
2008
1
Program Pengolahan Pemesanan Tiket KA
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..
2008
1
Program Pengolahan Pemesanan Tiket KA
2008
1
Program Pengolahan Pemesanan Tiket KA
#include<stdio.h>#include<conio.h>#include<ctype.h>#include<graphics.h>#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;
2008
1
Program Pengolahan Pemesanan Tiket KA
//===========================================================================main(){clrscr();
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{
2008
1
Program Pengolahan Pemesanan Tiket KA
clrscr(); 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(); 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();
2008
1
Program Pengolahan Pemesanan Tiket KA
} } }//========keluar======================= else if (pilih=='6') break;
}while(kbhit); 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");
2008
1
Program Pengolahan Pemesanan Tiket KA
printf("\n 5. Tidak memiliki karcis dikenakan 2X tarif berlaku");getch();suara();}//===========================================================================void pembatalan_karcis(){clrscr();
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");
2008
1
Program Pengolahan Pemesanan Tiket KA
puts(" ÚÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄ¿");puts(" ³ ³ ³Bandung³ Cimahi ³ Bekasi ³JatiNegara ³Gambir³ ³");puts(" ³No.³ KA ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÅÄÄÄÄÄÄ´ Katerangan ³");puts(" ³ ³ ³ Br ³ Br ³ Da ³ Br ³ Da ³ Br ³ Da ³ Da ³ ³");puts(" ÃÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄ´");puts(" ³ 1 ³KA 51³ 04.00 ³ Ls ³ Ls ³06.33³06.35³06.49³06.51³ 07.01³stlh libur ³");puts(" ÃÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄ´");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(" ÚÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄ¿");
2008
1
Program Pengolahan Pemesanan Tiket KA
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³ ³");puts(" ÃÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´");puts(" ³ 2 ³KA 17 ³ 07.35 ³09.59³10.01³10.14³10.16³ 10.26³ ³");puts(" ÃÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ´");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;
2008
1
Program Pengolahan Pemesanan Tiket KA
free(ambil); } return (a);}//===========================================================================float bayar(){ float a; if ((tambah->umur>3)&&(tambah->umur<10)) { 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) { 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();
2008
1
Program Pengolahan Pemesanan Tiket KA
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; for (j=0;j<5;j++) { do{ gotoxy(2,13);delline(); cputs(" Waktu Keberangkatan : "); for (i=0;i<5;i++) { 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();
2008
1
Program Pengolahan Pemesanan Tiket KA
}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;
if(data!=NULL) { bantu1=data; while(bantu1->next!=NULL) { 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]; }
2008
1
Program Pengolahan Pemesanan Tiket KA
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++) { t_notiket[j]=bantu1->notiket[j]; bantu1->notiket[j]=index->notiket[j]; index->notiket[j]=t_notiket[j];
} 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) {
2008
1
Program Pengolahan Pemesanan Tiket KA
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++) { 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 : "); 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();
2008
1
Program Pengolahan Pemesanan Tiket KA
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 : "); for (i=0;i<5;i++) { if (bantu->jam[i]!=NULL) printf("%c",bantu->jam[i]); else break; } gotoxy(33+j,14); 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;}//===========================================================================