⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accobook_ceview.cpp

📁 本源代码是基于嵌入式平台WinCE上的家庭理财程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// Accobook_CEView.cpp : implementation of the CAccobook_CEView class
//

#include "stdafx.h"
#include "Accobook_CE.h"
#include "Accobook_CEDoc.h"
#include "Accobook_CEView.h"
#include "FloatEdit2.h"
#include "SearchDlg.h"

#include "DBFEngine.h"
#include "MyEdit.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

CFloatEdit2* g_pEditShuE;
CFloatEdit2* g_pEditRiQi;
CMyEdit* g_pEditBeiZhu;

BOOL g_bShouRu ;
BOOL g_bZhiChu ;
CString g_sBeiZhu;

CWordArray g_wStationsArray;
int m_nIsListAll=1;
int m_nStepNum=0;
int g_nTotalRecordNum=0;
int g_nTotalFieldNum;
PBYTE g_pFieldBuf=new BYTE[255+1];
CDbFile g_dbf;
CListCtrlEx	m_listctrl;
int g_nHitIndex=-1;
/////////////////////////////////////////////////////////////////////////////
// CAccobook_CEView

BOOL CMyTime::YearMonthDayIn(CMyTime t1,CMyTime t2,CMyTime t)
{
double y1=t1.m_dYear;
double m1=t1.m_dMonth;
double d1=t1.m_dDay;
double y2=t2.m_dYear;
double m2=t2.m_dMonth;
double d2=t2.m_dDay;
double y=m_dYear;
double m=m_dMonth;
double d=m_dDay;
if(y>y1&&y<y2)
	return 1;
else//y<=y1 || y>=y2
	{	
	if(y==y1&&y<=y2)
		{
		if(m>m1)
			return 1;
		else
			{
			if(m==m1&&d>=d1)
				return 1;
			else
				return 0;
			}
		}
	else
		{
		if(y==y2&&y>=y1)
			{
			if(m<m2)
				return 1;
			else
				{
				if(m==m2&&d<=d2)
					return 1;
				else
					return 0;
				}
			}
		}
	}
return 0;
}

CString CMyTime::GetStrBeforePoint(CString& s)
{
int pos=s.Find(_T("."));
CString sRtn="";
if(pos>-1)
	{
	sRtn=s.Left(pos);
	s=s.Right(s.GetLength()-pos-1);
	}
else
	{
	pos=s.Find(_T("。"));
	if(pos>-1)
		{
		sRtn=s.Left(pos);
		s=s.Right(s.GetLength()-pos-1);
		}
	else
		{
		sRtn=s;
		s="";
		}
	}
return sRtn;
}

CMyTime::CMyTime()
{
m_dYear=0;
m_dMonth=0;
m_dDay=0;
}

CMyTime::CMyTime(double& y,double& m,double& d)
{
m_dYear=y;
m_dMonth=m;
m_dDay=d;
}

CMyTime::CMyTime(CString& s)
{
TCHAR  *stopstring;
int pos=s.Find(_T("."));
CString tempYear=GetStrBeforePoint(s);
CString tempMonth=GetStrBeforePoint(s);
CString tempDay=GetStrBeforePoint(s);
m_dYear=_tcstod(tempYear,&stopstring);
m_dMonth=_tcstod(tempMonth,&stopstring);
m_dDay=_tcstod(tempDay,&stopstring);
}
	
CMyTime::~CMyTime()
{
}

IMPLEMENT_DYNCREATE(CAccobook_CEView, CFormView)

BEGIN_MESSAGE_MAP(CAccobook_CEView, CFormView)
	//{{AFX_MSG_MAP(CAccobook_CEView)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
	ON_BN_CLICKED(IDC_CHECK1, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK2, OnCheck2)
	ON_BN_CLICKED(IDC_BUTTON_PREV, OnButtonPrev)
	ON_BN_CLICKED(IDC_BUTTON_NEXT, OnButtonNext)
	ON_COMMAND(ID_FILE_DELETEALL, OnFileDeleteall)
	ON_BN_CLICKED(IDC_BUTTON_LISTALL, OnButtonListall)
	ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)
	ON_BN_CLICKED(IDC_BUTTON_MODIFY, OnButtonModify)
	ON_WM_SIZE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAccobook_CEView construction/destruction

CAccobook_CEView::CAccobook_CEView()
	: CFormView(CAccobook_CEView::IDD)
{
	//{{AFX_DATA_INIT(CAccobook_CEView)
	m_bShouRu = TRUE;
	m_bZhiChu = FALSE;
	m_s2 = _T("");
	m_s1 = _T("");
	//}}AFX_DATA_INIT
	// TODO: add construction code here
p_SearchDlg=new CSearchDlg(this);
}

CAccobook_CEView::~CAccobook_CEView()
{
	delete p_SearchDlg;
}

void CAccobook_CEView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAccobook_CEView)
	DDX_Control(pDX, IDC_EDIT2, m_BeiZhuCtrl);
	DDX_Control(pDX, IDC_EDIT4, m_RiQiCtrl);
	DDX_Control(pDX, IDC_EDIT1, m_ShuECtrl);
	DDX_Check(pDX, IDC_CHECK1, m_bShouRu);
	DDX_Check(pDX, IDC_CHECK2, m_bZhiChu);
	DDX_Text(pDX, IDC_STATIC_TOTAL, m_s2);
	DDX_Text(pDX, IDC_STATIC_CURRENT, m_s1);
	DDX_Control(pDX, IDC_LIST1, m_listctrl);
	//}}AFX_DATA_MAP
}

BOOL CAccobook_CEView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CFormView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CAccobook_CEView diagnostics

#ifdef _DEBUG
void CAccobook_CEView::AssertValid() const
{
	CFormView::AssertValid();
}

void CAccobook_CEView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CAccobook_CEDoc* CAccobook_CEView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAccobook_CEDoc)));
	return (CAccobook_CEDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CAccobook_CEView message handlers
void CAccobook_CEView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
GetDlgItem(IDC_BUTTON_PREV)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_LISTALL)->SetWindowText(_T("全部"));//显示全部	
GetDlgItem(IDC_BUTTON_PREV)->SetWindowText(_T("上10条"));	
GetDlgItem(IDC_BUTTON_NEXT)->SetWindowText(_T("下10条"));	
GetDlgItem(IDC_STATIC_TOTAL)->SetWindowText(_T(""));	
GetDlgItem(IDC_STATIC_CURRENT)->SetWindowText(_T(""));	

GetDlgItem(IDC_STATIC1)->SetWindowText(_T("金额:"));	
GetDlgItem(IDC_STATIC2)->SetWindowText(_T("备注:"));	
GetDlgItem(IDC_STATIC4)->SetWindowText(_T("日期:"));	

GetDlgItem(IDC_CHECK1)->SetWindowText(_T("收"));//入"));	
GetDlgItem(IDC_CHECK2)->SetWindowText(_T("支"));//出"));	
GetDlgItem(IDC_BUTTON1)->SetWindowText(_T("添加"));//确认"));	
GetDlgItem(IDC_BUTTON_DELETE)->SetWindowText(_T("删除"));//输入"));//除"));	
GetDlgItem(IDC_BUTTON_MODIFY)->SetWindowText(_T("修改"));

GetDlgItem(IDC_BUTTON2)->SetWindowText(_T("重输"));//清屏"));//输入"));//除"));	
GetDlgItem(IDC_BUTTON4)->SetWindowText(_T("查询"));	
CFloatEdit2* pWnd=(CFloatEdit2*)GetDlgItem(IDC_EDIT1);
g_pEditShuE=pWnd;

pWnd=(CFloatEdit2*)GetDlgItem(IDC_EDIT4);
g_pEditRiQi=pWnd;

g_pEditBeiZhu=(CMyEdit*)GetDlgItem(IDC_EDIT2);
///////////////////////////////////////////////////////////////////////
m_listctrl.SetColumnWidth(-1,-3);
m_listctrl.AddColumn(_T("序号"),0);
m_listctrl.SetColumnWidth(0,58);
m_listctrl.AddColumn(_T("日期"),1);
m_listctrl.SetColumnWidth(1,58);
m_listctrl.AddColumn(_T("收/支"),2);
m_listctrl.SetColumnWidth(2,58);
m_listctrl.AddColumn(_T("金额"),3);
m_listctrl.SetColumnWidth(3,52);
m_listctrl.AddColumn(_T("备注"),4);
m_listctrl.SetColumnWidth(4,54);

CString sInstallDir=g_dbf.GetExeDir();
TCHAR cc[200];
wsprintf(cc,_T("%s"),sInstallDir+_T("\\Accobook.dat\0"));
if(!g_dbf.OpenDbf(cc))
		{
		::MessageBox(GetSafeHwnd(),_T("Cannot open Accobook.dat file!"),
		_T("  提示! "),MB_OK);	
		SendMessage(WM_CLOSE);
		return;
		};
 	if(!g_dbf.InitHeadStructure())
		{
		::MessageBox(GetSafeHwnd(),_T("Cannot read Accobook.dat file!"),
		_T("  提示! "),MB_OK);	
		
		SendMessage(WM_CLOSE);
		return;
		};
	g_nTotalFieldNum=g_dbf.GetFieldCount();
	
	ShowAll();


SYSTEMTIME st;
::GetSystemTime(&st);
TCHAR sYear[10],sMonth[10],sDay[10];
wsprintf(sYear,_T("%d"),st.wYear);
wsprintf(sMonth,_T("%d"),st.wMonth);
wsprintf(sDay,_T("%d"),st.wDay);
CString s=sYear;
s+=_T(".");
s+=sMonth;
s+=_T(".");
s+=sDay;
s+=_T(".");
g_pEditRiQi->SetWindowText(s);


}

void CAccobook_CEView::ShowAll()
{
OnButton2();
m_nIsListAll=1;

GetDlgItem(IDC_BUTTON_PREV)->EnableWindow(0);
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(0);

m_listctrl.DeleteAllItems();
			
	int i ,j ,len;
	CString s;
	TCHAR cc3[30];
	m_nStepNum=0;	
	g_nTotalRecordNum=g_dbf.GetRecordCount();
	wsprintf(cc3,_T("%d"),g_nTotalRecordNum);
	m_s2=cc3;
	int total=min(10,g_nTotalRecordNum);
	if(total<10)
		{
		m_s1=_T("1~")+m_s2;
		}
	else
		m_s1=_T("1~10");
	for(i=0;i<total;i++)
		{
		for(j=0;j<g_nTotalFieldNum;j++)
			{
			len=g_dbf.ReadFieldStr(i+1,j,g_pFieldBuf);
			s=g_dbf.CharToWideChar(g_pFieldBuf,len);
			m_listctrl.AddItem(i,j,s);
			}
		}
	GetDlgItem(IDC_BUTTON_PREV)->EnableWindow(FALSE);
	GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(TRUE);
	UpdateData(FALSE);
}

void CAccobook_CEView::OnButton2() //清除
{
g_nHitIndex=-1;
UpdateData(0);	
g_pEditShuE->SetWindowText(_T(""));	
g_pEditBeiZhu->SetWindowText(_T(""));	
}

void CAccobook_CEView::OnButton4() //查询
{
	p_SearchDlg->DoModal();
}

void CAccobook_CEView::OnCheck1() //收入
{
	UpdateData();	
	if(m_bShouRu)
		m_bZhiChu=0;
	else
		m_bZhiChu=1;
	UpdateData(0);	
}
	
void CAccobook_CEView::OnCheck2() //支出
{
	UpdateData();	
	if(m_bZhiChu)
		m_bShouRu=0;
	else
		m_bShouRu=1;
	UpdateData(0);	
}


void CAccobook_CEView::OnButtonListall() 
{
ShowAll();
}

void CAccobook_CEView::OnButtonNext() 
{
if(m_nStepNum>(g_nTotalRecordNum/10-1))
	{
	GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);
	return;
	}
m_listctrl.DeleteAllItems();
UpdateData();

GetDlgItem(IDC_BUTTON_PREV)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);
m_nStepNum++;
int i;
int j;
int start=10*m_nStepNum;
int end=min(start+10,g_nTotalRecordNum);
TCHAR cc1[10],cc2[10];
wsprintf(cc1,_T("%d"),start+1);
wsprintf(cc2,_T("%d"),end);
m_s1=cc1;
m_s1+=_T("~");
m_s1+=cc2;
int len;
CString s;
for(i=start;i<end;i++)
	{
	for(j=0;j<g_nTotalFieldNum;j++)
		{
		if(m_nIsListAll)
			{
			len=g_dbf.ReadFieldStr(i+1,j,g_pFieldBuf);
			s=g_dbf.CharToWideChar(g_pFieldBuf,len);
			m_listctrl.AddItem(i-start,j,s);
			}
		else
			{
			len=g_dbf.ReadFieldStr(g_wStationsArray[i]+1,j,g_pFieldBuf);
			s=g_dbf.CharToWideChar(g_pFieldBuf,len);
			m_listctrl.AddItem(i-start,j,s);
			}
		}
	}

if(m_nStepNum>(g_nTotalRecordNum/10-1))
	{
	GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);
	}
else
	GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(1);

GetDlgItem(IDC_BUTTON_PREV)->EnableWindow(1);
UpdateData(FALSE);
}

void CAccobook_CEView::OnButtonPrev() 
{
if(m_nStepNum<1)
	{
	GetDlgItem(IDC_BUTTON_PREV)->EnableWindow(FALSE);
	return;
	}
m_listctrl.DeleteAllItems();
UpdateData();

GetDlgItem(IDC_BUTTON_PREV)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);
m_nStepNum--;
int i;
int j;
int start=max(10*m_nStepNum,0);
int end=min(start+10,g_nTotalRecordNum);

