Advertisement
agusbd

working wt file

Apr 17th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.86 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <iomanip>
  5. #include <string.h>
  6. #include <cstdlib>
  7. using namespace std;
  8.  
  9. //objek pelanggan
  10. struct pelanggan{
  11.     string nama;
  12.     int saldo,
  13.         no;
  14.     //constructor pelanggan
  15.     pelanggan(){
  16.       }
  17.     pelanggan(int x,int y){
  18.     no = x;
  19.     saldo =y;
  20.     }
  21.  
  22.     //operator overloading
  23.     bool operator> (pelanggan x){
  24.         return (x.saldo > saldo?true : false);
  25.     }
  26.     bool operator== (int x){
  27.         return (saldo==x ? true : false);
  28.     }
  29. };
  30.  
  31. //vector customer untuk menyiman data utama
  32. //vecto customer_tmp untuk menyimpan data sementara
  33. vector <pelanggan> customer;
  34. vector <pelanggan> customer_tmp;
  35.  
  36. //PROSEDUR DAN FUNGSI
  37. void menu();
  38. void baca_txt_file();
  39. void tulis_txt_file();
  40. void input_member();
  41. void tampil_member(vector <pelanggan>);
  42. void searching();
  43. int binarySearch(int);
  44. int seqSearch_urut_nonsentinel(int);
  45. int seqSearch_belum_urut_nonsentinel(int);
  46. int seqSearch_urut_sentinel(int);
  47. int seqSearch_belum_urut_sentinel(int);
  48. vector <pelanggan> cari_nama(vector <pelanggan>,string);
  49. vector <pelanggan> bubble_sort(vector <pelanggan>);
  50. vector <pelanggan> selection_sort(vector <pelanggan>);
  51.  
  52. int main(){
  53.     baca_txt_file();
  54.     menu();
  55.     tulis_txt_file();
  56.     return 0;
  57. }
  58.  
  59. void menu(){
  60.     char yn = 'y';
  61.     system("cls");
  62.     do{
  63.     cout<<"Selamat Datang"<<endl;
  64.     int pilih;
  65.     char yn;
  66.     cout<<"1. Tampil member "<<endl;
  67.     cout<<"2. Tambah member "<<endl;
  68.     cout<<"3. Cari member "<<endl;
  69.     cout<<"4. Urutkan Data"<<endl;
  70.     cout<<"5. keluar"<<endl;
  71.     cout<<"masukan pilihan : ";
  72.     cin>>pilih;
  73.     switch(pilih){
  74.     case 1:
  75.         system("cls");
  76.         tampil_member(customer);
  77.         cout<<"kembali ? <y/n>";cin>>yn;
  78.         if(yn == 'y')
  79.             menu();
  80.         break;
  81.     case 2:
  82.         system("cls");
  83.         input_member();
  84.         cout<<"kembali ? <y/n>";cin>>yn;
  85.         if(yn == 'y')
  86.             menu();
  87.         break;
  88.     case 3:
  89.         system("cls");
  90.         searching();
  91.         cout<<"kembali ? <y/n>";cin>>yn;
  92.         if(yn == 'y')
  93.             menu();
  94.         break;
  95.     case 4:
  96.         system("cls");
  97.         cout<<"Urutkan Jumlah Pembayaran terbanyak "<<endl;
  98.         cout<<"1. Urutkan dengan metode Bubble sort "<<endl;
  99.         cout<<"2. Urutkan dengan metode Selection short "<<endl;
  100.         cout<<"pilih";cin>>pilih;
  101.         pilih == 1 ? tampil_member(bubble_sort(customer)) : tampil_member(selection_sort(customer));
  102.         cout<<"kembali ? <y/n>";cin>>yn;
  103.         if(yn == 'y')
  104.             menu();
  105.         break;
  106.     case 5 :
  107.         cout<<"keluar <y/n> ";cin>>yn;
  108.  
  109.         break;
  110.     }
  111.     }
  112.  
  113.     while(yn == 'n');
  114. }
  115. //prosedur untuk input member
  116. void input_member(){
  117.     char yn='y';
  118.     while(yn=='y'){
  119.         pelanggan tmp;
  120.         cout<<"nama : ";
  121.         cin>>tmp.nama;
  122.         cout<<"saldo : ";
  123.         cin>>tmp.saldo;
  124.         tmp.no = customer.size()+1;
  125.         customer.push_back(tmp);
  126.         cout<<"masukan member lagi ? <y/n>";
  127.         cin>>yn;
  128.         if(yn=='n'){
  129.             break;
  130.         }
  131.     }
  132. }
  133. //prosedur untuk output member
  134. //parameter vector x
  135. void tampil_member(vector <pelanggan> x){
  136.     cout<<"--------------------------------------"<<endl;
  137.     cout<<"| NO  |      NAMA       |    SALDO   |"<<endl;
  138.     cout<<"--------------------------------------"<<endl;
  139.     for(int i =0; i<x.size(); i++){
  140.         cout<<setw(3)<<x[i].no<<setw(18-x[i].nama.length());
  141.         cout<<x[i].nama<<setw(17)<<x[i].saldo<<endl;
  142.     }
  143.     cout<<"--------------------------------------"<<endl;
  144. }
  145.  
  146. void searching(){
  147. int pilih,target;
  148. string nama;
  149. cout<<"Pencarian "<<endl;
  150. cout<<"1. Cari berdasarkan nomor"<<endl;
  151. cout<<"2. Cari berdasarkan nama"<<endl;
  152. cout<<"3. Cari berdasarkan saldo"<<endl;
  153. cout<<"masukan pilihan : ";cin>>pilih;
  154. switch(pilih){
  155. case 1 :
  156.     system("cls");
  157.     cout<<"Pencarian berdasarkan nomor"<<endl;
  158.     cout<<"1. Binary search "<<endl;
  159.     cout<<"2. Sequential terurut non sentinel"<<endl;
  160.     cout<<"3. Sequential terurut sentinel"<<endl;
  161.     cout<<"masukan pilihan ";cin>>pilih;
  162.     cout<<"masukan nomor yang dicari : ";cin>>target;
  163.     switch(pilih){
  164.     case 1 :
  165.         if(binarySearch(target)!=-1){
  166.         customer_tmp.push_back(customer[binarySearch(target)]);
  167.         tampil_member(customer_tmp);
  168.         customer_tmp.erase(customer_tmp.begin());
  169.         }
  170.         else{
  171.             cout<<"data not found";
  172.         }
  173.         break;
  174.     case 2:
  175.         if(seqSearch_urut_nonsentinel(target)!=-1){
  176.         customer_tmp.push_back(customer[seqSearch_urut_nonsentinel(target)]);
  177.         tampil_member(customer_tmp);
  178.         customer_tmp.erase(customer_tmp.begin());
  179.         }
  180.         else{
  181.             cout<<"data not found";
  182.         }
  183.         break;
  184.     case 3 :
  185.         if(seqSearch_urut_sentinel(target)!=-1){
  186.         customer_tmp.push_back(customer[seqSearch_urut_sentinel(target)]);
  187.         tampil_member(customer_tmp);
  188.         customer_tmp.erase(customer_tmp.begin());
  189.         }
  190.         else{
  191.             cout<<"data not found";
  192.         }
  193.         break;
  194.     }
  195.     break;
  196. case 2 :
  197.     system("cls");
  198.     cout<<"Cari berdasarkan nama"<<endl;
  199.     cout<<"masukan nama : ";cin>>nama;
  200.     if (cari_nama(customer_tmp,nama).size() > 0)
  201.     tampil_member(cari_nama(customer_tmp,nama));
  202.     else
  203.     cout<<"not found"<<endl;
  204.     customer_tmp.erase(customer_tmp.begin(),customer_tmp.end());
  205.     break;
  206. case 3:
  207.     system("cls");
  208.     cout<<"Pencarian berdasarkan saldo"<<endl;
  209.     cout<<"1. Sequential tak terurut non sentinel"<<endl;
  210.     cout<<"2. Sequential tak terurut sentinel"<<endl;
  211.     cout<<"masukan pilihan : ";cin>>pilih;
  212.     cout<<"masukan jumlah transaksi yang dicari : ";cin>>target;
  213.     switch(pilih){
  214.  
  215.         case 1 :
  216.         if(seqSearch_belum_urut_nonsentinel(target)!=-1){
  217.         customer_tmp.push_back(customer[seqSearch_belum_urut_nonsentinel(target)]);
  218.         tampil_member(customer_tmp);
  219.         customer_tmp.erase(customer_tmp.begin());
  220.         }
  221.         else{
  222.             cout<<"data not found";
  223.         }
  224.         break;
  225.         case 2 :
  226.  
  227.         if(seqSearch_belum_urut_sentinel(target)!=-1){
  228.         customer_tmp.push_back(customer[seqSearch_belum_urut_sentinel(target)]);
  229.         tampil_member(customer_tmp);
  230.         customer_tmp.erase(customer_tmp.begin());
  231.         }
  232.         else{
  233.             cout<<"data not found";
  234.         }
  235.         break;
  236.     }
  237.     break;
  238.  }
  239. }
  240.  
  241. //fungsi binary search
  242. //return posisi data ditemukan
  243. //return -1 jika data tidak ada
  244. int binarySearch(int target){
  245.     int i=0,awal=0, akhir= customer.size(), tengah;
  246.     bool ketemu;
  247.  
  248.     while(!ketemu & i<=customer.size()){
  249.         tengah = (awal+akhir)/2;
  250.         if(customer[tengah].no == target)
  251.         ketemu = true;
  252.         else
  253.             if(customer[tengah].no>target)
  254.                 akhir = tengah -1;
  255.             else
  256.                 awal = tengah + 1;
  257.     }
  258.     return ( ketemu ? tengah : -1);
  259. };
  260.  
  261.  
  262. int seqSearch_belum_urut_nonsentinel(int target){
  263.     bool ketemu;
  264.     int i;
  265.     for (i =0; i<customer.size();i++){
  266.  
  267.         if(customer[i] == target){
  268.             ketemu = true;
  269.             break;
  270.         }
  271.     }
  272.     return  ( ketemu ? i : -1);
  273.  
  274. }
  275.  
  276. //fungsi sequential search  belum urut sentinel
  277. //return posisi data ditemukan
  278. //return -1 jika data tidak ada
  279. int seqSearch_urut_nonsentinel(int target){
  280.     bool ketemu;
  281.     int i;
  282.     for (i =0; i<customer.size();i++){
  283.         if(customer[i].no == target){
  284.             ketemu = true;
  285.             break;
  286.         }
  287.         if(target<customer[i].no)
  288.             break;
  289.     }
  290.     return  ( ketemu ? i : -1);
  291. }
  292.  
  293. //fungsi urut non sentinel
  294. //return posisi data ditemukan
  295. //return -1 jika data tidak ada
  296. int seqSearch_urut_sentinel(int target){
  297.     pelanggan batas(customer.size()+1,0);
  298.     customer.push_back(batas);
  299.     int i=0;
  300.     for(int i =0;i<customer.size()-1;i++){
  301.         if(customer_tmp[i].no==target)
  302.             break;
  303.         if(customer_tmp[i].no>target)
  304.             break;
  305.     }
  306.     customer.erase(customer.end()-1,customer.end());
  307.     return (i>customer.size() ? -1 : i);
  308. }
  309.  
  310. //fungsi sequential urut sentinel
  311. //return posisi data ditemukan
  312. //return -1 jika data tidak ada
  313.  
  314. int seqSearch_belum_urut_sentinel(int target){
  315.     pelanggan batas(customer.size()+1,0);
  316.     customer_tmp.swap(customer);
  317.     customer_tmp.push_back(batas);
  318.     int i=0;
  319.     for(int i =0;i<customer_tmp.size();i++){
  320.         if(customer_tmp[i].saldo==target)
  321.             break;
  322.     }
  323.     customer_tmp.erase(customer_tmp.begin(),customer_tmp.end());
  324.     return (i<customer_tmp.size()-1 ? i : -1);
  325. }
  326.  
  327. //fungsi sorting sengan bubble sort
  328. //parameter fungsi vector data
  329. //return vector dengan tipe pelanggan terurut ascending
  330. vector <pelanggan> bubble_sort(vector <pelanggan> data ){
  331.     pelanggan x;
  332.     for(int i =0;i < data.size();i++){
  333.         for(int j =0; j < data.size() -1 -i;j++){
  334.         if (data[j]>data[j+1] ){
  335.                 swap(data[j],data[j+1]);
  336.         }
  337.       }
  338.     }
  339.     return data;
  340. }
  341.  
  342. //fungsi sorting sengan selection sort
  343. //parameter fungsi
  344. //return vector dengan tipe pelanggan terurut ascending
  345. vector <pelanggan> selection_sort( vector <pelanggan>  data){
  346.     int posisi,i;
  347.     pelanggan tmp;
  348.         for(posisi = 0 ; posisi<data.size();posisi++){
  349.             for( i = posisi + 1; i<data.size(); i++){
  350.                 if(data[posisi].saldo> data[posisi+1].saldo){
  351.                     swap(data[posisi],data[posisi+1]);
  352.                 }
  353.             }
  354.         }
  355.             return data;
  356. }
  357.  
  358. //fungsi sorting sengan bubble sort
  359. //parameter fungsi vector data
  360. //return vector dengan tipe pelanggan terurut ascending
  361. vector <pelanggan> cari_nama(vector <pelanggan> data, string nama){
  362.     for(int i =0;i<customer.size();i++){
  363.         if(nama==customer[i].nama){
  364.             data.push_back(customer[i]);
  365.         }
  366.     }
  367.     return data;
  368. };
  369.  
  370. //prosedur untuk membaca data dari txt file
  371. // data disiman ke vector customer
  372. void baca_txt_file(){
  373.     pelanggan tmp;
  374.     ifstream fileku_input;
  375.     fileku_input.open("test.txt");
  376.     if(fileku_input.is_open()&&fileku_input.peek()!=fileku_input.eof()){
  377.         while(!fileku_input.eof()){
  378.             fileku_input>>tmp.no>>tmp.nama>>tmp.saldo;
  379.             customer.push_back(tmp);
  380.         }
  381.         if(customer.size()>0)
  382.             customer.erase(customer.end());
  383.     }
  384.     else{
  385.         cout<<"file tidak dibuka"<<endl;
  386.     }
  387. }
  388.  
  389. //prosedur untuk menulis data ke txt file
  390. // data disiman ke test.txt
  391. void tulis_txt_file(){
  392.     ofstream fileku;
  393.     fileku.open("test.txt");
  394.     if(fileku.is_open()){
  395.         for(int i =0; i<customer.size(); i++){
  396.             fileku<<customer[i].no<<" "<<customer[i].nama<<" "<<customer[i].saldo<<endl;
  397.         }
  398.     }
  399.     else{
  400.         cout<<"file tidak dibuka"<<endl;
  401.     }
  402.     fileku.close();
  403. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement