电信计费系统预处理功能模块设计
课设题目,可是做不出来了。。。很急的,有没有高手帮一下忙?十二分感谢!一、设计目的
1、理解电信计费系统的数据采集预处理过程;
2、掌握电信计费的字段交验、时长计算、话单事件分析;
3、掌握按照不同需求的数据排序、查找、计算、显示等操作;
4、熟练使用高级编程语言软件。
二、设备所需仪器设备
计算机一台,高级编程语言软件
三、设计原理
1、问题描述
预处理是电信计费系统在数据采集后对原始话单文件进行标准化处理的第一个阶段(标准化处理阶段),包括原始事件格式标准化、校验转换、分拣过滤、重复事件检查、定制输出等正常和异常回收处理过程,实现话单批价前的准备工作。
本题目以中国电信语音计时话单预处理系统为原型参照,要求对文件中存储的话单数据进行排序、查找、计算、显示等操作。通过此课题,通过此课题,熟练掌握数组元素为结构体的应用、文件读写、函数调用等知识,以及查找、排序、排重算法的设计与应用。
2、功能要求
要求实现的功能点包括:
1) 字段校验:验证主被叫号码是否是数字、长度是否正确、通话时间格式是否有效,不符合规则的记录做误单处理(以文本方式输出至误单文件中)。
2) 时长计算:通话时长=通话结束时间-开始时间,时长小于3秒的超短话单或大于24小时的超长话单做误单处理(以文本方式输出至误单文件中)。
3) 被叫信息分析:被叫判运营商;被叫分离区号。
4) 话单事件分析:如果主被叫区号不同,判是否为国际长途、国内长途;如果主被叫区号相同, 判是否为信息台等特殊话务。
5) 话单排重:如果两条记录(或多条记录)中的主被叫以及通话时间完全相同表明是重复话单,这类记录在输出话单文件中只能保留一条(去重)。这是本课程设计的核心功能。
6) 排序输出:可以同时分析多个话单文件,并将分析结果根据通话起始时间升序排列,以文本方式输出至一个预处理结果文件中。
7) 支持按主叫号码查询并显示该号码的通话清单。
3、数据格式
程序输入输出均以文件方式提供,数据文件通过文本工具建立。
1) 输入为原始话单文件(.txt文件):用于存放主叫号码、被叫号码、通话起始时间、结束时间(时间格式为yyyy:mm:dd:hh:mi:ss)。示例如下:
83490000 85980000 2010:04:23:12:20:01 2010:04:23:12:21:11
83490000 01085980010 2010:04:23:20:58:30 2010:04:23:21:39:25
83490001 13951645164 2010:04:23:20:58:30 2010:04:23:21:39:25
83490000 85980000 2010/04/23/08/15/05 2010/04/23/08/23/21
注:通话时间格式不正确
876XY321 85981111 2010:04:23:09:01:01 2010:04:23:09:10:39
注:主叫号码格式不正确
83470002 55074132 2010:04:23:15:18:19 2010:04:23:15:18:20
注:超短话单
83490001 1790902165280115 2010:04:23:20:19:20 2010:04:23:21:08:10
83490002 02086680020 2010:04:23:19:50:30 2010:04:23:21:23:25
83470003 168880088 2010:04:23:19:08:05 2010:04:23:19:10:03
83490002 02086680020 2010:04:23:19:50:30 2010:04:23:21:23:25
注:重复话单
2) 输出之一为标准话单文件(.txt文件):用于存放预处理处理的正常结果。内容包括:主叫号码、被叫号码、被叫区号、被叫运营商、起始时间、结束时间、通话时长、话单属性(国内长途/国际长途/信息台/普通市话),并对输出按不同需求排序。
3) 输出之二为误单文件(.txt文件):用于存放预处理过程中发现的异常话单,内容包括:主叫号码、被叫号码、起始时间、结束时间、通话时长、异常原因 。
3、数据结构
int year; /* 年 */
int month; /* 月 */
int day; /* 日 */
int hour; /* 时 */
int minute; /* 分 */
int second; /* 秒 */
char sourcePhoneNbr[20]; /* 主叫号码 */
char destPhoneNbr[20]; /* 被叫号码 */
struct datetime beginTime; /* 通话起始时间 */
struct datetime endTime; /* 通话终止时间 */
4、参考函数名
装载话单,建立话单结构数组:void loadCallInfo();
校验原始话单字段,合法性检查:void checkField();
计算通话时长:void calCallLength();
分析话单事件:void analyseCallEvent();
将话单排序:void sortCallList();
查找并删除重复记录:void seekDelDup();
输出标准化话单:void exportStdCallList ();
输出误单话单:void exportErrCallList();
四、设计任务
1、根据给定.txt话单文件,读取相关数据;
2、按照输入话单数据,显示出标准话单文件和误单文件;
3、利用标准话单文件,可根据通话时间、通话起始时间和通话结束时间排序,根据主叫被叫号码按区号分组;
4、用理论方法对实验结果进行总结;
5、写出课程设计报告、设计总结及收获。