📄 datahandle.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 + -