




已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C+面向?qū)ο笳n程設(shè)計報告院(系): 計算機工程學院 專業(yè): 計算機網(wǎng)絡(luò) 學生姓名: 班級:學號: 題目: 手機通話記錄管理系統(tǒng) 起迄日期: 設(shè)計地點: 指 導 教 師: 完成日期: 2012 年 5 月 4 日一、 課程設(shè)計目的進行本次C+面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計主要是在學習了C+這門面向?qū)ο笳Z言之后,依靠自己的理解自學MFC,掌握一種可視化編程的方法,加深對C+這門語言的理解并強化記憶。同時,可以提高運用C+編程語言解決實際問題的能力,在進行課程設(shè)計的過程中對于一些算法的設(shè)計可以使我們更好的應(yīng)對C+以及其他編程語言的綜合編程能力,還能提高調(diào)查研究、查閱技術(shù)文獻、資料以及編寫軟件設(shè)計文檔的能力。二、 課程設(shè)計內(nèi)容與實現(xiàn)的功能 1)設(shè)計內(nèi)容:1、 模擬手機的通話記錄功能,具有記錄最新20個未接電話、已接電話、已撥電話(并記錄時間,并按時間排序);2、 相同的記錄只記錄最新的一個;3、 符合課題的要求,實現(xiàn)響應(yīng)功能,可以增加其他功能或者修飾,使程序更加完善合理;4、 要求界面友好美觀,操作簡便易行。2) 實現(xiàn)基本功能:1、模擬手機的通話記錄功能,具有記錄最新20個未接電話、已接電話、已撥電話(并記錄時間,并按時間排序);2、 相同的記錄只記錄最新的一個;3)基于上述功能,又添加了幾個功能,使程序模擬效果更合理些,添加功能包括:1、 簡易的電話簿電話薄功能:只實現(xiàn)能夠讀取出數(shù)據(jù)庫中存儲的10個聯(lián)系人的姓名以及電話號碼,可以根據(jù)個人需要往數(shù)據(jù)庫中添加自己的聯(lián)系人,之所以不在程序界面實現(xiàn)添加功能是考慮到可能這樣會偏離設(shè)計的主題,不利于界面的美觀。2、 實際的來模擬手機的撥打、接聽、掛斷、等待等的功能,將操作的結(jié)果存入撥打、未接、已接等的記錄中,可以更好的實現(xiàn)通話記錄的管理這一功能。3、 考慮到個人手機的通話管理功能,在本通話記錄管理系統(tǒng)中,添加了一個刪除記錄的功能,可以將界面顯示的記錄與數(shù)據(jù)庫中對應(yīng)的記錄同步刪除,更加方便易行。三、 系統(tǒng)分析與設(shè)計1、 系統(tǒng)分析1) 基于本系統(tǒng)設(shè)計的要求,我首先做的是回想自己用過的手機中通話記錄的管理有一些什么樣的功能,初步分析,如果要真正的實現(xiàn)一個手機通話記錄管理系統(tǒng)的模擬這兩個功能是不夠的,還需要有刪除記錄的功能。本系統(tǒng)主要實現(xiàn)的就是對于電話號碼的操作,可以將從界面中獲得的電話號碼添加的數(shù)據(jù)庫中,對數(shù)據(jù)庫進行操作,從而間接的在界面上對電話號碼進行操作。2) 在系統(tǒng)中初步確定的功能有:(1)模擬手機的撥打、接聽、掛斷、等待等的功能,(2)將操作的結(jié)果存入撥打、未接、已接等的數(shù)據(jù)庫表中(3)通過界面按鈕可以查看數(shù)據(jù)庫中存儲的撥打、未接、已接號碼,也可以同步的將界面顯示的與數(shù)據(jù)庫中的記錄刪除。2、系統(tǒng)設(shè)計:2.1、模塊設(shè)計:對于這一課題的總體模塊設(shè)計:1) 首先需要對于打電話接電話的過程進行模擬,對此我準備設(shè)置一個撥打電話的編輯框,里面輸入要撥打的電話號碼,還有設(shè)置一個來電號碼的編輯框,用來接收撥打號碼編輯中的號碼,相當于一個打電話接電話的模擬,不過來電號碼也可以自己輸畢竟可能來自于未知的號碼。2) 對于“撥打”按鈕下我設(shè)置一個void CPhoneRecordDlg:OnDo()函數(shù),當單擊這個按鈕時候執(zhí)行里面的代碼進行邏輯處理完成存儲撥打號碼的操作,同理分別設(shè)置了“接收”、“等待。”、“掛斷”三個按鈕,分別為void CPhoneRecordDlg:OnReceive() 、void CPhoneRecordDlg:OnWait() 、void CPhoneRecordDlg:OnInterrupt() 在這三個函數(shù)體下進行對應(yīng)的邏輯處理記錄相應(yīng)的記錄以便后面進行查看刪除等的操作。3) 我們需要查看的是撥打、掛斷等的記錄,所以相應(yīng)的我又設(shè)置了三個按鈕“查看已撥電話”、“查看已接電話”、“查看未接電話”對應(yīng)的函數(shù)分別voidCPhoneRecordDlg:OnCheckdo()、void CPhoneRecordDlg:OnCheckrec() 、void CPhoneRecordDlg:OnChecknorec()完成的操作時當點擊這三個按鈕時會分別彈出對應(yīng)的子對話框進行查看或者刪除。 4) 下面的操作就是對于通話記錄的查看以及刪除操作,在撥打中,彈出的對應(yīng)子對話框中分別添加兩個按鈕:“查看”、“刪除”,當當單擊“查看”按鈕時,會從對應(yīng)的數(shù)據(jù)庫表中查詢出前20條最新記錄并顯示在列表框中函數(shù)體為void CHdoneDlg:OnCheckd(),要將列表框設(shè)置一個control類型變量,通過調(diào)用InsertString()函數(shù)來向列中添加記錄,然后單擊刪除的時候調(diào)用函數(shù)體void CHdoneDlg:OnDeletedo() ,分別調(diào)用GetCurSel()獲取選擇列,m_list1.GetText(i,text)和m_list1.DeleteString(i)進行對應(yīng)列的刪除操作,刪除列表框中選中項的同時,通過數(shù)據(jù)函數(shù)的操作將數(shù)據(jù)庫中的內(nèi)容同步刪除。5) 添加一個簡單的“電話薄”功能,用來從數(shù)據(jù)庫中查找部分熟識人電話進行直接撥打,我分別從數(shù)據(jù)庫中查出英文以及利用CStdioFile file對于txt文本進行操作讀取出里面的中文+號碼顯示在兩個對話框中。2.2、數(shù)據(jù)庫表設(shè)計:1)電話薄表(numberbook):設(shè)置了一列bid 自增以及存儲號碼的一列bnumber如下:2)撥打電話記錄表(dorecord):設(shè)置了did自增、撥打電話號碼列dnumber以及記錄日期時間的ddate如下:3)未接電話記錄表(norecrecord):設(shè)置了nid自增、未接電話號碼列nonumber和記錄日期時間的nodate如下:4)已接電話記錄表(receiverecord):設(shè)置了rid自增、已接電話號碼列rnumber和記錄來電日期時間的rdate如下:2.3、算法流程圖:四、系統(tǒng)測試與調(diào)試分析1、系統(tǒng)測試測試說明測試名稱手機通話記錄管理系統(tǒng)測試目的驗證系統(tǒng)通過電話薄撥打號碼的流程測試技術(shù)單元測試測試方法黑盒測試法測試用例測試內(nèi)容電話薄功能中選擇撥打功能測試步驟選擇電話薄中的號碼并撥打選擇電話薄中的號碼但不撥打不選擇電話薄中的號碼不撥打測試數(shù)據(jù)電話薄中選擇號碼,按“撥打”電話薄中選擇號碼,不按“撥打”不選擇電話薄中選擇號碼,不按“撥打”預(yù)期結(jié)果電話薄中選擇號碼撥打成功并加入到數(shù)據(jù)庫中電話薄中選擇號碼進入撥打編輯框但沒加入到數(shù)據(jù)庫中電話薄中選擇號碼不加入編輯框中測試結(jié)果與預(yù)期相符與預(yù)期相符與預(yù)期相符2、調(diào)試分析:1)遇到問題:在電話簿中選擇了一條記錄之后如何單擊一個按鈕從列表框中讀取選中的記錄并加入編輯框中開始不會解決,主要是對于列表框的應(yīng)用不是很熟悉。 解決方法:通過網(wǎng)上查找相關(guān)的資料比如列表框的操作都如何實現(xiàn)等的方法,了解到應(yīng)該對于列表框關(guān)聯(lián)一個control型的變量,然后利用這個變量的GetCurSel()函數(shù)來獲取當前選中的行號,然后利用GetText(i,text)函數(shù)獲取行號中的內(nèi)容給text,再利用SetDlgItemText(IDC_EDIT1,text);將text的值添加到編輯框,就可以單擊撥打完成撥打操作了。具體代碼如下:CString text;int i=m_cb1.GetCurSel();/獲得選中的行號if(i0)/先判斷一下有沒有選中行MessageBox(無電話號碼!);elsem_cb1.GetText(i,text);/將選中行號的內(nèi)容賦給textSetDlgItemText(IDC_EDIT1,text);/將text的內(nèi)容添加到編輯框中2)回顧展望:對于電話薄的模擬是添加的一個功能,功能不是很齊全是考慮到可能會脫離“手機通話記錄”管理這一課題。數(shù)據(jù)庫中對于漢字的支持不好,以后可以想辦法加以改進使界面能夠直接從數(shù)據(jù)庫中讀取并顯示,是程序界面更加的完善可觀。五、用戶手冊1)此系統(tǒng)運行在windows xp或win7操作系統(tǒng)環(huán)境下,不需要安裝,直接雙擊PhoneRecord.exe即可運行程序2)以下流程將指導您如何使用該軟件:1、雙擊PhoneRecord.exe可執(zhí)行文件運行手機通話記錄管理系統(tǒng),彈出以下操作界面:2、首先可以查看電話簿功能,單擊“電話簿”按鈕,會出現(xiàn)以下界面:其中,左面的漢字姓名+電話號碼是從記事本numberbook.txt里面讀取的,而右面的編輯框中出現(xiàn)的是從數(shù)據(jù)庫中查找出的聯(lián)系人+電話號碼,可以按順序相互對照,適合國人與外國人。3、可以在右面的電話簿中選中一條記錄然后單擊選擇:會將選擇的一條記錄加入到撥打的編輯框中,如果此時單擊撥打,就會將此時撥打電話編輯框中的內(nèi)容加入到撥打電話數(shù)據(jù)庫中,而且會將撥打的電話加入到來電號碼編輯框中,也可以自己輸入不同位數(shù)的電話號碼然后單擊撥打,這是模擬撥打的過程,顯示結(jié)果如下:4、在上面的界面中,可以單擊“接收”按鈕,會出現(xiàn)以下界面,并且將來電號碼后面的編輯框中的內(nèi)容加入到已接電話數(shù)據(jù)庫的記錄中以待查看:5、同樣,如果在3所示的界面中,單擊“等待”按鈕,程序會等待10秒鐘,然后出現(xiàn)以下界面并將編輯框內(nèi)容加入到未接數(shù)據(jù)庫中:這是模擬的來電因個別原因未來得及接系統(tǒng)自動掛斷的過程。6、如果在3所示的界面中,直接單擊“掛斷”,會直接將編輯框內(nèi)容加入到未接數(shù)據(jù)庫中,出現(xiàn)以下界面:這是模擬因有事而不方便接聽直接掛斷的過程。7、可以分別單擊“已撥電話”,“已接電話”,“未接電話”來查看電話記錄,這里舉例“查看已接電話”,單擊之后會彈出以下界面:單擊“查看”按鈕,系統(tǒng)會從數(shù)據(jù)庫中將已撥電話的記錄讀取最新的前20條,以下為查詢出的界面:此時若選擇一條記錄單擊選擇,然后單擊“刪除”按鈕之后,會在列表框中刪除該條記錄,同時數(shù)據(jù)庫中的記錄也會被刪除在以上界面中如果單擊完“確定”之后再單擊“查看”按鈕,就會將數(shù)據(jù)庫中做刪除操作之后的前20條數(shù)據(jù)重新讀取并顯示出來。其他?!安榭次唇与娫挕币约啊安榭匆褤茈娫挕钡墓δ芘c此功能類似,可以仿照此功能進行操作。8、在以下界面中如果單擊“清除”,會將撥打電話編輯框和來電號碼編輯框中的內(nèi)容全部清除。這是清除功能。六、程序清單1、與mysql數(shù)據(jù)庫連接代碼段:CDatabase db;/創(chuàng)建一個數(shù)據(jù)庫連接對象 if(!db.IsOpen()/判斷數(shù)據(jù)庫是否已經(jīng)被打開BOOL bflag=db.Open(phone,false,false,ODBC;DNS=phone;UID=root;PWD=123);/連接數(shù)據(jù)庫if(!bflag)/判斷是否連接上 AfxMessageBox(打開數(shù)據(jù)庫失?。?;2、 撥打并連同時間一同加入數(shù)據(jù)庫功能代碼:void CPhoneRecordDlg:OnDo() /撥打功能函數(shù)體CString str1;CString str2;CTime tm;/創(chuàng)建一個系統(tǒng)時間對象tm=CTime:GetCurrentTime();/獲取當前系統(tǒng)時間str1=tm.Format(%Y-%m-%d %X);UpdateData();str2=m_do;SetDlgItemText(IDC_EDIT2,str2);/數(shù)據(jù)庫連接CDatabase db; if(!db.IsOpen()/判斷數(shù)據(jù)庫是否已經(jīng)被打開BOOL bflag=db.Open(phone,false,false,ODBC;DNS=phone;UID=root;PWD=123);/連接數(shù)據(jù)庫if(!bflag) AfxMessageBox(打開數(shù)據(jù)庫失??!); CRecordset rs(&db);/綁定數(shù)據(jù)庫結(jié)果集CString strsql;strsql=select * from dorecord;rs.Open(CRecordset:forwardOnly, strsql);/查詢數(shù)據(jù),獲得結(jié)果集while(!rs.IsEOF()/遍歷數(shù)據(jù)庫結(jié)果集CString dnum;rs.GetFieldValue(dnumber,dnum);/MessageBox(dnum);if(dnum=str2) CString strSQL1;strSQL1.Format(delete from dorecord where dnumber=%s,dnum);/從數(shù)據(jù)庫中刪除相同的舊記錄db.ExecuteSQL(strSQL1);rs.MoveNext();CString strSQL; strSQL.Format(insert into dorecord(dnumber,ddate) values(%s,%s),str2,str1);/向數(shù)據(jù)庫中插入最新的記錄db.ExecuteSQL(strSQL);3、 單擊“查看*記錄”按鈕彈出子對話框代碼:void CPhoneRecordDlg:OnCheckrec() /查看已接記錄函數(shù)體CReceiveDlg dlg;/創(chuàng)建一個子對話框類對象dlg.DoModal();/子對話框類的對象調(diào)用模態(tài)函數(shù)彈出子對話框void CPhoneRecordDlg:OnChecknorec() /查看未接記錄函數(shù)體CNoreceiveDlg dlg;dlg.DoModal();void CPhoneRecordDlg:OnCheckdo() /查看已撥打電話函數(shù)體/ TODO: Add your control notification handler code hereCHdoneDlg dlg;dlg.DoModal();4、 刪除對話框中的內(nèi)容,即“清除”按鈕void CPhoneRecordDlg:OnDrop() SetDlgItemText(IDC_EDIT1, );/將編輯框的內(nèi)容置為空SetDlgItemText(IDC_EDIT2, );UpdateData(true);/更新數(shù)據(jù)5、 等待10秒后掛斷代碼:void CPhoneRecordDlg:OnWait() /等待掛斷函數(shù)體Sleep(10000);/休眠10秒鐘執(zhí)行下面的代碼/SetTimer(1,1000,NULL);CString nstr1;CString nstr2;CTime ntm;ntm=CTime:GetCurrentTime();/獲得系統(tǒng)當前時間nstr2=ntm.Format(%Y-%m-%d %X);UpdateData(true);nstr1=m_receive;/對數(shù)據(jù)庫進行操作的部分CDatabase db;/創(chuàng)建數(shù)據(jù)庫對象 if(!db.IsOpen()/判斷數(shù)據(jù)庫是否已經(jīng)被打開BOOL bflag=db.Open(phone,false,false,ODBC;DNS=phone;UID=root;PWD=123);/連接數(shù)據(jù)庫if(!bflag) AfxMessageBox(打開數(shù)據(jù)庫失??!);CRecordset rs(&db);/綁定數(shù)據(jù)源,rs是是查詢到的結(jié)果集CString strsql;strsql=select * from norecrecord;rs.Open(CRecordset:forwardOnly, strsql);/查詢數(shù)據(jù),獲得結(jié)果集while(!rs.IsEOF()/遍歷結(jié)果集函數(shù)體CString nnum;rs.GetFieldValue(nonumber,nnum);/MessageBox(dnum);if(nnum=nstr1) CString strSQL1;/從數(shù)據(jù)庫中查找相同的記錄并刪除strSQL1.Format(delete from norecrecord where nonumber=%s,nnum);db.ExecuteSQL(strSQL1);rs.MoveNext();CString strSQL;/在數(shù)據(jù)庫中插入新的數(shù)據(jù) strSQL.Format(insert into norecrecord(nonumber,nodate) values(%s,%s),nstr1,nstr2); db.ExecuteSQL(strSQL);MessageBox(電話來了,您未接收!);七、體會與自我評價通過這段時間對于C+程序設(shè)計的復習,我把以前學習過的編程知識又系統(tǒng)地串接了一遍,這次課程設(shè)計對自己所學知識起到了檢測和提高的作用,把在大學所學的編程知識系統(tǒng)的聯(lián)系在了一起,進一步加深對所學知識的理解。程序的設(shè)計中遇到不少問題,其中最為突出的一個問題就是作為一個管理系統(tǒng)MFC界面中要怎么與mysql數(shù)據(jù)庫相連接,在具體實現(xiàn)的過程中,我嘗試過各種的方法比如ado和mfc本身對于mysql提供的接口這幾種方法,最終還是通過odbc的方式完成了這一任務(wù),這一過程感覺學到了很多東
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州東華職業(yè)學院《社會工作技巧工作坊人際溝通技巧》2023-2024學年第一學期期末試卷
- 西安電力高等??茖W?!赌M商務(wù)談判》2023-2024學年第一學期期末試卷
- 安徽醫(yī)學高等??茖W?!哆\輸運營管理實務(wù)》2023-2024學年第一學期期末試卷
- 浙江農(nóng)林大學《中國文化英文》2023-2024學年第一學期期末試卷
- 廣東科技學院《視頻設(shè)計》2023-2024學年第一學期期末試卷
- 湖南理工學院南湖學院《藥物分析實驗》2023-2024學年第一學期期末試卷
- 北京網(wǎng)絡(luò)職業(yè)學院《科技英語寫作》2023-2024學年第一學期期末試卷
- 山東中醫(yī)藥大學《力學1》2023-2024學年第一學期期末試卷
- 湖北中醫(yī)藥高等??茖W校《有機波譜分析》2023-2024學年第一學期期末試卷
- 世界計劃半周年活動方案
- 百度公司環(huán)境管理制度
- 特殊工時制管理制度
- 2024-2025學年廣東人教版高一英語第二學期期末練習卷(含答案)
- 統(tǒng)編版三年級語文下冊同步高效課堂系列第一單元復習課件
- DB15-T 4061-2025 沙化土地防護灌木林(沙柳、梭梭、檸條)碳匯儲量監(jiān)督抽查技術(shù)規(guī)范
- 智能門鎖項目可行性分析報告
- 鄰里糾紛及其合法合理處理課件
- 河南省鄭州市第八中學2025年七下英語期末經(jīng)典試題含答案
- 中醫(yī)八段錦課件
- 口腔科清洗間管理制度
- 拌合站會議管理制度
評論
0/150
提交評論