西安科技大学VC++通讯薄程序报告Word下载.docx
《西安科技大学VC++通讯薄程序报告Word下载.docx》由会员分享,可在线阅读,更多相关《西安科技大学VC++通讯薄程序报告Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
保存、读取
新建
创建通讯薄界面程序
3.2系统业务处理流程
删除联系人
查看联系人
新建联系人
修改联系人
4.详细设计
定义联系人信息结构体
//联系人信息结构
structUSERINFO
{
//个人信息
charszUsrName[32];
charszUsrSex[4];
charszUsrNick[32];
charszUsrEmail[64];
charszUsrQQ[16];
charszUsrPhone[16];
charszUsrMobile[16];
charszUsrPost[16];
charszUsrAddr[64];
//单位信息
charszJobName[64];
charszJobDuty[64];
charszJobDept[64];
charszJobPhone[16];
charszJobOffice[32];
charszJobFax[16];
charszJobPost[16];
charszJobAddr[64];
};
操作链表
BOOLCAdBkDoc:
:
ModUserInfo(USERINFO*pInfo)
ASSERT(pInfo!
=NULL);
POSITIONpos=m_lsUserInfo.Find(pInfo);
if(!
pos)returnFALSE;
m_lsUserInfo.SetAt(pos,pInfo);
returnTRUE;
}
DelUserInfo(USERINFO*pInfo)
m_lsUserInfo.RemoveAt(pos);
returndeletepInfo,TRUE;
USERINFO*CAdBkDoc:
FindInfo(USERINFO*pInfo)
USERINFO*pTemp=NULL;
POSITIONpos=m_lsUserInfo.GetHeadPosition();
for(;
pos!
=NULL;
m_lsUserInfo.GetNext(pos))
{
pTemp=(USERINFO*)m_lsUserInfo.GetAt(pos);
if(lstrlen(pInfo->
szUsrName)&
&
lstrcmp(pInfo->
szUsrName,pTemp->
szUsrName)==0)
returnpTemp;
szUsrSex)&
szUsrSex,pTemp->
szUsrSex)==0)
szUsrNick)&
szUsrNick,pTemp->
szUsrNick)==0)
szUsrEmail)&
szUsrEmail,pTemp->
szUsrEmail)==0)
szUsrQQ)&
szUsrQQ,pTemp->
szUsrQQ)==0)
szUsrPhone)&
szUsrPhone,pTemp->
szUsrPhone)==0)
szUsrMobile)&
szUsrMobile,pTemp->
szUsrMobile)==0)
szUsrPost)&
szUsrPost,pTemp->
szUsrPost)==0)
szUsrAddr)&
szUsrAddr,pTemp->
szUsrAddr)==0)
szJobName)&
szJobName,pTemp->
szJobName)==0)
szJobDuty)&
szJobDuty,pTemp->
szJobDuty)==0)
szJobDept)&
szJobDept,pTemp->
szJobDept)==0)
}
returnNULL;
voidCLeftView:
OnNewInfo()
CNewUserDlgdlg;
if(dlg.DoModal()!
=IDOK)
return;
USERINFO*pInfo=newUSERINFO;
memset(pInfo,0,sizeof(USERINFO));
dlg.GetUserInfo(pInfo);
CAdBkDoc*pDoc=GetDocument();
USERINFO*pTemp=pDoc->
FindInfo(pInfo);
if(pTemp!
=NULL)
deletepInfo;
MessageBox("
该联系人已存在!
"
);
pDoc->
AddUserInfo(pInfo);
UpdateAllViews(NULL);
MessageBox("
添加联系人信息成功!
//TODO:
在此添加命令处理程序代码
更新视图显示
OnTvnSelchanged(NMHDR*pNMHDR,LRESULT*pResult)
LPNMTREEVIEWpNMTreeView=reinterpret_cast<
LPNMTREEVIEW>
(pNMHDR);
CTreeCtrl&
refTreeCtrl=GetTreeCtrl();
HTREEITEMhItem=pNMTreeView->
itemNew.hItem;
m_strSelect=refTreeCtrl.GetItemText(hItem);
UpdateAllViews(NULL,1L,0);
if(pDoc->
m_strSelect.Compare("
所有联系人"
))
refTreeCtrl.Expand(hItem,TVE_EXPAND);
*pResult=0;
OnUpdate(CView*pSender,LPARAMlHint,CObject*pHint)
if(lHint==1L)
refTreeCtrl.DeleteAllItems();
HTREEITEMhRoot=refTreeCtrl.InsertItem(_T("
),TVI_ROOT);
USERINFO*pInfo=NULL;
POSITIONpos=pDoc->
m_lsUserInfo.GetHeadPosition();
m_lsUserInfo.GetNext(pos))
pInfo=(USERINFO*)pDoc->
m_lsUserInfo.GetAt(pos);
refTreeCtrl.InsertItem(pInfo->
szUsrName,hRoot);
refTreeCtrl.SelectItem(hRoot);
refTreeCtrl.Expand(hRoot,TVE_EXPAND);
在此添加专用代码和/或调用基类
树形控件
voidCAdBkView:
CListCtrl&
refListCtrl=GetListCtrl();
refListCtrl.DeleteAllItems();
intnItem=0;
POSITIONpos=NULL;
pos=pDoc->
for(;
{
pInfo=(USERINFO*)pDoc->
if(pDoc->
m_strSelect.Compare(pInfo->
szUsrName))
continue;
refListCtrl.InsertItem(nItem,"
refListCtrl.SetItemText(nItem,0,pInfo->
szUsrName);
refListCtrl.SetItemText(nItem,1,pInfo->
szUsrPhone);
refListCtrl.SetItemText(nItem,2,pInfo->
szUsrMobile);
refListCtrl.SetItemText(nItem,3,pInfo->
szUsrQQ);
refListCtrl.SetItemText(nItem,4,pInfo->
szUsrEmail);
refListCtrl.SetItemText(nItem,5,pInfo->
szUsrAddr);
break;
}
else
nItem++;
查看联系人信息
OnViewInfo()
USERINFOtemp,*pInfo;
memset(&
temp,0,sizeof(USERINFO));
HTREEITEMhItem=refTreeCtrl.GetSelectedItem();
if(hItem==NULL)
lstrcpy(temp.szUsrName,refTreeCtrl.GetItemText(hItem));
pInfo=pDoc->
FindInfo(&
temp);
if(pInfo==NULL)
CUsrInfoDlg*pDlg=newCUsrInfoDlg(this);
pDlg->
SetUserInfo(pInfo);
Create(IDD_USERINFO_DIALOG,this);
ShowWindow(SW_SHOW);
POSITIONpos=refListCtrl.GetFirstSelectedItemPosition();
if(pos==NULL)
intnItem=refListCtrl.GetNextSelectedItem(pos);
lstrcpy(temp.szUsrName,refListCtrl.GetItemText(nItem,0));
OnUpdateViewInfo(CCmdUI*pCmdUI)
pCmdUI->
Enable(refTreeCtrl.GetSelectedItem()!
Enable(refListCtrl.GetFirstSelectedItemPosition()!
修改联系人信息
OnModifyInfo()
CModUserDlgdlg;
dlg.SetUserInfo(pInfo);
ModUserInfo(pInfo);
lstrcpy(temp.szUsrName,refListCtrl.GetItemText(nItem,0));
删除联系人信息
OnDeleteInfo()
DelUserInfo(pInfo);
5.测试与实现
6.总结
在实现程序的过程中,分别创建菜单栏、工具栏和对话框,并在应用程序框架窗口使用这些界面元素。
同时,通过为菜单、工具命令添加相应的消息响应函数,在这些函数中实现特定功能。
在程序实现中遇到未定义标识符、未包含成员函数等问题,在讨论之后都能解决。
能实现基本通讯薄功能,但在界面设计及修改联系人信息、读取与保存联系人信息等方面还有待优化。