目录
<a name="背景介绍"></a>
背景介绍
题目描述:小明根据报名的人数预定若干球场,每个参加活动的人支付
30元,而小明要想球馆支付总费用。
题目求解:一段时间后,需要计算小明的出纳情况。
按照题目给出的条件,可以得出订场策略如下:
- 记参加一次活动的人数为M
- T为可以立即确定的场地书,其计算公式为
M/6
- 记X为多出来的人数,其计算公式为
M%6
T | X | 订场策略 |
---|---|---|
0 | <4 | 取消活动 |
0 | >=4 | 共订一场 |
1 | <4 | 共订两场 |
2或3 | >=4 | 多订一场 |
>3 | 任意 | 不多订场 |
小明选择的每块场地的收费标准如下:
- 周一到周五
- 9:00~12:00 30元/时
- 12:00~18:00 50元/时
- 18:00~20:00 80元/时
- 20:00~22:00 60元/时
- 周六及周日
- 9:00~12:00 40元/时
- 12:00~18:00 50元/时
- 18:00~22:00 60元/时
输入为字符串,其格式定义为
每一行代表一次活动,其格式为{活动时间 yyyy-MM-dd HH:mm~HH:mm} {人数}
每一行的时间不会有重叠,其时间必然是整小时。
<a name="设计思路"></a>
设计思路
将每次活动得出的结果视为一个对象
DetailSal
,将其封装成为javaBean
根据题目给出的输出格式,可以得出其属性共有,活动时间,具体时刻,活动支出,活动收入,活动净收入根据人数算出需要的场地数
private static int getMatchCount(int peoCount)
,peoCount为参加
本次活动的人数,函数返回值为得到的参加的场次数。条件中给出的为GMT时间,而场馆收费是按照星期制的,所以需要完成转换
private static int dayForWeek(String daytime)
daytime为输入的时间格式,返回值直接对应题目条件在本体中,收费是按照时段收费的,所以需要按照参加活动的时间,进行分段处理。
private static boolean isIntime(String clockArea,int startClock)
是判断开始的时间是否在一个时间范围内,判断完成后按照此段时间的计算公式即可得出最后结果,计算最后收费的函数为private static int getDetailSal(int beginClock,int stopClock,int startClock,int lastClock,int dayForweek)
此函数返回本次活动单场的费用,在getSalary()
函数中与得到的场次数运算,可得出本次活动的最后结果。在函数
public static DetailSal generateSummary(String input)
中完成对于输入格式的检验,如果出错的话,进行错误记录
并完成对象的赋值工作,并在main函数对于结果进行汇总和输出。
<a name="使用说明"></a>
使用说明
<a name="代码导入"></a>
- 代码导入
- 在Eclispe的“Package Explorer”面板中右键,在弹出的快捷菜单中找到“Import”并点击
- 在"Import"窗口中选择要导入的工程类型(本次导入类型为Exist File System),当然也可以使用搜索框进行关键字搜索,快速定位到工程类型
- 选择目标tennis工程所在位置,选定后点击"Finish"
- 正常导入后,会在“Package Explorer”看到你所导入的工程
<a name="运行代码"></a>
- 代码运行
*导入代码以后
<a name="文件结构"></a>
目录结构描述
├── Readme.md // help
├── bin // 二进制文件
│ ├── com
│ ├── test
│ └── UnitType
│
├── src // 代码区域
│ ├── com // 主程序
│ ├── test //单元测试
│ └── UnitType // 对象
├── .classpath //classPath文件
├── .project //project文件
└── tools