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

📄 transview.cpp

📁 这是一个银行证券转帐系统。可以实现银行和证券公司之间的转帐。
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	{
		p->LogMsg("接收银行请求失败(1125)!",0);
		return 0;
	}

	int SendLen=0;
	p->LogMsg(SendBuf,0);
	SendLen=p->m_BankInte->FormatAns(SendBuf,(void*)myBuf,RecvBuf);
	FD_ZERO(&sendset);
	FD_SET(s,&sendset);

	OK=select(1,NULL,&sendset,NULL,&timeout);
	if(OK)
	{
		int slen=send(s,myBuf,SendLen,0);

		if(slen==SendLen)           
		{
			p->LogMsg("发送成功!",0);		
		}
		else
		{
			p->LogMsg("发送失败!1178",0);
			closesocket(s);
			return 0;
		}
	}
	else
	{
		p->LogMsg("不能发送信息!(1183)",0);
	}
	closesocket(s);
	return 0;

}

//******************************************************************************
//功	能:比较对账结果,保留在文件yyyymmdd.jg
//			成功:>=0
//			错误:<0
//说	明:20070807 修改,对于不平的帐单记录在yyyymmdd.dbz
//******************************************************************************
int CTransView::ValidDzd(LPCSTR source, LPCSTR dest)
{
	int v_BToS,v_SToB;		//银行券商转账笔数
	int v_Open,v_Cancel;;
	int v_MBToS,v_MSToB;
	
	int ret=-1;
	//
	try
	{
		CTime t=CTime::GetCurrentTime();
		CString strDzjg=t.Format(".\\log\\%Y%m%d.jg");
		CString strDbz=t.Format(".\\log\\%Y%m%d.Dbz");
		ofstream ofDbz((LPCSTR)strDbz);
		CStdioFile fSource,fDest,fDzjg;
		CString strLog,strDestRead,strSourceRead;
		if(fDzjg.Open(strDzjg,CFile::modeWrite|CFile::modeCreate|CFile::modeNoTruncate|CFile::typeText))
		{
			if(!fDest.Open(dest,CFile::modeRead|CFile::typeText))
			{
				strLog="不能打开文件";
				strLog+=dest;
				strLog+=",对账失败!";
				fDzjg.WriteString(strLog);
				fDzjg.Close();
				return ret;
			}
			if(!fSource.Open(source,CFile::modeRead|CFile::typeText))
			{
				strLog="不能打开文件";
				strLog+=source;
				strLog+=",对账失败!";
				fDzjg.WriteString(strLog);
				fDzjg.Close();
				return ret;
			}
			
			v_BToS=0;
			v_SToB=0;
			v_Open=0;
			v_Cancel=0;
			v_MBToS=0;
			v_MSToB=0;
			BOOL bOK=TRUE;
			while(fDest.ReadString(strDestRead))
			{
				strDestRead.Replace(" ","");
				char szDest[1024];
				char szParse[7][40];
				strcpy(szDest,(LPCSTR)strDestRead);
				memset(szParse,0,7*40);
				int i=0,j=0,k=0;
				while(szDest[i])
				{
					if(szDest[i]!='|')
						szParse[j][k++]=szDest[i];
					else
					{
						szParse[j][k]=0;
						k=0;
						j++;
					}
					i++;
					if(j>=7)	break;
					if(i>1024)	break;
				}
				switch(szParse[0][0]){
				case '1':
					v_SToB++;
					break;
				case '2':
					v_BToS++;
					break;
				case '6':
					v_Open++;
					break;
				case '7':
					v_Cancel++;
				}
				fSource.SeekToBegin();
				BOOL bFound=FALSE;
				while(fSource.ReadString(strSourceRead))
				{
					strSourceRead.Replace(" ","");
					char szSource[1024];
					char szParse2[7][40];
					strcpy(szSource,(LPCSTR)strSourceRead);
					if(szSource[0]!=szDest[0])
						continue;
					i=0;j=0;k=0;
					while(szSource[i])
					{
						if(szSource[i]!='|')
							szParse2[j][k++]=szSource[i];
						else
						{
							szParse2[j][k]=0;
							k=0;
							j++;
						}
						i++;
						if(j>=7)	break;
						if(i>1024)	break;
					}
					CString str1,str2;
					str1=szParse[2];
					str2=szParse2[2];
					if(str1.GetLength()>str2.GetLength())
					{
						if(str1.Right(str2.GetLength())!=str2)
							continue;
					}
					else
					{
						if(str2.Right(str1.GetLength())!=str1)
							continue;
					}
					if(strcmp(szParse[3],szParse2[3])!=0)//比较银行账户
						continue;
					str1=szParse[4];				//比较合同序号
					str2=szParse2[4];
					if(str1.GetLength()>str2.GetLength())
					{
						if(str1.Right(str2.GetLength())!=str2)
							continue;
					}
					else
					{
						if(str2.Right(str1.GetLength())!=str1)
							continue;
					}
					int nJe1,nJe2;
					nJe1=int(atof(szParse[5])*100);
					nJe2=int(atof(szParse2[5])*100);
					if(nJe1!=nJe2)	continue;
					if(szParse[6][0]!=szParse2[6][0])	continue;
					bFound=TRUE;
				}
				strLog=strDestRead;
				ofDbz<<(LPCSTR)strLog<<endl;
				if(bFound)
					strLog+=" 对账成功!\n";
				else
				{
					strLog+=" 对账有误!\n";
					bOK=FALSE;
				}
				fDzjg.SeekToEnd();
				fDzjg.WriteString(strLog);
			}
			fDest.Close();
			fSource.Close();
			fDzjg.Close();
			if(bOK) ret=1;	
		}
	}
	catch(...)
	{
	}
	return ret;
}
//******************************************************************************
//功	能:比较对账结果,保留在文件yyyymmdd.jg
//			成功:>=0
//			错误:<0
//******************************************************************************
/*int CTransView::ValidDzd(LPCSTR source, LPCSTR dest)
{
	int v_BToS,v_SToB;		//银行券商转账笔数
	int v_Open,v_Cancel;;
	int v_MBToS,v_MSToB;
	
	int ret=-1;
	//
	try
	{
		CTime t=CTime::GetCurrentTime();
		CString strDzjg=t.Format(".\\log\\%Y%m%d.jg");
		CStdioFile fSource,fDest,fDzjg;
		CString strLog,strDestRead,strSourceRead;
		if(fDzjg.Open(strDzjg,CFile::modeWrite|CFile::modeCreate|CFile::modeNoTruncate|CFile::typeText))
		{
			if(!fDest.Open(dest,CFile::modeRead|CFile::typeText))
			{
				strLog="不能打开文件";
				strLog+=dest;
				strLog+=",对账失败!";
				fDzjg.WriteString(strLog);
				fDzjg.Close();
				return ret;
			}
			if(!fSource.Open(source,CFile::modeRead|CFile::typeText))
			{
				strLog="不能打开文件";
				strLog+=source;
				strLog+=",对账失败!";
				fDzjg.WriteString(strLog);
				fDzjg.Close();
				return ret;
			}
			
			v_BToS=0;
			v_SToB=0;
			v_Open=0;
			v_Cancel=0;
			v_MBToS=0;
			v_MSToB=0;
			BOOL bOK=TRUE;
			while(fDest.ReadString(strDestRead))
			{
				strDestRead.Replace(" ","");
				char szDest[1024];
				char szParse[7][40];
				strcpy(szDest,(LPCSTR)strDestRead);
				memset(szParse,0,7*40);
				int i=0,j=0,k=0;
				while(szDest[i])
				{
					if(szDest[i]!='|')
						szParse[j][k++]=szDest[i];
					else
					{
						szParse[j][k]=0;
						k=0;
						j++;
					}
					i++;
					if(j>=7)	break;
					if(i>1024)	break;
				}
				switch(szParse[0][0]){
				case '1':
					v_SToB++;
					break;
				case '2':
					v_BToS++;
					break;
				case '6':
					v_Open++;
					break;
				case '7':
					v_Cancel++;
				}
				fSource.SeekToBegin();
				BOOL bFound=FALSE;
				while(fSource.ReadString(strSourceRead))
				{
					strSourceRead.Replace(" ","");
					char szSource[1024];
					char szParse2[7][40];
					strcpy(szSource,(LPCSTR)strSourceRead);
					if(szSource[0]!=szDest[0])
						continue;
					i=0;j=0;k=0;
					while(szSource[i])
					{
						if(szSource[i]!='|')
							szParse2[j][k++]=szSource[i];
						else
						{
							szParse2[j][k]=0;
							k=0;
							j++;
						}
						i++;
						if(j>=7)	break;
						if(i>1024)	break;
					}
					CString str1,str2;
					str1=szParse[2];
					str2=szParse2[2];
					if(str1.GetLength()>str2.GetLength())
					{
						if(str1.Right(str2.GetLength())!=str2)
							continue;
					}
					else
					{
						if(str2.Right(str1.GetLength())!=str1)
							continue;
					}
					if(strcmp(szParse[3],szParse2[3])!=0)//比较银行账户
						continue;
					str1=szParse[4];				//比较合同序号
					str2=szParse2[4];
					if(str1.GetLength()>str2.GetLength())
					{
						if(str1.Right(str2.GetLength())!=str2)
							continue;
					}
					else
					{
						if(str2.Right(str1.GetLength())!=str1)
							continue;
					}
					int nJe1,nJe2;
					nJe1=int(atof(szParse[5])*100);
					nJe2=int(atof(szParse2[5])*100);
					if(nJe1!=nJe2)	continue;
					if(szParse[6][0]!=szParse2[6][0])	continue;
					bFound=TRUE;
				}
				strLog=strDestRead;
				if(bFound)
					strLog+=" 对账成功!\n";
				else
				{
					strLog+=" 对账有误!\n";
					bOK=FALSE;
				}
				fDzjg.SeekToEnd();
				fDzjg.WriteString(strLog);
			}
			fDest.Close();
			fSource.Close();
			fDzjg.Close();
			if(bOK) ret=1;	
		}
	}
	catch(...)
	{
	}
	return ret;
}
*/
void CTransView::OnMenuSgdz() 
{
	CTime t=CTime::GetCurrentTime();
	CString str1=t.Format(".\\tmp\\%Y%m%d.ls");
	CString str2=t.Format(".\\tmp\\%Y%m%d.Dzd");
	CString str3=t.Format(".\\log\\%Y%m%d.jg");
	int ret=ValidDzd(str1,str2);	
	if(ret>=0)
		ret=ValidDzd(str2,str1);
	if(ret>=0)
		MessageBox("对帐成功!");
	else
	{
		MessageBox("对帐不平!");
		CString strcmd="notepad ";
		strcmd+=str3;
		WinExec(strcmd,2);
	}
}

BOOL CTransView::LogMsg(char *format, ...)
{
	char	sLogStr[1000]="";
	CString csLogStr("");
	CTime t=CTime::GetCurrentTime();
	CString s=t.Format("%H:%M:%S");
	CString FileName=t.Format(".\\log\\%Y%m%d.log");
		
	va_list		marker;
	va_start(marker,format);

	_vsnprintf(sLogStr,1000,format,marker);

	try
	{
		csLogStr.Format("%s \n",sLogStr);

		ofstream logFile(FileName,ios::app);
		logFile<<(LPCSTR)s<<" "<<sLogStr<<endl;
		logFile.close();
	}
	catch(...)
	{
	}	    

	va_end(marker); 

	return TRUE;
}

⌨️ 快捷键说明

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