其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
Brew 1.1 个人所得税计算小应用【附源码】

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

所有移动开发架构中高通Brew可能是最令人感到痛苦的一种通用平台,复杂的API和不禁详尽的文档,使开发者对Brew望而却步。
北京讯岚通过2年的研发实践完成了Brew标准类库BFC,协助BREW开发者爱好者一同步入BREW的神奇移动世界(购买BREW类库项目请来电垂询北京讯岚 TEL:51833115).

本文列举使用BREW标准类库所开发的示例应用个人所得税计算:
#if !defined(AFX_WisdomBFCAPP_H__10531DDA_D9FB_4912_976E_00879ADDE742__INCLUDED_)
#define AFX_WisdomBFCAPP_H__10531DDA_D9FB_4912_976E_00879ADDE742__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "BFC\BFC.h"
#include "BFC\BASE\BFCApp.h"
#include "WisdomBFC_Res.h"

class CWisdomBFCApp : public CBFCApp 
{
public:
 CWisdomBFCApp(AEEApplet *pAEEApplet);
 virtual ~CWisdomBFCApp();
 virtual boolean OnStart();
 virtual boolean OnStop();
 virtual boolean OnSMSMessage(char*pMessage,IShell*pShell) ;
private:
 CMedia* mm;
};

#endif
// WisdomBFCApp.cpp: implementation of the CWisdomBFCApp class.
//
//////////////////////////////////////////////////////////////////////

#include "WisdomBFCApp.h"
#include "CalculateWindow.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CWisdomBFCApp::CWisdomBFCApp(AEEApplet *pAEEApplet) : CBFCApp(pAEEApplet){}

CWisdomBFCApp::~CWisdomBFCApp(){}


boolean CWisdomBFCApp::OnStart()
{
 mm=new CMedia(this->m_pAEEApplet);
 mm->playSoundFile("sky.mid");
 
 //1-欢迎屏幕
 SetAppInfo(
         (AECHAR *)L"个人所得税计算",
         (AECHAR *)L"北京 ☆ QuickLine\nVersion 1.0\nCopyRight 2005",
      (AECHAR *)L"src\\logo.png"
      );
 REFRESHAPPSTRING();

 //2-创建所需窗体
 CCalculateWindow *pCalculateWindow = new CCalculateWindow(0);
 //3-将所创建窗体加入回收列表,便于程序结束后清理
 AddTemplateWindow(pCalculateWindow);

 //4-设置启始窗体
 SetStartupWindow(pCalculateWindow, FALSE);

 
 
 return TRUE;
}


boolean CWisdomBFCApp::OnStop(){
 mm->stopSoundPlay();
 delete mm;
 return TRUE;
}

