




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
哈尔滨工程大学本科生毕业论文第1章 绪论全套源程序代码,联系1538937061.1 概述 随着计算机和通信技术的迅猛发展,计算机网络的规模正以指数规律迅速扩大。网络管理作为网络世界中一项重要的工作,也在吸引着更多的人投入其中。在网络管理中,有一项非常重要的内容就是网络计费。本章将对网络计费的发展历史及其现状进行阐述,同时提出本课题的重要意义。1.2 网络管理的背景网络的历史与电信网的历史一样长,这可追溯到19世纪末的电话话务员工作。至于计算机网络的管理工作,则始于1969年世界上第一个计算机网络arpanet的诞生之日。人们越来越强烈地意识到,现代网络的强大功能只有通过适当的网络管理,才能够得到充分利用,网络管理的能力将成为评价网络性能的一个越来越重要的指标。时至今日,不论是公共网、企业网还是校园网,都伴随着新技术和新设备的使用逐渐变得越来越庞大,而且网络所提供服务的种类和网络设备的来源也日趋复杂多样。在这种环境下,任何微小的网络故障都会导致用户不能正常使用网络资源。如何及早发现并排除潜在的故障隐患,有效管理网络资源,这是网络设备提供者和服务提供者密切关心的话题。事实证明,网络管理比网络建设更重要和更困难。1.3 网络计费1.3.1 网络计费的重要作用网络计费,就是对用户使用的网络资源进行收费。它通过对用户使用网络资源的数量和占用时间,建立详细的记录、计算费用和对已收费用户进行确认。同时对用户的访问活动进行详细记载,既是对用户收费的依据,又是对网络极有用的信息,因为发生问题后可根据记录进行查询。网络管理员还可以通过向用户收取费用来控制用户过多占用网络资源,这也从另一方面提高了网络的效率。大型的计费系统还可以告诉管理员谁在网上的什么地方,什么时候做了什么工作,哪个用户在什么时间用了哪些资源等等。1.3.2 计费管理技术发展历程 既然费用管理有如此重要的作用,所以从网络诞生不久,相应的计费管理技术便产生和发展,直至今日的日趋走向成熟。早期的网络部门采用的方式是收取一次性安装费用和固定的月租费。这种方式对大量使用网络的用户和偶尔使用网络的用户收取相同的费用,显然是很不公平的。目前,网络管理部门普遍根据用户所消耗的网络资源收费。这种方式按计量对象又分为按事务数收费、按包数收费、按字节数收费等许多种。采用事务数计费便于实现,但这种方式对一次性传输量大和一次性传输量小的应用收费相同,显然不适于采用。按总包数计费同样会因包的大小而产生不合理的收费。所以,一般情况下应采用按字节数收费。关于计费原则将会在第二章进行详细介绍。 1.3.3 计费软件现状 目前网络上流行的计费软件有很多种,根据不同的用途它们各自有自己的功能。下面介绍几种网上广泛采用的计费软件。1、拨号计费好帮手dialmonltor,它具有运行速度快、占用系统资源少、费率设置完善等特点。同时还提供多种附加功能:根据用户需要对不同的拨号设置不同的费率;支持节假日减免,可自定义节假日日期;可以查看某月总费用,计算一段时间内的费用总和;监视网络流量和传送速度等等 。2、encounter网络计费器,一款全功能的中文网络计费器。最显著的新特性就是加入了对多账号的支持。encounter能够支持最多5个账号,分别记时计费。另外,在统计报告的方面也有显著的突破,提供了总体上网时间,日上网时间和各账号使用比例3个图表,帮助用户分析自己的上网情况。3、icounter网络计费器,具有多账号、多种面板显示、报告汇总、超时警告、自由计费方式、图表分析等主要功能。无须人为干预自动计费。计费准则配置采用最新的电信和网络收费政策。4、奔腾网计,专门用来管理internet上网时间、费用及很多杂项的工具,完全符合邮电局最新发布的网费、话费收取方案。界面华丽生动、功能齐全、而且有奔腾表格通功能,成为用户的好助手。除以上四种还有很多功能完善的计费软件,如宏杰网时记录等等,各自分析它们的特点,根据自己现有的实际情况,来设计自己的计费系统。 1.4 本课题的意义及本文所要做的工作 网络计费应用的范围十分广泛,大至internet,小到小型的局域网。而本课题所要完成的是针对单机用户的个人版计费软件系统,分为按时间计费和按流量计费两大功能。按时间计费系统解决了当前使用校园e卡查费不便的现象,而按流量计费系统则是完全合理的按使用资源情况计费的软件。本文所要完成的内容主要如下:1、网络管理背景及网络计费历史现状的概述,对本课题的简单描述;2、网络计费管理系统的基本内容,详细介绍了各个阶段所要完成的任务及其实现的方法技术;3、开发工具visual c+ 6.0和sql server 2000的简单介绍,重点放在本次设计所需要的知识上,如视图文档的知识和数据源的建立和连接等等。4、系统的开发设计与实现,这是本文的主要内容。在这一章中,作者将分步说明系统的设计与实现过程,及其间所遇到的问题和解决方案;5、系统的测试过程,利用几个测试用例进行数据和可靠性测试,同时对系统进行了分析,最后提出了未来发展前景;6、在附录中添加了为用户提供的系统使用说明书。第2章:网络计费管理的内容网络计费管理系统庞大,由于其应用环境不同,因而涉及的内容十分繁杂,但无论什么功能类型的网络计费系统,其基本的内容都是一致的。它大体可以分成两大部分,数据采集和对采集的数据进行分析处理。其中,较关键和困难的部分是计费数据的采集。一般计费管理系统的结构如图2.1所示。主 机数据加工处理查询报表生成打印路 由数据采集 图2.1 计费管理系统的结构图 根据计费管理系统的结构,可以看出网络计费管理包括以下四个方面:(1) 确定计费原则;(2) 收集关于网络资源使用情况的数据;(3) 设置使用定额,如费率或按时间计费的单价;(4) 为用户开具网络使用账单,向web系统发布。 本章将就以上四个方面进行详细介绍,重点放在计费原则和数据采集两个方面。2.1 确定计费原则 任何系统的运行都会遵照一定的标准,计费原则就是网络计费系统最基本的准则。常用的对用户的计费常常基于下述几种方式。2.1.1 一次性安装费和月费 在这种方式下,用户支付网络连接的安装费用,并在以后每个月支付固定的费用。用这种方式,对收费而言计费管理并不是必要的。前面绪论曾提过这是早期的网管部门普遍采取的方式,尽管这是最容易实现的系统,但是对一个经常使用网络的用户和一个偶尔使用网络的用户而言,收取相同的费用显然是不合理的。2.1.2 基于所消耗的网络资源量的计费 此方案提倡基于各个用户对网络资源的消耗收费,大部分网络系统采用这种方式,并结合收取少量安装费和月费。这种方式需要收集每个用户使用网络的统计数据,可以测量下面几种数据来确定网络资源的使用情况:(1)事务的总数;(2)全部包数;(3)全部字节数。 用户的事务数包括到一个计算机服务器的登录次数、对终端簇控制器的连接次数、收发的电子邮件数以及建立的远程登录会话的数目等。虽然这种方式具有相对易于实现的优点,但明显的缺点是:不管所用的时间或资源如何,每项事务都导致收取相同数目的费用。如果一个用户进行一个发送五百兆字节信息的事务,和一个发送一百字节信息邮件的用户收取同样的费用,会有许多用户反对这种计费策略。 接下来看一下按全部包数来进行计费。这种方式可以在一定程度上产生反应真实网络使用情况的账单,用户每次发送或接收一个包,账单便会增加。但同时由于包的大小不相同,这种计费原则忽略了这一点,同样具有不合理性。 通过对所用字节计费则可以避免前面两种计费方式的不利之处。这种方式用户是基于所用网络资源的数量来付费的。在这种收费方式下,需要决定的是对发送还是对接收的所有字节收费。对发送到计算机网络的字节收费直觉上很合理,但不幸的是在今天网络连接流行客户/服务器模式情况下,这种计费结构存在严重缺陷。假设网络上有一个用户有一个文件服务器,其中包括某个很有用的数据,每天有很多用户连接到该文件服务器并下载大量信息。收集信息的人只需发送少量的包到服务器请求信息,文件服务器然后传输大量的数据返回给用户,如果根据输出字节收费,提供信息的用户将收到大笔账单,这显然是不公平的。 另外一种选择是依据从计算机网络上收到的字节数对用户收费。它消除了拥有服务器的用户为它们的客户接收信息而付费的问题,而相对也存在一些缺陷,如许多网络协议从目的地址往源地址发送确认信息而使用户收到他们并不想要的字节数据,幸运的是确认包往往很小,而且网络设备也可以确认字节数,并在计费时扣除。因此这种缺陷是可以忽略不计的。因此采用按接收字节收费是目前比较合理的选择。2.1.3 按时间计费 还有一种方法是按时间计费,通常是按小时进行收费。在相同的时间里,有的用户可能接收或传输了大量的资源数据,而有的用户可能只是简单的浏览网页,这对于网络资源提供者来说存在明显的差异,而对于用户来说却感觉没有什么不同,所以这种方法最容易被用户接受。虽存在不合理性,但目前这种方式仍被广泛采用,尤其是在校园中。我校目前推行的校园e卡就是按时间计费,通常这种方式一般来说比较容易实现。本次的设计将有按时间计费的功能。 基于上述介绍的各种计费原则,确定本系统所实现的计费原则是按时间计费和按接收字节计费两种。在确定了计费原则之后,接下来就是进行计费管理中最重要的一步数据采集。2.2 数据采集 数据采集是网络计费管理中最重要的一步,它直接影响着计算费用的准确性。根据计费要求,要获取的信息中既要包含用户信息,又要有详细请求信息。由此可以确定,信息的获取点应选在内部网与internet的接口处。采集数据的方法有多种:(1)通过路由器或其它具有该类信息的网络设备上采集数据;(2)通过监听网络上的数据传输情况;(3)使用代理服务器的日志文件。2.2.1 基于路由器的计费数据采集方法路由器是内部网络用户访问internet的必经之路,如图2.2所示,所有内部网用户的各种访问,都会在路由器上产生详细信息。根据从路由器上定期获得的各种计费传输数据记录,可以分类统计出每个ip地址所对应的主机流量及该用户应交纳的费用。路由器中有一张ip流量表,用于记录ip流量信息。表中每行记录格式如表2.1: 表2.1 ip流量表 源ip地址 目的ip地址ip包数字节数4150400360480计费管理系统一般基于snmp协议读取ip流量表中的各记录信息,从而获得计费数据。snmp(simple network management protocol)是基于tcp/ip、专门为internet网络设计的协议,它能够适应大多数网络传输环境,以其简单、实用、易实施的特点而广泛流行。通过路由器进行计费管理的优点是适用范围广,比较容易实现。一般大中型网络的计费管理系统,例如现有的企业网或校园网的计费管理系统,都采用这种方式进行计费数据采集工作。但是,这种方式是计费管理系统到路由器的点到点通信,对于路由器的ip流量表中每一条记录信息,计费管理系统都要发出一个请求后才能得到该条记录信息,这样就增加了网络的负担。尽管如此路由器的数据采集仍是目前使用范围最广的一种方式。图2.2 基于路由器的计费数据采集方式2.2.2 基于监听的计费数据采集方法 计费数据采集的另一种方法是对网络上的ip数据包进行监听。通过获取每一台机器所发送/接收的ip包,然后进行分析,得到源地址、目的地址以及ip包的字节数等相关的计费数据信息。一般选择在内部网络总出口处增设一台网络流量监视计算机,专门用来抓获内部网络的出入ip包。增加了网络流量监视用机的网络拓扑结构图如图2.3所示。hub网络流量监视用机hub其他服务器局域网pcpc图2.3 增加了网络流量监视用机的网络拓扑结构图2.2.3 基于代理的计费数据采集方法 使用代理服务器进行计费管理,首先要求内部网络安装proxy 服务器,例如microsoft的proxy server 或net scape的proxy server软件,然后封锁其它出口,强制用户必须通过代理访问internet。代理服务器把所有通过它的用户分成若干个组(group),并为各组中每一个用户分配一个proxy账号和密码,当用户通过代理向internet发出请求时,proxy对发出请求的用户ip、账号、请求时间、统一资源定位符url(uniform resource locator) 、以及信息长度作详细记录分析,根据从proxy定期获得不同proxy账号用户的ip记录数据,可分类统计每个proxy用户的信息流量及应交费用。下面图2.4是基于代理的计费数据采集结构框图。 proxyserver日志文件ftp getfiles分 析处 理计 费配 置计 费查 询数据 图2.4 基于代理的计费管理系统结构框图 这种方法适合于网络负载量较小的网络环境,当内部网络对外界访问量大大增加,代理服务器会给内部网络造成瓶颈,从而降低整个网络的性能。2.3 设置定额 在拥有了计费原则和采集的数据后,计费管理系统根据计费原则及用户对资源的使用情况,并结合定额,计算用户费用。若按时间计费,则确定出时间单位的费用,若按流量计费,则需要确定费率,根据目前电信或权威的网络管理部门制定的标准来确定。在计算用户费用时,还需要考虑到各种计费优惠政策,如是否采用夜间半价或节假日优惠等等。在本次个人版按时间计费的计费系统的设计和实现中,定额是可以根据用户实际需要来随时改变的。2.4 提供用户查询及向web系统发布 计费系统在计算用户使用网络资源的费用之后,需要及时发布或提供用户进行查询,并能够及时做到更新。通常的做法是直接给用户开出账单,提供实时的查询,这样给用户带来更大的方便。 随着web技术的成熟,计费管理系统实现了和web技术的结合,不仅能够实现服务器上系统管理员要完成的各种计费工作,而且也要实现远程用户计费查询的功能。目前这种功能大多数是在电信管理网(tmn)的计费管理系统中得以实现。在校园网或企业网中的计费管理系统中能够实现这种功能的不是很多,所以有必要将计费管理和web技术接合起来,开发一种能实现web系统发布的计费管理系统。2.5 本章小结本章主要介绍了网络计费管理的内容,共分四个步骤:确定计费原则;收集关于网络资源使用情况的数据;设置使用定额,如费率或按时间计费的单价;为用户开具网络使用账单,向web系统发布。每一小节分别介绍了各个步骤的详细内容。着重说明了前两个部分,常用的计费原则有:(1)一次性安装费和固定月费;(2)基于所消耗的网络资源量的费用;(3)按时间收取费用。数据采集的方法有:(1)基于路由器的计费数据采集;(2)基于监听的计费数据采集;(3)基于代理服务器的日志文件。网络计费管理的内容是本系统设计的理论基础,系统的开发环境和开发工具是visual c+ 6.0和 sql server 2000,有关它们的基础知识和本系统所涉及的内容将在下一章进行详细介绍。第3章 系统开发环境 本系统的开发环境采用目前被广泛使用的visual c+ 6.0,后台数据库采用最新版的sql server 2000,本章将对以上两种开发工具进行基础知识和相关内容的详细介绍。3.1 visual c+ 6.03.1.1 visual c+ 语言概述与语言基础visual c编程语言是由microsoft公司推出的可视化开发工具,可用于开发基于windows操作系统的32位应用程序。visual c继承了c语言简单、高效的特点,代码结构化,可读性强,采用面向对象的可视化编程技术,使c语言的编程技术发展到一个新的高度。visual c软件包含许多单独的组件,有文本编辑器、资源编辑器、优化编辑器、增量连接器、继承调试器以及各种为开发windows应用程序而设计的工具,这些工具都集成在visual c6.0的开发环境中。与早期的visual c6.0相比,visual c6.0开发环境的外观仅有较小的变换,其风格和命令方式大多维持不变。这种风格的继承为我们提供了很大的方便。如果已经熟悉了早期的visual c6.0或其他microsoft developer studio的集成环境,就能很快熟悉掌握visual c6.0的集成环境。下面是visual c6.0的新增特点和功能:(1) visual c6.0应用向导 使用应用向导是visual c6.0的重要特点。visual c6.0提供了类型多样、界面友好的向导。只需要根据程序设计的不同目的,选择不同的操作选项,向导即可以某种特殊类型的应用程序建立相应的工程项目,并为所创建的工程项目提供框架文件。这为用户进一步开发程序提供了一个良好的开端,因为我们不再需要从头做起,用户所要做的就是添加相应的控制。(2) 增强的activex支持 为便于统一和显示技术的变革,在visual c6.0中,ole(object linking and embedding )已经正式更名为activex。对程序开发人员而言,activex技术大部分都封装在mfc库中。mfc库管理了许多activex的详细资料,且客户与服务之间的交互封装得非常安全。现在可以说,没有mfc类库的支持,实现客户/服务器应用程序是相当困难的。(3) 强大的数据库支持功能在visual c6.0软件包中,数据库编程变得容易起来了。一方面在于visual c6.0本身就提供了多种数据库文件,用户可以调用标准的数据库函数;另一方面,也可以通过数据库软件包或第三方提供的api函数来进行机制转换。(4) 强大的互联网支持功能visual c6.0提供了强大的网络支持功能,这些功能使得应用程序和外界的通信变得更加快捷和方便。用户可以通过互联网服务器api(isapi)类实现增强或扩展http功能,也可使用wininet类建立高层次的互联网客户应用程序。(5) msdn库 visual c6.0软件包还提供了一个功能强大的帮助系统,即msdn库(microsoft developer network library)。msdn库是可以共享的支持库,为所有包括visual c6.0在内的microsoft developer studio开发软件提供在线帮助,用户可以方便地查阅库文件中相应地内容,也可通过超文本链接查阅网络上的资源。c是在c语言的基础上发展起来的,它不仅保持了c语言简捷、高效的特点,还具有许多新特点。下面将简要介绍visual c6.0语言的一些基本概念和语法知识,如数据类型的分类、变量和函数的定义、表达式的建立等,这些内容都是实现visual c6.0程序设计的基础,也是本次设计软件实现的语言基础。(1) 基本数据类型 计算机能够处理各种类型的数据,常用的有int(整形),char(字符型)、float(单精度浮点型)、double(双精度浮点型)和void(无值数据)等基本类型,各种数据类型如表3.1所示。不同数据类型可以结合起来生成更复杂的数据类型。表3.1 c语言常用的基本数据类型数据类型字节数范围char1(8位)128127signed char1(8位)128127unsigned char1(8位)0255int2(16位)-3267832767unsigned int2(16位)065535short int2(16位)-3276832767unsigned short int2(16位)065535long int4(32位)-231231-1unsigned long int4(32位)0231-1float4(32位)3.4e-383.4e38-3.4e-38-3.4e38double8(64位)1.7e-3081.7e308-1.7e-308-1.7e308long double16(128位)1.2e-49321.2e4932(2) 类的构建c语言作为c语言的扩展,其重要的特征在于支持面向对象程序设计,提供了一种不同于传统的结构化程序设计的思维方式。它是通过引入“类”的概念来实现这一重要特征的。面向对象程序设计方法将相似的对象集中在一起,从中抽象出数据(称为数据成员)和对数据(称为成员函数)进行操作,并将其封装在一起形成类。类的一个实例就是对象,这个所谓的“对象”是指将一组数据和使用该数据的一组操作或过程封装起来,形成一个独立的实体。c类(class)即为定义抽象数据类型的语言结构,也是用于封装和隐藏数据的强有力的工具。3.1.2 消息机制与mfc类库 visual c+语言基于消息机制,这是它的一大特点。windows操作系统是个由消息驱动的操作系统,它通过消息队列中的各消息与应用程序进行通信,因此基于windows操作系统的程序设计也必须是通过消息(或者是事件)进行驱动来调度、运行相应的处理程序。所谓事件,是指对于操作系统而言所发生的“事情”。这种“事情”可以由系统产生,也可以由硬件设备或者用户产生。最常见的事件之一是鼠标事件,包括鼠标的移动、单双击以及鼠标在窗口中的位置等。消息是指事件发生所对应产生的信息,它产生后并非立即被响应和处理,而是被送到相应的应用程序消息队列中来处理的。windows应用程序一般首先判明消息号,然后转向相应的处理程序,再根据消息所传递的参数决定如何进行处理,这就是事件驱动实现的机理。消息映射宏的原形为:on_message(message,memberfun),其中message为所定义的消息名称,memberfun为对应消息的处理函数。mfc类库已经预先定义了大多数windows系统内部消息,并且建立了相应的处理函数,这就是预定义消息。对于预定义消息,系统会自动建立相应的响应,用户不能修改其消息名称、消息映射和消息处理函数名。在visual c语言程序设计中,mfc类库是其核心。mfc是microsoft foundation classes(微软基础类)的c类集,它封装了许多常用的windows api 函数,为visual c程序设计人员提供了面向对象程序设计的框架,绝大多数的visual c应用程序都是在此基础上构建的。mfc类采用自底向上的设计方法,按照c+类的层次形式组织在一起,它的类建立在已有的windows api对象的基础上,高层类提供一般的基础性功能,而从高层派生出来的低层类继承了高层类的功能,同时可以实现更详细、更具体的行为。mfc类库结构与目录结构的组织结构图非常类似,大部分mfc类都有一个公共的基类:cobject 类,该类的成员描述了几乎所有mfc类的公有特性,其它大多数类均从其派生而来。windows支持类是mfc类库中最基本的图形用户界面(gui)对象,也是mfc类库中非常庞大、复杂和常用的类。此外还有例外类、文件类、图形绘制类和数据库类,本设计将要利用数据库类,来处理与mfc相链接的sql server 数据库。3.2 文档和视图界面设计这里重点讲解一下文档和视图界面的设计,因为本次系统的设计在软件实现中主要运用了文档和视图界面。 文档负责数据的维护,视图负责数据的显示。文档与视图的关系是由mfc应用程序框架决定的,了解mfc应用程序程序框架的工作机制是理解文档与视图的基础。文档/视图结构是visual c语言中使用的mfc开发应用程序的基本框架。在这个框架中,数据的维护及其显示是由两个不同但又彼此紧密相关的类文档类和视图类分别负责的。一些传统的编程方式相比,文档/视图结构在很多应用场合与更有利windows应用程序的编写。在mfc应用程序中,文档/视图结构用来将程序的数据本身与数据的显示以及用户对数据的交互隔离。视图与文档相关联,它可以作为文档和用户之间的媒介:视图在屏幕上显示文档的图像,并将用户的输入解释为对文档的操作。这种模式中,文档负责管理和维护数据本身,包括从磁盘文件等存储介质中取出数据或将已修改的数据保存到磁盘文件中。文档类还负责从网络中接收数据,并将数据发送到网络上。其结构关系如图3.1所示。磁盘文件或网络数据等结构文档对象指向文档对象的指针视窗对象用 户通过文档类的成员函数通过视图类的成员函数获得指向文档类的指针通过视图类的成员函数显示文档中的数据,并获取用户的输入通过指针调用文档类的成员函数从文档中读取数据图3.1 文档/视图结构关系图总之,文档类为用户处理数据的“幕后工作”,而视图类则负责从文档中,而不是网络或磁盘中,将文档中的数据取出并显示,接收用户的修改,然后将修改的结果反馈给文档类。3.3 sql server 20003.3.1 概述 sql server是microsoft公司开发的大型数据库管理系统,具有强大的关系数据库创建、开发、设计和管理功能。sql server 2000是sql server的最新版本,继承了以往sql server各个版本的优点,同时又增加了许多先进的功能。它的特点是可以基于图形、集中式的管理,支持多个不同的开发平台,多线程体系结构,支持企业级的数据库应用程序等。它提供的数据类型丰富,可以运用在不同的场合,同时用户还可以自定义数据类型。 本次的设计需要创建数据库来存储用户上网数据信息,sql server 2000数据库的创建可以有三种方法:(1)使用向导创建数据库; (2)使用企业管理器创建数据库;(3)使用transact-sql语句创建数据库。本次采用的是使用企业管理器创建数据库。 sql server 2000作为一个大型数据库,通常都用在需要管理大量数据的环境下,例如大型的网络管理、企业管理等等。本次设计的系统数据量很少也采用了sql server 2000数据库,原因在于,由于知识和条件等方面的限制本系统只设计成单用户使用、数据较少的软件系统,而今后可以把它继续发展成为多用户、数据量大、可应用到大型网络管理系统中去的计费管理系统,所以采用sql server数据库一方面可熟悉它的使用和操作,为今后的发展打下基础,另一方面使系统具有充分的可扩展性。3.3.2 odbc odbc是开放式数据库链接(open database connectivity)的英文缩写。通过odbc引擎,用户可以访问各种各样的数据库文件,不需要关心这些数据库文件是由什么数据块管理系统建立的。odbc一共包含五个部分:odbc api函数、odbc 驱动器管理、odbc数据库驱动、odbc记录标志库和odbc管理器。odbc api函数包含了调用函数库、出错代码和标准的结构化查询语言。驱动器管理代表应用程序调用不同的odbc数据库驱动。数据库驱动由多个动态链接库组成,其功能是调用不同类型的数据库。记录标志库处理驱动器管理和数据库驱动之间的数据卷动问题。odbc管理器用于设置数据库,使其成为可供应用程序使用的数据源。可见odbc是数据库与vc语言连接的桥梁,其具体的操作和运用将在后面的系统实现中进行介绍。3.4 本章小结本章主要介绍了系统实现的开发环境,主要应用了visual c6.0编程工具和sql server 2000数据库。首先对visual c6.0做了简要的介绍,包括功能概述,并介绍了它特有的类的概念,mfc类库和消息机制,最后介绍了文档和视图界面的设计。因为本次设计就是应用对文档和视图界面的设计来完成的。接下来简单介绍了sql server 2000数据库,同时说明了它的应用背景和本次设计采用它的原因,以及它和visual c编程语言连接的桥梁odbc的相关知识,这些都为下一章系统的设计与实现做了准备。第4章 系统的设计与实现在前面所述的理论知识基础之上,开始进行网络计费系统的设计与实现。该系统设计的目标是实现一个个人版应用软件,它要完成的两大功能分别是按时间计费和按流量计费。本章将对这两大功能系统的设计与实现过程进行详细说明。由于本系统的设计实现过程完全按照软件开发的流程,所以下面首先来了解一下软件开发流程的知识。4.1 软件项目开发流程1、设计目标与设计流程美国著名经济学家西蒙曾经提出“管理即决策”的观点。在信息时代,任何决策的科学性和有效性都是以信息为基础的,信息与决策已经成为不可分割的统一管理过程的两个方面。为能够实实在在地为运营管理提供真正有效地帮助,这就需要在项目开发之前明确具体的设计目标并在开发阶段遵循一定的设计原则来完成系统的建设。设计目标一般比较容易确立,通常与需求相一致,并从实用性、先进性、可靠性和可扩充性等几个方面进行考虑而提出。至于系统的设计流程,大致可以划分为三个阶段:设计阶段、开发阶段和完善阶段。设计阶段分析系统的主要目标和开发本系统的可行性。开发阶段是整个项目的关键阶段,包含设计和实现两大任务。设计任务主要有需求分析、概要设计和详细设计,实现任务由编码和测试构成,完成具体的信息管理系统软件。最后的完善阶段主要是系统的维护工作。2、软件需求分析 软件需求分析是软件开发周期中的第一个阶段,一个合格的软件系统起步于好的需求。 ieee(1997)中对软件需求的定义为:用户解决问题或达到目标所需要的条件和权能;系统或系统部件要满足合同、标准、规范或其他正式规定文档所具有的条件和权能;反映以上两点之一所描述的条件或权能的文档说明。可见,对软件需求的分析应从系统和用户两方面考虑:一方面要考虑用户的需要,另一方面也要考虑系统所可能达到的要求。这几方面内容组合形成的文档就是软件需求说明。3、软件概要设计 完成软件的需求分析后,即进入设计阶段。设计任务的第一个阶段为概要设计,用来确定软件的结构组成以及各组成部分之间的相互关系。在第二阶段的详细设计中再确定各模块内部的算法和数据结构,产生描述各个模块程序过程的详细设计文档。这两个设计阶段分别侧重软件的结构和程序实现过程。 概要设计确定了软件系统总体结构,给出系统的各个组成模块的功能和模块间的联系。详细设计则是对每个模块给出详细设计过程,实际上是编码的先导。4、软件编码、测试与维护 编码阶段是软件开发的最终目标,此前在分析阶段和设计阶段所完成的各类文档均不能完成系统的具体功能,只有通过编码阶段产生可执行的应用程序后才能够对信息进行管理并成为一个真正能够工作的信息管理系统。 编码完成后,通常要对源程序进行测试。其中单元测试应在编码阶段完成,综合测试和确认测试在测试阶段完成,系统测试是对在整个系统的测试。在具体的测试技术上,目前使用较多的是以下三种具有普遍意义的软件测试类型:(1)回归测试;(2)基于代码的测试;(3)功能测试。4.2 时间计费系统的设计4.2.1 需求分析与概要设计 网络计费管理是网络管理中不可缺少的重要环节。计费管理是指记录用户使用网络资源的情况并核收费用。以时间为计费原则的系统其最主要的功能就是按照用户所设定的单价来计算费用,这实际上也是本系统最基本的需求。由于本系统是单机版,所以只有一个用户,不存在记录用户ip的问题,这就简化了数据库的设计。用户使用时只需安装在自己的计算机上即可,解决了目前使用校园e卡查费不便的问题。 计费管理系统记录的最初数据来自于用户开始上网和结束的时间,根据差额来统计总共上网的时间。由于上网费用的不断变更,单位时间的费用也因地点和环境的不同而发生变化,因此需要由用户来灵活控制。用户需要对最近的上网情况进行及时了解,所以还需要对每一次上网的详细信息进行记录存储,同时也需要能够进行删除。由此可见,本计费管理系统的功能比较专一,因此其需求也相对比较集中,可以得出对本系统的下列需求:(1) 显示时间及对开始结束时间进行管理;(2) 可供用户自行设置单位费用;(3) 及时显示本次的费用;(4) 对每一次上网信息进行记录管理。 根据前面的需求分析,不难设计出此系统所应具备的功能有:时间信息管理 、费用管理、信息查询功能等。图4.1展示了本管理系统的模块构成。时间计费管理系统时间模块显示当前时间费 用 设 置费用模块查询模块记录开始时间记录结束时间费 用 显 示记 录 信 息删 除 信 息图 4.1 时间计费系统功能模块划分接下来对本系统使用的数据源的数据库结构进行设计。数据库结构的好坏将直接影响到系统的效率以及实现的效果。由于本系统涉及的数据量及数据类型比较少,所以只需设计一个单表即可。根据前面所述的用户需求,表中需要显示日期、开始时间、结束时间和费用四项内容。按照要求选用一个小型数据库即可,但为系统将来的可扩展性着想,本设计还是选用了sql server 大型数据库。在实现技术上,拟在windows 操作平台上,以microsoft visual c+ 6.0 为计费系统的开发软件,以microsoft sql server 2000 作为数据源,通过odbc接口建立到数据源的连接。4.2.2 模块功能细化及界面设计在详细设计阶段将对组成系统的各个功能模块的实现方式及其之间的相互关系做进一步的细化,并设计相应的人机交互界面。1、时间模块 该模块可以实现三个具体的功能,分别是显示当前时间、记录开始时间和结束时间。开始时间和结束时间都在当前时间中提取,时间显示精确到秒。在新建工程的初始将显示一个示例对话框,首先在上面分别建立实现上述三个功能的按键,在每一个其后分别设置相应的文本输入框,用来显示时间。同时在主界面上,还设有一个小型日历,可以显示当前日期。2、费用模块 该模块主要完成的任务有两个,设置费用和显示计算的费用。由于不同的地域和环境,不同的应用背景,使对网络资源使用的单位时间费用发生着变化。如果这由编程者来预先设定,则用户无法通过源程序来改变,所以应把单位费用设置的主动权转交给用户,由用户自己来设置。在已经建立好的时间模块的界面上继续添加用来设置和显示费用的文本输入框。以上所有添加的控件均设有自己的id号,用来编写程序代码时使用,这部分内容将在系统的实现过程中体进行介绍。3、查询模块 由于用户需要及时了解自己的上网情况,所以设计了查询模块。在查询模块中,用户可以把每次的上网情况详细地记录下来,包括日期、时间以及费用,同时还可以对记录进行查询和选定删除。由时间模块和费用模块提供的数据信息首先被记录进入数据库,这样就已经完成了数据的存储工作。接下来通过调用数据库的信息,将其显示在对话框界面的表格显示中,这样用户可以一打开界面就能看到历史纪录。然后进行界面的设计,首先在已建立好时间和费用模块的界面上添加存入记录和删除记录的按键,同时设立表格控件,用以显示数据,这样查询模块的用户界面就完成。其内部具体的操作将在系统的实现中进行详细介绍。下面图4.2是完整的时间计费系统界面示意图。 图4.2 时间计费系统示意图4.2.3 数据库结构设计在概要设计阶段数据源的构成只有一个基本表,因此数据库的结构设计比较简单。其基本的字段构成有日期、开始时间、结束时间、费用。由于系统是单用户使用,所以无须设立主关键字。由于sql server 2000 的数据类型丰富,而且可以用户自定义类型,当然这里不需要自己定义,所以基本字段的数据类型选择系统自带的数据类型即可。日期和时间的数据类型选择varchar可变长字符串型,因为这种数据类型字符串长度可以自动发生变化,正好满足了日期时间长度不定的要求。费用的数据类型选择float浮点型即可,这样计费精确。数据类型确定之后,相应的长度自行生成。建好的数据库表格如图4.3所示。数据库建立完成之后,需要和vc进行连接,这里用到了odbc。在3.3.2小节中已经对odbc开放式数据库链接有了大体的介绍,这里具体说明怎样进行连接。打开控制面板的管理工具,即可看到数据源(odbc)的图表,双击【打开】,出现数据源管理器的窗口,选择用户dsn,点击【添加】,在列表中选择sql server,输入webdatabase,在服务器中选择local,点击【下一步】,以后均为默认即可,最后点击【完成】,这样就通过odbc加入了数据源,加完后的界面如图4.4所示。在随后的vc中建立工程时,数据库选择时选中带文件支持项,并选中数据库webdatabase,这样就完全建立了与数据源的链接。 图4.3 数据库设计表图4.4 odbc用户数据源4.3 时间计费系统的实现 新的工程建立以后,窗口显示为待加入控件的对话框,按照上面模块的设计加入相应的按键和文本输入框。接下来为各个控件设置id号,在响应消息的时候将会用到。下面分别介绍各个模块的实现过程。4.3.1 各模块的实现在时间模块中,建立三个静态文本其id分别为 idc_hour 、idc_minute 和idc_second ,用mfc为三个id 添加变量 变量类型 为 cstring m_hours 、m_minutes 和m_seconds,然后映射消息wm_timer 生成ontimer() 函数,最后为view类添加一个私有函数currenttime() :void currenttime()time_t tcurrenttime;char szbuffer 256 ; tcurrenttime = time ( ( time_t* ) null );strftime ( szbuffer, sizeof ( szbuffer ), %h, localtime ( &tcurrenttime ) );m_hour = szbuffer; /赋值给时间显示strftime ( szbuffer, sizeof ( szbuffer ), %m, localtime ( &tcurrenttime ) );m_minute = szbuffer;strftime ( szbuffer, sizeof ( szbuffer ), %s, localtime ( &tcurrenttime ) );m_second = szbuffer;/ 将各变量值赋给对话框相应id号对应的项( getdlgitem ( idc_hour ) ) - setwindowtext ( m_hour );(getdlgitem( idc_minute ) ) - setwindowtext ( m_minute );(getdlgitem( idc_second ) ) - setwindowtext ( m_second );该函数调用操作系统显示的时间,设置启动时间按键的id号为idc_start,相应的函数为onstart(),该函数用来显示调用的时间,每隔一秒钟显示一次时间。当用户点击启动时间的按键时,相应的消息传递给函数onstart(),函数对消息事件做出响应,即执行每隔一秒显示一次时间,这样在用户看来即为不断变化的时间。开始上网和结束的按键分别设置id号为idc_startnet和idc_endnet,响应的函数分别是onstartnet()和onendnet(),它们的功能是将当前的时间传递给相应的静态文本显示。在结束时间显示的同时费用也会显示出来,这里用到了一个pv操作,将在后面的模块链接中提到。费用的设置为一个弹出式对话框,用户将采用的单位时间费用输入进去,将其设为一个double型变量m_inputmoney,当计算费用的时候用时间乘以该变量的值就是所用的费用。该编辑框响应的函数为onchangeedit1(),其中加入了语句updatedata();作用是更新显示,每一次打开界面都需要对编辑框进行重新设置。同样显示费用的编辑框的代码中也需要加入该语句,及时进行更新。对应的变量为m_money,数据类型为float型,将时间差与设置单位时间的费用的乘积赋值给该变量,该语句为:m_money = float(count*m_inputmoney);同时进行显示,这样费用的功能就基本上完成了。时间差设为变量 count,在ontimer函数中,count初始值为0,每显示一次时间,count值就会自动加1,这样最后实际的时间差单位就是秒,为便于观察才把单位时间设为秒,通常实际中都是用分或小时来计算的。每一次显示费用之后编辑框都会自动清零。在上述这些功能的实现中,每完成一步都要进行编译运行,及时发现错误及时进行纠正,以免最后错误过多而无从下手,这就是模块的测试,当所有模块全部完成之后还要进行系统测试,来分析整个系统的实现情况。 当时间和费用都显示给用户之后,用户需要把它们保存下来,以便今后的查询。将设置的链表控件id号为idc_list1,表中的内容完全是数据库表的显示,因此表中的列名也设置为日期、开始时间、结束时间和费用四项。因为数据库中表的长度不限,所以存储的记录个数也不限,可以存入无数个记录,因此不用担心数据会存满的现象。添加记录按键的id号为idc_add,响应该消息的函数为onadd(),增加记录并更新的语句如下:m_pset-addnew();m_pset-m_column1=monthyear; m_pset
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国纳迪克酸酐行业应用动态及投资盈利预测报告
- 2025年事业单位工勤技能-海南-海南电工五级(初级工)历年参考题库含答案解析
- 中医药现代化进程中纳米比亚市场拓展前景分析报告
- 工业互联网平台微服务架构性能测试报告:2025年技术演进与市场前景
- 新能源二手车市场2025年流通渠道创新与评估模型研究报告
- 音乐产业2025年版权运营技术突破与音乐科技创新前景分析报告
- 2025-2030中国空白印刷电路板标签(PCB 标签)发展趋势及投资动态预测报告
- 2025年事业单位工勤技能-河南-河南汽车驾驶与维修员一级(高级技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-河南-河南放射技术员四级(中级工)历年参考题库典型考点含答案解析
- 2024版医用外科口罩购销合同
- 初中道德与法治教师培训
- 全过程工程造价咨询投标方案(技术方案)
- TCECA-G 0304-2024 数字化碳管理平台 总体框架
- 卫生法规-卫生法律法规概论-基本医疗卫生与健康促进法律制度
- 近几年大学英语四级词汇表(完整珍藏版)
- 2024-2030年中国稀土永磁电机行业市场发展分析及前景趋势与投资风险研究报告
- 一年级硬笔书法教学计划
- 架线导地线各种弧垂的含义及计算方法(附计算表格)彻底弄懂弧垂
- 疲劳影响量表(FIS)
- 电竞行业用户分析
- 建筑防火基础知识
评论
0/150
提交评论