Advertisement
Agus_Darmawan

arul

Jun 23rd, 2020
1,201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 25.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <vector>
  5. #include "investor.h"
  6. #include "saham.h"
  7.  
  8. using namespace std;
  9.  
  10. listInvestor LI;
  11. addressInvestor adI;
  12.  
  13. listSaham LS;
  14. addressSaham adrS;
  15.  
  16. addressRelasi adR = NULL;
  17.  
  18. void initState() {
  19.     createListInvestor(LI);
  20.     createListSaham(LS);
  21. }
  22.  
  23. void clrscr() {
  24.     system("cls");
  25. }
  26.  
  27. void tambahDiAwalInvestor() {
  28.  
  29.     clrscr();
  30.     cout    << "-------------------------------------" << endl
  31.             << "  MENU TAMBAH DATA INVESTOR DI AWAL  " << endl
  32.             << "-------------------------------------" << endl
  33.             << "Masukkan nama: "
  34.             ;
  35.     fflush(stdin);
  36.     string nama;
  37.     getline(cin, nama);
  38.  
  39.     cout << "Masukkan status: ";
  40.     fflush(stdin);
  41.     string status;
  42.     getline(cin, status);
  43.  
  44.     createElementInvestor(adI, nama, status);
  45.     insertFirstInvestor(LI, adI);
  46.  
  47.     printDataInvestor(LI);
  48.  
  49.     fflush(stdin);
  50.     getchar();
  51. }
  52.  
  53. void tambahDiAkhirInvestor() {
  54.     string nama;
  55.  
  56.     clrscr();
  57.     cout    << "-------------------------------------" << endl
  58.             << "  MENU TAMBAH DATA INVESTOR DI AKHIR  " << endl
  59.             << "-------------------------------------" << endl
  60.             << "Masukkan nama: "
  61.             ;
  62.     fflush(stdin);
  63.     getline(cin, nama);
  64.  
  65.     cout << "Masukkan status: ";
  66.     fflush(stdin);
  67.     string status;
  68.     getline(cin, status);
  69.  
  70.     createElementInvestor(adI, nama, status);
  71.     insertLastInvestor(LI, adI);
  72.  
  73.     printDataInvestor(LI);
  74.  
  75.     fflush(stdin);
  76.     getchar();
  77. }
  78.  
  79. void tambahDiTengahInvestor() {
  80.  
  81.     clrscr();
  82.     cout << "-----------------------------------------" << endl
  83.          << "  MENU TAMBAH DATA INVESTOR DI TENGAH  " << endl
  84.          << "----------------------------------------" << endl
  85.          ;
  86.     cout << "Masukkan nama prec: ";
  87.     string namaPrec;
  88.     fflush(stdin);
  89.     getline(cin, namaPrec);
  90.  
  91.     addressInvestor adrIPrec = findElementInvestor(LI, namaPrec);
  92.  
  93.     if(adrIPrec == NULL) {
  94.         cout << "Data prec tidak ditemukan";
  95.         fflush(stdin);
  96.         getchar();
  97.     } else {
  98.  
  99.         cout    << "Masukkan nama investor: "
  100.                 ;
  101.         fflush(stdin);
  102.         string nama;
  103.         getline(cin, nama);
  104.  
  105.         cout << "Masukkan status: ";
  106.         fflush(stdin);
  107.         string status;
  108.         getline(cin, status);
  109.  
  110.         createElementInvestor(adI, nama, status);
  111.         insertAfterInvestor(LI, adrIPrec, adI);
  112.         printDataInvestor(LI);
  113.     }
  114. }
  115.  
  116. void tambahDataInvestor() {
  117.     int pilihan = 0;
  118.     do {
  119.         clrscr();
  120.         cout    << "-------------------------------------------" << endl
  121.                 << "          Menu Tambah Data Investor        " << endl
  122.                 << "-------------------------------------------" << endl
  123.                 << "1. Tambah Di Awal" << endl
  124.                 << "2. Tambah Di Akhir" << endl
  125.                 << "3. Tambah Di Tengah" << endl
  126.                 << "4. Menu Tambah Data" << endl
  127.                 << "-------------------------------------------" << endl
  128.                 << "Pilihan: "
  129.                 ;
  130.         cin >> pilihan;
  131.  
  132.         switch(pilihan) {
  133.             case 1:
  134.                 tambahDiAwalInvestor();
  135.                 break;
  136.  
  137.             case 2:
  138.                 tambahDiAkhirInvestor();
  139.                 break;
  140.  
  141.             case 3:
  142.                 tambahDiTengahInvestor();
  143.                 break;
  144.  
  145.             case 4:
  146.                 break;
  147.  
  148.             default : {
  149.                 cout << "Menu yang disediakan hanya dari 1 - 4..";
  150.                 fflush(stdin);
  151.                 getchar();
  152.             }
  153.         }
  154.     } while(pilihan != 4);
  155. }
  156.  
  157. void tambahDiAwalSaham() {
  158.  
  159.     clrscr();
  160.     string Saham;
  161.  
  162.     cout    << "-------------------------------------" << endl
  163.             << "   MENU TAMBAH DATA SAHAM DI AWAL    " << endl
  164.             << "-------------------------------------" << endl
  165.             << "Masukkan Saham: "
  166.             ;
  167.     fflush(stdin);
  168.     getline(cin, Saham);
  169.  
  170.     cout << "Masukkan nominal: ";
  171.     int nominal;
  172.     cin >> nominal;
  173.  
  174.     cout << "Masukkan terbilang: ";
  175.     string terbilang;
  176.     fflush(stdin);
  177.     getline(cin, terbilang);
  178.  
  179.     createELementSaham(adrS, Saham, nominal, terbilang);
  180.     insertFirstSaham(LS, adrS);
  181.  
  182.     printDataSaham(LS);
  183.  
  184.     fflush(stdin);
  185.     getchar();
  186. }
  187.  
  188. void tambahDiAkhirSaham() {
  189.  
  190.     clrscr();
  191.     string Saham;
  192.  
  193.     cout    << "-------------------------------------" << endl
  194.             << "   MENU TAMBAH DATA SAHAM DI AKHIR   " << endl
  195.             << "-------------------------------------" << endl
  196.             << "Masukkan Saham: "
  197.             ;
  198.     fflush(stdin);
  199.     getline(cin, Saham);
  200.  
  201.     cout << "Masukkan nominal: ";
  202.     int nominal;
  203.     cin >> nominal;
  204.  
  205.     cout << "Masukkan terbilang: ";
  206.     string terbilang;
  207.     fflush(stdin);
  208.     getline(cin, terbilang);
  209.  
  210.     createELementSaham(adrS, Saham, nominal, terbilang);
  211.     insertLastSaham(LS, adrS);
  212.  
  213.     printDataSaham(LS);
  214.  
  215.     fflush(stdin);
  216.     getchar();
  217. }
  218.  
  219. void tambahDataSaham() {
  220.     int pilihan = 0;
  221.     do {
  222.         clrscr();
  223.         cout    << "-------------------------------------------" << endl
  224.                 << "            Menu Tambah Data Saham         " << endl
  225.                 << "-------------------------------------------" << endl
  226.                 << "1. Tambah Di Awal" << endl
  227.                 << "2. Tambah Di Akhir" << endl
  228.                 << "3. Menu Tambah Data" << endl
  229.                 << "-------------------------------------------" << endl
  230.                 << "Pilihan: "
  231.                 ;
  232.         cin >> pilihan;
  233.  
  234.         switch(pilihan) {
  235.             case 1:
  236.                 tambahDiAwalSaham();
  237.                 break;
  238.  
  239.             case 2:
  240.                 tambahDiAkhirSaham();
  241.                 break;
  242.  
  243.             case 3:
  244.                 break;
  245.  
  246.             default : {
  247.                 cout << "Menu yang disediakan hanya dari 1 - 3..";
  248.                 fflush(stdin);
  249.                 getchar();
  250.             }
  251.         }
  252.     } while(pilihan != 3);
  253. }
  254.  
  255. void tampilDataKoneksi() {
  256.  
  257.     clrscr();
  258.     addressInvestor QInvestor = LI.first;
  259.  
  260.     cout << "Tampil Data Investor Beserta Saham Yang Dimiliki" << endl;
  261.     cout << "=====================================================" << endl;
  262.  
  263.     if(QInvestor == NULL) {
  264.         cout << "Data Kosong...";
  265.         fflush(stdin);
  266.         getchar();
  267.     } else {
  268.         while (QInvestor) {
  269.  
  270.             cout << "Nama    : " << QInvestor->namaInvestor << endl
  271.                  << "Status  : " << QInvestor->statusInvestor << endl
  272.             ;
  273.  
  274.             addressRelasi QRelasi = QInvestor->adrConnection;
  275.             if(QRelasi == NULL) {
  276.                 cout << "Tidak ada Saham yang pernah diikuti oleh " << QInvestor->namaInvestor << endl;
  277.             } else {
  278.                 while (QRelasi) {
  279.                     cout << "Seri    : " << QRelasi->adrSaham->seri << endl
  280.                          << "Nominal : " << QRelasi->adrSaham->nominal << endl
  281.                          << "Terbilang: " << QRelasi->adrSaham->terbilang << endl
  282.                     ;
  283.  
  284.                     QRelasi = QRelasi->next;
  285.                 }
  286.             }
  287.             QInvestor = QInvestor->next;
  288.             cout << "=====================================================" << endl << endl ;
  289.         }
  290.         fflush(stdin);
  291.         getchar();
  292.     }
  293. }
  294.  
  295. void tambahRelasi() {
  296.  
  297.     clrscr();
  298.     cout    << "-------------------------------------------" << endl
  299.             << "    MENU RELASIKAN INVESTOR DENGAN SAHAM   " << endl
  300.             << "-------------------------------------------" << endl
  301.             << "Masukkan nama Investor: ";
  302.     string namaInvestor;
  303.     fflush(stdin);
  304.     getline(cin, namaInvestor);
  305.  
  306.     adI = findInvestor(LI, namaInvestor);
  307.     if(adI == NULL) {
  308.         cout << "Nama Investor tidak ditemukan...";
  309.         fflush(stdin);
  310.         getchar();
  311.     } else {
  312.         cout << "Masukkan seri: ";
  313.         string seri;
  314.         fflush(stdin);
  315.         getline(cin, seri);
  316.  
  317.         adrS = findSaham(LS, seri);
  318.         if(adrS == NULL) {
  319.             cout << "Nama Saham tidak ditemukan...";
  320.             fflush(stdin);
  321.             getchar();
  322.         } else {
  323.             addressRelasi newRelasi = NULL;
  324.             createElementRelasi(newRelasi, adrS);
  325.             insertLastRelasi(adI->adrConnection, newRelasi);
  326.             tampilDataKoneksi();
  327.         }
  328.     }
  329. }
  330.  
  331. void menuTambahData() {
  332.     int pilihan = 0;
  333.     do {
  334.         clrscr();
  335.         cout    << "-------------------------------------------" << endl
  336.                 << "              Menu Tambah Data             " << endl
  337.                 << "-------------------------------------------" << endl
  338.                 << "1. Tambah Data Investor" << endl
  339.                 << "2. Tambah Data Saham" << endl
  340.                 << "3. Tambah Relasi" << endl
  341.                 << "4. Menu Utama" << endl
  342.                 << "-------------------------------------------" << endl
  343.                 << "Pilihan: "
  344.                 ;
  345.         cin >> pilihan;
  346.  
  347.         switch(pilihan) {
  348.             case 1:
  349.                 tambahDataInvestor();
  350.                 break;
  351.  
  352.             case 2:
  353.                 tambahDataSaham();
  354.                 break;
  355.  
  356.             case 3:
  357.                 tambahRelasi();
  358.                 break;
  359.  
  360.             case 4:
  361.                 break;
  362.  
  363.             default : {
  364.                 cout << "Menu yang disediakan hanya dari 1 - 4..";
  365.                 fflush(stdin);
  366.                 getchar();
  367.             }
  368.         }
  369.     } while(pilihan != 4);
  370. }
  371.  
  372. void hapusInvestor() {
  373.     int pilihan = 0;
  374.     do {
  375.         clrscr();
  376.         cout    << "-------------------------------------------" << endl
  377.                 << "          Menu Hapus Data Investor         " << endl
  378.                 << "-------------------------------------------" << endl
  379.                 << "1. Hapus Di Awal" << endl
  380.                 << "2. Hapus Di Akhir" << endl
  381.                 << "3. Hapus Di Tengah" << endl
  382.                 << "4. Menu Hapus Data" << endl
  383.                 << "-------------------------------------------" << endl
  384.                 << "Pilihan: "
  385.                 ;
  386.         cin >> pilihan;
  387.  
  388.         switch(pilihan) {
  389.             case 1:
  390.                 deleteFirstInvestor(LI);
  391.                 printDataInvestor(LI);
  392.                 break;
  393.  
  394.             case 2:
  395.                 deleteLastInvestor(LI);
  396.                 printDataInvestor(LI);
  397.                 break;
  398.  
  399.             case 3:{
  400.                 cout << "Masukkan nama prec: ";
  401.                 string namaPrec;
  402.                 fflush(stdin);
  403.                 getline(cin, namaPrec);
  404.  
  405.                 addressInvestor adrIPrec = findElementInvestor(LI, namaPrec);
  406.                 if(adrIPrec == NULL) {
  407.                     cout << "Prec tidak ditemukan..";
  408.                     fflush(stdin);
  409.                     getchar();
  410.                 } else {
  411.                     deleteAfterInvestor(LI, adrIPrec);
  412.                     printDataInvestor(LI);
  413.                 }
  414.             }break;
  415.  
  416.             case 4:
  417.                 break;
  418.  
  419.             default: {
  420.                 cout << "Menu yang disediakan hanya dari 1 - 4..";
  421.                 fflush(stdin);
  422.                 getchar();
  423.             }
  424.  
  425.         }
  426.  
  427.     } while (pilihan != 4);
  428. }
  429.  
  430. void hapusSaham() {
  431.     int pilihan = 0;
  432.     do {
  433.         clrscr();
  434.         cout    << "-------------------------------------------" << endl
  435.                 << "          Menu Hapus Data Saham         " << endl
  436.                 << "-------------------------------------------" << endl
  437.                 << "1. Hapus Di Awal" << endl
  438.                 << "2. Hapus Di Akhir" << endl
  439.                 << "3. Menu Hapus Data" << endl
  440.                 << "-------------------------------------------" << endl
  441.                 << "Pilihan: "
  442.                 ;
  443.         cin >> pilihan;
  444.  
  445.         switch(pilihan) {
  446.             case 1:
  447.                 deleteFirstSaham(LS);
  448.                 printDataSaham(LS);
  449.                 break;
  450.  
  451.             case 2:
  452.                 deleteLastSaham(LS);
  453.                 printDataSaham(LS);
  454.                 break;
  455.  
  456.             case 3:
  457.                 break;
  458.  
  459.             default: {
  460.                 cout << "Menu yang disediakan hanya dari 1 - 3..";
  461.                 fflush(stdin);
  462.                 getchar();
  463.             }
  464.  
  465.         }
  466.  
  467.     } while (pilihan != 3);
  468. }
  469.  
  470. void menuHapusData() {
  471.     int pilihan = 0;
  472.     do {
  473.         clrscr();
  474.         cout    << "-------------------------------------------" << endl
  475.                 << "               Menu Hapus Data             " << endl
  476.                 << "-------------------------------------------" << endl
  477.                 << "1. Hapus Data Investor" << endl
  478.                 << "2. Hapus Data Saham" << endl
  479.                 << "3. Menu Utama" << endl
  480.                 << "-------------------------------------------" << endl
  481.                 << "Pilihan: "
  482.                 ;
  483.         cin >> pilihan;
  484.  
  485.         switch(pilihan) {
  486.             case 1:
  487.                 hapusInvestor();
  488.                 break;
  489.  
  490.             case 2:
  491.                 hapusSaham();
  492.                 break;
  493.  
  494.             case 3:
  495.                 break;
  496.  
  497.             default : {
  498.                 cout << "Menu yang disediakan hanya dari 1 - 3..";
  499.                 fflush(stdin);
  500.                 getchar();
  501.             }
  502.         }
  503.     } while(pilihan != 3);
  504. }
  505.  
  506. void TampilDetailSahamYangDimilikiSeorangInvestor() {
  507.  
  508.     clrscr();
  509.     cout  << "------------------------" << endl
  510.           << "MENU TAMPIL SAHAM" << endl
  511.           << "------------------------" << endl
  512.           << "Masukkan nama Investor: ";
  513.     string namaInvestor;
  514.     fflush(stdin);
  515.     getline(cin, namaInvestor);
  516.  
  517.     adI = findInvestor(LI, namaInvestor);
  518.     if(adI == NULL) {
  519.         cout << "Investor yang anda cari tidak ditemukan!" << endl;
  520.     } else {
  521.  
  522.         system("cls");
  523.         cout << endl << endl << endl;
  524.         cout << "=========================================================" << endl;
  525.         cout << "Menampilkan Saham Yang Dimiliki Oleh " << namaInvestor << endl;
  526.         cout << "=========================================================" << endl;
  527.  
  528.  
  529.         addressInvestor QInvestor = LI.first;
  530.         int ketemu = 0;
  531.  
  532.         while (QInvestor || ketemu == 0) {
  533.             if(QInvestor->namaInvestor == namaInvestor) {
  534.                 addressRelasi QRelasi = QInvestor->adrConnection;
  535.  
  536.                 while (QRelasi) {
  537.                     cout << "Seri: " << QRelasi->adrSaham->seri << endl
  538.                          << "Nominal: " << QRelasi->adrSaham->nominal << endl
  539.                          << "Terbilang: " << QRelasi->adrSaham->terbilang << endl
  540.                          << "==========" << endl
  541.                     ;
  542.                     QRelasi = QRelasi->next;
  543.                 }
  544.                 ketemu++;
  545.             }
  546.             QInvestor = QInvestor->next;
  547.         }
  548.  
  549.         if(ketemu == 0)
  550.             cout << "Tidak Ada Saham Yang Dimiliki Oleh " << namaInvestor << endl;
  551.         cout << "===========================================================" << endl;
  552.     }
  553.     fflush(stdin);
  554.     getchar();
  555. }
  556.  
  557. void TampilDetailInvestorYangMemilikiSahamTertentu() {
  558.     clrscr();
  559.     cout << "------------------------" << endl
  560.          << "  MENU TAMPIL INVESTOR  " << endl
  561.          << "------------------------" << endl
  562.          << "Masukkan Seri Saham: "
  563.             ;
  564.     string seri;
  565.     fflush(stdin);
  566.     getline(cin, seri);
  567.  
  568.     adrS = findSaham(LS, seri);
  569.     if(adrS == NULL) {
  570.         cout << "Saham yang anda cari tidak ditemukan!" << endl;
  571.     } else {
  572.  
  573.         system("cls");
  574.         cout << endl << endl << endl;
  575.         cout << "================================================================" << endl;
  576.         cout << "Menampilsan Investor Yang Memiliki Saham Dengan Seri " << seri << endl;
  577.         cout << "================================================================" << endl;
  578.  
  579.  
  580.         addressInvestor QInvestor = LI.first;
  581.         int ketemu = 0;
  582.  
  583.         while (QInvestor) {
  584.             addressRelasi QRelasi = QInvestor->adrConnection;
  585.  
  586.             while (QRelasi) {
  587.  
  588.                 if(QRelasi->adrSaham->seri == seri) {
  589.                     cout << "Nama: " << QInvestor->namaInvestor << endl
  590.                          << "Status: " << QInvestor->statusInvestor << endl
  591.                     ;
  592.                     ketemu++;
  593.                     goto beres;
  594.                 }
  595.                 QRelasi = QRelasi->next;
  596.             }
  597.  
  598.             beres:
  599.             QRelasi = NULL;
  600.  
  601.             QInvestor = QInvestor->next;
  602.         }
  603.  
  604.         if(ketemu == 0)
  605.             cout << "Tidak ada Investor Yang Memiliki Saham Dengan Seri " << seri << endl;
  606.         cout << "================================================================" << endl;
  607.     }
  608.     fflush(stdin);
  609.     getchar();
  610. }
  611.  
  612. void TampilDataInvestorDenganSahamPalingBanyak() {
  613.  
  614.     clrscr();
  615.     cout << "-----------------------------------------------------------" << endl
  616.          << "Menampilkan Saham Yang Mempunyai Investor Paling Banyak" << endl
  617.          << "-----------------------------------------------------------" << endl;
  618.  
  619.     vector<string> listSeriSaham;
  620.     addressSaham tempSaham = LS.first;
  621.     while(tempSaham) {
  622.         listSeriSaham.push_back(tempSaham->seri);
  623.         tempSaham = tempSaham->next;
  624.     }
  625.  
  626.     int max = listSeriSaham.size();
  627.     vector<int> banyakSeriSaham;
  628.  
  629.     for(int i = 0; i < max; i++) {
  630.         banyakSeriSaham.push_back(0);
  631.     }
  632.  
  633.     addressInvestor QInvestor = LI.first;
  634.  
  635.     while (QInvestor) {
  636.         addressRelasi QRelasi = QInvestor->adrConnection;
  637.         while (QRelasi) {
  638.             for(int i = 0; i < max; i++) {
  639.                 if(QRelasi->adrSaham->seri == listSeriSaham[i]) {
  640.                     banyakSeriSaham[i]++;
  641.                 }
  642.             }
  643.  
  644.             QRelasi = QRelasi->next;
  645.         }
  646.         QInvestor = QInvestor->next;
  647.     }
  648.  
  649.     int terbanyak = 0;
  650.     string seriTerbanyak;
  651.     for(int i = 0; i < max; i++) {
  652.         cout << "Saham " << listSeriSaham[i] << " sebanyak " << banyakSeriSaham[i] << " Investor" << endl;
  653.  
  654.         if(banyakSeriSaham[i] > terbanyak) {
  655.             terbanyak = banyakSeriSaham[i];
  656.             seriTerbanyak = listSeriSaham[i];
  657.         }
  658.     }
  659.  
  660.     cout << endl << "Saham terbanyak adalah dengan seri " << seriTerbanyak << " dengan " << terbanyak << " Investor" << endl;
  661.  
  662.     fflush(stdin);
  663.     getchar();
  664. }
  665.  
  666. void TampilDataInvestorDenganSahamPalingSedikit() {
  667.  
  668.     clrscr();
  669.     cout << "-----------------------------------------------------------" << endl
  670.          << "Menampilkan Saham Yang Mempunyai Investor Paling Sedikit" << endl
  671.          << "-----------------------------------------------------------" << endl;
  672.  
  673.     vector<string> listSeriSaham;
  674.     addressSaham tempSaham = LS.first;
  675.     while(tempSaham) {
  676.         listSeriSaham.push_back(tempSaham->seri);
  677.         tempSaham = tempSaham->next;
  678.     }
  679.  
  680.     int max = listSeriSaham.size();
  681.     vector<int> banyakSeriSaham;
  682.  
  683.     for(int i = 0; i < max; i++) {
  684.         banyakSeriSaham.push_back(0);
  685.     }
  686.  
  687.     addressInvestor QInvestor = LI.first;
  688.  
  689.     while (QInvestor) {
  690.         addressRelasi QRelasi = QInvestor->adrConnection;
  691.         while (QRelasi) {
  692.             for(int i = 0; i < max; i++) {
  693.                 if(QRelasi->adrSaham->seri == listSeriSaham[i]) {
  694.                     banyakSeriSaham[i]++;
  695.                 }
  696.             }
  697.  
  698.             QRelasi = QRelasi->next;
  699.         }
  700.         QInvestor = QInvestor->next;
  701.     }
  702.  
  703.     int palingSedikit = banyakSeriSaham[0];
  704.     string seriPalingSedikit;
  705.     for(int i = 0; i < max; i++) {
  706.         cout << "Saham " << listSeriSaham[i] << " sebanyak " << banyakSeriSaham[i] << " Investor" << endl;
  707.  
  708.         if(banyakSeriSaham[i] > palingSedikit) {
  709.             palingSedikit = banyakSeriSaham[i];
  710.             seriPalingSedikit = listSeriSaham[i];
  711.         }
  712.     }
  713.  
  714.     cout << endl << "Saham paling sedikit adalah dengan seri " << seriPalingSedikit << " dengan " << palingSedikit << " Investor" << endl;
  715.  
  716.     fflush(stdin);
  717.     getchar();
  718. }
  719.  
  720. void TampilDataInvestorDenganNominalSahamPalingBanyak() {
  721.  
  722.     clrscr();
  723.     cout << "-----------------------------------------------------------" << endl
  724.          << "Menampilkan investor dengan nominal saham paling banyak" << endl
  725.          << "-----------------------------------------------------------" << endl;
  726.  
  727.     vector<string> listInvestor;
  728.     addressInvestor tempInvestor = LI.first;
  729.     while(tempInvestor) {
  730.         listInvestor.push_back(tempInvestor->namaInvestor);
  731.         tempInvestor = tempInvestor->next;
  732.     }
  733.  
  734.     int max = listInvestor.size();
  735.     vector<int> totalNominalSaham;
  736.  
  737.     for(int i = 0; i < max; i++) {
  738.         totalNominalSaham.push_back(0);
  739.     }
  740.  
  741.  
  742.  
  743.  
  744.  
  745.  
  746.  
  747.     addressInvestor QInvestor = LI.first;
  748.  
  749.     int idx = 0;
  750.     while (QInvestor) {
  751.         addressRelasi QRelasi = QInvestor->adrConnection;
  752.         totalNominalSaham[idx] = 0;
  753.         while (QRelasi) {
  754.  
  755.             totalNominalSaham[idx] += QRelasi->adrSaham->nominal;
  756.  
  757.             QRelasi = QRelasi->next;
  758.         }
  759.         idx++;
  760.         QInvestor = QInvestor->next;
  761.     }
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.     int terbanyak = 0;
  771.     string InvestorTerbanyak;
  772.     for(int i = 0; i < max; i++) {
  773.         if(totalNominalSaham[i] > terbanyak) {
  774.             terbanyak = totalNominalSaham[i];
  775.             InvestorTerbanyak = listInvestor[i];
  776.         }
  777.     }
  778.  
  779.     cout << endl << "Investor dengan nominal terbanyak adalah " << InvestorTerbanyak << " dengan nominal Rp." << terbanyak << endl;
  780.     cout << "DETAIL: " << endl;
  781.  
  782.  
  783.  
  784.     tempInvestor = LI.first;
  785.     while(tempInvestor) {
  786.  
  787.         if(tempInvestor->namaInvestor == InvestorTerbanyak) {
  788.             cout << "Nama: " << tempInvestor->namaInvestor << endl;
  789.             cout << "Status investor: " << tempInvestor->statusInvestor << endl;
  790.  
  791.  
  792.             addressRelasi QRelasi = tempInvestor->adrConnection;
  793.             while (QRelasi) {
  794.  
  795.  
  796.                 cout << "Seri: " << QRelasi->adrSaham->seri << endl;
  797.                 cout << "Terbilang: " << QRelasi->adrSaham->nominal << endl;
  798.                 cout << "Terbilang: " << QRelasi->adrSaham->terbilang << endl;
  799.  
  800.  
  801.  
  802.                 QRelasi = QRelasi->next;
  803.             }
  804.  
  805.  
  806.  
  807.             break;
  808.         }
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.         tempInvestor = tempInvestor->next;
  816.     }
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.     fflush(stdin);
  824.     getchar();
  825. }
  826.  
  827. void TampilDataInvestorDenganNominalSahamPalingSedikit() {
  828.  
  829.     cout << "Silahkan buat sendiri :) " << endl;
  830.     fflush(stdin);
  831.     getchar();
  832. }
  833.  
  834. void menuTampilData() {
  835.     int pilihan = 0;
  836.     do {
  837.         clrscr();
  838.         cout    << "-----------------------------------------------------------" << endl
  839.                 << "                      Menu Tampil Data                     " << endl
  840.                 << "-----------------------------------------------------------" << endl
  841.                 << "1. Tampil Data Investor Beserta Saham" << endl
  842.                 << "2. Tampil Detail Saham Yang Dimiliki Seorang Investor " << endl
  843.                 << "3. Tampil Detail Investor Yang Memiliki Saham Tertentu " << endl
  844.                 << "4. Tampil Data Investor Dengan Saham Paling Banyak " << endl
  845.                 << "5. Tampil Data Investor Dengan Saham Paling Sedikit " << endl
  846.                 << "6. Tampil Data Investor Dengan Nominal Saham Paling Banyak " << endl
  847.                 << "7. Tampil Data Investor Dengan Nominal Saham Paling Sedikit " << endl
  848.                 << "8. Menu Utama " << endl
  849.                 << "-----------------------------------------------------------" << endl
  850.                 << "Pilihan: "
  851.                 ;
  852.         cin >> pilihan;
  853.  
  854.         switch(pilihan) {
  855.             case 1:
  856.                 tampilDataKoneksi();
  857.                 break;
  858.  
  859.             case 2:
  860.                 TampilDetailSahamYangDimilikiSeorangInvestor();
  861.                 break;
  862.  
  863.             case 3:
  864.                 TampilDetailInvestorYangMemilikiSahamTertentu();
  865.                 break;
  866.  
  867.             case 4:
  868.                 TampilDataInvestorDenganSahamPalingBanyak();
  869.                 break;
  870.  
  871.             case 5:
  872.                 TampilDataInvestorDenganSahamPalingSedikit();
  873.                 break;
  874.  
  875.             case 6:
  876.                 TampilDataInvestorDenganNominalSahamPalingBanyak();
  877.                 break;
  878.  
  879.             case 7:
  880.                 TampilDataInvestorDenganNominalSahamPalingSedikit();
  881.                 break;
  882.  
  883.             case 8:
  884.                 break;
  885.  
  886.             default : {
  887.                 cout << "Menu yang disediakan hanya dari 1 - 8..";
  888.                 fflush(stdin);
  889.                 getchar();
  890.             }
  891.         }
  892.     } while(pilihan != 8);
  893. }
  894.  
  895. int main() {
  896.  
  897.     initState();
  898.     int pilihan = 0;
  899.     do {
  900.         clrscr();
  901.         cout    << "-------------------------------------------" << endl
  902.                 << "         Selamat Datang Di Program         " << endl
  903.                 << "            Managemen Data Saham           " << endl
  904.                 << "-------------------------------------------" << endl
  905.                 << "1. Tambah Data" << endl
  906.                 << "2. Hapus Data" << endl
  907.                 << "3. Tampil Data" << endl
  908.                 << "4. Keluar" << endl
  909.                 << "-------------------------------------------" << endl
  910.                 << "Pilihan: "
  911.                 ;
  912.         cin >> pilihan;
  913.  
  914.         switch(pilihan) {
  915.             case 1:
  916.                 menuTambahData();
  917.                 break;
  918.  
  919.             case 2:
  920.                 menuHapusData();
  921.                 break;
  922.  
  923.             case 3:
  924.                 menuTampilData();
  925.                 break;
  926.  
  927.             case 4:
  928.                 break;
  929.  
  930.             default : {
  931.                 cout << "Menu yang disediakan hanya dari 1 - 4..";
  932.                 fflush(stdin);
  933.                 getchar();
  934.             }
  935.         }
  936.  
  937.     } while(pilihan != 4);
  938.  
  939.     cout << "Tekan sembarang untuk keluar dari program...";
  940.     fflush(stdin);
  941.     getchar();
  942.  
  943.     return 0;
  944. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement