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

📄 ipcountdlg.cpp

📁 IP电话计费管理系统本地版
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		//pDC->SetBkColor(RGB(20,110,165));
		
	}

	// TODO: Return a different brush if the default is not desired
	return hbr;
}


void CIPCountDlg::OnOK() 
{
	// TODO: Add extra validation here
	OnLogin();
//	CDialog::OnOK();
}

void CIPCountDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
 
	if(!sdlg->bCanQuit)
	{	
	   sdlg->OnCancel();
	   if(!sdlg->bCanQuit)
	      return;
	}

	if(!bChgAndCount)
	{
		int nQuitFlag=mdlg->GetQuitFlag();
	    if(nQuitFlag==1)
		{
    		AfxMessageBox("请先扎帐");
		}
		else
		{
			if(bOpenCom[0])
	        {
				SendData("exit",nGwCom[0]);//退到sinovoip>目录下
			}
			if(bOpenCom[1])
			{
				SendData("exit",nGwCom[1]);//退到sinovoip>目录下
			}
  
			CDialog::OnCancel();
		}
	}
	else
	{
		if(bOpenCom[0])
		{
			SendData("exit",nGwCom[0]);//退到sinovoip>目录下
			
		}
		if(bOpenCom[1])
		{
			SendData("exit",nGwCom[1]);//退到sinovoip>目录下
			
		}
		CDialog::OnCancel();
	}
}

void CIPCountDlg::OnComm2() 
{
	// TODO: Add your control notification handler code here
   int nRxPort = m_ctrlComm2.GetCommPort();
	VARIANT variant_inp;
	COleSafeArray safearray_inp;
	LONG len,k;
	BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
	CString strtemp;
	
	if(m_ctrlComm2.GetCommEvent()==2)     //事件值为2表示接收缓冲区内有字符
	{
		variant_inp=m_ctrlComm2.GetInput();   //读缓冲区
		safearray_inp=variant_inp;           //VARIANT型变量转换为ColeSafeArray型变量
		len=safearray_inp.GetOneDimSize(); //得到有效数据长度
        n=m_ctrlComm2.GetInBufferCount();
		
		for(k=0;k<len;k++)
			safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
		for(k=0;k<len;k++)             //将数组转换为Cstring型变量
		{
			BYTE bt=*(char*)(rxdata+k);      //字符型
			strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
			m_strRXData[1]+=strtemp;    //加入接收编辑框对应字符串
            //下面代码判断是否是回车符
			char str2[2];
			char tempchar[2];
			tempchar[0] = (char)bt;
			tempchar[1] ='\0';
			sprintf(str2,"%c",'\r');//回车符
			if(strcmp(tempchar,str2)==0)  
			{
				OnRecvDTMF2(nGwCom[1]);
				int nFind=0;
				nFind=m_strRXData[1].Find('#',0);
				if(nFind!=-1)
				{
					strSaveInfo.Format("%s", m_strRXData[1].Mid(nFind+1));
					m_strRXData[1]="";
					MidInfo(strSaveInfo,nGwCom[1]);
				}
			}
		}
	} 	
    DealReboot(nGwCom[1]);	
}

CString CIPCountDlg::GetMachineCode()
{
	DWORD dwIDESerial = 19790103;//Default Value
	
	::GetVolumeInformation("C:\\", NULL, NULL, &dwIDESerial, NULL, NULL, NULL, NULL);
	CString sCode;//机器码
	sCode.Format("%dMPVQLVOBQRTYUITT", dwIDESerial);//至少有16位
	
	char Mask[17] = {"CHINAXLZCHINAXLZ"};
	
	for (int i = 0 ; i < 16 ; i++)
	{
		if (sCode.GetLength() > i)
			sCode.SetAt(i, (sCode.GetAt(i)|65)&0x7F);
		if (sCode.GetAt(i) == 0 || sCode.GetAt(i) > 122)
			sCode.SetAt(i, Mask[i]);//保证为常用字符			 
	}
	sCode.MakeUpper();
	CString sMachineCode;
	sMachineCode.GetBufferSetLength(16);//16位序列号码
	for (int j = 0 ; j < 16 ; j++)
		sMachineCode.SetAt(j, sCode.GetAt(j));
	return sMachineCode;//保证一个十六位机器序列号
}

