⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phonebookdlg.cpp

📁 这是一个电话本的代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	{
		CDialog::OnPaint();
	}	
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CPhonebookDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CPhonebookDlg::OnExit() 
{
	// TODO: Add your control notification handler code here
	//退出程序
	save();//保存到文件
	PostMessage(WM_QUIT);
}

void CPhonebookDlg::OnExchange() 
{
	// TODO: Add your control notification handler code here
	//保存修改后的电话记录
	UpdateData();
	type=4;//修改
	if(m_selectname=="")//未选中任何人 LB_ERR==m_namelist.FindString(-1,m_selectname)
	{
		MessageBox("请选择要修改信息的联系人","警告!");
		//取消该修改的相关信息的显示
		m_editname.SetWindowText("");
		m_editadd.SetWindowText("");
		m_editemail.SetWindowText("");
		m_editnumber.SetWindowText("");
		m_editqq.SetWindowText("");
		m_editinformation.SetWindowText("");
		type=0;
		UpdateData(TRUE);
		return;
	}
	else
	{
		search(m_selectname);//修改联系人信息
		m_namelist.SetCurSel(m_namelist.FindString(-1,m_showname));//选中被修改的联系人
		m_selectname=m_showname;
		type=0;
		search(m_showname);//显示联系人信息
		UpdateData(TRUE);
		//保存到文件
	}
}

void CPhonebookDlg::OnSearch() 
{
	// TODO: Add your control notification handler code here
	//查找联系人
	Csearch searchdlg;
	if(IDOK==searchdlg.DoModal())
	{//查找联系人,找到就显示,否则MessageBox()	
		CString strsearch=searchdlg.m_search;
		type=2;
		if(strsearch=="")
		{
			MessageBox("联系人姓名不能为空","提示");
			return;
		}
		search(strsearch);
	}
}

void CPhonebookDlg::OnCreate() 
{
	// TODO: Add your control notification handler code here
	//增加联系人记录
	Cincreat increat;
	if(IDOK==increat.DoModal())
	{
	//保存增加的联系人信息
		UpdateData();
		type=1;
		if(increat.m_name=="")
		{
			MessageBox("联系人姓名不能为空","提示");
			return;
		}
		search(increat.m_name);
		if(exist)
		{//已存在该联系人,则询问是否继续保存
			Csure sure;
			if(sure.DoModal()==IDOK)
			{//继续保存
				m_namelist.AddString(m_showname);//在列表中显示新增加的联系人

				m_showadd=increat.m_add;
				m_showemail=increat.m_email;
				m_showinformation=increat.m_information;
				m_showname=increat.m_name;
				m_shownumber=increat.m_number;
				m_showqq=increat.m_qq;
				m_called=increat.m_called;

				m_namelist.SetCurSel(m_namelist.FindString(-1,m_showname));
				m_selectname=m_showname;//////
				newuser* m_usertemp=new newuser(m_showname,m_shownumber,m_showemail,m_showqq,
							m_showinformation,m_showadd,m_called);
				m_userarr.Add(m_usertemp);
				
				type=0;
				search(m_showname);
				Invalidate();
			}
		}
		else
		{//不存在则保存联系人
			m_namelist.AddString(increat.m_name);//在列表中显示新增加的联系人	
			
			m_showadd=increat.m_add;
			m_showemail=increat.m_email;
			m_showinformation=increat.m_information;
			m_showname=increat.m_name;
			m_shownumber=increat.m_number;
			m_showqq=increat.m_qq;
			m_called=increat.m_called;

			m_namelist.SetCurSel(m_namelist.FindString(-1,m_showname));
			m_selectname=m_showname;//////
			newuser* m_usertemp=new newuser(m_showname,m_shownumber,m_showemail,m_showqq,
						m_showinformation,m_showadd,m_called);
			m_userarr.Add(m_usertemp);
			
			type=0;
			search(m_showname);
			Invalidate();
		}
	}
}

void CPhonebookDlg::OnDelete() 
{
	// TODO: Add your control notification handler code here
	type=3;
	if(m_selectname=="")
	{
		MessageBox("没有选择要删除的联系人!","提示");
		type=0;
		return;
	}
	m_namelist.DeleteString(m_namelist.GetCurSel());//在列表中删除选中的联系人
	//取消该联系人相关信息的显示
	m_editname.SetWindowText("");
	m_editadd.SetWindowText("");
	m_editemail.SetWindowText("");
	m_editnumber.SetWindowText("");
	m_editqq.SetWindowText("");
	m_editinformation.SetWindowText("");
	m_calledctrl.SetWindowText("");
	search(m_selectname);
	m_selectname="";	
	//从文件中删除该联系人信息
	UpdateData();
}

