东南大学大二短学期MFC设计需求文档.docx
- 文档编号:7463708
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:16
- 大小:332.62KB
东南大学大二短学期MFC设计需求文档.docx
《东南大学大二短学期MFC设计需求文档.docx》由会员分享,可在线阅读,更多相关《东南大学大二短学期MFC设计需求文档.docx(16页珍藏版)》请在冰豆网上搜索。
东南大学大二短学期MFC设计需求文档
南京地铁查询系统
1、程序(系统)功能设计说明
乘车路线查询:
点击乘车路线查询按钮,会进入一个查询界面;根据提示选择起始站和终点站。
然后点击查询按钮,结果会以最短路线和最先换乘两种方式呈现给用户;同时显示所经站点数目和票价。
如不清楚路线,可点击查询路线图按钮。
扩展功能:
1.乘车指南:
可查询地铁时刻表,地铁票价计算方式和服务热线。
2.周边简介及公交查询:
可查询站点周边主要设施和公交线路。
二、系统模块框图
(图1)系统主模块
南京地铁查询系统
可查看线路图
输出
输入选择
周边简介及公交查询
路线查询
乘车指南
(
(图2)路线查询模块
起始站
终点站
运行程序判断处理
站数
票价
最小换乘
最短路线
需要换乘的站点
(图3)周边主要设施及公交查询模块
输入选择
站点
运行程序判断处理
周边主要设施
周边公交查询
(图4)乘车指南模块
点击选择
时刻表
热线
票价
判断输出
三、对象(类)和算法(函数设计)描述
1、路线查询类(Cluxian):
classCluxian:
publicCDialog
{
public:
Cluxian(CWnd*pParent=NULL);
CBitmapm_Back2;//位图图片
enum{IDD=IDD_DIALOG1};
CXPButtonm_o3;//XP风格按钮
CXPButtonm_o2;
CXPButtonm_o1;
CListBoxm_duan;//列表框
CListBoxm_xiao;
CComboBoxm_combox2;//组合框
CComboBoxm_Combox2;
CComboBoxm_Combox1;
CComboBoxm_combox1;
private:
CStringm_qishizhan;//起始站所在线路
CStringm_zhongdianzhan;//终点站所在线路
CStringm_Qishi;//起始站
CStringm_Zhongdian;//终点站
CStringm_piao;//票价
CStringm_shu;//站数
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//
protected:
afx_msgvoidOnButton1();
afx_msgvoidOnDropdownCombo4();
afx_msgvoidOnSelchangeCombo1();
afx_msgvoidOnSelchangeCombo2();
afx_msgvoidOnDropdownCombo3();
afx_msgvoidOnCha();//查询按钮响应函数
afx_msgvoidOnSelchangeCombo3();
afx_msgvoidOnSelchangeCombo4();
afx_msgHBRUSHOnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor);
//更新背景和字体颜色
afx_msgvoidOnButton3();
virtualBOOLOnInitDialog();//初始化函数
afx_msgBOOLOnEraseBkgnd(CDC*pDC);//设置背景
DECLARE_MESSAGE_MAP()
};
2、公交查询类(Cgongjiao):
classCgongjiao:
publicCDialog
{
//Construction
public:
Cgongjiao(CWnd*pParent=NULL);//standardconstructor
CBitmapm_Back4;
enum{IDD=IDD_DIALOG3};
CXPButtonm_lu2;//以下都是一些按钮,编辑框等控件变量
CXPButtonm_lu1;
CListBoxm_jian;
CListBoxm_list;
CEditm_edit2;
CComboBoxm_combox1;
CComboBoxm_Combox1;
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
private:
CStringm_zhandian;//查询站点所在线路
CStringm_mingzi;//站点名称
afx_msgvoidOnButton2();//查询响应函数
afx_msgvoidOnSelchangeCombo1();
afx_msgvoidOnDropdownCombo2();
afx_msgvoidOnButton1();
afx_msgvoidOnSelchangeCombo2();
afx_msgHBRUSHOnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor);
virtualBOOLOnInitDialog();
afx_msgBOOLOnEraseBkgnd(CDC*pDC);
DECLARE_MESSAGE_MAP()
};
3、乘车指南查询类(Czhinan)
classCzhinan:
publicCDialog
{
//Construction
public:
Czhinan(CWnd*pParent=NULL);//standardconstructor
CBitmapm_Back;
enum{IDD=IDD_DIALOG2};
CXPButtonm_an5;
CXPButtonm_an4;
CXPButtonm_an3;
CXPButtonm_an2;
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);
afx_msgvoidOnButton4();//以下按钮分别响应时刻表、热线、票价
afx_msgvoidOnButton2();
afx_msgvoidOnButton3();
afx_msgvoidOnButton5();
afx_msgHBRUSHOnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor);
virtualBOOLOnInitDialog();
afx_msgBOOLOnEraseBkgnd(CDC*pDC);
DECLARE_MESSAGE_MAP()
};
(1)<路线查询>模块
1)变量
CStringm_qishizhan,m_zhongdianzhan;//起始站、终点站所在线路
CStringm_Qishi,m_Zhongdian;//起始站、终点站名称
CStringm_piao;//票价
intm_shu;//站数
2)函数
voidCluxian:
:
OnCha(){//路线查询
inta,b,c,d,i,k=0;//a,b表示起始站在数组中为s[a][b]
//c,d表示终点站在数组中为s[c][d]
//k用于统计站数
if(m_Qishi=="迈皋桥"){
//先获取组合框选择信息并与数组链接
}
CStrings[3][30]={{"天隆寺站"…"中国药科大学站"},{"迈皋桥"…"奥体中心"},{"经天路站"…"油坊桥站"}};
//建立字符串二维数组CStrings[3][30],一号线南延线的站点放在s[0][]中,一号线放在s[1][],二号线放在s[2][];
//由于新街口和元通同时在一,二号线,要做一下转换
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){
//安德门站(s[1][11])作为分界点,当终点站为安德门以北的站点(包括安德门)时,不需要换乘;}
else{
//当终点站为其他站点时,就需要在安德门站换乘开往奥体中心的列车。
}
}
if(a==1&&c==0){
//情况3,1号线——南延线,这种情况与第二种情况类似,同样以安德门站(s[1][11])为分界点,
if(b<=11){
//当起点站为安德门以北的站点(包括安德门)时,不需要换乘;
}
else{
//当起点站为其他站点时,就需要在安德门站换乘开往中国药科大学的列车。
}
}
if(a==1&&c==2){
//情况4,1号线——2号线,这种请况相对复杂,需要多次分类讨论。
if(b<=7){
//当起点站为一号线上,新街口(s[1][7]或s[2][15])站北边的站点(不包括新街口站)时。
if(d<=15){
//如果终点站是2号线上,新街口站东边的站点(不包括新街口站),就需要在新街口站换乘2号线;
}
if(d>15&&d<=23){
//如果终点站为2号线上,新街口站和元通站(s[1][14]或s[2][23])之间的站点(不包括新街口站和元通站)也需要在新街口站换乘2号线;
}
if(d>23){
//如果终点站为2号线上,元通站南边的站点(不包括元通站),需要在元通站换乘2号线
}
}
if(b>7&&b<=14){
//当起点站为一号线上,新街口站和元通站之间的站点(不包括新街口站和元通站)时
if(d<=15){
//如果终点站是2号线上,新街口站东边的站点(不包括新街口站),就需要在新街口站换乘2号线;
}
if(d>15&&d<=23){
//如果终点站为2号线上,新街口站和元通站之间的站点(不包括新街口站和元通站)就需要判断是在元通站换乘还是在新街口站换乘所经过的路线最短;
}
if(d>23){
//如果终点站为2号线上,元通站南边的站点(不包括元通站),需要在元通站站换乘2号线
}
}
if(b>14){
//起点站为一号线上,元通站南边的站点(不包括元通站)时
if(d<=15){
//如果终点站是2号线上,新街口站东边的站点(不包括新街口站),就需要在新街口站换乘2号线
}
if(d>15&&d<=23){
//如果终点站为2号线上,新街口站和元通站之间的站点(不包括新街口站和元通站),就需要在元通站换乘2号线
}
if(d>23){
//如果终点站为2号线上,元通站南边的站点(不包括元通站),需要在元通站换乘2号线
}
}
}
if(a==2&&c==1){
//情况5,2号线——1号线,这种情况与第四种情况类似,在此就不再赘述
}
if(a==0&&c==2){
//情况6,南延线——2号线
if(d<=15){
//当终点站为二号线上,新街口站东边的站点(不包括新街口站)时,需要在新街口站换乘2号线
}
if(d>15&&d<=23){//出现最小换乘问题
//当终点站为二号线上,新街口站和元通站之间的站点(不包括新街口站和元通站)时,需要判断是在新街口站换乘还是在元通站换乘,如果在新街口站换乘,只需要换乘1次;如果在元通站换乘,就需要换乘2次;此时就会出现最短路线和最小换乘的区别
}
if(d>23){
//当终点站为二号线上,元通站南边的站点(不包括元通站)时,最短路线需要换乘2次,分别在元通站和安德门站换乘;最小换乘只需换乘一次,在新街口站换乘
}
}
if(a==2&&c==0){//情况7,2号线——南延线
//同样,这种情况与第六种情况类似,在此不再赘述
}
if(k<=8)m_piao='2';//计算票价
elseif(k>=13)m_piao='4';
elsem_piao='3';
m_shu=k;//统计站数
}
(2)<公交查询>模块
1)变量
CStringm_zhandian;//站点所在线路
CStringm_mingzi;//站点名称
2)函数
voidCgongjiao:
:
OnButton1()//站点公交及周边设施查询
{
判断站点名称,输出相应的周边设施和公交信息即可
}
(3)<乘车指南>模块
1)变量
无。
2)函数
//以下实现按钮消息并创建相应对话框
voidCzhinan:
:
OnButton2()//查询时刻表按钮
{
Cshikeke;
ke.DoModal();
}
voidCzhinan:
:
OnButton3()//查询票价按钮
{
Cpiaojiajia;
jia.DoModal();
}
voidCzhinan:
:
OnButton5()//查询热线按钮
{
Crexianre;
re.DoModal();
}
4、程序源代码清单(已打包)
5、可提供的测试数据
一.普通情况
起始站/终点站
迈皋桥/三山街
油坊桥/奥体中心
鼓楼/百家湖
途经站点
迈皋桥
油坊桥
鼓楼
红山动物园
雨润大街
珠江路
南京火车站
元通
新街口
新模范马路
奥体中心
张府园
玄武门
三山街
鼓楼
安德门
珠江路
天隆寺
新街口
软件大道
张府园
花神庙
三山街
高铁南京南站
双龙大道
河定桥
胜太路
百家湖
站点数目
10
4
15
票价
3
2
4
换乘
0
1
0
2.存在最短路线与最小换乘情况
如从二号线集庆门大桥到一号线南延线百家湖;
最短路线
集庆门大桥
兴隆大街站
奥体东街站
元通
中胜
小行
安德门
天隆寺
软件大道
换乘2次,15个站
花神庙
高铁南京南站
双龙大道
河定桥
胜太路
百家湖
最小换乘
集庆门大桥
云锦路
莫愁湖
汉中门
上海路
新街口
张府园
三山街
中华门
换乘1次,18个站
安德门
天隆寺
软件大道
花神庙
高铁南京南站
双龙大道
河定桥
胜太路
百家湖
3、公交查询
可用各个站点遍历测试。
6、程序运行和调试记录与分析
1、数据1,2,3,所经站点正确,站点数目对应的票价正确,是否换乘正确。
证明程序正确。
2、最短线路与最小换乘也正确。
3、显示正确。
7、使用说明
重要提示:
程序请在Win7系统下打开运行!
1.点击“乘车路线查询”
2.选择起点站和终点站
3.在主界面点击“乘车指南”按钮
4.在主界面点击“周边简介及公交查询”按钮
操作指南:
1.在对话框2中可以查询地铁线路,输入起点站和终点站,点击查询;可以点查看路线图来获取路线图。
2.在对话框3中可以查询票价计算方式,地铁时刻表和服务热线。
3.在对话框4中可以查询地铁站点周边信息,选择站点,点“查询”。
友情提示:
退出当前界面请点击“退出”。
八、参考文献:
1、VisualC++程序设计实践教程(第二版)中国铁道出版社柴欣史巧硕著
2、VisualC++程序设计与应用教程清华大学出版社马石安魏文平著
3、VisualC++面向对象程序设计教程武汉大学出版社郑军红主编
4、新手学VisualC++30例人民邮电出版社古槿著
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东南大学 大二 学期 MFC 设计 需求 文档