MFC---SaleSystem项目(上)
  5Z6Aj0LQwRjK 2023年11月14日 28 0


新建项目

1.1根据向导创建项目

首先,新建MFC项目(SaleSystem),基于单文档,MFC标准项目,同时,去掉工具栏:

MFC---SaleSystem项目(上)_头文件

MFC---SaleSystem项目(上)_控件_02

MFC---SaleSystem项目(上)_用户名_03

1.2 添加预处理指令

由于微软在VS2013中不建议再使用C/C++的传统库函数scanf,strcpy,sprintf等,所以直接使用这些库函数会提示C4996错误。

VS建议采用带_s的函数,如scanf_s、strcpy_s,但这些并不是标准C/C++函数。要想继续使用此函数,需要添加 _CRT_SECURE_NO_WARNINGS这个预定义。

在项目 -> 属性 -> C/C+±>预处理器 -> 预处理器定中添加 _CRT__NO_WARNINSECUREGS

MFC---SaleSystem项目(上)_mfc_04

1.3 设置窗口属性

  1. 设置图标
    打开资源视图,添加本地ICO图标,在res文件夹中添加我们提前准备的图标资源:

在资源的属性中修改ID(IDI_ICON_WIN):

MFC---SaleSystem项目(上)_控件_05

在CMainFrame的 OnCreate()中添加如下代码:

MFC---SaleSystem项目(上)_控件_06

//设置图标,IDI_ICON_WIN为图标资源ID,此为WINAPI函数
SetClassLong(m_hWnd, GCL_HICON, (LONG)AfxGetApp()->LoadIconW(IDI_ICON_WIN));
  1. 设置窗口大小和居中显示
还是在CMainFrame的OnCreate()中接着写代码:
	//设置窗口的位置和大小:CWnd::MoveWindow
	//0, 0, 起点坐标x和y
	//800, 500, 窗口宽度和高度
	MoveWindow(0, 0, 800, 500);

	//将窗口移动到屏幕中央,CWnd::CenterWindow
	CenterWindow();
  1. 设置窗口标题
    在CSaleSystemDoc文档类中的OnNewDocument()函数中添加如下代码:

MFC---SaleSystem项目(上)_用户名_07

//设置窗口标题,CDocument::SetTitle
SetTitle(TEXT("销售管理系统"));

程序运行效果图如下:

MFC---SaleSystem项目(上)_c++_08

2 文件处理

2.1 文件内容格式

登陆用户信息:

MFC---SaleSystem项目(上)_c++_09

商品信息:

MFC---SaleSystem项目(上)_控件_10

2.2 设计文件处理类CInfoFile

  1. 添加文件处理类CInfoFile

MFC---SaleSystem项目(上)_控件_11

MFC---SaleSystem项目(上)_控件_12


MFC---SaleSystem项目(上)_c++_13

  1. 头文件(InfoFile.h)的设计
    定义两个配置文件路径宏:
#define _F_LOGIN "./login.ini"
#define _F_STOCK "./stock.txt"

添加文件信息结构体,具体如下:

struct msg
{
	int id;		//商品id
	string name;	//商品名,别忘包含相应头文件
	int price;	//商品价格
	int num;	//商品个数
};

商品很多,而且要经常添加删除,可以考虑用链表来存储,所以,在成员变量中添加list类型的成员变量:

list<msg> ls;	//存储商品容器,别忘包含相应头文件
int num;	//用来记录商品个数

项目中需要读写的文件有两种,用户信息配置文件和商品信息文件。具体 API 接口如下:

//读取登陆信息
	void ReadLogin(CString &name, CString &pwd);

	//修改密码
	void WritePwd(char* name, char* pwd);

	// 读取商品数据
	void ReadDocline();

	//商品写入文件
	void WirteDocline();

	//添加新商品
	void Addline(CString name, int num, int price);

3 登陆对话框

3.1 ui设计

1)添加对话框资源(ID修改为DIALOG_LOGIN),添加所需控件:

MFC---SaleSystem项目(上)_c++_14


MFC---SaleSystem项目(上)_用户名_15

2)选中对话框 -> 右击 -> 添加类 -> 类名:CLoginDlg

MFC---SaleSystem项目(上)_c++_16


MFC---SaleSystem项目(上)_用户名_17

3)根据需求,控件关联所需变量

MFC---SaleSystem项目(上)_头文件_18

用户名编辑区关联CString m_user,密码登陆框关联CString m_pwd。

3.2 功能实现

1)在对话框类中,重写 OnInitDialog 函数,进行初始化,设置一些默认登录信息。

MFC---SaleSystem项目(上)_控件_19

MFC---SaleSystem项目(上)_用户名_20

m_user = TEXT("斧头帮帮主");	//用户名
m_pwd = TEXT("123456");//密码
UpdateData(FALSE); //内容更新到对应的控件

2)登陆窗口的创建

在应用程序类CSaleSystemApp的InitInstance() 里面的APP 创建之前创建登陆对话框:

MFC---SaleSystem项目(上)_mfc_21

CLoginDlg dlg;	//创建登陆对话框,需要头文件#include "LoginDlg.h"
dlg.DoModal();	//以模态方式运行

3)登陆按钮功能实现

//登陆按钮处理函数
void CLoginDlg::OnBnClickedButton1()
{
	// TODO:  在此添加控件通知处理程序代码

	UpdateData(TRUE); //更新控件的数据到对应的变量

	CInfoFile file; //创建操作文件类对象,需要头文件#include "InfoFile.h" 
	CString user, pwd;

	//读取配置文件,获取用户名密码,参数为引用传递
	file.ReadLogin(user, pwd);

	if (m_user == user)//用户名相等
	{
		if (m_pwd != pwd)
		{
			MessageBox(_T("密码错误"));
			m_user.Empty(); //清空
			m_pwd.Empty();
		}
		else
		{
			CDialogEx::OnOK();
		}
	}
	else
	{
		MessageBox(_T("用户名不存在"));
		m_user.Empty();
		m_pwd.Empty();
	}
}

4)取消按钮功能实现

//取消按钮功能实现
void CLoginDlg::OnBnClickedButton2()
{
	// TODO:  在此添加控件通知处理程序代码
	exit(0);	//结束整个程序
}

5)右上角关闭按钮功能实现

选中对话框模板 -> 右击 -> 属性 -> 消息 -> WM_CLOSE

MFC---SaleSystem项目(上)_用户名_22

//关闭按钮
void CLoginDlg::OnClose()
{
	// TODO:  在此添加消息处理程序代码和/或调用默认值
	exit(0);	//结束整个程序

	CDialogEx::OnClose();
}

6)编辑区回车键关闭对话框问题解决

MFC---SaleSystem项目(上)_用户名_23


MFC---SaleSystem项目(上)_mfc_24


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
5Z6Aj0LQwRjK