77范文网 - 专业文章范例文档资料分享平台

基于C++的通讯录管理系统课程设计(4)

来源:网络收集 时间:2018-12-29 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

} else { m_NameList.SetCurSel(0);//默认选中第一条记录 OnSelchangeNamelist(); } }

/**********************************************\\ 函数原型:void OnAdd() 功能:在链表的结尾添加一条记录,并将默认将新记录的姓名置为“新名字”,其它项为空 输入输出均为空,只是一个过程.

***********************************************/ void CPhoneBookDlg::OnAdd() { // TODO: Add your control notification handler code here GetDlgItem(IDC_NAME)->EnableWindow(TRUE); GetDlgItem(IDC_PHONE)->EnableWindow(TRUE); GetDlgItem(IDC_ADDRESS)->EnableWindow(TRUE); GetDlgItem(IDC_CODE)->EnableWindow(TRUE);//启用文本框控件 curr=(struct PhoneCard*)malloc(sizeof(struct PhoneCard));//将当前指针指向新增加的结点上 strcpy(curr->name,\新名字\ strcpy(curr->num,\ strcpy(curr->address,\ strcpy(curr->code,\将默认的数据复制到当前结点 m_NameList.InsertString(m_NameList.GetCount(),\新名字\ m_NameList.SetCurSel(m_NameList.GetCount()-1);//在列表框中插入新名字并选中 iCount++;//总结点数加1 curr->next=NULL; curr->prev=last; last->next=curr; last=curr;//在尾结点后插入新结点 bFileEmpty=FALSE; bFileModified=TRUE; //修改文件属性,文件被修改且不为空 GetDlgItem(IDC_UPDATE)->EnableWindow(TRUE); GetDlgItem(IDC_DELETE)->EnableWindow(TRUE); GetDlgItem(IDC_SEARCHBYNAME)->EnableWindow(TRUE); GetDlgItem(IDC_SEARCHBYPHONE)->EnableWindow(TRUE);//启用更新、删除、查找按钮控件 LoadInfo(curr);//在文本框显示个人信息 }

/**********************************************\\ 函数原型:void DataUpdate() 功能:完成修改当前记录的操作 输入输出均为空,只是一个过程.

16

***********************************************/ void CPhoneBookDlg::OnUpdate() { // TODO: Add your control notification handler code here UpdateData(); int sel = m_NameList.GetCurSel();//得到所选择记录在列表框中的序号 if(m_szName==\ { MessageBox(\必须键入姓名!\错误!\ m_IDC_Name.SetFocus(); return;//如果姓名输入框为空则发生错误 } strcpy(curr->name,m_szName); strcpy(curr->num,m_szPhone); strcpy(curr->address,m_szAddress); strcpy(curr->code,m_szCode);//将更新的数据从文本输入框复制到结点 m_NameList.DeleteString(sel); m_NameList.InsertString(sel,m_szName); m_NameList.SetCurSel(sel);//更新列表框中的姓名 m_Button_Add.SetFocus();//将焦点设置到“添加”按钮上 }

/**********************************************\\ 函数原型:void OnSelchangeNamelist() 功能:当列表框的选择项改变时,移动指针到指定结点的位置 输入输出均为空,只是一个过程.

***********************************************/ void CPhoneBookDlg::OnSelchangeNamelist() { // TODO: Add your control notification handler code here int sel = m_NameList.GetCurSel();//获得当前的选择 curr=head->next; for(int i=0;inext;//移动当前指针到选定结点 LoadInfo(curr);//更新界面 }

/**********************************************\\ 函数原型:void LoadInfo(PhoneCard *p) 功能:将结点中存放的数据信息显示在文本框中 输入为当前结点的地址值 输出为空

***********************************************/ void CPhoneBookDlg::LoadInfo(PhoneCard *p)

17

{ m_szName=p->name; m_szPhone=p->num; m_szAddress=p->address; m_szCode=p->code; UpdateData(FALSE); m_IDC_Name.SetFocus(); m_IDC_Name.SetSel(0,20,TRUE); }

/**********************************************\\ 函数原型:void OnDelete() 功能:将当前结点删除 输入为空 输出为空

***********************************************/ void CPhoneBookDlg::OnDelete() { // TODO: Add your control notification handler code here int sel = m_NameList.GetCurSel();//得到所选记录在列表框中的序号 struct PhoneCard *p=curr;//新建一个临时指针变量 if (MessageBox(\确定要删除吗?\警告\== IDCANCEL) return;//弹出确认对话框 iCount--;//总结点数减1 //删除当前结点 p->prev->next=p->next; if((p->next)!=NULL)//注意删除结点为末尾结点时的操作! p->next->prev=p->prev; else last=p->prev; free(p);//释放内存空间 m_NameList.DeleteString(sel);//在列表框中删除记录 if (m_NameList.GetCount()==0) { GetDlgItem(IDC_UPDATE)->EnableWindow(FALSE); GetDlgItem(IDC_DELETE)->EnableWindow(FALSE); GetDlgItem(IDC_SEARCHBYNAME)->EnableWindow(FALSE); GetDlgItem(IDC_SEARCHBYPHONE)->EnableWindow(FALSE); GetDlgItem(IDC_NAME)->EnableWindow(FALSE); GetDlgItem(IDC_PHONE)->EnableWindow(FALSE); GetDlgItem(IDC_ADDRESS)->EnableWindow(FALSE); GetDlgItem(IDC_CODE)->EnableWindow(FALSE); OnClear();

18

bFileEmpty=TRUE; bFileModified=TRUE; return;//如果剩除到一条记录都不剩,则需要禁用一些控件以免发生误操作,同时修改文件属性 } if (sel

/**********************************************\\ 函数原型:void OnClear() 功能:清除当前文本框里的内容 输入为空 输出为空

***********************************************/ void CPhoneBookDlg::OnClear() { // TODO: Add your control notification handler code here m_szName=\ m_szPhone=\ m_szAddress=\ m_szCode=\ UpdateData(FALSE); }

/**********************************************\\ 函数原型:void OnClose() 功能:程序结束时将链表中的数据保存到文件 输入为空 输出为空

***********************************************/ void CPhoneBookDlg::OnClose() { // TODO: Add your message handler code here and/or call default struct PhoneCard *p;//声明一个临时指针变量 if((!bNewFile)&&bFileModified)//根据文件属性来决定是否要删除原文件 { fclose(fp); DeleteFile(\ } if(!bFileEmpty)//根据文件是否为空来决定是否要新建文件并写入数据 {

19

if(!(fp=fopen(\如果创建新文件失败 { MessageBox(\sorry but the program encounter a filedisk problem!\ return; } fwrite(&iCount,sizeof(int),1,fp);//将总结点数写入文件 fseek(fp,sizeof(int),0);//移动文件指针 p=head->next;//将临时指针变量移动来头结点的下一个结点,也就是第一个存放数据的结点 while(p)//当结点不为空 { fwrite(p,sizeof(struct PhoneCard),1,fp); p=p->next;//将数据写入文件并将指针后移 } } CDialog::OnClose(); }

void CPhoneBookDlg::OnAbout() { // TODO: Add your control notification handler code here CAboutDlg dlg; dlg.DoModal(); }

void CPhoneBookDlg::OnOK() { OnUpdate();//这个函数是为了处理回车键的事件,默认为关闭对话框,现在改为调用OnUpdate()函数 }

/**********************************************\\ 函数原型:void OnSearchbyname() 功能:以姓名方式查找相应的记录,如不存在则提示找不到 输入为空 输出为空

***********************************************/ void CPhoneBookDlg::OnSearchbyname() { // TODO: Add your control notification handler code here UpdateData(); int sel=m_NameList.FindString(m_NameList.GetCurSel(),m_szSearchContent);//直接调用FindString函数查找并得到序号 if(sel==LB_ERR)//如果找不到记录,则输入查找失败提示 { MessageBox(\找不到记录!\提示\ARNING);

20

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于C++的通讯录管理系统课程设计(4)在线全文阅读。

基于C++的通讯录管理系统课程设计(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/400936.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: