MyStore
发布日期:2021-09-20 08:56:05
浏览次数:9
分类:技术文章
本文共 2468 字,大约阅读时间需要 8 分钟。
MyStore 管理系统
功能
- 连接MySQL管理信息
- 封装MySQL接口自动完成SQL语句拼接并执行
- 窗口界面支持优雅的操作
- 登录系统不同权限不同界面
- 对员工信息的增删改查
- 对商品信息的增删改查
- 可视化收银界面
项目概述
项目基于Duilib第三方库,以及对MySQL等函数的封装实现的一个超市商品及员工管理工具
XML部分控件
控件名 | 作用 |
---|---|
VerticalLayout | 纵向布局控件 |
HorizaontalLayout | 水平布局控件 |
Button | 按钮控件,响应点击消息 |
Option和TabLayout | 两控件一起使用实现多页面 |
List | 在界面中显示一个列表 |
Edit | 显示一个编辑框 |
Label/Text | 放文字信息 |
Control | 所用控件的基类,可以用来放图片 |
ComboBox | 下拉框控件 |
消息响应类型
消息 | 说明 | Sender |
---|---|---|
click | 鼠标点击 | CButtonUI |
selectchanged | 变更选项 | COptionUI |
消息处理机制
1.注册消息处理函数
在CWindowWnd的Create()函数(创建窗口函数)中调用RegisterSuperclass(),注册消息回调函数(__WndProc); 2.消息分发 消息回调函数(处理所有系统发送的消息),通过调用HandleMessage()对消息进行分发 3.消息循环 在CPaintManagerUI类的MessageLoop处理消息循环; 接收到消息后,进入消息回调函数(__WndProc) 4.处理消息 通过CPaintManagerUI:: SendNotify回调控件注册的事件,最后通过Notify获取控件名称并进入相应的函数部分函数实现
管理员窗口Notify的实现
void MainWnd::Notify(TNotifyUI& msg) { CDuiString StrName = msg.pSender->GetName(); if (msg.sType == _T("click")) { if (StrName == _T("BTN_CLOSE")) { Close(); } else if (StrName == _T("BTN_MIN")) { SendMessage(WM_SYSCOMMAND, SC_MINIMIZE,0); } else if (StrName == _T("BTN_SELECT")) { SelectEmployeeInfo(); } else if (StrName == _T("BTN_DELETE")) { DeleteEmployeeInfo(); } else if (StrName == _T("BTN_UPDATE")) { UpDateEmployeeInfo(); } else if (StrName == _T("BTN_INSERT")) { InsertEmployeeInfo(); } else if (StrName == _T("BTN_RECORD")) { MessageBox(NULL, _T("record"), _T("cashier"), IDOK); } else if (StrName == _T("BTN_GOODS_SELECT")) { SelectGoodsInfo(); } else if (StrName == _T("BTN_GOODS_DELETE")) { DeleteGoodsInfo(); } else if (StrName == _T("BTN_GOODS_INSERT")) { InsertGoodsInfo(); } else if (StrName == _T("BTN_GOODS_UPDATE")) { UpDateGoodsInfo(); } } else if (msg.sType == _T("selectchanged")) { CTabLayoutUI* pTab =(CTabLayoutUI*)m_PaintManager.FindControl(_T("tablayout")); if (StrName == _T("OPTION_EMPLOYEE")) { pTab->SelectItem(0); } else if (StrName == _T("OPTION_GOODS")) pTab->SelectItem(1); else pTab->SelectItem(2); }}
登录窗口的创建
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow){ CPaintManagerUI::SetInstance(hInstance); LogInWnd loginWnd; loginWnd.Create(NULL, _T("LOGINWND"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE); loginWnd.CenterWindow(); loginWnd.ShowModal(); return 0;}
效果展示
登录窗口界面
管理员界面(员工操作)
管理员界面(商品操作) 售货员界面项目扩展
1.在本次设计当中还有很多地方需要去完善,应该更加贴近生活,使用户交互更加的人性化,比如在设计当中应该添加会员管理界面,并能实现对会员信息的增删查改,以及对会员等级的自动升级
2.在实现过程当中未考虑到多用户同时操作带来的线程安全问题转载地址:https://blog.csdn.net/a_hang_szz/article/details/100097534 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月04日 00时59分19秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Struts2+Hibernate4开发学生信息管理功能--(四)学生信息管理模块
2019-04-26
Git的使用--如何将本地项目上传到Github
2019-04-26
【Java面试题九】一套面试题
2019-04-26
【Java面试题十】一套完整的java面试题
2019-04-26
JDBC与DAO篇--03 JDBC高级编程、DAO
2019-04-26
WEB_BASIC---08 jQuery事件处理、jQuery动画
2019-04-26
SERVLET JSP篇-02 HTTP协议、Servlet原理
2019-04-26
SERVLET JSP篇-03 Servlet特性
2019-04-26
SERVLET JSP篇-04 JSP特性、MVC设计模式、EL、JSTL
2019-04-26
【实战】javaweb学生信息管理系统
2019-04-26
SERVLET JSP篇-05 session、cookie与过滤器、监听器
2019-04-26
【实战】android的小例子
2019-04-26
Spring篇--01 Spring简介、Spring容器
2019-04-26
Spring篇--02 Spring IOC、注解
2019-04-26
Spring篇--03 Spring MVC之建立第一个spring项目
2019-04-26
架构设计与分层
2019-04-26
【01】Java面试----基础方面的陷阱
2019-04-26