CString CIPCountDlg::SetRegCode(CString strGetCode)
{
	CString sDCode;//机器码
	CString sChCode[19];
	if(strGetCode.GetLength()<16)
		return "";
	for(int k=1;k<17;k++)
		sChCode[k]=strGetCode.Mid(k-1,1);
	sDCode=sChCode[5]+sChCode[9]+sChCode[1]+sChCode[7]+sChCode[3]+sChCode[15]+sChCode[4]+sChCode[11]+sChCode[2]+sChCode[10]+sChCode[12]+sChCode[6]+sChCode[12]+sChCode[14]+sChCode[8]+sChCode[16];
	char Mask[17] = {"HUNANXLZSICHUXLZ"};
	
	for (int i = 0 ; i < 16 ; i++)
	{
		if (sDCode.GetLength() > i)
			sDCode.SetAt(i, (sDCode.GetAt(i)|65)&0x4E);
		if (sDCode.GetAt(i) == 0 || sDCode.GetAt(i) > 122)
			sDCode.SetAt(i, Mask[i]);//保证为常用字符			 
	}
	sDCode.MakeUpper();
	CString sRegCode;
	sRegCode.GetBufferSetLength(16);//16位序列号码
	for (int j = 0 ; j < 16 ; j++)
		sRegCode.SetAt(j, sDCode.GetAt(j));
	return sRegCode;//保证一个十六位机器序列号
	
}


BOOL CIPCountDlg::bIsValid()
{
    UpdateData(TRUE);
    CString strMacCode="";
    strMacCode=GetMachineCode();
	char sREGISTERCODE[17];
	memset(sREGISTERCODE, 0, 17);
	CFile sProductIDFile;
	CString sDesCode="";

	//获得文件的当前路径
	TCHAR pFileName[MAX_PATH];
	GetModuleFileName(NULL,pFileName,MAX_PATH);
	if(strchr(pFileName,'\\'))
		*strrchr(pFileName,'\\')='\0';
    strcat(pFileName,"\\CIP.DAT");

	if (sProductIDFile.Open(pFileName, CFile::modeRead))
	{
		 sProductIDFile.Read(sREGISTERCODE, 16);
		 sDesCode= sREGISTERCODE;//目的注册码
         sProductIDFile.Close();
	}
    CString sSorCode=SetRegCode(strMacCode);

	if(strcmp(sSorCode,sDesCode)==0)
         return TRUE;
	else
	{
		CFile File;
		if (File.Open(pFileName, CFile::modeRead)) 
		{
			File.Close();
			CFile::Remove(pFileName);
		}
	}
    CRegConf rdlg;
	rdlg.m_strMacCode=GetMachineCode();
	if (rdlg.DoModal() == IDOK) 
	{ 
		sDesCode=SetRegCode(rdlg.m_strMacCode);
		if(strcmp(rdlg.m_strRegCode,sDesCode)==0)
		{
			AfxMessageBox("恭喜,您注册成功了!");
			
			bValidUser=TRUE;
			CFile File;//保存产品号
			if (File.Open(pFileName, CFile::modeCreate | CFile::modeWrite))
				File.Write((LPCTSTR)rdlg.m_strRegCode, rdlg.m_strRegCode.GetLength());
			return TRUE;
		}
		else
		{
			AfxMessageBox("错误的注册码!");
			return FALSE;
		}
	}
	else
	{
		AfxMessageBox("请先注册");
		return FALSE;
	}
}

