Advertisement
oke_google

angga modul 2

Apr 21st, 2017
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.67 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. using namespace std;
  6.  
  7. struct barang{
  8.     char nama_barang[20];
  9.     int harga;
  10.     int stok;
  11.     barang *next;
  12.     barang *prev;
  13. };
  14.  
  15. struct transaksi{
  16.     char nama_barang[20];
  17.     int jumlah_beli;
  18.     transaksi *next;
  19.     transaksi *prev;
  20. };
  21.  
  22. struct pembelian{
  23.     transaksi *beli_barang, *depan, *belakang, *letak, *hapus_belakang, *hapus_depan;
  24.     int total;
  25.     double full, diskon;
  26.     int bayar;
  27.     int kembalian;
  28.     pembelian *next;
  29.     pembelian *prev;
  30. };
  31.  
  32. pembelian *depan, *belakang, *baru, *posisi, *tujuan, *bantu, *hapus;
  33. barang *head, *tail, *tambah, *position;
  34.  
  35. void stok(){
  36.     tambah = new barang;
  37.     cout<<"Nama Barang = ";
  38.     cin.getline(tambah->nama_barang, 20);
  39.     cout<<"Harga Barang = ";
  40.     cin>>tambah->harga;
  41.     cout<<"Stok = ";
  42.     cin>>tambah->stok;
  43.     tambah->next = NULL;
  44.     tambah->prev = NULL;
  45.     if(head == NULL){
  46.         head = tambah;
  47.         tail = tambah;
  48.     }
  49.     else{
  50.         tail->next = tambah;
  51.         tambah->prev = tail;
  52.         tail = tambah;
  53.     }
  54. }
  55.  
  56. void tampil_barang(){
  57.     position = head;
  58.     while(position != NULL){
  59.         cout<<"Nama Barang = "<<position->nama_barang<<"( @"<<position->stok<<" pcs) Harga = "<<position->harga<<endl;
  60.         position = position->next;
  61.     }
  62. }
  63.  
  64. void tambah_belakang(){
  65.     if(depan == NULL){
  66.         depan = baru;
  67.         belakang = baru;
  68.     }
  69.     else{
  70.         belakang->next = baru;
  71.         baru->prev = belakang;
  72.         belakang = baru;
  73.     }
  74. }
  75.  
  76. void tambah_depan(){
  77.     if(depan == NULL){
  78.         depan = baru;
  79.         belakang = baru;
  80.     }
  81.     else{
  82.         baru->next = depan;
  83.         depan->prev = baru;
  84.         depan = baru;
  85.     }
  86. }
  87. void tambahTengah(){
  88.         int letak;
  89.         cout<<"\nMenyisipkan data ke posisi berapa = ";cin>>letak;
  90.         baru->next=NULL;
  91.         posisi=depan;
  92.         for(int i = 1; i<letak; i++){
  93.             bantu=posisi;
  94.             posisi=posisi->next;
  95.         }
  96.         bantu->next=baru;
  97.         baru->prev = bantu;
  98.         baru->next=posisi;
  99.         posisi->prev = baru;
  100. }
  101. void hapusTengah(){
  102.     int letak;
  103.  
  104.     cout<<"\ndata ke posisi berapa yang ingin dihapus = ";cin>>letak;
  105.     hapus=depan;
  106.     while(hapus->next->next!=NULL){
  107.         bantu=hapus;
  108.         hapus=hapus->next;
  109.     }
  110.     posisi=hapus;
  111.     tujuan = hapus->next;
  112.     bantu->next=tujuan;
  113.     tujuan->prev = bantu;
  114.     hapus=NULL;
  115.     cout<<"Data Terhapus";
  116. }
  117. void beli_barang(){
  118.     system("CLS");
  119.     char beli_lagi;
  120.     int tambah_mana;
  121.     baru = new pembelian;
  122.     baru->total = 0;
  123.     baru->diskon = 0;
  124.     baru->full = 0;
  125.     baru->depan = NULL;
  126.     baru->belakang = NULL;
  127.     do{
  128.     system("CLS");
  129.     tampil_barang();
  130.     baru->beli_barang = new transaksi;
  131.     cout<<"Masukan Nama barang yg ingin dibeli = ";
  132.     cin.getline(baru->beli_barang->nama_barang, 20);
  133.     cout<<"Masukan Jumlah Barang yg ingin dibeli = ";
  134.     cin>>baru->beli_barang->jumlah_beli;
  135.     baru->beli_barang->next = NULL;
  136.     if(baru->depan == NULL){
  137.         baru->depan = baru->beli_barang;
  138.         baru->belakang = baru->beli_barang;
  139.     }
  140.     else{
  141.         baru->belakang->next = baru->beli_barang;
  142.         baru->beli_barang->prev = baru->belakang;
  143.         baru->belakang = baru->beli_barang;
  144.     }
  145.  
  146.     position = head;
  147.     while(position != NULL){
  148.         if(strcmp(position->nama_barang, baru->beli_barang->nama_barang)==0){
  149.             position->stok = position->stok - baru->beli_barang->jumlah_beli;
  150.             baru->total = baru->total + position->harga * baru->beli_barang->jumlah_beli;
  151.             if(baru->total > 200000){
  152.                 baru->diskon = baru->total * 20/100;
  153.                 baru->full = baru->total - baru->diskon;
  154.             }
  155.             else {
  156.                 baru->diskon = baru->total * 0;
  157.                 baru->full = baru->total - baru->diskon;
  158.             }
  159.             break;
  160.         }
  161.         if(position == tail){
  162.             break;
  163.         }
  164.         position = position->next;
  165.     }
  166.     cout<<"Anda Ingin Beli Lagi = ";
  167.     cin>>beli_lagi;
  168.     cin.ignore();
  169.     }while(beli_lagi == 'y');
  170.     baru->next = NULL;
  171.     cout<<"Anda Ingin menambahkan Dimana ? "<<endl;
  172.     cout<<"1. Tambah Depan "<<endl;
  173.     cout<<"2. Tambah Tengah "<<endl;
  174.     cout<<"2. Tambah Belakang "<<endl;
  175.     cout<<"Masukan Pilihan Anda "<<endl;
  176.     cin>>tambah_mana;
  177.     if(tambah_mana == 1)
  178.         tambah_depan();
  179.     else if(tambah_mana == 2)
  180.         tambahTengah();
  181.     else if(tambah_mana == 3)
  182.         tambah_belakang();
  183.     else
  184.         cout<<"Pilihan Tidak Ada "<<endl;
  185.  
  186. }
  187.  
  188. void tampil_pembeli(){
  189.     system("CLS");
  190.     posisi = depan;
  191.     while(posisi!=NULL){
  192.         posisi->letak = posisi->depan;
  193.         while(posisi->letak!=NULL){
  194.             cout<<"Nama Barang = "<< posisi->letak->nama_barang <<endl;
  195.             cout<<"Banyak Barang yg dibeli = "<< posisi->letak->jumlah_beli <<endl;
  196.             posisi->letak = posisi->letak->next;
  197.         }
  198.         cout<<"Harga = "<<posisi->total<<endl;
  199.         cout<<"Diskon = "<<posisi->diskon<<endl;
  200.         cout<<"Total = "<<posisi->full<<endl;
  201.         posisi = posisi->next;
  202.     }
  203. }
  204. void hapus_depan ()
  205. {
  206.     posisi= depan;
  207.     depan=posisi->next;
  208.     depan->prev = NULL;
  209.     posisi=NULL;
  210.     cout<< "data hilang";
  211. }
  212.  
  213. void hapus_belakang ()
  214. {
  215.     posisi=belakang;
  216.  
  217.     belakang = posisi->prev;
  218.     belakang->next = NULL;
  219.     posisi = NULL;
  220.     cout<< "data hilang";
  221. }
  222.  
  223. void hapus_pembeli(){
  224.     int hapus;
  225.     cout<<"1. Hapus Depan"<<endl;
  226.     cout<<"2. Hapus Tengah"<<endl;
  227.     cout<<"2. Hapus Belakang"<<endl;
  228.     cout<<"Masukan Pilihan Anda = ";
  229.     cin>>hapus;
  230.     if(hapus == 1)
  231.         hapus_depan();
  232.     else if(hapus == 2)
  233.         hapusTengah();
  234.     else if(hapus == 3)
  235.         hapus_belakang();
  236.     else
  237.         cout<<"Pilihan tidak ada "<<endl;
  238. }
  239.  
  240. void tampilan(){
  241.     int pilihan;
  242.     char ulangi;
  243.  
  244.     do{
  245.             system("cls");
  246.     cout<<"1. stok barang \n";
  247.     cout<<"2. Pembelian \n";
  248.     cout<<"3. view data\n";
  249.     cout<<"4. Hapus Pembeli\n"<<endl;
  250.     cout<<"\nPilihan anda = ";cin>>pilihan;
  251.     cin.ignore();
  252.     switch(pilihan){
  253.     case 1 :
  254.         system("CLS");
  255.         stok();
  256.     break;
  257.     case 2 :
  258.         system("CLS");
  259.         beli_barang();
  260.     break;
  261.     case 3:
  262.         system("CLS");
  263.         tampil_pembeli();
  264.     break;
  265.     case 4:
  266.         system("CLS");
  267.         hapus_pembeli();
  268.     break;
  269.     default:
  270.         cout<<"Pilihan Tidak ada"<<endl;
  271.     break;
  272.     }
  273.     cout<<"\nApakah anda ingin mengecek ulang ? (y/t)";cin>>ulangi;
  274.     }while(ulangi=='y');
  275. }
  276.  
  277. int main()
  278. {
  279.     tampilan();
  280. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement