0


仿10086电信业务平台

**文末附完整代码链接 **

配置环境

VC++6.0

东进语音卡

Access数据库

ADO接口技术

    在VC++6.0中,我们通过新建MFC(微软基础类库),编写各种程序语句,最终实现了完整的校园服务系统。

    Microsoft Visual C++ 6.0,简称VC6.0,是微软于1998年推出的一款C++编译器,集成了MFC 6.0,包含标准版(Standard Edition)、专业版(Professional Edition)与企业版(Enterprise Edition)。发行至今一直被广泛地用于大大小小的项目开发。 

MFC(Microsoft Foundation Classes,微软基础类库)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

    语音卡,也称语音板,即电脑与电话语音处理设备,是一种用于电脑上并能够实现语音处理的电脑插件。随着语音卡技术的迅速发展,作为CTI系统中最为关键的硬件设备,语音卡近几年在中国通讯市场的发展迅速猛进,应用领域涵盖邮电通讯、信息服务、办公自动化、金融、公安、医疗、商业、娱乐、交通运输、工业生产及社会生活等方面,其市场前景广阔。

    Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和图形用户界面两项特点,是 Microsoft Office 的系统程序之一。Microsoft Office Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。MS ACCESS以它自己的格式将数据存储在基于Access Jet的数据库引擎里。它还可以直接导入或者链接数据(这些数据存储在其他应用程序和数据库)。软件开发人员和数据架构师可以使用Microsoft Access开发应用软件,“高级用户”可以使用它来构建软件应用程序。和其他办公应用程序一样,ACCESS支持Visual Basic宏语言,它是一个面向对象的编程语言,可以引用各种对象,包括DAO(数据访问对象),ActiveX数据对象,以及许多其他的ActiveX组件。可视对象用于显示表和报表,他们的方法和属性是在VBA编程环境下,VBA代码模块可以声明和调用Windows操作系统函数。

    ADO(ActiveX Data Objects)是一种程序对象,用于表示用户数据库中的数据结构和所包含的数据。在Microsoft Visual Basic编辑器中,可以使用ADO对象以及ADO的附加组件(称为Microsoft ADO Extensions for DLL and Security(ADOX))来创建或修改表和查询、检验数据库、或者访问外部数据源。还可在代码中使用ADO来操作数据库中的数据。ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据。例如,如果您希望编写应用程序从DB2或Oracle数据库中向网页提供数据,可以将ADO程序包括在作为活动服务器页(ASP)的HTML文件中。当用户从网站请求网页时,返回的网页也包括了数据中的相应数据,这些是由于使用了ADO代码的结果。

框架图

模块分析

四大板块

(1)第一个板块为一卡通服务。一卡通服务下设有两个模块:查询余额和充值服务。进入一卡通服务后,需要先输入卡号和密码,再选择之后的服务。选择充值服务后,可冲入任意金额并按“#”确认充值。充值成功之后,会把最终余额播报给用户。查余额或充值完毕后,可以返回对应的上一级再选择播报余额或充值服务,继续返回上一级,可以回到最初板块。

(2)第二个板块为体育运动场地预约服务。运动类型可选择羽毛球、排球和篮球三种。体育场地可选择主馆和副馆。体育场地可选择的使用时间段有下午六点到七点、晚上七点到八点、晚上八点到九点。选择流程是先选择球类,再选择场地、最后选择时间段。在选择过程中,可以返回对应的上一级重新选择。预约成功后,可返回上一级继续预约场地。若继续返回上一级,可回到最初板块。

(3)第三个板块为娱乐服务。娱乐服务有点歌服务和互动服务。进入点歌模块之后,可选择的歌曲种类有亲情、爱情和友情。进入互动模块之后,可选择的服务类型有:了解中国石油大学(华东)、了解通信工程和心理治疗。返回上一级后,可继续选择服务类型。继续返回上一级,可回到最初板块。

(4)第四个板块为大学生心理健康测试。本模块会播放八道题,每道题有四或五个选项。本系统会根据选择的选项计算出最终得分,再根据得分评判出最终结果反馈给用户,返回上一级可回到最初模块。

功能代码段

语音播报

void CMy2Dlg::shuzibobao(CString number) //数字播报函数
{
    m_ValidCh=0;
    if(state==1 && CheckPlayEnd(m_ValidCh) )
    {
        StopPlayFile(m_ValidCh);
        if(number[j]=='1')
        {
            StartPlayFile(m_ValidCh,"1",0L);
            j++;
            state=2;
        }
        else if(number[j]=='2')
        {
            StartPlayFile(m_ValidCh,"2",0L);
            j++;
            state=2;
        }
        else if(number[j]=='3')
        {
            StartPlayFile(m_ValidCh,"3",0L);
            j++;
            state=2;
        }
        else if(number[j]=='4')
        {
            StartPlayFile(m_ValidCh,"4",0L);
            j++;
            state=2;
        }
        else if(number[j]=='5')
        {
            StartPlayFile(m_ValidCh,"5",0L);
            j++;
            state=2;
        }
        else if(number[j]=='6')
        {
            StartPlayFile(m_ValidCh,"6",0L);
            j++;
            state=2;
        }
        else if(number[j]=='7')
        {
            StartPlayFile(m_ValidCh,"7",0L);
            j++;
            state=2;
        }
        else if(number[j]=='8')
        {
            StartPlayFile(m_ValidCh,"8",0L);
            j++;
            state=2;
        }
        else if(number[j]=='9')
        {
            StartPlayFile(m_ValidCh,"9",0L);
            j++;
            state=2;
        }
        else if(number[j]=='0' && number[j-1]=='0' )
        {
            length--;
            j++;
        }
        else if(number[j]=='0')
        {
            int find=0;
            for(int k=j;k<strlen(number);k++)
            {
                if(number[k]!='0')
                {
                    find=1;
                }
            }
            if(find)
            {
                StartPlayFile(m_ValidCh,"0",0L);                
                state=1;
                length--;
            }
            j++;
        }
    }

    if(state==2 && CheckPlayEnd(m_ValidCh) )
    {
        StopPlayFile(m_ValidCh);
        if(number[j-1]!='0')
        {
            if(length==5)
            {
                StartPlayFile(m_ValidCh,"wan",0L);
                length--;
            }
            else if(length==4)
            {
                StartPlayFile(m_ValidCh,"qian",0L);
                length--;
            }
            else if(length==3)
            {
                StartPlayFile(m_ValidCh,"bai",0L);
                length--;
            }
            else if(length==2)
            {
                StartPlayFile(m_ValidCh,"shi",0L);
                length--;
            }
        }
        state=1;    
    }

数据库调用

case 72300:                                         //调用数据库的数据
        number=m_StringID;
        length=strlen(number);
        j=0;
        state=1;
        m_ChState=61;
    case 61:                                            //余额语音播报
        if(j<=strlen(number))
            shuzibobao(number);
        if(j==strlen(number) && CheckPlayEnd(m_ValidCh))    
        {   
            StopPlayFile(m_ValidCh);
            StartPlayFile(m_ValidCh,"yuan",0L);
            m_ChState=666;
        }
        break;

显示时间

CString Y,M,D,H,M1,S;                    
CTime t=CTime::GetCurrentTime();
int y=t.GetYear();
int m=t.GetMonth();
int d=t.GetDay();
int h=t.GetHour();
int m1=t.GetMinute();
  int s1=t.GetSecond();
//类内定义
    CTime t=CTime::GetCurrentTime();                     //在编辑框显示时间
    y=t.GetYear();
    m=t.GetMonth();
    d=t.GetDay();
    h=t.GetHour();
    m1=t.GetMinute();
    s1=t.GetSecond();
    Y.Format("%d",y);
    M.Format("%d",m);
    D.Format("%d",d);
    H.Format("%d",h);
    M1.Format("%d",m1);
    S.Format("%d",s1);
    m_edit1=Y+"."+M+"."+D+" | "+H+"."+M1+"."+S;

总体框架

    case 9:                                     // 选择总业务按键
        if((code=GetDtmfCode(m_ValidCh))!=-1)
            {
               if (code==10)
               {
                      m_ChState=1;
               }
               if(code==1)
               {
                      m_ChState=71;
               }
               if(code==2)
               {
                      m_ChState=72;
               }
               if(code==3)
               {
                      m_ChState=73;
               }
               if(code==4)
               {
                      m_ChState=74;

               }
            }
            else if(CheckPlayEnd(m_ValidCh))
            {
                StopPlayFile(m_ValidCh);
                m_ChState=2;
            }
            break;

完整代码:

基于C++、MFC、东进语音卡以及数据库等技术的10086智慧校园程序源码-其它文档类资源-CSDN下载

标签: c++ 数据库架构

本文转载自: https://blog.csdn.net/yyfloveqcw/article/details/124374916
版权归原作者 渣渣ye 所有, 如有侵权,请联系我们删除。

“仿10086电信业务平台”的评论:

还没有评论