void CIPCountDlg::ShowCInfo()
{
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	BOOL bIsConnected = FALSE;
	SQLHSTMT hstmt = NULL;
	SQLRETURN rc;
	SWORD    sMsgNum = 0;
	SDWORD   pfNative=0;
	
	if (SQL_SUCCESS == (rc =::SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv)))
	{
		if (SQL_SUCCESS == (rc = ::SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3,SQL_IS_INTEGER)))
		{
			if (SQL_SUCCESS == (rc =::SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc)))
			{
				
				rc = ::SQLConnect(hdbc,(SQLCHAR*)"IPCount",SQL_NTS,(SQLCHAR*)"", SQL_NTS, (SQLCHAR*)"", SQL_NTS);
				if ((SQL_SUCCESS == rc)|| (SQL_SUCCESS_WITH_INFO == rc))
				{
					
					bIsConnected = TRUE;
					if (SQL_SUCCESS == (rc =::SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt)))
					{
						
						CString strChar='\'';
						CString strCDay="";
						strCDay=sdlg->m_strCTime.Mid(0,10);
						CString strCY,strCM,strCD;
						strCY=strCDay.Mid(0,4);
						strCM=strCDay.Mid(5,2);
						strCD=strCDay.Mid(8,2);
						CString strSQL="";
						strSQL="SELECT [话费],[日期],[当前操作员] FROM huafei";
						
						LPCSTR szSQL =strSQL; 
						if (SQL_SUCCESS == (rc = ::SQLPrepare(hstmt,(unsigned char*)szSQL, SQL_NTS)))
						{
							
							if (SQL_SUCCESS == (rc = ::SQLExecute(hstmt)))
							{
								
								SDWORD cb;
								CString strDay="";
								CString strOper="";
								char szCount[PERSON_INFO]="";//话费 
								char szDay[PERSON_INFO]="";
								char szOper[PERSON_INFO]="";
								SQLBindCol(hstmt,1,SQL_C_CHAR,szCount,PERSON_INFO,&cb);
								SQLBindCol(hstmt,2,SQL_C_CHAR,szDay,PERSON_INFO,&cb);
								SQLBindCol(hstmt,3,SQL_C_CHAR,szOper,PERSON_INFO,&cb);
								rc = SQLFetch(hstmt);	
								double nOperDayCount=0;
								double nOperBCount=0;
								
								while (SQL_SUCCESS == rc)
								{
									strDay=szDay;
									strOper=szOper;
									
									int nFindSpace=-1;
									nFindSpace=strDay.Find(' ',0);
									strDay=strDay.Mid(0,nFindSpace);
									
									int nEnd=0;
									int nCols=0;
									int nStart=0;
									CString iItems[10];
									int i;
									char    tmp[256];
									while(true)
									{
										nEnd=strDay.Find('-',nStart);
										if (nEnd==-1)
											break;
										if (nStart==strDay.GetLength())
											break;
										
										memset(tmp,'\0',256);
										for( i=nStart;i<nEnd;i++)    
											tmp[i-nStart]=LOBYTE(strDay[i]);
										
										nStart=nEnd;
										nStart++;
										if(nCols<3)
										{
											nCols++;
											iItems[nCols]=tmp;
										}
										iItems[3]=strDay.Mid(nEnd+1);;
									}
									if((strcmp(strCY,iItems[1])==0)&&(strcmp(strCM,iItems[2])==0)&&(strcmp(strCD,iItems[3])==0))
									{
										if(strcmp(sdlg->m_strCName,strOper)==0)
											nOperBCount+=atof(szCount);
										nOperDayCount+=atof(szCount);
									}
									//重新初始化每一个变量
									strcpy((char *)szCount,LPCTSTR(""));
									strcpy((char *)szDay,LPCTSTR(""));
									strcpy((char *)szOper,LPCTSTR(""));
									rc = SQLFetch(hstmt);
								}
								CString strOperDayCount="";
								CString strOperBCount="";
								strOperDayCount.Format("%.2f",nOperDayCount);
								strOperBCount.Format("%.2f",nOperBCount);
								
								sdlg->m_strCBCount=strOperBCount;
								sdlg->m_strCDCount=strOperDayCount;
								sdlg->UpdateData(FALSE);
								
								
							}
							
						}
						
					}
				}
			}
   }
  }
  
  if (henv)
  {
	  if (hdbc)
	  {
		  if (bIsConnected)
		  {
			  if (hstmt)
			  {
				  ::SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
			  }
			  ::SQLDisconnect(hdbc);
			  bIsConnected = FALSE;
		  }
		  ::SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
		  hdbc = NULL;
	  }
	  ::SQLFreeHandle(SQL_HANDLE_ENV, henv);
	  henv = NULL;
  }

}

