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

📄 busrouteupdatedlg.cpp

📁 一个简单的公交查询管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	strcpy(bus_infor.Bus_Route, strRoute);

	//----添加信息
	rv = DB_BUS_INFOR_Insert(hstmt, bus_infor);
	if( rv != 0 )
	{
		AfxMessageBox("已存在此路线,请确认!");
		return;
	}
	else
	{
		AfxMessageBox("成功保存添加信息!");
	}//end if
	
	CString str;
	char temp[8];
	// 从新编号
	for(i=1; i<=m_list_all; i++)
	{
		memset(temp, 0, 8);
		itoa(i,temp,10);
        str = temp;
		if( m_list_all < 10 )
		{
			str = "00"+str;		
		}
		if( (10 <= m_list_all) && (m_list_all < 100) )
		{
			str = "0"+str;		
		}
		m_ListCtrl_Route.SetItemText(i-1,0,str);
	}
	// 列表显示
	
	m_list_all = m_list_all+1;	
	itoa(m_list_all,temp,10);
	str = temp;
	if( m_list_all < 10 )
	{
		str = "00"+str;		
	}
	if( (10 <= m_list_all) && (m_list_all < 100) )
	{
		str = "0"+str;		
	}
	
	Item.mask=LVIF_IMAGE|LVIF_TEXT;
	Item.pszText=str.GetBuffer(str.GetLength());
	m_ListCtrl_Route.InsertItem(&Item);
	//
	m_list_all = m_list_all-1;
	//
	itoa(bus_infor.Bus_Number,temp,10);
	str = temp;
	m_ListCtrl_Route.SetItemText(m_list_all,1,str);
	
	str = bus_infor.Bus_Type_Name;
	m_ListCtrl_Route.SetItemText(m_list_all,2,str);
	
	if( bus_infor.Bus_Ticket == 0 )
	{
		str = "有";
	}
	else
	{
		str = "无";
	}
	m_ListCtrl_Route.SetItemText(m_list_all,3,str);
	
	str = bus_infor.Bus_Route;
	m_ListCtrl_Route.SetItemText(m_list_all,4,str);
	
	
	str = bus_infor.Bus_Remark;
	m_ListCtrl_Route.SetItemText(m_list_all,5,str);
	
	//重新初始化窗口信息
	m_list_hanghao = -1;
	m_list_all = m_list_all+1;
    m_Int_BusNumber = 0;
	m_String_Remark = _T(" ");
	m_String_BusType = _T("");
	m_Button_Ticket.SetCheck(0);
	m_ListBox_Route.ResetContent();
	nRouteCount = 0;
	UpdateData(FALSE);
}

void CBusRouteUpdateDlg::OnRouteUpdateDelete() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if( m_list_hanghao < 0 )
	{
		AfxMessageBox("请先选定要删除信息!");
		return;
	}
    ///////
	if( MessageBox("删除此路线信息,将丢失关于此路线的信息,是否删除?","删除确认",MB_YESNO|MB_ICONQUESTION) != IDYES )
	{
		return;
	}
	
	// 获取删除条件
	int bus_number;
    char temp[10];
	memset(temp, 0, 10);
	strcpy(temp, m_ListCtrl_Route.GetItemText(m_list_hanghao,1));
	bus_number = atoi(temp);

	char bus_type_name[12];
	memset(bus_type_name, 0, 12);
    strcpy(bus_type_name, m_ListCtrl_Route.GetItemText(m_list_hanghao,2));

	// 删除路线信息信息
	int rv;
	rv = DB_BUS_INFOR_Delete(hstmt, bus_number, bus_type_name);
    if( rv != 0 )
	{
		AfxMessageBox("删除信息失败!");
		return;
	}
	else
	{
		AfxMessageBox("删除信息成功!");
	}//end if

	// 修改站点信息
	CString strRoute = m_ListCtrl_Route.GetItemText(m_list_hanghao,4);
    CBusRouteUpdateDlg::DeleteStationInfor(strRoute, bus_number);
	//重新初始化窗口信息
	CString str;
	m_ListCtrl_Route.DeleteItem(m_list_hanghao);
	for(int i=1; i<m_list_all; i++)
	{
		memset(temp, 0, 8);
		itoa(i,temp,10);
        str = temp;
		if( m_list_all < 10 )
		{
			str = "00"+str;		
		}
		if( (10 <= m_list_all) && (m_list_all < 100) )
		{
			str = "0"+str;		
		}
		m_ListCtrl_Route.SetItemText(i-1,0,str);
	}

	/////////////////////
	m_list_hanghao = -1;
	m_list_all = m_list_all-1;
    m_Int_BusNumber = 0;
	m_String_Remark = _T(" ");
	m_String_BusType = _T("");
	m_Button_Ticket.SetCheck(0);
	m_ListBox_Route.ResetContent();
	nRouteCount = 0;
	UpdateData(FALSE);
}

void CBusRouteUpdateDlg::OnRouteUpdateModify() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	//-----判断输入信息是否符合条件 

	if( (m_Int_BusNumber < 0) || (m_Int_BusNumber >= 128) )
	{
		AfxMessageBox("车次范围【0-128】!");
		return;
	}

	int num = m_ComboBox_BusType.GetCurSel();  
	if( num < 0 )
	{
		AfxMessageBox("请先选定路线类型!");
		return;
	}	

	if( nRouteCount <= 0)
	{
		AfxMessageBox("路线列表为空,你还未设置该线路的车行路线,不能存入!");
		return;
	}
	
	//---------修改信息---------// 
	// 获取修改参数
	CString str;
	char temp[8];
	int bus_number;
	str = m_ListCtrl_Route.GetItemText(m_list_hanghao,1);
	strcpy(temp, str);
	bus_number = atoi(temp);

	char bus_type_name[12];
	memset(bus_type_name, 0, 12);
    strcpy(bus_type_name, m_ListCtrl_Route.GetItemText(m_list_hanghao,2));
	//---赋值
	BUS_INFOR bus_infor;
	memset(&bus_infor, 0, sizeof(BUS_INFOR));

	strcpy(bus_infor.Bus_Type_Name, m_String_BusType);
	strcpy(bus_infor.Bus_Remark,    m_String_Remark);

	bus_infor.Bus_Number = m_Int_BusNumber;

	
	int nButtonSign = m_Button_Ticket.GetCheck();
	if( nButtonSign == 1 )
	{
		bus_infor.Bus_Ticket = 0;
	}
	else
	{
		bus_infor.Bus_Ticket = -1;
	}

	// 路线转化
	CString strRoute = "";
	int rv;
	for( int i=0; i<nRouteCount-1; i++ )
	{
		m_ListBox_Route.GetText(i, str);
		rv = UpdateStationInfor(str, bus_infor.Bus_Number, 1);    // 更新站点信息
		if(rv != 0)
		{
			return;
		}
		strRoute = strRoute+str+"->";
	}
	m_ListBox_Route.GetText(nRouteCount-1, str);
	rv = UpdateStationInfor(str, bus_infor.Bus_Number, 1);    // 更新站点信息
	if(rv != 0)
	{
		return;
	}
	strRoute = strRoute+str;
	strcpy(bus_infor.Bus_Route, strRoute);
	//----添加信息

	rv = DB_BUS_INFOR_Modify(hstmt, bus_infor, bus_number, bus_type_name);
	if( rv != 0 )
	{
		AfxMessageBox("已存在此路线,请确认!");
		return;
	}
	else
	{
		AfxMessageBox("成功保存更新信息!");
	}//end if

	//
	CString Route = m_ListCtrl_Route.GetItemText(m_list_hanghao,4);
    CBusRouteUpdateDlg::DeleteStationInfor(Route, bus_number);
	// 列表显示
    itoa(bus_infor.Bus_Number,temp,10);
	str = temp;
	m_ListCtrl_Route.SetItemText(m_list_hanghao,1,str);
	
	str = bus_infor.Bus_Type_Name;
	m_ListCtrl_Route.SetItemText(m_list_hanghao,2,str);
	
	if( bus_infor.Bus_Ticket == 0 )
	{
		str = "有";
	}
	else
	{
		str = "无";
	}
	m_ListCtrl_Route.SetItemText(m_list_hanghao,3,str);
	
	str = bus_infor.Bus_Route;
	m_ListCtrl_Route.SetItemText(m_list_hanghao,4,str);
	
	
	str = bus_infor.Bus_Remark;
	m_ListCtrl_Route.SetItemText(m_list_hanghao,5,str);
	
	//重新初始化窗口信息
	m_list_hanghao = -1;
    m_Int_BusNumber = 0;
	m_String_Remark = _T(" ");
	m_String_BusType = _T("");
	m_Button_Ticket.SetCheck(0);
	m_ListBox_Route.ResetContent();
	nRouteCount = 0;
	UpdateData(FALSE);
}

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////

void CBusRouteUpdateDlg::OnClickRouteUpdateList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	POINT pt;
	::GetCursorPos(&pt);
	ScreenToClient(&pt);
	*pResult = 0;
	
	//得到选定行号
	m_list_hanghao = m_ListCtrl_Route . GetNextItem ( -1, LVNI_SELECTED );
	
	//判断是否选中
	if( m_list_hanghao < 0 )
	{
		return;
	}
	
    //显示查询信息
	char temp[8];
	CString str;
	str  = m_ListCtrl_Route.GetItemText(m_list_hanghao,1);
	strcpy(temp, str);
	m_Int_BusNumber = atoi(temp);
	m_String_BusType = m_ListCtrl_Route.GetItemText(m_list_hanghao,2);
 	m_String_Remark  = m_ListCtrl_Route.GetItemText(m_list_hanghao,5);

	str = m_ListCtrl_Route.GetItemText(m_list_hanghao, 3);
	if( str == "有" )
	{
		m_Button_Ticket.SetCheck(1);
	}
	else
	{
		m_Button_Ticket.SetCheck(0);
	}
	//
	CString strRoute = m_ListCtrl_Route.GetItemText(m_list_hanghao,4);
	CBusRouteUpdateDlg::ShowRoute(strRoute);
	//////////////////////////////////////////
	m_listbox_route_hanghao   = -1;
	m_listbox_station_hanghao = -1;
	UpdateData(FALSE);
}



void CBusRouteUpdateDlg::OnSelchangeRouteUpdateListboxStation() 
{
	// TODO: Add your control notification handler code here
	m_listbox_station_hanghao = m_ListBox_Station.GetCurSel();
}

void CBusRouteUpdateDlg::OnSelchangeRouteUpdateListboxRoute() 
{
	// TODO: Add your control notification handler code here
	m_listbox_route_hanghao = m_ListBox_Route.GetCurSel();
}


// 显示路线的具体信息

void CBusRouteUpdateDlg::ShowRoute(CString strRoute)
{
	int nSign_1,nSign_2;	//  站点标记
	char route[500];        //  路线存储串
	char tempStation[24];       //  站点存储串
    CString str;
	
	memset(route, 0, 500);
	memset(tempStation, 0, 24);
	strcpy(route, strRoute);

	// 初始化列表
	m_ListBox_Route.ResetContent();
	nRouteCount = 0;

    // 显示路线信息
	nSign_1 = 0;
	nSign_2 = 0;
	int nRouteLen = strlen(route);
	if(nRouteLen < 1)
	{
		return;
	}

	for(int i=0; i<nRouteLen; i++)
	{
		
		if( route[i] == '-' )
		{
			// 提取
			nSign_2 = i;
			memset(tempStation, 0, 24);
			strncpy(tempStation, &route[nSign_1], nSign_2-nSign_1);
            nSign_1 = i+2;

			// 显示
			str = tempStation;
			m_ListBox_Route.AddString(str);
			nRouteCount++;
		}
	}
	
	memset(tempStation, 0, 24);
	strncpy(tempStation, &route[nSign_1], nRouteLen-nSign_1);
	// 显示
	str = tempStation;
	m_ListBox_Route.AddString(str);
	nRouteCount++;
}


int CBusRouteUpdateDlg::UpdateStationInfor(CString strStation, int busNumber, int sign)
{
	
	// 查信变量
	char station_name[24];
	memset(station_name, 0 ,24);
	strcpy(station_name, strStation);

	// 站点信息
	char bus_number[128];
	memset(bus_number, 0, 128);

	int rv;
	rv = DB_STATION_INFOR_Query_BusNumber(hstmt,station_name, bus_number);  // 读取原站点信息
	if( rv != 0)
	{
		AfxMessageBox("读取原站点信息错误!");
		return -1;
	}
	

	if( sign == 1 )
	{
		bus_number[busNumber-1] = '1';
	}
	else
	{
		bus_number[busNumber-1] = '0';

	}
	
 

	rv = DB_STATION_INFOR_Modify_BusNumber(hstmt, station_name, bus_number);  // 修改站点信息
	if( rv != 0)
	{
		AfxMessageBox("更新站点信息错误!");
		return -1;
	}
	
	return 0;
}

void CBusRouteUpdateDlg::DeleteStationInfor(CString strRoute, int busNumber)
{
	//--------读取线路中的站点
	int nSign_1,nSign_2;	//  站点标记
	char route[500];        //  路线存储串
	char tempStation[24];       //  站点存储串
    CString str;
	
	memset(route, 0, 500);
	memset(tempStation, 0, 24);
	strcpy(route, strRoute);
	
    // 分解站点信息
	nSign_1 = 0;
	nSign_2 = 0;
	int nRouteLen = strlen(route);
	if(nRouteLen < 1)
	{
		return;
	}
	
	for(int i=0; i<nRouteLen; i++)
	{
		
		if( route[i] == '-' )
		{
			// 提取
			nSign_2 = i;
			memset(tempStation, 0, 24);
			strncpy(tempStation, &route[nSign_1], nSign_2-nSign_1);
            nSign_1 = i+2;
			
			// 修改信息
			str = tempStation;
	    	CBusRouteUpdateDlg::UpdateStationInfor(str, busNumber, 0);
		}
	}
	
	memset(tempStation, 0, 24);
	strncpy(tempStation, &route[nSign_1], nRouteLen-nSign_1);
	// 修改信息
	str = tempStation;
    CBusRouteUpdateDlg::UpdateStationInfor(str, busNumber, 0);
}

⌨️ 快捷键说明

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