MFC课程设计报告-一个简单的通讯录应用程序_第1页
MFC课程设计报告-一个简单的通讯录应用程序_第2页
MFC课程设计报告-一个简单的通讯录应用程序_第3页
MFC课程设计报告-一个简单的通讯录应用程序_第4页
MFC课程设计报告-一个简单的通讯录应用程序_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE2一、设计目标与内容了解Windows编程的基础知识,掌握MFC应用程序的基本知识;基本掌握面向对象程序设计的基本思路和方法;掌握用VC++开发应用程序的的一般步骤和方法;能够利用所学的基本知识,设计一个简单的通讯录应用程序,具有以下功能:①用文件来保存通讯录信息(必须实现的功能)②编程实现通讯录记录的添加、删除、修改、浏览和查询(必须实现的功能)。二、设计要求用VC++进行编码,实现应用程序的功能。注重编码质量,代码要有适当的注释;提交设计报告一份(课程设计任务书、目录、主要的数据结构、设计的基本思路、设计的步骤及主要代码、心得体会、参考文献)。总体设计通讯录应用程序,是一个基于单文档单视图的应用程序。我们在基于但文档视图开发的同时,通过对文档菜单的操作和相应函数的响应实现一个简单的通讯录功能。在通讯录中,我们能够添加学生信息、修改学生信息、删除学生信息、预览学生信息和保存学生信息。进行一系列简单的操作。详细设计新建工程COM_book2新建工程COM_kook2,默认选择单文档应用程序,完成。在COM_book2View.cpp中初始化文档视图界面添加函数如下:voidCCOM_book2View::OnInitialUpdate(){ CListView::OnInitialUpdate(); CListCtrl&m_ListCtrl=GetListCtrl(); CStringstrHeader[5]={"姓名","专业","电话","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在这里,我们可以看到通过我们单文档视图中菜单“通讯录操作”可以进行相应的学生信息的添加、删除、修改、查询、浏览、保存和打开。而这里,下来菜单中的每一个选项我们将通过对话框的形式进行呈现。为了便于对学生信息进行操作和保存,我们这里用到了数组集合类。先给工程添加一个学生信息类,用来保存学生的信息。类定义如下:CStudentinfoCStringstrName:publicCStringstrSpecial:publicCStringstrPhone:publicCStringstrQQ:publicCStringstrBirth:publicDECLARE_SERIAL(CStudentInfo):public//序列化声明CStudentInfo(){}:publicCStudentInfo(CStringname,CStringspecial,CStringphone,CStringqq,CStringbirth):public学生信息添加对话框图1-2给工程添加一个对话框,然后给该对话框建立类向导添加CStudentInfoDlg类CStudentInfoDlgCString m_add_name:publicCString m_add_special:publicCString m_add_birth:publicCString m_add_phone:publicCString m_add_qq:public然后为菜单选项中“添加”选项添加响应函数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("该学生已存在!"); } } 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); }}学生信息删除对话框由于删除学生信息前要查询这个学生是否存在,所以这里我们要添加一个对话框类Del_StudentInfoDlgCDel_StudentInfoDlgCString m_stu_del:public运行时对话框如图图1-3根据学生姓名来查询看学生是否存在,若存在则进行删除,若不存在则提示该学生不存在为菜单选项中的“删除”添加相应函数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("学生不存在,不能进行删除!"); 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); } }}学生信息修改由于在修改学生信息之前我们要先查询学生是否存在,若存在我们对其信息进行修改,这时候要重新调用另一个对话框来对学生信息进行修改。这是需添加两个对话框对话框对话框MOD_StudentInfoDlg1和MOD_StudentInfoDlg2并为它们建立相应的类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添加菜单选项中“修改”的响应函数OnStuinfoMod(),先调用对话框MOD_StudentInfoDlg1来判断该学生是否存在,若存在则调用对话框MOD_StudentInfoDlg2对学生信息进行修改若不存在则提示该学生不存在。代码如下: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("学生不存在!"); if(flag==false) { this->UpdateAllViews(NULL,3,p2); AfxMessageBox("修改成功!"); } }学生信息查询对话框学生信息查询对话框和删除学生信息对话框基本上是一样的,都是通过查询学生是否存在,若存在则显示该学生的信息,若不存在则提示学生不存在。为菜单选项中的“查询”添加相应函数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("学生不存在!");}学生信息查预览学生信息预览,顾名思义就是显示现有全部学生的信息。这里添加菜单选项中“预览”的函数响应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); }}学生信息查保存和打开虽然我们使用了数组集合类,系统能够自动的为我们保存添加过的学生信息,但是他本村的时候是乱码,所以这里我又重新写了函数进行学生信息的保存为菜单选项中的“保存”和“打开”添加相应的函数响应OnStuinfoSave1()和OnStuinfoOpen1()代码如下:voidCCOM_book2Doc::OnStuinfoSave1(){ //设置保存的文件,后缀名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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论