您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 数据结构课程设计-航空客运订票系统
课程设计报告设计名称:数据结构课程设计选题名称:航空客运订票系统姓名:张庆凤学号:221003136专业班级:计算机科学与技术系(院):计算机工程学院设计时间:2010.12.19~2010.12.30设计地点:软件工程实验室、教室指导教师评语:签名:年月日成绩:数据结构课程设计报告第1页,共24页1.课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。2.课程设计任务与要求:任务根据教材《数据结构-C语言描述》(耿国华主编)和参考书《数据结构题集(C语言版)》(严蔚敏、吴伟民主编)选择课程设计题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。设计题目从任务书所列选题表中选取,每班每题不得超过2人。学生自选课题学生原则上可以结合个人爱好自选课题,要求课题有一定的深度与难度,有一定的算法复杂性,能够巩固数据结构课程所学的知识。学生自选课题需在18周前报课程设计指导教师批准方可生效。要求:1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。2、设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。3、程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释;4、每位同学需提交可独立运行的程序;5、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算);6、课程设计实践作为培养学生动手能力的一种手段,单独考核。数据结构课程设计报告第2页,共24页3.课程设计说明书一需求分析1.每条航线所设计的信息有:终点站名,航班号,飞机号,飞行周日(星期几),乘员定额,余票量,已订票的客户名单(包括姓名,订票量,舱位等级1,2或3)以及等候替补的客户名单(包括姓名,所需票量);2.作为示意系统,全部数据可以只存放在内存中;3.系统能实现的操作功能如下:a)查询航线:根据旅客提出的终点站名输出下列信息:航班号,飞机号,星期几飞行,最近一天航班的日期和余票额;b.)承办订票业务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若尚余票则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。若需要可登记排队候补;c.)承办退票业务:根据客户提供的情况(日期,航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。二概要设计系统结构图(2)简介主函数:主要运用了switch函数和do语句。航线信息:显示已初始化的全部航线信息,定义了函数类型以及打印函数,运用了while语句以及指针。客户信息:浏览已订票客户信息,定义了函数类型,运用了if和while语句。查询航线:调用find()函数寻找航线信息,定义了函数类型,运用了if和while语句以及指针。订票办理:定义了函数类型,运用了if语句及指针。主函数航线信息客户信息查询航线订票办理退票办理剩票排序退出系统数据结构课程设计报告第3页,共24页退票办理:定义了函数类型,调用查询函数,退票成功后,重新将航线名单域指向订票单链表的头指针。根据队列中从出的客户信息判断是否满足要求,如果满足,则将该客户的信息插入到乘客信息链表中。运用了if和while语句以及指针。剩票排序:定义了函数类型,运用了if和for语句及指针。退出系统:直接退出。三详细设计航空客运订票系统:主函数:intmenu_select()/*菜单界面*/{intc;chars[20];printf(\n);printf(\t\t\t航空客运订票系统\n);printf(\t\t--------------------------------------\n);printf(\t\t--------------------------------------\n);printf(***1.航线信息***\n);printf(***2.客户信息***\n);printf(***3.查询航线***\n);printf(***4.订票办理***\n);printf(***5.退票办理***\n);printf(***6.剩票排序***\n);printf(***7.退出系统***\n);printf(\t\t--------------------------------------\n);printf(\t\t--------------------------------------\n);do{printf(请选择:);scanf(%s,s);c=atoi(s);}while(c0||c7);returnc;}voidmain(){start=air;for(;;){switch(menu_select()){case1:list();break;case2:prtlink();break;case3:search();break;case4:order();break;数据结构课程设计报告第4页,共24页case5:return_tkt();break;case6:sort_tkt();break;case7:printf(\n感谢使用本系统欢迎您下次使用!\n);exit(0);};printf(Pressanykeytocontinue\n);}}航线信息:structairline{charter_name[10];/*终点站名*/charair_num[10];/*航班号*/charplane_num[10];/*飞机号*/chardate[7];/*飞行日期(星期几)*/inttkt_amt;/*乘员定额*/inttkt_sur;/*余票量*/linklist*order;/*乘员名单域,指向乘员名单链表的头指针*/linkqueuewait;/*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/}lineinfo;structairline*start;structairlineair[MAXSIZE]={{aaaaa,1,#123,Mon,4,2},{bbbbb,2,#456,Tue,5,3},{ccccc,3,#789,Fri,2,4}};;voiddisplay(structairline*info)/*打印每条航线的基本信息*/{printf(%8s\t%3s\t%s\t%4s\t\t%3d\t%10d\n,info-ter_name,info-air_num,info-plane_num,info-date,info-tkt_amt,info-tkt_sur);}voidlist()/*打印全部航线信息*/{structairline*info;inti=0;info=start;printf(终点站名\t航班号\t飞机号\t飞行日期\t乘员定额\t余票量\n);while(iMAXSIZE){display(info);info++;i++;}printf(\n\n);}查询航线:voidsearch()/*根据客户提出的终点站名输出航线信息*/{structairline*info,*find();charname[10];inti=0;info=start;printf(请输入终点站名:);数据结构课程设计报告第5页,共24页scanf(%s,name);while(iMAXSIZE){if(!strcmp(name,info-ter_name))break;info++;i++;}if(i=MAXSIZE)printf(对不起,该航线未找到!\n);else{printf(终点站名\t航班号\t飞机号\t飞行日期\t乘员定额\t余票量\n);display(info);}}structairline*find()/*根据系统提出的航班号查询并以指针形式返回*/{structairline*info;charnumber[10];inti=0;info=start;printf(请输入航班号:);scanf(%s,number);while(iMAXSIZE){if(!strcmp(number,info-air_num))returninfo;info++;i++;}printf(对不起,该航线未找到!\n);returnNULL;}客户信息:voidprtlink()/*打印订票乘员名单域的客户名单信息*/{linklist*p;structairline*info;info=find();p=info-order;if(p!=NULL){printf(客户姓名订票数额舱位等级\n);while(p){printf(%s\t\t%d\t%d\n,p-name,p-ord_amt,p-grade);p=p-next;}}else数据结构课程设计报告第6页,共24页printf(该航线没有客户信息!!\n);}linklist*insertlink(linklist*head,intamount,charname[],intgrade)/*增加订票乘员名单域的客户信息*/{linklist*p1,*new1;p1=head;new1=(linklist*)malloc(sizeof(linklist));if(!new1){printf(\nOutofmemory!!\n);returnNULL;}strcpy(new1-name,name);new1-ord_amt=amount;new1-grade=grade;new1-next=NULL;if(head==NULL)/*若原无订票客户信息*/{head=new1;new1-next=NULL;}elsehead=new1;new1-next=p1;returnhead;}linkqueueappendqueue(linkqueueq,charname[],intamount)/*增加排队等候的客户名单域*/{qptrnew1;new1=(qptr)malloc(sizeof(qnode));strcpy(new1-name,name);new1-req_amt=amount;new1-next=NULL;if(q.front==NULL)/*若原排队等候客户名单域为空*/q.front=new1;elseq.rear-next=new1;q.rear=new1;returnq;}订票业务:voidorder()/*办理订票业务*/{structairline*info;intamount,grade;charname[10];info=start;if(!(info=find()))return;/*根据客户提供的航班号进行查询,如为空,退出该模块*/printf(请输入你订票所需要的数量:);scanf(%d,&amount);if(amountinfo-tkt_amt)/*若客户订票额超过乘员定票总额,退出*/{printf(\n对不起,您输入的票的数量已经超过乘员定额!);return;数据结构课程设计报告第7页,共24页}if(amount=info-tkt_sur)/*若客户订票额未超过余票量,订票成
本文标题:数据结构课程设计-航空客运订票系统
链接地址:https://www.777doc.com/doc-7309148 .html