版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 四川理工學院畢業(yè)設計(論文) 數(shù)據(jù)挖掘技術(shù)在電信計費系統(tǒng)中的應用 學 生:茍靜中 學 號:09101050104專 業(yè):信息管理與信息系統(tǒng)班 級:2009級1班指導教師:梁金明 四川理工學院計算機學院二O一三年六月數(shù)據(jù)挖掘技術(shù)在電信計費系統(tǒng)中的應用 摘要本畢業(yè)論文所介紹的是數(shù)據(jù)挖掘技術(shù)在電信計費系統(tǒng)中的應用。數(shù)據(jù)挖掘是從大量的、不完全的、有噪聲的、模糊的、隨機的數(shù)據(jù)中提取隱含在其中的、事先不知道的、但又是潛在有用的信息和知識的過程。隨著網(wǎng)絡的高速發(fā)展,一些大型廠商推出了服務器出租這項業(yè)務。為了使得出租商快捷、方便以及高效的統(tǒng)計出用戶的登錄信息及應繳費情況,本論文開發(fā)了一個電信計費系統(tǒng)。本系統(tǒng)
2、采用C/S架構(gòu),在UNIX環(huán)境下以C+為主要的開發(fā)語言開發(fā)完成。客戶端的功能包括定時從服務器日志文件采集用戶數(shù)據(jù),匹配登入/登出信息,向服務器發(fā)送數(shù)據(jù);服務端的功能包括接收客戶端發(fā)送過來的數(shù)據(jù),存儲數(shù)據(jù)和整合數(shù)據(jù)等。關(guān)鍵詞:畢業(yè)設計;電信計費系統(tǒng);數(shù)據(jù)匹配;數(shù)據(jù)整合 The Application of Data Mining Technology in the Telecom Toll SystemAbstractDescribed in this thesis is the application of data mining technology in the telecommunica
3、tions billing system. Data mining is implied from a large number of incomplete, noisy, fuzzy, random data in which, not known in advance, but potentially useful information and knowledge. With the rapid development of the Network, some large companies such as China Telecom launched the server rent b
4、usiness. In order to statistic user login information and charge more fast, conveniently and efficiently, a Telecom toll system is developed in this paper. This system is programmed by C+ language with C/S architecture in UNIX operating system. The functions in client port include reading user infor
5、mation from server log file ,matching data and sending data to a server. The functions in sever port include receiving data from client, data storage and integrating data. Keywords: Graduation design, the Telecom toll system, Data match, Data integration目 錄第1章 緒論11系統(tǒng)背景在電信的業(yè)務中,有一種Unix實驗室出租業(yè)務。只要用戶向電信運
6、營商申請一個Unix帳號,就可以遠程登錄Unix實驗室,并使用Unix系統(tǒng)。用戶使用電信運營商提供的Unix實驗室的服務需要繳納一定的費用,電信運營商需要一套數(shù)據(jù)采集系統(tǒng),把用戶登錄實驗室的時間長度數(shù)據(jù)采集起來,便于在指定的時間范圍內(nèi)作為對用戶的收費依據(jù)。要求數(shù)據(jù)采集系統(tǒng)必須采集如下信息:登錄用戶名,登錄的時間,登出的時間,登錄總的在線時間,登錄的實驗室IP,用戶的終端IP等信息。系統(tǒng)需要開發(fā)這樣一個通用的數(shù)據(jù)采集系統(tǒng)程序來采集Unix機器記錄的用戶登入和登出的原始記錄,并將這些記錄解析匹配成用戶的登錄記錄,然后發(fā)送給數(shù)據(jù)采集服務器,在服務器端將這些數(shù)據(jù)以日期為單位保存在數(shù)據(jù)庫中,然后整合這些
7、數(shù)據(jù)形成日報表,月報表和年報表。12系統(tǒng)原理任何用戶登錄Unix系統(tǒng),Unix系統(tǒng)都會記錄用戶的登錄信息,所有用戶登入/登出的信息都保存在Unix的系統(tǒng)日志文件中。數(shù)據(jù)采集系統(tǒng)就是通過讀取Unix系統(tǒng)日志文件中用戶登入/登出信息,并找出成對的登入/登出記錄,得到用戶登錄實驗室的登入時刻、登出時刻、登錄時間長度等電信用戶收費需要使用的數(shù)據(jù),最后把匹配處理好的數(shù)據(jù)保存成電信工作人員可以閱讀的文本文件,做為電信收費依據(jù)。用戶登錄Unix系統(tǒng)的日志記錄文件在Unix的/var/adm目錄下,文件名是wtmpx,日志記錄文件是一個二進制文件,在Unix中可以使用last指令查看,last命令格式為:la
8、st -a -n number | -number -f filename name | ttywtmpx文件中一條登錄記錄包含372字節(jié),每條記錄包含的數(shù)據(jù)項格式說明如下表1-1所示: (其中黃色背景標識的數(shù)據(jù)項就是要采集的數(shù)據(jù)項) 位置范圍字節(jié)長度含義000-03132/* 用戶登錄名 */032-0354/* inittab id */036-06732/* device name (console, lnxx) */068-0714/* 進程ID*/072-0732/* 登錄類型7-登入,8登出 */074-0752/* process termination*/076-0772/*
9、exit status*/2/* 這是C數(shù)據(jù)類型補齊產(chǎn)生的空位*/080-0834/* 登錄時刻*/*單位是秒 */084-0874/* and microseconds */088-0914/* session ID, used for windowing */092-11120/* reserved for future use */112-1132/* significant length of ut_host */114-371257/* 登錄IP*/【表1:用戶登錄記錄數(shù)據(jù)項格式】登錄記錄總數(shù)計算公式為:登錄記錄總數(shù)=日志文件大小/372。數(shù)據(jù)名數(shù)據(jù)含義是否需要采集備注說明logna
10、me用戶登錄名是匹配同一次登錄會話的必須數(shù)據(jù)之一pid進程ID匹配同一次登錄會話的必須數(shù)據(jù)之二type登錄類型7-登入,8登出Type的值在1-8之間,但只處理7與8兩種情況logtime登錄時刻*/*單位是秒是要采集的數(shù)據(jù),logtime是登入或登出時刻logip登錄IP是要采集的數(shù)據(jù)表1-2:要讀取的原始記錄數(shù)據(jù)數(shù)據(jù)名數(shù)據(jù)含義備注說明logname用戶登錄名logintime登入時刻logouttime登出時刻durations登錄時間長度logip登錄終端的ip地址表1-3:匹配登錄記錄數(shù)據(jù)用戶的登錄信息數(shù)據(jù)在每一臺機器上匹配好后需要發(fā)送到服務器來,服務器接收到這些匹配好的數(shù)據(jù)記錄后將其
11、保存在數(shù)據(jù)庫中,形成用戶登錄記錄明細表。然后我們的程序需要定期的整理出日報表,月報表和年報表。在數(shù)據(jù)庫中保存的用戶登錄記錄明細表結(jié)構(gòu)如下:數(shù)據(jù)名數(shù)據(jù)含義備注說明logname用戶登錄名logintime登入時刻logouttime登出時刻durations登錄時間長度logip登錄終端的ip地址labip用戶登錄的實驗室IP整理成日報表后形成如下數(shù)據(jù)項:數(shù)據(jù)名數(shù)據(jù)含義備注說明logname用戶登錄名logip登錄終端的ip地址DAY_TIME日登錄時間長度Labip用戶登錄的實驗室IPMonth用戶登錄月份整理成月報表后形成如下數(shù)據(jù)項:數(shù)據(jù)名數(shù)據(jù)含義備注說明logname用戶登錄名Logip登
12、錄終端的ip地址MONTH_TIME月登錄時間長度Labip用戶登錄的實驗室IPYear用戶登錄年份整理成年報表后形成如下數(shù)據(jù)項:數(shù)據(jù)名數(shù)據(jù)含義備注說明Logname用戶登錄名Logip登錄終端的ip地址YEAR_TIME年登錄時間長度Labip用戶登錄的實驗室IP第2章 需求分析2.1 功能概述系統(tǒng)主要實現(xiàn)以下核心功能:數(shù)據(jù)讀取,數(shù)據(jù)匹配,數(shù)據(jù)發(fā)送,數(shù)據(jù)接收,數(shù)據(jù)存儲,數(shù)據(jù)整合。2.1.1 數(shù)據(jù)讀取該功能模塊的主要任務是讀取Unix機器的用戶登錄記錄文件,將文件的信息解析為程序?qū)ο?,以方便匹配模塊的匹配。2.1.2 數(shù)據(jù)匹配該模塊的主要任務是將數(shù)據(jù)讀取模塊讀取到的數(shù)據(jù)按照登入/登出的關(guān)系匹配
13、成一條完整的登錄記錄。2.1.3 數(shù)據(jù)發(fā)送該模塊的主要任務是建立客戶端網(wǎng)絡連接,將匹配好的用戶登錄記錄以字符串的形式發(fā)送到服務器。2.1.4 數(shù)據(jù)接受該模塊的主要任務是建立服務器端網(wǎng)絡連接,從客戶端讀取匹配好的用戶登錄記錄字符串。2.1.5 數(shù)據(jù)存儲該模塊的主要任務是將數(shù)據(jù)接收模塊接收到的數(shù)據(jù)保存到指定的數(shù)據(jù)庫表中。2.1.6 數(shù)據(jù)整合該模塊的主要任務是將數(shù)據(jù)庫中保存的用戶登錄記錄明細表的數(shù)據(jù)整合成日報表,月報表和年報表。2.2 系統(tǒng)描述2.2.1 數(shù)據(jù)采集用例名稱數(shù)據(jù)采集功能簡述管理員運行程序,完成數(shù)據(jù)采集的功能前置條件程序已正確安裝并部署基本流1. 管理員啟動服務端程序2. 管理員啟動客戶
14、端程序3. 客戶端程序讀取上次未匹配的登入記錄4. 客戶端程序讀取用戶登錄數(shù)據(jù)文件5. 客戶端程序得到用戶登入/登出記錄列表6. 客戶端程序?qū)⒂脩舻牡侨牒偷浅鲇涗洶凑諏P(guān)系匹配成完整的登錄記錄7. 客戶端程序?qū)⒉荒艹晒ζヅ涞牡侨胗涗泴懙轿募斜4?. 客戶端程序?qū)⑵ヅ浜玫牡卿浻涗洶l(fā)送到數(shù)據(jù)采集服務端9. 服務端程序接收采集的數(shù)據(jù)10. 服務端程序?qū)?shù)據(jù)寫到服務端文件中保存下來分支與異常第1步,若啟動服務端程序失敗,則報告異常。第2步,若啟動客戶端程序失敗,則報告異常。第3步,若上次未匹配的登入記錄文件不存在,則跳過到第3步。第4步,若讀取用戶登錄數(shù)據(jù)文件失敗,則報告異常。第7步,若指定的寫出
15、目錄不存在,則創(chuàng)建目錄。第7步,若創(chuàng)建目錄或?qū)懳募?,則報告異常。第8步,若發(fā)送數(shù)據(jù)失敗,則定時重傳。第10步,若寫入文件失敗,則報告異常。后置條件無備注無2.2.2 數(shù)據(jù)讀取用例名稱數(shù)據(jù)讀取功能簡述程序讀取系統(tǒng)數(shù)據(jù)文件和上次未匹配的登入記錄,形成用戶登錄記錄列表。前置條件客戶端程序啟動基本流1. 根據(jù)系統(tǒng)配置信息確定上次未匹配的登入記錄文件的位置。2. 讀取上次未匹配的登入記錄,形成用戶登錄記錄列表。3. 根據(jù)系統(tǒng)配置信息確定用戶登錄數(shù)據(jù)文件的位置。4. 讀取數(shù)據(jù)文件,將文件內(nèi)容解析成用戶登錄記錄。5. 將上一步中解析得到的用戶登錄記錄添加到列表中。6. 返回用戶登錄記錄列表。分支與異常第
16、2步,若上次未匹配的登入記錄文件不存在,則跳過到第3步。第4步,若用戶登錄數(shù)據(jù)文件不存在,則報告異常。后置條件無備注無2.2.3 讀取上次未匹配的登入記錄用例名稱讀取上次未匹配的登入記錄功能簡述程序讀取上次未匹配的登入記錄,形成用戶登錄記錄列表。前置條件客戶端程序啟動基本流1. 根據(jù)系統(tǒng)配置信息確定上次未匹配的登入記錄文件的位置。2. 讀取文件內(nèi)容,將數(shù)據(jù)解析成用戶登入記錄。3. 創(chuàng)建內(nèi)存列表,保存讀取到的登入記錄數(shù)據(jù)。4. 清空未匹配的登入記錄文件。分支與異常第2步,若上次未匹配的登入記錄文件不存在,則結(jié)束此用例。第2步,若讀取文件失敗,則報告異常。第4步,若清空文件失敗,則報告異常。后置條
17、件無備注無2.2.4 讀取用戶登錄數(shù)據(jù)文件用例名稱讀取用戶登錄數(shù)據(jù)文件功能簡述程序讀取用戶登錄數(shù)據(jù)文件,形成用戶登錄記錄列表。前置條件客戶端程序啟動基本流1. 根據(jù)系統(tǒng)配置信息確定數(shù)據(jù)文件位置。2. 備份數(shù)據(jù)文件,并刪除原始數(shù)據(jù)文件。3. 根據(jù)系統(tǒng)配置信息確定上次未匹配的登入記錄文件的位置。4. 讀取上次未匹配的登入記錄,形成用戶登錄記錄列表。5. 讀取數(shù)據(jù)文件,將文件內(nèi)容解析成用戶登錄記錄。6. 將上一步中解析得到的用戶登錄記錄添加到列表中。7. 返回用戶登錄記錄列表。分支與異常第2步,若找不到數(shù)據(jù)文件,則報告異常。第2步,若備份數(shù)據(jù)失敗,則報告異常。第3步,若上次未匹配的登入記錄文件不存在
18、,則跳過到第4步。第4步,若讀取備份數(shù)據(jù)文件失敗,則報告異常。第6步,若指定的寫出目錄不存在,則創(chuàng)建目錄。第6步,若創(chuàng)建目錄或?qū)懳募?,則報告異常。第7步,若指定的寫出目錄不存在,則創(chuàng)建目錄。第7步,若創(chuàng)建目錄或?qū)懳募?,則報告異常。后置條件無備注無2.2.5 數(shù)據(jù)匹配用例名稱數(shù)據(jù)匹配功能簡述程序讀取用戶登入/登出記錄列表,按照登入/登出的對應關(guān)系匹配成完整的用戶登錄記錄,并將本次未匹配的登入記錄寫到指定文件。前置條件已經(jīng)獲得用戶登入/登出記錄列表基本流1. 訪問用戶登入/登出記錄列表,按照登入/登出的對應關(guān)系匹配登錄記錄。2. 將未匹配的登入記錄寫到文件中。分支與異常后置條件無備注無2.
19、2.6 匹配登錄記錄用例名稱匹配登錄記錄功能簡述將用戶登入/登出記錄按照對應關(guān)系匹配成用戶登錄記錄,以便計算用戶登錄時長。前置條件已經(jīng)獲得用戶登入/登出記錄列表基本流1. 定義兩個列表分別用來保存登入記錄和登出記錄。2. 循環(huán)訪問用戶登入/登出記錄列表,將登入記錄和登出記錄分檢出來,分別存入登入記錄列表和登出記錄列表。3. 循環(huán)訪問登出記錄列表,每找到一條登出記錄后循環(huán)訪問登入記錄列表,找到與之對應的登入記錄,將兩條對應的記錄組合成用戶登錄記錄,并將這兩條記錄從列表中刪除。4. 循環(huán)直至所有的登出記錄都處理完成。分支與異常后置條件無備注無2.2.7 保存未匹配的登入記錄用例名稱保存未匹配的登入
20、記錄功能簡述將匹配之后剩余的登入記錄數(shù)據(jù)保存到文件中,以便下次匹配。前置條件匹配登錄記錄完成基本流1. 將匹配完成后,登入記錄列表中剩余的記錄寫到文件中保存。分支與異常第1步,若找不到指定文件,則創(chuàng)建。第1步,若創(chuàng)建文件失敗,則報告異常。后置條件無備注無2.2.8 數(shù)據(jù)發(fā)送用例名稱數(shù)據(jù)發(fā)送功能簡述采集系統(tǒng)客戶端將匹配好的數(shù)據(jù)通過網(wǎng)絡發(fā)送給服務器。前置條件用戶登錄記錄已經(jīng)匹配完成基本流1. 建立到服務器的網(wǎng)絡連接。2. 遍歷匹配的用戶登錄記錄集合,拿到一條匹配的用戶登錄數(shù)據(jù)記錄。3. 將匹配的用戶登錄數(shù)據(jù)記錄按照指定格式發(fā)送。4. 循環(huán)2-3步,直到所有匹配的登錄記錄處理完成。5. 關(guān)閉網(wǎng)絡連接
21、。分支與異常第1步,若網(wǎng)絡連接失敗,則報告異常。第2步,若寫數(shù)據(jù)失敗,則報告異常。后置條件無備注無2.2.9 數(shù)據(jù)接收用例名稱數(shù)據(jù)接收功能簡述采集系統(tǒng)服務器接收從客戶端傳送過來的數(shù)據(jù)。前置條件服務器程序啟動,客戶端完成匹配,并已發(fā)送數(shù)據(jù)?;玖?. 開啟服務程序。2. 獲得網(wǎng)絡連接。3. 開啟新的線程為客戶服務。4. 獲得輸入流和輸出流。5. 包裝流對象。6. 循環(huán)從輸入流中讀取字符串,保存在本地列表中。7. 成功讀取一行字符串后向服務器發(fā)送成功傳送標志。8. 循環(huán)5-6步,直到所有字符串接收完成。9. 關(guān)閉流對象,關(guān)閉網(wǎng)絡連接,終止線程。分支與異常第1步,若開啟服務失敗,則報告異常。第2步,
22、若獲得網(wǎng)絡連接失敗,則報告異常。第4步,若獲得流對象失敗,則報告異常。第6步,若讀取數(shù)據(jù)失敗,則報告異常。第7步,若寫出數(shù)據(jù)失敗,則報告異常。后置條件無備注無第3章 系統(tǒng)概要設計3.1 總體設計3.1.1 業(yè)務設計這個是項目的大體流程圖,還沒涉及到具體的細節(jié)。大體的流程如圖所示,先讀取數(shù)據(jù)即把數(shù)據(jù)從日志文件中讀取出來,之后把放入內(nèi)存集合中的數(shù)據(jù)進行匹配成需要的數(shù)據(jù),把匹配好的集合發(fā)送到服務端。說明:1) 業(yè)務流程中幾個存儲文件的命名規(guī)則:1系統(tǒng)日志文件由外部傳遞給程序,程序需要判定是否存在然后才能采集。2 未匹配登入數(shù)據(jù)項集合的存儲路徑由外部傳遞給程序,文件名采用logins.dat。2) 日
23、志登入/登出數(shù)據(jù)項讀取規(guī)則1 系統(tǒng)日志文件中的數(shù)據(jù)項有很多,但并不是所有數(shù)據(jù)項都需要采集的只有滿足如下條件的數(shù)據(jù)項才是需要采集的:2 登錄名不能以點號(.)開頭,以點號開頭的一般是登錄程序本身的日志數(shù)據(jù)項,不需要采集。3 登錄類型必須是7(登入)或8(登出),登錄類型具體說明見下面列表:登錄Type值登錄type值說明C定義的宏0#define EMPTY1#define RUN_LVL2#define BOOT_TIME3#define OLD_TIME4#define NEW_TIME5-初始化進程#define INIT_PROCESS6-登錄進程#define LOGIN_PROCES
24、S7-用戶進程(登入)#define USER_PROCESS8-終止進程(登出)#define DEAD_PROCESS表2-1:登錄類型定義3.1.2 系統(tǒng)模塊物理上系統(tǒng)分為采集客戶端(被采集機器)和采集服務器兩部分,在采集客戶端包含數(shù)據(jù)采集模塊,數(shù)據(jù)匹配分析模塊和數(shù)據(jù)發(fā)送模塊;在采集服務器端包含數(shù)據(jù)接收模塊,數(shù)據(jù)存儲模塊和數(shù)據(jù)顯示模塊,各模塊的主要功能和職責如下:1, 數(shù)據(jù)采集模塊:該模塊的主要功能職責是讀取Unix機器上的用戶登錄日志文件的內(nèi)容,將其轉(zhuǎn)化為登錄記錄對象,將這些對象存儲在STL集合中并傳給數(shù)據(jù)匹配合分析模塊來分析。該模塊的輸入數(shù)據(jù)是Unix機器的日志文件/var/adm/
25、wtmpx,輸出數(shù)據(jù)是若干個登錄記錄對象(保存在集合中)。2, 數(shù)據(jù)匹配和分析模塊:該模塊的主要功能職責是將數(shù)據(jù)采集模塊采集到的用戶登錄記錄數(shù)據(jù)按照登錄/登出的關(guān)系匹配成一個完整的登錄/登出記錄,并計算出該用戶本次登錄的時長,然后將這些完整的登錄/登出記錄傳送給數(shù)據(jù)發(fā)送模塊。該模塊的輸入數(shù)據(jù)是原始的登錄記錄對象,輸出數(shù)據(jù)是匹配好的登錄/登出記錄對象。3, 數(shù)據(jù)發(fā)送模塊:該模塊的主要功能職責是將匹配好的登錄/登出記錄用網(wǎng)絡傳送的發(fā)式發(fā)送到采集系統(tǒng)服務器。4, 數(shù)據(jù)接收模塊:該模塊的主要功能職責是從網(wǎng)絡中讀取采集客戶端發(fā)送來的登錄/登出數(shù)據(jù)。5, 數(shù)據(jù)存儲模塊:該模塊得主要功能職責是將數(shù)據(jù)接收模塊
26、接收到的數(shù)據(jù)按照指定的格式寫入數(shù)據(jù)庫中,保存為用戶登錄記錄明細表。6, 數(shù)據(jù)整合模塊:將數(shù)據(jù)庫中保存的用戶登錄記錄明細表的數(shù)據(jù)整理成日報表,根據(jù)日報表整合出月報表,根據(jù)月報表整合出年報表。3.2 接口設計3.2.1 外部接口系統(tǒng)讀取用戶登錄記錄文件,獲得用戶登錄信息。系統(tǒng)讀取上次未匹配的登入記錄文件,獲取未匹配的登入記錄數(shù)據(jù)。系統(tǒng)將匹配好的數(shù)據(jù)寫入指定數(shù)據(jù)庫表中。系統(tǒng)整合出月報表和年報表。3.2.2 內(nèi)部接口數(shù)據(jù)讀取模塊與數(shù)據(jù)匹配模塊間的接口:輸入:解析好的用戶登入/登出記錄列表。輸出:無數(shù)據(jù)匹配模塊與數(shù)據(jù)發(fā)送模塊間的接口:輸入:匹配好的用戶登錄記錄列表。輸出:無數(shù)據(jù)發(fā)送模塊與數(shù)據(jù)接收模塊間的
27、接口:輸入:匹配好的用戶登錄記錄數(shù)據(jù)項輸出:接收成功與否的消息數(shù)據(jù)接收模塊與數(shù)據(jù)保存模塊間的接口:輸入:匹配好的用戶登錄記錄列表輸出:無數(shù)據(jù)保存模塊與數(shù)據(jù)庫間接口:輸入:匹配好的用戶登錄記錄列表輸出:無數(shù)據(jù)整合模塊與數(shù)據(jù)庫間接口:輸入:用戶登錄記錄明細輸出:用戶登錄記錄日報表,月報表和年報表3.2.3 數(shù)據(jù)結(jié)構(gòu)設計根據(jù)系統(tǒng)需求,設計出如下數(shù)據(jù)實體:1, LogRec:登入/登出記錄類,用來表示一條原始的用戶登入/登出記錄。2, MatchedLogRec:匹配的登錄記錄類,用來表示一條匹配的用戶登錄記錄。以下分別對這兩個實體類的設計作出說明:登入/登出記錄數(shù)據(jù)類LogRec類圖:LogRec類
28、成員變量說明:成員變量定義成員變量說明備注char logname32用戶登錄名int pid用戶登錄的進程IDshort type登錄記錄類型7=登入;8=登出int logtime用戶登入/登出時刻(秒)原日志中數(shù)據(jù)單位是秒char logip257用戶登錄IP第4章 系統(tǒng)詳細設計4.1 系統(tǒng)架構(gòu)綜述系統(tǒng)由以下幾個功能模塊組成:數(shù)據(jù)讀取模塊,數(shù)據(jù)匹配模塊,數(shù)據(jù)發(fā)送模塊,數(shù)據(jù)接收模塊,數(shù)據(jù)保存模塊和數(shù)據(jù)整合模塊,每個模塊的核心功能如下:數(shù)據(jù)讀取模塊:負責從用戶登錄記錄文件和未匹配登錄記錄文件中讀取用戶的登錄記錄數(shù)據(jù),將其轉(zhuǎn)化為LogRec對象,然后傳遞給數(shù)據(jù)匹配模塊匹配。數(shù)據(jù)匹配模塊:負責將
29、用戶登錄記錄數(shù)據(jù),按照登入/登出的關(guān)系匹配起來,形成匹配的用戶登錄記錄數(shù)據(jù)(MatchedLogRec對象),并計算出每次登錄的時間長度。數(shù)據(jù)發(fā)送模塊:將匹配好的用戶登錄記錄通過網(wǎng)絡發(fā)送到采集系統(tǒng)服務器。數(shù)據(jù)接收模塊:服務器端接收匹配好的用戶登錄記錄數(shù)據(jù)。數(shù)據(jù)保存模塊:將接受到的用戶登錄記錄數(shù)據(jù)保存到數(shù)據(jù)庫的用戶登錄記錄明細表中。數(shù)據(jù)整合模塊:將用戶登錄記錄明細表中的數(shù)據(jù)整合成日報表,月報表和年報表。4.2 靜態(tài)結(jié)構(gòu)設計4.2.1 數(shù)據(jù)實體類根據(jù)需求分析,我們設計出以下數(shù)據(jù)實體類:LogRec:登入/登出記錄類,用來表示一條原始的用戶登入/登出記錄。MatchedLogRec:匹配的登錄記錄類
30、,用來表示一條匹配的用戶登錄記錄。以下分別對這兩個實體類的設計作出說明:4.2.2 登入/登出記錄數(shù)據(jù)類登入/登出記錄類(LogRec)類圖:4.2.3 登入/登出記錄類(LogRec)成員變量說明成員變量定義成員變量說明備注char logname32用戶登錄名int pid用戶登錄的進程IDshort type登錄記錄類型7=登入;8=登出int logtime用戶登入/登出時刻(秒)原日志中數(shù)據(jù)單位是秒char logip257用戶登錄IP4.3 總體類圖【客戶端類圖】【服務端類圖】4.3.1 Client 類Client類封裝數(shù)據(jù)采集系統(tǒng)客戶端的所有功能。Client類定義 Clien
31、t類方法說明1)sendLogs方法定義:方法原型public void sendLogs()方法功能執(zhí)行數(shù)據(jù)采集客戶端的完整過程 logReader 負責讀取數(shù)據(jù) logSender負責發(fā)送數(shù)據(jù)參數(shù)說明無返回類型void拋出異常調(diào)用類的異常-LogReader類定義LogReader成員變量說明成員變量定義成員變量說明char logFileName50用戶登錄日志文件名char backFileName50日志備份文件名 char failLoginsFileName50未匹配成功的登錄記錄保存文件名logins list<LogRec>保存登錄記錄的集合logouts lis
32、t<LogRec>保存登出記錄的集合matches list<MatchedLogRec>保存匹配成功記錄的集合LogReader類方法說明readLogs方法:方法原型public List<MatchedLogRec> readlogs() 方法功能讀取日志文件總調(diào)度函數(shù) 得到匹配好的集合 參數(shù)說明無返回類型List<MatchedLogRec>拋出異常調(diào)用函數(shù)中可能拋出的異常readLogs方法活動圖:backup方法:方法原型private:void backup() 方法功能備份日志文件 把變化的文件處理成不變的 把日志文件改名即可,系
33、統(tǒng)會自動生成wtmpx文件參數(shù)說明無返回類型void拋出異常讀取數(shù)據(jù)失敗拋出BackupException readFailLogins方法:方法原型public: void readFailLogins 方法功能讀取上一次沒有匹配的 登入記錄參數(shù)說明無返回類型void拋出異常讀取數(shù)據(jù)失敗拋出ReadFailLoginExceptionreadFailLogins方法活動圖:readBackupFile方法:方法原型public: void readBackupFile方法功能讀取備份的日志文件 把讀取到的數(shù)據(jù)放入對應的屬性中參數(shù)說明無返回類型Void拋出異常讀取數(shù)據(jù)失敗拋出ReadBackF
34、ileException matchLogRec方法:方法原型public void matchLogRec() 方法功能將用戶登入/登出記錄匹配為完整的登錄記錄 logins ,logouts進行匹配存入matches參數(shù)說明無返回類型void拋出異常匹配數(shù)據(jù)失敗拋出MatchLogRecExceptionmatchLogRec方法活動圖: saveFailLogins方法:方法原型public void saveFailLogins() 方法功能將匹配失敗的日志記錄存到文件參數(shù)說明無返回類型無拋出異常匹配數(shù)據(jù)失敗拋出SaveFailLoginsException LogSender類 Lo
35、gSender類定義LogSender類成員變量說明成員變量定義成員變量說明char failSendFileName50發(fā)送失敗記錄的保存文件名int fd采集系統(tǒng)服務器網(wǎng)絡描述符unsigned short port服務器的端口char serverIp20要連接的服務器ipLogSender類方法說明1)sendMatches方法:方法原型public void sendMatches(list<MatchedLogRec>*matches) 方法功能發(fā)送匹配日志集合到服務端參數(shù)說明matches 存儲發(fā)送數(shù)據(jù)的集合返回類型Void拋出異常建立連接失敗拋出SendDataEx
36、ceptionsendMatches方法活動圖: 2)initSocket方法:方法原型public void initNetWork() 方法功能根據(jù)ip和port 以及serverIp建立到服務端的socket連接初始化網(wǎng)絡參數(shù)說明無返回類型void拋出異常建立連接失敗拋出SendDataException3)readSendfailed方法:方法原型public void readSendfailed (list<MatchedLogRec>*matches) 方法功能讀取發(fā)送失敗的數(shù)據(jù)文件參數(shù)說明matches: 匹配的用戶日志記錄列表指針返回類型void拋出異常發(fā)送數(shù)據(jù)失敗拋出SendDataException4)saveSendfailed方法:方法原型public void saveSendfailed (list<MatchedLogRec>*matches) 方法功能存儲發(fā)送失敗的數(shù)據(jù) 以備下次讀取發(fā)送參數(shù)說明matches: 匹配的用戶日志記錄列表指針 存儲時 把集合中剩余的數(shù)據(jù)存儲到文件返回類型void拋
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人房產(chǎn)抵押擔保貸款保險合同范本2篇
- 二零二五年度車輛運輸水工鵝卵石運輸協(xié)議3篇
- 2025年個人股東股權(quán)增資擴股合同模板4篇
- 設計思維解鎖創(chuàng)意潛能的鑰匙
- 2025年度大學生實習實訓基地實習崗位合作協(xié)議
- 2025年度個人戶外運動裝備過橋資金借款合同3篇
- 網(wǎng)絡安全實訓室的應急預案制定及實施
- 2025年度工傷賠償協(xié)議范本發(fā)布通知3篇
- 二零二五年度車牌號碼拍賣合同書4篇
- 2025版新型材料研發(fā)項目施工保密協(xié)議書3篇
- 合成生物學在生物技術(shù)中的應用
- 中醫(yī)門診病歷
- 廣西華銀鋁業(yè)財務分析報告
- 無違法犯罪記錄證明申請表(個人)
- 電捕焦油器火災爆炸事故分析
- 大學生勞動教育PPT完整全套教學課件
- 繼電保護原理應用及配置課件
- 《殺死一只知更鳥》讀書分享PPT
- 蓋洛普Q12解讀和實施完整版
- 2023年Web前端技術(shù)試題
- 品牌策劃與推廣-項目5-品牌推廣課件
評論
0/150
提交評論