class Object

Public Instance Methods

addBook() click to toggle source

Inventory manipulation methods

# File lib/bookstore-1.rb, line 67
def addBook
    puts ">> Adding a new book..."

    print "Enter book name  : "
    name = gets.chomp

    print "Enter book rating: "
    rating = gets.chomp

    if $books.include?(name)
        puts "Already exsits: { '#{name}', #{rating} }"
    else    
        $books[ name.to_s ] = rating.to_i
        puts "Added: { '#{name}', #{rating} }"
    end
    
    puts
end
deleteBook() click to toggle source
# File lib/bookstore-1.rb, line 86
def deleteBook
    puts ">> Deleting an existing book..."
    
    if $books.empty?
        puts ">> Inventory is empty! Nothing to search!"
    else
        print "Enter book name: "
        name = gets.chomp

        if !$books.include?(name)
            puts "'#{name}' does not exist!"
        else    
            $books.delete(name)
            puts "Deleted: { '#{name}' }"
        end
    end
    
    puts
end
displayBooks() click to toggle source
# File lib/bookstore-1.rb, line 125
def displayBooks
    puts ">> Displaying all the books..."
    
    if $books.empty?
        puts ">> Inventory is empty! Nothing to display!"
    else
        puts "TOTAL BOOKS: #{$books.length}"
        $books.each { |name, rating| puts "{ '#{name}': #{rating} }" }
        puts
    end
end
invalidChoice(choice) click to toggle source
# File lib/bookstore-1.rb, line 188
def invalidChoice(choice)
    puts ">> ERORR! Invalid choice! [#{choice}]"
end
loadBooks() click to toggle source
# File lib/bookstore-1.rb, line 137
def loadBooks
    puts ">> Loading existing books from #{$BOOKS_DB_NAME}..."
    
    if !File.exist?($BOOKS_DB_NAME)
        puts "Books database `#{$BOOKS_DB_NAME}` not found! Nothing to load!"        
    else
        puts "Books database '#{$BOOKS_DB_NAME}' found! Loading..."
        
        $books.clear
        
        file = File.open($BOOKS_DB_NAME, "r")
        file.each { |line| 
            book_entry = line.split(",")

            name = book_entry[0]
            rating = book_entry[1].to_i
            
            puts "Loaded: { '#{name}', #{rating} }"
                        
            $books[ name ] = rating
        }
        file.close
    end
    
    puts
end
quit() click to toggle source
# File lib/bookstore-1.rb, line 184
def quit
    puts ">> Quitting... Bye... :)"    
end
saveBooks() click to toggle source
# File lib/bookstore-1.rb, line 164
def saveBooks
    puts ">> Saving current inventory..."
    
    if File.exist?($BOOKS_DB_NAME)
        File.truncate($BOOKS_DB_NAME, 0)
    end
    
    file = File.open($BOOKS_DB_NAME, "w")
    
    $books.each { |name, rating|
        puts "Saved: { '#{name}', #{rating} }"
    
        book_entry = name + "," + rating.to_s
        file.write( book_entry + "\n" )
    }
    file.close
    
    puts
end
searchBooks() click to toggle source
# File lib/bookstore-1.rb, line 106
def searchBooks
    puts ">> Searching existing books..."
    
    if $books.empty?
        puts ">> Inventory is empty! Nothing to search!"
    else
        print "Enter substring to search: "
        substring = gets.chomp
           
        $books.each { |name, rating|
            if name.to_s.include? substring
                puts "Found: { '#{name}', #{rating} }"
            end
        }

        puts
    end
end
showMenuAndPrompt() click to toggle source
# File lib/bookstore-1.rb, line 25
def showMenuAndPrompt
    puts "=================================="
    puts "    Bookstore Inventory System    "
    puts "=================================="
    puts "    (#{$ADD}) : Add a book"
    puts " (#{$DELETE}) : Delete a book"
    puts " (#{$SEARCH}) : Search a book"
    puts "(#{$DISPLAY}) : Display all books"
    puts "   (#{$SAVE}) : Save books information"
    puts "   (#{$QUIT}) : Quit the application"
    puts "=================================="
    print "Enter your choice: "
    
    choice = gets.chomp    
    choice
end
start() click to toggle source
# File lib/bookstore-1.rb, line 42
def start
    puts "Starting..."

    loadBooks

    loop do
        choice = showMenuAndPrompt
        puts

        case choice
        when $ADD     then addBook
        when $DELETE  then deleteBook
        when $SEARCH  then searchBooks
        when $DISPLAY then displayBooks
        when $SAVE    then saveBooks
        when $QUIT    then quit
        else invalidChoice(choice)
        end

        break if choice == $QUIT
    end
end