TCHAR cc1[10],cc2[10];
wsprintf(cc1,_T("%d"),start+1);
wsprintf(cc2,_T("%d"),end);
m_s1=cc1;
m_s1+=_T("~");
m_s1+=cc2;
int len;
CString s;
for(i=start;i<end;i++)
	{
	for(j=0;j<g_nTotalFieldNum;j++)
		if(m_nIsListAll)
			{
			len=g_dbf.ReadFieldStr(i+1,j,g_pFieldBuf);
			s=g_dbf.CharToWideChar(g_pFieldBuf,len);
			m_listctrl.AddItem(i-start,j,s);
			}
		else
			{
			len=g_dbf.ReadFieldStr(g_wStationsArray[i]+1,j,g_pFieldBuf);
			s=g_dbf.CharToWideChar(g_pFieldBuf,len);
			m_listctrl.AddItem(i-start,j,s);
			}
	}
if(m_nStepNum<1)
	{
	GetDlgItem(IDC_BUTTON_PREV)->EnableWindow(FALSE);
	}
else
	GetDlgItem(IDC_BUTTON_PREV)->EnableWindow(1);

GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(1);
UpdateData(FALSE);
}

//	::MessageBox(GetSafeHwnd(),_T("请先选定要修改的记录!"),
//		_T("  修改 ?"),MB_OK);

void CAccobook_CEView::OnButton1()//Append()添加 确认
{
TCHAR cc[100];
CString sRiQi,sShuE,sType,sBeiZhu;
g_pEditBeiZhu->GetWindowText(sBeiZhu);

UpdateData();	
if(m_bShouRu&&m_bZhiChu)
	{
	::MessageBox(GetSafeHwnd(),_T("收入或支出只能选一个!"),
		_T("  提示 !"),MB_OK);
	return;
	}
g_pEditShuE->GetWindowText(sShuE);	
if(sShuE=="")
	{
	::MessageBox(GetSafeHwnd(),_T("请填写金额后再按添加!"),
		_T("  提示 !"),MB_OK);

	return;
	}
g_pEditRiQi->GetWindowText(sRiQi);
if(m_bShouRu)
	sType=_T("收入");
else
	sType=_T("支出");

if(::MessageBox(GetSafeHwnd(),_T("真要添加记录吗?"),
		_T("  添加 ?"),MB_YESNO)==IDNO)
	{
	return;	
	}

char cXuHao[100],cShuE[100],cRiQi[40],cType[20],cBeiZhu[255];
g_dbf.AppendBlankRecordInMem();

int num=g_dbf.GetRecordCount();
wsprintf(cc,_T("%d"),num);
int len=g_dbf.WideCharToChar(cc,cXuHao);
g_dbf.SetFieldStr(num,0,(PBYTE)cXuHao,len);
len=g_dbf.WideCharToChar(sRiQi,cRiQi);
g_dbf.SetFieldStr(num,1,(PBYTE)cRiQi,len);
len=g_dbf.WideCharToChar(sType,cType);
g_dbf.SetFieldStr(num,2,(PBYTE)cType,len);
len=g_dbf.WideCharToChar(sShuE,cShuE);
g_dbf.SetFieldStr(num,3,(PBYTE)cShuE,len);
len=g_dbf.WideCharToChar(sBeiZhu,cBeiZhu);
g_dbf.SetFieldStr(num,4,(PBYTE)cBeiZhu,len);
g_dbf.WriteAllDataToFile();
ShowAll();
}


void CAccobook_CEView::OnButtonDelete() 
{
int num=g_dbf.GetRecordCount();
if(g_nHitIndex<0||g_nHitIndex>num)
	{
	::MessageBox(GetSafeHwnd(),_T("请先选定要删除的记录!"),
		_T("  提示 !"),MB_OK);

	return;
	}
if(::MessageBox(GetSafeHwnd(),_T("真要删除所选记录吗?"),
		_T("  删除 ?"),MB_YESNO)==IDNO)
	return;
int index;
if(m_nIsListAll)
	index=g_nHitIndex+1;
else
	index=g_wStationsArray[g_nHitIndex]+1;
g_dbf.DeleteRecordInMem(index);
int i,len;
char cXuHao[100];
TCHAR cc[100];
for(i=index;i<num;i++)
	{
	wsprintf(cc,_T("%d"),i);
	len=g_dbf.WideCharToChar(cc,cXuHao);
	g_dbf.SetFieldStr(i,0,(PBYTE)cXuHao,len);
	}
g_dbf.WriteAllDataToFile();
if(m_nIsListAll)
	ShowAll();
else
	RefreshCtrl();
g_nHitIndex=-1;
}

void CAccobook_CEView::OnButtonModify() 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -