#收银台
开发环境:C/C++、VS2017、MySQL Server 8.0
项目功能:实现小型超市管理货物和收银。
老板具有管理员超级权限可以对员工进行管理。
员工可以对货物仓库进行管理。
收银功能的简单实现。
项目描述:该项目是借助Duilib库实现了小型超市管理货物和收银功能,使用C++类
封装MySQL的一些API,并配合Duilib程序Win32消息循环进行事件响应,
分别给员工和管理员提供不同的操作,员工具有仓库管理和收银的功能,而管
理员加了管理员工的操作。针对不同用户登陆区分不同的功能。
收银台:大家每天都在使用,为人类生活提供方便。
每写一个项目都是成长的经历,当然每次都要进行环境的配置。
我就不介绍了,一切参照Duilib入门教程汇总
这个项目做起来没有太大的现实意义,因为我深知可以买到更好的,而这个项目做起来的意义在于对与我个人能力的提高,Duilib 是一款强大的界面开发工具,这个项目我学会了它的使用方法,虽然过程是艰辛的,可是收获真的不少。
下面我介绍一下这个项目:
核心功能:
1.登陆界面。
2.管理员操作界面。
3.售货员操作界面。
具体实现:如下
1.登录界面
超级管理员和售货员根据自己的账号和密码进行登录。
输入账号以及密码后,根据身份的不同,进入不同界面,进行相应的操作。
登陆密码判断是根据数据库存储内容进行判断,具体登陆窗口主逻辑代码如下:
void LogInWnd::LogIn()
{
//从编辑框获取用户名和密码
//需要强转
CEditUI * pEditUserName = (CEditUI*)m_PaintManager.FindControl(_T("EDIT_USER_NAME"));
CDuiString strUserName = pEditUserName->GetText();
CEditUI * pEditPassword = (CEditUI*)m_PaintManager.FindControl(_T("EDIT_USER_PASSWORD"));
CDuiString strUserPassword = pEditPassword->GetText();
//查询数据库,检测用户是否存在
string strSQL("select * from ceshi where name1 = '");
//ascII UNICODE
strSQL += UnicodeToANSI(strUserName);
strSQL += "';";
vector<vector<string>> vRet = m_pMySQL->Select(strSQL);
if (vRet.empty())
{
MessageBox(m_hWnd, _T("用户名错误"), _T("Cashier"), IDOK);
return;
}
string userpassward = UnicodeToANSI(strUserPassword);
if (userpassward != vRet[0][4])
{
MessageBox(m_hWnd, _T("用户密码错误"), _T("Cashier"), IDOK);
return;
}
//隐藏登陆窗口
ShowWindow(false);
if (vRet[0][5] == "管理员")
{
//创建主窗口
MainWnd mainWnd(m_pMySQL);
mainWnd.Create(NULL, _T("MainWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
mainWnd.CenterWindow();
mainWnd.ShowModal();
}
else
{
//创建主窗口
CCashierWnd mainWnd(m_pMySQL);
mainWnd.Create(NULL, _T("CashierWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
mainWnd.CenterWindow();
mainWnd.ShowModal();
}
// 控件 tablayoue
}
![](https://i-blog.csdnimg.cn/blog_migrate/57682330dec09b14ba1ef57184f3742f.png)
2.管理员操作界
查询员工基本信息
添加新员工,员工离职后,删除员工信息,员工信息变更时,更新员工信息
界面操作使用DuiDersigner_d可视化工具搭建界面,操作XML文件。
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<Window size="959,600" sizebox="4,4,4,4" caption="0,0,0,32" mininfo="600,400">
<VerticalLayout width="907" height="675" bkimage="C:\Users\Administrator\Desktop\20161019212101_52148.jpg" bkcolor="#FFF0F0F0" bkcolor2="#FFAAAAA0">
<HorizontalLayout height="32" bkcolor="#FF57FF80" bkcolor2="#FFAAAAA0">
<Button name="BTN_MIN" text="最小化" float="true" pos="855,0,0,0" width="53" height="32" textcolor="#FF000000" disabledtextcolor="#FFA7A6AA" align="center" normalimage="file='skin\sys_dlg_min.png' 
source='26,0,52,17'" pushedimage="file='skin\sys_dlg_min.png' 
source='0,0,26,17'" focusedimage="file='skin\sys_dlg_min.png' 
source='52,0,78,17'" />
<Button name="BTN_CLOSE" text="关闭" float="true" pos="907,0,0,0" width="53" height="32" textcolor="#FF000000" disabledtextcolor="#FFA7A6AA" align="center" normalimage="file='skin\sys_dlg_close.png' 
source='90,0,135,17'" pushedimage="file='skin\sys_dlg_close.png' 
source='0,0,45,17'" focusedimage="file='skin\sys_dlg_close.png' 
source='45,0,90,17'" />
</HorizontalLayout>
<VerticalLayout width="958" height="522">
<Edit name="username" text="page1" width="113" height="34" bkcolor="#FFFFFFFF" textpadding="4,3,4,3" textcolor="#FF000000" disabledtextcolor="#FFA7A6AA" />
<Combo name="usergender" float="true" pos="112,2,0,0" width="140" height="32" bkimage="skin\GameRes\Combo_nor.bmp" itemtextcolor="#FF000000" itemselectedtextcolor="#FF000000" itemselectedbkcolor="#FFC1E3FF" itemhottextcolor="#FF000000" itemhotbkcolor="#FFE9F5FF" itemdisabledtextcolor="#FFCCCCCC" itemdisabledbkcolor="#FFFFFFFF" normalimage="file='ComboBox/Combo_nor.bmp'"