入后请输入 0\n\n "
puts "请输入项目 时间(格式:yymmdd,如 20120721,年份需在1980年至2079年之间):"
in_date[j] = gets.to_i
#是否结束输入
if in_date[j] == 0 and $atleast1 == 1
break
end
#年份是否合法
in_year = (in_date[j]-in_date[j]%10000)/10000
if in_year < 1980 or in_year > 2079
_illegal
end
#月份是否合法
in_month = ((in_date[j]%10000)-in_date[j]%100)/100
if in_month < 1 or in_month > 12
_illegal
end
#日期是否合法
in_day = in_date[j]%100
if (in_year%4 == 0 and in_year%100 !=0)or (in_year%400 ==0)
in_month_day = [31,29,31,30,31,30,31,31,30,31,30,31]
else
in_month_day = [31,28,31,30,31,30,31,31,30,31,30,31]
end
if in_day > in_month_day[in_month-1] or in_day == 0
_illegal
end
_soundB
puts "请输入项目 周期:(周期小于45天)"
in_period[j] = gets.to_i
#是否结束输入
if in_period[j] == 0 and $atleast1 == 1
break
end
if in_period[j] <= 0 or in_period[j] > 45
_illegal
end
_soundB
puts "请输入项目 时长:(周期的整数倍)"
in_last[j] = gets.to_i
#是否结束输入
if in_last[j] == 0 and $atleast1 == 1
break
end
#时长不能小于周期
if in_last[j] < in_period[j]
_illegal
end
#时长必须为周期的整数倍
if in_last[j]%in_period[j] != 0
_illegal
end
_soundB
puts "请输入项目 分红:(分红大于0)"
in_bonus[j] = gets.to_f
#是否结束输入
if in_bonus[j] == 0 and $atleast1 == 1
break
end
if in_bonus[j] < 0
_illegal
end
#计算单个项目收益,并存储
Invest.new(in_date[j],in_period[j],in_last[j],in_bonus[j]).run
p_date[j] = $m_date
$atleast1 = 1
j += 1
end
#总收益按时间顺序重排
for i in 2..(j-1)
p_date[1] += p_date[i]
end
$mm_date = p_date[1].sort
#显示收
益情况到屏幕上
i = 0
bonus = 0
puts "计算结果:"
puts " "
puts " 日期 分红"
loop do
date = $mm_date[i][0]
year = (date-date%10000)/10000
month = ((date%10000)-date%100)/100
day = date%100
bonus += $mm_date[i][1]
puts "#{year}-#{month}-#{day}: #{bonus}"
i += 1
if i >= $mm_date.length
break
end
end
Win32::Sound.play("c:/windows/media/tada.wav") #计算结果声效
#对计算结果的处理
_result
end
#=======================================================
# ■计算:数据不合法提示
#=======================================================
def _illegal
system("cls")
puts "输入数据不合法,取消计算!"
_display1
_soundC
_main
end
#=======================================================
# ■计算:计算结果的处理
#=======================================================
def _result
puts "你希望做什么?[1]保存结果[2]重新计算[3]返回菜单[4]退出
系统"
select = gets.to_i
if select == 1
_save
elsif select == 2
_calc
elsif select == 3
system("cls")
_display1
_soundA
_main
elsif select == 4
exit
else
puts "请输入选项对应的正确序号!!"
_soundD
_result
end
end
#=======================================================
# ■计算结果:存储计算结果
#=======================================================
def _save
#新建文件以存储结果
_file_id = 1
loop do
if File.exist?("C:/计算结果#{_file_id}.txt")
_file_id += 1
else
$aFile = File.new("C:\\计算结果#{_file_id}.txt","w")
break
end
end
i = 0
bonus = 0
#将计算结果保存至文件
$aFile.print "日期\t"
$aFile.puts " 分红"
loop do
date = $mm_date[i][0]
year = (date-date%10000)/10000
month = ((date%10000)-date%100)/100
day = date%100
bonus += $mm_date[i][1]
$aFile.print "#{year}-#{month}-#{day}\t"
$aFile.puts "#{bonus}"
i += 1