ruby

$A="A"
$B="B"
$C="C"
$D="D"
class Employee
  def initialize(empNo,empName,empScore)
    @empNo=empNo
    @empName=empName
    @empScore=empScore
  end


  def empno
    return @empNo
  end


  def empname
    return @empName
  end


  def empscore
    return @empScore
  end


  def getLevel(empScore)
    case @empScore
      when   90..100 then  @level=$A
      when  80...90  then  @level=$B
      when  65...80  then  @level=$C
      else
      @level=$D
    end
  end


    def level
      return @level
    end
end


# 排序过程
def bubble_sort(arr,sortedFlag)
  if sortedFlag == "s"
    puts "你选择了升序"
    1.upto(arr.length-1) do |i|
      (arr.length-i).times do |j|
        if arr[j].empscore>arr[j+1].empscore
          arr[j],arr[j+1] = arr[j+1],arr[j]
        end
      end
    end
  else
    puts "你选择了降序"
    1.upto(arr.length-1) do |i|
      (arr.length-i).times do |j|
        if arr[j].empscore<arr[j+1].empscore
          arr[j],arr[j+1] = arr[j+1],arr[j]
        end
      end
    end
  end
  arr
end




$emps = Array.new
isendFlag = true
while isendFlag
  puts "输入员工工号:"
  empNo = gets()
  puts "输入员工姓名:"
  empName = gets
  puts "输入该员工的成绩(输入0到100之间的数或不能为空):"
  empScore = gets
  empScore = empScore.to_f
  while (empScore < 0 || empScore >100)
    puts "输入该员工的成绩(输入0到100之间的数或不能为空):"
    empScore = gets
    empScore = empScore.to_f
  end
  emp=Employee.new(empNo.chop!,empName.chop!,empScore)
  emp.getLevel(empScore)
  $emps << emp
  puts "是否继续输入员工信息(Y/N):"
  isGoon = gets
  isGoon.chop!
  if isGoon == "N" or isGoon == "n"
    isendFlag = false
  end
end
puts "总共输入#{$emps.size}个员工的信息,详细如下:"
puts "工号  姓名  分数  等级"
$emps.each do |i|
   print "#{i.empno}   #{i.empname}    #{i.empscore}  #{i.level}"
  print "\n"
end


while true
  puts "希望按升序(s)还是降序(j)或退出(exit):"
  sortedFlag = gets
  sortedFlag.chop!
  if sortedFlag == "exit"
    break
  end
  bubble_sort($emps,sortedFlag)
  puts "排序结果:"
  puts "工号  姓名  分数  等级"
  $emps.each do |i|
    print "#{i.empno}   #{i.empname}    #{i.empscore}  #{i.level}"
    print "\n"
  end
end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值