基于电信数据采集系统的设计与实现_第1页
基于电信数据采集系统的设计与实现_第2页
基于电信数据采集系统的设计与实现_第3页
基于电信数据采集系统的设计与实现_第4页
基于电信数据采集系统的设计与实现_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 南 京 理 工 大 学毕业设计说明书(论文)作 者:许雷准考证号:014914405377 教学点:南京铁道职业技术学院专 业:计算机科学与技术题 目:基于电信数据采集系统的设计与实现副教授王力群指导者: 评阅者: 2016 年 06 月毕业设计说明书(论文)中文摘要在电信的业务中,有一种服务器出租业务,收费方式可以是按时收费,因此就需要知道用户的登入和登出时间,这样才可以计算出费用。因此就需要一套系统将各个服务器上的用户信息发送到一台总的服务器上进行汇总、分析以及保存。本文设计并实现了一个基于CS架构的电信数据采集系统,在开发过程中用UML工具对系统架构进行分析,并严格按照面向对象思想进行

2、编程,这样使得系统结构更加清晰,而且具有良好的稳定性、可重用性和扩展性。从功能上讲,系统实现数据读取模块,数据匹配模块,数据发送模块,数据接收模块,数据保存模块,数据整合模块和数据缓冲池模块。关键词 数据采集,数据匹配,数据发送,数据保存,数据管理毕业设计说明书(论文)外文摘要Title Design and implementation of data acquisition system based on telecommunication AbstractIn the telecommunications business, there is a server-rental busine

3、ss, the fee may be charged on time, so you need to know the user's login and logout times, so that it can calculate the cost. Hence the need for a software to send the user information on each server to server on a total aggregated, analyzed and stored. In this paper, the design and implementati

4、on of a framework based on CS telecommunications data acquisition software, UML tool for software architecture used for analysis in the development process, and in strict accordance with object-oriented programming idea, which makes the software structure more clearly, but also has good stability ,

5、reusability and scalability. From a functional perspective, the system reads the data module, data matching module, data transmission module, the data receiver module, data storage module, data integration module and data buffer pool module.Keywords data collection, data matching, data transmission,

6、 data storage, data management毕业设计说明书第 II 页共 II 页目录1. 引言11.1 课题背景及意义11.2 论文的主要设计工作11.3 论文的组织结构12. 电信数据采集系统相关技术介绍22.1 C/S(Client/Server)结构简介22.2 STL(标准模板库)22.3 网络编程22.4 生产者消费者模型32.5 本章小结33.电信数据采集系统架构设计33.1电信数据采集系统需求分析33.2业务分析33.3系统用例图53.3系统开发技术与工具63.4本章小结64电信数据采集系统的实现与测试64.1 数据读取匹配模块设计与实现84.2 数据发送模块设

7、计与实现154.3 数据接收模块设计与实现194.4 数据保存整合模块设计与实现244.5 数据缓冲池模块设计与实现284.6 异常设计与实现314.7 数据库设计314.8 系统的运行测试344.9 本章小结35结论37致谢38参考文献39毕业设计说明书第 33 页共 33 页1. 引言1.1 课题背景及意义在电信运营业务中,存在服务器租赁业务。只要用户向电信运营商申请一个服务器帐号,就可以远程登录服务器,并使用服务器提供的服务。用户使用电信运营商提供的服务器需要缴纳一定的费用,电信运营商需要一套数据采集系统,把用户登录服务器的时间长度数据采集起来,便于在指定的时间范围内作为对用户的收费依据

8、。要求数据采集系统必须采集如下信息:登录用户名,登录的时间,登出的时间,登录总的在线时间,登录的服务器IP,用户的终端IP等信息。需要开发这样一个通用的数据采集系统程序,来采集服务器记录的用户登入和登出的原始记录,并将这些记录解析匹配成用户的登录记录,然后发送给数据采集服务器,在服务器端将这些数据以日期为单位保存在数据库中,然后整合这些数据形成日报表,月报表和年报表。1.2 论文的主要设计工作本文完成了基于电信数据采集系统的研究与实现工作,包括系统需求分析、系统框架设计、系统模块的实现等,并对系统涉及的关键技术进行了相应的分析。本文研究的主要内容如下:(1)对基于CS架构的客户端服务端网络通信

9、技术进行分析研究。(2)对基于ADO的方式访问SqlServer技术进行了研究。(3)通过用例图,业务流图,类图的方式分析了电信数据采集系统架构。(4)研究了通过互斥量的方式控制线程间的同步,也就是典型的生产者消费者模型。(5)设计并实现了电信数据采集系统。1.3 论文的组织结构本文主要篇章内容如下:第一章 介绍了数据采集系统的研究背景和意义,并简要介绍了本文的主要研究工作。第二章 介绍了电信数据采集系统相关技术,并对CS架构,STL,网络编程以及生产者消费者模型进行了详细描述。第三章 首先介绍了电信数据采集系统需求信息,其次从业务流程图,系统功能模块以及系统用例图的角度详细分析了系统的架构,

10、最后介绍了该项目开发过程中所用到的技术与工具。第四章 设计并实现电信数据采集系统,分析了系统的整体类关系,详细描述了各个功能模块,异常设计模块以及数据库设计模块。第五章 对本文工作的总结和对未来研究的展望。2. 电信数据采集系统相关技术介绍2.1 C/S(Client/Server)结构简介CS即Client/Server (客户机/服务器) 结构,是比较常见的系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进行管理操作。客户端和服务器端的程序不同,用户的程序主要在客户端,服务器端主要提供数据管理、数据共享、数据及系统维护和并

11、发控制等,客户端程序主要完成用户的具体的业务。2.2 STL(标准模板库)STL = Standard Template Library,标准模板库,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C+的一部分,因此不用额外安装什么。2.3 网络编程通过使用套接字来达到进程间通信目的的编程就是网络编程。网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用,编程人员可以不

12、用考虑。网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的!中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理!2.4 生产者消费者模型两个共享固定大小缓冲区的线程即所谓的“生产者”和“消费者”在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。2.5 本章小结本章主要介绍了CS架构、STL基本知识

13、、网络编程概念和典型的生产者消费者模型,为研究电信数据采集系统的架构打下了基础。3.电信数据采集系统架构设计3.1电信数据采集系统需求分析任何用户登录租赁的服务器,服务器系统都会记录用户的登录信息,所有用户登入/登出的信息都保存在服务器的系统日志文件中。数据采集系统就是通过读取服务器系统日志文件中用户登入/登出信息,并找出成对的登入/登出记录,得到用户登录系统的登入时刻、登出时刻、登录时间长度等电信用户收费需要使用的数据,最后把匹配处理好的数据保存成电信工作人员可以阅读的文本文件,做为电信收费依据。3.2业务分析3.2.1业务流程图客户端先把数据从日志文件中读取出来,之后把放入内存集合中的数据

14、进行匹配成需要的数据,把匹配好的集合发送到服务端。服务端接收数据,保存数据到数据库,数据进入数据库进行整合。图 1 业务流程图3.2.2系统功能模块电信数据采集系统主要实现以下核心功能:数据读取,数据匹配,数据发送,数据接收,数据存储,数据整合。图 2 系统功能模块3.2.2.1数据读取模块该功能模块的主要任务是读取服务器的用户登录记录文件,将文件的信息解析为程序对象,以方便匹配模块的匹配。3.2.2.2数据匹配模块该模块的主要任务是将数据读取模块读取到的数据按照登入/登出的关系匹配成一条完整的登录记录。3.2.2.3数据发送模块该模块的主要任务是建立客户端网络连接,将匹配好的用户登录记录以字

15、符串的形式发送到服务端。3.2.2.4数据接收模块该模块的主要任务是建立服务器端网络连接,从客户端读取匹配好的用户登录记录字符串。3.2.2.5数据存储模块该模块的主要任务是将数据接收模块接收到的数据保存到指定的数据库表中。3.2.2.6数据整合模块该模块的主要任务是将数据库中保存的用户登录记录明细表的数据整合成日报表,月报表和年报表。3.3系统用例图电信数据采集系统用例图图 3 系统用例图3.3系统开发技术与工具本系统用的是CS架构,开发语言是用C+;实现过程中用到的技术有STL,Socket编程,生产者消费者模型,多线程,Sql数据库语言以及基于ADO的数据库访问技术。项目的开发环境是VS

16、2013,数据库用的是SqlSever2000,项目管理工具是 SVN。3.4本章小结本章首先介绍了电信采集系统的需求信息,其次从不同的维度分析了电信采集系统的架构,最后介绍了项目开发过程中用到的技术及工具,这些都为后面的系统设计与实现打下了坚实的基础。4电信数据采集系统的实现与测试电信数据采集系统主要分为客户端和服务端程序,系统主要由数据读取模块,数据匹配模块,数据发送模块,数据接收模块,数据保存模块,数据整合模块和数据缓冲池模块组成。下面我们就以此七大模块的实现为例,详细介绍本系统功能。系统的总体类图如下:图 4 客户端类图图 5 服务端类图4.1 数据读取匹配模块设计与实现客户端负责从用

17、户登录记录文件和未匹配登录记录文件中读取用户的登录记录数据,将其转化为LogRec对象,然后将LogRec数据进行匹配,并将匹配失败的日志记录存到文件中。4.1.1 LogReader类设计图 6 LogReader类4.1.2 LogReader类成员变量说明表 1 LogReader类成员变量说明成员变量定义成员变量说明char logFileName50用户登录日志文件名char backFileName50日志备份文件名 char failLoginsFileName50未匹配成功的登录记录保存文件名logins list<LogRec>保存登录记录的集合logouts l

18、ist<LogRec>保存登出记录的集合matches list<MatchedLogRec>保存匹配成功记录的集合4.1.3 LogReader类方法说明及实现表 2 LogReader类readLogs方法说明方法原型public List<MatchedLogRec> readlogs() 方法功能读取日志文件总调度函数 得到匹配好的集合 参数说明无返回类型List<MatchedLogRec>抛出异常调用函数中可能抛出的异常LogReader类readLogs方法实现:图 7 RedLogs方法实现流程表 3 LogReader类back

19、up方法说明方法原型private:void backup() 方法功能备份日志文件 把变化的文件处理成不变的 把日志文件改名即可,系统会自动生成wtmpx文件参数说明无返回类型void抛出异常读取数据失败抛出BackupException图 8 LogReader类backup方法实现表 4 LogReader类readFailLogins方法说明方法原型public: void readFailLogins 方法功能读取上一次没有匹配的 登入记录参数说明无返回类型void抛出异常读取数据失败抛出ReadFailLoginException图 9 LogReader类readFailLogi

20、ns方法实现表 5 LogReader类readBackupFile方法说明方法原型public: void readBackupFile方法功能读取备份的日志文件 把读取到的数据放入对应的属性中参数说明无返回类型Void抛出异常读取数据失败抛出ReadBackFileException图 10 LogReader类readBackupFile方法实现表 6 LogReader类matchLogRec方法说明方法原型public void matchLogRec() 方法功能将用户登入/登出记录匹配为完整的登录记录 logins ,logouts进行匹配存入matches参数说明无返回类型vo

21、id抛出异常匹配数据失败抛出MatchLogRecException图 11 LogReader类matchLogRec方法实现表 7 LogReader类saveFailLogins方法说明方法原型public void saveFailLogins() 方法功能将匹配失败的日志记录存到文件参数说明无返回类型无抛出异常匹配数据失败抛出SaveFailLoginsException图 12 LogReader类saveFailLogins方法实现4.2 数据发送模块设计与实现客户端与服务端通过TCP方式进行连接后,服务端将匹配好的用户登录记录以字符流的形式发送给服务端。4.2.1 LogSen

22、der类设计图 13 LogSender类设计4.2.2 LogSender变量说明表 8 LogSender变量说明成员变量定义成员变量说明char failSendFileName50发送失败记录的保存文件名Socket fd采集系统服务器网络套接字unsigned short port服务器的端口char serverIp20要连接的服务器ip4.2.3 LogSender类方法说明及实现表 9 LogSender类sendMatches方法说明方法原型public void sendMatches(list<MatchedLogRec>*matches) 方法功能发送匹配日

23、志集合到服务端参数说明matches 存储发送数据的集合返回类型Void抛出异常建立连接失败抛出SendDataException图 14 LogSender类sendMatches方法实现表 10 LogSender类readSendfailed方法说明方法原型public void readSendfailed (list<MatchedLogRec>*matches) 方法功能读取发送失败的数据文件参数说明matches: 匹配的用户日志记录列表指针返回类型void抛出异常发送数据失败抛出SendDataException图 15 LogSender类readSendfail

24、ed方法实现表 11 LogSender类saveSendfailed方法说明方法原型Public void saveSendfailed (list<MatchedLogRec>*matches) 方法功能存储发送失败的数据 以备下次读取发送参数说明matches: 匹配的用户日志记录列表指针 存储时 把集合中剩余的数据存储到文件返回类型void抛出异常发送数据失败抛出SendDataException图 16 LogSender类saveSendfailed方法实现4.3 数据接收模块设计与实现客户端与服务端通过TCP方式进行连接后,服务端从客户端读取匹配好的用户登录记录字符流

25、数据。4.3.1 Server类定义图 17 Server类类图4.3.2 Server类成员变量说明表 12 Server类成员变量说明成员变量定义成员变量说明char labIp20实验室ipSocket fd 网络套接字DataReciveThread productor接收数据的线程DataSaveThread customer存储数据的线程UserData dataPool线程共享数据缓冲池4.3.3 Server类方法说明及实现表 13 Server类initSocket方法说明方法原型public void initSocket( ) 方法功能初始化服务,启动Socket 的bi

26、nd listen 和accept参数说明无返回类型void抛出异常DmsServerException 创建ServerSocket过程中发生的异常图 18 Server类initSocket方法实现Server类startService方法说明 表 14 Server类startService方法说明方法原型public void startService( ) 方法功能响应客户连接请求,开启线程为客户服务参数说明无返回类型void抛出异常DMSServerException 创建相应客户请求过程中发生的异常图 19 Server类startService方法设计4.3.4 DataRec

27、iveThread类说明及实现图 20 DataReciveThread类说明表 15 DataRecive Thread类成员说明成员变量定义成员变量说明threadid创建线程时使用 标示一个线程对象方法名称方法描述run()完成具体的数据接收工作Start()完成线程的创建和启动线程reciveData(void *)创建线程时调用的线程函数图 21 run方法的实现图 22 start方法的实现图 23 reciveData(void *)4.4 数据保存整合模块设计与实现服务端将接收到的数据保存到指定的数据库表中。预留扩展接口,通过该接口可以将数据库中保存的用户登录记录明细表的数据整

28、合成日报表,月报表和年报表的形式,并通过MFC或QT编程用图表对数据进行描述。4.4.1 DataSaveThread类说明及实现图 24 DataSaveThread类表 16 DataSaveThread类成员变量说明成员变量定义成员变量说明threadid创建线程时使用 标示一个线程对象LogDAO向数据库中存储数据的对象表 17 DataSaveThread类方法说明方法名称方法说明run()完成具体的调用ADO操作Sqlserver的借口Start()完成线程的创建和启动线程saveData(void*)创建线程时调用的线程函数 图 25 DataSaveThread类run方法图

29、26 DataSaveThread类start方法图 27 DataSaveThread类saveData(void*)方法4.4.2 LogDao类说明及实现图 28 LogDao类表 18LogDao类方法说明方法名方法说明connect()连接数据库saveData()存储数据commitData()提交事务Disconnect()断开连接图 29 LogDao connect方法图 30 LogDao saveData方法图 31 LogDao commitData方法图 32 LogDao disconnect方法4.5 数据缓冲池模块设计与实现4.5.1 UserData类定义图

30、33 UserData类4.5.2 UserData类成员变量说明表 19UserData类成员变量说明成员变量定义成员变量说明deque<LogData> data缓冲客户端的数据池的真正存储容器pthread_mutex_t mutex控制线程安全的互斥量pthread_cont_t con_p控制是否生产的条件量pthread_cont_t con_c控制是否消费的条件量4.5.3 UserData类方法说明及实现表 20 UserData类方法说明方法原型public:void push_data(LogData rec) 方法功能向缓冲池中加入数据参数说明LogData

31、rec是要往数据库表中存储的数据返回类型void抛出异常无图 34 UserData类push_data方法实现表 21 UserData类pop_data方法说明方法原型public:LogData pop_data() 方法功能从缓冲池中取出数据参数说明无返回类型LogData 图 35 UserData类pop_data方法实现4.6 异常设计与实现4.6.1异常类结构图图 36 异常类结构图4.6.2异常类说明及实现表 22 异常类说明及实现异常类名异常类责任说明备注DmsReadException数据读取异常。BackupException备份异常。ReadFailLoginExce

32、ption读取未匹配的登入数据异常。MatchLogRecException匹配日志记录异常。SendDataException发送数据异常4.7 数据库设计4.7.1 数据库分析在电信数据采集系统中,因为系统的信息量适中,并且系统的项目成本不高,因此对数据库的要求不是很高,所以系统采用的Microsoft SQL Server 2000作为后台数据库,数据库命名为DB_DCS,其中包含了4张数据表,用于存储不同的信息。如图 37所示:图 37 数据库分析4.7.2 数据库概念设计系统开发过程中,数据库设计占有重要的地位,数据库设计的原则是根据系统的整体需求而定的。例如,在本系统中,为了保存用

33、户的登录明细。这时,就要在数据库中创建一个用户登录记录明细表。用户登录记录明细表实体E-R图如图 38所示:图 38 数据库概念设计在本系统中,为了保存用户的每日登录明细。这时,就要在数据库中创建一个用户每日登录记录明细表。用户每日登录记录明细表实体E-R图如图 39所示:图 39 用户日登录E-R图在本系统中,为了保存用户的每月登录明细。这时,就要在数据库中创建一个用户每月登录记录明细表。用户每月登录记录明细表实体E-R图如图 40所示:图 40用户月登录E-R图在本系统中,为了保存用户的每年登录明细。这时,就要在数据库中创建一个用户每年登录记录明细表。用户每年登录记录明细表实体E-R图如图

34、 41所示:图 41用户年登录E-R图4.7.3 数据库逻辑结构设计用户登录记录明细表:表 23 用户等级记录明细字段类型长度约束备注登录记录编号Number15PK系统自动生成用户IDchar32NOT NULL服务器IPchar20NOT NULL用户终端IPchar257NOT NULL登入时间Number20NOT NULL登出时间Number20NOT NULL登录时长Number12由登出时间-登入时间求得表 24 用户登录记录日报表字段类型长度约束备注用户IDchar32PK服务器IPchar20PK日登录时长Number12NOT NULL登出时间Date表 25用户登录记录月

35、报表字段类型长度约束备注用户IDchar32PK服务器IPchar257PK月登录时长Number12NOT NULL登出时间Date表 26用户登录记录年报表字段类型长度约束备注用户IDchar32PK服务器IPchar20PK年登录时长Number12NOT NULL登出时间Date4.8 系统的运行测试根据整个系统的设计文档,分为各个模块采用自底向上实现的方法,开展系统编码的实现。首先要对各个功能模块进行单元测试,这个是由系统开发人员进行系统的白盒测试。作为测试分析方法的一种,静态分析工作是在系统的实现阶段(编码)后开始进行的。而在单元测试开始时,首先要进行的是静态分析,以便于及早的发现

36、和纠正系统单元和部件级的不适合的问题。4.8.1 概述在系统单元进行测试时,系统测试人员首先要根据系统设计文档来设计各个单元的测试用例,结合系统和网络现状,准备测试用例,编写对应的驱动模块,来进行用例的执行和分析,最后得到测试执行结果以及覆盖率分析报告。完成规定要求单元测试语句和分支覆盖率达100%,以保证各个单元运行正确、稳定、高效,而且各个单元之间配合良好。4.8.2 测试流程及结果因为测试是程序设计的重要环节,并且为了规范测试流程,给系统测试工作提供详细的指引,使系统开发工作的质量得到提高,制定了详细的测试流程,其详细的测试步骤和要求如下:(1) 系统开发结束后,系统开发人员要将程序进行

37、反复的测试和验证,在确认无误后搭建测试环境,安装和配置系统,然后把工作交给测试人员进行测试。系统开发人员先培训系统测试人员关于安装、配置及使用方面的操作,测试人员要对培训过程所讲的进行记录,对程序不清楚的点要向开发人员询问清楚。(2) 正式开始测试前,系统测试人员要对系统的主要模块进行详细的记录。并且要对测试中的内容进行更新,都应该告知参加测试工作的所有人员进行对应的更新,在每一次进行测试前测试人员都应该测试查看计算机中的系统版本是不是最新的版本。开发人员同时要把一份系统的源代码提交给测试总负责人。测试人员根据开发者编写的源代码来进行编译,生成相应的应用模块,以备测试的时候使用。测试人员同时要仔细的对源代码进行检查,检查结果和测试的后续结果要以文献资料的形式保存下来。(3) 在测试中发现的问题应该做好详细的记录,交给开发人员由他们负责解决问题。而且在测试过程中,测试人员认为重大的问题,例如系统的内存冲突、非法操作,测试人员应尽可能保留在现场,请来开发人员现场查看。这些被解决过的问题,经测试人员检查后不再出现的再进行下一项的测试。本系统通过一系列的代码检查、功能测试、画面及报表格式检查、可靠性测试、效率测试、正确性测试后,系统的各个环节配合协调而且参数设置都达到了一个新的高度。实现了系统整

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论