版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PAGEPAGE2一、設(shè)計(jì)目標(biāo)與內(nèi)容了解Windows編程的基礎(chǔ)知識(shí),掌握MFC應(yīng)用程序的基本知識(shí);基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法;掌握用VC++開發(fā)應(yīng)用程序的的一般步驟和方法;能夠利用所學(xué)的基本知識(shí),設(shè)計(jì)一個(gè)簡單的通訊錄應(yīng)用程序,具有以下功能:①用文件來保存通訊錄信息(必須實(shí)現(xiàn)的功能)②編程實(shí)現(xiàn)通訊錄記錄的添加、刪除、修改、瀏覽和查詢(必須實(shí)現(xiàn)的功能)。二、設(shè)計(jì)要求用VC++進(jìn)行編碼,實(shí)現(xiàn)應(yīng)用程序的功能。注重編碼質(zhì)量,代碼要有適當(dāng)?shù)淖⑨專惶峤辉O(shè)計(jì)報(bào)告一份(課程設(shè)計(jì)任務(wù)書、目錄、主要的數(shù)據(jù)結(jié)構(gòu)、設(shè)計(jì)的基本思路、設(shè)計(jì)的步驟及主要代碼、心得體會(huì)、參考文獻(xiàn))??傮w設(shè)計(jì)通訊錄應(yīng)用程序,是一個(gè)基于單文檔單視圖的應(yīng)用程序。我們?cè)诨诘臋n視圖開發(fā)的同時(shí),通過對(duì)文檔菜單的操作和相應(yīng)函數(shù)的響應(yīng)實(shí)現(xiàn)一個(gè)簡單的通訊錄功能。在通訊錄中,我們能夠添加學(xué)生信息、修改學(xué)生信息、刪除學(xué)生信息、預(yù)覽學(xué)生信息和保存學(xué)生信息。進(jìn)行一系列簡單的操作。詳細(xì)設(shè)計(jì)新建工程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);}程序運(yùn)行后,界面如下程序運(yùn)行主界面圖1-1在這里,我們可以看到通過我們單文檔視圖中菜單“通訊錄操作”可以進(jìn)行相應(yīng)的學(xué)生信息的添加、刪除、修改、查詢、瀏覽、保存和打開。而這里,下來菜單中的每一個(gè)選項(xiàng)我們將通過對(duì)話框的形式進(jìn)行呈現(xiàn)。為了便于對(duì)學(xué)生信息進(jìn)行操作和保存,我們這里用到了數(shù)組集合類。先給工程添加一個(gè)學(xué)生信息類,用來保存學(xué)生的信息。類定義如下:CStudentinfoCStringstrName:publicCStringstrSpecial:publicCStringstrPhone:publicCStringstrQQ:publicCStringstrBirth:publicDECLARE_SERIAL(CStudentInfo):public//序列化聲明CStudentInfo(){}:publicCStudentInfo(CStringname,CStringspecial,CStringphone,CStringqq,CStringbirth):public學(xué)生信息添加對(duì)話框圖1-2給工程添加一個(gè)對(duì)話框,然后給該對(duì)話框建立類向?qū)砑覥StudentInfoDlg類CStudentInfoDlgCString m_add_name:publicCString m_add_special:publicCString m_add_birth:publicCString m_add_phone:publicCString m_add_qq:public然后為菜單選項(xiàng)中“添加”選項(xiàng)添加響應(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é)生信息刪除對(duì)話框由于刪除學(xué)生信息前要查詢這個(gè)學(xué)生是否存在,所以這里我們要添加一個(gè)對(duì)話框類Del_StudentInfoDlgCDel_StudentInfoDlgCString m_stu_del:public運(yùn)行時(shí)對(duì)話框如圖圖1-3根據(jù)學(xué)生姓名來查詢看學(xué)生是否存在,若存在則進(jìn)行刪除,若不存在則提示該學(xué)生不存在為菜單選項(xiàng)中的“刪除”添加相應(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é)生不存在,不能進(jìn)行刪除!"); 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é)生是否存在,若存在我們對(duì)其信息進(jìn)行修改,這時(shí)候要重新調(diào)用另一個(gè)對(duì)話框來對(duì)學(xué)生信息進(jìn)行修改。這是需添加兩個(gè)對(duì)話框?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添加菜單選項(xiàng)中“修改”的響應(yīng)函數(shù)OnStuinfoMod(),先調(diào)用對(duì)話框MOD_StudentInfoDlg1來判斷該學(xué)生是否存在,若存在則調(diào)用對(duì)話框MOD_StudentInfoDlg2對(duì)學(xué)生信息進(jìn)行修改若不存在則提示該學(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é)生信息查詢對(duì)話框?qū)W生信息查詢對(duì)話框和刪除學(xué)生信息對(duì)話框基本上是一樣的,都是通過查詢學(xué)生是否存在,若存在則顯示該學(xué)生的信息,若不存在則提示學(xué)生不存在。為菜單選項(xiàng)中的“查詢”添加相應(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é)生的信息。這里添加菜單選項(xiàng)中“預(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)能夠自動(dòng)的為我們保存添加過的學(xué)生信息,但是他本村的時(shí)候是亂碼,所以這里我又重新寫了函數(shù)進(jìn)行學(xué)生信息的保存為菜單選項(xiàng)中的“保存”和“打開”添加相應(yīng)的函數(shù)響應(yīng)OnStuinfoSave1()和OnStuinfoOpen1()代碼如下:voidCCOM_book2Doc::OnStuinfoSave1(){ //設(shè)置保存的文件,后綴名txt CFileDialogdlg(FALSE,"txt",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"(*.TXT)|*.txt|AllFiles|*.*||",NULL); //如果公共類對(duì)話框?yàn)榇_定 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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職旅游(旅游文化常識(shí))試題及答案
- 2026年成本會(huì)計(jì)(費(fèi)用核算)試題及答案
- 2025年高職食品加工技術(shù)應(yīng)用(應(yīng)用實(shí)操訓(xùn)練)試題及答案
- 2025年中職數(shù)字媒體藝術(shù)設(shè)計(jì)(新媒體設(shè)計(jì)技巧)試題及答案
- 【歷史】中國特色社會(huì)主義事業(yè)取得新成就(課件)2025-2026學(xué)年統(tǒng)編版八年級(jí)歷史下冊(cè)
- 近五年甘肅中考物理試題及答案2025
- 養(yǎng)老院家屬溝通制度
- 信息保密制度
- 工行借記卡介紹
- 2026年公共關(guān)系基礎(chǔ)知識(shí)與實(shí)務(wù)考試題目含答案
- 游樂場情管理制度規(guī)范
- 中央2025年全國婦聯(lián)所屬在京事業(yè)單位招聘93人筆試歷年典型考點(diǎn)題庫附帶答案詳解
- 2026夢(mèng)工場招商銀行太原分行寒假實(shí)習(xí)生招聘考試題庫附答案解析
- 科學(xué)規(guī)劃高三寒假:沖刺高考的最后蓄力
- 2026年仟益水務(wù)(重慶)有限公司招聘備考題庫及一套答案詳解
- 鋼結(jié)構(gòu)廠房施工樣板引路方案
- 2026年華為射頻芯片設(shè)計(jì)工程師高頻常見面試題包含詳細(xì)解答+避坑指南
- 2025浙江杭州錢塘新區(qū)建設(shè)投資集團(tuán)有限公司招聘5人參考筆試題庫及答案解析
- 三年(2023-2025)中考英語真題分類匯編(全國)專題41 讀寫綜合(解析版)
- 輸電線路巡視
- 編程基礎(chǔ)教案
評(píng)論
0/150
提交評(píng)論