boolean CWisdomBFCApp::OnSMSMessage(char*pMessage,IShell*pShell){
 return TRUE;


#include "BFC\BFC.h"
#include "tips.h"
#pragma once


class CCalculateWindow :
 public CBrewWindow
{
public:
 CCalculateWindow(uint16 wID);
 virtual ~CCalculateWindow(void);
 void OnCreate();
 boolean OnCommand(uint16 wParam, uint32 dwParam);
 boolean OnChildCommand(uint16 wID, uint16 wParam, uint32 dwParam);
    boolean HandleEvent(IApplet *pi, AEEEvent eCode, uint16 wParam, uint32 dwParam);
private:
 void SetWindowLogo();
//:TODO
public:
     //其他特有成员变量
private:
 //其他特有成员变量
};
#include ".\calculatewindow.h"
#include "WisdomBFCApp.h"
#include <stdlib.h>

//构造
CCalculateWindow::CCalculateWindow(uint16 wID)
{
 AEERect rc;
 SETAEERECT(&rc, 0, 0, 0, 0);
 CFlatLayout *pLayout = new CFlatLayout(1, 3, 1);


 pLayout->AddControl(AddComponent(new CStatic(0)));//城市标题
 pLayout->AddControl(AddComponent(new CListCtl(1), TRUE));//城市列表框
 pLayout->AddControl(AddComponent(new CStatic(2)));//收入标题
 pLayout->AddControl(AddComponent(new CTextCtl(3, rc, TP_FRAME)));//收入文本框
 this->RegisterLayoutManager(pLayout);

 this->SetTitleBar(TRUE, (AECHAR *)L"个人所得税计算");
 this->SetSysCommandBar(TRUE);
}

//析构
CCalculateWindow::~CCalculateWindow(void){}

//初始化
void CCalculateWindow::OnCreate()
{
 GetComponent(0)->SetText(/*GETAPPSTRING(IDS_LOGIN_PASSWORD1)*/(AECHAR *)L"您所在的城市");

 CListCtl *pCityList = (CListCtl *)GetComponent(1);
 pCityList->Reset();
 pCityList->AddItem(0, (AECHAR *)L"北京");
 pCityList->AddItem(1, (AECHAR *)L"上海");
 pCityList->AddItem(2, (AECHAR *)L"深圳");
 pCityList->AddItem(3, (AECHAR *)L"其它地区");

 GetComponent(2)->SetText((AECHAR *)L"输入您欲计算的收入");
 CTextCtl* pTextCtrl=(CTextCtl*)GetComponent(3);
 pTextCtrl->SetInputMode(AEE_TM_NUMBERS);
 pTextCtrl->setActive();  

 this->AddSysCommand(0, (AECHAR *)L"计算");
 this->AddSysCommand(1, (AECHAR *)L"个人所得税常识");
 this->AddSysCommand(2, (AECHAR *)L"退出");
 this->SetWindowLogo();

 pCityList=NULL;
 pTextCtrl=NULL;


}

//获得命令
boolean CCalculateWindow::OnCommand(uint16 wParam, uint32 dwParam)
{
 AEEApplet *pAEEApplet = (AEEApplet *)GETAPPINSTANCE();
 CMessageBox *pBox;
 AECHAR wstrResult[255];
 float result=0;//结果
 float v1,v2,v3=0;
 CTextCtl* pTextCtrl=(CTextCtl*)GetComponent(3);
 IMenuCtl *pList = (IMenuCtl *)(((CListCtl *)GetComponent(1))->m_pIControl);

 

 switch (wParam)
 {
 case 0:
  v1=800;
  switch(IMENUCTL_GetSel(pList))
  {
  case 0:
   v1=1000;
   break;
  case 1:
   v1=1000;
   break;
  case 2:
   v1=1600;
   break;
  }

     v2 = WSTRTOFLOAT(pTextCtrl->GetText());
  v3 = v2 - v1;
  if (v3 <= 0) {
   v3 = 0;
  }
  else if (v3 <= 500) {
   result=(v3 * 0.05f);
  }
  else if(v3 <= 2000) {
   result=(v3 * 0.1f - 25);
  }
  else if(v3 <= 5000) {
   result=(v3 * 0.15f - 125);
  }
  else if(v3 <= 20000) {
   result=(v3 * 0.2f - 375);
  }
  else if (v3 <= 40000) {
   result=(v3 * 0.25f - 1375);
  }
  else if (v3 <= 60000) {
   result=(v3 * 0.3f - 3375);
  }
  else if(v3 <= 80000) {
   result=(v3 * 0.35f - 6375);
  }
  else if (v3 <= 100000) {
   result=(v3 * 0.4f - 10375);
  }
  else{
   result=(v3 * 0.45f - 15375);
  }

        result = FADD(result, WSTRTOFLOAT((AECHAR*)L"0.005"));//2位小数舍入+0.005

  pBox= new CMessageBox(0, NULL);

  if(FLOATTOWSTR(result, wstrResult,4*sizeof(wstrResult)))
  {
        

            AECHAR *pbuf = NULL;
   AECHAR str1[500]=L"您应缴纳的个人所得税额为:\0";
   AECHAR *str2 = NULL;
           
            pbuf = WSTRCHR(wstrResult, (AECHAR)L'.');//取得小数点后第三位字符位置,将其替换为结束符。
   if(pbuf)
            {
               pbuf += 3;
               *pbuf = (AECHAR)L'\0';
            }
   
   
            str2=wstrResult;

      WSTRCAT(str1,str2);
   pBox->Show(this, (AECHAR *)L"计算结果",str1, MB_OK);
  }
  else
  {
   pBox->Show(this, (AECHAR *)L"计算错误", (AECHAR*)L"计算中出现错误!", MB_OK);
  }
  pBox=NULL;


  return TRUE;

 case 1:
  this->NavigateToWindow(new CTips(0));
  return TRUE;
 case 2:
  ISHELL_CloseApplet(pAEEApplet->m_pIShell, FALSE);
  return TRUE;
 default:
  break;
 }
 return CBrewWindow::OnCommand(wParam, dwParam);
}

//子命令
boolean CCalculateWindow::OnChildCommand(uint16 wID, uint16 wParam, uint32 dwParam)
{
 return TRUE;
}

 

//设置徽标
void CCalculateWindow::SetWindowLogo()
{
 BFCApp *app = (BFCApp *)GETAPPINSTANCE();
 app->pApp->SetWindowLogo(WISDOMBFC_RES_FILE,RES_IMAGE2_WINDOWSLOGO);
}

//其他事件
boolean CCalculateWindow::HandleEvent(IApplet *pi, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
 boolean bResult;
 /*int16 wFocusID = m_wFocusID;*/

 bResult = CBrewWindow::HandleEvent(pi, eCode, wParam, dwParam);

 /*if (wFocusID == 1 && eCode == EVT_KEY && (wParam == AVK_LEFT || wParam == AVK_RIGHT))
 {
   //TODO:
 }*/

 return bResult;
}
#include "BFC\BFC.h"
#pragma once

class CTips :
 public CBrewWindow
{
public:
 CTips(uint16 wID);
 virtual ~CTips(void);
    void OnCreate();
 boolean OnCommand(uint16 wParam, uint32 dwParam);
 boolean OnChildCommand(uint16 wID, uint16 wParam, uint32 dwParam);
    boolean HandleEvent(IApplet *pi, AEEEvent eCode, uint16 wParam, uint32 dwParam);
private:
 void SetWindowLogo();
//:TODO
public:
     //其他特有成员变量
private:
 uint16 GetStaticScrollCount();
 int16 m_wScrollCount;
};
#include ".\tips.h"
#include "WisdomBFCApp.h"
#include "CalculateWindow.h"
//构造

CTips::CTips(uint16 wID) : CBrewWindow(wID)
{
 m_wScrollCount = -1;

 AEERect rc;
    CGridLayout *pLayout = new CGridLayout(1, 1, 0, 0, 0);
 pLayout->AddControl(AddComponent(new CStatic(0)), 0, 0, 1, 1);
 RegisterLayoutManager(pLayout);

 SetTitleBar(TRUE, (AECHAR *)L"个人所得税常识");
 SetSysCommandBar(TRUE);
}

CTips::~CTips(void){};


uint16 CTips::GetStaticScrollCount()
{
 IStatic *pIStatic;
 pIStatic = (IStatic *)(((CStatic *)GetComponent(0))->m_pIControl);
   
 if (!pIStatic)
  return 0;

 int pos;
 int start, end, mid;
 int height;
 height = GetComponent(0)->m_rcLocation.dy;

 start = 0;
 mid = 100;
 end = 200;
 while (end - start > 1)
 {
  pos = ISTATIC_GoToLine(pIStatic, mid);
  pos = ISTATIC_GoToLine(pIStatic, mid);
  if (pos == mid)
  {
   start = mid;
   mid = start + (end - start) / 2;
  }
  else
  {
   end = mid;
   mid = start + (end - start) / 2;
  }
 }

 ISTATIC_GoToLine(pIStatic, 0);

 AEEApplet *pAEEApplet;
 pAEEApplet = (AEEApplet *)GETAPPINSTANCE();
 if (start + 1 > height / IDISPLAY_GetFontMetrics(pAEEApplet->m_pIDisplay, AEE_FONT_NORMAL, NULL, NULL))
  return start + 1 - height / IDISPLAY_GetFontMetrics(pAEEApplet->m_pIDisplay, AEE_FONT_NORMAL, NULL, NULL);
 else
     return 0;
}


boolean CTips::HandleEvent(IApplet *pi, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
 IStatic *pIStatic;
 pIStatic = (IStatic *)(((CStatic *)GetComponent(0))->m_pIControl);
   
 if (!pIStatic)
  return FALSE;

 if (m_wScrollCount < 0)
  m_wScrollCount = GetStaticScrollCount();

 AEERect rc;
 int pos;

 switch (eCode)
 {
  case EVT_KEY:
   if (wParam == AVK_SELECT || wParam == AVK_CLR)
   {
    IMENUCTL_HandleEvent((IMenuCtl *)(((CMenuCtl *)GetComponent(CTLID_SYS_COMMAND_BAR))->m_pIControl), eCode, wParam, dwParam);
       return FALSE;
   }

   switch (wParam)
   {
    case AVK_UP:
     pos = ISTATIC_GoToLine(pIStatic, 0);
     ISTATIC_GoToLine(pIStatic, pos - 1);
     break;
          
    case AVK_DOWN:
     pos = ISTATIC_GoToLine(pIStatic, 101);
     if (pos < m_wScrollCount)
      ISTATIC_GoToLine(pIStatic, pos + 1);
     else
      ISTATIC_GoToLine(pIStatic, pos);
     break;
     
    default:
     break;
   }
   
   return TRUE;

  case EVT_COMMAND:
   return FALSE;

  default:
   return TRUE;
 }

 return TRUE;
}


//初始化
void CTips::OnCreate()
{
 this->AddSysCommand(0, (AECHAR *)L"返回");
 
 AECHAR szAboutText[500];
 AECHAR szCrLf[10];
 STRTOWSTR("\n", szCrLf, sizeof(AECHAR) * 10);

 MEMSET(szAboutText, 0, sizeof(AECHAR) * 500);
 WSTRLCAT(szAboutText, (AECHAR*)L"工资、薪金所得的个人所得税按超额累进税率来计算:", 500);
 WSTRLCAT(szAboutText, szCrLf, 500);
    WSTRLCAT(szAboutText, (AECHAR*)L"1.计算出你的 月工资、薪金所得。", 500);
 WSTRLCAT(szAboutText, szCrLf, 500);
 WSTRLCAT(szAboutText, (AECHAR*)L"2.月应纳税所得额 = 月工资、薪金所得-800元(注:北京、上海为减去1000元,深圳为减去1600元.)", 500);
 WSTRLCAT(szAboutText, szCrLf, 500);
 WSTRLCAT(szAboutText, (AECHAR*)L"3.月应纳税额 = 月应纳税所得额×适用税率-速算扣除数", 500);
 GetComponent(0)->SetText(szAboutText);
    SetWindowLogo();


 
}

//获得命令
boolean CTips::OnCommand(uint16 wParam, uint32 dwParam)
{
 AEEApplet *pAEEApplet = (AEEApplet *)GETAPPINSTANCE();
 switch (wParam)
 {
  case 0:
   this->NavigateToWindow(new CCalculateWindow(0));
   return TRUE;

  default:
   break;
 }
   return CBrewWindow::OnCommand(wParam, dwParam);
}

 


//设置徽标
void CTips::SetWindowLogo()
{
 BFCApp *app = (BFCApp *)GETAPPINSTANCE();
 app->pApp->SetWindowLogo(WISDOMBFC_RES_FILE,RES_IMAGE2_WINDOWSLOGO);
}

boolean CTips::OnChildCommand(uint16 wID, uint16 wParam, uint32 dwParam){return TRUE;}




相关文章

相关软件