教我用vc6.0C++语言写一个mfc对话框形式的可以删除,添加,编辑,查询的通讯录系统
时间: 2024-02-19 16:01:15 浏览: 106
VC6.0虽然已经很老了,但是仍然可以使用MFC来进行开发,以下是一个简单的MFC对话框通讯录系统的C++代码示例:
首先,创建一个MFC对话框应用程序,然后在资源视图中添加一个对话框资源以及需要的控件(如编辑框,列表框,按钮等)。
打开对话框的头文件(例如“MyDlg.h”),添加以下代码:
```c++
#include <vector>
#include <string>
struct Contact {
std::string name;
std::string phone;
};
class CMyDlg : public CDialog {
public:
CMyDlg(CWnd* pParent = nullptr); // 构造函数
enum { IDD = IDD_MY_DIALOG }; // 对话框标识符
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
private:
CEdit m_editName;
CEdit m_editPhone;
CListBox m_listContacts;
std::vector<Contact> m_contacts; // 储存联系人信息
public:
afx_msg void OnBnClickedBtnAdd(); // 添加联系人按钮的点击事件处理函数
afx_msg void OnBnClickedBtnDelete(); // 删除联系人按钮的点击事件处理函数
afx_msg void OnBnClickedBtnEdit(); // 编辑联系人按钮的点击事件处理函数
afx_msg void OnBnClickedBtnSearch(); // 查询联系人按钮的点击事件处理函数
};
```
然后,在“MyDlg.cpp”文件中,添加以下代码:
```c++
#include "MyDlg.h"
#include "afxdialogex.h"
CMyDlg::CMyDlg(CWnd* pParent /*=nullptr*/)
: CDialog(IDD_MY_DIALOG, pParent)
{
}
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT_NAME, m_editName);
DDX_Control(pDX, IDC_EDIT_PHONE, m_editPhone);
DDX_Control(pDX, IDC_LIST_CONTACTS, m_listContacts);
}
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
ON_BN_CLICKED(IDC_BTN_ADD, &CMyDlg::OnBnClickedBtnAdd)
ON_BN_CLICKED(IDC_BTN_DELETE, &CMyDlg::OnBnClickedBtnDelete)
ON_BN_CLICKED(IDC_BTN_EDIT, &CMyDlg::OnBnClickedBtnEdit)
ON_BN_CLICKED(IDC_BTN_SEARCH, &CMyDlg::OnBnClickedBtnSearch)
END_MESSAGE_MAP()
void CMyDlg::OnBnClickedBtnAdd()
{
CString name, phone;
m_editName.GetWindowText(name);
m_editPhone.GetWindowText(phone);
if (!name.IsEmpty() && !phone.IsEmpty()) {
Contact contact;
contact.name = CT2A(name);
contact.phone = CT2A(phone);
m_contacts.push_back(contact);
m_listContacts.AddString(name);
}
}
void CMyDlg::OnBnClickedBtnDelete()
{
int index = m_listContacts.GetCurSel();
if (index != LB_ERR) {
m_listContacts.DeleteString(index);
m_contacts.erase(m_contacts.begin() + index);
}
}
void CMyDlg::OnBnClickedBtnEdit()
{
int index = m_listContacts.GetCurSel();
if (index != LB_ERR) {
CString name, phone;
m_editName.GetWindowText(name);
m_editPhone.GetWindowText(phone);
if (!name.IsEmpty() && !phone.IsEmpty()) {
Contact contact;
contact.name = CT2A(name);
contact.phone = CT2A(phone);
m_contacts[index] = contact;
m_listContacts.DeleteString(index);
m_listContacts.InsertString(index, name);
m_listContacts.SetCurSel(index);
}
}
}
void CMyDlg::OnBnClickedBtnSearch()
{
CString name;
m_editName.GetWindowText(name);
if (!name.IsEmpty()) {
for (size_t i = 0; i < m_contacts.size(); i++) {
if (m_contacts[i].name == CT2A(name)) {
m_listContacts.SetCurSel(i);
m_editPhone.SetWindowText(m_contacts[i].phone.c_str());
return;
}
}
MessageBox(_T("未找到该联系人"), _T("提示"), MB_OK);
}
}
```
在这个示例中,我们创建了一个Contact结构体,用于储存每个联系人的姓名和电话号码。在对话框中,我们添加了两个编辑框(用于输入姓名和电话号码),一个列表框(用于显示联系人列表)以及四个按钮(用于添加、删除、编辑和查询联系人)。
在添加联系人按钮的点击事件处理函数中,我们获取编辑框中输入的姓名和电话号码,如果两个值都不为空,则创建一个新的Contact对象,将其添加到联系人列表中,并将姓名添加到列表框中。
在删除联系人按钮的点击事件处理函数中,我们获取当前选中的联系人在列表框中的索引,如果存在选中的联系人,则从列表框和联系人列表中删除该联系人。
在编辑联系人按钮的点击事件处理函数中,我们获取当前选中的联系人在列表框中的索引,如果存在选中的联系人,并且编辑框中输入的姓名和电话号码都不为空,则更新该联系人的信息,并将其在列表框中的显示名称更新为新的姓名。
在查询联系人按钮的点击事件处理函数中,我们获取编辑框中输入的姓名,如果该姓名在联系人列表中存在,则将其在列表框中选中,并将其电话号码显示在电话号码编辑框中,否则弹出提示框。
这只是一个简单的示例,您可以根据需要添加更多的功能和控件。请注意,在VC6.0中使用Unicode字符集时,CString的构造函数参数需要使用CT2A宏进行转换。
阅读全文