在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 6808|回复: 5

[原创] MFC PPC Jz

[复制链接]
发表于 2011-7-11 16:10:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
Jz.cpp的实现
// Jz.cpp : 实现文件

void CJz::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
stMenuInfo *pstRootNodeTmp = 0ul;
unsigned int i = 0;
float MenuAllCount = 0;
//删除列

while ( m_List.DeleteColumn (0))
{
  m_List.DeleteItem(0);
  m_List.DeleteAllItems();
}
//头标签
CString strName("菜名");
CString strNumber("数量");
CString strAllCount("总价");
CString strCount("单价");
CString Str;

LONG lStyle;
lStyle = GetWindowLong(m_List.m_hWnd, GWL_STYLE);//获取当前窗口style
lStyle &= ~LVS_TYPEMASK; //清除显示方式位
lStyle |= LVS_REPORT; //设置style
SetWindowLong(m_List.m_hWnd, GWL_STYLE, lStyle);//设置style
DWORD dwStyle = m_List.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl)
dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)
//dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件
m_List.SetExtendedStyle(dwStyle); //设置扩展风格
//插入列
m_List.InsertColumn( 0, strName, LVCFMT_LEFT, 60);
m_List.InsertColumn( 1, strNumber, LVCFMT_LEFT, 41);
m_List.InsertColumn( 2, strCount, LVCFMT_LEFT, 41);
m_List.InsertColumn( 3, strAllCount, LVCFMT_LEFT, 41);

//遍历链表输出本桌信息
pstRootNodeTmp = (stMenuInfo *)g_pstGInfoData.vpRootNode;
while(pstRootNodeTmp->Node != 0ul)
{
  pstRootNodeTmp = pstRootNodeTmp->Node;
  //判断桌号
  if (pstRootNodeTmp->uTable == 2)
  {
   g_pstGInfoData.stSaveMenuData.fAllCount = pstRootNodeTmp->fAllCount;
   g_pstGInfoData.stSaveMenuData.fNumber = pstRootNodeTmp->fNumber;
   g_pstGInfoData.stSaveMenuData.uTable = pstRootNodeTmp->uTable;
   CString strNameData(pstRootNodeTmp->MenuName);
   CString strNumberData;
   CString strCountData;
   CString strAllCountData;

   strNumberData.Format(_T("%0.0f个"), pstRootNodeTmp->fNumber);
   strCountData.Format(_T("%0.0f元"), pstRootNodeTmp->fCount);
   strAllCountData.Format(_T("%0.0f元"), pstRootNodeTmp->fAllCount);
   m_List.InsertItem(i, strNameData);
   m_List.SetItemText(i, 1, strNumberData);
   m_List.SetItemText(i, 2, strCountData);
   m_List.SetItemText(i, 3, strAllCountData);
   MenuAllCount = (MenuAllCount + pstRootNodeTmp->fAllCount);
   i++;
  }
   
}
//刷新数据
m_List.SetRedraw(TRUE);
m_List.Invalidate();
m_List.UpdateWindow();
Str.Format(_T("%0.0f元"), MenuAllCount);
GetDlgItem(IDC_BUTTON9)->SetWindowText(Str);
if (g_pstGInfoData.stSaveMenuData.uTable != 0)
{
  CButton *pBtn= (CButton *)GetDlgItem(IDC_BUTTON10); //锁定这个按钮
  if(pBtn!=NULL)
  {   
   pBtn->EnableWindow(TRUE); // True or False
  }
}
}

void CJz::OnBnClickedButton10()
{
// TODO: 在此添加控件通知处理程序代码
CButton *pBtn= (CButton *)GetDlgItem(IDC_BUTTON10); //锁定这个按钮
if(pBtn!=NULL)
{   
  pBtn->EnableWindow(FALSE); // True or False
}
if (g_pstGInfoData.stSaveMenuData.uTable != 0)
{
  CMenuDlg.DelMenuInfoFun((stMenuInfo *)g_pstGInfoData.vpRootNode, g_pstGInfoData.stSaveMenuData.uTable);
  //桌号清空
  g_pstGInfoData.stSaveMenuData.uTable = 0;
}
}
 楼主| 发表于 2011-7-11 17:39:35 | 显示全部楼层
int CMenuAppDlg::OutMenuDataToFileFun(unsigned int uTable, char *acMenuName, unsigned int uNumber, float fCount, float fAllCount, float fAll)
{

        FILE *fpFileRet = 0ul;
        char acFileName[64];
       
        CTime   m_Time;

        ///yy = m_Time.GetCurrentTime().GetYear();                 //得到当前的年份。
        //mm = m_Time.GetCurrentTime().GetMonth();               //得到当前的月份。
        //dd = tm.GetCurrentTime().GetDay();                   //得到当前的日期。

        memset(acFileName, 0, sizeof(acFileName));
        sprintf(acFileName, "MenuData_%d年%d月.txt", m_Time.GetCurrentTime().GetYear(), m_Time.GetCurrentTime().GetMonth());

        fpFileRet = fopen(acFileName, "a");
        if (fpFileRet <= 0ul)
        {
                CString Str("打开文件错误!");
                CDialog::MessageBox(Str);
                return ~(0);
        }
   
        fprintf(fpFileRet, "%d号桌 | %s | %d个 | %0.1f元/个 | %0.1f元 \n", uTable, acMenuName, uNumber, fCount, fAllCount);
        if ((fAll >= 0) || (fAll <= 0.3))
        {
                fclose(fpFileRet);
                return 0;
        }

        fprintf(fpFileRet, "                                总价:%0.1元 \n", uTable, acMenuName, uNumber, fCount, fAllCount);
        fclose(fpFileRet);
        return 0;
}
 楼主| 发表于 2011-7-12 11:14:28 | 显示全部楼层
int CMenuAppDlg:elMenuInfoFun(stMenuInfo *pstRootNode, unsigned int uTable)
{
        stMenuInfo *del_node;
        stMenuInfo *tmp_prev = pstRootNode;
        stMenuInfo *tmp;

        if ((0ul == pstRootNode) || (0 == uTable))
        {
                CString Str("链表参数错误!");
                CDialog::MessageBox(Str);
                return ~(0);
        }

        for(del_node = pstRootNode->Node; del_node != NULL; )
        {
               
                if(del_node->uTable == uTable)
                {
                        CMenuAppDlg::OutMenuDataToFileFun(uTable, del_node->MenuName, (unsigned int )del_node->fNumber, del_node->fCount, del_node->fAllCount, 0);

                        tmp_prev->Node = del_node->Node;       
               
                        tmp = del_node;
                        del_node = del_node->Node;
                        free(tmp);
                        tmp = NULL;
                }
                else
                {
                        tmp_prev = del_node;
                        del_node = del_node->Node;       
                }
        }

        g_pstGInfoData.stSaveMenuData.fAllCount = 0;
        g_pstGInfoData.stSaveMenuData.fNumber = 0;
        g_pstGInfoData.stSaveMenuData.MenuAllCount = 0;
        g_pstGInfoData.stSaveMenuData.uTable = 0;
        memset(g_pstGInfoData.stSaveMenuData.MenuName, 0, sizeof(g_pstGInfoData.stSaveMenuData.MenuName));

        return 0;
}
 楼主| 发表于 2011-7-12 11:15:33 | 显示全部楼层
int CMenuAppDlg::AddMenuInfoFun(stMenuInfo *pstRootNode, unsigned int uTable, char *MenuName, float fNumber, float fCount)
{
        stMenuInfo *pstRootNodeTmp = 0ul;
        stMenuInfo *pstNodeInfo = 0ul;
        stMenuInfo *pstNewNode = 0ul;
        if ((0ul == pstRootNode) || (0ul == MenuName) || (0 == uTable))
        {
                CString Str("链表参数错误!");
                CDialog::MessageBox(Str);
                return ~(0);
        }

        pstRootNodeTmp = pstRootNode;
        while(pstRootNodeTmp->Node != 0ul)
        {
                pstRootNodeTmp = pstRootNodeTmp->Node;
                if (pstRootNodeTmp->uTable == uTable)
                {
                        if (!strcmp(pstRootNodeTmp->MenuName, MenuName))
                        {
                                pstRootNodeTmp->fNumber = (pstRootNodeTmp->fNumber + fNumber);
                                pstRootNodeTmp->fAllCount = (pstRootNodeTmp->fNumber * fCount);
                                return 0;
                        }       
                }
        }

        if (pstRootNodeTmp->Node == 0ul)
        {
                pstNewNode = (stMenuInfo *)malloc(sizeof(stMenuInfo));
                pstNewNode->Node = 0ul;
                pstNewNode->uTable = uTable;
                strcpy(pstNewNode->MenuName, MenuName);
                pstNewNode->fNumber = fNumber;
                pstNewNode->fCount = fCount;
                pstNewNode->fAllCount = (fCount * fNumber);
                pstNewNode->Flag = 1;
                pstRootNodeTmp->Node = pstNewNode;
        }
        return 0;
}
 楼主| 发表于 2011-7-12 12:41:18 | 显示全部楼层
MenuAppDlg.cpp 文件修改

