2022年移动计费系统 .pdf
《2022年移动计费系统 .pdf》由会员分享,可在线阅读,更多相关《2022年移动计费系统 .pdf(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、前面的两篇博文写到:有两名同学出去面试,招聘单位分别给他们两个小项目拿回家做,三天内做出来即可给到7k 以上的月薪, 我都帮他们做了,详情参看 交通灯管理系统和银行业务调度系统的介绍。不久,又有一名学员给我打电话,让我帮他做一道类似的题目,不过,这次项目变成了 “移动用户资费统计系统” ,再细问,知道这次的招聘公司不是软通动力了,而是联想利泰,这两家公司提供的word 文档格式都完全一样,我奇怪现在的软件公司怎么都学会用这招来考核求职者了, 我真怀疑这些题目出自同一人之手,难道是软通动力的技术经理跳槽到联想利泰啦?他的这招面试手法确实够高!我看到 “移动用户资费统计系统”的需求文档后, 发现这
2、个系统的业务比交通灯管理系统和银行业务调度系统的业务都要复杂得多,一时间真不知道该从哪里着手,只能回复那名学员:“这个项目题好像不是一两天就能搞定的事情,我努力做做, 别抱太大希望” 。如果说 “交通灯管理系统”或“银行业务调度系统”做出来就可以拿到7k 月薪的工资的话,我认为这个“移动用户资费统计系统”做出来的话,起码应该可以拿到1w 以上的月薪。我按照“移动用户资费统计系统”的需求文档认认真真地做了两天,体力透支很大,加之十几年的编程生涯, 我一直处于亚健康状态,这个“移动用户资费统计系统”终究成了压倒骆驼的最后一根稻草,我累得病倒了! 等到身体康复后,我不甘心事情只做了一半就放弃了,接着
3、又花了两天的时间,总算把这个项目题给做完了,结果又再次累病倒了。后来又有好几名去联想利泰面试的学员拿着这个移动用户资费统计系统找我, 我每次都把源代码给了这些学员,并讲解清楚了其中的代码结构,后来问这些学员,他们一个也没被录取, 他们一致认为该公司可能只是想找个人来向他们讲解如何实现此系统的代码,看来着实枉费了我一番心机和功夫!最近, 又接到多名学员的反馈,除了联想利泰,美国阿格雅技术有限公司也在使用此题目考核面试者,这个题目虽然没有华丽的外表,但它确实是一个有技术含量的项目,绝非是一个普普通通的程序员容易做出来的东西!这道题目是在解决实实在在的复杂业务问题,其中涵盖了技术含量极高的编程技巧和
4、设计手法,这才是真正做高级项目所要学习的知识,对于广大程序员来说,它是一个不错的案例,不同于那种只是大量重复性工作的增删改查项目。特别说明:由于电信和银行实际环境的复杂性和产品一旦上线运行后对错误的容忍度几乎为 0,电信和银行的项目在做完后都不能直接上线测试运行,而是要通过编写非常完全和严格的模拟程序来进行测试,确保万无一失后再实际上线运行,所以, 为电信和银行项目编写模拟程序和比对检查程序运行的结果就非常重要了。虽然我写完了 移动用户资费统计系统的代码, 但不能保证最终的运行结果就没有错误,这需要仔细分析和比对运行结果才能发现问题,由于移动用户资费统计系统的业务逻辑实在有点复杂,仅凭我个人之
5、力,实在难以比对出每个细节,为此,我专门编写了测试用例编写指导书和比对检验指导书,供感兴趣的网友参考。如果有哪位网友发现我写的程序统计出来的结果有问题,请来信详细告知,我将不胜感激。下面是”移动用户资费统计系统“的需求:移动用户资费统计系统原始需求文档下载讲座 ppt 下载讲座源码下载讲座视频下载(待补充 ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 47 页 - - - - - - - - - 模拟实现简易的移动用户资费统计系统逻辑,具体需求如下:移动运营商A 设
6、置两种类型的用户:普通用户及VIP 用户,现该运营商已有5 个 VIP 用户和 15 个普通用户,共计20 个用户。普通用户资费标准如下(不考虑漫游和长途):【基准资费】无月租费用。通话费: 0.6 元/ 分钟(仅拨打收费,接听免费)短信费: 0.1 元/ 条数据费: 5 元/ M 【优惠套餐】话费套餐:月功能费20 元,最多可拨打60 分钟电话,超出时间按照0.5 元/分钟计费。短信套餐:月功能费10 元,最多可发送200 条短信,超出条数按照0.1 元/条计费。数据套餐:月功能费20 元,最多可获50M 的流量,超出流量按照3 元/M 计费。注:用户可以选择多种套餐,各功能(通话、短信、数
7、据)计费时,如已选择对应套餐,则按套餐标准计费;如未选择对应套餐,则按对应的基准资费计费。VIP 用户资费标准如下(不考虑漫游和长途):【基准资费】月租费用:按天收取,2 元/ 天通话费: 0.4 元/ 分钟(仅拨打收费,接听免费)短信费: 0.1 元/ 条数据费: 3 元/ M 【优惠套餐】套餐 1 :月基本费用100 元(无月租费用) ,提供如下服务:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 47 页 - - - - - - - - - 最多可拨打750分钟电话
8、,超出部分按照0.3 元/ 分钟计费。最多可发送200条短信,超出条数按照0.1 元/ 条计费。最多可获得100M 数据流量,超出流量按照1 元/ M 计费。套餐 2 :月基本费用200 元(无月租费用) ,提供如下服务:最多可拨打2000 分钟电话,超出部分按照0.2 元/ 分钟计费。最多可发送500条短信,超出条数按照0.1 元/ 条计费。最多可获得300M 数据流量,超出流量按照0.5 元/ M 计费。注:用户最多只能选择一种套餐,如未选择任何套餐,则按照基准资费计费。各类型用户只能选择提供给本类型用户的套餐。新用户入网。对于新入网的普通用户,入网当月赠送如下服务:免费拨打60 分钟电话
9、,免费发送200 条短信,免费获得50M 流量。超出赠送的部分按照普通用户基准资费进行计费。对于新入网的VIP 用户,入网当月赠送如下服务:免费拨打200 分钟电话,免费发送200 条短信,免费获得100M 数据流量。超出赠送的部分按照VIP 用户基准资费进行计费(注意:需按入网天数计算月租费用)。每月为用户计算一次账单,用户订制的套餐信息和账单信息采用文件方式进行存储(提示:可使用 java 中的 Properties API 进行文件操作) 。用户可自由订制或退订所属用户类型的套餐,并从下月起生效。异步随机生成客户操作如下:拨打电话,每次拨打时长为1 至 10 分钟不等(随机决定,以分钟为
10、单位)。发送短信,每次发送条数为1 至 10 条不等(随机决定) 。上网获取数据,每次获取数据流量可为50K,100K,200K,500K,1M (随机决定) 。订制或退订相应套餐。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 47 页 - - - - - - - - - 新用户入网(随机决定用户类型)。注:随机生成客户操作时间间隔自定,可设置。不要求实现GUI,只考虑系统逻辑实现,可通过Log 方式展现程序运行结果。解题思路数据分析与统一计算公式:分析本系统的业务,可
11、以看到普通用户和VIP 用户在订购套餐的方式以及月底计算账单的公式上都有很大的不同:(1)普通用户没有月租费和月基本费、而VIP 用户有月租费或月基本费。(2)普通用户是单独订购电话、短信和数据套餐,每项套餐单独收取月功能费;VIP 用户不能单独订购电话、短信和数据套餐,VIP 用户订购的套餐中同时包含了电话、短信和数据等服务功能。我们可以为普通用户和VIP 用户分别设计出一个月底计算账单的公式,但是,为了简化编程,我们也可以为两种不同用户设计出一个统一的月底计算账单的公式,这就好比 “大象有尾巴, 而蚂蚁没有尾巴,大象没有触角, 而蚂蚁则有触角,能否用同一个累加所有器官的公式来计算蚂蚁和大象
12、的体重呢?当然可以,这时候只需要假设蚂蚁也有尾巴,只是蚂蚁的尾巴重量为0,假设大象也有触角,只是大象触角的重量为0,这样,就可以用同一种累加所有器官的公式来计算蚂蚁和大象的体重了。”我们可以采用如下方式来统一各类用户在各种情况下的费用计算公式:(1) 月基本费或月租费:月基本费方式为固定值,月租费方式为当月总天数*每天费用或者(当月总天数-入网日 +1)*每天费用,只有vip 用户才存在此项费用,但是为了统一计算公式,可以认为普通用户也有此项费用,值为0。(2) 电话收费时长:等于(电话时长 -免费时长 ),计算后的值小于0 则记为0,免费时长又分为两类:新入网的免费和套餐中的免费,新入网的免
13、费在用户对象中处理,套餐中的免费封装在套餐策略对象中处理。(3) 电话、短信、数据套餐月功能费:只有普通用户定了套餐才有此项费用,但是为了统一计算公式,可以认为没定此功能套餐的普通用户和vip 用户也有此项费用,值为 0。(4) 月电话费用 =电话套餐月功能费+单位计费价格 *电话收费时长(5) 按月电话费用的相同规则计算月短信费用和月数据费用(6) 月总计费用 =月基本费或月租费+ 月电话费用+ 月短信费用+ 月数据费用我们可以用如下一幅“月账单费用的组成成分”图来直观地理解上面的计算公式:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -
14、- - - 名师精心整理 - - - - - - - 第 4 页,共 47 页 - - - - - - - - - 采用一种便于程序代码读取的格式在配置文件中存储各项数据刚开始猛然看到这么多数据项,肯定会感觉纷繁杂乱,理不出头绪来, 但是, 不管这些数据项有多么多, 归结起来, 不就是某个用户要使用自己的某种数据吗?只是不同的用户有不同的数据罢了, 每个用户只需要关心和使用自己的数据、而不用关心其他用户的数据就显得简单多了, 因此可以写一个类来专门读取用户的数据,在配置文件中存储的各项数据应想办法采用一种便于该类读取的格式。(1) 要存储的数据项有:功能单价费用、功能套餐免费数量、功能套餐月费
15、用、新入网免费数量、整体月基本费或月租费。(2)一些数据还要随以下类型进行区分:用户类型、套餐类型、功能类型。(3)在配置文件中通过用点(.)对数据项名称进行分级的方式来区分各个数据项所属的类别和功能,如下所示:common.normal.phone.price - 表示普通用户 /非套餐 /电话 /单价common.pack1.phone.price - 表示普通用户 /套餐 /电话 /单价common.pack1.phone.free - 表示普通用户/套餐 /电话 /免费数量common.pack1.phone.rent ? 表示普通用户 /套餐 /电话 /套餐月功能费用vip.norm
16、al.phone.price - 表示 VIP 用户 /非套餐 /电话 /单价vip.pack1.phone.price - 表示 VIP 用户 /套餐 1/电话 /单价vip.pack2.phone.price - 表示 VIP 用户 /套餐 2/电话 /单价common.new.phone.free - 表示普通用户 /新开户 /电话/免费数量vip.new.phone.free - 表示 VIP 用户 /新开户 /电话 /免费数量(4) 对于值为 0 的数据项, 不用在配置文件中存储,这样, 当程序代码从配置文件中没有读取到该数据项时,即认为该值为0。(5) 对于 vip 用户的整体月基
17、本费或月租费,由于计费单位不一样,采用配置文件方式存储将增加程序的复杂度,所以,决定直接在程序代码中硬编码。为了便于程序编写,在配置文件中要注意如下两点:(1) 由于程序中要求每次传输的数据量都是10k 的整数倍, 因此可以将数据通信费的单价单位由M 转换成 K 表示,由于数据通信费的价格5 元/M,转换后则是0.5 分/K,这样程序中就涉及到小数处理了。由于在程序中处理小数是很繁琐和容易出现误差的事情,所以,最好还是想办法先统一转换成整数形式进行处理,由于数据传输量都是10k 的整数倍,因此,想到将数据通信费的价格5 元/M 转换成 5 分/10K。因此,在配置文件中将所有的价格和费用的计量
18、单位由元转换成分表示。(2) 后来在配置文件中填写各项数据时,发现VIP 用户订购套餐2 时的数据费仅为0.5 元/M ,这时候转换的结果是0.5 分/10k,又还是出现了小数,故想到把计费单位转成5厘/10k ,所以, 在配置文件中最终还是应将所有的价格和费用的计量单位由元转换成厘进行计费。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 47 页 - - - - - - - - - 按照上面这些思想设计和编写出来的配置文件conf.properties 的完整内容如下:
19、view plaincopy to clipboardprint? common.normal.phone.price=600 common.normal.message.price=100 common.normal.data.price=50 common.pack1.phone.price=500 common.pack1.message.price=100 common.pack1.data.price=30 common.pack1.phone.rent=20000 common.pack1.message.rent=10000 common.pack1.data.rent=2000
20、0 common.pack1.phone.free=60 common.pack1.message.free=200 common.pack1.data.free=5000 vip.normal.phone.price=400 vip.normal.message.price=100 vip.normal.data.price=30 vip.pack1.phone.price=300 vip.pack1.message.price=100 vip.pack1.data.price=10 vip.pack1.phone.free=750 vip.pack1.message.free=200 vi
21、p.pack1.data.free=10000 vip.pack2.phone.price=200 vip.pack2.message.price=100 vip.pack2.data.price=5 vip.pack2.phone.free=2000 vip.pack2.message.free=500 vip.pack2.data.free=30000 common.new.phone.free=60 common.new.message.free=200 common.new.data.free=5000 vip.new.phone.free=200 vip.new.message.fr
22、ee=200 vip.new.data.free=10000 common.normal.phone.price=600 common.normal.message.price=100 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 47 页 - - - - - - - - - common.normal.data.price=50 common.pack1.phone.price=500 common.pack1.message.price=100 common.pac
23、k1.data.price=30 common.pack1.phone.rent=20000 common.pack1.message.rent=10000 common.pack1.data.rent=20000 common.pack1.phone.free=60 common.pack1.message.free=200 common.pack1.data.free=5000 vip.normal.phone.price=400 vip.normal.message.price=100 vip.normal.data.price=30 vip.pack1.phone.price=300
24、vip.pack1.message.price=100 vip.pack1.data.price=10 vip.pack1.phone.free=750 vip.pack1.message.free=200 vip.pack1.data.free=10000 vip.pack2.phone.price=200 vip.pack2.message.price=100 vip.pack2.data.price=5 vip.pack2.phone.free=2000 vip.pack2.message.free=500 vip.pack2.data.free=30000 common.new.pho
25、ne.free=60 common.new.message.free=200 common.new.data.free=5000 vip.new.phone.free=200 vip.new.message.free=200 vip.new.data.free=10000 接着可编写一个读取上面的配置文件中的各项数据的ConfigManager类,该类根据用户类型、套餐类型、业务功能类别来读取相应功能套餐的单价、免费数量、功能费,以及新用户免费数量。源码如下:view plaincopy to clipboardprint? 名师资料总结 - - -精品资料欢迎下载 - - - - - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年移动计费系统 2022 移动 计费 系统
限制150内