数据结构课程设计之飞机订票系统_第1页
数据结构课程设计之飞机订票系统_第2页
数据结构课程设计之飞机订票系统_第3页
数据结构课程设计之飞机订票系统_第4页
数据结构课程设计之飞机订票系统_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

青岛理工大学数据结构课程设计报告题目飞机订票系统院系学生姓名班级学号起迄日期指导教师20102011年度第2学期指导教师评语成绩签名年月日一、需求分析1问题描述设计一个模拟飞机订票系统通过此系统可以录入、查询、修改航班情况完成用户订票和退票功能并且可以保存客户和航班的资料。2基本功能1录入航班信息。没个航班的信息包括航班号起飞、抵达城市座位总数剩余座位数。数据由使用者输入。数据存储在TXT文件中采用线性表的链式结构。2加载航班和客户信息。可以自动加载保存在TXT文件中的航班和客户的信息。3查询航班。可以通过输入航班号查询该航班的所有信息。可以通过输入起飞抵达的城市查询航班的信息。4订票。客户的信息包括姓名证件号所订票的航班号座号。用户输入要订票的航班号如果该航班未满则订票成功并记录客户的信息。如果该航班已满则订票失败输出所有未满的航班信息供用户选择。5退票。删除退票用户的订票信息相应的航班的剩余票数增加1。6修改航班信息。用户输入要修改的航班号和要修改的内容修改该航班的相应信息。7保存操作。把当前的航班信息和用户信息分别保存在TXT文件中。8输出所有客户信息。按一定的格式输出用户的姓名证件号码航班号座号。9输出所有航班信息。按一定的格式输出所有的航班的航班号起飞抵达城市座位总数剩余座位数。0退出系统。3输入输出在控制台下根据提示输入要完成功能的标号然后在提示下选择性的输入航班号、起飞抵达地、证件号码或者姓名等。系统会根据用户的输入输出相应的航班信息或者用户信息。二、概要设计1设计思路对于航班和用户分别定义不同的数据结构并且采用线性表的链式结构进行存储。然后根据要完成的功能分模块用函数实现。所用到的算法主要有链表的创建增加遍历插入删除。2数据结构设计采用的逻辑结构是线性结构。存储结构是链式结构。/航线结构体。TYPEDEFSTRUCTAIRLINECHARLINE_NUM10/航班号CHARSTART_PLACE20/起飞地CHAREND_PLACE20/目的地INTTOTAL/座位总数INTLEFT/剩余座位STRUCTAIRLINENEXT/下一个结点AIRLINE/航线结构体的头结点。TYPEDEFSTRUCTAIRLINEHEADINTCOUNTAIRLINENEXTAIRLINEHEAD/客户结构体TYPEDEFSTRUCTCLIENTCHARNAME20/顾客名CHARID10/顾客证件号CHARLINE_NUM10/航班号INTSEAT_NUM/座位号STRUCTCLIENTNEXT/下一个结点CLIENT/客户结构体的头结点。TYPEDEFSTRUCTCLIENTHEADINTCOUNTCLIENTNEXTCLIENTHEAD采用线性链表的原因1航班情况和客户信息与均成线性与线性表的结构相符合。2由于本系统对数据的插入和删除较频繁所以更适合链式存储结构。3软件结构设计/对航班的操作/AIRLINEHEADIMPORTINTNAIRLINEHEADPHEADLINE/录入航班函数N为所要录入航班的数量AIRLINEQUERYAIRLINEHEADPHEAD/查询航班情况VOIDDISPLAY_LINEAIRLINENODE/打印一个航班结点的所有信息到屏幕VOIDDISPLAY_ALL_LINEAIRLINEHEADHEADLINE/打印所有航班的信息到屏幕INTCHANGE_LINEAIRLINEHEADHEADLINE/修改航班信息。VOIDDISPLAY_LEFT_AIRLINEAIRLINEHEADHEADLINE/输出未售完票的航班的信息/对客户的操作/VOIDDISPLAY_CLIENTCLIENTNODENULL/打印一个客户节点的信息到屏幕。VOIDDISPLAY_ALL_CLIENTCLIENTHEADHEADCLIENT/打印所有客户信息到屏幕。INTBOOKTICKETAIRLINEHEADHEADLINECLIENTHEADHEADCLIENT/订票INTRETURNTICKETAIRLINEHEADHEADLINECLIENTHEADHEADCLIENT/退票。/对文件的操作/INTSAVEMESSAGEAIRLINEHEADHEADLINECLIENTHEADHEADCLIENT/保存航班和客户的信息到相应的TXT文件中。INTLOADMESSAGEAIRLINEHEADHEADLINECLIENTHEADHEADCLIENT/加载保存在文件中的信息。模块之间的关系框图主函数MAIN录入航班信息IMPORT加载航班信息LOADMESSAGE查询航线信息QUERY客户订票BOOKTICKET客户退票RETURNTICKET保存操作SABEMESSAGE输出所有航班信息DISPLAY_ALL_LINE输出所有客户信息DISPLAY_ALL_CLIENT三、详细设计1定义程序中所有用到的数据及其数据结构及其基本操作的实现/航线结构体。TYPEDEFSTRUCTAIRLINECHARLINE_NUM10/航班号CHARSTART_PLACE20/起飞地CHAREND_PLACE20/目的地INTTOTAL/座位总数INTLEFT/剩余座位STRUCTAIRLINENEXT/下一个结点AIRLINE/航线结构体的头结点。TYPEDEFSTRUCTAIRLINEHEADINTCOUNTAIRLINENEXTAIRLINEHEAD/客户结构体TYPEDEFSTRUCTCLIENTCHARNAME20/顾客名CHARID10/顾客证件号CHARLINE_NUM10/航班号INTSEAT_NUM/座位号STRUCTCLIENTNEXT/下一个结点CLIENT/客户结构体的头结点。TYPEDEFSTRUCTCLIENTHEADINTCOUNTCLIENTNEXTCLIENTHEAD2主函数和其他函数的算法/主函数/VOIDMAINAIRLINEHEADHEADLINENEWAIRLINEHEADHEADLINEGTCOUNT0HEADLINEGTNEXTNULLCLIENTHEADHEADCLIENTNEWCLIENTHEADHEADCLIENTGTCOUNT0HEADCLIENTGTNEXTNULLWHILE1MAIN_MENUINTNCOUTLTLTQUOT请选择您老人家要进行的操作QUOTCINGTGTNCOUTLTLTENDLSWITCHNCASE1INTNUMCOUTLTLTQUOT请选择您老人家要录入的航班的数目QUOTCINGTGTNUMCOUTLTLTENDLIMPORTNUMHEADLINECOUTLTLTENDL/DISPLAY_ALL_LINEHEADLINECOUTLTLTQUOT航班信息成功录入。QUOTCOUTLTLTENDLLTLTENDLBREAKCASE2LOADMESSAGEHEADLINEHEADCLIENTBREAKCASE3AIRLINEFINDFINDQUERYHEADLINEIFFINDDISPLAY_LINEFINDBREAKCASE4BOOKTICKETHEADLINEHEADCLIENT/DISPLAY_ALL_CLIENTHEADCLIENTBREAKCASE5RETURNTICKETHEADLINEHEADCLIENTBREAKCASE6SAVEMESSAGEHEADLINEHEADCLIENTBREAKCASE7DISPLAY_ALL_LINEHEADLINEBREAKCASE8DISPLAY_ALL_CLIENTHEADCLIENTBREAKCASE0EXIT1BREAK/订票函数的实现/INTBOOKTICKETAIRLINEHEADHEADLINECLIENTHEADHEADCLIENT/订票COUTLTLTQUOT请输入航班号QUOTCHARLINE_NUM10CINGTGTLINE_NUMAIRLINETEMPTEMPHEADLINEGTNEXTWHILETEMPIFSTRCMPTEMPGTLINE_NUMLINE_NUM0BREAKTEMPTEMPGTNEXTIFTEMPCOUTLTLTQUOT未找到该航班QUOTLTLTENDLRETURN0IFTEMPGTLEFT0COUTLTLTQUOT对不起该航班票已经售完。QUOTLTLTENDLCOUTLTLTQUOT请选择其他合适的航班QUOTCLIENTCUSTOMNEWCLIENTCOUTLTLTQUOT请输入你的证件号码QUOTCINGTGTCUSTOMGTIDCOUTLTLTENDLCOUTLTLTQUOT请输入你的姓名QUOTCINGTGTCUSTOMGTNAMECOUTLTLTENDLCUSTOMGTSEAT_NUMTEMPGTTOTALTEMPGTLEFT1CUSTOMGTNEXTNULLSTRCPYCUSTOMGTLINE_NUMLINE_NUMTEMPGTLEFTHEADCLIENTGTCOUNTCUSTOMGTNEXTHEADCLIENTGTNEXTHEADCLIENTGTNEXTCUSTOMCOUTLTLTQUOT订票成功祝您旅途愉快。QUOTRETURN1/退票函数的实现/INTRETURNTICKETAIRLINEHEADHEADLINECLIENTHEADHEADCLIENT/退票。COUTLTLTQUOT请输入顾客的证件号码IDQUOTCHARID10CINGTGTIDAIRLINEAIRLINETEMPHEADLINEGTNEXTCLIENTCLIENTTEMPHEADCLIENTGTNEXTIFNULLAIRLINETEMPCOUTLTLTQUOT当前没有航班信息。QUOTLTLTENDLRETURN0CHARLINE_NUM10CLIENTDELNEXTIFSTRCMPCLIENTTEMPGTIDID0/要删除的节点为第一个时。STRCPYLINE_NUMCLIENTTEMPGTLINE_NUMHEADCLIENTGTNEXTCLIENTTEMPGTNEXTDELETECLIENTTEMPWHILEAIRLINETEMP/修改对票客户所对应的航班的售票信息。IFSTRCMPLINE_NUMAIRLINETEMPGTLINE_NUM0AIRLINETEMPGTLEFTBREAKAIRLINETEMPAIRLINETEMPGTNEXTCOUTLTLTQUOT退票成功生意不成仁义在有机会继续合作。QUOTRETURN1WHILECLIENTTEMPGTNEXT/要删除的节点不是第一个时。IFSTRCMPCLIENTTEMPGTNEXTGTIDID0STRCPYLINE_NUMCLIENTTEMPGTNEXTGTLINE_NUMDELNEXTCLIENTTEMPGTNEXTGTNEXTDELETECLIENTTEMPGTNEXTCLIENTTEMPGTNEXTDELNEXT/WHILEAIRLINETEMP/修改对票客户所对应的航班的售票信息。IFSTRCPYLINE_NUMAIRLINETEMPGTLINE_NUM0AIRLINETEMPGTLEFTBREAKAIRLINETEMPAIRLINETEMPGTNEXTCOUTLTLTQUOT退票成功生意不成仁义在有机会继续合作。QUOTLTLTENDLLTLTENDLRETURN1BREAKCLIENTTEMPCLIENTTEMPGTNEXTCOUTLTLTQUOT未找到该客户的信息。QUOTLTLTENDLRETURN0/保存文件的实现/INTSAVEMESSAGEAIRLINEHEADHEADLINECLIENTHEADHEADCLIENT/保存航班和客户的信息到相应的TXT文件中。OFSTREAMOUTLINEQUOTAIRLINETXTQUOTIFOUTLINECOUTLTLTQUOT航班信息文件打开失败。QUOTLTLTENDLRETURN0COUTLTLTQUOT正在保存航班信息QUOTLTLTENDLOUTLINELTLTHEADLINEGTCOUNTLTLTENDLAIRLINELINETEMPHEADLINEGTNEXTWHILELINETEMPOUTLINELTLTLINETEMPGTLINE_NUMLTLTQUOTQUOTLTLTLINETEMPGTSTART_PLACELTLTQUOTQUOTLTLTLINETEMPGTEND_PLACELTLTQUOTQUOTLTLTLINETEMPGTTOTALLTLTQUOTQUOTLTLTLINETEMPGTLEFTLTLTQUOTQUOTLTLTENDLLINETEMPLINETEMPGTNEXTOUTLINECLOSECOUTLTLTQUOT航班信息保存成功QUOTLTLTENDLOFSTREAMOUTCLIENTQUOTCLIENTTXTQUOTIFOUTCLIENTCOUTLTLTQUOT客户信息文件打开失败。QUOTLTLTENDLRETURN0COUTLTLTQUOT正在保存客户信息文件QUOTLTLTENDLOUTCLIENTLTLTHEADCLIENTGTCOUNTLTLTENDLCLIENTCLIENTTEMPHEADCLIENTGTNEXTWHILECLIENTTEMPOUTCLIENTLTLTCLIENTTEMPGTNAMELTLTQUOTQUOTLTLTCLIENTTEMPGTIDLTLTQUOTQUOTLTLTCLIENTTEMPGTLINE_NUMLTLTQUOTQUOTLTLTCLIENTTEMPGTSEAT_NUMLTLTQUOTQUOTLTLTENDLCLIENTTEMPCLIENTTEMPGTNEXTOUTCLIENTCLOSECOUTLTLTQUOT客户信息保存成功。QUOTLTLTENDLRETURN13主要函数的程序流程图开始定义航班头结点并初始化定义客户头结点并初始化。进入无限循环打印菜单用户的选择N2345678录入航班信息1加载航班信息客户订票客户退票保存修改查询航班信息打印所有航班信息打印所有客户信息1结束4画出函数之间的调用关系图。主函数MAIN录入航班信息IMPORT加载航班信息LOADMESSAGE查询航线信息QUERY客户订票BOOKTICKET客户退票RETURNTICKET保存操作SABEMESSAGE输出所有航班信息DISPLAY_ALL_LINE输出所有客户信息DISPLAY_ALL_CLIENT四、调试分析1实际完成的情况说明完成的功能支持的数据类型等完成了所有预设的功能可以实现航班的录入、查询、修改和客户的订票、退票保存信息的功能。2程序的性能分析包括时空分析时间复杂度分析在订票和退票函数中都用到了链表的查询算法时间复杂度为LOGN3上机过程中出现的问题及其解决方案调试过程中遇到的问题及解决方法A语法错误我的调试一个打开文件进行写入操作时遇到这样一个问题CHARFILENAME”CAIRLINEDAT”FPFOPEN“FILENAME”WB”调试了我一个半小时还是没有找到问题的所在最后发现是在FILENAME上多了一对引号B逻辑错误声明一个指针只是在内存中开辟了一个这种数据类型的空间并让这个指针指向它由于它还没有指向任何变量因此不能引用其指向的任何成员。4程序中可以改进的地方说明考虑到实际操作过程中的情况可以设定每个客户的订票上限和每一张票的价格以及退票时要扣掉的费用。五、测试结果1测试所用到的数据如下。航班号起飞城市抵达城市座位总数123CHINAAMERICA30456JAPANVIETNAM30789CHIANENGLAN30姓名证件号码航班犀利哥2012123春哥2013123凤姐2014789测试结果姓名证件号码航班六、用户手册一录入航班信息打开系统会出现主界面输入1后回车系统会提示要输入航班的个数航班号起飞地目的地座位总数。依次输入二加载航班信息打开系统在主界面输入2系统会自动加载上次保存的航班信息及客户信息。操作如图三查询航线信息。选择航线查询功能后会出现如图界面可以根据需要选择1或者2然后根据提示输入必要的数据。系统会输出航线信息。四客户订票。在主界面选择4然后依次输入航班号证件号姓名。操作如图五客户退票选择5然后输入证件号操作如图六保存操作输出所有航班信息输出所有客户信息。选择保存操作后系统将把您对数据的修改情况覆盖源文件的信息以TXT形式保存在根目录下。选择输出所有航班信息后系统将输出所有航班的信息。选择输出所有客户信息后系统将输出所有客户的信息。七、体会与自我评价做课程设计的这些天有些累但更多的是充实。有时候一个BUG没能解决睡觉时脑袋里也全是代码。这西天收获的绝对不仅仅是完成了课程设计我还体会到了写完程序时带来的那种成就感锻炼了自己的逻辑思维能力。另外我感觉一个好的的程序并不只是可以运行它还应该满足一大堆的条件如健壮性可读性可维护性高效性等等。要提高自己的编程能力你必须亲自去体验、去设计、编辑、编译、调试、运行。开始的时候没有认识到算法的重要性以为语言是程序设计的基础和核心随着学习的深入我渐渐认识到只有好的算法才能写出出类拔萃的的程序。只有对算法的深入理解和知道如何使用相应的算法设计相应的程序才能完成程序设计。实训中深切体会到了老师认真负责的伟大的精神和热情为同学指导的促学方式虽然对有些时候老师没给我们指出解决问题的方法有些小抱怨但是到了结束时才知道这种教学让我们自己学会了自学学会了去看懂别人的代码更多是老师给的感动每天在我们来之前就到了教室在讲课中海给我们分享他在公司上班的一些心得和体会还有那些我们应该注意的事项这些是平时上课时无法学到的是更深层次的巨大收获在此之前我也以为自己对C语言已经比较懂了可还是遇到了一系列问题也学到很多东西。每一个程序员都是在失败、尝试、失败、尝试与收获中成长起来的。作为一个团团的计算机学院大部分学生对计算机竟不大感兴趣导致学院人才凋零。我本学识尚浅无权谈论这些只是希望能对大家有所警醒编程之道漫漫无边吾将上下而求索最后以林锐先生的话来作为自己的追求目标和最后的结束语以振兴民族软件产业为己任作真实、正值、优秀的科技人员源代码INCLUDELTIOSTREAMGTINCLUDELTFSTREAMGTUSINGNAMESPACESTDINCLUDELTSTDLIBHGTINCLUDELTSTRINGHGTTYPEDEFSTRUCTCLIENTCHARNAME20/顾客名CHARID10/顾客证件号CHARLINE_NUM10/航班号INTSEAT_NUM/座位号STRUCTCLIENTNEXT/下一个结点CLIENTTYPEDEFSTRUCTCLIENTHEADINTCOUNTCLIENTNEXTCLIENTHEADTYPEDEFSTRUCTAIRLINECHARLINE_NUM10/航班号CHARSTART_PLACE20/起飞地CHAREND_PLACE20/目的地INTTOTAL/座位总数INTLEFT/剩余座位STRUCTAIRLINENEXT/下一个结点AIRLINETYPEDEFSTRUCTAIRLINEHEADINTCOUNTAIRLINENEXTAIRLINEHEADAIRLINEHEADIMPORTINTNAIRLINEHEADPHEADLINE/录入航班函数N为所要录入航班的数量AIRLINETEMPNEWAIRLINETEMPGTNEXTNULLPHEADLINEGTNEXTTEMPPHEADLINEGTCOUNTNFORINTI0ILTNICOUTLTLTQUOT请输入第QUOTLTLTI1LTLTQUOT个航班的航班号QUOTCINGTGTTEMPGTLINE_NUMCOUTLTLTQUOT请输入第QUOTLTLTI1LTLTQUOT个航班的起飞地QUOTCINGTGTTEMPGTSTART_PLACECOUTLTLTQUOT请输入第QUOTLTLTI1LTLTQUOT个航班的目的地QUOTCINGTGTTEMPGTEND_PLACECOUTLTLTQUOT请输入第QUOTLTLTI1LTLTQUOT个航班的座位总数QUOTCINGTGTTEMPGTTOTALTEMPGTLEFTTEMPGTTOTALCOUTLTLTQUOT第QUOTLTLTI1LTLTQUOT个航班成功录入。QUOTLTLTENDLIFILTN1TEMPGTNEXTNEWAIRLINEIFTEMPGTNEXTNULLCOUTLTLTQUOT分配内存失败QUOTLTLTENDLEXIT1TEMPGTNEXTGTNEXTNULLTEMPTEMPGTNEXTRETURNPHEADLINEAIRLINEQUERYAIRLINEHEADPHEAD/查询航班情况AIRLINEFINDNULLAIRLINETEMPCOUTLTLTQUOTQUOTLTLTENDLCOUTLTLTQUOT1按航线查询航班情况。QUOTLTLTENDLCOUTLTLTQUOT2按起飞抵达城市查询航班情况。QUOTLTLTENDLCOUTLTLTQUOTQUOTLTLTENDLCOUTLTLTQUOT请选择QUOTINTSELECTCINGTGTSELECTCOUTLTLTENDLSWITCHSELECTCASE1COUTLTLTQUOT请输入航班号QUOTCHARLINE_NUM10CINGTGTLINE_NUMTEMPPHEADGTNEXTWHILETEMPIFSTRCMPTEMPGTLINE_NUMLINE_NUM0FINDT

温馨提示

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

评论

0/150

提交评论