void CIPCountDlg::AddToTemp(int nLineNum)
{
	CTempRecordSet m_TSet(&m_database);	
	//获得文件的当前路径
	TCHAR pFileName[MAX_PATH];
	GetModuleFileName(NULL,pFileName,MAX_PATH);
	if(strchr(pFileName,'\\'))
		*strrchr(pFileName,'\\')='\0';
    strcat(pFileName,"\\IPCount.mdb");
    CString strChar="";
	try
	{
		CString  sDSN="ODBC;DRIVER=Microsoft Access Driver (*.mdb);DSN='';DBQ="+strChar+pFileName+strChar;
		if(!m_database.IsOpen())
		{
			if(!m_database.Open(NULL,FALSE,FALSE,sDSN,FALSE))//打开数据库是否成功
			{
				CDialog::EndDialog(0);
				GetParent()->PostMessage(WM_CLOSE);
			}
		}
        CString strSQL="select * from Temp";
		m_TSet.Open(CTempRecordSet::dynaset,strSQL);//打开数据表是否成功
	}
	
	catch(CDBException* pEx)//丢出异常处理
	{
		pEx->ReportError();
		m_TSet.Close();
		m_database.Close();
        pEx->Delete();
	} 
	
	if(m_TSet.CanAppend())//是否能够添加或修改
	{ 
		m_TSet.AddNew();
		m_TSet.m_RNum=strStreamNum[nLineNum];//v12.03.08
		m_TSet.m_RLine=m_RecodeInfo[nLineNum].m_Line;
		m_TSet.m_RCalledNum=m_RecodeInfo[nLineNum].m_CalledNum;
		m_TSet.m_RStartTime=m_RecodeInfo[nLineNum].m_CDay;
		m_TSet.m_RTLen=m_RecodeInfo[nLineNum].m_RTLen;
		if(m_TSet.m_RTLen.IsEmpty())
            m_TSet.m_RTLen="00:00:01";//修改没读到时长时,写数据库为空
		m_TSet.m_RFeeRate=m_RecodeInfo[nLineNum].m_Rate;
		m_TSet.m_RFeeCount=m_RecodeInfo[nLineNum].m_RCount;
		m_TSet.m_RPreMoney=m_RecodeInfo[nLineNum].m_PrePay;
		m_TSet.m_RRemain=m_RecodeInfo[nLineNum].m_Remain;
		m_TSet.m_RAreaName=strAreaName[nLineNum]; 
		m_TSet.m_RORate=sdlg->strTotalORate[nLineNum];
		m_TSet.Update();
	}
	m_TSet.Close();

}

void CIPCountDlg::OnTitle() 
{
	// TODO: Add your control notification handler code here
	CTitleSet tsdlg;
	tsdlg.DoModal();
	UpdateData(FALSE);
}

CString CIPCountDlg::SetStreamNum()
{
    CString strDay1=mdlg->GetCurDay();
    CTime t=CTime::GetCurrentTime();
	CString strT=t.Format("%y%m%d");
    CString strDay2=strT.Mid(4,2);
	CString strIndex=mdlg->GetTelIndex();
	int nIndexCount=0;
	nIndexCount=atoi(strIndex);
    if(strcmp(strDay1,strDay2)==0)
	{   
		nIndexCount=nIndexCount+1;
	}
	else
		nIndexCount=1;
	strIndex.Format("%d",nIndexCount);
	if(strIndex.GetLength()==1)
		strIndex="0000"+strIndex;
	else if(strIndex.GetLength()==2)
		strIndex="000"+strIndex;
	else if(strIndex.GetLength()==3)
		strIndex="00"+strIndex;
	else if(strIndex.GetLength()==4)
		strIndex="0"+strIndex;

	mdlg->SetTelIndex(strIndex);
	mdlg->SetCurDay(strDay2);
	strT=strT+strIndex;
	sdlg->m_strCDStream=strT;//显示流水号
    sdlg->UpdateData(FALSE);

⌨️ 快捷键说明

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