Skip to content

rikugun/BillingSort

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BillSort

电信话单排序


需求

===== 某城市电信局受理了许多用户申请在指定电话上开设长话业务。长话包括国内长途和国际长途。电信局保存了长话用户档案和长话业务档案。

长话用户话单的记录xml格式为:

<?xml version="1.0" encoding="UTF-8"?>
<root>
	<call>
		<name>用户名</name>
		<telephone>电话号码</telephone>
		<address>地址(南京)</address>
		<starttime>通话开始时间</starttime>
		<endtime>通话截止时间</endtime>
		<charge>通话费用</charge>
	</call>
	……
</root>

该电信局为了用计算机自动处理长话收费以提高工作效率,开发了长话计费管理系统。该系统每月能为每个长话用户打印出长话缴费通知单。长话缴费通知单的记录格式为:

| 电话号码 | 用户名 | 地址 | 通话时间| 话费总额 |

要求如下:

  1. 需要把用户信息使用集合类缓存起来,并且集合中的信息必须唯一(电话号码),把电话号码相同的用户通话费用和通话时间(通话截止时间-通话开始时间)计算话费总额和总通话时间。
  2. 信息输出:按电话号码进行排序,输出格式

| 电话号码 | 用户名 | 地址 | 通话时间 | 话费总额 |

  1. 启动两个线程分别做如下处理:

    线程一:执行1、2操作。并把用户信息按照电话号码升序的方式输出到一个队列中。队列的大小不能超过10个。

    线程二:现有南京和南通两个分局,分别记录下当地用户信息。最后再分别输出两地用户信息,信息输出:

| 电话号码 | 用户名 | 地址 | 通话时间 | 话费总额 |

控制台输出:

电话号码		用户名	地址		通话时间	话费总额
电信总局
25821001	张一		南通		5		1.5
25821002	张二		南京		18		5.4
25821003	张三		南京		5		1.5
南京分局
25821002	张二		18	5.4
25821003	张三		5	1.5
南通分局
25821001	张一		5	1.5

========

设计


Note:

  1. 通常话单量非常大,不会直接用java在内存中保存处理. 通常通过sqldr装载到oracle db 中处理.

  2. 如果是通过java 暂存,可以使用jaxb来绑定java 类来处理,注意xsd文件

  3. P/C 模式可以通过 java.util.concurrent 来实现多线程并发


实现


About

BiilingSort

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages