MFC課程設(shè)計報告-一個簡單的通訊錄應(yīng)用程序_第1頁
MFC課程設(shè)計報告-一個簡單的通訊錄應(yīng)用程序_第2頁
MFC課程設(shè)計報告-一個簡單的通訊錄應(yīng)用程序_第3頁
MFC課程設(shè)計報告-一個簡單的通訊錄應(yīng)用程序_第4頁
MFC課程設(shè)計報告-一個簡單的通訊錄應(yīng)用程序_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

PAGEPAGE2一、設(shè)計目標(biāo)與內(nèi)容了解Windows編程的基礎(chǔ)知識,掌握MFC應(yīng)用程序的基本知識;基本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法;掌握用VC++開發(fā)應(yīng)用程序的的一般步驟和方法;能夠利用所學(xué)的基本知識,設(shè)計一個簡單的通訊錄應(yīng)用程序,具有以下功能:①用文件來保存通訊錄信息(必須實現(xiàn)的功能)②編程實現(xiàn)通訊錄記錄的添加、刪除、修改、瀏覽和查詢(必須實現(xiàn)的功能)。二、設(shè)計要求用VC++進行編碼,實現(xiàn)應(yīng)用程序的功能。注重編碼質(zhì)量,代碼要有適當(dāng)?shù)淖⑨專惶峤辉O(shè)計報告一份(課程設(shè)計任務(wù)書、目錄、主要的數(shù)據(jù)結(jié)構(gòu)、設(shè)計的基本思路、設(shè)計的步驟及主要代碼、心得體會、參考文獻)??傮w設(shè)計通訊錄應(yīng)用程序,是一個基于單文檔單視圖的應(yīng)用程序。我們在基于但文檔視圖開發(fā)的同時,通過對文檔菜單的操作和相應(yīng)函數(shù)的響應(yīng)實現(xiàn)一個簡單的通訊錄功能。在通訊錄中,我們能夠添加學(xué)生信息、修改學(xué)生信息、刪除學(xué)生信息、預(yù)覽學(xué)生信息和保存學(xué)生信息。進行一系列簡單的操作。詳細(xì)設(shè)計新建工程COM_book2新建工程COM_kook2,默認(rèn)選擇單文檔應(yīng)用程序,完成。在COM_book2View.cpp中初始化文檔視圖界面添加函數(shù)如下:voidCCOM_book2View::OnInitialUpdate(){ CListView::OnInitialUpdate(); CListCtrl&m_ListCtrl=GetListCtrl(); CStringstrHeader[5]={"姓名","專業(yè)","電話","QQ","生日"}; intnLong[]={150,200,250,200,200}; for(intnCol=0;nCol<5;nCol++) m_ListCtrl.InsertColumn(nCol,strHeader[nCol],LVCFMT_LEFT,nLong[nCol]); UpdateData(FALSE);}程序運行后,界面如下程序運行主界面圖1-1在這里,我們可以看到通過我們單文檔視圖中菜單“通訊錄操作”可以進行相應(yīng)的學(xué)生信息的添加、刪除、修改、查詢、瀏覽、保存和打開。而這里,下來菜單中的每一個選項我們將通過對話框的形式進行呈現(xiàn)。為了便于對學(xué)生信息進行操作和保存,我們這里用到了數(shù)組集合類。先給工程添加一個學(xué)生信息類,用來保存學(xué)生的信息。類定義如下:CStudentinfoCStringstrName:publicCStringstrSpecial:publicCStringstrPhone:publicCStringstrQQ:publicCStringstrBirth:publicDECLARE_SERIAL(CStudentInfo):public//序列化聲明CStudentInfo(){}:publicCStudentInfo(CStringname,CStringspecial,CStringphone,CStringqq,CStringbirth):public學(xué)生信息添加對話框圖1-2給工程添加一個對話框,然后給該對話框建立類向?qū)砑覥StudentInfoDlg類CStudentInfoDlgCString m_add_name:publicCString m_add_special:publicCString m_add_birth:publicCString m_add_phone:publicCString m_add_qq:public然后為菜單選項中“添加”選項添加響應(yīng)函數(shù)OnStuinfoAdd()。代碼如下:voidCCOM_book2Doc::OnStuinfoAdd(){ CStudentInfoDlgdlg; BOOLflag=true; if(dlg.DoModal()!=IDOK)return; for(inti=0;i<m_stuObArray.GetSize();i++) { CStudentInfo*p=(CStudentInfo*)m_stuObArray.GetAt(i); if(p->strName==dlg.m_add_name) { flag=false; AfxMessageBox("該學(xué)生已存在!"); } } if(flag) {CStudentInfo*pStudent=newCStudentInfo(dlg.m_add_name,dlg.m_add_special,dlg.m_add_phone,dlg.m_add_qq,dlg.m_add_birth); m_stuObArray.Add(pStudent); // SetModifiedFlag(); this->UpdateAllViews(NULL,1,pStudent); }}學(xué)生信息刪除對話框由于刪除學(xué)生信息前要查詢這個學(xué)生是否存在,所以這里我們要添加一個對話框類Del_StudentInfoDlgCDel_StudentInfoDlgCString m_stu_del:public運行時對話框如圖圖1-3根據(jù)學(xué)生姓名來查詢看學(xué)生是否存在,若存在則進行刪除,若不存在則提示該學(xué)生不存在為菜單選項中的“刪除”添加相應(yīng)函數(shù)OnStuinfoDel()代碼如下:

