Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. int pilih;
  8. int count;
  9. char kembali;
  10.  
  11. struct penumpang {
  12.     string nama,nik,gender;
  13.     string jurusan,waktu,kelas;
  14. };
  15.  
  16. int hitungData(fstream &file);
  17. void menu ();
  18. void input (fstream &file, int count);
  19. void daftar ();
  20. void ekonomi ();
  21. void bisnis ();
  22. void eksekutif ();
  23. void bayar(fstream &file, int totalBayar);
  24. void nama (fstream &file, int count);
  25. void nik(fstream &file, int count);
  26. void output (fstream &file, int count);
  27. void output (fstream &file, int count);
  28. void searching (fstream &file, int count);
  29. void hapus (fstream &file, int count);
  30.  
  31. int main(){
  32.     fstream file;
  33.     do {
  34.         count = hitungData(file);
  35.         menu();
  36.  
  37.         switch (pilih) {
  38.             case 1 :
  39.             input (file,count);
  40.             break;
  41.             case 2 :
  42.             daftar();
  43.             break;
  44.             case 3 :
  45.             output(file,count);
  46.             break;
  47.             case 4 :
  48.             searching(file,count);
  49.             break;
  50.             case 5 :
  51.             hapus(file,count);
  52.             break;
  53.             case 6 :
  54.             exit(0);
  55.         }
  56.  
  57.     }while (true);
  58. }
  59. int hitungData(fstream &file){
  60.     penumpang ukurData;
  61.     string nikTemp;
  62.     int ukuran = 0,ukuransebelumnya;
  63.  
  64.     file.open("penumpang.txt");
  65.     do
  66.     {
  67.         nikTemp = ukurData.nik;
  68.         ukuransebelumnya = ukuran;
  69.  
  70.         getline(file,ukurData.nama);
  71.         getline(file,ukurData.nik);
  72.         getline(file,ukurData.gender);
  73.         getline(file,ukurData.jurusan);
  74.         getline(file,ukurData.kelas);
  75.         getline(file,ukurData.waktu);
  76.        
  77.         if (ukurData.nik != nikTemp)
  78.             ukuran++;
  79.     }
  80.     while (ukuran != ukuransebelumnya);
  81.     file.close();
  82.     return ukuran;
  83. }
  84. void menu () {
  85.     system ("CLS");
  86.     cout << "+ ==================================================== +\n";
  87.     cout << "           Selamat Datang di Reservasi Tiket\n";
  88.     cout << "          ---Stasiun Kereta Api Yogyakarta---\n";
  89.     cout << "+ ==================================================== +\n\n";
  90.     cout << "1. Beli Tiket\n";
  91.     cout << "2. Daftar Jurusan dan Harga Tiket\n";
  92.     cout << "3. Daftar Penumpang\n";
  93.     cout << "4. Cari data Penumpang\n";
  94.     cout << "5. Hapus data Penumpang\n";
  95.     cout << "6. Keluar\n\n";
  96.     cout << "+ ==================================================== +\n";
  97.     cout << "Silakan Masukkan Pilihan : "; cin >> pilih;
  98.     system ("CLS");
  99. }
  100. void input (fstream &file, int count){
  101.     penumpang input[100];
  102.     int jumlah, kelas,total=0,berangkat,totalBayar=0;
  103.     int njurusan,banyaknya,harga=0;
  104.     cout << "               Pembelian Tiket Kereta Api\n";
  105.     cout << "+ ==================================================== +\n\n";
  106.     cout << "1. Kelas Ekonomi\n";
  107.     cout << "2. Kelas Bisnis\n";
  108.     cout << "3. Kelas Eksekutif\n";
  109.     cout << "Pilih Kelas : "; cin >> kelas;
  110.     system("CLS");
  111.     switch (kelas){
  112.         case 1 :
  113.         ekonomi();
  114.         break;
  115.         case 2 :
  116.         bisnis();
  117.         break;
  118.         case 3 :
  119.         eksekutif();
  120.         break;
  121.     }
  122.     cout << "-------------------- Waktu Keberangkatan ---------------------\n";
  123.     cout << "1. Pagi\n";
  124.     cout << "2. Siang\n";
  125.     cout << "3. Malam\n";
  126.     cout << "--------------------------------------------------------------\n\n";
  127.  
  128.     cout << "Jumlah transaksi : "; cin >> jumlah;
  129.     cout << endl;
  130.  
  131.     for (int i = 0; i < jumlah; i++){
  132.         cin.ignore();
  133.         cout << "Transaksi ke " << i+1 << endl;
  134.         cout << "Nama Penumpang : "; getline(cin,input[i].nama);
  135.         cout << "NIK : "; getline(cin,input[i].nik);
  136.         cout << "Jenis Kelamin : "; getline(cin,input[i].gender);
  137.         cout << "Masukkan Nomor Jurusan (1-3) : "; cin >> njurusan;
  138.         cout << "Jumlah Tiket : "; cin >> banyaknya;
  139.         cout << "Nomor Waktu Keberangkatan (1-3): "; cin >> berangkat;
  140.  
  141.         if (kelas == 1){
  142.         if (njurusan == 1){
  143.             input[i].jurusan = "Yogyakarta - Solo";
  144.             harga = 125000;
  145.             input[i].kelas = "Ekonomi";
  146.         }else if (njurusan == 2){
  147.             input[i].jurusan = "Yogyakarta - Jakarta";
  148.             harga = 175000;
  149.             input[i].kelas = "Ekonomi";
  150.         } else if (njurusan == 3){
  151.             input[i].jurusan = "Yogyakarta - Surabaya";
  152.             harga = 150000;
  153.             input[i].kelas = "Ekonomi";
  154.         }
  155.     }else if (kelas == 2){
  156.         if (njurusan == 1){
  157.             input[i].jurusan = "Yogyakarta - Solo";
  158.             harga = 175000;
  159.             input[i].kelas = "Bisnis";
  160.         }else if (njurusan == 2){
  161.             input[i].jurusan = "Yogyakarta - Jakarta";
  162.             harga = 225000;
  163.             input[i].kelas = "Bisnis";
  164.         } else if (njurusan == 3){
  165.             input[i].jurusan = "Yogyakarta - Surabaya";
  166.             harga = 200000;
  167.             input[i].kelas = "Bisnis";
  168.         }
  169.     }
  170.     else if (kelas == 3){
  171.         if (njurusan == 1){
  172.             input[i].jurusan = "Yogyakarta - Solo";
  173.             harga = 215000;
  174.             input[i].kelas = "Eksekutif";
  175.         }else if (njurusan == 2){
  176.             input[i].jurusan = "Yogyakarta - Jakarta";
  177.             harga = 300000;
  178.             input[i].kelas = "Eksekutif";
  179.         } else if (njurusan == 3){
  180.             input[i].jurusan = "Yogyakarta - Surabaya";
  181.             harga = 250000;
  182.             input[i].kelas = "Eksekutif";
  183.         }
  184.     }
  185.     if (berangkat == 1){
  186.         input[i].waktu = "Pagi";
  187.     }else if (berangkat == 2){
  188.         input[i].waktu = "Siang";
  189.     }else if (berangkat == 3){
  190.         input[i].waktu = "Malam";
  191.     }
  192.     total = total + (banyaknya * harga);
  193.     totalBayar = totalBayar + total;
  194.     cout << endl;
  195.     }
  196.     system ("pause");
  197.  
  198.     bayar(file,totalBayar);
  199.  
  200.     file.open("penumpang.txt",ios::app | ios::out);
  201.     for (int i = 0; i < jumlah; i++){
  202.         file << input[i].nama << endl;
  203.         file << input[i].nik << endl;
  204.         file << input[i].gender << endl;
  205.         file << input[i].jurusan << endl;
  206.         file << input[i].kelas << endl;
  207.         file << input[i].waktu << endl;
  208.     }file.close();
  209.  
  210.     cout << "Ingin kembali ke menu utama? (Y/N) ";
  211.     cin >> kembali;
  212.  
  213.     if (kembali == 'Y' || kembali == 'y'){
  214.         return;
  215.     } else exit(0);
  216. }
  217. void bayar(fstream &file, int totalBayar){
  218.    
  219.     int bayar,y = 1;
  220.     int kembalian;
  221.     while (y == 1){
  222.         system ("CLS");
  223.         cout << "------------------ Pembayaran Pesanan Tiket -----------------\n";
  224.         cout << "+ ========================================================= +\n\n";
  225.         cout << "Total Pembayaran : " << totalBayar << endl;
  226.         cout << "Bayar\t: "; cin >> bayar;
  227.         kembalian = bayar - totalBayar;
  228.         cout << "Kembalian Anda : " << kembalian << endl << endl;
  229.         if (kembalian >= 0) {
  230.             cout << "------------------ Terima Kasih -----------------\n";
  231.             cout << "        Semoga perjalanan anda Menyenangkan\n\n";
  232.             y = 0;
  233.         }
  234.             system ("pause");
  235.         }
  236.     }  
  237. void ekonomi (){
  238.     cout << "----------------------- Kelas Ekonomi -----------------------\n\n";
  239.     cout << "-------------------------------------------------------------\n";
  240.     cout << "  No. |               Jurusan              |   Harga Tiket  |\n";
  241.     cout << "-------------------------------------------------------------\n";
  242.     cout << "   1. |  Yogyakarta - Solo                 |   Rp. 125.000  |\n";
  243.     cout << "-------------------------------------------------------------\n";
  244.     cout << "   2. |  Yogyakarta - Jakarta              |   Rp. 175.000  |\n";
  245.     cout << "-------------------------------------------------------------\n";
  246.     cout << "   3. |  Yogyakarta - Surabaya             |   Rp. 150.000  |\n";
  247.     cout << "-------------------------------------------------------------\n\n";
  248. }
  249. void bisnis (){
  250.     cout << "------------------------ Kelas Bisnis ------------------------\n\n";
  251.     cout << "-------------------------------------------------------------\n";
  252.     cout << "  No. |               Jurusan              |   Harga Tiket  |\n";
  253.     cout << "-------------------------------------------------------------\n";
  254.     cout << "   1. |  Yogyakarta - Solo                 |   Rp. 175.000  |\n";
  255.     cout << "-------------------------------------------------------------\n";
  256.     cout << "   2. |  Yogyakarta - Jakarta              |   Rp. 225.000  |\n";
  257.     cout << "-------------------------------------------------------------\n";
  258.     cout << "   3. |  Yogyakarta - Surabaya             |   Rp. 200.000  |\n";
  259.     cout << "-------------------------------------------------------------\n\n";
  260. }
  261. void eksekutif (){
  262.     cout << "---------------------- Kelas Eksekutif -----------------------\n\n";
  263.     cout << "-------------------------------------------------------------\n";
  264.     cout << "  No. |               Jurusan              |   Harga Tiket  |\n";
  265.     cout << "-------------------------------------------------------------\n";
  266.     cout << "   1. |  Yogyakarta - Solo                 |   Rp. 215.000  |\n";
  267.     cout << "-------------------------------------------------------------\n";
  268.     cout << "   2. |  Yogyakarta - Jakarta              |   Rp. 300.000  |\n";
  269.     cout << "-------------------------------------------------------------\n";
  270.     cout << "   3. |  Yogyakarta - Surabaya             |   Rp. 250.000  |\n";
  271.     cout << "-------------------------------------------------------------\n\n";
  272. }
  273. void daftar (){
  274.     cout << "+ ========================================================= +\n";
  275.     cout << "                Daftar Jurusan dan Harga Tiket\n";
  276.     cout << "+ ========================================================= +\n\n";
  277.     ekonomi ();
  278.     bisnis ();
  279.     eksekutif ();
  280.    
  281.     cout << "Anda ingin kembali ke menu utama? (Y/N) ";
  282.         cin >> kembali;
  283.  
  284.         if (kembali == 'Y' || kembali == 'y'){
  285.         return;
  286.         } else exit(0);
  287. }
  288. void nama (fstream &file, int count){
  289.     penumpang nama[count],temp;
  290.     cout << "             ------ Output Berdasarkan Nama ------\n";
  291.     cout << "+ ========================================================= +\n\n";
  292.     file.open("penumpang.txt");
  293.     for (int i = 0; i < count; i++){
  294.         getline(file,nama[i].nama);
  295.         getline(file,nama[i].nik);
  296.         getline(file,nama[i].gender);
  297.         getline(file,nama[i].jurusan);
  298.         getline(file,nama[i].kelas);
  299.         getline(file,nama[i].waktu);
  300.     }file.close();
  301.     for (int i = 0; i < count; i++){
  302.         for (int j = i+1; j < count; j++){
  303.             if (nama[i].nama > nama[j].nama){
  304.                 temp = nama[i];
  305.                 nama[i] = nama[j];
  306.                 nama[j] = temp;
  307.             }
  308.         }
  309.     }
  310.    
  311.     file.open("penumpang.txt", ios::trunc | ios::out);
  312.     for (int i = 0; i < count; i++){
  313.         file << nama[i].nama << endl;
  314.         file << nama[i].nik << endl;
  315.         file << nama[i].gender << endl;
  316.         file << nama[i].jurusan << endl;
  317.         file << nama[i].kelas << endl;
  318.         file << nama[i].waktu << endl;
  319.     }file.close();
  320.  
  321.     cout << "Jumlah Penumpang : " << count << endl;
  322.     cout << "-----------------------------------------------------------------------------------------------\n";
  323.     cout << "        Nama       |     NIK     | JENIS KELAMIN |        JURUSAN        |   KELAS   |  WAKTU |\n";
  324.     cout << "-----------------------------------------------------------------------------------------------\n";
  325.     for (int i=0;i<count;i++){
  326.         cout << setiosflags(ios::left) << setw(18) << nama[i].nama << " | ";
  327.         cout << setiosflags(ios::left) << setw(11) << nama[i].nik << " | ";
  328.         cout << setiosflags(ios::left) << setw(13) << nama[i].gender << " | ";
  329.         cout << setiosflags(ios::left) << setw(21) << nama[i].jurusan << " | ";
  330.         cout << setiosflags(ios::left) << setw(9) << nama[i].kelas << " | ";
  331.         cout << setiosflags(ios::left) << setw(6) << nama[i].waktu << " | " << endl;
  332.         cout << "-----------------------------------------------------------------------------------------------\n";
  333.         }
  334. }
  335. void nik (fstream &file, int count){
  336.     penumpang nik[count],temp;
  337.     cout << "             ------ Output Berdasarkan NIK ------\n";
  338.     cout << "+ ========================================================= +\n\n";
  339.     file.open("penumpang.txt");
  340.     for (int i = 0; i < count; i++){
  341.         getline(file,nik[i].nama);
  342.         getline(file,nik[i].nik);
  343.         getline(file,nik[i].gender);
  344.         getline(file,nik[i].jurusan);
  345.         getline(file,nik[i].kelas);
  346.         getline(file,nik[i].waktu);
  347.     }file.close();
  348.     for (int i = 0; i < count; i++){
  349.         for (int j = i+1; j < count; j++){
  350.             if (nik[i].nik > nik[j].nik){
  351.                 temp = nik[i];
  352.                 nik[i] = nik[j];
  353.                 nik[j] = temp;
  354.             }
  355.         }
  356.     }
  357.    
  358.     file.open("penumpang.txt", ios::trunc | ios::out);
  359.     for (int i = 0; i < count; i++){
  360.         file << nik[i].nama << endl;
  361.         file << nik[i].nik << endl;
  362.         file << nik[i].gender << endl;
  363.         file << nik[i].jurusan << endl;
  364.         file << nik[i].kelas << endl;
  365.         file << nik[i].waktu << endl;
  366.     }file.close();
  367.  
  368.     cout << "Jumlah Penumpang : " << count << endl;
  369.     cout << "-----------------------------------------------------------------------------------------------\n";
  370.     cout << "     NIK    |        Nama        | JENIS KELAMIN |        JURUSAN        |   KELAS   |  WAKTU |\n";
  371.     cout << "-----------------------------------------------------------------------------------------------\n";
  372.     for (int i=0;i<count;i++){
  373.         cout << setiosflags(ios::left) << setw(11) << nik[i].nik << " | ";
  374.         cout << setiosflags(ios::left) << setw(18) << nik[i].nama << " | ";
  375.         cout << setiosflags(ios::left) << setw(13) << nik[i].gender << " | ";
  376.         cout << setiosflags(ios::left) << setw(21) << nik[i].jurusan << " | ";
  377.         cout << setiosflags(ios::left) << setw(9) << nik[i].kelas << " | ";
  378.         cout << setiosflags(ios::left) << setw(6) << nik[i].waktu << " | " << endl;
  379.         cout << "-----------------------------------------------------------------------------------------------\n";
  380.         }
  381. }
  382. void output (fstream &file, int count){
  383.     penumpang output[count],temp;
  384.     int pilihan;
  385.     cout << "                ------ Daftar Penumpang ------\n";
  386.     cout << "                 Stasiun Kereta Api Yogyakarta\n";
  387.     cout << "+ ========================================================= +\n\n";
  388.     cout << "1. Output Berdasarkan Nama\n";
  389.     cout << "2. Output Berdasarkan NIK\n";
  390.     cout << "-------------------------------------------------------------\n";
  391.     cout << "Masukkan Pilihan : "; cin >> pilihan;
  392.     cout << endl;
  393.     switch (pilihan){
  394.         case 1 :
  395.         nama(file,count);
  396.         break;
  397.         case 2 :
  398.         nik(file,count);
  399.         break;
  400.     }
  401.     cout << "Anda ingin kembali ke menu utama? (Y/N) ";
  402.         cin >> kembali;
  403.  
  404.         if (kembali == 'Y' || kembali == 'y'){
  405.         return;
  406.         } else exit(0);
  407. }
  408. void searching (fstream &file, int count){
  409.     penumpang searching[count],temp;
  410.     string cari;
  411.     bool p = true;
  412.     cout << "                   Mencari Data Penumpang\n";
  413.     cout << "           ---- Stasiun Kereta Api Yogyakarta ----\n";
  414.     cout << "+ ========================================================= +\n\n";
  415.     cout << "Cari NIK Penumpang : ";
  416.     cin.ignore();
  417.     cin >> cari;
  418.  
  419.     file.open("penumpang.txt",ios::in);
  420.     for (int i = 0; i < count; i++){
  421.         getline(file,searching[i].nama);
  422.         getline(file,searching[i].nik);
  423.         getline(file,searching[i].gender);
  424.         getline(file,searching[i].jurusan);
  425.         getline(file,searching[i].kelas);
  426.         getline(file,searching[i].waktu);
  427.     }file.close();
  428.     cout << endl;
  429.     cout << "                   Informasi data Penumpang\n";
  430.     cout << "+ ========================================================= +\n\n";
  431.     for (int i = 0; i < count; i++){
  432.         if (cari == searching[i].nik){
  433.             p = false;
  434.             cout << "Data ditemukan!\n";
  435.             cout << "Penumpang dengan data berikut :\n";
  436.             cout << "Nama\t\t: " << searching[i].nama << endl;
  437.             cout << "NIK\t\t: " << searching[i].nik << endl;
  438.             cout << "Jenis Kelamin\t: " << searching[i].gender << endl;
  439.             cout << "Berada di Jurusan " << searching[i].jurusan << " dengan kelas " << searching[i].kelas << endl;
  440.             cout << "Pada waktu : " << searching[i].waktu << endl;
  441.             cout << "-------------------------------------------------------------\n";
  442.         }
  443.     }
  444.     if (p == true){
  445.         cout << "Data yang Anda Cari tidak ditemukan!\n";
  446.     }
  447.     cout << endl;
  448.     cout << "Ingin kembali ke menu utama? (Y/N) ";
  449.     cin >> kembali;
  450.     if (kembali == 'Y' || kembali == 'y'){
  451.          return;
  452.     } else exit(0);
  453. }
  454. void hapus (fstream &file, int count){
  455.     penumpang hapus[count];
  456.     string namaa;
  457.     bool y = false;
  458.     cout << "                 --- Hapus data Penumpang ---\n";
  459.     cout << "+ ========================================================= +\n\n";
  460.  
  461.     file.open("penumpang.txt");
  462.     for (int i = 0; i < count; i++){
  463.         getline(file,hapus[i].nama);
  464.         getline(file,hapus[i].nik);
  465.         getline(file,hapus[i].gender);
  466.         getline(file,hapus[i].jurusan);
  467.         getline(file,hapus[i].kelas);
  468.         getline(file,hapus[i].waktu);
  469.     }file.close();
  470.     cout << "Masukkan Nama Penumpang yang ingin dihapus : ";
  471.     cin.ignore();
  472.     getline(cin,namaa);
  473.     for (int i = 0; i < count; i++)
  474.     {
  475.         if (namaa == hapus[i].nama)
  476.         {
  477.             for (int j = i; j < count-1; j++)
  478.             {
  479.                 hapus[j].nama = hapus[j+1].nama;
  480.                 hapus[j].nik = hapus[j+1].nik;
  481.                 hapus[j].gender = hapus[j+1].gender;
  482.                 hapus[j].jurusan = hapus[j+1].jurusan;
  483.                 hapus[j].kelas = hapus[j+1].kelas;
  484.                 hapus[j].waktu = hapus[j+1].waktu;
  485.             }
  486.             count--;
  487.             y = true;
  488.             break;
  489.         }
  490.     }
  491.     if ( y == true){
  492.         cout << "\n------- Data berhasil dihapus -------\n\n";
  493.         file.open("penumpang.txt",ios::trunc | ios:: out);
  494.     for (int i = 0; i < count; i++){
  495.         file << hapus[i].nama << endl;
  496.         file << hapus[i].nik << endl;
  497.         file << hapus[i].gender << endl;
  498.         file << hapus[i].jurusan << endl;
  499.         file << hapus[i].kelas << endl;
  500.         file << hapus[i].waktu << endl;
  501.     }file.close();
  502.     file.open("penumpang.txt");
  503.     cout << "Jumlah Penumpang Sebelumnya : " << count+1 << endl;
  504.     cout << "Jumlah Penumpang Setelah dihapus : " << count << endl;
  505.     cout << "-----------------------------------------------------------------------------------------------\n";
  506.     cout << "        Nama       |     NIK     | JENIS KELAMIN |        JURUSAN        |   KELAS   |  WAKTU |\n";
  507.     cout << "-----------------------------------------------------------------------------------------------\n";
  508.     for (int i=0;i<count;i++){
  509.         cout << setiosflags(ios::left) << setw(18) << hapus[i].nama << " | ";
  510.         cout << setiosflags(ios::left) << setw(11) << hapus[i].nik << " | ";
  511.         cout << setiosflags(ios::left) << setw(13) << hapus[i].gender << " | ";
  512.         cout << setiosflags(ios::left) << setw(21) << hapus[i].jurusan << " | ";
  513.         cout << setiosflags(ios::left) << setw(9) << hapus[i].kelas << " | ";
  514.         cout << setiosflags(ios::left) << setw(6) << hapus[i].waktu << " | " << endl;
  515.         cout << "-----------------------------------------------------------------------------------------------\n";
  516.         }file.close();
  517.  
  518.     }else cout << "\nData tidak ditemukan, Nama yang Anda masukkan salah!\n\n";
  519.     cout << "Ingin kembali ke menu utama? (Y/N) ";
  520.     cin >> kembali;
  521.     if (kembali == 'Y' || kembali == 'y'){
  522.          return;
  523.     } else exit(0);
  524. }
  525.  
  526.