



1 系統概述
1.1話單處理系統的概念
話單處理系統,本著提高網管分析水平,為經營部門提供準確的數據依據,從而達到對其它運營商的一些高端用戶進行策反的目的,利用powerbuild編程工具及sq1server2000數據庫技術,將原有的網關局交換機(華為交換機)生成的話單(文本文件)進行分析處理的系統,它包含了話單初始化,Ip查詢,Ip統計,其它運營商查詢及統計,后續分析等幾大功能模塊。通過對網關局話單的分析處理,得出我公司各個局向每天撥打各種Ip(包括其它運營商Ip)的主叫號碼及呼叫次數、呼叫時長等;通過對其它運營商的入網呼叫分析,得出其它運營商的哪些號碼為高端用戶。

1.2話單處理系統的設計
話單處理系統采用c/s模式,服務器端安裝windows2000 server操作系統,sq1 serv er2000數據庫,客戶端安裝windows2000 p rofessional操作系統,sq1 server2000客戶端,通過分析得知,網關局的話單(文本格式)具有一定的標準,按照此標準建立相應的庫表hdcl,通過sq1 server2000企業管理器將文本文件導入到數據庫中,然后對主叫號碼進行分析,從而得出不同局向的主叫號碼及呼叫不同Ip的主叫號碼,通過對主叫號碼呼叫次數的高低分析排序得出高端用戶,從而將得出的數據交于我們的營銷人員。
1.3話單處理系統流程說明
利用sq1 server的企業管理器中導入數據功能將原始話單入庫(入到hdcl表),入庫完畢后對庫中每一條紀錄進行分析,根據主叫號碼將紀錄分類,每一條紀錄加上一個局向插入到另外一個表中(hdjx),然后將hdjx中的紀錄按照Ip和其它運營商入網進行分析處理,然后保存成文件。
2 話單處理系統的功能模塊及各功能模塊說明
2.1話單入庫
利用sq1 server2000企業管理器中的導人數據功能,按照話單的特征選擇文件格式,然后進行導入(如圖1)。
2.2話單預處理

主要功能:將原始話單逐條分析,過濾掉異常和長途話單,根據主叫號碼按局向分類,然后將數據逐條插入到另外一張表中(原始話單中沒有局向,每天的話單中有大約100萬條呼叫記錄)。
目的:將每一條話單按局向插入庫中(hdjx表),便于提高話單查詢速度,縮短統計所耗費的時長。
2.3各類Ip查詢
主要功能:根據不同局向,不同Ip任意組合,從而查詢出不同局向在某一時間段用某一種Ip呼叫的所有記錄,然后將其導人到數據庫中的iptj表中。
2.4各類Ip統計
主要功能:按不同局向,不同Ip的任意組合,統計出不同局向中不同的電話號碼在某一時間段用某一種Ip呼叫的總次數,時長,話務量等信息,并按照呼叫次數對電話號碼進行排序,最終將其保存成excel文件。
2.5入網查詢
主要功能:按照不同運營商,不同的時間段,查詢出在該時間段中所有入網的紀錄,并將所有紀錄導入到庫表qtyy中,以便后續統計。其他運營商主要包括;電信、移動、聯通、鐵通。
2.6入網統計
主要功能:按照不同的運營商,在不同的時間段內,將呼叫入網的電話號碼按呼叫次數進行統計,并排序后存成文本excel文件。
3 程序詳細設計
3.1主要庫表說明
(1)hdc1(原始入庫表),作用:存放話單原始數據(如表1)。
(2)hdjx(話單局向表),作用:存放預處理后的話單(如表2)。
(3)iptj(Ip統計表),作用:存放統計后的各種lp紀錄(如表3)。
(4)qtyy(其它運營商呼叫記錄表),作用:存放其他四個運營商的話單數據(如表4)。
3.2設計說明
(1)數據庫的建立。
根據原始話單的特征,建立數據庫hdc1,分配用戶py_cxuser,passwd:zhangfan,考慮到話單數據的量比較大,所以選擇sq1server2000數據庫,并修改庫文件大小為10G,建立原始話單庫表hdc1,利用sq1 server企業管理器的導入數據功能將原始數據入庫,客戶端連接信息寫在客戶端的ini配置文件中(appform.ini)。
(2)原始話單預處理。
根據主叫號碼判斷出該號碼所在的局向,然后將該條紀錄連同局向一起插入到另外一張庫表hdjx中,操作時一般先將庫表全部清空,然后再進行導人數據操作,原因是每天的話單紀錄太多累積多天后,會因數據量太大而導致程序處理速度太慢。然后將數據庫的記錄取出逐條分析,根據實際情況截取主叫號碼的前幾位分析出該主叫號碼的所屬局向,然后插入到另外一張表hdjx中,直到最后一條記錄,主要技術為游標的使用。具體實現為在“話單預處理”按鈕的click事件中編寫代碼,取話單的主叫號碼進行分析,整體框架為定義一個游標DECLARE mycur C URSOR FORSELECT rj,bj,qsrq,qssj,zzrq,zzsj,sc FROMhdc1,從第一條數據庫中的第一條記錄一直取到最后一條記錄,然后逐條分析,利用的分析手段為游標中嵌套case語句,條件為先分析主叫號碼第一位,然后根據實際情況取主叫號碼的位數進行判斷分局,直到分析出該號碼所屬的局向為止,凡是沒有局向的記錄,一律分配局向為‘oth’,(這些號段還沒有被分配,或者為其它城市號段,在此我們不做處理)然后將該條記錄插入到另外一張表中。
(3)Ip查詢。
Ip查詢的特點是被叫號碼的前一部分為Ip,后一部分為真正的號碼,所以要查詢某一局向的呼叫Ip的量只需要兩個條件:bjlike‘Ip%’and jx=‘某一局向’即可。
查詢結束后經過計算并將所得的紀錄插入到另外的庫表中(iptj),目的是為了計算出不同的主叫號碼在該時間段內的呼叫次數,然后為下一步統計并形成文件作鋪墊,具體計算方法為:查詢出的每一條紀錄按主叫號碼排序,然后從第一條記錄開始每次取兩條記錄進行主叫號碼比較,如果號碼相同,則次數變量加一,呼叫時長相加,然后取第二條和第三條記錄向比較,如果主叫號碼不同,則將上次的結果入庫,并繼續向下取記錄。依次循環,直到所有的記錄循環完畢,具體實現為用一個for循環。技術上把握住相同號碼的次數和總時長是重點,同時要考慮到各種情況。
(4)Ip統計。
將某一局向某一時間段內的某種Ip的查詢到數據窗口并按照次數進行排序,然后保存成文件。
3.3其它運營商的查詢的設計
其它運營商的查詢條件比較簡單,即從窗口中的下拉列標框中(dd1b_1)選擇運營商,在em_1和era_2中填寫時間條件,然后在查詢按鈕中retrieve即可。
入庫按鈕的作用為對查詢出的記錄進行統計然后入庫,即和Ip的入庫相同,注意事項為:一定要將查詢的內容進行按主叫排序,技術上和Ip的入庫相