mfc使用两个下拉组合框读取文件中所有学生的姓名和学号,两个按钮分别执行按学生姓名和学号查询学生信息的功能,并将学生信息显示在列表框中示例代码
时间: 2024-02-18 13:05:46 浏览: 95
下面是一个简单的示例代码,可以帮助您了解如何使用 MFC 中的组合框和列表框实现这个功能:
首先,在您的对话框中添加两个下拉组合框(IDC_COMBO_NAME 和 IDC_COMBO_ID),一个列表框(IDC_LIST_RESULT),以及两个按钮(IDC_BUTTON_SEARCH_NAME 和 IDC_BUTTON_SEARCH_ID)。
然后,在您的对话框类中添加以下成员变量:
```cpp
CComboBox m_comboName; // 姓名下拉框
CComboBox m_comboID; // 学号下拉框
CListBox m_listResult; // 结果列表框
```
在对话框的 OnInitDialog 函数中,初始化下拉框的内容:
```cpp
// 初始化姓名下拉框
m_comboName.AddString(_T("张三"));
m_comboName.AddString(_T("李四"));
m_comboName.AddString(_T("王五"));
// 初始化学号下拉框
m_comboID.AddString(_T("101"));
m_comboID.AddString(_T("102"));
m_comboID.AddString(_T("103"));
```
接下来,在按学生姓名查询按钮的响应函数中,您可以使用以下代码来搜索学生信息:
```cpp
void CMyDialog::OnBtnSearchName()
{
CString strName;
m_comboName.GetWindowText(strName); // 获取选择的姓名
// TODO: 在文件中搜索姓名为 strName 的学生信息,并将结果添加到列表框中
}
```
在按学生学号查询按钮的响应函数中,您可以使用以下代码来搜索学生信息:
```cpp
void CMyDialog::OnBtnSearchID()
{
CString strID;
m_comboID.GetWindowText(strID); // 获取选择的学号
// TODO: 在文件中搜索学号为 strID 的学生信息,并将结果添加到列表框中
}
```
最后,在搜索学生信息时,您可以使用 CStdioFile 类来读取文件中的内容,并使用 CString 的 Split 函数来分割每行的数据。以下是一个示例代码,可以帮助您了解如何实现这个功能:
```cpp
CStdioFile file;
if (file.Open(_T("student.txt"), CFile::modeRead))
{
CString strLine;
while (file.ReadString(strLine))
{
CStringArray arrData;
int nCount = strLine.Split(_T(","), arrData); // 分割每行的数据
if (nCount == 2)
{
CString strName = arrData[0];
CString strID = arrData[1];
// 如果是按姓名搜索,检查姓名是否匹配
if (!strName.IsEmpty() && strName == strSearch)
{
m_listResult.AddString(strLine); // 添加到结果列表框中
}
// 如果是按学号搜索,检查学号是否匹配
if (!strID.IsEmpty() && strID == strSearch)
{
m_listResult.AddString(strLine); // 添加到结果列表框中
}
}
}
file.Close();
}
```
请注意,以上示例代码仅提供了一种可能的实现方法,并不是最佳或唯一的方法。您需要根据自己的具体需求和代码结构来进行修改和优化。
阅读全文