Ruby编程求助:如何完成含数组、循环、哈希的销售统计程序?
嘿,这是个非常适合巩固Ruby基础的小项目!刚好能把你正在练习的数组、循环、哈希这些知识点完美整合起来,我给你一步步拆解思路,帮你把代码串起来:
第一步:先理清楚数据结构怎么设计
首先,我们需要存储每个销售人员的所有信息——姓名、卖出/未卖出的衬衫和鞋子数量。这里用**哈希(Hash)**来存单个销售的信息最合适,比如:
salesperson = { name: "张三", shirt_sold: 5, shirt_unsold: 2, shoe_sold: 3, shoe_unsold: 1 }
然后用**数组(Array)**来装所有销售人员的哈希,这样后续循环遍历统计就非常方便:
all_salespeople = []
第二步:实现"任意数量"的输入功能
我们可以用一个循环来持续接收用户输入,直到用户表示没有更多销售人员要添加了。比如:
loop do puts "请输入销售人员姓名(输入'结束'停止添加):" name = gets.chomp break if name == "结束" puts "请输入#{name}卖出的衬衫数量:" shirt_sold = gets.chomp.to_i puts "请输入#{name}未卖出的衬衫数量:" shirt_unsold = gets.chomp.to_i puts "请输入#{name}卖出的鞋子数量:" shoe_sold = gets.chomp.to_i puts "请输入#{name}未卖出的鞋子数量:" shoe_unsold = gets.chomp.to_i # 把当前销售的信息存入哈希,再添加到数组里 all_salespeople << { name: name, shirt_sold: shirt_sold, shirt_unsold: shirt_unsold, shoe_sold: shoe_sold, shoe_unsold: shoe_unsold } end
这里用loop配合break来控制输入的结束,非常灵活。
第三步:写一个计算盈利的逻辑
盈利的规则很明确:只有卖出的商品才产生利润,所以:
- 衬衫盈利 = 卖出数量 × 2
- 鞋子盈利 = 卖出数量 × 6
- 总盈利 = 衬衫盈利 + 鞋子盈利
我们可以把这个计算逻辑封装成一个小方法,代码更清晰:
def calculate_profit(salesperson) shirt_profit = salesperson[:shirt_sold] * 2 shoe_profit = salesperson[:shoe_sold] * 6 shirt_profit + shoe_profit end
第四步:遍历数组,输出每位销售的盈利
最后用**循环(each)**遍历存储所有销售信息的数组,调用上面的方法计算盈利并输出:
puts "\n--- 销售盈利统计结果 ---" all_salespeople.each do |person| profit = calculate_profit(person) puts "#{person[:name]}的盈利金额:$#{profit}" end
一些进阶小建议
- 可以加输入验证:比如防止用户输入非数字的数量,比如用
until循环判断输入是否为整数,确保数据合法 - 如果想更面向对象一点,可以定义一个
Salesperson类,把属性和计算盈利的方法封装进去,这也是Ruby中很常用的写法
把这些部分拼起来,就是一个完整的程序啦!你可以先跑通基础版本,再慢慢优化~
内容的提问来源于stack exchange,提问作者N.A
相关产品推荐
相关产品推荐

