哭求来了,帮帮忙。。。。

关于计费系统里的计费模块,初接触这块,感觉太陌生了,弄了一个多星期,硬是搞不好,跪求来了,各位大师傅们教教我吧:

数据库已经存在“用户通话清单表”:
主要属性:

通话开始时间(Date)
通话结束时间(Date)
通话类型
通话时长(int秒)

还有另外两个已手工输入静态数据的表

“计费方法表”(重要字段):
计费方法编号
通话类型
生效开始时间(Date) (记录当前计费方法的生效开始时间)
生效结束时间(Date) (记录当前计费方法的失效时间;要求大于生效开始时间;如果要定义22:00开始到次日8:00结束的时段优惠,定义22:00~24:00和00:00~8:00两条记录)
日期限制(char) (时段优惠时,日期无效,节假日优惠时,完整日期和时间都有效)0表示无日期限制,可以用于定义时段优惠,例如可以定义每天晚上22:00开始到24:00结束的优惠时段
1表示有日期限制,用于定义节假日优惠)

“计费细则表”(重要字段):

方法编号(与上表关联)
阶段号
方法编号(跟上表关联)
阶段时间
阶段单位
阶段话费

以上数据库表字段不合理之处,可以更改。

举例:
计费方法表里有很多方法,通话类型(长途,短途,区间电话???)和生效开始时间和结束时间,就可确定一个方法,目前只用支持时段优惠(比如晚间10到早上8点,这个时段短途电话的方法编号假设为1,长途通话方法编号为2、、、、、、)跟节日优惠(比如10月1日0:0:0到10月7日0:0:0,计费方法不同,短途假设编号为3,长途假设编号为4、、、、、、)

计费方法支持分阶段,计费阶段从1开始,用于计算分时段计费的话费。例如2009年节假日优惠中规定单次长途时长前5分钟内每分钟0.2元,后2分钟,没分钟0.3元,再后4分钟,每4分钟0.7元,最后时间不限,每分钟0.3元
可描述如下:
即:
阶段1,阶段时间300秒,单位60秒,话费(即每个单位0.2元)
阶段2, 阶段时间120秒,单位60秒,话费0.3元
计费阶段3的计费时间为240秒,计费单位为240秒,话费为固定0.7元;
计费阶段4的计费时间时间不限,为-1,计费单位为60秒,话费为0.3元;

用户可能跨优惠区打,比如从9月30日晚间9点到10月1日1点,就涉及3个计费时段,感觉头痛,

我如何根据每条通话清单来计算 通话产生的费用呢???
给个简单的算法,最好是写出while,if等java语句大致框架:跪求感激不尽!



[该贴被admin于2009-03-23 16:03修改过]

需要先OO建模分析吧,使用状态图 活动图将业务流程进行归类,分析完成后,再在具体设计代码时考虑引入算法。

这个绝对不是算法过程,而是业务,仔细的分析业务先