RAILWAY RESERVATION – SCHEME Programming

THANKS TO SATYA FOR THE CODE – satish.smart@rediffmail.com

;;—————————————————————————————-
;; Database
;;—————————————————————————————-
;; Data definition :
;; (define-struct train(source destination train-no no-of-seats-ac no-of-seats-nonac))
;; train is a structure: (make-train ‘kolkata ‘chennai 1234 24 89)) where source is a symbol, destination is a symbol, train-no is a number, no-of-seats-ac is a number, no-of seats-nonac is a number.

(define-struct train(source destination train-no no-of-seats-ac no-of-seats-nonac))

;; Data definition :
;;(define-struct passenger-id(name age sex class train-no seat-no))
;; passenger-id is a structure: (make-passenger-id ‘azhar 21 ‘m ‘ac 1234 50)) where name is a symbol, age is a number, sex is a symbol, class is a symbol,train-no is a number ,seat-no is a number.
(define-struct passenger-id(name age sex class train-no seat-no))

(define train1(make-train ‘kolkata ‘chennai 1234 24 89))
(define train2(make-train ‘kolkata ‘chennai 1235 24 89))

;(define passenger1(make-passenger-id ‘azhar 20 ‘m ‘ac 1234 88))
;(define passenger2(make-passenger-id ‘azhar 20 ‘m ‘ac 1234 87))

;train_list is list of structure train.
(define train_list(list train1 train2))

;passenger_list is a list of structure passenger list.
(define passenger_list (list ))
;;—————————————————————————————-

(define Userid “Enter administrator id:: “)
(define Password “Enter password:: “)
;; Data definition :
;; (define-struct administrator(admin_id admin_password))
;;where admin_id is a symbol and admin_password is a symbol
;;(define admin (make-administrator ‘mahesh ‘rahul))
(define-struct administrator(admin_id admin_password))

(define admin_list ‘())
;;Contract: me-user : string -> void
;;Purpose: To display a massage and generate a input box to take input.
;;Example: (me-user “Enter a number: “)
;; Enter a number:
(define (me-user admin)

(display admin)
(read))

;;Contract: me-admin : string -> void
;;Purpose: To display a massage and generate a input box to take input.
;;Example: (me-admin “Enter a number: “)
;; Enter a number:
(define (me-admin me)

(display me)
(read))

;;contract:check-login:symbol symbol => boolean
;;purpose:to input the username and password and check whether the user name and password matches or not
;;example (check-login ‘mahesh ‘rahul)
;;=>1
(define (check-login id password)
(set! admin_list (append (list (make-administrator 1234 ‘rahul)) admin_list))
(if (not(eqv? id (administrator-admin_id (car admin_list)))) 0
(if (not(eqv? password (administrator-admin_password(car admin_list)))) 0
1
)))

(load “database.ss”)
(load “fun.ss”)
(load “adminfunc.ss”)
;;(load “prompt.ss”)
;;(load “supportivefunctions.ss”)

;;****************************************************************************************
;; Main Menu
;;****************************************************************************************
;;Contract: main-menu : void -> void
;;Purpose: To display main menu and taking input for the options.
;;Example: (main-menu)
; ****************************************************************************************
; RESERVATION FOR RAILWAYS
; ****************************************************************************************
; MAIN MENU
; ****************************************************************************************
; 1. Admin Menu
; 2. Customer Menu
; 3. Exit
; Enter your Choice:
;;Definition:

(define (main-menu)
(newline)
(display “——————————-”)
(newline)
(display ” RESERVATION FOR RAILWAY “)
(newline)
(display “$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$”)
(newline)
(display ” MAIN MENU “)
(newline)
(display “——————————-”)
(newline)
(display ” 1. Admin Menu “)
(newline)
(display ” 2. Customer Menu “)
(newline)
(display ” 3. Exit “)
(newline)
(let ([choice (choice-read "Enter your Choice: ")])
(cond
[(number? choice)
(cond
[(= choice 1) (admin-menu)]
[(= choice 2) (customer-menu)]
[(= choice 3) (display "BYE BYE")]
[else (display "Entry is Wrong")(newline)(main-menu)]
)
]
[else (display "Enter a proper option...")(newline)(main-menu)]
)
))

