C++语言课程设计 MFC设计 图书管理系统(3)

2018-12-09 23:46

C++语言课程设计

第四章 详细设计

4.1程序源代码

4.1.1登陆模块

Login.h

#pragma once

#include\#include \// Login 对话框

class Login : public CDialog {

DECLARE_DYNAMIC(Login) int a; public:

Login(CWnd* pParent = NULL); // 标准构造函数 virtual ~Login();

// 对话框数据

enum { IDD = IDD_LOGIN }; protected:

virtual void DoDataExchange(CDataExchange* pDX); CtianjinDlg dlg;

DECLARE_MESSAGE_MAP() public:

virtual BOOL OnInitDialog(); afx_msg void OnClose(); CString user;

CString password;

afx_msg void OnBnClickedOk(); CButton regis;

afx_msg void OnBnClickedButton1();

Login.cpp

#include \#include \#include \

#include \#include \

IMPLEMENT_DYNAMIC(Login, CDialog) Login::Login(CWnd* pParent /*=NULL*/) : CDialog(Login::IDD, pParent) , user(_T(\

8

C++语言课程设计

, password(_T(\{ }

Login::~Login() { }

void Login::DoDataExchange(CDataExchange* pDX) {

CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT3, user); DDX_Text(pDX, IDC_EDIT4, password); DDX_Control(pDX, IDC_BUTTON1, regis); }

BEGIN_MESSAGE_MAP(Login, CDialog) ON_WM_CLOSE()

ON_BN_CLICKED(IDOK, &Login::OnBnClickedOk)

ON_BN_CLICKED(IDC_BUTTON1, &Login::OnBnClickedButton1) END_MESSAGE_MAP()

BOOL Login::OnInitDialog() {

CDialog::OnInitDialog();

a=0;//初始化a的值为0 用于判断该值是否退出本程序 当输入密码错误,就使该a的值增加1

CRect r;//矩形的类,数据成员是 矩形左上角的x的坐标,矩形左上角Y的坐标,矩形右下角x的坐标,矩形右下角Y的坐标 CString user;

this->GetClientRect(&r);//是获得窗口的当前的客户区,把各坐标值保存在r对象。

this->MoveWindow(600,300,r.right,r.bottom);//根据上面获得窗口的大小,来调整并且移动。

GetPrivateProfileString(\/setting.ini\

//从setting.ini配置文件中的login节名中获取该user键名的值并保存在user的值,如果找不到该键名,则保存第三个参

//数的值 即默认的值 表示未注册的账号,反之 找到了该值,表示已经注册了 if(user!=\用于判断上面获得的值是否已经注册过 如注册过,则执行if()后边的语句

regis.EnableWindow(0);//在该函数的参数赋值为0 表示禁止指定的控件接受鼠标和键盘的输入 由于该已经注册过的。

regis.SetWindowTextA(\已注册\指定该控件的内容设为 ”已注册\用于提示 }

return TRUE;

9

C++语言课程设计

}

void Login::OnClose() {

CDialog::OnClose(); }

void Login::OnBnClickedOk() {

this->UpdateData(1);//将各控件中的数据保存到相应的变量分别为”user“ ” password“

if(!user.IsEmpty()&&!password.IsEmpty())//检查该各变量的值是否为空,如该值为空,就执行else后边的语句 {

CString user1,password1;//定义两个字符串类变量 用于从配置文件的注册过的用户及密码的值保存在该变量的

GetPrivateProfileString(\./setting.ini\从本身程序的当前的setting.ini配置

//文件中的login节名中获取该user键名的值并保存在user1的值,如果找不到该键名,则保存默认值为”NULL“

GetPrivateProfileString(\20),20,\如同上面的方法

if(user==user1&&password==password1)//对比各值是否一致,满足此条件表示该用户名及密码都是正确,可以登陆,即执行if()后边的语句 {

this->ShowWindow(SW_HIDE);//把该对话框的显示方式为隐藏 dlg.DoModal();//启动主窗口的对话框 CDialog::OnOK(); } else{

a++;//密码错误次数

if(a>3)//如超过3次的错误密码就执行if()后边的语句 { CDialog::OnCancel(); return;

//调用关闭该对话框的函数 }

CString d;

d.Format(\用户名或者密码错误%d次 超过三次错误即将自动退出\

MessageBox(d,\登陆提示\用于提示密码错误 以避免令人觉得这程序有问题 } } else

MessageBox(\用户名或者密码的字符串为空\登陆提示

10

C++语言课程设计

\当该值为空,则执行该语句 用于提示。 }

void Login::OnBnClickedButton1() {

Register dialog;//定义注册对话框的对象变量 dialog.DoModal();//启动 注册对话框 } };

4.1.2注册模块

Register.h #pragma once

#include \// Register 对话框

class Register : public CDialog {

DECLARE_DYNAMIC(Register) public:

Register(CWnd* pParent = NULL); // 标准构造函数 virtual ~Register(); // 对话框数据

enum { IDD = IDD_REGISTER }; protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV DECLARE_MESSAGE_MAP() public:

afx_msg void OnBnClickedOk(); CString user;

CString password; CString password1; };

Register.cpp

#include \#include \#include \#include \// Register 对话框

IMPLEMENT_DYNAMIC(Register, CDialog)

Register::Register(CWnd* pParent /*=NULL*/) : CDialog(Register::IDD, pParent) , user(_T(\

, password(_T(\ , password1(_T(\

11

支持 C++语言课程设计

{ }

Register::~Register() { }

void Register::DoDataExchange(CDataExchange* pDX) {

CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, user); DDX_Text(pDX, IDC_EDIT6, password); DDX_Text(pDX, IDC_EDIT3, password1); }

BEGIN_MESSAGE_MAP(Register, CDialog)

ON_BN_CLICKED(IDOK, &Register::OnBnClickedOk) END_MESSAGE_MAP()

void Register::OnBnClickedOk() {

this->UpdateData();//默认值是TRUE,即从控件传给变量

if(!user.IsEmpty()&&!password.IsEmpty()&&!password1.IsEmpty())//各变量的字符串是否为空,如都不为空,则执行if()后边的语句继续注册 {

if(password==password1)//新密码与第二次新密码对比下,如相等,则继续执行注册,反之不继续注册

{if(IDOK==MessageBox(\确定要注册该账号吗?\注册提示\MB_ICONQUESTION ))//输出提示 是否要确定注册,如点击确认返回值为IDOK {

WritePrivateProfileString(\

////向该setting.ini配置文件中的login节名中设置该user键名的值为user的值

WritePrivateProfileString(\;

HWND button; //定义窗口句柄

this->GetParent()->GetDlgItem(IDC_BUTTON1,&button);//获取当前窗口的父窗口句柄(登陆对话框),然后通过父窗口句柄获取指定参数ID为IDC_BUTTON1的子元素的句柄并绑定button窗口句柄

::SetWindowTextA(button,\已注册\改变指定button窗口句柄的文本内容为\已注册\。

::EnableWindow(button,0);//第二个参数的值为0表示禁止指定的控件接受鼠标和键盘的输入

MessageBox(\已经成功注册该账号:\注册提示\MB_ICONASTERISK );//注册成功输出提示 CDialog::OnCancel(); }} else

12


C++语言课程设计 MFC设计 图书管理系统(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:3-学习资源-幼儿园优秀游戏案例汇编

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: