# data[].attributes.body
Banking App

# data[].attributes.attachment_link.readable_text
#!/usr/bin/env python
# coding: utf-8
# In[1]:
from datetime import datetime
import sys

print("Welcome to Nedbank ATM\nWould you like to make a transaction (enter y for yes or n for no)")
date= datetime.now().strftime("%d/%m/%Y %H:%M:%S")
trans_list = open('transaction_file.txt' , "a")
ans = input()

if(ans == "y", "yes"):
     print("Proceeding to transaction...")

else:
    print("Transaction failed\nTake your card" )
    print("******************Enjoy your day******************\n\n")
    sys.exit()

print("Would you like to make a deposit or withdrawal?(enter d for deposit and w for withdrawal)")
option = input()

if (option == "d"):
    print( "How much would you like to deposit?")
    amount = input() 
    with open ("transaction_file.txt", "a") as trans_list:
        trans_list.write("Deposited:R" + str(amount) + "@" + date + "\n\n")
    bal1 = 600
    f_amount = float(amount)
    
    d_amount = bal1 + f_amount
    print("Deposit successful...\nCurrent balance: R", d_amount)
    print("Take your card\n")
    print("******************Enjoy your day******************")

elif (option == "w"):
    print("How much would you like to withdraw?")
    amount1 = input()
    with open ("transaction_file.txt", "a") as trans_list:
        trans_list.write("Withdrew:R" + str(amount1)  + "@" + date + "\n\n")
    bal2 = 600
    float(bal2)
    f_amount1 = float(amount1)
    
    w_amount = bal2 - f_amount1
    if(f_amount1 > bal2):
        print("Insufficient funds\nTake your card")
    
    else:
        print("Withdrawal successful...\nCurrent balance: R", w_amount)
        print("Take your card\n")
        print("******************Enjoy your day******************")
    
# In[ ]:

# In[ ]:

# data[].attributes.attachment_caption
The issues that OUMA is attempting to tackle.

# data[].attributes.body
OUMA App Ad

# data[].attributes.attachment_caption
HTML Game with CSS styling and Java Script Functionality

# data[].attributes.body
https://ouma-run.netlify.app/

# data[].attributes.attachment_caption
Prototype website for visual presentation

# data[].attributes.body
https://ouma-test-deploy.netlify.app/

# data[].attributes.attachment_caption
Updated CSS and Java Script Presentation

# data[].attributes.body
Java Script

# data[].attributes.attachment_caption
Description of potential stakeholders and roles and responsibilities.

# data[].attributes.body
Stakeholder Analysis Table

# data[].attributes.attachment_link.title
310521 - Rhulani Ngobeni - Activity 1 -Stakeholder Analysis 2

# data[].attributes.attachment_caption
Summery of potential Impact by application

# data[].attributes.body
PESTLE Analysis

# data[].attributes.attachment_link.title
010621 - Rhulani Ngobeni - Activity 2 - OUMA PESTLE Analysis

# data[].attributes.attachment_caption
Stakeholder level of engagement and priority.

# data[].attributes.body
Stakeholder Mapping

# data[].attributes.attachment_link.title
310521 - Activity 5 -Rhulani Ngobeni - Stakeholder Mapping-pdf

# data[].attributes.attachment_caption
Description of requirements and type of data to be gathered

# data[].attributes.body
Data gathering

# data[].attributes.attachment_link.title
010621 - Rhulani Ngobeni - Activity 3 - Data and Requirement Gathering

# data[].attributes.body
Project management plan.

# data[].attributes.body
OUMA Concept

# data[].attributes.attachment_link.title
18-06-2021 - OUMA Basic Web Structure Presentation

# data[].attributes.body
HTML and CSS

# data[].attributes.attachment_link.title
Rhulani Ngobeni - OUMA Website HTML and CSS

# data[].attributes.body
OUMA Design

# data[].attributes.attachment_caption
App for estimating investment gains and bond payment 

