目录1,系统分析1.1需求分析………………………………………………()2,系统设计2.1系统目标………………………………………………()2.2系统功能结构………………………………………()3,系统预览3.1主界面……………………………………………………()3.2一,系统分析1,需求分析信息技术的发展给公交车查询系统带来了全新的变革,采用公交车管理系统对公交车企业的服务进行更为全面的管理与查询,不仅可以满足客户群体的乘车需要,还可以满足企业人士对公交车信息进行不断的更新与调整,适应现代化的信息时代,让企业能够在激烈的竞争中占据一席之地。二,系统设计1,系统目标本系统采用的是MFC界面,可以更好的实现人机交互的目的。信息人员可以在系统中录入每辆公交的基本信息以及它所经过的所有站点,录入之后,可以根据变动进行修改,客户也可以在本系统中进行查询(包括公交车的车次,发车时间,收车时间,开车间隔,全程时间以及它所经过的站点),还可以对乘车方案进行设计,在有条件的情况下可以进行联网查询公交路线,实现真正上的自动化。2,系统功能结构二,系统预览1,主界面公交车管理系统公交车基本信息管理站点基本信息管理设计系统联网查询公交路线退出系统公交车基本信息录入公交车基本信息修改公交车基本信息查询站点信息录入站点信息修改站点信息查询方案设计界面上各菜单功能:公交车基本信息管理:可以进行公交车基本信息录入,修改与查询站点信息管理:可以进行公交车站点信息录入,修改与查询设计系统:设计您的行车方案退出系统:退出应用程序联网查询南昌公交路线:进入网页查询南昌公交路线2,单击菜单“公交车基本信息管理”进入“公交车基本信息录入”界面当车次编辑栏为空或收发时间大于收车时间或间隔时间为0或全程时间为0时弹出MessageBox当录入成功时,所有编辑框自动初始化为“0”;当录入的时大于23或录入的分大于59时弹出警告。当录入文件中已有的车次时,弹出3,单击菜单“公交车基本信息管理”进入“公交车基本信息修改”界面在进行信息修改时,当录入文件中不存在的车次时,弹出如果文件中存在要修改的车次则提示“修改成功!”5,单击菜单“公交车基本信息管理”进入“公交车基本信息查询”界面信息查询界面只有车次是可输入选项,其它编辑框控件属性都为“只读”,在输入的车次中,如果文件中保存的信息不存在,则显示MessageBox(“无此车次!”);如果存在,则6,单击菜单“站点基本信息管理”进入“录入”界面站点录入至少在四站或以上否则显示警告Box。录入完之后,系统首先在文件中搜索是否已存在该车次,如果已经存在则显示警告Box,如果不存在则录入成功。7,单击菜单“站点基本信息管理”进入“修改”与“查询”界面为了更好的进行修改与查询,让客户更好的“修改”与“查询”,这两个菜单对应得函数单击事件内容为:ShellExecute(NULL,open,f:\\站点基本信息.txt,NULL,NULL,SW_SHOW);调用外部应用程序进行查看8,单击“系统设计”----〉“方案设计”,进入界面输入起点与终点后点击“确定”按钮编辑框弹出行车方案,如果需要转车的话,系统先在文件中搜索经过起点的车次,再搜索经过终点的车次,找出两车次所共同的站点,然后输出转车方案。9,点击“退出系统”进入界面:,单击确定退出系统。10,联网查询公交路线根据程序内部代码可以在互联网上进行南昌公交线路搜索。四,系统运行环境1,系统开发平台:MicrosoftVisualC++2,系统开发语言:C++3,运行平台:WindowXP/Window2000/及以上版本五,函数及调试分析在程序中使用了很多以前没有用到的知识点,例如:UpdateData(TRUE)、MessageBox()、CStdioFile类、ReadString()WriteString()、Find()、ShellExecute()、Format()、Draw(pDC,0,CPoint(0,0),ILD_TRANSPARENT)等内容,WriteString()函数可以把整个字符串放到文件里。由于在文件方面采用了CStdioFile类,因此在读取文件时可以方便的以行为单位进行读取并进行一行行的分析,例如在方案设计时的代码:voidDesign::OnFsok(){UpdateData(TRUE);CStringstr,temp,strtemp;intflg=0,flag=0,flag1=0,flag2=0;//intpose1=0,pose2=0;if(m_Psheend==||m_Pshesta==){MessageBox(请输入完整!,提示);}CStdioFilefile;file.Open(f:\\站点基本信息.txt,CFile::modeReadWrite|CFile::typeText);//只读if(!file)MessageBox(打开文件错误,提示!,MB_OK);else{while(file.ReadString(temp)){if(temp.Find(m_Pshesta)!=-1&&temp.Find(m_Psheend)!=-1)//&&m_Psheend!=&&m_Pshesta!=可以加上去{str=您可以乘坐+temp.Left(3)+车次,从+m_Pshesta+到+m_Psheend;}else{if(temp.Find(m_Pshesta)!=-1&&temp.Find(m_Psheend)==-1){str=您可以乘坐+temp.Left(3)+车次;flag1=1;}if(temp.Find(m_Psheend)!=-1&&temp.Find(m_Pshesta)==-1){str+=再乘坐+temp.Left(3)+车次(您需要转车……);flag2=1;}}}}m_Presult=str;/*if(flag1==0)MessageBox(不存在该起点!,提示!);*/if(flag2==0)MessageBox(不存在该终点!,提示!);file.Close();UpdateData(FALSE);}以上经过几次的循环,可以很方便的找出行车方案。经过以上的分析,我们可以很快的将一些系统函数的用法熟悉并运用在程序中。六,测试结果可以正常运行附录:1,主界面对话框类buslDlg#includestdafx.h#includebusl.h#includebuslDlg.h#includeBuswr.h#includeModifybus.h#includeBussearch.h#includeSitewr.h#includeDmsite.h#includeDlsite.h#includeDesign.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CAboutDlgdialogusedforAppAboutclassCAboutDlg:publicCDialog{public:CAboutDlg();//DialogData//{{AFX_DATA(CAboutDlg)enum{IDD=IDD_ABOUTBOX};//}}AFX_DATA//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport//}}AFX_VIRTUAL//Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}voidCAboutDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)//{{AFX_MSG_MAP(CAboutDlg)//Nomessagehandlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CBuslDlgdialogCBuslDlg::CBuslDlg(CWnd*pParent/*=NULL*/):CDialog(CBuslDlg::IDD,pParent){//{{AFX_DATA_INIT(CBuslDlg)//NOTE:theClassWizardwilladdmemberinitializationhere//}}AFX_DATA_INIT//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32m_hIcon=AfxGetApp()-LoadIcon(IDR_MAINFRAME);}voidCBuslDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CBuslDlg)//NOTE:theClassWizardwilladdDDXandDDVcallshere//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CBuslDlg,CDialog)//{{AFX_MSG_MAP(CBuslDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_COMMAND(ID_BUSWR,OnBuswr)ON_COMMAND(ID_BUSMO,OnBusmo)ON_COMMAND(ID_BUSLO,OnBuslo)ON_COMMAND(ID_DLO,OnDlo)ON_COMMAND(ID_DMO,OnDmo)ON_COMMAND(ID_DWR,OnDwr)ON_COMMAND(ID_FSHE,OnFshe)ON_COMMAND(ID_EXIT,OnExit)ON_COMMAND(ID_INTERNET,OnInternet)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CBuslDlgmessagehandlersBOOLCBuslDlg::OnInitDialog(){CDialog::OnInitDialog();//AddAbout...menuitemtosystemmenu.//IDM_ABOUTBOXmustbeinthesystemcommandrange.ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX0xF000);CMenu*pSysMenu=GetSystemMenu(FALSE);if(pSysMenu!=NULL){CStringstrAboutMenu;strAboutMenu.Load