;;****************************************************************************************
;; Admin Menu
;;****************************************************************************************
;;Contract: admin-menu : void -> void
;;Purpose: To display menu for the administrator and take input for it
;;Example: (admin-menu)
; ****************************************************************************************
; RESERVATION FOR RAILWAYS
; ****************************************************************************************
; ADMIN MENU
; ****************************************************************************************
; 1. Add new train
; 2. Remove train
; 3. Show updated
; 4. List of passanger in a train
; 5. exit
; Enter your Choice:
;;Definition:
(define (admin-menu)
(let ([id (me-user Userid)] [ps (me-admin Password)] )
(if (= 1 (check-login id ps))
(begin
(newline)
(display “************************************”)
(newline)
(display ” RESERVATION FOR RAILWAYS “)
(newline)
(display “***************************************”)
(newline)
(display ” ADMIN MENU “)
(newline)
(display “——————————-”)
(newline)
(display ” 1. Add new train “)
(newline)
(display ” 2. Remove train “)
(newline)
(display ” 3. Show Train list “)
(newline)
(display ” 4. Produce passenger list “)
(newline)
(display ” 5. exit “)
(newline))
(begin
(display “Enter a valid ID and password”)
(main-menu))))
(newline)
(let ([choice (choice-read "Enter your Choice: ")])
(cond
[(number? choice)
(cond
[(= choice 1) (add-train-details)]
[(= choice 2) (remove-train)]
[(= choice 3) (show-train-list)]
[(= choice 4) (show-passenger-list)]
[(= choice 5) (main-menu)]
[else (display "Wrong entry")(newline)(admin-menu)]
)
]
[else (display "Enter a proper option...")(newline)(admin-menu)]
)
))

;;****************************************************************************************
;; CUSTOMER MENU
;;****************************************************************************************
;;Contract: custome-menu : void -> void
;;Purpose: To display menu for the customer and taking input for the options.
;;Example: (customer-menu)
; ****************************************************************************************
; RESERVATION FOR RAILWAYS
; ****************************************************************************************
; Customer Menu
; ****************************************************************************************
; 1. Check Train Availability
; 2. Check Seat Availibility
; 3. Reservation
; 4. main menu
; Enter your Choice:
;;Definition:
(define (customer-menu)
(newline)
(display “————————————–”)
(newline)
(display ” RESERVATION FOR RAILWAYS “)
(newline)
(display “————————————–”)
(newline)
(display ” CUSTOMER MENU “)
(newline)
(display “————————————–”)
(newline)
(display ” 1. Check Train Availability “)
(newline)
(display ” 2. Check Seat Availibility “)
(newline)
(display ” 3. Reservation “)
(newline)
(display ” 4. Main menu” )
(newline)
(let ([choice (choice-read "Enter your Choice: ")])
(cond
[(number? choice)
(cond
[(= choice 1) (check-train-availability)]
[(= choice 2) (check-seat-availability)]
[(= choice 3) (reservation)]
[(= choice 4) (main-menu)]
[else (display "Wrong Entry..")(newline)(customer-menu)]
)
]
[else (display "Enter a proper option...")(newline)(customer-menu)]
)
))
;;****************************************************************************************
;; Accepting Input Values
;;****************************************************************************************
;;Contract: choice-read : string -> void
;;Purpose: To display a massage and generate a input box to take input.
;;Example: (choice-read “Enter a number: “)
;; Enter a number:
(define (choice-read msg)
(display msg)
(read))

(main-menu)

One Response to “RAILWAY RESERVATION – SCHEME Programming”

  1. sona Says:

    i want cobol jcl source code for airline reservation system project..please send me

Leave a Reply