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

📄 datahandle.cpp

📁 移动拨测的数据检测分析
💻 CPP
字号:
// DataHandle.cpp : implementation file
//

#include "stdafx.h"
#include "Analyse.h"
#include "DataHandle.h"

#include "StructDef.h"

#include "time.h"
#include "stdio.h"
#include "sys/types.h"
#include "sys/timeb.h"
#include "string.h"
#include "math.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDataHandle

ParamSet TempParam[16];
int SetNum;  //设置的模块个数


CDataHandle::CDataHandle()
{
	RegisteTotalNumber=0;
	RegisteNumber=0;
	CallingTotalNumber=0;
	ConnectNumber=0;
	DropoffNumber=0;
	SingleConnectNumber=0;
	DuanxuNumber=0;
	ConnectTime=0;
	DialTime=0;
	TotalDialTime=0;
	TotalConnectTime=0;
	OpenFile();
}

CDataHandle::~CDataHandle()
{
	CloseFile();
}


BEGIN_MESSAGE_MAP(CDataHandle, CWnd)
	//{{AFX_MSG_MAP(CDataHandle)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CDataHandle message handlers

void CDataHandle::OpenFile()  //
{
	char ResultFileName[512];
	
	ParamFile.Open("E:\\share\\wxp\\test\\ParamSet.prm",CFile::shareDenyNone|CFile::modeReadWrite);
	SetNum=(ParamFile.GetLength()-250)/sizeof(ParamSet);
	strcpy(ResultFileName,"E:\\share\\wxp\\test\\TestResult.dat");
	ResultFile.Open(ResultFileName,CFile::shareDenyNone | CFile::modeCreate | CFile::modeReadWrite);

}

void CDataHandle::CloseFile()
{
	ResultFile.Close();
}

void CDataHandle::FinalResult()
{
	ResultType TempResult;
	for(int i=0;i<SetNum;i++)
	{
		TempResult.RegisteRate=(RegisteNumber/RegisteTotalNumber)*100;
		TempResult.ConnectRate=(ConnectNumber/CallingTotalNumber)*100;
		TempResult.DropoffRate=(DropoffNumber/ConnectNumber)*100;
		TempResult.DuanxuRate=(DuanxuNumber/ConnectNumber)*100;
		TempResult.DialDelay=TotalDialTime/CallingTotalNumber;
		TempResult.ConnectTime=TotalConnectTime/CallingTotalNumber;
		TempResult.SingleConnectRate=(SingleConnectNumber/ConnectNumber)*100;
		strcpy(TempResult.CalledNumber,TempParam[i].CalledNumber);
		strcpy(TempResult.SelfNumber,TempParam[i].CallNumber);
		TempResult.ModuleID=TempParam[i].ModuleID;
		CopyTime(TempResult.TestStartTime,TempStartTime);
		CopyTime(TempResult.TestEndTime,TempEndTime);
		ResultFile.Seek(250+(i*sizeof(ResultType)),CFile::begin);
		ResultFile.Write(&TempResult,sizeof(ResultType));
	}
}