# data[].attributes.body
Interest Calculations

# data[].attributes.attachment_link.readable_text

# Online Python - IDE, Editor, Compiler, Interpreter


import math

print("Choose either 'investment' or 'bond' from the menu below to proceeed:"
+ "\n" + "\n" + "investment  - to calculate the amount of interest you'll earn on interest" + 
"\n" + "bond  - to calculate the amount you'll have to pay on a home loan")
calType = input()
#calculating the future value of an investment
if calType.lower() == "i" or calType.lower() == "investment":
      print("Enter the deposit amount:")
      deposit = input()
      print("Enter the interest rate:")
      interest = input()
      print("Enter the number of years:")
      years = input()
    #   if type(deposit) == int and type(interest) == int and type(years) == int:
      print("Would you like to use simple or compound interest?") 
      interestType = input()
      if interestType.lower() == "s" or interestType.lower() == "simple":
         interestCon = float(interest)/100
         simpleFV = float(deposit) * (1 + (float(interestCon)*float(years)))
         print("The amount that you will get after " + str(years) + 
        " years at " + str(interest) + "% " + "is: " + "R" + str(round(simpleFV,2)))
      elif interestType.lower() == "c" or interestType.lower() == "compound":
            interestCon = float(interest)/100
            compoundFV = float(deposit) * math.pow((1+float(interestCon)),float(years))
            print("The amount that you will get after " + str(years) + 
        " years at " + str(interest) + "% " + "is: " + "R" + str(round(compoundFV,2)))
   

#calculating the monthly payment for a bond
elif calType.lower() == "b" or calType.lower() == "bond":
      print("Enter the present value of the house:")
      deposit = input()
      print("Enter the interest rate:")
      interest = input()
      print("Enter the number of months:")
      months = input()
    #if type(deposit) == int and type(interest) == int and type(months) == int:
      interestBond = float(interest)/12
      repayment =  (float(interestBond)*float(deposit))/(1 - math.pow((1+interestBond),(-float(months))))
      eachMonth = float(repayment)/12
      print("The monthly payment after " + str(months) + " months at " + str(interest) + "% " + 
      "will be: " + "R" + str(round(eachMonth,2)))
else:
      print("Choose either 'investment' or 'bond'!")




    
    

# data[].attributes.body
Password Generator

# data[].attributes.attachment_link.readable_text
import random
import array
import string

print('Hi! Welcome to Password Generator.')

length = 12

lower = string.ascii_lowercase
upper = string.ascii_uppercase
num = string.digits
symbol = string.punctuation

combined_list = lower + upper + num + symbol

random_lower = random.choice(lower)
random_upper = random.choice(upper)
random_num = random.choice(num)
random_symbol = random.choice(symbol)

temp = random_lower + random_upper + random_num + random_symbol

for x in range(int(length / 4)):
    temp = temp + random.choice(combined_list)
    temp_list = array.array('u', temp)
    random.shuffle(temp_list)

password = ""
for x in temp_list:
    password = password + x

print(password)

# data[].attributes.body
https://github.com/unaPeace/Simple-Banking-GUI-App

# data[].attributes.body
Click Counter

# data[].attributes.attachment_link.readable_text
from tkinter import *

class Application(Frame):
    def __init__(self, master):
        super(Application, self).__init__(master)
        self.grid()
        self.bttn_clicks = 0
        self.create_widget()

    def create_widget(self):
        self.bttn = Button(self)
        self.bttn['text'] = "Total Clicks : 0"
        self.bttn['command'] = self.update_count
        self.bttn.grid()

    def update_count(self):
        self.bttn_clicks +=1
        self.bttn['text'] = "Total Clicks:" + str(self.bttn_clicks)

root = Tk()
root.title("Click Counter")
root.geometry("200x50")

app = Application(root)

root.mainloop()

# data[].attributes.attachment_link.title
Rhulani Ngobeni - Week 1 Sprint - Counter

# data[].attributes.body
GUI Calculator

