您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Window程序设计报告
1Window程序设计报告(1)通讯录应用程序一、设计目标与内容:1.了解Windows编程的基础知识,掌握MFC应用程序的基本知识;2.基本掌握面向对象程序设计的基本思路和方法;3.掌握用VC++开发应用程序的的一般步骤和方法;4.能够利用所学的基本知识,设计一个简单的通讯录应用程序,具有以下功能:①用文件来保存通讯录信息(必须实现的功能)②编程实现通讯录记录的添加、删除、修改、浏览和查询(必须实现的功能)。二,设计要求:用VC++进行编码,实现应用程序的功能。注重编码质量,代码要有适当的注释;功能描述创建一个通讯录应用程序,可以通过文件导入导出成员的信息,实现成员信息的添加、删除、修改、浏览和查询的功能(基本功能),改变背景颜色,添加动画,添加背景音乐(添加功能)。基本思路利用VisualC++,通过对一些常用控件的使用实现程序的一些常见的功能,通过对文件的操作来保存和删除一些信息,通过对按钮消息的响应,实现一些基本的功能2主要步骤项目的创建本例使用VisualC++6.0创建一个基于单文档的MFCAppWizard(exe)项目,项目的名字为Address,其中最后一步选择CFormView。界面设计按如下对话框资源的界面布置对话框如后面的(图一)再添加一个对话框资源,当响应添加消息是弹出该对话框,添加你所想添加的信息,其对话框的见面如图所示,当然了我们也可以再添加一个用户登陆的对话框资源如下所示3代码的实现1定义一个CPerson类在Person.h中编辑代码classCPerson:publicCObject{public:CPerson();virtual~CPerson();CPerson(CStringname,CStringphone,CStringadr,CStringqq);voidSerialize(CArchive&ar);public:CStringm_name;//姓名CStringm_phone;//电话CStringm_addr;//公司CStringm_qq;//QQ号DECLARE_SERIAL(CPerson)//对类进行串行化宏定义};在Person.cpp中编辑代码CPerson::CPerson(CStringname,CStringphone,CStringadr,CStringqq){m_name=name;m_phone=phone;m_addr=adr;m_qq=qq;}IMPLEMENT_SERIAL(CPerson,CObject,1)voidCPerson::Serialize(CArchive&ar){if(ar.IsStoring())arm_namem_phonem_addrm_qq;elsearm_namem_phonem_addrm_qq;}42在AddressDoc.h中编辑代码public:virtual~CAddressDoc();CObArraym_stuObArray;intGetAllRecNum(void);CPerson*GetSTUDENTINFORAt(intnIndex);#ifdef_DEBUGvirtualvoidAssertValid()const;virtualvoidDump(CDumpContext&dc)const;在AddressDoc.cpp中编辑代码voidCAddressDoc::Serialize(CArchive&ar){if(ar.IsStoring()){//TODO:addstoringcodeherem_stuObArray.Serialize(ar);}else{//TODO:addloadingcodeherem_stuObArray.Serialize(ar);}}intCAddressDoc::GetAllRecNum(){returnm_stuObArray.GetSize();}3定义一个列表控件的变量CListCtrlm_list_ctrl;AddressView.cpp中的初始化函数OnInitialUpdate()voidCAddressView::OnInitialUpdate(){CFormView::OnInitialUpdate();GetParentFrame()-RecalcLayout();ResizeParentToFit();m_gif2.Load(MAKEINTRESOURCE(IDR_GIF2),_T(gif));//5加载动画,m_gif2为图像控件的变量m_gif2.Draw();m_gif.Load(MAKEINTRESOURCE(IDR_GIF1),_T(gif));//加载动画m_gif.Draw();if(IsFirst)//判断是否是第一次打开,在CAddressView()中初始化IsFirst=TRUE;{IsFirst=FALSE;m_list_ctrl.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE);CStringstrHeader[4]={姓名,电话,地址,QQ};intnWidth[4]={110,110,110,110};for(intnCol=0;nCol4;nCol++)m_list_ctrl.InsertColumn(nCol,strHeader[nCol],LVCFMT_LEFT,nWidth[nCol]);UpdateData(FALSE);}}响应添加按钮的代码单击添加按钮时弹出如图所示的界面,(添加自己想添加的信息)6voidCAddressView::OnButtonAdd(){//TODO:AddyourcontrolnotificationhandlercodehereCdlgADDdlg;dlg.DoModal();intn=m_list_ctrl.GetItemCount();m_list_ctrl.InsertItem(m_list_ctrl.GetItemCount(),);m_list_ctrl.SetItemText(n,0,dlg.m_strname);m_list_ctrl.SetItemText(n,1,dlg.m_strphone);m_list_ctrl.SetItemText(n,2,dlg.m_straddress);m_list_ctrl.SetItemText(n,3,dlg.m_strqq);UpdateData(TRUE);CAddressDoc*pDoc=GetDocument();CPerson*pStudent=newCPerson(dlg.m_strname,dlg.m_strphone,dlg.m_straddress,dlg.m_strqq);pDoc-m_stuObArray.Add(pStudent);pDoc-SetModifiedFlag();pDoc-UpdateAllViews(NULL);}添加完后再列表控件中显示的响应删除按钮的代码首先在列表控件中选择你想要删除的那一列,然后选侧删除,代码如下,定义一个publicintitem;的变量,先让列表控件响应NM_CLICK消息voidCAddressView::OnClickList1(NMHDR*pNMHDR,LRESULT*pResult)7{//TODO:AddyourcontrolnotificationhandlercodehereLV_HITTESTINFO*pHitTestInfo=(LV_HITTESTINFO*)pNMHDR;item=pHitTestInfo-iItem;*pResult=0;}voidCAddressView::OnButtonDelete(){CAddressDoc*pDoc=GetDocument();if(item!=LB_ERR){m_list_ctrl.DeleteItem(item);delete(CPerson*)pDoc-m_stuObArray.GetAt(item);pDoc-m_stuObArray.RemoveAt(item);}elsereturn;pDoc-SetModifiedFlag();}响应修改按钮的代码首先打开上次保存的信息,然后点击浏览,此时所有以保存的信息将会显示在列表控件中,在列表控件中选择你要修改的选项,点击修改弹出如图示的对话框,更改你要修改的对象8CdlgADDdlg;CAddressDoc*pDoc=GetDocument();POSITIONpos=m_list_ctrl.GetFirstSelectedItemPosition();if(pos==NULL){MessageBox(没有选中项!);}else{while(pos){intnItem=m_list_ctrl.GetNextSelectedItem(pos);m_list_ctrl.DeleteItem(nItem);dlg.m_strname=((CPerson*)pDoc-m_stuObArray.GetAt(nItem))-m_name;dlg.m_strphone=((CPerson*)pDoc-m_stuObArray.GetAt(nItem))-m_phone;dlg.m_straddress=((CPerson*)pDoc-m_stuObArray.GetAt(nItem))-m_addr;dlg.m_strqq=((CPerson*)pDoc-m_stuObArray.GetAt(nItem))-m_qq;dlg.DoModal();9UpdateData(FALSE);if(IDOK){UpdateData();((CPerson*)pDoc-m_stuObArray.GetAt(nItem))-m_name=dlg.m_strname;((CPerson*)pDoc-m_stuObArray.GetAt(nItem))-m_phone=dlg.m_strphone;((CPerson*)pDoc-m_stuObArray.GetAt(nItem))-m_addr=dlg.m_straddress;((CPerson*)pDoc-m_stuObArray.GetAt(nItem))-m_qq=dlg.m_strqq;pDoc-SetModifiedFlag();m_list_ctrl.InsertItem(nItem,dlg.m_strname);m_list_ctrl.SetItemText(nItem,1,dlg.m_strphone);m_list_ctrl.SetItemText(nItem,2,dlg.m_straddress);m_list_ctrl.SetItemText(nItem,3,dlg.m_strqq);}}}}响应浏览按钮的代码voidCAddressView::OnButtonScan(){//TODO:Addyourcontrolnotificationhandlercodeherem_list_ctrl.DeleteAllItems();CAddressDoc*pDoc=GetDocument();for(intn=0;npDoc-GetAllRecNum();n++){m_list_ctrl.InsertItem(n,pDoc-GetSTUDENTINFORAt(n)-m_name);10m_list_ctrl.SetItemText(n,1,pDoc-GetSTUDENTINFORAt(n)-m_phone);m_list_ctrl.SetItemText(n,2,pDoc-GetSTUDENTINFORAt(n)-m_addr);m_list_ctrl.SetItemText
本文标题:Window程序设计报告
链接地址:https://www.777doc.com/doc-2856641 .html