C++_市内公交车管理系统—课程设计论文.doc_第1页
C++_市内公交车管理系统—课程设计论文.doc_第2页
C++_市内公交车管理系统—课程设计论文.doc_第3页
C++_市内公交车管理系统—课程设计论文.doc_第4页
C++_市内公交车管理系统—课程设计论文.doc_第5页
免费预览已结束,剩余12页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

xxxx大 学 课 程 设 计 说 明 书(论 文) 目 录第1章 课程设计目的与要求11.1 设计目的11.2实验环境11.3预备知识11.4设计要求1第2章 课程设计内容22.1 课题描述22.2 系统设计22.2.1功能分析22.2.2面向对象设计32.2.3类成员描述62.3程序实现82.3.1源码分析82.3.2运行结果14第3章 课程设计总结15参考文献16第1章 课程设计目的与要求1.1 设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程c+语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。(3)利用所学知识,开发小型应用系统,掌握运用c+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。(5)掌握面向对象程序设计的方法。(6)熟练掌握c+语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序和修改程序。1.2实验环境硬件要求能运行windows 操作系统的微机系统。c+语言应用程序开发软件使用:vc+ 系统,或其他c+语言应用程序开发软件。1.3预备知识熟悉c+语言程序设计的基本知识及vc+编辑器的使用方法。1.4设计要求1.仔细分析设计题目,画出程序流程图,编写程序源代码。2.积极上机调试源程序,增强编程技巧与调程能力。3.认真书写课程设计预习报告,课程设计说明书。4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。第2章 课程设计内容2.1 课题描述这是一个市内公交车管理系统,目标是市内公交车管理系统功能,以满足顾客的需求,而且使用起来也很容易。除了基本的公交车查询功能以及公交车必备功能以外,还提供了对公交车信息进行修改,以给用户提供最大余地的选择空间,方便客户了解并能快速查找公交车相关信息。公交信息包括车辆信息与路线信息。根据已知的的路线信息,要输出该路线所经过的所有站点信息;.根据输入的站点信息,输出经过该站点的所有公交路线信息;对于用户来说,任意输入两个站台,可以得出两站台之间的所有可实现到达的路线选择,即乘多少路在那个站点转乘另外一路。2.2 系统设计2.2.1功能分析随着科学技术不断发展的今天,公交车管理系统具有较大的社会现实意义,因为公交车管理管理系统具有车辆信息和统计管理等功能我的题目是:市内公交车管理系统,根据我与老师交流所了解的情况及在图书馆、网络等查找的。操作可见性操作可见性分为以下几种:公有:除了类本身以外,操作对其他模型元素也是可视的。 保护:操作只对类本身、它的子类或友元(取决于语言)是可视的。 私有:操作只对类本身和类的友元是可视的。 公有可见性应该尽量少使用,只有当另一个类需要该操作时才使用这种可见性。保护可见性是默认的可见性;它保护操作使其不被外部类使用,防止行为的耦合和封装变得松散。私有可见性可以用在您不希望子类继承操作的情况下。它提供了从超类对子类去耦的方法,并且减少了删除或排除未使用继承操作的需要。2.2.2面向对象设计类操作:操作几乎总是表示对象行为。操作也可以表示类的行为,这时的操作是类操作。在 uml 中可以通过归类方法对操作建模。下面阐述一下对bus的uml类图的实现:bus- in_data:int- use_data:int- bus_judge:int# bus_no6:char# bus_type:char+ bus_total: int+ bus()+ bus()+ set_in(in int):void+ set_use(use int):void+ *get_bus_no():char+ get_bus_type():char+ get_bus_in():int+ get_bus_use():int+ print_bus():void+ add_bus():void+ delete_bus(*bbus bus):void+ check_bus(busno char):void图2.1bus的uml图bus_line- busno6:char- linename4:char+ bus_line():void+ bus_line():void+ set_bus_line(busno char, linename char):void+ *get_busno():char + *get_linename():char+ print_busline():void+ set_busno(bn char):void+set_linename(bna char):void图2.2bus-line的uml图driver# driver_no3:char# driver_name8:char# driver_sex3:char# driver_phone:int# driver_age:int# driver_judge:int+ driver()+ driver()+set_no(driverno3 char):void+set_name(drivername8char):void+set_sex(driversex3 char):void+ set_age(driverage int):void+ set_phone(driverphone int):void+ *get_driver_no():char+ *get_driver_name():char+ *get_driver_sex():char+ get_driver_age():int+ get_driver_phone():int+ print_driver():void+ add_driver():void+ dele_driver() :void+ find_driver():void图2.3 driver的uml图counter- busno6:char- lineno4:char- student:int- monthperson:int- commonperson:int- totalperson:int- stumoney:float- monmoney:float- commoney:float- totalmoney:float- totaltimes:int+counter (bn char, ln char,int,int, int):void+ counter():void+ set_busno(bn char):void+ set_lineno(ln char):void+ *get_busno():char+ *get_lineno:char+ set_student(x int):void+ set_monthperson(x int):void+ set_commonperson(x int):void+ set_totalperson(x int):void+ set_totpay(x float):void+ stupay():float+ monpay():float+ compay():float+ get_totalperson():int+ get_student():int+ get_monthperson():int+ get_commonperson():int+ get_totpay():float+ set_totaltimes(int):void+ get_totaltimes():int+ print_count():void图2.4 counter的uml图point- point_name10:char+ point()+ point()+ *get_point_name():char+ set_point_name(pname char):void图2.5 point的uml图bus_person- personnum3:char- busnum6:char+ bus_person():void+ bus_person():void+set_bus_person(pernum char, busname char):void+ *get_personnum():char+ *get_busnum():char+ print_bus_person():void + set_personnum(pn char) + name_c():void+ set_busnum(bn char):void图2.6 bus_person的uml图line- line_name4:char- *points:point:- point_num:int- max_point:int- sign:int+ line()+ line()+ *get_line_name():char+set_point_number(pn int):void+ dele_point_number():void+ get_point_number():int+ get_sign():int图2.7 line的uml图2.2.3类成员描述类的成员包括数据成员和函数成员,它们分别描述了问题的属性和行为,是不可分割的两个方面。这次课程设计我们设计了公交车管理类bus、线路管理类line(其中包含了point站点类)、人员管理类driver、车线管理类bus_line、人车管理类bus_person、统计类count。其中,我以实现公交车管理类(bus -基类)进行简述,与其他类的设计基本相同:类的成员函数描述的是类的行为,这里包括bus,bus line,counter,driver,bus_person,line,point。成员函数是程序算法的实现部分,是对封装的数据进行操作的方法。c+中static类数据成员是指类static成员函数 和 类static数据成员两种。使用类的static成员的优点:1 static成员的名字是在类的作用域中,因此可以避免与其他类的成员或者全局对象名字的冲突;2可以实施封装。static成员可以是私有成员,而全局对象不可见;3通过阅读程序容易看出来static成员与特定类关联的。static成员的定义:static成员遵循正常的共有/私有访问规则,不过都可以通过 classname:成员进行访问,不论成员是私有还是共有。使用类的static成员:通过classname:成员;通过class对象.成员;通过class对象引用.成员;通过class对象指针-成员;不论是static成员函数还是static数据成员都可以这样使用。开始输入站点判断输入站点是否合理输出公交线路y输出提示信息结束 图2.8公交站点查询流程图2.3程序实现2.3.1源码分析在本系统的设计中,将主要实现以下功能:公交车管理功能、线路管理功能、人员管理功能、车线管理功能、人车管理、统计功能。其中,前5项都可实现调入文件操作、显示基本信息、添加基本信息、查找基本信息、修改基本信息、返回开始界面,可以说功能比较强大,内容信息完善,不仅为客户提供了极大的方便,而且同时管理员使用更为方便,管理更加清晰,提高了系统的使用效率。/ markup.h: interface for the cmarkup class./ markup release 6.3/ copyright (c) 1999-2002 first objective software, inc. all rights reserved/ go to for the latest cmarkup and edom documentation/ use in commercial applications requires written permission/ this software is provided as is, with no warranty.#if !defined(afx_markup_h_948a2705_9e68_11d2_a0bf_00105a27c570_included_)#define afx_markup_h_948a2705_9e68_11d2_a0bf_00105a27c570_included_#if _msc_ver 1000#pragma once#endif / _msc_ver 1000#include #ifdef _debug#define _ds(i) (i?&(lpctstr)m_csdoc)m_aposi.nstartl:0)#define markup_setdebugstate m_pmainds=_ds(m_ipos); m_pchildds=_ds(m_iposchild)#else#define markup_setdebugstate#endifclass cmarkup public:cmarkup() setdoc( null ); ;cmarkup( lpctstr szdoc ) setdoc( szdoc ); ;cmarkup( const cmarkup& markup ) *this = markup; ;void operator=( const cmarkup& markup );virtual cmarkup() ;/ navigatebool load( lpctstr szfilename );bool setdoc( lpctstr szdoc );bool iswellformed();bool findelem( lpctstr szname=null );bool findchildelem( lpctstr szname=null );bool intoelem();bool outofelem();void resetchildpos() x_setpos(m_iposparent,m_ipos,0); ;void resetmainpos() x_setpos(m_iposparent,0,0); ;void resetpos() x_setpos(0,0,0); ;cstring gettagname() const;cstring getchildtagname() const return x_gettagname(m_iposchild); ;cstring getdata() const return x_getdata(m_ipos); ;cstring getchilddata() const return x_getdata(m_iposchild); ;cstring getattr( lpctstr szattr ) const return x_getattr(m_ipos,szattr); ;cstring getchildattr( lpctstr szattr ) const return x_getattr(m_iposchild,szattr); ;cstring getattrname( int n ) const;bool savepos( lpctstr szposname=_t() );bool getoffsets( int& nstart, int& nend ) const;cstring geterror() const return m_cserror; ;enum markupnodetypemnt_element= 1, / 0x01mnt_text= 2, / 0x02mnt_whitespace= 4, / 0x04mnt_cdata_section= 8, / 0x08mnt_processing_instructio= 16, / 0x10mnt_comment= 32, / 0x20mnt_document_type= 64, / 0x40mnt_exclude_whitespace= 123,/ 0x7b;/ createbool save( lpctstr szfilename );cstring getdoc() const return m_csdoc; ;bool addelem( lpctstr szname, lpctstr szdata=null ) return x_addelem(szname,szdata,false,false); ;bool insertelem( lpctstr szname, lpctstr szdata=null ) return x_addelem(szname,szdata,true,false); ;bool addchildelem( lpctstr szname, lpctstr szdata=null ) return x_addelem(szname,szdata,false,true); ;bool insertchildelem( lpctstr szname, lpctstr szdata=null ) return x_addelem(szname,szdata,true,true); ;bool addattr( lpctstr szattr, lpctstr szvalue ) return x_setattr(m_ipos,szattr,szvalue); ;bool addchildattr( lpctstr szattr, lpctstr szvalue ) return x_setattr(m_iposchild,szattr,szvalue); ;bool addattr( lpctstr szattr, int nvalue ) return x_setattr(m_ipos,szattr,nvalue); ;bool addchildattr( lpctstr szattr, int nvalue ) return x_setattr(m_iposchild,szattr,nvalue); ;bool addchildsubdoc( lpctstr szsubdoc ) return x_addsubdoc(szsubdoc,false,true); ;bool insertchildsubdoc( lpctstr szsubdoc ) return x_addsubdoc(szsubdoc,true,true); ;cstring getchildsubdoc() const;/ modifybool removeelem();bool removechildelem();bool setattr( lpctstr szattr, lpctstr szvalue ) return x_setattr(m_ipos,szattr,szvalue); ;bool setchildattr( lpctstr szattr, lpctstr szvalue ) return x_setattr(m_iposchild,szattr,szvalue); ;bool setattr( lpctstr szattr, int nvalue ) return x_setattr(m_ipos,szattr,nvalue); ;bool setchildattr( lpctstr szattr, int nvalue ) return x_setattr(m_iposchild,szattr,nvalue); ;bool setdata( lpctstr szdata, int ncdata=0 ) return x_setdata(m_ipos,szdata,ncdata); ;bool setchilddata( lpctstr szdata, int ncdata=0 ) return x_setdata(m_iposchild,szdata,ncdata); ;protected:#ifdef _debuglpctstr m_pmainds;lpctstr m_pchildds;#endifcstring m_csdoc;cstring m_cserror;struct elemposelempos() clear(); ;elempos( const elempos& pos ) *this = pos; ;bool isemptyelement() const return (nstartr = nendl + 1); ;void clear()nstartl=0; nstartr=0; nendl=0; nendr=0; nreserved=0;ielemparent=0; ielemchild=0; ielemnext=0;void adjuststart( int n ) nstartl+=n; nstartr+=n; ;void adjustend( int n ) nendl+=n; nendr+=n; ;int nstartl;int nstartr;int nendlint nendr;int nreserved;int ielemparent;int ielemchild;int ielemnext;carray m_apos;int m_iposparent;int m_ipos;int m_iposchild;int m_iposfree;int m_nnodetype;struct tokenpostokenpos( lpctstr sz ) clear(); szdoc = sz; ;bool isvalid() const return (nl = nr); ;void clear() nl=0; nr=-1; nnext=0; bisstring=false; ;bool match( lpctstr szname )int nlen = nr - nl + 1;/ to ignore case, define markup_ignorecase#ifdef markup_ignorecasereturn ( (_tcsncicmp( &szdocnl, szname, nlen ) = 0)#elsereturn ( (_tcsnccmp( &szdocnl, szname, nlen ) = 0)#endif& ( sznamenlen = _t(0) | _tcschr(_t( =/),sznamenlen) ) );int nl;int nr;int nnext;lpctstr szdoc;bool bisstring;struct savedposint iposparent;int ipos;int iposchild;cmap m_mapsavedpos;void x_setpos( int iposparent, int ipos, int iposchild )m_iposparent = iposparent;m_ipos = ipos;m_iposchild = iposchild;m_nnodetype = ipos?mnt_element:0;markup_setdebugstate;int x_getfreepos();int x_releasepos();int x_parseelem( int ipos );int x_parseerror( lpctstr szerror, lpctstr szname = null );static bool x_findchar( lpctstr szdoc, int& nchar, _tchar c );static bool x_findtoken( tokenpos& token );cstring x_gettoken( const tokenpos& token ) const;int x_findelem( int iposparent, int ipos, lpctstr szpath );cstring x_gettagname( int ipos ) const;cstring x_getdata( int ipos ) const;cstring x_getattr( int ipos, lpctstr szattr ) const;bool x_addelem( lpctstr szname, lpctstr szvalue, bool binsert, bool baddchild bool x_addsubdoc( lpctstr szsubdoc, bool binsert, bool baddchild );bool x_findattr( tokenpos& token, lpctstr szattr=null ) const;bool x_setattr( int ipos, lpctstr szattr, lpctstr szvalue );bool x_setattr( int ipos, lpctstr szattr, int nvalue );bool x_createnode( cstring& csnode, int nnodetype, lpctstr sztext );void x_locatenew( int iposparent, int& iposrel, int& noffset, int nlength, int nflags );int x_parsenode( tokenpos& token );bool x_setdata( int ipos, lpctstr szdata, int ncdata );int x_removeelem( int ipos );void x_docchange( int nleft, int nreplace, const cstring& csinsert );void x_posinsert( int ipos, int ninsertlength );void x_adjust( int ipos,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论