C++物流管理系统(功能结构图+源代码+论文参考文献) 第6页
3.客户区设计
(1)在主窗口添加虚函数PreTranslateMessage,为工具栏添加快捷键。具体代码如下。
BOOL CDMain::PreTranslateMessage(MSG* pMsg)
{
if( pMsg->message==WM_KEYDOWN)
{
CString OPID;
OPID=ado.FieldToOtherField("操作员信息表","用户名",OP,"操作员编号",1);
CString sSQL;
sSQL.Format("SELECT * FROM 权限表 WHERE 操作员编号=%s",OPID);
int nJCXX,nCKGL,nYSGL,nXSGL,nPSGL,nXTGL;
RxRecordset rst;
rst.Open(sSQL,adCmdText);
if(rst.GetRecordCount()<1)
{
nJCXX=1;
nCKGL=1;
nYSGL=1;
nXSGL=1;
nPSGL=1;
nXTGL=1;
}
else
{
nJCXX=atoi(rst.GetFieldValue("基础信息"));
nCKGL=atoi(rst.GetFieldValue("仓库管理"));
nYSGL=atoi(rst.GetFieldValue("运输管理"));
nXSGL=atoi(rst.GetFieldValue("销售管理"));
nPSGL=atoi(rst.GetFieldValue("配送管理"));
nXTGL=atoi(rst.GetFieldValue("系统管理"));
}
if(pMsg->wParam==VK_F2 && nJCXX!=0)
PostMessage(WM_COMMAND,IDM_JCXX_HPXXWH);
if(pMsg->wParam==VK_F3 && nXSGL!=0)
PostMessage(WM_COMMAND,IDM_XSGL_XSKP);
if(pMsg->wParam==VK_F4 && nCKGL!=0)
PostMessage(WM_COMMAND,IDM_CCGL_CKDJ);
if(pMsg->wParam==VK_F5 && nCKGL!=0)
PostMessage(WM_COMMAND,IDM_CCGL_RKDJ);
if(pMsg->wParam==VK_F6 && nCKGL!=0)
PostMessage(WM_COMMAND,IDM_CCGL_CCZBB);
if(pMsg->wParam==VK_F7 && nPSGL!=0)
PostMessage(WM_COMMAND,IDM_PSGL_PSSQ);
if(pMsg->wParam==VK_F8 && nPSGL!=0)
PostMessage(WM_COMMAND,IDM_PSGL_ZTFK);
if(pMsg->wParam==VK_F9)
PostMessage(WM_COMMAND,IDM_YSGL_HCQRGL);
if(pMsg->wParam==VK_F11 && nXTGL!=0)
PostMessage(WM_COMMAND,IDM_SJGL_SJBF);
if(pMsg->wParam==VK_F12)
PostMessage(WM_COMMAND,IDM_ZYPX_SPJZ);
}
return CDialog::PreTranslateMessage(pMsg);
}
(2)添加状态栏,代码如下。
m_StatusBar.Create(WS_CHILD|WS_VISIBLE,CRect(0,0,0,0),this,ID_STATUSBAR);
int xpos=::GetSystemMetrics(SM_CXSCREEN);
int width[4];
width[1]=xpos*0.2;
width[2]=xpos*0.74;
width[3]=xpos*0.86;
width[4]=xpos;
CString sText;
sText="操作员:【"+OP+"】";
m_StatusBar.SetParts(4,&width[1]);
RxRecordset rst;
4.2 基础信息基类
1.查询模块
实现目标
查询子模块可以完成的功能如下:
支持按照多字段、多条件查询。
支持模糊查询。
当用户双击表格中某记录时,调用编辑模块进行编辑。
支持打印功能。
查询子模块的运行界面如图6所示。
图6 查询子模块的运行界面
设计步骤
向项目中添加一个新Dialog资源,资源ID为IDD_BASEQUERY。从Controls面板上向Dialog资源中添加2个Static、1个Edit、2个ComboBox、1个ListControl控件。
代码分析
(1) 根据模块所要完成的功能,抽象出CDBaseQuery的原型如下:
class CDBaseQuery : public Cdialog
{
public:
CDBaseQuery(Cstring sCaption, //窗口标题
Cstring sSQL, //SQL语句字符串
Cstring sIdentify, //由程序自动生成的惟一标识字段名
int nNumberStyle, //惟一标识字段的类型
CWnd* pParent = NULL
); // 构造函数
protected:
//{{AFX_MSG(CDBaseQuery)
virtual void Init(); //为子类提供的初始化虚函数
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
int m_NumberStyle; ///惟一标识字段的类型
Cstring m_Identify; //由程序自动生成的惟一标识字段名
RxRecordset rst; //记录集对象
int m_CurrentRow; //当前行
Cstring m_Caption; //对话框标题
Cstring m_DateBaseName; //数据库名称
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>