void CPhonebookDlg::OnSelchangeNamelist() 
{
	// TODO: Add your control notification handler code here	
	//显示选中的联系人的相关信息
	UpdateData();
	search(m_selectname);
	
}

void CPhonebookDlg::save()
{
	//保存到文件
	CFile pfile;
	pfile.Open("pb.new",CFile::modeWrite |CFile::modeCreate);
	CArchive phonebook(&pfile,CArchive::store);
	phonebook<<m_sec;//保存密码
	int nuser=m_userarr.GetSize();
	phonebook<<nuser;//保存人数
	for(int i=0;i<nuser;i++)
	{
		phonebook<<m_userarr.GetAt(i);//保存数据
	}
	phonebook.Flush();
	phonebook.Close();
	pfile.Close();
}

void CPhonebookDlg::search(CString strsearch)
{/////
	exist=FALSE;
 	int nuser;
 	nuser=m_userarr.GetSize();
	newuser* puser;
	int i=0;
 	for(;i<nuser;i++)
 	{
		puser=(newuser*)m_userarr.GetAt(i);
		if(puser->m_showname==strsearch)//查找选择的联系人
		{
			if(type!=3&&type!=4)//不是删除和修改操作
			{
				exist=TRUE;//存在此人
				m_showadd=puser->m_showadd;//读取此人信息
				m_showemail=puser->m_showemail;
				m_showinformation=puser->m_showinformation;
				m_showname=puser->m_showname;
				m_shownumber=puser->m_shownumber;
				m_showqq=puser->m_showqq;
				m_called=puser->m_called;
				//显示信息
				m_editname.SetWindowText(m_showname);
				m_editadd.SetWindowText(m_showadd);
				m_editemail.SetWindowText(m_showemail);
				m_editnumber.SetWindowText(m_shownumber);
				m_editqq.SetWindowText(m_showqq);
				m_editinformation.SetWindowText(m_showinformation);
				m_calledctrl.SetWindowText(m_called);				
				//UpdateData();//更新控件数据
				break;
			}
			else
			{
				break;
			}
		}
		else
		{
			exist=FALSE;//无此人
		}
 	}
	switch(type)
	{
	case 1:////增加联系人记录
		type=0;
		break;
	case 2://查找联系人
		if(exist)
		{
			m_namelist.SetCurSel(i);
			Invalidate();
		}		
		break;
	case 3://删除
		newuser* pusertemp;
		pusertemp=(newuser*)m_userarr.GetAt(i);
		delete pusertemp;
		m_userarr.RemoveAt(i);
		type=0;
		break;
	case 4://修改
		if (m_showname=="") {
			MessageBox("联系人姓名不能为空");
			return;
		}
		m_namelist.DeleteString(m_namelist.GetCurSel());//在列表中删除选中的联系人
		//更改联系人信息
		puser->m_showadd=m_showadd;
		puser->m_showemail=m_showemail;
		puser->m_showinformation=m_showinformation;
		puser->m_showname=m_showname;
		puser->m_shownumber=m_shownumber;
		puser->m_showqq=m_showqq;
		puser->m_called=m_called;
		m_namelist.AddString(puser->m_showname);
		type=0;
		break;
	default:
		break;
	}
	if(type==2)
	{
		type=0;
		if(exist==FALSE)//未找到联系人
		{
			MessageBox("您查找的联系人不存在","查找");
		}
	}
}

void CPhonebookDlg::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	save();//保存数据
	CDialog::OnClose();
}
void CPhonebookDlg::OnBnClickedSecchange()
{
	// 修改密码
	CSecchange secdlg;
	if (secdlg.DoModal()==IDOK) {
		if (m_sec==secdlg.m_osec) {//旧密码正确
			if (secdlg.m_nsec==secdlg.m_nsec2) {//新密码确认
				m_sec=secdlg.m_nsec;
				MessageBox("密码修改成功\n请记好新密码!");
			}
			else	MessageBox("新密码两次输入不一致!");
		}
		else MessageBox("旧密码输入错误!");
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -