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

📄 editrouteinfodlg.cpp

📁 VC++6.0基于CAN协议的车辆控制
💻 CPP
字号:
// EditRouteInfoDlg.cpp : implementation file
//

#include "stdafx.h"
#include "PROJECTPMU.h"
#include "EditRouteInfoDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CEditRouteInfoDlg dialog


CEditRouteInfoDlg::CEditRouteInfoDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CEditRouteInfoDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CEditRouteInfoDlg)
	m_CurrentStationEn_Edit = _T("");
	m_CurrentStationCh_Edit = _T("");
	m_NextStationEn_Edit = _T("");
	m_NextStationCh_Edit = _T("");
	m_ArrivalTime_Edit = _T("");
	m_DepartTime_Edit = _T("");
	m_StayTime_Edit = _T("");
	m_DistanceNextStation_Edit = _T("");
	m_ETA_Edit = _T("");
	m_Announcement_Edit = _T("");
	m_TrainCode_Edit = _T("");
	//}}AFX_DATA_INIT
}


void CEditRouteInfoDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEditRouteInfoDlg)
	DDX_Text(pDX, IDC_EDIT1, m_CurrentStationEn_Edit);
	DDX_Text(pDX, IDC_EDIT2, m_CurrentStationCh_Edit);
	DDX_Text(pDX, IDC_EDIT3, m_NextStationEn_Edit);
	DDX_Text(pDX, IDC_EDIT4, m_NextStationCh_Edit);
	DDX_Text(pDX, IDC_EDIT5, m_ArrivalTime_Edit);
	DDX_Text(pDX, IDC_EDIT6, m_DepartTime_Edit);
	DDX_Text(pDX, IDC_EDIT7, m_StayTime_Edit);
	DDX_Text(pDX, IDC_EDIT8, m_DistanceNextStation_Edit);
	DDX_Text(pDX, IDC_EDIT9, m_ETA_Edit);
	DDX_Text(pDX, IDC_EDIT10, m_Announcement_Edit);
	DDX_Text(pDX, IDC_EDIT11, m_TrainCode_Edit);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CEditRouteInfoDlg, CDialog)
	//{{AFX_MSG_MAP(CEditRouteInfoDlg)
	ON_BN_CLICKED(IDC_SaveButton, OnSaveButton)
	//ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEditRouteInfoDlg message handlers

