(define (make-accumilator val)
(lambda (x)
(begin
(set! val (+ val x))
val
)
)
)
;#######----------Banking System----------##########;
;Procedure Usage Counter....
(define (make-monitered f)
(define ctr 0)
(define (increment)
(set! ctr (+ ctr 1))
)
(define (reset)
(set! ctr 0)
)
(define (mf arg)
(cond ((eq? arg 'how-many-calls?) ctr)
((eq? arg 'reset-count) (reset) )
(else (begin (increment) (f arg)))
)
)
mf)
;Password protected banking system...
(define (make-account password balance)
(define ctr 0)
(define (display-account-blkd x) "Account Blocked")
(define (display-wrong-passwd x) "Wrong Password")
(define (withdraw amount)
(if (>= balance amount)
(begin
(set! balance (- balance amount))
balance
)
(display "Sufficient balane not in the account...")
)
)
(define (deposit amount)
(begin
(set! balance (+ balance amount))
balance
)
)
(define (main passwd transaction)
(if (>= ctr 5)
display-account-blkd
(if (eq? passwd password)
(begin
(set! ctr 0)
(cond ((eq? transaction 'deposit) deposit )
((eq? transaction 'withdraw) withdraw )
(else (lambda (x) "Invalid Choice"))
)
)
(begin
(set! ctr (+ ctr 1))
display-wrong-passwd
)
)
)
)
main);End of body of let...
Wednesday, February 22, 2012
A Simple Banking System in Scheme(Example for Modularity)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment