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

📄 querydlg.cpp

📁 话费语音查询及点歌软件.C++ 语言编写的.一款很有意思的小软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		if(m_strRecDTMF[ChannelNo]=="2")// dialed code query
		{
			m_strDuty[ChannelNo]="2";
			m_strRecDTMF[ChannelNo].Empty();
			channelstatus[ChannelNo].step++;
			m_djcard.PlayFile(ChannelNo,"costtype.voc");
			break;
		}

		if(m_strRecDTMF[ChannelNo]=="3")//change password
		{
			m_strDuty[ChannelNo]="3";
			m_strRecDTMF[ChannelNo].Empty();
			channelstatus[ChannelNo].step++;
			m_djcard.PlayFile(ChannelNo,"newpassword.voc");
			break;
		}
		if(m_strRecDTMF[ChannelNo]=="4")//record duty
		{
			m_strDuty[ChannelNo]="4";//this will make record possible;
			m_strRecDTMF[ChannelNo].Empty();
			channelstatus[ChannelNo].step++;
			m_djcard.PlayFile(ChannelNo,"record.voc");
			
			break;
		}
		if(m_strRecDTMF[ChannelNo]=="*")//play songs
		{
			m_strDuty[ChannelNo]="*";
			m_strRecDTMF[ChannelNo].Empty();
			channelstatus[ChannelNo].step++;
			m_djcard.PlayFile(ChannelNo,"order.voc");
			break;
		}
	case 4 :
		if(m_strDuty[ChannelNo]=="1"||m_strDuty[ChannelNo]=="2"||m_strDuty[ChannelNo]=="*9*")//;
		{
			this->costtype[ChannelNo]=this->m_strRecDTMF[ChannelNo];
			m_strRecDTMF[ChannelNo].Empty();
			channelstatus[ChannelNo].step++;
			m_djcard.PlayFile(ChannelNo,"startdate.voc");
			break;
		}
		if(m_strDuty[ChannelNo]=="3")//new password;
		{
			for (j;j<=m_iCallerNumber;j++)
			{
				if(callerinfoofch[ChannelNo].m_callerid==callerinfo[j].m_callerid)
				{
					callerinfo[j].m_password=m_strRecDTMF[ChannelNo];
					if(UpdateCallerInfo(callerinfo[j].m_callerid,callerinfo[j].m_password))
					{
						callerinfo[j].m_password=m_strRecDTMF[ChannelNo];
						m_djcard.PlayFile(ChannelNo,"success.voc");
					}
					else
						m_djcard.PlayFile(ChannelNo,"falt.voc");
						
					break;
				}
			}			
		}
		if(m_strDuty[ChannelNo]=="4")//;recording files
		{
//			this->strFileName[ChannelNo]="c:\\voc\\recordfiles\\track"+this->m_strRecDTMF[ChannelNo];
//			strorder+=".voc";
			m_strRecDTMF[ChannelNo].Empty();
//			channelstatus[ChannelNo].step++;
			//do not step up for you can chose another song
//			m_dmfax.PlayFile(ChannelNo,strorder);
			break;
		}	
		if(m_strDuty[ChannelNo]=="*")// play songs
		{
			CString strorder="track"+this->m_strRecDTMF[ChannelNo];
			strorder+=".voc";
			m_strRecDTMF[ChannelNo].Empty();
//			channelstatus[ChannelNo].step++;
			//do not step up for you can chose another song
			m_djcard.PlayFile(ChannelNo,strorder);
			break;
		}
		break;
	case 5 :
			if(m_strRecDTMF[ChannelNo].GetLength()!=6)
				this->ResetChannel(ChannelNo);
			this->startdate[ChannelNo]=this->m_strRecDTMF[ChannelNo];
			m_strRecDTMF[ChannelNo].Empty();
			channelstatus[ChannelNo].step++;
			m_djcard.PlayFile(ChannelNo,"enddate.voc");
			break;
	case 6:
			if(m_strRecDTMF[ChannelNo].GetLength()!=6)
				this->ResetChannel(ChannelNo);
		
			this->enddate[ChannelNo]=this->m_strRecDTMF[ChannelNo];
			m_strRecDTMF[ChannelNo].Empty();
			channelstatus[ChannelNo].step++;
	
			m_djcard.StopPlay(ChannelNo);
			m_djcard.ResetIndexPlay(ChannelNo);
			m_djcard.AddIndexPlay(ChannelNo,"wait.voc");
			if(m_strDuty[ChannelNo]=="1")
			{
				CString str=this->QueryCost(callerinfoofch[ChannelNo].m_callerid,startdate[ChannelNo],enddate[ChannelNo],costtype[ChannelNo],ChannelNo,1);
				this->PlayANumber(ChannelNo,str);
				m_djcard.AddIndexPlay(ChannelNo,"yuan.voc");
			}
			if(m_strDuty[ChannelNo]=="2")
				QueryCost(callerinfoofch[ChannelNo].m_callerid,startdate[ChannelNo],enddate[ChannelNo],costtype[ChannelNo],ChannelNo,2);
			if(m_strDuty[ChannelNo]=="*9*")
				QueryCost(callerinfoofch[ChannelNo].m_callerid,startdate[ChannelNo],enddate[ChannelNo],costtype[ChannelNo],ChannelNo,2);
			m_djcard.AddIndexPlay(ChannelNo,"hookon.voc");
				
			m_djcard.StartIndexPlay(ChannelNo);
			this->m_bIsIndexPlaying[ChannelNo]=TRUE;
			break;
	case 7:
		m_djcard.ResetChannel(ChannelNo);
		break;
	default :
		break;

	}
	
}

