mfc登陆窗口,要求使用账号和密码登陆。有一文本文件存储有多个用户的个人信息,包括姓名,账号,密码,身份证号,密码。文本中任意一个用户可以输入自己的账号和密码登陆。登陆成功后进入另一个窗口,该用户能在此窗口通过点击查询按钮查看自己的相关个人信息并显示出来。具体代码
时间: 2024-02-29 13:57:01 浏览: 47
登陆界面(MFC)
3星 · 编辑精心推荐
以下是一个简单的 MFC 登录窗口程序,其中包含文本文件存储多个用户的个人信息,并实现了查询功能。
首先,我们需要在资源编辑器中创建两个对话框,一个是登录对话框,另一个是个人信息查询对话框。登录对话框包含两个编辑框和一个登录按钮,个人信息查询对话框包含多个静态文本框和一个查询按钮。
接下来,我们需要在登录对话框类中实现登录按钮的单击事件处理函数。在该函数中,我们首先读取文本文件中的所有用户信息,并将其存储在一个向量中。然后,我们遍历向量,查找与用户输入的账号和密码匹配的用户信息。如果找到了匹配的用户,就打开个人信息查询对话框,并将该用户的个人信息传递给该对话框。
以下是登录对话框类的代码:
```
// LoginDlg.h
#pragma once
#include <vector>
struct UserInfo
{
CString name;
CString account;
CString password;
CString id;
};
class CLoginDlg : public CDialogEx
{
public:
CLoginDlg(CWnd* pParent = nullptr);
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_LOGIN_DIALOG };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX);
protected:
HICON m_hIcon;
CString m_strAccount;
CString m_strPassword;
std::vector<UserInfo> m_vecUsers;
protected:
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnBnClickedLoginBtn();
DECLARE_MESSAGE_MAP()
};
```
```
// LoginDlg.cpp
#include "pch.h"
#include "LoginDlg.h"
#include "afxdialogex.h"
#include "InfoDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
CLoginDlg::CLoginDlg(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_LOGIN_DIALOG, pParent)
, m_strAccount(_T(""))
, m_strPassword(_T(""))
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CLoginDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_ACCOUNT_EDIT, m_strAccount);
DDX_Text(pDX, IDC_PASSWORD_EDIT, m_strPassword);
}
BEGIN_MESSAGE_MAP(CLoginDlg, CDialogEx)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_LOGIN_BTN, &CLoginDlg::OnBnClickedLoginBtn)
END_MESSAGE_MAP()
BOOL CLoginDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 加载用户信息
std::ifstream ifs("users.txt");
if (!ifs)
{
AfxMessageBox(_T("Failed to load user information!"));
EndDialog(IDCANCEL);
}
std::string line;
while (std::getline(ifs, line))
{
std::istringstream iss(line);
UserInfo user;
std::getline(iss, user.name.GetBuffer(256), ',');
std::getline(iss, user.account.GetBuffer(256), ',');
std::getline(iss, user.password.GetBuffer(256), ',');
std::getline(iss, user.id.GetBuffer(256), ',');
user.name.ReleaseBuffer();
user.account.ReleaseBuffer();
阅读全文