基于给定的站点信息的自行车管理系统

佛山某大学,大一期末课程设计,老师给了一个芝加哥的公共自行车站点信息,要求我们根据这些站点信息做一个自行车管理系统,对于功能的最低要求是能够查询站点,能够在地图上显示站点,并能够在两个站点之间画出一条路径。

做此课程设计之前压根没碰过MFC,所以做此课程设计期间很难熬,做的功能也很简单,发这篇文章只是为了记录一下自己的学习过程,请各位大佬勿喷!!!

1.登录

功能设计:

程序首先设计了用户登录界面,用户只有输入正确的用户名和密码之后才能进入程序。

实现方案:

增加一个对话框并关联上一个类,在初始化时显示登录对话框。

2.UI设计本程序的UI设计如上图所示,本界面的UI设计不算困难,为了更直观,我用了两个Group Box控件,在两个控件里再放上其他控件用于显示站点的信息。在两个Group Box下面,计算起始站点和目标站点之间的距离。

 3.系统的查找功能方案设计及实现

功能设计:

考虑到部分用户只知道站点的ID而不知道站点名称,部分用户只知道站点名称而不知道站点ID,于是本程序提供了两种查找方式--按站点ID查找和按站点名称查找,用户可在站点ID下拉框里选择站点ID,也可以在站点名称下拉框里选择站点名称,无论按哪种方式查找,程序都会自动匹配站点的其他信息并显示在Group Box里。此外,当且仅当起始站点和目标站点都选定时,才会计算两站点之间的距离。对于“显示站点”按钮,程序运行时默认是没有显示站点的,用户单击了“显示站点”按钮,各站点会在地图上显示出来,同时,按钮的文字会变为“隐藏站点”。若用户再次单击“隐藏站点”按钮,各站点会在地图上消失,同时,按钮的文字会变为“显示站点”。

实现方案:

通过变量操作控件。程序首先给各个控件关联上变量。在用户通过下拉框选定站点时,通过控件的变量获取控件的索引值,通过索引值获取站点的各种信息并将信息显示在相应的位置。对于“显示站点按钮”,用户单击时,通过计算每个站点的经纬度位置,加上地图左上角和右下角的经纬度位置并结合地图的宽度和高度,可算出站点在地图上的坐标。用户单击“隐藏站点”按钮时,将所有站点一并擦除。

 

功能设计:

选定起始站点 和目标站点后,单击确定按钮,程序会自动再地图上画出一条路径,同时将两站点涂成实心红点,不管有没有显示站点程序都能够画出路径。通过不断单击确定按钮,可以在选定的起点之间画出多条不同的路径。当然,也可以在选定的站点之间画出若干条路径后,重新选择起始站点和目标站点(只改其中一个站点或者两个站点都改,效果一样),再点击确定按钮,程序会在重新选定的按钮之间画出路径,同样,也可以画多条路径。

实现方案:

用户单击确定按钮,程序通过控件的索引值获取站点的信息,得出站点在地图上的坐标,将其涂红,并通过随机数生成随机坐标,从而生成路径,每次单击确定按钮获得的随机数不同,所画出的路径就会不同。

4.部分源代码

//选择了起始站点ID,自动匹配起始站点名称,并显示该站点的总车位和可用车位,以及站点地址和状态
void C城市公共自行车运营可视化数据监控系统Dlg::OnCbnSelchangeCombo1()
{
	// TODO: 在此添加控件通知处理程序代码
	int index;
	index = m_startID.GetCurSel();
	m_startName.SetCurSel(index);

	//记下起始站点信息
	startStation = station[index];
	//计算两站点之间的距离,有两个点才能计算距离
	haveStartStation = true;
	if (haveEndStation == true)
		CalculateDistance();


	//站点地址和状态
	CString str3;
	CString str4;
	str3 = station[index].Address.c_str();
	str4 = station[index].Status.c_str();
	m_Address.SetWindowTextW(str3);
	m_Status.SetWindowTextW(str4);


	//站点总车位和可用车位
	CString str1;
	CString str2;
	str1 = station[index].TotalDocks.c_str();
	str2 = station[index].DocksInService.c_str();
	m_TotalDocks.SetWindowTextW(str1);
	m_DocksInService.SetWindowTextW(str2);
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值