//DEL void CQueryDlg::OnOnRingDmfax1(short ChannelNo, LPCTSTR CallerID, short CallerIDCount) 
//DEL {
//DEL 	// TODO: Add your control notification handler code here
//DEL 	m_dmfax.SetChProCtrl(ChannelNo,1);
//DEL 	channelstatus[ChannelNo].used=1;
//DEL 	channelstatus[ChannelNo].step=1;
//DEL 	m_dmfax.PlayFile(ChannelNo,"c:\\voc\\inputcaller.voc");
//DEL //	Sleep(12300);
//DEL 
//DEL }

BOOL CQueryDlg::UpdateCallerInfo(CString callerid, CString password)
{
	try
	{
		CDatabase database;
		if(!database.Open("TDS"))
			return FALSE;
		database.ExecuteSQL("update 电话查询 SET 密码='"+ password+"' where 分机号='"+callerid+"'");
		database.Close();
	}
	catch(...)
	{
		
	};
	return TRUE;
}

BOOL CQueryDlg::ResetChannel(short chan)
{
	callerinfoofch[chan].m_callerid.Empty();
	callerinfoofch[chan].m_password.Empty();
	channelstatus[chan].step=0;
	channelstatus[chan].used=0;
	m_strRecDTMF[chan].Empty();
	m_strDuty[chan].Empty();
	startdate[chan].Empty();
	enddate[chan].Empty();
	costtype[chan].Empty();
	m_djcard.ResetChannel(chan);
	return TRUE;
	//UpdateData(FALSE);
}

BOOL CQueryDlg::ScreenStatus()
{
	for(int i=0;i<8;i++)//CHANGE STATUS SHOW ON FORM
	{
		if(channelstatus[i].used==0)
		{
			switch(i)
			{case 0: 
				this->m_strStatus0="空闲";
				break;
			case 1:
				this->m_strStatus1="空闲";
				break;
			case 2:
				this->m_strStatus2="空闲";
				break;
			case 3:
				this->m_strStatus3="空闲";
				break;
			case 4:
				this->m_strStatus4="空闲";
				break;
			case 5:
				this->m_strStatus5="空闲";
				break;
			case 6:
				this->m_strStatus6="空闲";
				break;
			case 7:
				this->m_strStatus7="空闲";
				break;
			default:
				break;}
		}
		else
		{
			switch(i)
			{case 0: 
				this->m_strStatus0="占用";
				break;
			case 1:
				this->m_strStatus1="占用";
				break;
			case 2:
				this->m_strStatus2="占用";
				break;
			case 3:
				this->m_strStatus3="占用";
				break;
			case 4:
				this->m_strStatus4="占用";
				break;
			case 5:
				this->m_strStatus5="占用";
				break;
			case 6:
				this->m_strStatus6="占用";
				break;
			case 7:
				this->m_strStatus7="占用";
				break;
			default:
				break;}
		}
	}
	this->UpdateData(FALSE);
	return TRUE;
}

