版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年魯教版七年級生物下冊階段測試試卷含答案
- 2025年冀教新版七年級化學(xué)上冊月考試卷
- 華東師大版八年級數(shù)學(xué)下冊《18.1平行四邊形的性質(zhì)》同步測試題含答案
- 2025年北師大新版八年級地理下冊月考試卷含答案
- 2025年冀教版一年級語文上冊月考試卷含答案
- 2024版北京市住宅裝修驗收標(biāo)準(zhǔn)3篇
- 二零二五版2025年度個體農(nóng)業(yè)科技研發(fā)合伙協(xié)議2篇
- 2025年冀教版八年級地理上冊月考試卷含答案
- 2024年高端芯片設(shè)計與制造合同
- 二零二五年租賃房屋合同租金調(diào)整機制及維修責(zé)任2篇
- 2025年中國AI AGENT(人工智能體)行業(yè)市場動態(tài)分析、發(fā)展方向及投資前景分析報告
- 家居建材行業(yè)綠色材料應(yīng)用及節(jié)能設(shè)計方
- 農(nóng)副產(chǎn)品安全培訓(xùn)
- 2024年中國玩具工程車市場調(diào)查研究報告
- 2025-2030年中國電動三輪車市場發(fā)展現(xiàn)狀及前景趨勢分析報告
- TCABEE 063-2024 建筑光儲直柔系統(tǒng)變換器 通 用技術(shù)要求
- 【9化期末】合肥市廬陽區(qū)2023-2024學(xué)年九年級上學(xué)期期末化學(xué)試題
- 高一下學(xué)期生物人教版必修二:3.4 基因通常是有遺傳效應(yīng)的DNA片段課件
- 下屬企業(yè)考核報告范文
- 修車補胎合同范例
- 2024年基金應(yīng)知應(yīng)會考試試題
評論
0/150
提交評論