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

📄 datafiletoimport.cpp

📁 我上传的程序为:群发数据管理软件的数据处理.软件可以自己从界面操作,把自己要导入的数据导入数据库.并且有导成的功能
💻 CPP
字号:
// DataFileToImport.cpp : implementation file
//

#include "stdafx.h"
#include "datamanger.h"
#include "DataFileToImport.h"
#include <stdio.h>


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

#include <afxdb.h>

/////////////////////////////////////////////////////////////////////////////
// CDataFileToImport dialog

extern int bNeed;
extern int System_Status;
extern int System_Import_Data;
extern int System_SmsSqlServer;
extern int System_LocalRoute;

extern class CDatabase g_ImportData;   //系统数据库类导入对象

CDataFileToImport::CDataFileToImport(CWnd* pParent /*=NULL*/)
	: CDialog(CDataFileToImport::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDataFileToImport)
	m_comnumber = 0;
	m_Importnumber = 0;
	m_filepath = _T("");
	m_smsconent = _T("");
	m_System_HourSendNumber=0;	  //每个小时发送短信条数
	m_System_DealHourFlag=0;
	m_System_CurrentSmsSendTime=0;
	m_System_ComNumber=0;
	m_System_CurrentTimeAdd=0;

	//}}AFX_DATA_INIT
}


void CDataFileToImport::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDataFileToImport)
	DDX_Control(pDX, IDOKFILE, m_btn_ok_file);
	DDX_Control(pDX, IDCANCEL, m_btn_cancel_file);
	DDX_Text(pDX, IDC_COM_FILENUMBER, m_comnumber);
	DDV_MinMaxInt(pDX, m_comnumber, 1, 11);
	DDX_Text(pDX, IDC_FILENUMBER, m_Importnumber);
	DDV_MinMaxInt(pDX, m_Importnumber, 1, 999999);
	DDX_Text(pDX, IDC_FILEPATH, m_filepath);
	DDV_MaxChars(pDX, m_filepath, 255);
	DDX_Text(pDX, IDC_FILESMSCONENT, m_smsconent);
	DDV_MaxChars(pDX, m_smsconent, 160);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDataFileToImport, CDialog)
	//{{AFX_MSG_MAP(CDataFileToImport)
	ON_BN_CLICKED(IDOKFILE, OnOkfile)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDataFileToImport message handlers