BOOL CEditRouteInfoDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	//得到应用程序所在文件夹路径
	CAdoRecordSet pRS;
    if(NULL != GetModuleFileName(NULL,mDir_Path,256))  
    {		
		int n=strlen(mDir_Path);
		for (int i=n; i>=0; i--)
		{
			if   (mDir_Path[i]   ==   '\\')   
			{   
				mDir_Path[i]   =   '\0';   
				break;   
			}   
		}
		strcpy(mMDB_Path,mDir_Path);
		strcat(mMDB_Path,"\\PIS.mdb"); // 数据库路径
	}
	//把需要修改的数据显示在文本框中
    m_TrainCode_Edit=TrainCode;
	m_CurrentStationEn_Edit=CurrentStationEn;
	m_CurrentStationCh_Edit=CurrentStationCh;
    m_NextStationEn_Edit=NextStationEn;
	m_NextStationCh_Edit=NextStationCh;
	m_ArrivalTime_Edit=ArrivalTime;
	m_DepartTime_Edit=DepartTime;
	m_StayTime_Edit=StayTime;
	m_DistanceNextStation_Edit=DistanceNextStation;
	m_ETA_Edit=ETA;
	m_Announcement_Edit=Announcement;
    UpdateData(FALSE);//显示出来
    m_str1=m_CurrentStationEn_Edit;
	m_str2=m_CurrentStationCh_Edit;
	m_str1.TrimRight();
	m_str2.TrimRight();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CEditRouteInfoDlg::OnSaveButton() 
{
	// TODO: Add your control notification handler code here
	/*CString sTrainCode="",sCurrentStationEn="",sCurrentStationCh="",sNextStationEn="",sNextStationCh="",\
		sArrivalTime="",sDepartTime="", sStayTime="",sDistanceNextStation="",sETA="",\
		sAnnouncement="",sqlupdate="",sqladd="";
	int nStayTime=0,nDistanceNextStation=0,nETA=0,nAnnouncement=0;*/
	//读取文本框中的数据并赋值给定义的字符串
	((CEdit *)GetDlgItem(IDC_EDIT11))->GetWindowText(sTrainCode);
	((CEdit *)GetDlgItem(IDC_EDIT1))->GetWindowText(sCurrentStationEn);
	AfxMessageBox(sCurrentStationEn);
	((CEdit *)GetDlgItem(IDC_EDIT2))->GetWindowText(sCurrentStationCh);
	((CEdit *)GetDlgItem(IDC_EDIT3))->GetWindowText(sNextStationEn);
	((CEdit *)GetDlgItem(IDC_EDIT4))->GetWindowText(sNextStationCh);
	((CEdit *)GetDlgItem(IDC_EDIT5))->GetWindowText(sArrivalTime);
	((CEdit *)GetDlgItem(IDC_EDIT6))->GetWindowText(sDepartTime);
	((CEdit *)GetDlgItem(IDC_EDIT7))->GetWindowText(sStayTime);
	nStayTime=atoi(sStayTime);  //字符串转整形
	((CEdit *)GetDlgItem(IDC_EDIT8))->GetWindowText(sDistanceNextStation);
	nDistanceNextStation=atoi(sDistanceNextStation);  //字符串转整形
	((CEdit *)GetDlgItem(IDC_EDIT9))->GetWindowText(sETA);
	nETA=atoi(sETA);  //字符串转整形
	((CEdit *)GetDlgItem(IDC_EDIT10))->GetWindowText(sAnnouncement);
	nAnnouncement=atoi(sAnnouncement);  //字符串转整形
	
	CString ArriHour,ArriMin,ArriSecond,Arrich1="",Arrich2="",DepHour,DepMin,DepSecond,\
		Depch1="",Depch2="";
	int nArriHour,nArriMin,nArriSecond,nDepHour,nDepMin,nDepSecond;
	int ArrivalTime_len=strlen(sArrivalTime);
	int sDepartTime_len=strlen(sDepartTime);
	if(ArrivalTime_len==8&&(sDepartTime_len==8))//判断时间输入长度是否等于8位
    { //读取时间的小时分钟妙
      ArriHour=sArrivalTime.Mid(0,2);
	  ArriMin=sArrivalTime.Mid(3,2);
      ArriSecond=sArrivalTime.Mid(6,2);
	  Arrich1=sArrivalTime.Mid(2,1);
	  Arrich2=sArrivalTime.Mid(5,1);
	  nArriHour=atoi(ArriHour);
	  nArriMin=atoi(ArriMin);
	  nArriSecond=atoi(ArriSecond);
	
	  DepHour=sDepartTime.Mid(0,2);
	  DepMin=sDepartTime.Mid(3,2);
      DepSecond=sDepartTime.Mid(6,2);
	  Depch1=sDepartTime.Mid(2,1);
	  Depch2=sDepartTime.Mid(5,1);
      nDepHour=atoi(DepHour);
	  nDepMin=atoi(DepMin);
	  nDepSecond=atoi(DepSecond);
	  if((nArriHour>=0)&&(nArriHour<=24)&&(nDepHour>=0)&&(nDepHour<=24)
		 &&(Arrich1==':')&&(Arrich2==':')&&(Depch1==':')&&(Depch2==':')
		 &&(nArriMin>=0)&&(nArriMin<=60)&&(nDepMin>=0)&&(nDepMin<=60)
	     &&(nArriSecond>=0)&&(nArriSecond<=60)&&(nDepSecond>=0)&&(nDepSecond<=60))
	
	  {
		  AddAlterData();
	  }//if输入小时分钟妙格式
	  else 				
		  AfxMessageBox("输入格式不正确,请重新输入");
	}
					
    else
		if((ArrivalTime_len==0)&&(sDepartTime_len==0))//输入的时间是空字符串
        {
			AddAlterData();
		}
		else 
			if((ArrivalTime_len==8)&&(sDepartTime_len==0))
			{
				ArriHour=sArrivalTime.Mid(0,2);
	            ArriMin=sArrivalTime.Mid(3,2);
                ArriSecond=sArrivalTime.Mid(6,2);
	            Arrich1=sArrivalTime.Mid(2,1);
	            Arrich2=sArrivalTime.Mid(5,1);
	            nArriHour=atoi(ArriHour);
	            nArriMin=atoi(ArriMin);
	            nArriSecond=atoi(ArriSecond);
				if((nArriHour>=0)&&(nArriHour<=24)&&(Arrich1==':')&&(Arrich2==':')
		          &&(nArriMin>=0)&&(nArriMin<=60)&&(nArriSecond>=0)&&(nArriSecond<=60))
				{
		          AddAlterData();
				}
	            else 				
		          AfxMessageBox("输入格式不正确,请重新输入");
			}	 
	         else 
			     if((ArrivalTime_len==0)&&(sDepartTime_len==8))
				 {
					 DepHour=sDepartTime.Mid(0,2);
	                 DepMin=sDepartTime.Mid(3,2);
                     DepSecond=sDepartTime.Mid(6,2);
	                 Depch1=sDepartTime.Mid(2,1);
	                 Depch2=sDepartTime.Mid(5,1);
                     nDepHour=atoi(DepHour);
	                 nDepMin=atoi(DepMin);
	                 nDepSecond=atoi(DepSecond);
				   if((nDepHour>=0)&&(nDepHour<=24)&&(Depch1==':')&&(Depch2==':')
		               &&(nDepMin>=0)&&(nDepMin<=60)&&(nDepSecond>=0)&&(nDepSecond<=60))
				   {
		             AddAlterData();
				   }
	               else 				
		             AfxMessageBox("输入格式不正确,请重新输入");
				 }
				 else 
					 AfxMessageBox("输入格式不正确,请重新输入");
	m_pConnection.Close();
	
}
 
void CEditRouteInfoDlg::AddAlterData()
{
    if (m_pConnection.ConnectAccess(mMDB_Path,"sri"))
	{ 
		    if(m_bADD)//添加数据
			{// 更新上一个站点的NextStationEn,NextStationCh内容
			CString SQLstr;
			SQLstr.Format("Update RouteInfo set NextStationEn='%s',NextStationCh='%s'\
				where TrainCode='%s' and (NextStationEn='' or NextStationEn is NULL)" \
				,sCurrentStationEn,sCurrentStationCh,sTrainCode);
			m_pConnection.Execute(SQLstr);
			 //添加一个站
			sqladd.Format("insert into RouteInfo(TrainCode,CurrentStationEn,CurrentStationCh,NextStationEn,\
				NextStationCh,ArrivalTime,DepartTime,StayTime,DistanceNextStation,ETA,\
				AnnouncementDistanceThreshold) values ('%s','%s','%s','%s','%s','%s','%s',%d,\
			    %d,%d,%d)",sTrainCode,sCurrentStationEn,sCurrentStationCh,sNextStationEn,\
			    sNextStationCh,sArrivalTime,sDepartTime,nStayTime,nDistanceNextStation,\
				nETA,nAnnouncement);			
		//	AfxMessageBox(sqladd);
	        m_pConnection.Execute(sqladd);
		//	AfxMessageBox("ok");
			}
		   else
		   {//修改数据
			  if((m_str1 != sCurrentStationEn)||(m_str2 != sCurrentStationCh))
			  {
				// 更新上一个站点的NextStationEn,NextStationCh内容
				CString SQLstr;
				SQLstr.Format("Update RouteInfo set NextStationEn='%s',NextStationCh='%s' \
					where TrainCode='%s' and NextStationEn='%s'and NextStationCh='%s' " \
					,sCurrentStationEn,sCurrentStationCh,sTrainCode,m_str1,m_str2);
				m_pConnection.Execute(SQLstr);
			  }
			//修改信息
			  sqlupdate.Format("update RouteInfo set CurrentStationEn='%s',CurrentStationCh='%s',\
					NextStationEn='%s',NextStationCh='%s',ArrivalTime='%s',DepartTime='%s',\
				    StayTime=%d,DistanceNextStation=%d,ETA=%d,AnnouncementDistanceThreshold=%d \
					where (TrainCode='%s') and (CurrentStationEn='%s') and (CurrentStationCh='%s')", sCurrentStationEn,\
					sCurrentStationCh,sNextStationEn,sNextStationCh,sArrivalTime,\
					sDepartTime,nStayTime,nDistanceNextStation,nETA,nAnnouncement,\
					sTrainCode,m_str1,m_str2);
		   //	  AfxMessageBox(sqlupdate);
			  m_pConnection.Execute(sqlupdate);
		   }
	}
    Sleep(500);//延时,等数据库更改后再执行下面语句
	CEditRouteInfoDlg::OnOK();//将修改后的数据保存到上一个窗体中的控件中

}

⌨️ 快捷键说明

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