# data[].attributes.attachment_link.readable_text
from tkinter import *
import tkinter

root = tkinter.Tk()
root.title('Simple Calculator')

expression = ""

def add(value):
    global expression
    expression += value
    label_result.config(text = expression)

def clear():
    global expression
    expression = ""
    label_result.config(text = expression)

def calculate():
    global expression
    result = ""
    if expression != "":
        try:
            result = eval(expression)
            label_result.config(text = result)
            expression = str(result)
        except:
            result = "error"
            expression = ""
    label_result.config(text = result)
    
    

label_result = tkinter.Label(root, text ='')
label_result.grid(row = 0, column = 0, columnspan = 4)

button_1 = tkinter.Button(root, text = "1", command = lambda: add("1"))
button_1.grid(row = 1, column = 0)
button_2 = tkinter.Button(root, text = "2", command = lambda: add("2"))
button_2.grid(row = 1, column = 1)
button_3 = tkinter.Button(root, text = "3", command = lambda: add("3"))
button_3.grid(row = 1, column = 2)
button_devide = tkinter.Button(root, text = "/", command = lambda: add("/"))
button_devide.grid(row = 1, column = 3)

button_4 = tkinter.Button(root, text = "4", command = lambda: add("4"))
button_4.grid(row = 2, column = 0)
button_5 = tkinter.Button(root, text = "5", command = lambda: add("5"))
button_5.grid(row = 2, column = 1)
button_6 = tkinter.Button(root, text = "6", command = lambda: add("6"))
button_6.grid(row = 2, column = 2)
button_multiply = tkinter.Button(root, text = "*", command = lambda: add("*"))
button_multiply.grid(row = 2, column = 3)

button_7 = tkinter.Button(root, text = "7", command = lambda: add("7"))
button_7.grid(row = 3, column = 0)
button_8 = tkinter.Button(root, text = "8", command = lambda: add("8"))
button_8.grid(row = 3, column = 1)
button_9 = tkinter.Button(root, text = "9", command = lambda: add("9"))
button_9.grid(row = 3, column = 2)
button_subtract = tkinter.Button(root, text = "-", command = lambda: add("-"))
button_subtract.grid(row = 3, column = 3)

button_clear = tkinter.Button(root, text = "C", command = lambda: clear())
button_clear.grid(row = 4, column = 0)
button_0 = tkinter.Button(root, text = "0", command = lambda: add("0"))
button_0.grid(row = 4, column = 1)
button_dot = tkinter.Button(root, text = ".", command = lambda: add("."))
button_dot.grid(row = 4, column = 2)
button_add = tkinter.Button(root, text = "+", command = lambda: add("+"))
button_add.grid(row = 4, column = 3)

button_equalTo = tkinter.Button(root, text = "=", width = 16, command = lambda: calculate())
button_equalTo.grid(row = 5, column = 0, columnspan = 4)




root.mainloop()

# data[].attributes.attachment_link.title
Rhulani Ngobeni - Week 2 Sprint - GUI Calculator

# data[].attributes.body
https://space-defender-2021.netlify.app/

# data[].attributes.body
Digital Marketing Portfolio

# data[].attributes.attachment_link.readable_text
OUTSOURCE YOUR WORK TO US

OUR SERVICES

Architectural Drafting

3D Print & Laser Cut Model Building

3D Visualisation
& Presentations

Web & App Development

Branding & Billboard Design

Let us do the hard work

# data[].attributes.attachment_link.description
Innovative design solution and intriguing presentations by a team of talented artists and programmers.

# data[].attributes.body
Signage and Digital Marketing Company | Full Stack Development Project

# data[].attributes.attachment_link.description
Our innovative approach to your needs ensures that you get tailored and focused solutions to your client's needs. We would like to partner with your company on your branding and marketing initiatives, to build a lasting relationship based on trust and excellence.

# data[].attributes.body
Dance Training Company (Non-Profit) | Full Stack Development Project (Angular and Firebase)