-
Notifications
You must be signed in to change notification settings - Fork 0
/
simple_program.rb
96 lines (76 loc) · 1.63 KB
/
simple_program.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
class Library
@@accounts = []
@@books = []
def initialize(titles)
titles.each do |title|
@@books << Book.new(title)
end
end
def Library.add_account(username)
@@accounts << Account.new(username)
end
def Library.add_book(title)
@@books << Book.new(title)
end
def Library.show_all_books
@@books.each do |book|
puts book.title
end
end
def Library.show_account_status(username)
my_books = login(username).books
puts username + " borrowed: "
if my_books.size == 0
puts '0'
else
my_books.each do |book|
puts book.title
end
end
end
def Library.show_all_accounts
@@accounts.each do |account|
puts account.username
end
end
def Library.login(username)
@@accounts.detect { |account| account.username == username }
end
class Account
attr_accessor :username, :books
def initialize(username)
@username = username
@books = []
end
def borrowing_book(titles)
titles.each do |title|
@books << Book.new(title)
end
end
def returning_book(titles)
titles.each do |title|
book = @books.detect{ |book| book.title == title}
@books.delete(book)
end
end
end
class Book
attr_accessor :title
def initialize(title)
@title = title
end
end
end
books = ['history', 'math', 'technology', 'painting']
Library.new(books)
Library.add_book('networking')
Library.show_all_books
Library.add_account('luong')
Library.show_account_status('luong')
luong = Library.login('luong')
books = ['history', 'technology']
luong.borrowing_book(books)
Library.show_account_status('luong')
books = ['technology']
luong.returning_book(books)
Library.show_account_status('luong')