基于C语言的航空订票系统的设计与实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

学号10212811135武汉理工大学华夏学院课程设计课程名称数据结构题目基于C语言的航空订票系统的设计与实现----订票模块专业软件工程班级软件1111班姓名.成绩指导教师黄启荃2012年6月18日至2012年6月21日课程设计任务书设计题目:基于C语言的航空订票系统的设计与实现----订票模块设计目的1.学会分析研究数据对象的特性;2.学会数据的组织方法;3.选择合适的数据的逻辑结构和存储结构以及相应操作,把现实世界中的问题转换为计算机内部的表示和处理;4.提高学生的程序设计能力、提高算法设计质量与程序设计素质;设计任务(在规定的时间内完成下列任务)本项目旨在通过一个简化的航空订票系统项目,使学生在完成对C程序设计语言和基本数据结构与算法课程的学习后,综合运用所学到的语法和算法知识,构建一个接近实际应用场景的软件系统,以达到复习和巩固前期课程内容并为后续课程奠定基础的目的。本系统要求实现订票功能模块,订票功能模块通过航班号普通用户可以在输入自己姓名和身份证号后,完成订票操作。(订票情况可以存在一个数据文件中,结构自己设定)如果该航班已经无票,可以提供相关可选择航班;具体要完成的任务是:AA..编编制制完完成成上上述述问问题题的的CC语语言言程程序序、、进进行行程程序序调调试试并并能能得得出出正正确确的的运运行行结结果果。。BB..写写出出规规范范的的课课程程设设计计说说明明书书;;时间安排(第19周—6.18至6.25)第一天布置课程设计任务,讲授VC安装,程序结构、数组、函数、文件;第二天查阅资料,讲授排序,查询算法实现;了解航空售票管理系统的需求;第三天讲授快速排序、最短路径问题、哈希查找的算法实现,准备程序第四天完成订票模块的设计与实现,上机调试程序,教师验收;第五天提交课程设计报告,下午4点前提交课程设计报告及文档至综合楼712。具体要求课程设计报告按统一通用格式书写,具体内容包括:①设计任务与要求②总体方案与说明③软件主要模块的流程图④源程序清单与注释⑤问题分析与解决方案⑥小结与体会附录:①源程序(必须有简单注释)②使用说明③参考资料指导教师签名:2012年6月15日教研室主任(或责任教师)签名:2012年6月16日数据结构课程设计报告1.设计任务与要求1.1设计任务全面熟悉、掌握C语言和数据结构基本知识。掌握C程序设计中的一系列问题,把C语言与数据结构和实际结合起来,增强对不同问题的一些处理。掌握分析结果的若干有效方法,进一步提高上机动手能力这次设计任务是通过一个简化的航空订票系统项目,使学生在完成对C程序设计语言和基本数据结构与算法课程的学习后,综合运用所学到的语法和算法知识,构建一个接近实际应用场景的软件系统,以达到复习和巩固前期课程内容并为后续课程奠定基础的目的。1.2设计要求这设计要求实现订票功能模块,订票功能模块通过航班号普通用户可以在输入自己姓名和身份证号后,完成订票操作。(订票情况可以存在一个数据文件中,结构自己设定)如果该航班已经无票,可以提供相关可选择航班。编制完C语言程序后进行程序调试并能得出正确的运行结果且写出规范的课程设计明书。2.总体方案填写具体内容在这次课设中,我们需要运用到很多函数,包括文件的打开,结构体的运用,函数与函数之间的互相调用,并且,还涉及到基本的输入输出,另外,还涉及到的一个显示界面问题,这是就需要运用printf这个标准输出函数,为我们的乘客设计一个选择界面和提示,在这个整体中,大多数的函数都是我们用户自定义的函数,所以,在运用时需要先定义后使用。我们总体的设计方案(仅仅对于订票系统而言)是当用户输入航班号订票,当订票成功时,则将该用户的信息存储到原来的订票记录中,并将该航班的剩余票数时,系统会自动检查此航班,如果存在此航班,则再次检查该航班是否还有票,如果没有该航班,则显示一个提示信息“本航班还未开通,请选择其他航班”,如果有票,则输入身份证号和姓名,并把此次订票的记录记录在一个文本文件(即pass.dat)里,如果没有票了,则显示“没票了,是否需要其他航班(y/n)”当点击“y”时,继续上述操作,直到结束减一即可,这样就完成了订票了。3.详细设计撰写具体内容(详细设计包括主要模块的流程图)3.1其实,对于程序的主要设计,在方案中已经做了具体说明了,这里只需对做一个简单的陈述。(1)输入航班号(2)判断航班号是否存在,并做相应操作(3)判断是否还有剩票,并作相应的操作(4)输入身份证号和姓名(5)记录用户的订票信息3.1.6退出订票系统3.2部分程序流程图如图1所示开始1!=0航班查询机票查询订票退票管理员操作A乘客的输入选择123405管理员操作退出退票系统的操作机票查询的操作航班查询的操作Intid=0;charcAirplaneplane={0}Passengerpass={0}输入(\n---订票----)1!=0请输入航班号Id=0Plane.m_planeID==0Plane.m_left==0BDCABCDPlane=plane_check_id(id,0)航班不存在无票,是否订其他航班(y/n)(y/n)请输入您的姓名输出用户的姓名,身份证号,航班号,出发地,目的地和出发时间是否确定(y/n)C==y||c==Y输出乘客的票号Pass.m_planeID=plane.m_planeID打开文件并parpssengeass={0}Fd=NULL输出姓名,身份证号和航班号输出文件出错EC!=y&&c!=Y请输入您的身份证号码图1航空订票系统订票模块流程图4.源程序清单与注释/*******************************/#includestdio.h******/订票系统:航班和用户信息**********************************#ifndef_INFOR_H#define_INFOR_H//机票信息typedefstruct{intm_planeID;//航班号charm_from[10];//出发城市charm_to[10];//到达城市charm_date[10];//出发日期以读的方式打开问件输出乘客的姓名,身份证号,航班号和票号关闭文件没有找到相应的记录E1!=0intm_left;//剩余票数intm_capacity;//容量floatm_price;//价格intm_rebate;//打折}AirPlane;//用户信息typedefstruct{charm_ID[20];//身份证号charm_name[20];//姓名intm_planeID;//航班号charm_ticketnum[15];//票号intm_isFlog;//0确认订票,1取消订票}Passenger;#endif//_INFOR_Hintmain(){menu();}voidmenu(){intc;while(1){printf(\n--MENU-------------------\n);printf(\t[1]航班查询\n);printf(\t[2]机票查询\n);printf(\t[3]订票\n);printf(\t[4]退票\n);printf(\t[0]退出\n);printf(-------------------------\n);printf(\t[5]管理员操作\n);printf(-------------------------\n);printf(请输入:);scanf(%d,&c);switch(c){case1:plane_check();break;case2:user_check();break;case3:book_ticket();break;case4:return_ticket();break;case5:{charname[20]={0};charpasswd[20]={0};printf(\n请输入管理员用户名和密码:\n);printf(测试:admin1234);scanf(%s%s,name,passwd);if(strcmp(name,ADMIN)==0&&strcmp(passwd,PASSWD)==0)else{printf(没有权限!!!\n);}}break;case0:return;}}}voidbook_ticket()//订票系统{intid=0;charc;AirPlaneplane={0};Passengerpass={0};printf(\n--订票-----------------------\n);while(1){printf(请输入航班号:(0退出订票)\n);scanf(%d,&id);if(0==id)break;plane=plane_check_id(id,0);if(plane.m_planeID==0){printf(航班不存在\n);continue;}if(plane.m_left==0){printf(无票,是否定其它航班(y/n)\n);scanf(%c,&c);if(c!='y'&&c!='Y')break;elsecontinue;}printf(请输入你的身份证号\n);scanf(%s,pass.m_ID);printf(请输入你的姓名:\n);scanf(%s,pass.m_name);showticket(&plane,&pass);printf(是否确定(y/n)\n);scanf(%c,&c);if(c=='y'||c=='Y')if(c=='y'||c=='Y'){ticket(pass.m_ticketnum);printf(%s\n,pass.m_ticketnum);pass.m_planeID=plane.m_planeID;showAllUser();}break;}printf(--订票结束---------------------\n);}voidshowAllUser()//显示所有用户{intr=0;FILE*fd=fopen(USERDAT,r);Passengerpass={0};if(NULL==fd){printf(%sOPENERROR!\n,USERDAT);return;}printf(\nUSER:\n);printf(|%10s|%20s|PlaneID|%20s\n,NAME,ID,TicketNum);while(1){r=fread(&pass,sizeof(pass),1,fd);if(r=0)break;printf(|%10s|%20s|%7d|%20s\n,pass.m_name,pass.m_ID,pass.m_planeID,pass.m_ticketnum);break;}fclose(fd);}5.问题分析与解决方案首先,我当时遇到的第一个问题就是如何在“窗体”上显示乘客的选择和一些提示信息,然而,我遇到的第二个问题就是不知道如何存储乘客信息和如何打印出航班信息,作为航班的订票系统来说,很大一部分内容就是保存乘客订票成功后的信息,对于这两个问题,后来在老师的讲解下,我搞懂了,对于如何在“窗体”上显示一些信息,解决方案是用printf这个标准函数在“窗体”上输出即可,而对于第二个问题,我们则用到了文件的打开和存储(因为我在学c的时候老师基本没讲,所以不知道怎么做了),打开用到了fopen函数,而存储则用到了fread和fwrite等用于存储的函数,在编程时遇到了一个难点就是函数的调用,因为这里面涉及到很多自定义函数的定义和声明,所以,运用起来很不熟,后来这个问题在老师的带领下也得到了很好的解决。6.小结与体会在这一周将尽四天的时间里,在我们指导老师肖老师的带领下我们进行航空订票系统的课程设计,在这期间我学到了很多。我们还是大一的学生,只学过一些基础的知识,并未接触到我们的专业课。这次的编程主要是以C语言来编写,结合数据结构的知识。这几天老师和们一起复习了C的知识,让我们能够更加熟练的应用C中的运算符,结构体和数组等内容。同时老师

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功