BOOL CDataFileToImport::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_btn_ok_file.SetIcon(IDI_OK);
	m_btn_cancel_file.SetIcon(IDI_CAN);

	//1.当然也可用MFC函数来读配置文件
	if (pCfg.setfilename(CONFIGUREFILE) == -1)
	{
		AfxMessageBox("读指定文件出错!");
		return false;
	}

	//2.每个小时发送短信条数
	if (pCfg.readcfgdata("SerCfg", "HourSendNumber", &m_System_HourSendNumber) == -1)
	{
		AfxMessageBox("读每个小时发送短信条数出错!");
		return false;
	}

	//3.取出交易间隔时间数据
	if ( pCfg.readcfgdata("SerCfg", "DealHourFlag", &m_System_DealHourFlag) == -1)
	{
		AfxMessageBox("读间隔时间处理标志出错!");
		return false;
	}

	//6.CurrentSmsSendTime
	if ( pCfg.readcfgdata("SerCfg", "CurrentSmsSendTime", &m_System_CurrentSmsSendTime) == -1)
	{
		AfxMessageBox("读间隔时间出错!");
		return false;
	}
	//7.
	if ( pCfg.readcfgdata("SerCfg", "ComNumber", &m_System_ComNumber) == -1)
	{
		AfxMessageBox("读COM个数失败出错!");
		return false;
	}
	//8.
	if ( pCfg.readcfgdata("SerCfg", "CurrentTimeAdd", &m_System_CurrentTimeAdd) == -1)
	{
		AfxMessageBox("读CurrentTimeAdd失败出错!");
		return false;
	}
	
	//9.取出用户名
	if ( pCfg.readcfgdata("SerCfg", "SmsUser", &m_SmsUser) == -1)
	{
		AfxMessageBox("读COM个数失败出错!");
		return false;
	}

	//10.取出用户标识
	if ( pCfg.readcfgdata("SerCfg", "SmsDefineNo", &m_SmsDefineNo) == -1)
	{
		AfxMessageBox("读SmsUser失败出错!");
		return false;
	}

	//11.特殊处理--需要从文件中导入数据
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDataFileToImport::OnOkfile() 
{
	// TODO: Add your control notification handler code here
	FILE *fp;
	char	getbuf[300];

	//0.设备初始化设置
	int i_comport =0;
	int i_comport_tmpstr = 0;
	int i_comportnumber=0;
	int i_Current_Time =0;	//当前次数
	int i_Total_Time=0;		//总统计数
	int i_Current_UseTime=0;//每个小时增加N条后,时间需要自动加1
	int i_SystemHour=0;
	int i_SystemDay=0;
	int i_SystemMonth=0;
	int i_CurrentSystemHour=0;
	int i_SystemCurrnetDay=0;

	UpdateData(true);

	//1.
	if (m_filepath.GetLength == 0)
	{
		AfxMessageBox("重新输入文件路径!");
		return;
	}
	if (System_Status == 3)
	{
		char tmpfilepath[255];
		memset(tmpfilepath,0x00, sizeof(tmpfilepath));
		strcpy(tmpfilepath,m_filepath.GetBuffer(m_filepath.GetLength()));
		if ((fp  = fopen(".\\1.txt", "r" )) == NULL )
		{
			AfxMessageBox("打开文件失败");
			return;
		}

	}

	//2.检查短消息内容是否空,或者超长
	WCHAR wchar[1024];
	int nCount = ::MultiByteToWideChar(CP_ACP, 0, m_smsconent, -1, wchar, 1024);
	if(nCount <= 1)
	{
		AfxMessageBox("请输入消息内容!");
		return;
	}
	else if(nCount >= 70)		// 我们决定全部用UCS2编码,最大70个字符(半角/全角)
	{
		AfxMessageBox("消息内容太长,无法发送!");
		return;
	}
	
	//3.取出系统时间
	CString m_currenttime;
	COleDateTime m_dateTest;
	m_dateTest = COleDateTime::GetCurrentTime();

	int loop =0;
	memset (getbuf,0x00,sizeof(getbuf));

	//4.一行只放一个手机号码
    while(fgets(getbuf, sizeof(getbuf), fp) != NULL) 
	{
		
		CString m_MobileCode;
		CString m_InsertSql;
		CString m_UpdateSql;
		CString m_comport;
		CString m_currtime;
		CString m_numtype;

		loop++;
			
		//4.3.取出系统开始导入时间
		//---:表示为需要间隔(早上1-5)n个小时群发,1:表示为不需要间隔24个小时群发
		if (m_System_DealHourFlag ==0)
		{
			i_CurrentSystemHour = m_dateTest.GetHour() + m_System_CurrentTimeAdd + i_Current_UseTime;
			if ( i_CurrentSystemHour >0)
			{
				if (i_CurrentSystemHour < m_System_CurrentSmsSendTime)
				{
					i_CurrentSystemHour = m_dateTest.GetHour() + m_System_CurrentTimeAdd + i_Current_UseTime+m_System_CurrentSmsSendTime;
				}
			}
		}
		else
		{
			i_CurrentSystemHour = m_dateTest.GetHour() + m_System_CurrentTimeAdd + i_Current_UseTime;
		}
		
		//4.4.系统数据入库时间(取MOD)
		i_SystemHour   = i_CurrentSystemHour % 24;
		if (m_System_DealHourFlag == 0)
		{
			if (i_SystemHour >0)
			{
				if (i_SystemHour < m_System_CurrentSmsSendTime)
				{
					i_SystemHour =+ m_System_CurrentSmsSendTime;
				}
			}
		}
		
		//4.5.系统数据入库日期(取整)
		i_SystemCurrnetDay = i_CurrentSystemHour/24;
		i_SystemDay = m_dateTest.GetDay()+i_SystemCurrnetDay;

		if (i_SystemDay >30)
		{
			i_SystemMonth = m_dateTest.GetMonth()+1;
		}
		else
		{
			i_SystemMonth = m_dateTest.GetMonth();
		}

		//4.6.入库日期时间格式
		m_currtime.Format("%04d-%02d-%02d %02d:%02d:%02d", m_dateTest.GetYear(),i_SystemMonth, \
							i_SystemDay, i_SystemHour, m_dateTest.GetMinute(),m_dateTest.GetSecond());			
		
		//4.7.COM口入库
		i_comport = i_Total_Time % m_comnumber;
		i_comport = i_comport_tmpstr + m_System_ComNumber;
		if ( i_comport > 10)
		{
			i_comport = i_comport % m_comnumber;
			i_comport =+m_System_ComNumber+1;
			i_comport_tmpstr=0;
		}
		m_comport.Format("COM%d",i_comport);

		//4.8.组装SQL语句
		//m_InsertSql.Format("insert into WaitToSendSmsTable(SmsTime,Name,PhoneNumber,SmsOperator,SmsConent,Status, \
		//					SmsDeport,FastSms) values ('%s','%s','%s','%s','%s','%s','%s','%s')", m_currtime,'abc')
		//单机版
		if (System_LocalRoute == 0)
		{
			m_InsertSql.Format("insert into WaitToSendSmsTable(SmsTime,PhoneNumber,SmsContent,Status) \
							values ('%s','%s','%s','%s')", \
							m_currtime,getbuf,m_smsconent.GetBuffer(m_smsconent.GetLength()),"0");
		}
	    //网络版
		else
		{
			m_InsertSql.Format("insert into WaitToSendSmsTable(SmsTime,SmsUser,PhoneNumber,SmsContent,UserDefineNo,NewFlag) \
							values ('%s','%s','%s','%s','%s','%s')", \
							m_currtime,m_SmsUser,getbuf,m_smsconent,m_SmsDefineNo,"0");
		}

		//4.10.开始事务处理
		g_ImportData.BeginTrans();
		//4.13.插入本地群发数据库
		g_ImportData.ExecuteSQL(m_InsertSql);
		//4.12.结束事务处理
		g_ImportData.CommitTrans();

	} //end while

	AfxMessageBox("导入数据文件到数据库完成!");
	 return;

}

⌨️ 快捷键说明

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