航空客运订票系统的设计与实现.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空 客运 订票 系统 设计 实现
- 资源描述:
-
课 程 设 计 说 明 书 课程名称 题 目 航空客运订票系统的设计与实现 院 系 _ 电子信息工程学院____ 班 级 __计算机科学与技术__ 学生姓名 ______________ 指导教师 _____________ 日 期 _ 2011.12.19—2011。12。30__ 数据结构课程设计任务书 课程设计题目 航空客运订票系统的设计与实现 姓名 学号 专业班级 计算机科学与技术 组别 组长 同组成员 指导教师 课程设计目的 设计一个航班订票系统,提高对信息管理、信息查找和排序算法的应用能力。 课程设计环境 386以上的微机上进行,运行环境为TurboC 课程设计任务和要求 1、承办订票业务:根据客户提出的要求(飞机抵达城市、起降时间、订票数量)查新该航班信息(包括票价、折扣和剩余位置),若满足要求,则为客户办理订票手续,输出座位号。 2、承办退票业务:根据客户提供的情况(航班号、订票数量),为客户办理退票手续。 3、 查询功能: a) 查询航线信息:根据飞机降落地点,输入下列信息:航班号、飞机号、起降时间、航班票价、票价折扣和剩余位置。 b) 查询客户预订信息:根据客户证件号,输出下列信息:航班号、飞机号和座位号. 参考 文献 1、杨秀金等。 数据结构(C语言版)。 西安电子科技大学出版社2004 2、谭浩强. C语言程序设计. 清华大学出版社。 2002 3、李春保. 数据结构教程上机实验指导. 清华大学出版社。 2005 时 间 进 度 安 排 序号 起止日期 工 作 内 容 1 2011.12.19~2011.12。22 下达课程设计任务、查阅资料、确定方案 2 2011.12。23~2011。12。28 编写程序、调试、运行 3 2011。12。29 验收、撰写课程设计报告 4 2011。12。30 验收、撰写课程设计报告、提交文档 指导教师: 时间: 2011.12.8 航空客运订票系统的设计与实现 一、简介 1.设计目的: 1. 数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发 2. 通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用 . 3. 学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。 航空空订票系统: (1)熟练掌握链表存储结构及其建立过程和常用操作; (2)熟练掌握队列的建立过程和常用操作; (3)学会自己调试程序的方法并掌握一定的技巧。 2.问题的描述: 航空客运订票的业务包括查询航线和客票预定的信、客票预定和办理退票等,设计一个程序以使上述任务借助计算机完成。 二、数据结构的设计: (1)航班信息:飞机抵达城市、航班号、飞机号、起降时间、航班票价、票价折扣、总位置和剩余位置、以訂票的客户名单。 (2)客户信息:客户姓名、证件号、座位号. 三、功能(函数)设计: 1. 每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日(星期几)、载客量、余票量、票价格,折扣,已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量); 2. 全部数据可以只放在内存中; 3. 系统能实现的操作和功能如下: a) 查询航线: 根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额; b) 承办订票业务: 根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续, 输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求.若需要,可登记排队候补; c) 退票业务: 根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。 系统结构图(功能模块图) 功能模块说明 (1)显示已初始化的全部航线信息 (2)浏览已订票客户信息 (3)根据客户提出的终点站名,调用find()函数寻找航线信息,调用list()函数输出航线信息 (4)办理订票业务:根据客户提供的航班号进行查询航线信息,若客户订票额超过乘员定票总额,退出,若客户订票额末超过余票量,订票成功并登记信息,在订票乘员名单域中添加客户信息;如果暂时没有票,询问客户是否要排队等侯,如果是,则在等候队列增加该客户的订票信息。 (5)办理退票业务:调用查询函数,根据客户提供的航线进行搜索根据客户提供的姓名到订票客户名单域进行查询。退票成功后,重新将航线名单域指向订票单链表的头指针。根据队列中从出的客户信息判断是否满足要求,如果满足,则将该客户的信息插入到乘客信息链表中. (6)退出本系统 四、界面设计: 界面简洁易懂,包括1.浏览航线信息;2.浏览已订票客户信息;3。查询航线;4。办理订票业务;5.办理退票业务;6.查看剩余票数并排序. 五、程序设计: 六、运行与测试: 1、测试的数据及其结果: (1)通过按键“1”浏览航线信息,结果输出五行事先输入的数据。 (2)通过按键“3”查询航线,输入终点站名后,结果输出相关航线信息。 (3)通过按键“4"办理订票业务,依次输入航班号,订票数量,客户姓名,证件号后,结果输出客户的座位号,订票成功。 (4)通过按键“2"浏览已定票客户信息,输入航班号后,结果显示客户信息。 (5)通过按键“5"办理退票业务,输入航班号,客户名后,结果退票成功。 (6)通过按键“6”查看剩余票数并排序,结果正确. (7)通过按键“0”退出系统,结果正确。 2、运行与测试期间遇到的问题及其解决办法。 (1)因本人能力有限,在编写的时候只使用了相对较为简单的基础语言 ,代替了相对较为复杂的语言,降低了运行效率。 (2)程序在起初设计的时候,经常出现溢出错误,而且不只一处.为了修正这些溢出错误,耗费了大量的时间,修正解释之后再看源程序,才发现原来只是因为开始的函数定义的数据类型出现了问题,对函数的定义不清楚,字符的不正确定义造成了后期大量的纠错工作, (3)由于忘记了一些c语言的规范使得在调试过程中一些错误没有发现。例如,调用函数时,数组只需要传递数组名即可;字符‘0’和整形的0是不同的文明不可以直接对其画等号。 (4)测试用例具有一定的广泛性.运行程序时输入了多种不同字符信息,经过多次修改结果达到了预期效果。说明程序具有一定的可靠性和稳定性. 七、设计后的思考: 经过这次课程设计,我对调试掌握的更加熟练了,改变了过去只调试不知道如何对照程序语言修改程序的坏习惯,对调试也有了新的认识,意识到了程序语言的规范性以及我们在编程时要有严谨的态度,同时在写程序时如果加一定量的注释,既增加了程序的可读性,也可以使自己在读程序时更容易. 代码: #include 〈stdio.h〉 #include 〈stdlib.h〉 #include <string。h〉 #include 〈conio.h> #define MAXSIZE 5 typedef struct wat_ros { char name[10]; int req_amt; struct wat_ros *next; }qnode,*qptr; typedef struct pqueue { qptr front; qptr rear; }linkqueue; typedef struct ord_ros { char name[10]; int ord_amt; int grade; struct ord_ros *next; }linklist; struct airline { char ter_name[10]; char air_num[10]; char plane_num[10]; char date[7]; int tkt_amt; int tkt_sur; int tkt_pri; int tkt_reb; linklist *order; linkqueue wait; }lineinfo; struct airline *start; struct airline air[MAXSIZE]={{”北京”,”1","A1401",”星期日”,3,1,800,9}, {”上海",”2","H1102”,”星期一”,2,5,600,6}, {”洛阳",”3”,”L1003”,"星期五",1,3,100,4}, {”杭州","4",”H1035”,"星期三”,5,4,700,5}, {"呼和浩特”,”5","F1100”,”星期六",6,3,800,5}}; void display(struct airline *info) {printf(”%8s\t%3s\t%s\t%7s\t%7d\t%10d\t%5d\t%3d\n”,info—>ter_name,info->air_num,info—〉plane_num,info->date,info->tkt_amt,info—〉tkt_sur,info-〉tkt_pri,info-〉tkt_reb); } void list() { struct airline *info; int i=0; info=start; printf(”终点站\t\t航班号\t飞机号\t飞行日期\t载客量\t余票量\t票价格\t折扣\n”); while(i<MAXSIZE) { display(info); info++; i++; } printf("\n\n"); } void search() { struct airline *info,*find(); char name[10]; int i=0; info=start; printf(”请输入终点站名:”); scanf("%s",name); while(i<MAXSIZE) { if(!strcmp(name,info->ter_name)) break; info++; i++; } if(i〉=MAXSIZE) printf(”对不起,该航线未找到!\n”); else { printf(”终点站\t\t航班号\t飞机号\t飞行日期\t载客量\t余票量\t票价格\t折扣\n”); display(info); } } struct airline *find() { struct airline *info; char number[10]; int i=0; info=start; printf("请输入航班号:"); scanf("%s",number); while(i〈MAXSIZE) { if(!strcmp(number,info->air_num)) return info; info++; i++; } printf(”对不起,该航线末找到!\n"); return NULL; } void prtlink() { linklist *p; struct airline *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 printf("该航线没有客户信息!!\n"); } linklist *insertlink(linklist *head,int amount,char name[],int grade) { linklist *p1,*new1; p1=head; new1=(linklist *)malloc(sizeof(linklist)); if(!new1) {printf(”\nOut of memory!!\n”);return NULL;} strcpy(new1—〉name,name); new1—>ord_amt=amount; new1—>grade=grade; new1—>next=NULL; if(head==NULL) {head=new1;new1—>next=NULL;} else head=new1; new1->next=p1; return head; } linkqueue appendqueue(linkqueue q,char name[],int amount) { qptr new1; new1=(qptr)malloc(sizeof(qnode)); strcpy(new1-〉name,name); new1->req_amt=amount; new1—〉next=NULL; if(q.front==NULL) q。front=new1; else q。rear—〉next=new1; q.rear=new1; return q; } void order() { struct airline *info; int amount,grade; char name[10]; info=start; if(!(info=find())) return; printf(”请输入你订票所需要的数量:"); scanf("%d",&amount); if(amount>info—>tkt_amt) { printf("\n对不起,您输入的票的数量已经超过乘员定额!"); return; } if(amount<=info—〉tkt_sur) { int i; printf(”请输入您的姓名(订票客户):"); scanf("%s”,name); printf(”请输入%s票的证件号:",name); scanf("%d",&grade); info—〉order=insertlink(info—〉order,amount,name,grade); for(i=0;i〈amount;i++) printf(”%s的座位号是:%d\n",name,info—>tkt_amt—info-〉tkt_sur+i+1); info—>tkt_sur—=amount; printf("\n祝您乘坐愉快!\n”); } else { char r; printf(”\n已经没有更多的票,您需要排队等候吗?(Y/N)"); r=getch(); printf(”%c",r); if(r==’Y’||r=='y') { printf(”\n请输入您的姓名(排队订票客户):"); scanf("%s",name); info-〉wait=appendqueue(info—>wait,name,amount); printf("\n注册成功!\n”); } else printf(”\n欢迎您下次再次订购!\n”); } } void return_tkt() { struct airline *info; qnode *t,*back,*f,*r; int grade; linklist *p1,*p2,*head; char cusname[10]; if(!(info=find())) return; head=info-〉order; p1=head; printf("请输入你的姓名(退票客户):"); scanf("%s",cusname); while(p1!=NULL) { if(!strcmp(cusname,p1->name)) break; p2=p1;p1=p1—>next; } if(p1==NULL){ printf(”对不起,你没有订过票!\n");return;} else { if(p1==head) head=p1—〉next; else p2—>next=p1—>next; info-〉tkt_sur+=p1->ord_amt; grade=p1—>grade; printf(”%s成功退票!\n",p1->name); free(p1); } info—>order=head; f=(info-〉wait).front; r=(info->wait)。rear; t=f; while(t) { if(info—>tkt_sur=info—〉wait.front->req_amt) { int i; info->wait。front=t—〉next; printf("%s订票成功!\n”,t—>name); for(i=0;i<t-〉req_amt;i++) printf(”%s的座位号是:%d\n”,t—〉name,(info—>tkt_sur)-i); info—>tkt_sur—=t-〉req_amt; info-〉order=insertlink(info—〉order,t-〉req_amt,t—〉name,grade); free(t); break; } back=t;t=t—>next; if((info-〉tkt_sur)〉=(t—>req_amt)&&t!=NULL) { int i; back->next=t—〉next; printf("%s订票成功!\n",t-〉name); for(i=0;i<t->req_amt;i++) printf("〈%s〉’s seat number is:%d\n",t—〉name,(info-〉tkt_sur)—i); info—〉tkt_sur-=t—〉req_amt; info—>order=insertlink(info->order,t->req_amt,t—〉name,grade); free(t);break; } if(f==r) break; } } void sort_tkt() { int j; struct airline t,*info,*p,*q; p=info=air; for(p=info;(p+1)->tkt_sur;p++) for(q=p+1;q->tkt_sur;q++) { if(p->tkt_sur<q—>tkt_sur) { t=*p; *p=*q; *q=t; } } printf("终点站\t\t航班号\t飞机号\t飞行日期\t载客量\t余票量\t票价格\t折扣\n"); for(j=0;j〈MAXSIZE;j++) { display(info); info++; } } int menu_select() { int c; char s[20]; printf(”\n *航空客运订票系统*\n”); printf(”***************************** *********************************\n"); printf(" 1.浏览航线信息 2.浏览已订票客户信息\n"); printf(" 3.查询航线 4。办理订票业务\n”); printf(" 5.办理退票业务 6.查看剩余票数并排序\n"); printf(" 0。退出系统\n”); printf(”********************************************************************************\n”); do{ printf(”请选择:”); scanf(”%s”,s); c=atoi(s); }while(c<0||c>7); return c; } void main() { start=air; for(;;) { switch(menu_select()) { case 1:list();break; case 2:prtlink();break; case 3:search();break; case 4:order();break; case 5:return_tkt();break; case 6:sort_tkt();break; case 0:printf(”\n欢迎您的使用,再见!\n");exit(0); } printf("\nPress any key to continue!\n”); getch(); } } 课程设计题目 航空客运订票系统的设计与实现 姓名 学号 专业班级 计科 指导教师评语: 指导教师签名: 2012 年 1月 6日 成绩评定 项 目 分 值 评 分 要 素 成 绩 1设计过程中出勤、学习态度等方面 20 上机出勤及端正的学习态度、认真刻苦程度等 2软件设计质量 40 采用的算法、设计方案,设计结果,界面友好等方面进行综合评定 3 答辩 20 能简明扼要地阐述设计的主要内容,能准确流利地回答各种问题 4设计报告书写 10 条理清晰,表述清楚、措词得当 5 实际动手能力 10 软件编程及调试能力等 总 成 绩 电子信息工程学院数据结构课程设计指导教师评分表 12展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




航空客运订票系统的设计与实现.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/3991815.html