voidCCOM_book2Doc::OnStuinfoDel(){ CDel_StudentInfoDlgdlg1; BOOLflag=true; if(dlg1.DoModal()!=IDOK)return; for(inti=0;i<m_stuObArray.GetSize();i++) { CStudentInfo*p=(CStudentInfo*)m_stuObArray.GetAt(i); if(p->strName==dlg1.m_stu_del) { deletem_stuObArray.GetAt(i); flag=false; } } if(flag) AfxMessageBox("學(xué)生不存在,不能進行刪除!"); if(flag==false) { for(inti=0;i<m_stuObArray.GetSize();i++) { CStudentInfo*p=(CStudentInfo*)m_stuObArray.GetAt(i); p->k=i+1; this->UpdateAllViews(NULL,2,p); } }}學(xué)生信息修改由于在修改學(xué)生信息之前我們要先查詢學(xué)生是否存在,若存在我們對其信息進行修改,這時候要重新調(diào)用另一個對話框來對學(xué)生信息進行修改。這是需添加兩個對話框?qū)υ捒驅(qū)υ捒騇OD_StudentInfoDlg1和MOD_StudentInfoDlg2并為它們建立相應(yīng)的類CMOD_StudentInfoDlg1和CMOD_StudentInfoDlg2CMOD_StudentInfoDlg1CString m_mod_name1:publicCMOD_StudentInfoDlg2CString m_name2:publicCString m_birth2:publicCString m_qq2:publicCString m_phone2:publicCString m_spe2:public添加菜單選項中“修改”的響應(yīng)函數(shù)OnStuinfoMod(),先調(diào)用對話框MOD_StudentInfoDlg1來判斷該學(xué)生是否存在,若存在則調(diào)用對話框MOD_StudentInfoDlg2對學(xué)生信息進行修改若不存在則提示該學(xué)生不存在。代碼如下:voidCCOM_book2Doc::OnStuinfoMod(){ CMOD_StudentInfoDlg1dlg2; CMOD_StudentImfoDlg2dlg3; BOOLflag=true; CStudentInfo*p1,*p2; if(dlg2.DoModal()!=IDOK)return; for(inti=0;i<m_stuObArray.GetSize();i++) { p1=(CStudentInfo*)m_stuObArray.GetAt(i); if(p1->strName==dlg2.m_mod_name1) { if(dlg3.DoModal()!=IDOK)return; p1->strName=dlg3.m_name2; p1->strSpecial=dlg3.m_spe2; p1->strQQ=dlg3.m_qq2; p1->strPhone=dlg3.m_phone2; p1->strBirth=dlg3.m_birth2; p2=p1; flag=false; } } if(flag) AfxMessageBox("學(xué)生不存在!"); if(flag==false) { this->UpdateAllViews(NULL,3,p2); AfxMessageBox("修改成功!"); } }學(xué)生信息查詢對話框?qū)W生信息查詢對話框和刪除學(xué)生信息對話框基本上是一樣的,都是通過查詢學(xué)生是否存在,若存在則顯示該學(xué)生的信息,若不存在則提示學(xué)生不存在。為菜單選項中的“查詢”添加相應(yīng)函數(shù)OnStuinfoSer()代碼如下:voidCCOM_book2Doc::OnStuinfoSer(){ CSER_StudentInfoDlgdlg4; BOOLflag=true; CStudentInfo*p3; if(dlg4.DoModal()!=IDOK)return; for(inti=0;i<m_stuObArray.GetSize();i++) { CStudentInfo*p=(CStudentInfo*)m_stuObArray.GetAt(i); if(p->strName==dlg4.m_ser_name) { p3=(CStudentInfo*)m_stuObArray.GetAt(i); flag=false; } } if(flag==false) this->UpdateAllViews(NULL,3,p3); else AfxMessageBox("學(xué)生不存在!");}學(xué)生信息查預(yù)覽學(xué)生信息預(yù)覽,顧名思義就是顯示現(xiàn)有全部學(xué)生的信息。這里添加菜單選項中“預(yù)覽”的函數(shù)響應(yīng)OnStuinfoLook()代碼如下:voidCCOM_book2Doc::OnStuinfoLook(){ for(inti=0;i<m_stuObArray.GetSize();i++) { CStudentInfo*p=(CStudentInfo*)m_stuObArray.GetAt(i); p->k=i+1; this->UpdateAllViews(NULL,2,p); }}學(xué)生信息查保存和打開雖然我們使用了數(shù)組集合類,系統(tǒng)能夠自動的為我們保存添加過的學(xué)生信息,但是他本村的時候是亂碼,所以這里我又重新寫了函數(shù)進行學(xué)生信息的保存為菜單選項中的“保存”和“打開”添加相應(yīng)的函數(shù)響應(yīng)OnStuinfoSave1()和OnStuinfoOpen1()代碼如下:voidCCOM_book2Doc::OnStuinfoSave1(){ //設(shè)置保存的文件,后綴名txt CFileDialogdlg(FALSE,"txt",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"(*.TXT)|*.txt|AllFiles|*.*||",NULL); //如果公共類對話框為確定 if(dlg.DoModal()==IDOK) //獲取文件名 dlg.GetFileName(); //否則,退出 else return; CStdioFilefile; //如果有問題,退出 if(file.Open(dlg.GetFileName(),CFile::modeCreate|CFile::modeWrite|CFile::typeText)==0) { AfxMessageBox("saveerror!"); return; } for(inti=0;i<m_stuObArray.GetSize();i++) { CStudentInfo*p=(CStudentInfo*)m_stuObArray.GetAt(i); file.WriteString(p->strName); file.WriteString(p->strSpecial); file.WriteString(p->strPhone); file.WriteString(p->strQQ); file.WriteString(p->strBirth); file.WriteString("\n"); } file.Close();}voidCCOM_book2Doc::OnStuinfoOpen1(){ CFileDialogdlg(TRUE,"txt",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"(*.TXT)|*.wzq|AllFiles|*.*||",NULL); if(dlg.DoModal()==IDOK) dlg.GetFileName(); else return; CStdioFilefile; CStudentInfo*P; inti,j; CStringstr; if(file.Open(dlg.GetFileName(),CFile::modeRead)==0) { AfxMessageBox("openerror!"); return; } CArchivear(&file,CArchive::load); for(i=0;i<10;i++) { for(j=0;j<5;j++) { ar.ReadString(str

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論