版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
CHINAUNIVERSI^FYOFPETltOLEUM暑期實習報告題目:簡易手機10086的制作學生姓名:學號:專業(yè)班級:通信工程2011級1班指導(dǎo)教師:2012年7月16日第1章前言暑期實習課題的背景(來源)和意義為了加深對通信工程這一專業(yè)的了解,加強對一年來學習的語言的實際應(yīng)用的掌握,進行了這次的專業(yè)實習。此次實習所編的系統(tǒng)以10086為模版,通過VC編程,利用語音卡建立的簡單的模擬手機服務(wù),主要有單次通話查多手機余額,和客戶留言兩功能。本次實習最大的意義在于熟悉MFC的使用,加深對C++知識的應(yīng)用,并在書本的基礎(chǔ)上拓展實戰(zhàn)的能力,如初步使用數(shù)據(jù)庫等,培養(yǎng)獨立編程,和解決問題的能力。暑期實習課題的主要任務(wù)總的來說,這個模擬10086的功能極其有限,僅有余額查詢和反饋留言兩項功能。但其中有包括了不少零碎的小模塊,如手機號碼位數(shù)匹配,手機號碼匹配,余額提取和讀出,定時播放忙音,和一次通話可查多個號碼。暑期實習整體設(shè)計。該系統(tǒng)主要分三個模塊:進入系統(tǒng)模塊,業(yè)務(wù)服務(wù)模塊,和檢測掛機模塊。進入系統(tǒng)模塊主要包括檢測摘機和接收號碼并匹配的過程,其中摘機檢測和接收號碼較為簡單,而號碼匹配的過程則用到數(shù)據(jù)庫的建立與鏈接;進入服務(wù)模塊,首先要選擇服務(wù)類型利用條件語句對客戶反映進行判斷并執(zhí)行相應(yīng)功能函數(shù)來執(zhí)行響應(yīng)的服務(wù)操作;最后的檢測掛機主要功能是在通話的任意時刻檢測用戶是否掛機,若是,則處理系統(tǒng)內(nèi)存初始化變量已備下一通話的使用。總體流程為檢測摘機——播放聲音選擇服務(wù)——0查詢余額——輸入手機號碼——檢測號碼位數(shù)是否正確——(是)檢測數(shù)據(jù)庫中是否有匹配號碼——<——(否)提醒輸入有誤返回重輸[是]匹配號碼讀出余額——1重新讀數(shù)#查詢其他手機余額
[否]提醒空號檢查并重輸
檢測摘機——播放聲音選擇服務(wù)——1反饋留言——播放提示音開始留言——#結(jié)束錄音——播放錄音——檢測掛機。其中輸入號碼前與提醒服務(wù)按鍵后若客戶無動作,則向其播放忙音提醒掛機。任何情況下掛機軍結(jié)束服務(wù)并還原所有變量,等待下次呼入。第2章相關(guān)技術(shù)以下為系統(tǒng)編寫的大體過程:編輯基本界面一將內(nèi)容顯示到list內(nèi)一設(shè)置定時器——刷新列表信息——檢測摘掛機并播放相應(yīng)聲音文件——接受電話輸入號碼(多位)——設(shè)置判斷輸入號碼位數(shù)——正確讀出多位數(shù)——設(shè)置定時器一定條件下播放忙音——創(chuàng)建并連接數(shù)據(jù)庫——判斷用戶輸入號碼是否匹配數(shù)據(jù)庫——設(shè)置錄音功能——用戶界面設(shè)置。程序創(chuàng)建為MFC基于對話框的工程,在整個系統(tǒng)編寫過程中,主要功能實現(xiàn)代碼基本都在OnTimer函數(shù)中,將內(nèi)容顯示到list內(nèi)主要用到函數(shù)m_List.SetItemText();設(shè)置定時器用到SetTimerO;利用OnTimer實現(xiàn)對信息的及時處理和刷新;摘掛機檢測需要利用if(OffHookDetect(m_ValidCh))〃摘機檢測{m_State="摘機";m_ChState=2;sts="";}if(HangUpDetect(m_ValidCh))〃掛機檢測{StopPlayFile(m_ValidCh);m_ChState=1; //任何情況下掛機就進入空閑狀態(tài)m_List.SetItemText(m_ValidCh,2,"空閑");m_List.SetItemText(m_ValidCh,3,"");}播放聲音文件用到函數(shù)StartPlayFileO;//開始播放if(CheckPlayEnd(m_ValidCh))//判斷文件是否播放完畢{}StopPlayF訂e();停止播放文件接受用戶按鍵需定義變量code并利用函數(shù)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);}}接收手機號碼時,需要用到字符串和類型轉(zhuǎn)化。其中,特別注意“0”案件的特殊利用strlen函數(shù)得到號碼長度,并判斷是否正常。利用數(shù)據(jù)庫連接函數(shù)checkPass判斷數(shù)據(jù)庫中是否有匹配數(shù)據(jù)。若數(shù)據(jù)庫中沒有可匹配的數(shù)據(jù),則提示為空號。否則讀取數(shù)據(jù)。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;}想要取出相應(yīng)的余額還要用到另一個函數(shù)getMoney具體代碼較長連接數(shù)據(jù)庫與checkPass函數(shù)相同具體取值方法類似將取出的余額賦給另一變量進行其他操作strcpy(re,getMoney(sts));正確讀出余額只需將0,1,2,3,4,5,6,7,8,9,十,百,千的聲音文件正確順序選擇播放。正確判斷不同位上為0的讀法不同,處理讀數(shù)的正確邏輯即可。在特定情況下開始一個計時器進行忙音播放的操作開始計時器StartTimer(m_ValidCh,3);利用另一函數(shù)返回計時器的時間以判斷進行操作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;}錄音功能的實現(xiàn)StartRecordF訂e(m_ValidCh,"錄音",1000000);if(CheckRecordEnd(m_ValidCh)){StopRecordFile(m_ValidCh);m_ChState=21;}以上為較大功能模塊所用到的重要工具。
程序運行界面:簡易手機客服程序運行后,在狀態(tài)欄中顯□內(nèi)線程序運行界面:簡易手機客服程序運行后,在狀態(tài)欄中顯□內(nèi)線1內(nèi)線空閑2空閑3空床4內(nèi)悄空閑5內(nèi)緒空閑&空閑T內(nèi)線空訊線路號手機號碼掛機示通話狀態(tài)和運行過程。在手機號碼欄中顯示用戶輸入的手機號碼,在余額一欄中顯示輸入手機號碼對應(yīng)的余額。第3章個人總結(jié)懷著好奇的心態(tài)開始第一次的實習,然后慢慢感覺枯燥,乏味,每當遇到難題,總想去自己攻克它,但屢屢調(diào)試,修改失敗,總會覺得有點想放棄,但跳過這個過程下面的又不能繼續(xù),因此,在與同學的討論,自己的思考中將一個個錯誤修改,然后心情豁然開朗,克服困難是一種享受,這是實習中最大的體會。但實習的效果不僅僅是這點。經(jīng)過一年的學習,我可以使用計算機語言做出簡單的程序,但那遠遠不夠。而這次實習,相比平時學習,是一種升華。經(jīng)過實習,我對于所學知識有了更加深刻的認識,對專業(yè)的了解也更深一步。整個實習中,除了學會了一些新的方法,代碼,實現(xiàn)了幾項功能,更重要的是體會到了編程的樂趣,感悟到編程的思想,對自己的專業(yè)和定位更加明確。編程的過程是困難的,但正是困難才讓我學到更多。剛開始實習時,由于對MFC和數(shù)據(jù)庫不了解,總是一頭霧水,只能照著給的例子進行下去。但是慢慢地我知道知識的殘缺是正常的,在我看來,程序也是堆起來的,從最基本的對話框一點點的添加,修改,直到最后做出一個雖不完美但是完整的程序。因此,實習是個循序漸進,讓自己領(lǐng)悟方法的過程。我感受到在編程過程中能過保持冷靜的頭腦是很重要的,遇到問題不恐懼,反復(fù)調(diào)試無果時不急躁,不放棄是一個編程人員需要具備的心理素質(zhì),唯有這樣,我們才能充分開發(fā)自己的頭腦,發(fā)散自己的思維,從不同的角度獲取解決問題的方法。知識的鞏固和延拓也是本次實習中的一大收獲,它彌補了我編程知識的漏洞。在編程過程中,我體會到實際上機操作與平常考試完全不同,上機調(diào)試鍛煉了我們的操作能力和綜合考慮問題的能力。它是課本知識的一次大的實際應(yīng)用,是各個知識點的一次綜合。無論是以前學的C++,還是新接觸的數(shù)據(jù)庫,所有的困難都帶給我不同的收獲,對以前的知識是種鞏固,而對以后需要的知識是種提前儲備。這次的實習更讓我明白以后的路還長,現(xiàn)在學的也許連皮毛都不是,無論是C,C++,還是MFC,數(shù)據(jù)庫,我都沒有真正領(lǐng)會到他們的內(nèi)涵。因此,對于以后要走的路,我還需要堅持不懈的學習。另外,實習的過程中有一個認識就是一定要頭腦清晰,無論是設(shè)計流程還是編寫代碼,亦或是調(diào)試,修改代碼,都需要冷靜的分析。因為一個程序編起來,一定不會太短,也會涉及到很多不同方面的問題,這次實習中,就遇到了這樣的問題,只是因為內(nèi)存溢出的小問題,我浪費了兩天的時間去找出它,然后才修改成功繼續(xù)進行流程。因此對于編程人員來說,了解各種錯誤的發(fā)生情況和修改方法是必須的,而要做到能很快的找出錯誤點,平時編程就要有對各種錯誤的積累和經(jīng)驗。所以此次實習,在編程上遇到的問題也是一大收獲。以下列舉少量錯誤:1.控件值傳遞:控件向變量UpdateData(false);變量向控件;UpdateData只有一個BOOL類型的參數(shù),UpdateData(FALSE)—般用于對話框控件連接的變量值刷新屏幕顯示,UpdateData(true)相反2?在輸入類名?后不顯示下屬函數(shù):將文件夾中的nep文件刪除;數(shù)組定義太短。并沒有再合適的位置初始化,會導(dǎo)致內(nèi)存溢出造成錯誤;播放忙音:StartPlaySignal(m_ValidCh,SIG_BUSY1);開始播放忙音。但不可缺少FeedSigFuncO;是忙音持續(xù)播放;定時器StartTimer(m_ValidCh,3);ElapseTime(m_ValidCh,3)<=/>=xx(注意單位不是毫秒而是0.01秒)。StopPlayFile(m_ValidCh);StartPlayFile(m_ValidCh,"",0L)必須搭配使用在必要時候干凈的刪除一個類:先從workspace中的fileview中刪除對應(yīng)的?h和?cpp文件;再關(guān)閉項目,從實際的文件夾中刪除對應(yīng)的?h和.cpp
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 購銷合同樣本家具
- 招標價格比較分析報告
- 私人裝修服務(wù)承諾
- 標準施工招標文件的文本解析
- 電腦技術(shù)支持服務(wù)
- 補充協(xié)議之延期合同編寫
- 會議室音響設(shè)備采購合同供應(yīng)商比較
- 凹型方管采購合同制度
- 保障升學教育服務(wù)合同
- 定制化保安服務(wù)合同樣本
- 2024個稅內(nèi)部培訓
- 辦公樓外立面玻璃更換施工方案
- 出生醫(yī)學證明警示教育培訓
- 2024-2025學年人教版道法八年級上冊 第一學期期末測試卷01
- DB11-T 2324-2024腳手架鋼板立網(wǎng)防護應(yīng)用技術(shù)規(guī)程
- 期末試卷(試題)-2024-2025學年四年級上冊數(shù)學滬教版
- 期末復(fù)習知識點-2024-2025學年統(tǒng)編版道德與法治九年級上冊
- 中圖版地理八年級上冊 第二章 第一節(jié) 世界的氣溫和降水教案
- 工程咨詢質(zhì)量管理制度
- 基于深度教學構(gòu)建高品質(zhì)課堂
- 2024年礦山(提升機操作作業(yè)員)安全及技能資格證考試題庫與答案
評論
0/150
提交評論