From e4bc857f1f7edf677c3ffec8021db57043db350d Mon Sep 17 00:00:00 2001 From: Syndamia Date: Fri, 26 Jun 2020 15:01:47 +0300 Subject: Started working on a C++ basic bank account project. You can create an account, deposit and withdraw money from it for now. --- CPP/.codelite/CPP-kamen.tags | Bin 0 -> 323584 bytes CPP/.codelite/CPP.session | 46 +++++++++++ CPP/.codelite/subversion.conf | 5 ++ CPP/.codelite/valgrind.memcheck.supp | 0 CPP/BABS/BABS.mk | 126 +++++++++++++++++++++++++++++++ CPP/BABS/BABS.project | 102 +++++++++++++++++++++++++ CPP/BABS/BankAccount.cpp | 43 +++++++++++ CPP/BABS/BankAccount.h | 19 +++++ CPP/BABS/BankSystem.cpp | 87 +++++++++++++++++++++ CPP/BABS/BankSystem.h | 8 ++ CPP/BABS/compile_flags.txt | 9 +++ CPP/BABS/main.cpp | 35 +++++++++ CPP/CPP.workspace | 14 ++++ CPP/Makefile | 8 ++ CPP/build-Debug/BABS/.d | 1 + CPP/build-Debug/BABS/BankAccount.cpp.o | Bin 0 -> 140112 bytes CPP/build-Debug/BABS/BankAccount.cpp.o.d | 3 + CPP/build-Debug/BABS/BankSystem.cpp.o | Bin 0 -> 167800 bytes CPP/build-Debug/BABS/BankSystem.cpp.o.d | 6 ++ CPP/build-Debug/BABS/ObjectsList.txt | 1 + CPP/build-Debug/BABS/main.cpp.o | Bin 0 -> 38976 bytes CPP/build-Debug/BABS/main.cpp.o.d | 5 ++ CPP/build-Debug/bin/BABS | Bin 0 -> 182592 bytes 23 files changed, 518 insertions(+) create mode 100644 CPP/.codelite/CPP-kamen.tags create mode 100644 CPP/.codelite/CPP.session create mode 100644 CPP/.codelite/subversion.conf create mode 100644 CPP/.codelite/valgrind.memcheck.supp create mode 100644 CPP/BABS/BABS.mk create mode 100644 CPP/BABS/BABS.project create mode 100644 CPP/BABS/BankAccount.cpp create mode 100644 CPP/BABS/BankAccount.h create mode 100644 CPP/BABS/BankSystem.cpp create mode 100644 CPP/BABS/BankSystem.h create mode 100644 CPP/BABS/compile_flags.txt create mode 100644 CPP/BABS/main.cpp create mode 100644 CPP/CPP.workspace create mode 100644 CPP/Makefile create mode 100644 CPP/build-Debug/BABS/.d create mode 100644 CPP/build-Debug/BABS/BankAccount.cpp.o create mode 100644 CPP/build-Debug/BABS/BankAccount.cpp.o.d create mode 100644 CPP/build-Debug/BABS/BankSystem.cpp.o create mode 100644 CPP/build-Debug/BABS/BankSystem.cpp.o.d create mode 100644 CPP/build-Debug/BABS/ObjectsList.txt create mode 100644 CPP/build-Debug/BABS/main.cpp.o create mode 100644 CPP/build-Debug/BABS/main.cpp.o.d create mode 100755 CPP/build-Debug/bin/BABS diff --git a/CPP/.codelite/CPP-kamen.tags b/CPP/.codelite/CPP-kamen.tags new file mode 100644 index 0000000..a99dc39 Binary files /dev/null and b/CPP/.codelite/CPP-kamen.tags differ diff --git a/CPP/.codelite/CPP.session b/CPP/.codelite/CPP.session new file mode 100644 index 0000000..c1bf6d4 --- /dev/null +++ b/CPP/.codelite/CPP.session @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CPP/.codelite/subversion.conf b/CPP/.codelite/subversion.conf new file mode 100644 index 0000000..5fdccfe --- /dev/null +++ b/CPP/.codelite/subversion.conf @@ -0,0 +1,5 @@ +{ + "svn-settings": { + "m_repoPath": "" + } +} \ No newline at end of file diff --git a/CPP/.codelite/valgrind.memcheck.supp b/CPP/.codelite/valgrind.memcheck.supp new file mode 100644 index 0000000..e69de29 diff --git a/CPP/BABS/BABS.mk b/CPP/BABS/BABS.mk new file mode 100644 index 0000000..cbeb34b --- /dev/null +++ b/CPP/BABS/BABS.mk @@ -0,0 +1,126 @@ +## +## Auto Generated makefile by CodeLite IDE +## any manual changes will be erased +## +## Debug +ProjectName :=BABS +ConfigurationName :=Debug +WorkspaceConfiguration := $(ConfigurationName) +WorkspacePath :=/home/kamen/Programming/GitHub-repos/Self-learning/CPP +ProjectPath :=/home/kamen/Programming/GitHub-repos/Self-learning/CPP/BABS +IntermediateDirectory :=../build-$(ConfigurationName)/BABS +OutDir :=../build-$(ConfigurationName)/BABS +CurrentFileName := +CurrentFilePath := +CurrentFileFullPath := +User :=Kamen +Date :=26/06/20 +CodeLitePath :=/home/kamen/.codelite +LinkerName :=/usr/bin/g++ +SharedObjectLinkerName :=/usr/bin/g++ -shared -fPIC +ObjectSuffix :=.o +DependSuffix :=.o.d +PreprocessSuffix :=.i +DebugSwitch :=-g +IncludeSwitch :=-I +LibrarySwitch :=-l +OutputSwitch :=-o +LibraryPathSwitch :=-L +PreprocessorSwitch :=-D +SourceSwitch :=-c +OutputFile :=../build-$(ConfigurationName)/bin/$(ProjectName) +Preprocessors := +ObjectSwitch :=-o +ArchiveOutputSwitch := +PreprocessOnlySwitch :=-E +ObjectsFileList :=$(IntermediateDirectory)/ObjectsList.txt +PCHCompileFlags := +LinkOptions := +IncludePath := $(IncludeSwitch). $(IncludeSwitch). +IncludePCH := +RcIncludePath := +Libs := +ArLibs := +LibPath := $(LibraryPathSwitch). + +## +## Common variables +## AR, CXX, CC, AS, CXXFLAGS and CFLAGS can be overriden using an environment variables +## +AR := /usr/bin/ar rcu +CXX := /usr/bin/g++ +CC := /usr/bin/gcc +CXXFLAGS := -g -O0 -Wall $(Preprocessors) +CFLAGS := -g -O0 -Wall $(Preprocessors) +ASFLAGS := +AS := /usr/bin/as + + +## +## User defined environment variables +## +CodeLiteDir:=/usr/share/codelite +Objects0=../build-$(ConfigurationName)/BABS/main.cpp$(ObjectSuffix) ../build-$(ConfigurationName)/BABS/BankSystem.cpp$(ObjectSuffix) ../build-$(ConfigurationName)/BABS/BankAccount.cpp$(ObjectSuffix) + + + +Objects=$(Objects0) + +## +## Main Build Targets +## +.PHONY: all clean PreBuild PrePreBuild PostBuild MakeIntermediateDirs +all: MakeIntermediateDirs $(OutputFile) + +$(OutputFile): ../build-$(ConfigurationName)/BABS/.d $(Objects) + @mkdir -p "../build-$(ConfigurationName)/BABS" + @echo "" > $(IntermediateDirectory)/.d + @echo $(Objects0) > $(ObjectsFileList) + $(LinkerName) $(OutputSwitch)$(OutputFile) @$(ObjectsFileList) $(LibPath) $(Libs) $(LinkOptions) + +MakeIntermediateDirs: + @mkdir -p "../build-$(ConfigurationName)/BABS" + @mkdir -p ""../build-$(ConfigurationName)/bin"" + +../build-$(ConfigurationName)/BABS/.d: + @mkdir -p "../build-$(ConfigurationName)/BABS" + +PreBuild: + + +## +## Objects +## +../build-$(ConfigurationName)/BABS/main.cpp$(ObjectSuffix): main.cpp ../build-$(ConfigurationName)/BABS/main.cpp$(DependSuffix) + $(CXX) $(IncludePCH) $(SourceSwitch) "/home/kamen/Programming/GitHub-repos/Self-learning/CPP/BABS/main.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/main.cpp$(ObjectSuffix) $(IncludePath) +../build-$(ConfigurationName)/BABS/main.cpp$(DependSuffix): main.cpp + @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT../build-$(ConfigurationName)/BABS/main.cpp$(ObjectSuffix) -MF../build-$(ConfigurationName)/BABS/main.cpp$(DependSuffix) -MM main.cpp + +../build-$(ConfigurationName)/BABS/main.cpp$(PreprocessSuffix): main.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) ../build-$(ConfigurationName)/BABS/main.cpp$(PreprocessSuffix) main.cpp + +../build-$(ConfigurationName)/BABS/BankSystem.cpp$(ObjectSuffix): BankSystem.cpp ../build-$(ConfigurationName)/BABS/BankSystem.cpp$(DependSuffix) + $(CXX) $(IncludePCH) $(SourceSwitch) "/home/kamen/Programming/GitHub-repos/Self-learning/CPP/BABS/BankSystem.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/BankSystem.cpp$(ObjectSuffix) $(IncludePath) +../build-$(ConfigurationName)/BABS/BankSystem.cpp$(DependSuffix): BankSystem.cpp + @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT../build-$(ConfigurationName)/BABS/BankSystem.cpp$(ObjectSuffix) -MF../build-$(ConfigurationName)/BABS/BankSystem.cpp$(DependSuffix) -MM BankSystem.cpp + +../build-$(ConfigurationName)/BABS/BankSystem.cpp$(PreprocessSuffix): BankSystem.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) ../build-$(ConfigurationName)/BABS/BankSystem.cpp$(PreprocessSuffix) BankSystem.cpp + +../build-$(ConfigurationName)/BABS/BankAccount.cpp$(ObjectSuffix): BankAccount.cpp ../build-$(ConfigurationName)/BABS/BankAccount.cpp$(DependSuffix) + $(CXX) $(IncludePCH) $(SourceSwitch) "/home/kamen/Programming/GitHub-repos/Self-learning/CPP/BABS/BankAccount.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/BankAccount.cpp$(ObjectSuffix) $(IncludePath) +../build-$(ConfigurationName)/BABS/BankAccount.cpp$(DependSuffix): BankAccount.cpp + @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT../build-$(ConfigurationName)/BABS/BankAccount.cpp$(ObjectSuffix) -MF../build-$(ConfigurationName)/BABS/BankAccount.cpp$(DependSuffix) -MM BankAccount.cpp + +../build-$(ConfigurationName)/BABS/BankAccount.cpp$(PreprocessSuffix): BankAccount.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) ../build-$(ConfigurationName)/BABS/BankAccount.cpp$(PreprocessSuffix) BankAccount.cpp + + +-include ../build-$(ConfigurationName)/BABS//*$(DependSuffix) +## +## Clean +## +clean: + $(RM) -r $(IntermediateDirectory) + + diff --git a/CPP/BABS/BABS.project b/CPP/BABS/BABS.project new file mode 100644 index 0000000..5ea191d --- /dev/null +++ b/CPP/BABS/BABS.project @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + None + + + + + + + + + + + + + + + + + + + + + + diff --git a/CPP/BABS/BankAccount.cpp b/CPP/BABS/BankAccount.cpp new file mode 100644 index 0000000..180f56c --- /dev/null +++ b/CPP/BABS/BankAccount.cpp @@ -0,0 +1,43 @@ +#include + +#include "BankAccount.h" + +int currId = 0; + +BankAccount::BankAccount() { + id = currId++; + balance = 0; +} + +BankAccount::BankAccount(int initialDeposit) { + id = currId++; + balance = initialDeposit; +} + +int BankAccount::getId() { + return id; +} + +int BankAccount::getBalance() { + return balance; +} + +void BankAccount::deposit(int amount) { + balance += amount; +} + +int BankAccount::withdraw(int amount) { + if (amount > balance) { + return -1; + } + balance -= amount; + return amount; +} + +std::string BankAccount::toString() { + return "ID: " + std::to_string(id) + " Balance: " + std::to_string(balance); +} + +void BankAccount::close() { + closed = true; +} \ No newline at end of file diff --git a/CPP/BABS/BankAccount.h b/CPP/BABS/BankAccount.h new file mode 100644 index 0000000..7e85b47 --- /dev/null +++ b/CPP/BABS/BankAccount.h @@ -0,0 +1,19 @@ +#ifndef TEST_BANKACCOUNT +#define TEST_BANKACCOUNT +#include + +class BankAccount { + int id, balance; + bool closed; + public: + BankAccount(); + BankAccount(int); + int getId(); + int getBalance(); + void deposit(int); + int withdraw(int); + std::string toString(); + void close(); +}; + +#endif \ No newline at end of file diff --git a/CPP/BABS/BankSystem.cpp b/CPP/BABS/BankSystem.cpp new file mode 100644 index 0000000..1493451 --- /dev/null +++ b/CPP/BABS/BankSystem.cpp @@ -0,0 +1,87 @@ +#include +#include + +#include "BankSystem.h" + +using namespace std; + +std::vector BADatabase; + +int getIndexFromID(int id) { + for(int i = 0; i < BADatabase.size(); i++) { + if (BADatabase[i].getId() == id) { + return i; + } + } + return -1; +} + +void listAllAccounts() { + for(BankAccount ba: BADatabase) { + cout << ba.toString() << endl; + } +} + +void openBankAccount() { + cout << "Initial balance: "; + int initBalance; + cin >> initBalance; + + BankAccount newBA(initBalance); + BADatabase.push_back(newBA); + cout << "Created new bank account with ID: " << newBA.getId() << endl; +} + +void closeBankAccount() { + cout << "Bank account ID: "; + int id; + cin >> id; + + cout << "Are you really sure you want to close bank account with ID: " << id << "? [y/n]"; + char answer; + cin >> answer; + + if (answer == 'y' || answer == 'Y') { + BADatabase[getIndexFromID(id)].close(); + } + + cout << "Bank account with ID: " << id << " is closed!" << endl; +} + +void bankerMode() { + while(true) { + cout << "What do you want to do: [0] Exit, [1] List bank accounts, [2] Open bank account, [3] Close bank account" << endl; + + int value; + cin >> value; + + switch(value) { + case 0: return; + case 1: listAllAccounts(); break; + case 2: openBankAccount(); break; + case 3: closeBankAccount(); break; + } + } +} + +void atmMode() { + cout << "Bank accont ID: "; + int userId; + cin >> userId; + cout << endl; + + BankAccount ba = BADatabase[userId]; + while(true) { + cout << "What do you want to do: [0] Exit, [1] View balance, [2] Deposit money, [3] Withdraw money?" << endl; + + int value; + cin >> value; + + switch(value) { + case 0: return; + case 1: cout << ba.getBalance() << endl; break; + case 2: cout << "Amount to deposit: "; cin >> value; ba.deposit(value); break; + case 3: cout << "Amount to withdraw: "; cin >> value; ba.deposit(value); break; + } + } +} \ No newline at end of file diff --git a/CPP/BABS/BankSystem.h b/CPP/BABS/BankSystem.h new file mode 100644 index 0000000..a593a92 --- /dev/null +++ b/CPP/BABS/BankSystem.h @@ -0,0 +1,8 @@ +#ifndef BA-BANK_SYSTEM-BANK_SYSTEM +#define BA-BANK_SYSTEM-BANK_SYSTEM +#include "BankAccount.h" + +void bankerMode(); +void atmMode(); + +#endif \ No newline at end of file diff --git a/CPP/BABS/compile_flags.txt b/CPP/BABS/compile_flags.txt new file mode 100644 index 0000000..8ce13f3 --- /dev/null +++ b/CPP/BABS/compile_flags.txt @@ -0,0 +1,9 @@ +-I/usr/include/c++/7 +-I/usr/include/x86_64-linux-gnu/c++/7 +-I/usr/include/c++/7/backward +-I/usr/lib/gcc/x86_64-linux-gnu/7/include +-I/usr/local/include +-I/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed +-I/usr/include/x86_64-linux-gnu +-I/usr/include +-I/home/kamen/Programming/GitHub-repos/Self-learning/CPP/BABS diff --git a/CPP/BABS/main.cpp b/CPP/BABS/main.cpp new file mode 100644 index 0000000..a9ff61e --- /dev/null +++ b/CPP/BABS/main.cpp @@ -0,0 +1,35 @@ +#include + +#include "BankSystem.h" + +#define MODE_SPACER "------------------------------------------------------------" + +using namespace std; + +int main() +{ + cout << "Welcome to BA banking system!" << endl << endl; + while(true) { + cout << "Mode: Atm/Banker/Exit "; + char inValue; + cin >> inValue; + + if (inValue == 'e' || inValue == 'E') { + return 0; + } + + if (inValue == 'b' || inValue == 'B') { + cout << MODE_SPACER << endl; + bankerMode(); + cout << MODE_SPACER << endl; + } + else { + cout << MODE_SPACER << endl; + atmMode(); + cout << MODE_SPACER << endl; + } + } + cout << "Goodbye!" << endl << endl; + + return 0; +} \ No newline at end of file diff --git a/CPP/CPP.workspace b/CPP/CPP.workspace new file mode 100644 index 0000000..b02559c --- /dev/null +++ b/CPP/CPP.workspace @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/CPP/Makefile b/CPP/Makefile new file mode 100644 index 0000000..4f7fd06 --- /dev/null +++ b/CPP/Makefile @@ -0,0 +1,8 @@ +.PHONY: clean All + +All: + @echo "----------Building project:[ BABS - Debug ]----------" + @cd "BABS" && "$(MAKE)" -f "BABS.mk" +clean: + @echo "----------Cleaning project:[ BABS - Debug ]----------" + @cd "BABS" && "$(MAKE)" -f "BABS.mk" clean diff --git a/CPP/build-Debug/BABS/.d b/CPP/build-Debug/BABS/.d new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/CPP/build-Debug/BABS/.d @@ -0,0 +1 @@ + diff --git a/CPP/build-Debug/BABS/BankAccount.cpp.o b/CPP/build-Debug/BABS/BankAccount.cpp.o new file mode 100644 index 0000000..3c3b01a Binary files /dev/null and b/CPP/build-Debug/BABS/BankAccount.cpp.o differ diff --git a/CPP/build-Debug/BABS/BankAccount.cpp.o.d b/CPP/build-Debug/BABS/BankAccount.cpp.o.d new file mode 100644 index 0000000..a37af18 --- /dev/null +++ b/CPP/build-Debug/BABS/BankAccount.cpp.o.d @@ -0,0 +1,3 @@ +../build-Debug/BABS/BankAccount.cpp.o: BankAccount.cpp BankAccount.h + +BankAccount.h: diff --git a/CPP/build-Debug/BABS/BankSystem.cpp.o b/CPP/build-Debug/BABS/BankSystem.cpp.o new file mode 100644 index 0000000..9a7dc03 Binary files /dev/null and b/CPP/build-Debug/BABS/BankSystem.cpp.o differ diff --git a/CPP/build-Debug/BABS/BankSystem.cpp.o.d b/CPP/build-Debug/BABS/BankSystem.cpp.o.d new file mode 100644 index 0000000..97e857b --- /dev/null +++ b/CPP/build-Debug/BABS/BankSystem.cpp.o.d @@ -0,0 +1,6 @@ +../build-Debug/BABS/BankSystem.cpp.o: BankSystem.cpp BankSystem.h \ + BankAccount.h + +BankSystem.h: + +BankAccount.h: diff --git a/CPP/build-Debug/BABS/ObjectsList.txt b/CPP/build-Debug/BABS/ObjectsList.txt new file mode 100644 index 0000000..0404e94 --- /dev/null +++ b/CPP/build-Debug/BABS/ObjectsList.txt @@ -0,0 +1 @@ +../build-Debug/BABS/main.cpp.o ../build-Debug/BABS/BankSystem.cpp.o ../build-Debug/BABS/BankAccount.cpp.o diff --git a/CPP/build-Debug/BABS/main.cpp.o b/CPP/build-Debug/BABS/main.cpp.o new file mode 100644 index 0000000..76c6cc8 Binary files /dev/null and b/CPP/build-Debug/BABS/main.cpp.o differ diff --git a/CPP/build-Debug/BABS/main.cpp.o.d b/CPP/build-Debug/BABS/main.cpp.o.d new file mode 100644 index 0000000..574b935 --- /dev/null +++ b/CPP/build-Debug/BABS/main.cpp.o.d @@ -0,0 +1,5 @@ +../build-Debug/BABS/main.cpp.o: main.cpp BankSystem.h BankAccount.h + +BankSystem.h: + +BankAccount.h: diff --git a/CPP/build-Debug/bin/BABS b/CPP/build-Debug/bin/BABS new file mode 100755 index 0000000..4fdf7ba Binary files /dev/null and b/CPP/build-Debug/bin/BABS differ -- cgit v1.2.3