//向菜单链表中添加一个菜名
int CMenuAppDlg::AddMenuInfoFun(stMenuInfo *pstRootNode, unsigned int uTable, char *MenuName, float fNumber, float fCount)
{
        stMenuInfo *pstRootNodeTmp = 0ul;
        stMenuInfo *pstNodeInfo = 0ul;
        stMenuInfo *pstNewNode = 0ul;
        if ((0ul == pstRootNode) || (0ul == MenuName) || (0 == uTable))
        {
                CString Str("链表参数错误!");
                CDialog::MessageBox(Str);
                return ~(0);
        }

        pstRootNodeTmp = pstRootNode;
        while(pstRootNodeTmp->Node != 0ul)
        {
                pstRootNodeTmp = pstRootNodeTmp->Node;
                if (pstRootNodeTmp->uTable == uTable)
                {
                        if (!strcmp(pstRootNodeTmp->MenuName, MenuName))//判断条件修改
                        {
                                pstRootNodeTmp->fNumber = (pstRootNodeTmp->fNumber + fNumber);
                                pstRootNodeTmp->fAllCount = (pstRootNodeTmp->fNumber * fCount);
                                return 0;
                        }       
                }
        }


//根据桌号删除本桌信息
int CMenuAppDlg:elMenuInfoFun(stMenuInfo *pstRootNode, unsigned int uTable)
{
        stMenuInfo *del_node;
        stMenuInfo *tmp_prev = pstRootNode;
        stMenuInfo *tmp;

        if ((0ul == pstRootNode) || (0 == uTable))
        {
                CString Str("链表参数错误!");
                CDialog::MessageBox(Str);
                return ~(0);
        }

        for(del_node = pstRootNode->Node; del_node != NULL; )
        {
               
                if(del_node->uTable == uTable)
                {
                        CMenuAppDlg::OutMenuDataToFileFun(uTable, del_node->MenuName, (unsigned int )del_node->fNumber, del_node->fCount, del_node->fAllCount, 0);

                        tmp_prev->Node = del_node->Node;       
               
                        tmp = del_node;
                        del_node = del_node->Node;
                        free(tmp);
                        tmp = NULL;
                }
                else
                {
                        tmp_prev = del_node;
                        del_node = del_node->Node;       
                }
        }

        CMenuAppDlg::OutMenuDataToFileFun(0, "", 0, 0, 0, g_pstGInfoData.stSaveMenuData.MenuAllCount);

        g_pstGInfoData.stSaveMenuData.fAllCount = 0;
        g_pstGInfoData.stSaveMenuData.fNumber = 0;
        //g_pstGInfoData.stSaveMenuData.MenuAllCount = 0;
        g_pstGInfoData.stSaveMenuData.uTable = 0;
        memset(g_pstGInfoData.stSaveMenuData.MenuName, 0, sizeof(g_pstGInfoData.stSaveMenuData.MenuName));

        return 0;
}
 楼主| 发表于 2011-7-12 12:42:39 | 显示全部楼层
int CMenuAppDlg::OutMenuDataToFileFun(unsigned int uTable, char *acMenuName, unsigned int uNumber, float fCount, float fAllCount, float fAll)
{

        FILE *fpFileRet = 0ul;
        char acFileName[64];
        
        CTime   m_Time;

        ///yy = m_Time.GetCurrentTime().GetYear();                 //得到当前的年份。
        //mm = m_Time.GetCurrentTime().GetMonth();               //得到当前的月份。
        //dd = m_Time.GetCurrentTime().GetDay();                   //得到当前的日期。

        memset(acFileName, 0, sizeof(acFileName));
        sprintf(acFileName, "MenuData_%d年%d月.txt", m_Time.GetCurrentTime().GetYear(), m_Time.GetCurrentTime().GetMonth());

        fpFileRet = fopen(acFileName, "a");
        if (fpFileRet <= 0ul)
        {
                CString Str("打开文件错误!");
                CDialog::MessageBox(Str);
                return ~(0);
        }
   
        if ((fAll >= 0) && (fAll <= 0.3))
        {
                                fprintf(fpFileRet, "%d号桌 | %s | %d个 | %0.1f元/个 | %0.1f元 \n", uTable, acMenuName, uNumber, fCount, fAll);
                fclose(fpFileRet);
                return 0;
        }
                else
                {
                         //fprintf(fpFileRet, "%d号桌 | %s | %d个 | %0.1f元/个 | %0.1f元 \n", uTable, acMenuName, uNumber, fCount, fAllCount);
                         fprintf(fpFileRet, "=================== %d年%d月%d日的本号桌 ======= 总价:%0.1f元 \n", m_Time.GetCurrentTime().GetYear(), m_Time.GetCurrentTime().GetMonth(), m_Time.GetCurrentTime().GetDay(), fAll);
                         fputs("\n", fpFileRet);
                         fputs("\n", fpFileRet);

                         fclose(fpFileRet);
                         return 0;
                }

        fclose(fpFileRet);
        return 0;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-6 07:50 , Processed in 0.020966 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表