void CDataHandle::StatisticResult()
{
	char DialTimeAndConnectTimeFileName[512];
	char EveryGroupRegNumFileName[512];
	char TempTestFileName[512];
	int EveryGroupRegNum;  //每组中的接入次数
	int TestNum;  //测试的次数
	int Group;  //测试的组数
	SingleTestRecord TempTestRecord;

//	struct _timeb tstruct;
//	_ftime( &tstruct );

	
	TestNum=(TestFile.GetLength()-sizeof(ParamSet))/sizeof(SingleTestRecord);

	for(int i=0;i<SetNum;i++)
	{
		ParamFile.Seek(250+i*sizeof(ParamSet),sizeof(ParamSet));
		ParamFile.Read(&TempParam[i],sizeof(ParamSet));
		if(TempParam[i].TestItem==0x01)  //接入率的的计算,因为接入率和其它六项是互斥的
		{
			EveryGroupRegisteRate TempRegisteRate;
			strcpy(EveryGroupRegNumFileName,"E:\\share\\wxp\\test\\GroupRegRate");
			sprintf(EveryGroupRegNumFileName,"%d",TempParam[i].ModuleID);
			strcat(EveryGroupRegNumFileName,".dat");
			EveryGroupRegNumFile.Open(EveryGroupRegNumFileName,CFile::shareDenyNone | CFile::modeCreate | CFile::modeReadWrite);

			RegisteTotalNumber=TestNum;  //总的接入率测试次数
			strcpy(TempTestFileName,"E:\\share\\wxp\\test\\TestRecord");
			sprintf(TempTestFileName,"%d",TempParam[i].ModuleID);
			strcat(TempTestFileName,".dat");
			TestFile.Open(TempTestFileName,CFile::shareDenyNone|CFile::modeReadWrite);
			Group=TestNum/TempParam[i].TestTimes+1;
			int m,n;
			if(Group==TempParam[i].TestGroup)
			{
				m=TempParam[i].TestTimes-1;
				n=Group-1;
				for(int k=0;k<=n;k++)
				{
					EveryGroupRegNum=0;
					for(int j=0;j<=m;j++)
					{
						TestFile.Seek(sizeof(ParamSet)+(k*j*sizeof(SingleConnectNumber)),CFile::begin);
						TestFile.Read(&TempTestRecord,sizeof(SingleTestRecord));
						if(j==0) 
							CopyTime(TempRegisteRate.TestStartTime,TempTestRecord.TestStartMoment);//接入率测试的开始时间
						if((k==0)&&(j==0)) 
							CopyTime(TempStartTime,TempTestRecord.TestStartMoment);//整个测试的开始时间
						if(j==m) 
							CopyTime(TempRegisteRate.TestEndTime,TempTestRecord.TestEndMoment);//接入率测试的结束时间
						if(k==n&&j==m)
							CopyTime(TempEndTime,TempTestRecord.TestEndMoment);//整个测试的结束时间
						if(TempTestRecord.IfRegisted==0)
						{
							EveryGroupRegNum+=1;
							RegisteNumber+=1; //总的接入次数
						}
					}
					TempRegisteRate.GroupNumber=k;
					TempRegisteRate.EveryRegisteRate=(EveryGroupRegNum/TempParam[i].TestTimes)*100;
					EveryGroupRegNumFile.Seek(k*sizeof(EveryGroupRegisteRate),CFile::begin);
					EveryGroupRegNumFile.Write(&TempRegisteRate,sizeof(EveryGroupRegisteRate));//写入每组接入率文件中
					EveryGroupRegNumFile.Close();
				}
			}
			else
			{
				EveryGroupRegNumFile.Close();
			}
			TestFile.Close();
		}
		else
		{
			EveryDialDelayAndConnectTime TempDialDelayAndConnectTime;
			strcpy(DialTimeAndConnectTimeFileName,"E:\\share\\wxp\\test\\DialDelayConTime");
			sprintf(DialTimeAndConnectTimeFileName,"%d",TempParam[i].ModuleID);
			strcat(DialTimeAndConnectTimeFileName,".dat");
			DialTimeAndConnectTimeFile.Open(DialTimeAndConnectTimeFileName,CFile::shareDenyNone | CFile::modeCreate | CFile::modeReadWrite);
			
			CallingTotalNumber=TestNum;  //总的呼叫测试次数
			strcpy(TempTestFileName,"E:\\share\\wxp\\test\\TestRecord");
			sprintf(TempTestFileName,"%d",TempParam[i].ModuleID);
			strcat(TempTestFileName,".dat");
			TestFile.Open(TempTestFileName,CFile::shareDenyNone|CFile::modeReadWrite);
			for(int j=0;j<TestNum;j++)
			{
				TestFile.Seek(sizeof(ParamSet)+(j*sizeof(SingleConnectNumber)),CFile::begin);
				TestFile.Read(&TempTestRecord,sizeof(SingleTestRecord));
				CopyTime(TempDialDelayAndConnectTime.TestStartTime,TempTestRecord.TestStartMoment);//每次测试的开始时间
				CopyTime(TempDialDelayAndConnectTime.ConnectStartTime,TempTestRecord.ReturnOkMoment);//每次通话开始时间
				CopyTime(TempDialDelayAndConnectTime.TestEndTime,TempTestRecord.TestEndMoment);//每次测试的结束时间
				if(j==0) 
					CopyTime(TempStartTime,TempTestRecord.TestStartMoment);// 整个测试的开始时间
				if(j==(TestNum-1)) 
					CopyTime(TempEndTime,TempTestRecord.TestEndMoment);//整个测试的结束时间
				if(TempTestRecord.IsReturnRing==0)  ConnectNumber+=1;
				if(TempTestRecord.IfDropoff==0)    DropoffNumber+=1;
				if(TempTestRecord.IfSingleConnect==0)  SingleConnectNumber+=1;
				if(TempTestRecord.IfDuanXu==0)  DuanxuNumber+=1;
				TempDialDelayAndConnectTime.EveryDialDelay=TempTestRecord.DialDelay;//每次呼叫的拨号后时延
				TotalDialTime+=TempDialDelayAndConnectTime.EveryDialDelay;//拨号后时延的累加  TotalDialTime
				TempDialDelayAndConnectTime.EveryConnectTime=TempTestRecord.ConnectTime;//每次的通话时长
				TotalConnectTime+=TempDialDelayAndConnectTime.EveryConnectTime;//通话时长的累加  TotalConnectTime
				TempDialDelayAndConnectTime.TestNum=j+1;
				//写入文件中
				DialTimeAndConnectTimeFile.Seek(j*sizeof(EveryDialDelayAndConnectTime),CFile::begin);
				DialTimeAndConnectTimeFile.Write(&TempDialDelayAndConnectTime,sizeof(EveryDialDelayAndConnectTime));
			}
			DialTimeAndConnectTimeFile.Close();
			TestFile.Close();
		}
	}
	FinalResult();


}


void CDataHandle::CopyTime(SYSTEMTIME TM1,SYSTEMTIME TM2)
{
	TM1.wDay=TM2.wDay;
	TM1.wDayOfWeek=TM2.wDayOfWeek;
	TM1.wHour=TM2.wHour;
	TM1.wMilliseconds=TM2.wMilliseconds;
	TM1.wMinute=TM2.wMinute;
	TM1.wMonth=TM2.wMonth;
	TM1.wSecond=TM2.wSecond;
	TM1.wYear=TM1.wYear;
}

/*WORD CDataHandle::SystemTimeDiffer(SYSTEMTIME TM1,SYSTEMTIME TM2)//得到两次系统时间之间的差值
{
	WORD TimeSpan;
//	LARGE_INTEGER Time1,Time2;

//	Time1.QuadPart=

	if(TM2.wYear=TM1.wYear)
	{
		if(TM2.wMonth=TM1.wMonth)
		{
			if(TM2.wDay=TM1.wDay)
			{
				if(TM2.wHour=TM1.wHour)
				{
					if(TM2.wMinute=TM1.wMinute)
					{
						if(TM2.wSecond=TM1.wSecond)
							TimeSpan=(WORD)fabs(TM2.wMilliseconds-TM1.wMilliseconds);
					}
				}
			}
		}
	}
	else TimeSpan=0;


	return TimeSpan;

}*/

⌨️ 快捷键说明

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