【C++小项目---4】区分身份登录、combo和list控件使用

本文详细介绍了如何在系统中区分管理员与收银员登录,实现不同角色的界面跳转。同时,深入探讨了combo控件和List控件的使用技巧,包括XML文件编辑、错误排查、字体居中解决方案及数据绑定等。


区分管理员和收银员登录:

和之前的验证账号密码是一样的,就是在数据库中查询,这个登陆的用户名对应的职位

如果职位是master,就跳出管理员界面,如果是cashier就跳出收银员页面

	vector<vector<string>> vRet = mysql.Select(que);

	if (vRet[0][0]=="master")
	{
		MainWd mainWd;

		mainWd.Create(NULL, _T("MainWind"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
		mainWd.CenterWindow();
		mainWd.ShowModal();
	}
	else
	{
		CashierWnd cashierWnd;

		cashierWnd.Create(NULL, _T("CashierWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
		cashierWnd.CenterWindow();
		cashierWnd.ShowModal();
	}

combo控件使用:

一路兜兜转转,终于是知道为什么添加了listlableElement之后打开报错line:319

用vs code添加和ultraEdit添加之后,用DuiLib自带的UI设计器打开都是白板,说明xml文件有些被清空

最终,摸索出来,使用记事本大佬编辑器,修改之后点保存,完美无缺

注意:

  • 添加text之后,如果在使用UI设计器打开,listlableElement中的text会被清空
  • 运行报错319很大可能是xml中语法不对

在这里插入图片描述

List控件使用:

  • 创建list控件,建议在xml文件中使用语句创建,使用设计器可能会319报错
  • 调整headerItem中的text和宽度

在这里插入图片描述
完善查询按钮的响应,暂时还没加上查询的combo控件

  • 构建基本的sql查询语句
  • 连接数据库进行mysql_query查询,结果保存在二维数组中
  • 拿到list控件,将数据分item插入到list控件中
	CListUI* pListUI = (CListUI*)m_PaintManager.FindControl(_T("ListEmployeeInfo"));
	pListUI->RemoveAll();

	for (size_t i = 0; i < vRet.size(); ++i)
	{
		vector<string>& strItem = vRet[i];
		CListTextElementUI* pData = new CListTextElementUI;

		pData->SetAttribute(_T("align"), _T("center"));

		pListUI->Add(pData);

		//需要的是PLCSTR类型的
		pData->SetText(0, strItem[1].c_str());
		pData->SetText(1, strItem[2].c_str());
		pData->SetText(2, strItem[3].c_str());
		pData->SetText(3, strItem[5].c_str());
		pData->SetText(4, strItem[6].c_str());
		pData->SetText(5, strItem[7].c_str());
	}
}

在这里插入图片描述
插入按钮也完成了响应,但是暂时没有解决list中字体不居中

  • 从编辑框中获取要插入的员工信息
  • 构建sql语句,进行插入
  • 将结果显示在list控件中
  • 方法和上面查询的类似
//从界面中获取员工的信息
	CDuiString strName=((CEditUI*)m_PaintManager.FindControl(_T("username")))->GetText();
	CDuiString strGender = ((CComboBoxUI*)m_PaintManager.FindControl(_T("comboGender")))->GetText();
	CDuiString strBirthday = ((CEditUI*)m_PaintManager.FindControl(_T("userbirthday")))->GetText();
	CDuiString strPosition = ((CComboBoxUI*)m_PaintManager.FindControl(_T("comboPosition")))->GetText();
	CDuiString strTel = ((CEditUI*)m_PaintManager.FindControl(_T("usertel")))->GetText();
	CDuiString strSal = ((CEditUI*)m_PaintManager.FindControl(_T("usersal")))->GetText();

插入的ID,从list控件的行号获取,转为10进制的整数

	char sz_count[32] = { 0 };
	_itoa(pListUI->GetCount(), sz_count, 10);
	pListUI->GetCount();
	
	string strSQL = "insert into employee values(";
	strSQL += sz_count;
	strSQL += ",'";
	strSQL += StringFromLPCTSTR(strName);
	strSQL += "','";
	strSQL += StringFromLPCTSTR(strGender);
	strSQL += "','";
	strSQL += StringFromLPCTSTR(strBirthday);
	//初始密码123
	strSQL += "','123";
	strSQL += "','";
	strSQL += StringFromLPCTSTR(strPosition);
	strSQL += "','"; 
	strSQL += StringFromLPCTSTR(strTel);
	strSQL += "','";
	strSQL += StringFromLPCTSTR(strSal);
	strSQL += "');";
	//将员工信息插入到list中
	CListUI* pListUI = (CListUI*)m_PaintManager.FindControl(_T("ListEmployeeInfo"));
	CListTextElementUI* pItem = new CListTextElementUI;
	pListUI->Add(pItem);
	pItem->SetText(0, strName);
	pItem->SetText(1, strGender);
	pItem->SetText(2, strBirthday);
	pItem->SetText(3, strPosition);
	pItem->SetText(4, strTel);
	pItem->SetText(5, strSal);

获取编辑框和comno控件的员工信息
在这里插入图片描述
8.20更新,字体居中已解决

  • 插入前的数据库
  • 插入后的list控件
  • 插入后的数据库
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值