1、东南大学大二短学期MFC设计需求文档 南京地铁查询系统1、程序(系统)功能设计说明乘车路线查询: 点击乘车路线查询按钮,会进入一个查询界面;根据提示选择起始站和终点站。然后点击查询按钮,结果会以最短路线和最先换乘两种方式呈现给用户;同时显示所经站点数目和票价。如不清楚路线,可点击查询路线图按钮。扩展功能: 1.乘车指南:可查询地铁时刻表,地铁票价计算方式和服务热线。 2.周边简介及公交查询:可查询站点周边主要设施和公交线路。二、系统模块框图 (图1)系统主模块 南京地铁查询系统 可查看线路图输出输入选择周边简介及公交查询路线查询乘车指南( (图2)路线查询模块 起始站终点站 运行程序判断处理站
2、数票价最小换乘最短路线需要换乘的站点 (图3)周边主要设施及公交查询模块输入选择站点运行程序判断处理周边主要设施周边公交查询 (图4)乘车指南模块点击选择时刻表热线票价判断输出三、对象(类)和算法(函数设计)描述1、路线查询类(Cluxian):class Cluxian : public CDialogpublic: Cluxian(CWnd* pParent = NULL); CBitmap m_Back2; /位图图片 enum IDD = IDD_DIALOG1 ; CXPButton m_o3; /XP风格按钮 CXPButton m_o2; CXPButton m_o1; CLis
3、tBox m_duan; /列表框 CListBox m_xiao; CComboBox m_combox2; /组合框 CComboBox m_Combox2; CComboBox m_Combox1; CComboBox m_combox1;private : CString m_qishizhan; /起始站所在线路 CString m_zhongdianzhan; /终点站所在线路 CString m_Qishi; /起始站 CString m_Zhongdian; /终点站 CString m_piao; /票价 CString m_shu; /站数 protected: virtu
4、al void DoDataExchange(CDataExchange* pDX); / protected: afx_msg void OnButton1(); afx_msg void OnDropdownCombo4(); afx_msg void OnSelchangeCombo1(); afx_msg void OnSelchangeCombo2(); afx_msg void OnDropdownCombo3(); afx_msg void OnCha(); /查询按钮响应函数 afx_msg void OnSelchangeCombo3(); afx_msg void OnSe
5、lchangeCombo4(); afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); /更新背景和字体颜色 afx_msg void OnButton3(); virtual BOOL OnInitDialog(); /初始化函数 afx_msg BOOL OnEraseBkgnd(CDC* pDC); /设置背景 DECLARE_MESSAGE_MAP();2、公交查询类(Cgongjiao):class Cgongjiao : public CDialog/ Constructionpublic: Cgongji
6、ao(CWnd* pParent = NULL); / standard constructor CBitmap m_Back4; enum IDD = IDD_DIALOG3 ; CXPButton m_lu2; /以下都是一些按钮,编辑框等控件变量 CXPButton m_lu1; CListBox m_jian; CListBox m_list; CEdit m_edit2; CComboBox m_combox1; CComboBox m_Combox1; protected: virtual void DoDataExchange(CDataExchange* pDX); / DDX
7、/DDV supportprivate: CString m_zhandian; /查询站点所在线路 CString m_mingzi; /站点名称 afx_msg void OnButton2(); /查询响应函数 afx_msg void OnSelchangeCombo1(); afx_msg void OnDropdownCombo2(); afx_msg void OnButton1(); afx_msg void OnSelchangeCombo2(); afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
8、 virtual BOOL OnInitDialog(); afx_msg BOOL OnEraseBkgnd(CDC* pDC); DECLARE_MESSAGE_MAP();3、乘车指南查询类(Czhinan)class Czhinan : public CDialog/ Constructionpublic: Czhinan(CWnd* pParent = NULL); / standard constructor CBitmap m_Back; enum IDD = IDD_DIALOG2 ; CXPButton m_an5; CXPButton m_an4; CXPButton m_
9、an3; CXPButton m_an2;protected: virtual void DoDataExchange(CDataExchange* pDX); afx_msg void OnButton4(); /以下按钮分别响应时刻表、热线、票价 afx_msg void OnButton2(); afx_msg void OnButton3(); afx_msg void OnButton5(); afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); virtual BOOL OnInitDialog(); af
10、x_msg BOOL OnEraseBkgnd(CDC* pDC); DECLARE_MESSAGE_MAP();(1)模块 1)变量 CString m_qishizhan,m_zhongdianzhan;/起始站、终点站所在线路 CString m_Qishi,m_Zhongdian;/起始站、终点站名称 CString m_piao; /票价 int m_shu; /站数 2)函数 void Cluxian:OnCha() /路线查询 int a,b,c,d,i,k=0; /a,b表示起始站在数组中为sab /c,d表示终点站在数组中为scd /k用于统计站数 if(m_Qishi=迈皋
11、桥) /先获取组合框选择信息并与数组链接 CString s330=天隆寺站中国药科大学站,迈皋桥奥体中心 , 经天路站油坊桥站; /建立字符串二维数组CString s330,一号线南延线的站点放在s0 中,一号线放在s1 ,二号线放在s2 ; /由于新街口和元通同时在一,二号线,要做一下转换 if(a=2&c=1&d=7) if(a=2&c=1&d=14) if(a=1&b=7&c=2) if(a=1&b=14&c=2) /以下分七种情况讨论路线if(a=c) /情况1,在同一条线上,不需要换乘 if(a=0&c=1) /情况2,南延线1号线 if(d=11) / 安德门站 (s111)
12、作为分界点,当终点站为安德门以北的站点(包括安德门)时,不需要换乘; else / 当终点站为其他站点时,就需要在安德门站换乘开往奥体中心的列车。 if(a=1&c=0) /情况3,1号线南延线,这种情况与第二种情况类似,同样以安德门站 (s111) 为分界点, if(b=11) /当起点站为安德门以北的站点(包括安德门)时,不需要换乘; else/当起点站为其他站点时,就需要在安德门站换乘开往中国药科大学的列车。 if(a=1&c=2) /情况4,1号线2号线,这种请况相对复杂,需要多次分类讨论。 if(b=7) /当起点站为一号线上,新街口 (s17或s215) 站北边的站点(不包括新街口
13、站)时。 if(d15&d23) /如果终点站为2号线上,元通站南边的站点(不包括元通站),需要在元通站换乘2号线 if(b7&b=14) /当起点站为一号线上,新街口站和元通站之间的站点(不包括新街口站和元通站)时 if(d15&d23) /如果终点站为2号线上,元通站南边的站点(不包括元通站),需要在元通站站换乘2号线 if(b14) /起点站为一号线上,元通站南边的站点(不包括元通站)时 if(d15&d23) /如果终点站为2号线上,元通站南边的站点(不包括元通站),需要在元通站换乘2号线 if(a=2&c=1) /情况5,2号线1号线,这种情况与第四种情况类似,在此就不再赘述 if(
14、a=0&c=2) /情况6,南延线2号线 if(d15&d23) /当终点站为二号线上,元通站南边的站点(不包括元通站)时,最短路线需要换乘2次,分别在元通站和安德门站换乘;最小换乘只需换乘一次,在新街口站换乘 if(a=2&c=0) /情况7,2号线南延线 /同样,这种情况与第六种情况类似,在此不再赘述 if(k=13)m_piao=4; else m_piao=3; m_shu=k; /统计站数(2)模块 1)变量 CString m_zhandian; /站点所在线路 CString m_mingzi; /站点名称 2)函数 void Cgongjiao:OnButton1() /站点公
15、交及周边设施查询 判断站点名称 ,输出相应的周边设施和公交信息即可 (3)模块 1)变量 无。 2)函数/以下实现按钮消息并创建相应对话框void Czhinan:OnButton2() /查询时刻表按钮 Cshike ke; ke.DoModal(); void Czhinan:OnButton3() /查询票价按钮 Cpiaojia jia; jia.DoModal(); void Czhinan:OnButton5() /查询热线按钮 Crexian re; re.DoModal(); 4、程序源代码清单(已打包)5、可提供的测试数据一普通情况起始站/终点站迈皋桥/三山街油坊桥/奥体中心
16、鼓楼/百家湖途经站点迈皋桥油坊桥鼓楼红山动物园雨润大街珠江路南京火车站元通新街口新模范马路奥体中心张府园玄武门三山街鼓楼安德门珠江路天隆寺新街口软件大道张府园花神庙三山街高铁南京南站双龙大道河定桥胜太路百家湖站点数目10415票价324换乘0102存在最短路线与最小换乘情况如从二号线集庆门大桥到一号线南延线百家湖;最短路线集庆门大桥兴隆大街站奥体东街站元通中胜小行安德门天隆寺软件大道换乘2次,15个站花神庙高铁南京南站双龙大道河定桥胜太路百家湖最小换乘集庆门大桥云锦路莫愁湖汉中门上海路新街口张府园三山街中华门换乘1次,18个站安德门天隆寺软件大道花神庙高铁南京南站双龙大道河定桥胜太路百家湖3、
17、公交查询 可用各个站点遍历测试。6、程序运行和调试记录与分析1、数据1,2,3,所经站点正确,站点数目对应的票价正确,是否换乘正确。证明程序正确。2、最短线路与最小换乘也正确。3、显示正确。7、使用说明重要提示:程序请在Win7系统下打开运行!1.点击“乘车路线查询” 2.选择起点站和终点站3.在主界面点击“乘车指南”按钮 4.在主界面点击“周边简介及公交查询”按钮 操作指南: 1.在对话框2中可以查询地铁线路,输入起点站和终点站,点击查询;可以点查看路线图来获取路线图。 2.在对话框3中可以查询票价计算方式,地铁时刻表和服务热线。 3.在对话框4中可以查询地铁站点周边信息,选择站点,点“查询”。友情提示: 退出当前界面请点击“退出”。八、参考文献:1、Visual C+ 程序设计实践教程(第二版) 中国铁道出版社 柴欣 史巧硕著2、Visual C+ 程序设计与应用教程 清华大学出版社 马石安 魏文平著3、Visual C+ 面向对象程序设计教程 武汉大学出版社 郑军红主编4、新手学Visual C+ 30例 人民邮电出版社 古槿著
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1