void CQueryDlg::OnDestroy() 
{
	this->m_djcard.ReleaseCard();

	CDialog::OnDestroy();

	// TODO: Add your message handler code here
	
}

CString CQueryDlg::QueryCost(CString Caller, CString startdt, CString enddt, CString costype, int chan,int duty)
{
	try
	{
		CDatabase db1;
		
		db1.OpenEx(strConnection);
		CCallCostSet set;
		set.m_pDatabase=&db1;
			CString strdel=	"主叫号='"+Caller+"' and 日期>='"+startdt+"' and 日期<='"+enddt+"' ";
		if(costype!="4")
			strdel+=" and 统计类型="+costype;
		if(this->m_strDuty[chan]=="*9*")
		{
			strdel="delete * from 话费表 WHERE "+strdel;
			CDatabase db;
			db.Open(_T("TDS"),FALSE,FALSE,_T("ODBC;"),TRUE);
			db.ExecuteSQL(strdel);
			db.Close();
			return "0.00";
		}
		else
			set.m_strFilter=strdel;

		if(!set.Open(AFX_DB_USE_DEFAULT_TYPE,"SELECT * FROM 话费表"))
		{
			MessageBox("Open cost table falt!");
			return "error";
		}
		float fcost=0;
		if(set.GetRecordCount()==0)
			return "0.00";
		set.MoveFirst();
		while(!set.IsEOF())
		{
			if(duty==1)
				fcost+=set.m_column10+set.m_column8+set.m_column9;
			if(duty==2)
			{
				this->PlayANumber(chan,set.m_column2);
				m_djcard.AddIndexPlay(chan,"nextline.voc");
			}
			set.MoveNext();
		}
		set.Close();
		if(fcost<0)
			return "0.00";
		return this->FloatToString(fcost);

	}
	catch(...)
	{MessageBox("error!");}
	return "error";
}

void CQueryDlg::PlayANumber(short ch,CString Number)
{
	int a=Number.GetLength();
	CString sa="e:\\leiyong\\query\\";
	CString sb=".voc";
	for(int i=0;i<a;i++)
	{
		if(Number.GetAt(i)<='9'&&Number.GetAt(i)>='0')
		{
			m_djcard.AddIndexPlay(ch,sa+Number.GetAt(i)+sb);
		}
		else
		{
			if(Number.GetAt(i)=='.')
				m_djcard.AddIndexPlay(ch,sa+"dot.voc");

			if(Number.GetAt(i)=='*')
				m_djcard.AddIndexPlay(ch,sa+"xing.voc");
			if(Number.GetAt(i)=='#')
				m_djcard.AddIndexPlay(ch,sa+"jing.voc");
		}
	}
	return;
}

CString CQueryDlg::FloatToString(float fv)
{
		int aa,bb;
		
		CString strOut=(CString)::_fcvt(fv,2,&aa,&bb);
			if(fv<1)
			{
				if(fv<0.1)
					if(fv<0.01)
						strOut="0.00";
					else
						strOut.Insert(aa,"0.0");
				else
					strOut.Insert(aa,"0.");
			}
			else
				strOut.Insert(aa,".");
	return strOut;	
	
}


void CQueryDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	if(nIDEvent==2345)//
	{
		this->m_djcard.ChechState();
		for(int i=0;i<8;i++)
		{
			if(dtmfchar[i].recieve)
			{
				this->OnOnReceiveDTMFDmfax1(i,dtmfchar[i].dtmf);	
			}

			if(channelstatus[i].used==1&&m_bIsIndexPlaying[i])
			{
				if(m_djcard.CheckIndexPlay(i))
				{	
					m_djcard.StopIndexPlay(i);
					this->m_bIsIndexPlaying[i]=FALSE;
				}
			}

		}
		this->ScreenStatus();
	}
	CDialog::OnTimer(nIDEvent);
}

⌨️ 快捷键说明

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