视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
实验报告52112313
2025-09-30 19:41:00 责编:小OO
文档
题目一  程控交换机模拟计费系统

一、实验目的

使学生通过该系统的设计了解程控交换机计费系统的原理、计费方式和实现过程,并根据此掌握程控交换机中各项数据之间的组织关系和调用关系。通过本次综合实验提高学生的程序综合设计、调试和管理的能力,为学生毕业后从事通信工程的设计、开发、程控交换机的维护打下良好的基础。

二、实验要求

1.学习计费原理,掌握计费实现的全过程,达到根据不同的目的字冠,在各种日期类型、各种时刻通话均能计算出话费,记入数据库或数据结构,并可用作数据的查询、统计和打印。

2.该系统应完成的功能总体模块如下:

用户进入系统应首先判断是否为合法用户,一般通过密码(口令)来实现。

主控模块是整个系统的控制中心,与各模块相连,一般通过菜单调用子功能模块或子程序完成。

一次通话记录的增添、修改、删除、显示等功能模拟主叫电话呼叫被叫电话的一次通话过程的计费记录。在本次实验中只模拟固定电话呼叫本地或长途固定电话的计费,不考虑特服和智能服务。

话单的统计则根据一些关键字对数据库或数据结构进行统计。在统计中,长途计费要求列出每一次通话详细清单,如被叫号码、日期、时间、计费金额等;市话则只需列出总的金额即可。

话单打印需要在屏幕或打印机上列出所需要的信息。

三、计费原理

1.计费方法

程控交换机的计费一般是计入脉冲数,这样可根据脉冲数的多少来灵活掌握各地区的费率情况,然后在计费分检时,按单位脉冲的单价计算出帐单。目前程控交换机中常用的计费方法有七种,适合于不同呼叫的计费要求:

单一方式——在被叫用户取机应答时刻计入一组脉冲,以后无论用户通话时长多少,都不再记。一般用于报时台、天气预报台等。

周期方式(复式)——在被叫用户取机应答时刻记入一组脉冲,然后按某个周期为时间单位进行循环监视,每到一个周期点,便记入同样的脉冲数。目前我国的长途电话业务采用这种方式计费,周期为6second。

单一加周期方式——启机即计n个脉冲,以后每个计费单元计m个脉冲,通话全程计费单元相同。

三加一方式——类似于周期方式,但第一个周期按3个时间单位计算,以后的周期按一个单位来监视。我国现行市话计费采用这种方式,前三个单位为2个脉冲,之后每1个单位为1个脉冲。

卡尔松方式——周期点的监视由系统随机产生,与摘机时刻无关。

准卡尔松方式——与卡尔松方式的区别在于第一组脉冲不计费。

单一加准卡尔松方式——单一方式与准卡尔松方式的结合。

2.计费原则

(1)日历表(Calendar):HO(假日)、WE(周末)、WD(工作日)。以往我国将日期分为不同值,不同值费率不同。现在此项规定已经取消。

(2)时间切换表(Scale):每天各时段定义不同的费率。例如:

00:00:00——07:00:00        长途计费为6折;

07:00:00——24:00:00        长途计费为正常。

3.计费费率

现行的市话和国内长途的计费费率为:

长话:长途计费为0.07元/6 Second。

市话:现行费率有三个标准,0.11元、0.10元、0.09元。如采用0.10元的标准,通话前3分钟为0.20元,之后每增加1分钟0.10元。

4.计费过程

根据被叫号码字冠进行处理:

若字冠表明是国内长途电话,通过系统时间判断此时通话所采取的费率,最后由通话时长与费率的乘积得到本次呼叫的费用存入数据库(注意在具体实现时应考虑临界切换时刻的不同费率);

若呼叫表明是市话,应根据通话时长计算出本次呼叫的脉冲数,再根据费率计算通话费用存入数据库。

四、预习要求

1.掌握计费的原理。

2.学习FoxPro常用的命令、函数、语法功能,掌握数据库的建库和基本操作;或者复习C语言的结构、指针和编程思想等相关内容。

3.如果采用数据库的方案进行实现,需读通附录中的实例,并据此完成库结构的设计和各功能模块的设计。

五、实现要求及实现步骤

1.实现要求

本实验可用FoxPro数据库或C语言开发。建议采用FoxPro2.6/Visual FoxPro6.0实现。

2.实现步骤

(1)建数据库结构

根据本题的要求,建议给出如下基本库结构,同学们也可以根据题意增加/删除一些字段。

Structure for database: C:\\FoxPro\\hudan.dbf

Field    FieldName    Type            Width    Dec        lndex        说明

1        SORNO        Character        12                Asc            主叫号码

2        DSTNO        Character        12                            被叫号码

3        STIME        Datetime        8                            起始时间

4        ETIME        Datetime        8                            终止时间

5        CDATE        Date            8                            通话日期

6        REMOTE    Logic        1                            长途/市话

7        MONEY        Numeric        7        2                    费用

8        MAJOR        MEMORY    4                            备注

**若使用FoxPro2.6也可以将起始时间和终止时间定义为字符型(Character)**

在此基础上,追加相应的数据记录,以备调试程序之用。

(2)完成总体框架的设计,实现主控模块main.prg。该模块主要完成菜单的设计,菜单可以采用下拉式或弹出式。

(3)完成一次通话记录编辑中的增加功能。可以直接输入主叫、被叫号码,并默认为合法用户。根据被叫号码的字冠判定长途/市话字段为.T.或.F.,若输入的电话号码是01182345678,则判定REMOTE字段为.T.,否则为.F.。费用字段MONEY则依据费率进行计算,例如起始时间为06点23分34秒,终止时间为07点34分48秒,则

MONEY=((60-23)*60+(60-34))/6*0.07*0.6(6折的金额)+(34*60+48)/6*0.07

=40.082元

随之对数据进行修改、删除、显示等功能的设计。

(4)实现结算功能。输入月份值或具体时间范围,根据主叫号码和REMOTE这两个字段进行统计。

(5)实现查询功能。输入主叫号码和月份及呼叫种类输出相应的查询结果。要求一屏一屏显示。有精力的同学还可以进行打印模块的设计和调试。

六、实验结果

1、数据库建立

建立了两个表:表一是通话的基本信息,包括主叫被叫号码、呼叫时间等,表二是用户信息。

2、表单建立

1、主菜单

实现通话记录编辑、结算、查询功能。

   2、通话

  可以输入主叫被叫号码,摘机后拨通,挂机后自动记录时间和话费。

摘机程序:public st

st=datetime()

挂机程序:public et

et=datetime()

ct=date()

l=et-st

flag=0

if val(substr(alltrim(thisform.Text2.value),1,1))=0

     &&-------------长途---------------------

    flag=0

       &&-------------正常计费-----------------

if (hour(st)>7 .and. hour(st)<24) .and. (hour(et)>7 .and. hour(et)<24)

       cost=(l/6)*0.07

       endif

            &&-------------优惠计费-----------------

if (hour(st)<7 .and. hour(st)>0) .and. (hour(et)<7 .and. hour(et)>0)

            cost=(l/6)*0.07*0.6

            endif

       &&-------------临界---------------------

if (hour(st)<7 .and. hour(st)>0) .and. (hour(et)>7 .and. hour(et)<24)

       cost=((7*3600-st)/6)*0.07*0.6+((et-7*3600)/6)*0.07

       endif

else

&&-------------市话----------------

     flag=1

if l<(60*3)

      cost=0.2

      else

      cost=((l-(3*60))/60)*0.1+0.2

      endif

endif

    use  表1

append blank

replace sorno with thisform.text1.value

replace dstno with thisform.text2.value

replace stime with st

replace etime with et

replace cdate with ct

replace money with cost

if flag=0

replace calltype  with "长途"

else

 replace calltype with "市话"

 endif 

 

thisform.text3.value=l

thisform.text4.value=st

thisform.text5.value=et

use

退出程序:do form zhucaidan

thisform .release

3、结算

输入号码和时间可以计算出总费用。

市话结算程序:

local num

local mon

num=thisform.Text1.value

atime=thisform.Text4.value

btime=thisform.Text5.value

select money from 表1 where (stime>=atime.and.etime<=btime.and.sorno=num .and. calltype="市话")

thisform.Text2.value=money

长话结算程序:local num

local mon

num=thisform.Text1.value

atime=thisform.Text4.value

btime=thisform.Text5.value

select money from 表1 where (stime>=atime.and.etime<=btime.and.sorno=num .and. calltype="长话")

thisform.Text3.value=money

4、查询

可以根据号码查询通话记录。

查询市话话单程序: 

local num

local mon

num=thisform.Text1.value

mon=thisform.Text2.value

select money,stime,calltype from 表1 where (sorno=num .and. calltype="市话")

查询长话话单程序:

local num

num=thisform.Text1.value

select dstno,stime,etime,money,calltype from 表1 where (sorno=num .and. calltype="长话")

退出程序

do form zhucaidan

thisform .release

程控交换机模拟计费系统

 

    

    学号:52112313

姓名:孟达

班级:23班

      2014年8月30号下载本文

显示全文
专题