Classes, Objects, and Variables(Chapter 3 of Programming Ruby)

本文介绍了一个用Ruby实现的图书库存管理系统,包括定义BookInStock类,读取CSV文件中的图书数据,以及计算库存总价值的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ExpandedBlockStart.gifclass
 1 class BookInStock
 2   attr_reader :isbn
 3   attr_accessor :price
 4   def initialize(isbn, price)
 5     @isbn = isbn
 6     @price = Float(price)
 7   end
 8   
 9   def to_s()
10     "ISBN: #{@isbn}, Price: #{@price}"
11   end
12 end
13 
14 b1 = BookInStock.new("aa"3)
15 p b1
16 b2 = BookInStock.new("bb"2.3)
17 p b2
18 b3 = BookInStock.new("cc""5.67")
19 puts b3
20 puts "ISBN: #{b1.isbn}"

 

book_in_stock.rb

1 class BookInStock
2   attr_reader :isbn, :price
3   def initialize(isbn, price)
4     @isbn = isbn
5     @price = Float(price)
6   end
7 end

 

 

csv_reader.rb

ExpandedBlockStart.gifcsv_reader.rb
 1 require 'csv'
 2 require_relative 'book_in_stock'
 3 class CsvReader
 4   def initialize
 5     @books_in_stock = []
 6   end
 7   def read_in_csv_data(csv_file_name)
 8     CSV.foreach(csv_file_name, headers: true) do |row|
 9       @books_in_stock << BookInStock.new(row["ISBN"], row["Amount"])
10     end
11   end
12   def total_value_in_stock
13     sum = 0.0
14     @books_in_stock.each {|book| sum += book.price}
15     sum
16   end
17   def number_of_each_isbn
18     # ...
19   end
20 end

 

stock_stats.rb

require_relative 'csv_reader'
reader 
= CsvReader.new
ARGV.each do 
|csv_file_name|
  STDERR.puts 
"Processing #{csv_file_name}"
  reader.read_in_csv_data(csv_file_name)
end
puts 
"Total value = #{reader.total_value_in_stock}"


1 ruby stock_stats.rb test.csv
2 
3 Processing test.csv
4 Total value = 122.07

 


转载于:https://www.cnblogs.com/zhtf2014/archive/2010/06/27/1766219.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值