Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <cstdlib>
- #include <vector>
- #include "investor.h"
- #include "saham.h"
- using namespace std;
- listInvestor LI;
- addressInvestor adI;
- listSaham LS;
- addressSaham adrS;
- addressRelasi adR = NULL;
- void initState() {
- createListInvestor(LI);
- createListSaham(LS);
- }
- void clrscr() {
- system("cls");
- }
- void tambahDiAwalInvestor() {
- clrscr();
- cout << "-------------------------------------" << endl
- << " MENU TAMBAH DATA INVESTOR DI AWAL " << endl
- << "-------------------------------------" << endl
- << "Masukkan nama: "
- ;
- fflush(stdin);
- string nama;
- getline(cin, nama);
- cout << "Masukkan status: ";
- fflush(stdin);
- string status;
- getline(cin, status);
- createElementInvestor(adI, nama, status);
- insertFirstInvestor(LI, adI);
- printDataInvestor(LI);
- fflush(stdin);
- getchar();
- }
- void tambahDiAkhirInvestor() {
- string nama;
- clrscr();
- cout << "-------------------------------------" << endl
- << " MENU TAMBAH DATA INVESTOR DI AKHIR " << endl
- << "-------------------------------------" << endl
- << "Masukkan nama: "
- ;
- fflush(stdin);
- getline(cin, nama);
- cout << "Masukkan status: ";
- fflush(stdin);
- string status;
- getline(cin, status);
- createElementInvestor(adI, nama, status);
- insertLastInvestor(LI, adI);
- printDataInvestor(LI);
- fflush(stdin);
- getchar();
- }
- void tambahDiTengahInvestor() {
- clrscr();
- cout << "-----------------------------------------" << endl
- << " MENU TAMBAH DATA INVESTOR DI TENGAH " << endl
- << "----------------------------------------" << endl
- ;
- cout << "Masukkan nama prec: ";
- string namaPrec;
- fflush(stdin);
- getline(cin, namaPrec);
- addressInvestor adrIPrec = findElementInvestor(LI, namaPrec);
- if(adrIPrec == NULL) {
- cout << "Data prec tidak ditemukan";
- fflush(stdin);
- getchar();
- } else {
- cout << "Masukkan nama investor: "
- ;
- fflush(stdin);
- string nama;
- getline(cin, nama);
- cout << "Masukkan status: ";
- fflush(stdin);
- string status;
- getline(cin, status);
- createElementInvestor(adI, nama, status);
- insertAfterInvestor(LI, adrIPrec, adI);
- printDataInvestor(LI);
- }
- }
- void tambahDataInvestor() {
- int pilihan = 0;
- do {
- clrscr();
- cout << "-------------------------------------------" << endl
- << " Menu Tambah Data Investor " << endl
- << "-------------------------------------------" << endl
- << "1. Tambah Di Awal" << endl
- << "2. Tambah Di Akhir" << endl
- << "3. Tambah Di Tengah" << endl
- << "4. Menu Tambah Data" << endl
- << "-------------------------------------------" << endl
- << "Pilihan: "
- ;
- cin >> pilihan;
- switch(pilihan) {
- case 1:
- tambahDiAwalInvestor();
- break;
- case 2:
- tambahDiAkhirInvestor();
- break;
- case 3:
- tambahDiTengahInvestor();
- break;
- case 4:
- break;
- default : {
- cout << "Menu yang disediakan hanya dari 1 - 4..";
- fflush(stdin);
- getchar();
- }
- }
- } while(pilihan != 4);
- }
- void tambahDiAwalSaham() {
- clrscr();
- string Saham;
- cout << "-------------------------------------" << endl
- << " MENU TAMBAH DATA SAHAM DI AWAL " << endl
- << "-------------------------------------" << endl
- << "Masukkan Saham: "
- ;
- fflush(stdin);
- getline(cin, Saham);
- cout << "Masukkan nominal: ";
- int nominal;
- cin >> nominal;
- cout << "Masukkan terbilang: ";
- string terbilang;
- fflush(stdin);
- getline(cin, terbilang);
- createELementSaham(adrS, Saham, nominal, terbilang);
- insertFirstSaham(LS, adrS);
- printDataSaham(LS);
- fflush(stdin);
- getchar();
- }
- void tambahDiAkhirSaham() {
- clrscr();
- string Saham;
- cout << "-------------------------------------" << endl
- << " MENU TAMBAH DATA SAHAM DI AKHIR " << endl
- << "-------------------------------------" << endl
- << "Masukkan Saham: "
- ;
- fflush(stdin);
- getline(cin, Saham);
- cout << "Masukkan nominal: ";
- int nominal;
- cin >> nominal;
- cout << "Masukkan terbilang: ";
- string terbilang;
- fflush(stdin);
- getline(cin, terbilang);
- createELementSaham(adrS, Saham, nominal, terbilang);
- insertLastSaham(LS, adrS);
- printDataSaham(LS);
- fflush(stdin);
- getchar();
- }
- void tambahDataSaham() {
- int pilihan = 0;
- do {
- clrscr();
- cout << "-------------------------------------------" << endl
- << " Menu Tambah Data Saham " << endl
- << "-------------------------------------------" << endl
- << "1. Tambah Di Awal" << endl
- << "2. Tambah Di Akhir" << endl
- << "3. Menu Tambah Data" << endl
- << "-------------------------------------------" << endl
- << "Pilihan: "
- ;
- cin >> pilihan;
- switch(pilihan) {
- case 1:
- tambahDiAwalSaham();
- break;
- case 2:
- tambahDiAkhirSaham();
- break;
- case 3:
- break;
- default : {
- cout << "Menu yang disediakan hanya dari 1 - 3..";
- fflush(stdin);
- getchar();
- }
- }
- } while(pilihan != 3);
- }
- void tampilDataKoneksi() {
- clrscr();
- addressInvestor QInvestor = LI.first;
- cout << "Tampil Data Investor Beserta Saham Yang Dimiliki" << endl;
- cout << "=====================================================" << endl;
- if(QInvestor == NULL) {
- cout << "Data Kosong...";
- fflush(stdin);
- getchar();
- } else {
- while (QInvestor) {
- cout << "Nama : " << QInvestor->namaInvestor << endl
- << "Status : " << QInvestor->statusInvestor << endl
- ;
- addressRelasi QRelasi = QInvestor->adrConnection;
- if(QRelasi == NULL) {
- cout << "Tidak ada Saham yang pernah diikuti oleh " << QInvestor->namaInvestor << endl;
- } else {
- while (QRelasi) {
- cout << "Seri : " << QRelasi->adrSaham->seri << endl
- << "Nominal : " << QRelasi->adrSaham->nominal << endl
- << "Terbilang: " << QRelasi->adrSaham->terbilang << endl
- ;
- QRelasi = QRelasi->next;
- }
- }
- QInvestor = QInvestor->next;
- cout << "=====================================================" << endl << endl ;
- }
- fflush(stdin);
- getchar();
- }
- }
- void tambahRelasi() {
- clrscr();
- cout << "-------------------------------------------" << endl
- << " MENU RELASIKAN INVESTOR DENGAN SAHAM " << endl
- << "-------------------------------------------" << endl
- << "Masukkan nama Investor: ";
- string namaInvestor;
- fflush(stdin);
- getline(cin, namaInvestor);
- adI = findInvestor(LI, namaInvestor);
- if(adI == NULL) {
- cout << "Nama Investor tidak ditemukan...";
- fflush(stdin);
- getchar();
- } else {
- cout << "Masukkan seri: ";
- string seri;
- fflush(stdin);
- getline(cin, seri);
- adrS = findSaham(LS, seri);
- if(adrS == NULL) {
- cout << "Nama Saham tidak ditemukan...";
- fflush(stdin);
- getchar();
- } else {
- addressRelasi newRelasi = NULL;
- createElementRelasi(newRelasi, adrS);
- insertLastRelasi(adI->adrConnection, newRelasi);
- tampilDataKoneksi();
- }
- }
- }
- void menuTambahData() {
- int pilihan = 0;
- do {
- clrscr();
- cout << "-------------------------------------------" << endl
- << " Menu Tambah Data " << endl
- << "-------------------------------------------" << endl
- << "1. Tambah Data Investor" << endl
- << "2. Tambah Data Saham" << endl
- << "3. Tambah Relasi" << endl
- << "4. Menu Utama" << endl
- << "-------------------------------------------" << endl
- << "Pilihan: "
- ;
- cin >> pilihan;
- switch(pilihan) {
- case 1:
- tambahDataInvestor();
- break;
- case 2:
- tambahDataSaham();
- break;
- case 3:
- tambahRelasi();
- break;
- case 4:
- break;
- default : {
- cout << "Menu yang disediakan hanya dari 1 - 4..";
- fflush(stdin);
- getchar();
- }
- }
- } while(pilihan != 4);
- }
- void hapusInvestor() {
- int pilihan = 0;
- do {
- clrscr();
- cout << "-------------------------------------------" << endl
- << " Menu Hapus Data Investor " << endl
- << "-------------------------------------------" << endl
- << "1. Hapus Di Awal" << endl
- << "2. Hapus Di Akhir" << endl
- << "3. Hapus Di Tengah" << endl
- << "4. Menu Hapus Data" << endl
- << "-------------------------------------------" << endl
- << "Pilihan: "
- ;
- cin >> pilihan;
- switch(pilihan) {
- case 1:
- deleteFirstInvestor(LI);
- printDataInvestor(LI);
- break;
- case 2:
- deleteLastInvestor(LI);
- printDataInvestor(LI);
- break;
- case 3:{
- cout << "Masukkan nama prec: ";
- string namaPrec;
- fflush(stdin);
- getline(cin, namaPrec);
- addressInvestor adrIPrec = findElementInvestor(LI, namaPrec);
- if(adrIPrec == NULL) {
- cout << "Prec tidak ditemukan..";
- fflush(stdin);
- getchar();
- } else {
- deleteAfterInvestor(LI, adrIPrec);
- printDataInvestor(LI);
- }
- }break;
- case 4:
- break;
- default: {
- cout << "Menu yang disediakan hanya dari 1 - 4..";
- fflush(stdin);
- getchar();
- }
- }
- } while (pilihan != 4);
- }
- void hapusSaham() {
- int pilihan = 0;
- do {
- clrscr();
- cout << "-------------------------------------------" << endl
- << " Menu Hapus Data Saham " << endl
- << "-------------------------------------------" << endl
- << "1. Hapus Di Awal" << endl
- << "2. Hapus Di Akhir" << endl
- << "3. Menu Hapus Data" << endl
- << "-------------------------------------------" << endl
- << "Pilihan: "
- ;
- cin >> pilihan;
- switch(pilihan) {
- case 1:
- deleteFirstSaham(LS);
- printDataSaham(LS);
- break;
- case 2:
- deleteLastSaham(LS);
- printDataSaham(LS);
- break;
- case 3:
- break;
- default: {
- cout << "Menu yang disediakan hanya dari 1 - 3..";
- fflush(stdin);
- getchar();
- }
- }
- } while (pilihan != 3);
- }
- void menuHapusData() {
- int pilihan = 0;
- do {
- clrscr();
- cout << "-------------------------------------------" << endl
- << " Menu Hapus Data " << endl
- << "-------------------------------------------" << endl
- << "1. Hapus Data Investor" << endl
- << "2. Hapus Data Saham" << endl
- << "3. Menu Utama" << endl
- << "-------------------------------------------" << endl
- << "Pilihan: "
- ;
- cin >> pilihan;
- switch(pilihan) {
- case 1:
- hapusInvestor();
- break;
- case 2:
- hapusSaham();
- break;
- case 3:
- break;
- default : {
- cout << "Menu yang disediakan hanya dari 1 - 3..";
- fflush(stdin);
- getchar();
- }
- }
- } while(pilihan != 3);
- }
- void TampilDetailSahamYangDimilikiSeorangInvestor() {
- clrscr();
- cout << "------------------------" << endl
- << "MENU TAMPIL SAHAM" << endl
- << "------------------------" << endl
- << "Masukkan nama Investor: ";
- string namaInvestor;
- fflush(stdin);
- getline(cin, namaInvestor);
- adI = findInvestor(LI, namaInvestor);
- if(adI == NULL) {
- cout << "Investor yang anda cari tidak ditemukan!" << endl;
- } else {
- system("cls");
- cout << endl << endl << endl;
- cout << "=========================================================" << endl;
- cout << "Menampilkan Saham Yang Dimiliki Oleh " << namaInvestor << endl;
- cout << "=========================================================" << endl;
- addressInvestor QInvestor = LI.first;
- int ketemu = 0;
- while (QInvestor || ketemu == 0) {
- if(QInvestor->namaInvestor == namaInvestor) {
- addressRelasi QRelasi = QInvestor->adrConnection;
- while (QRelasi) {
- cout << "Seri: " << QRelasi->adrSaham->seri << endl
- << "Nominal: " << QRelasi->adrSaham->nominal << endl
- << "Terbilang: " << QRelasi->adrSaham->terbilang << endl
- << "==========" << endl
- ;
- QRelasi = QRelasi->next;
- }
- ketemu++;
- }
- QInvestor = QInvestor->next;
- }
- if(ketemu == 0)
- cout << "Tidak Ada Saham Yang Dimiliki Oleh " << namaInvestor << endl;
- cout << "===========================================================" << endl;
- }
- fflush(stdin);
- getchar();
- }
- void TampilDetailInvestorYangMemilikiSahamTertentu() {
- clrscr();
- cout << "------------------------" << endl
- << " MENU TAMPIL INVESTOR " << endl
- << "------------------------" << endl
- << "Masukkan Seri Saham: "
- ;
- string seri;
- fflush(stdin);
- getline(cin, seri);
- adrS = findSaham(LS, seri);
- if(adrS == NULL) {
- cout << "Saham yang anda cari tidak ditemukan!" << endl;
- } else {
- system("cls");
- cout << endl << endl << endl;
- cout << "================================================================" << endl;
- cout << "Menampilsan Investor Yang Memiliki Saham Dengan Seri " << seri << endl;
- cout << "================================================================" << endl;
- addressInvestor QInvestor = LI.first;
- int ketemu = 0;
- while (QInvestor) {
- addressRelasi QRelasi = QInvestor->adrConnection;
- while (QRelasi) {
- if(QRelasi->adrSaham->seri == seri) {
- cout << "Nama: " << QInvestor->namaInvestor << endl
- << "Status: " << QInvestor->statusInvestor << endl
- ;
- ketemu++;
- goto beres;
- }
- QRelasi = QRelasi->next;
- }
- beres:
- QRelasi = NULL;
- QInvestor = QInvestor->next;
- }
- if(ketemu == 0)
- cout << "Tidak ada Investor Yang Memiliki Saham Dengan Seri " << seri << endl;
- cout << "================================================================" << endl;
- }
- fflush(stdin);
- getchar();
- }
- void TampilDataInvestorDenganSahamPalingBanyak() {
- clrscr();
- cout << "-----------------------------------------------------------" << endl
- << "Menampilkan Saham Yang Mempunyai Investor Paling Banyak" << endl
- << "-----------------------------------------------------------" << endl;
- vector<string> listSeriSaham;
- addressSaham tempSaham = LS.first;
- while(tempSaham) {
- listSeriSaham.push_back(tempSaham->seri);
- tempSaham = tempSaham->next;
- }
- int max = listSeriSaham.size();
- vector<int> banyakSeriSaham;
- for(int i = 0; i < max; i++) {
- banyakSeriSaham.push_back(0);
- }
- addressInvestor QInvestor = LI.first;
- while (QInvestor) {
- addressRelasi QRelasi = QInvestor->adrConnection;
- while (QRelasi) {
- for(int i = 0; i < max; i++) {
- if(QRelasi->adrSaham->seri == listSeriSaham[i]) {
- banyakSeriSaham[i]++;
- }
- }
- QRelasi = QRelasi->next;
- }
- QInvestor = QInvestor->next;
- }
- int terbanyak = 0;
- string seriTerbanyak;
- for(int i = 0; i < max; i++) {
- cout << "Saham " << listSeriSaham[i] << " sebanyak " << banyakSeriSaham[i] << " Investor" << endl;
- if(banyakSeriSaham[i] > terbanyak) {
- terbanyak = banyakSeriSaham[i];
- seriTerbanyak = listSeriSaham[i];
- }
- }
- cout << endl << "Saham terbanyak adalah dengan seri " << seriTerbanyak << " dengan " << terbanyak << " Investor" << endl;
- fflush(stdin);
- getchar();
- }
- void TampilDataInvestorDenganSahamPalingSedikit() {
- clrscr();
- cout << "-----------------------------------------------------------" << endl
- << "Menampilkan Saham Yang Mempunyai Investor Paling Sedikit" << endl
- << "-----------------------------------------------------------" << endl;
- vector<string> listSeriSaham;
- addressSaham tempSaham = LS.first;
- while(tempSaham) {
- listSeriSaham.push_back(tempSaham->seri);
- tempSaham = tempSaham->next;
- }
- int max = listSeriSaham.size();
- vector<int> banyakSeriSaham;
- for(int i = 0; i < max; i++) {
- banyakSeriSaham.push_back(0);
- }
- addressInvestor QInvestor = LI.first;
- while (QInvestor) {
- addressRelasi QRelasi = QInvestor->adrConnection;
- while (QRelasi) {
- for(int i = 0; i < max; i++) {
- if(QRelasi->adrSaham->seri == listSeriSaham[i]) {
- banyakSeriSaham[i]++;
- }
- }
- QRelasi = QRelasi->next;
- }
- QInvestor = QInvestor->next;
- }
- int palingSedikit = banyakSeriSaham[0];
- string seriPalingSedikit;
- for(int i = 0; i < max; i++) {
- cout << "Saham " << listSeriSaham[i] << " sebanyak " << banyakSeriSaham[i] << " Investor" << endl;
- if(banyakSeriSaham[i] > palingSedikit) {
- palingSedikit = banyakSeriSaham[i];
- seriPalingSedikit = listSeriSaham[i];
- }
- }
- cout << endl << "Saham paling sedikit adalah dengan seri " << seriPalingSedikit << " dengan " << palingSedikit << " Investor" << endl;
- fflush(stdin);
- getchar();
- }
- void TampilDataInvestorDenganNominalSahamPalingBanyak() {
- clrscr();
- cout << "-----------------------------------------------------------" << endl
- << "Menampilkan investor dengan nominal saham paling banyak" << endl
- << "-----------------------------------------------------------" << endl;
- vector<string> listInvestor;
- addressInvestor tempInvestor = LI.first;
- while(tempInvestor) {
- listInvestor.push_back(tempInvestor->namaInvestor);
- tempInvestor = tempInvestor->next;
- }
- int max = listInvestor.size();
- vector<int> totalNominalSaham;
- for(int i = 0; i < max; i++) {
- totalNominalSaham.push_back(0);
- }
- addressInvestor QInvestor = LI.first;
- int idx = 0;
- while (QInvestor) {
- addressRelasi QRelasi = QInvestor->adrConnection;
- totalNominalSaham[idx] = 0;
- while (QRelasi) {
- totalNominalSaham[idx] += QRelasi->adrSaham->nominal;
- QRelasi = QRelasi->next;
- }
- idx++;
- QInvestor = QInvestor->next;
- }
- int terbanyak = 0;
- string InvestorTerbanyak;
- for(int i = 0; i < max; i++) {
- if(totalNominalSaham[i] > terbanyak) {
- terbanyak = totalNominalSaham[i];
- InvestorTerbanyak = listInvestor[i];
- }
- }
- cout << endl << "Investor dengan nominal terbanyak adalah " << InvestorTerbanyak << " dengan nominal Rp." << terbanyak << endl;
- cout << "DETAIL: " << endl;
- tempInvestor = LI.first;
- while(tempInvestor) {
- if(tempInvestor->namaInvestor == InvestorTerbanyak) {
- cout << "Nama: " << tempInvestor->namaInvestor << endl;
- cout << "Status investor: " << tempInvestor->statusInvestor << endl;
- addressRelasi QRelasi = tempInvestor->adrConnection;
- while (QRelasi) {
- cout << "Seri: " << QRelasi->adrSaham->seri << endl;
- cout << "Terbilang: " << QRelasi->adrSaham->nominal << endl;
- cout << "Terbilang: " << QRelasi->adrSaham->terbilang << endl;
- QRelasi = QRelasi->next;
- }
- break;
- }
- tempInvestor = tempInvestor->next;
- }
- fflush(stdin);
- getchar();
- }
- void TampilDataInvestorDenganNominalSahamPalingSedikit() {
- cout << "Silahkan buat sendiri :) " << endl;
- fflush(stdin);
- getchar();
- }
- void menuTampilData() {
- int pilihan = 0;
- do {
- clrscr();
- cout << "-----------------------------------------------------------" << endl
- << " Menu Tampil Data " << endl
- << "-----------------------------------------------------------" << endl
- << "1. Tampil Data Investor Beserta Saham" << endl
- << "2. Tampil Detail Saham Yang Dimiliki Seorang Investor " << endl
- << "3. Tampil Detail Investor Yang Memiliki Saham Tertentu " << endl
- << "4. Tampil Data Investor Dengan Saham Paling Banyak " << endl
- << "5. Tampil Data Investor Dengan Saham Paling Sedikit " << endl
- << "6. Tampil Data Investor Dengan Nominal Saham Paling Banyak " << endl
- << "7. Tampil Data Investor Dengan Nominal Saham Paling Sedikit " << endl
- << "8. Menu Utama " << endl
- << "-----------------------------------------------------------" << endl
- << "Pilihan: "
- ;
- cin >> pilihan;
- switch(pilihan) {
- case 1:
- tampilDataKoneksi();
- break;
- case 2:
- TampilDetailSahamYangDimilikiSeorangInvestor();
- break;
- case 3:
- TampilDetailInvestorYangMemilikiSahamTertentu();
- break;
- case 4:
- TampilDataInvestorDenganSahamPalingBanyak();
- break;
- case 5:
- TampilDataInvestorDenganSahamPalingSedikit();
- break;
- case 6:
- TampilDataInvestorDenganNominalSahamPalingBanyak();
- break;
- case 7:
- TampilDataInvestorDenganNominalSahamPalingSedikit();
- break;
- case 8:
- break;
- default : {
- cout << "Menu yang disediakan hanya dari 1 - 8..";
- fflush(stdin);
- getchar();
- }
- }
- } while(pilihan != 8);
- }
- int main() {
- initState();
- int pilihan = 0;
- do {
- clrscr();
- cout << "-------------------------------------------" << endl
- << " Selamat Datang Di Program " << endl
- << " Managemen Data Saham " << endl
- << "-------------------------------------------" << endl
- << "1. Tambah Data" << endl
- << "2. Hapus Data" << endl
- << "3. Tampil Data" << endl
- << "4. Keluar" << endl
- << "-------------------------------------------" << endl
- << "Pilihan: "
- ;
- cin >> pilihan;
- switch(pilihan) {
- case 1:
- menuTambahData();
- break;
- case 2:
- menuHapusData();
- break;
- case 3:
- menuTampilData();
- break;
- case 4:
- break;
- default : {
- cout << "Menu yang disediakan hanya dari 1 - 4..";
- fflush(stdin);
- getchar();
- }
- }
- } while(pilihan != 4);
- cout << "Tekan sembarang untuk keluar dari program...";
- fflush(stdin);
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement