版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CHINAUNIVERSI^FYOFPETltOLEUM暑期实习报告题目:简易手机10086的制作学生姓名:学号:专业班级:通信工程2011级1班指导教师:2012年7月16日第1章前言暑期实习课题的背景(来源)和意义为了加深对通信工程这一专业的了解,加强对一年来学习的语言的实际应用的掌握,进行了这次的专业实习。此次实习所编的系统以10086为模版,通过VC编程,利用语音卡建立的简单的模拟手机服务,主要有单次通话查多手机余额,和客户留言两功能。本次实习最大的意义在于熟悉MFC的使用,加深对C++知识的应用,并在书本的基础上拓展实战的能力,如初步使用数据库等,培养独立编程,和解决问题的能力。暑期实习课题的主要任务总的来说,这个模拟10086的功能极其有限,仅有余额查询和反馈留言两项功能。但其中有包括了不少零碎的小模块,如手机号码位数匹配,手机号码匹配,余额提取和读出,定时播放忙音,和一次通话可查多个号码。暑期实习整体设计。该系统主要分三个模块:进入系统模块,业务服务模块,和检测挂机模块。进入系统模块主要包括检测摘机和接收号码并匹配的过程,其中摘机检测和接收号码较为简单,而号码匹配的过程则用到数据库的建立与链接;进入服务模块,首先要选择服务类型利用条件语句对客户反映进行判断并执行相应功能函数来执行响应的服务操作;最后的检测挂机主要功能是在通话的任意时刻检测用户是否挂机,若是,则处理系统内存初始化变量已备下一通话的使用。总体流程为检测摘机——播放声音选择服务——0查询余额——输入手机号码——检测号码位数是否正确——(是)检测数据库中是否有匹配号码——<——(否)提醒输入有误返回重输[是]匹配号码读出余额——1重新读数#查询其他手机余额
[否]提醒空号检查并重输
检测摘机——播放声音选择服务——1反馈留言——播放提示音开始留言——#结束录音——播放录音——检测挂机。其中输入号码前与提醒服务按键后若客户无动作,则向其播放忙音提醒挂机。任何情况下挂机军结束服务并还原所有变量,等待下次呼入。第2章相关技术以下为系统编写的大体过程:编辑基本界面一将内容显示到list内一设置定时器——刷新列表信息——检测摘挂机并播放相应声音文件——接受电话输入号码(多位)——设置判断输入号码位数——正确读出多位数——设置定时器一定条件下播放忙音——创建并连接数据库——判断用户输入号码是否匹配数据库——设置录音功能——用户界面设置。程序创建为MFC基于对话框的工程,在整个系统编写过程中,主要功能实现代码基本都在OnTimer函数中,将内容显示到list内主要用到函数m_List.SetItemText();设置定时器用到SetTimerO;利用OnTimer实现对信息的及时处理和刷新;摘挂机检测需要利用if(OffHookDetect(m_ValidCh))〃摘机检测{m_State="摘机";m_ChState=2;sts="";}if(HangUpDetect(m_ValidCh))〃挂机检测{StopPlayFile(m_ValidCh);m_ChState=1; //任何情况下挂机就进入空闲状态m_List.SetItemText(m_ValidCh,2,"空闲");m_List.SetItemText(m_ValidCh,3,"");}播放声音文件用到函数StartPlayFileO;//开始播放if(CheckPlayEnd(m_ValidCh))//判断文件是否播放完毕{}StopPlayF订e();停止播放文件接受用户按键需定义变量code并利用函数GetDtmfCodecode=GetDtmfCode(m_ValidCh));接收按键后,用if语句判断所要进行的操作。如if((code=GetDtmfCode(m_ValidCh))!=-1)〃接收手机号{StopPlayFile(m_ValidCh);if(code==12){StartPlayFile(m_ValidCh,"erro",0L);InitDtmfBuf(m_ValidCh);}else{if(code==10){ch=code+38;}else{ch=code+48;}st=ch;sts=sts+st;m_List.SetItemText(m_ValidCh,3,sts);}}接收手机号码时,需要用到字符串和类型转化。其中,特别注意“0”案件的特殊利用strlen函数得到号码长度,并判断是否正常。利用数据库连接函数checkPass判断数据库中是否有匹配数据。若数据库中没有可匹配的数据,则提示为空号。否则读取数据。intCMyapp1Dlg::checkPass(CStringss){_variant_tvar;CStringSQL;inthh=0;char*STRSQL;SQL="SELECT*FROMphoneWHEREphonenum='"+ss+"'";STRSQL=SQL.GetBuffer(SQL.GetLength());m_pConnection.CreateInstance(__uuidof(Connection));try{m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=myphone.mdb","","",adModeUnknown);m_pRecordset.CreateInstance(__uuidof(Recordset));m_pRecordset->Open(STRSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);while(!m_pRecordset->adoEOF){hh=1;m_pRecordset->MoveNext();//m_pRecordset->}m_pRecordset->Close();m_pRecordset=NULL;if(m_pConnection->State)m_pConnection->Close();m_pConnection=NULL;}catch(_com_error*e){AfxMessageBox(e->ErrorMessage());}returnhh;}想要取出相应的余额还要用到另一个函数getMoney具体代码较长连接数据库与checkPass函数相同具体取值方法类似将取出的余额赋给另一变量进行其他操作strcpy(re,getMoney(sts));正确读出余额只需将0,1,2,3,4,5,6,7,8,9,十,百,千的声音文件正确顺序选择播放。正确判断不同位上为0的读法不同,处理读数的正确逻辑即可。在特定情况下开始一个计时器进行忙音播放的操作开始计时器StartTimer(m_ValidCh,3);利用另一函数返回计时器的时间以判断进行操作if(ElapseTime(m_ValidCh,3)<=1200){if((code=GetDtmfCode(m_ValidCh))!=-1){StopPlayFile(m_ValidCh);if(code==1){m_ChState=6;}if(code==12){m_List.SetItemText(m_ValidCh,3,"");丄 “〃sts="";m_ChState=4;}}}else{StartPlaySignal(m_ValidCh,SIG_BUSY1);m_ChState=18;}录音功能的实现StartRecordF订e(m_ValidCh,"录音",1000000);if(CheckRecordEnd(m_ValidCh)){StopRecordFile(m_ValidCh);m_ChState=21;}以上为较大功能模块所用到的重要工具。
程序运行界面:简易手机客服程序运行后,在状态栏中显□内线程序运行界面:简易手机客服程序运行后,在状态栏中显□内线1内线空闲2空闲3空床4内悄空闲5內绪空闲&空闲T内线空讯线路号手机号码挂机示通话状态和运行过程。在手机号码栏中显示用户输入的手机号码,在余额一栏中显示输入手机号码对应的余额。第3章个人总结怀着好奇的心态开始第一次的实习,然后慢慢感觉枯燥,乏味,每当遇到难题,总想去自己攻克它,但屡屡调试,修改失败,总会觉得有点想放弃,但跳过这个过程下面的又不能继续,因此,在与同学的讨论,自己的思考中将一个个错误修改,然后心情豁然开朗,克服困难是一种享受,这是实习中最大的体会。但实习的效果不仅仅是这点。经过一年的学习,我可以使用计算机语言做出简单的程序,但那远远不够。而这次实习,相比平时学习,是一种升华。经过实习,我对于所学知识有了更加深刻的认识,对专业的了解也更深一步。整个实习中,除了学会了一些新的方法,代码,实现了几项功能,更重要的是体会到了编程的乐趣,感悟到编程的思想,对自己的专业和定位更加明确。编程的过程是困难的,但正是困难才让我学到更多。刚开始实习时,由于对MFC和数据库不了解,总是一头雾水,只能照着给的例子进行下去。但是慢慢地我知道知识的残缺是正常的,在我看来,程序也是堆起来的,从最基本的对话框一点点的添加,修改,直到最后做出一个虽不完美但是完整的程序。因此,实习是个循序渐进,让自己领悟方法的过程。我感受到在编程过程中能过保持冷静的头脑是很重要的,遇到问题不恐惧,反复调试无果时不急躁,不放弃是一个编程人员需要具备的心理素质,唯有这样,我们才能充分开发自己的头脑,发散自己的思维,从不同的角度获取解决问题的方法。知识的巩固和延拓也是本次实习中的一大收获,它弥补了我编程知识的漏洞。在编程过程中,我体会到实际上机操作与平常考试完全不同,上机调试锻炼了我们的操作能力和综合考虑问题的能力。它是课本知识的一次大的实际应用,是各个知识点的一次综合。无论是以前学的C++,还是新接触的数据库,所有的困难都带给我不同的收获,对以前的知识是种巩固,而对以后需要的知识是种提前储备。这次的实习更让我明白以后的路还长,现在学的也许连皮毛都不是,无论是C,C++,还是MFC,数据库,我都没有真正领会到他们的内涵。因此,对于以后要走的路,我还需要坚持不懈的学习。另外,实习的过程中有一个认识就是一定要头脑清晰,无论是设计流程还是编写代码,亦或是调试,修改代码,都需要冷静的分析。因为一个程序编起来,一定不会太短,也会涉及到很多不同方面的问题,这次实习中,就遇到了这样的问题,只是因为内存溢出的小问题,我浪费了两天的时间去找出它,然后才修改成功继续进行流程。因此对于编程人员来说,了解各种错误的发生情况和修改方法是必须的,而要做到能很快的找出错误点,平时编程就要有对各种错误的积累和经验。所以此次实习,在编程上遇到的问题也是一大收获。以下列举少量错误:1.控件值传递:控件向变量UpdateData(false);变量向控件;UpdateData只有一个BOOL类型的参数,UpdateData(FALSE)—般用于对话框控件连接的变量值刷新屏幕显示,UpdateData(true)相反2•在输入类名•后不显示下属函数:将文件夹中的nep文件删除;数组定义太短。并没有再合适的位置初始化,会导致内存溢出造成错误;播放忙音:StartPlaySignal(m_ValidCh,SIG_BUSY1);开始播放忙音。但不可缺少FeedSigFuncO;是忙音持续播放;定时器StartTimer(m_ValidCh,3);ElapseTime(m_ValidCh,3)<=/>=xx(注意单位不是毫秒而是0.01秒)。StopPlayFile(m_ValidCh);StartPlayFile(m_ValidCh,"",0L)必须搭配使用在必要时候干净的删除一个类:先从workspace中的fileview中删除对应的・h和・cpp文件;再关闭项目,从实际的文件夹中删除对应的・h和.cpp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 18《富饶的西沙群岛》第一课时 教学实录-2024-2025学年语文三年级上册统编版
- 2024年度“智能城市规划与咨询合同及”2篇
- 2024版企业财务风险管理培训与咨询服务协议2篇
- 2024企业智能客服系统外包服务合同范本3篇
- 《综合与实践 我的幼儿园》(教学实录)-2024-2025学年数学西师大版一年级上册
- 2024版住宅房产抵押担保简易合同模板3篇
- 2024年度钟毓餐饮公司与食材供应商关于食材采购的合同3篇
- 2024至2030年中国尼龙半包覆综行业投资前景及策略咨询研究报告
- 2024至2030年中国全棉单珠地网眼布行业投资前景及策略咨询研究报告
- 2021重阳节献给老年人的祝福
- 古代文学南唐词派中主后主以及三人为代表的
- 模板支撑体系工程施工方案
- 室内滑冰馆建设工程项目实施建议书
- 乌干达NK项目一般填方路基施工方案
- 数学实验 平行四边形的性质
- 旋挖钻孔灌注桩施工作业指导书
- 2020新译林版高一英语新教材必修一全册单词表
- 六朝旧事荷塘新解
- NB/T 10742-2021智能化综采工作面设计规范
- GB/T 5053.1-1985汽车与挂车之间24N型电连接器
- 国家开放大学《人力资源管理》期末试题及答案
评论
0/150
提交评论