




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计报告 姓名: 贺长明 班序号:19109204 学号: 20091001027 指导老师:李桂玲 二 O 一 二 年 七 月1.航空订票系统 1需求分析试设计一个航空订票系统,基本要求如下: 每条航班所涉及的信息有:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,乘员定额,余票量,订定票的客户名单(包括姓名,订票量,舱位等级(头等舱、公务舱、经济仓)以及等候替补的客户名单(包括姓名、所需数量)。采用链式存储结构。 系统能实现的操作和功能如下:(1)航班信息管理。 (2)查询航线,按以下几种方式查询: 按航班号查询; 按起点站查询; 按终点站查询; 按日期查询;每种查询方式中,查询后输出如下信息:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,余票量。 (3)承办订票业务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。若需要,可登记排队候补。 (4)承办退票业务:根据客户提出的情况(日期,航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。2设计2.1 设计思想(1)数据结构设计 typedef struct keHu/客户信息 char nameofKeHu20;/客户名字int numofPiao;/客户需要票的数量int type;/仓位等级1:头等舱2:公务舱3:经济舱struct keHu* next;/下个客户;typedef struct hangBan int numofHangBan;/航班号 char typeofHB20;/航班机型 char startFly20;/起飞机场 char endFly20;/降落机场 char DataofHB20;/日期格式为(20120312 星期一) char startTime20;/起飞时间 char endTime20;/到达时间 float flyTime;/飞行时长 float prise;/价格 int largeNum;/成员定额 int leaveNum;/余票数量 keHu *custemer;/乘客信息名单 keHu *orderofKeHu;/替补客户;typedef struct NodehangBan *exam;/航班信?息int numofN;/航班数量struct Node *next;(2)算法设计 总体设计:在Fly.h文件中设计舱位的信息处理以及订票退票和对舱位信息的管理方面的功能然后在main,h中设计用户界面功能部分。 相应的处理函数为FLY.Hu void InitiateKeHu(keHu *head);客户信息的初始化;u void InitiateHangBan(hangBan *head);航班信息的初始化u void InitiateNode(Node *head) 机舱信息的初始化;u void hangBanInsert(Node *head,int numHB,char typeHB,char startF,char endF,char startT,char endT,char Data,float FT,float prise,int LM)航班插入操作。u int hangbanDelete(Node *head,int N)航班删除功能;u void searchforNumofHB(Node *head,int N)按舱号查询u void searchforStartF(Node *head,char sartF)按起始站查询u void searchforEndF(Node *head,char endF)按终点站查询u void searchforData(Node *head,char Data)按日期查询u void insertKeHu(keHu *head,char name,int sum)/插入客户信息u int deleteKeHu(keHu *head,char name,int sum)删除客户信息u inline void popKeHu(keHu *head,keHu *pop)取第一个排队的客户u void popDKeHu(keHu *head)删除第一个客户u void bookKeHu(Node *head,int N,char name,int sum)/客户订票u void returnKeHu(Node *head,int N,char Data,char name,int sum,int flag = 0) 客户退票处理MAIN.Hu void GongNeng(Node *head)u void hangBanM(Node *head)u void hangBanSearch(Node *head)u void hangBanBook(Node *head)u void hangBanReturn(Node *head)2.2 设计表示(1)函数调用关系图用户界面:void GongNeng(Node *head)void hangBanM(Node *head)void hangBanSearch(Node *head)void hangBanBook(Node *head)void hangBanReturn(Node *head)信息管理函数void InitiateNodevoid InitiateKeHuvoid InitiateHangBanvoid hangBanInsertint hangbanDeletevoid searchforNumofHBvoid searchforStartFvoid searchforEndF void searchforDatvoid insertKeHuint deleteKeHuinline void popKeHuvoid popDKeHuvoid bookKeHuvoid returnKeHu 调用调用主函数void main() 3调试分析u 主要遇见嵌套数据结构之后内存的初始化步骤,如果不全部初始化,有时候还需要涉及到给他申请内存空间的问题,这以后要好好注意!u 未能实现实际时间的问题,其实可以调用系统的时间来完成这个程序的日期和其他部分,但是时间关系未能实现!4 用户手册l 按程序提示运用即可!5 测试数据及测试结果 主界面:信息管理:设置成默认设置查询航线 按航班号查询:订票业务:退票业务:6源程序清单 Fly.h/头文件 #includestringusing namespace std;typedef struct keHu/客户信?息 char nameofKeHu20;/客户名?字?int numofPiao;/客户需要a票的?数y量?int type;/仓?位?等级?1:o头等舱?2:o公?务?舱?3:o经-济?舱?struct keHu* next;/下?一?个?客户;typedef struct hangBan int numofHangBan;/航?班号? char typeofHB20;/航?班机型 char startFly20;/起e飞机场? char endFly20;/降落?机场? char DataofHB20;/日?期;?格?式?为a(20120312星?期一?)? char startTime20;/起e飞时间? char endTime20;/到?达?时间? float flyTime;/飞行D时长 float prise;/价?格? int largeNum;/成员定额? int leaveNum;/余票数y量? keHu *custemer;/乘?客信?息名?单 keHu *orderofKeHu;/替?补1客户;typedef struct NodehangBan *exam;/航?班信?息int numofN;/航?班数y量?struct Node *next;void InitiateHangBan(hangBan *head);void InitiateKeHu(keHu *head);void InitiateNode(Node *head)*head = (Node *)malloc(sizeof(Node);(*head)-numofN = 0;InitiateHangBan(&(*head)-exam);(*head)-next = NULL;void InitiateHangBan(hangBan *head)*head = (hangBan *)malloc(sizeof(hangBan);(*head)-numofHangBan = 0;strcpy(*head)-typeofHB,);strcpy(*head)-startFly,);strcpy(*head)-endFly,);strcpy(*head)-startTime,);strcpy(*head)-endTime,);strcpy(*head)-DataofHB,);(*head)-flyTime = 0;(*head)-prise = 0;(*head)-largeNum = 0;(*head)-leaveNum = 0;InitiateKeHu(&(*head)-custemer);InitiateKeHu(&(*head)-orderofKeHu);void InitiateKeHu(keHu *head)*head = (keHu *)malloc(sizeof(keHu);strcpy(*head)-nameofKeHu,);(*head)-numofPiao = 0;(*head)-type = 0;(*head)-next = NULL;void hangBanInsert(Node *head,int numHB,char typeHB,char startF,char endF,char startT,char endT,char Data,float FT,float prise,int LM)Node *p;p = (Node *)malloc(sizeof(Node);/InitiateHangBan(&p-exam);/*InitiateNode(&p);*/p-exam = (hangBan *)malloc(sizeof(hangBan);p-exam-numofHangBan = numHB;strcpy(p-exam-startFly,startF);strcpy(p-exam-endFly,endF);strcpy(p-exam-startTime,startT);strcpy(p-exam-DataofHB,Data);strcpy(p-exam-endTime,endT);strcpy(p-exam-typeofHB,typeHB);p-exam-flyTime = FT;p-exam-prise = prise;p-exam-largeNum = LM;p-exam-leaveNum = LM;p-numofN = (*head)-numofN+1;p-next = NULL;/*p-exam-custemer = (keHu *)malloc(sizeof(keHu);p-exam-orderofKeHu = (keHu *)malloc(sizeof(keHu);*/InitiateKeHu(&p-exam-custemer);InitiateKeHu(&p-exam-orderofKeHu);if(*head)-numofN = 0)(*head) = p;return;(*head)-numofN +;p-next = (*head);(*head) = p;p = (*head);while(p != NULL)p-numofN = (*head)-numofN;p = p-next;int hangbanDelete(Node *head,int N)Node *p,*q,*s; s = (Node *)malloc(sizeof(Node);p = (Node *)malloc(sizeof(Node);q = (Node *)malloc(sizeof(Node);if(*head) != NULL)&(*head)-next = NULL)if(*head)-exam-numofHangBan = N)InitiateNode(head);return 1;elseif(*head)-exam-numofHangBan = N)(*head) = (*head)-next;s = (*head);(*head)-numofN -;while(s != NULL) s-numofN = (*head)-numofN; s = s-next; return 1;p = *head;q = *head;while(p != NULL)if(p-exam-numofHangBan = N)&(p-next != NULL)q-next = p-next;s = (*head);(*head)-numofN -;while(s != NULL) s-numofN = (*head)-numofN; s = s-next; return 1;if(p-exam-numofHangBan = N)&(p-next = NULL)q-next = NULL;s = (*head);(*head)-numofN -;while(s != NULL) s-numofN = (*head)-numofN; s = s-next; return 1;q = p;p = p-next;if(p = NULL) return 0;void searchforNumofHB(Node *head,int N)Node *p;int i = 0;p = (Node *)malloc(sizeof(Node);p = head;while(p != NULL)if(p-exam-numofHangBan = N)i +;printf(航?班号?:o%dn 航?班机型:o%s 日?期:o%s 起e飞机场?:o%sn 降落?机场?:o%s 起e飞时间?:o%s 降落?时间?:o%s n飞行D时长:o%f 航?班价?格?:o%f 航?班余票量?:o%dn,p-exam-numofHangBan,p-exam-typeofHB,p-exam-DataofHB,p-exam-startFly,p-exam-endFly,p-exam-startTime,p-exam-endTime,p-exam-flyTime,p-exam-prise,p-exam-leaveNum); /* system(pause);*/p = p-next;system(pause);if(i = 0)printf(n无T此?航?班-!?n);system(pause);void searchforStartF(Node *head,char sartF)Node *p;int i =0;p = (Node *)malloc(sizeof(Node);p = head;while(p != NULL)if(strcmp(p-exam-startFly,sartF) = 0)i+;printf(航?班号?:o%dn 航?班机型:o%s 日?期:o%s 起e飞机场?:o%sn 降落?机场?:o%s 起e飞时间?:o%s 降落?时间?:o%s n飞行D时长:o%f 航?班价?格?:o%f 航?班余票量?:o%dn,p-exam-numofHangBan,p-exam-typeofHB,p-exam-DataofHB,p-exam-startFly,p-exam-endFly,p-exam-startTime,p-exam-endTime,p-exam-flyTime,p-exam-prise,p-exam-leaveNum); /* system(pause);*/p = p-next;system(pause);if(i = 0)printf(n无T此?航?班-!?n);system(pause);void searchforEndF(Node *head,char endF)Node *p;int i = 0;p = (Node *)malloc(sizeof(Node);p = head;while(p != NULL)if(strcmp(p-exam-endFly,endF) = 0)i +;printf(航?班号?:o%dn 航?班机型:o%s 日?期:o%s 起e飞机场?:o%sn 降落?机场?:o%s 起e飞时间?:o%s 降落?时间?:o%s n飞行D时长:o%f 航?班价?格?:o%f 航?班余票量?:o%dn,p-exam-numofHangBan,p-exam-typeofHB,p-exam-DataofHB,p-exam-startFly,p-exam-endFly,p-exam-startTime,p-exam-endTime,p-exam-flyTime,p-exam-prise,p-exam-leaveNum);/* system(pause);*/p = p-next;system(pause);if(i = 0)printf(n无T此?航?班-!?n);system(pause);void searchforData(Node *head,char Data)Node *p;int i = 0;p = (Node *)malloc(sizeof(Node);p = head;while(p != NULL)if(strcmp(p-exam-DataofHB,Data) = 0)i +;printf(航?班号?:o%dn 航?班机型:o%s 日?期:o%s 起e飞机场?:o%sn 降落?机场?:o%s 起e飞时间?:o%s 降落?时间?:o%s n飞行D时长:o%f 航?班价?格?:o%f 航?班余票量?:o%dn,p-exam-numofHangBan,p-exam-typeofHB,p-exam-DataofHB,p-exam-startFly,p-exam-endFly,p-exam-startTime,p-exam-endTime,p-exam-flyTime,p-exam-prise,p-exam-leaveNum); /*system(pause);*/p = p-next;system(pause);if(i = 0)printf(n无T此?航?班-!?n);system(pause);void insertKeHu(keHu *head,char name,int sum)/插?入?客户信?息keHu *p,*q;p = (keHu *)malloc(sizeof(keHu);q = (keHu *)malloc(sizeof(keHu);q = (*head);strcpy(p-nameofKeHu,name);p-numofPiao = sum;p-next = NULL;p-type = 0;while(q-next != NULL)q = q-next;if(strcmp(q-nameofKeHu,name)=0)q-numofPiao += sum;return;q-next = p;int deleteKeHu(keHu *head,char name,int sum)keHu *q,*p;int a;p = (*head)-next;q = *head;while(p != NULL)if(strcmp(p-nameofKeHu,name) = 0)if(sum = p-numofPiao)a = p-numofPiao;q-next = p-next;return a;if(p-numofPiao sum)p-numofPiao -= sum;return sum; q = p;p = p-next;if(p = NULL)printf(n无T此?客户-!?n);system(pause);return 0;inline void popKeHu(keHu *head,keHu *pop)(*pop) = head-next;void popDKeHu(keHu *head)if(head-next-next != NULL)head-next = head-next-next;elsehead-next = NULL;void bookKeHu(Node *head,int N,char name,int sum)/客户订?票Node *p,*q;/*p = (Node *)malloc(sizeof(Node);q = (Node *)malloc(sizeof(Node);*/p = *head;q = NULL;while(p != NULL)if(p-exam-numofHangBan = N)q = p;p = p-next;if(q = NULL)printf(n无T此?航?班!?请?重?新?输?入?n);printf(n定票失败-非?常抱歉?-!?n);system(pause);return;if(q-exam-leaveNum = 0)printf(n票已?经-卖?完!?请?继续?关?注-n您愿?意a进?入?排?队等候吗e??愿?意a就输?入?(1)?,?否?则输?入?(0)?:on);int i;scanf(%d,&i);if(i = 1)insertKeHu(&q-exam-orderofKeHu,name,sum);printf(n您已?经-排?队-!?n);system(pause);return;if(q-exam-leaveNum = sum) insertKeHu(&q-exam-custemer,name,sum); q-exam-leaveNum -= sum; printf(n订?票成功|-!?n); cout客户名?字?为a:onameendl客户订?票数y量?为a:osumexam-leaveNum 0)&(q-exam-leaveNum exam-leaveNum);int i;scanf(%d,&i);if(i = 0) printf(n很抱歉?-订?票失败!?n); system(pause); return;if(i = 1)insertKeHu(&q-exam-orderofKeHu,name,sum - q-exam-leaveNum);insertKeHu(&q-exam-custemer,name,q-exam-leaveNum);cout客户名?字?为a:onameendl客户订?票数y量?为a:oexam-leaveNumexam-leaveNum);system(pause);q-exam-leaveNum = 0;return;void returnKeHu(Node *head,int N,char Data,char name,int sum,int flag = 0)/sum表示?退?票的?数y量?;? Node *p,*q; int a = sum,b;p = head;while(p != NULL)if(p-exam-numofHangBan = N)q = p;p = p-next;if(q = NULL)printf(n无T此?航?班!?请?重?新?输?入?n);system(pause);if(sum q-exam-largeNum)printf(n您的?退?票数y额?太?大!?n);system(pause);return;if(sum exam-custemer,name,sum);a = b;if(b)if(q-exam-leaveNum 0) q-exam-leaveNum +=b; cout客户名?字?为a:onameendl退?票数y量?为a:obexam-leaveNum += b;cout客户名?字?为a:onameendl退?票数y量?为a:obexam-orderofKeHu-next!=NULL)&(a 0)printf(n现?在有D所余票是?否?留?给?排?队的? %s ,?是?(1)?否?(0)?:on,q-exam-orderofKeHu-next-nameofKeHu);int i;keHu *s;scanf(%d,&i);if(i = 0)return;printf(n余票未发给?任?何?人?!?!?n);system(pause);if(i = 1)/*keHu *s;*/popKeHu(q-exam-orderofKeHu,&s);if(s-numofPiao numofPiao = a)insertKeHu(&q-exam-custemer,s-nameofKeHu,s-numofPiao);q-exam-leaveNum -= s-numofPiao;popDKeHu(q-exam-orderofKeHu);a = 0;cout客户名?字?为a:onameofKeHuendl票数y量?为a:onameofKeHuexam-custemer,s-nameofKeHu,s-numofPiao);q-exam-leaveNum -= s-numofPiao;popDKeHu(q-exam-orderofKeHu);/*returnKeHu(head,N,Data,name,a-s-numofPiao,1);*/a -= s-numofPiao;cout客户名?字?为a:onameofKeHuendl票数y量?为a:onumofPiaoendl;cout订?票成功|-!?exam-leaveNum = 0)printf(n余票已?全?部?发给?!?!?n);system(pause);/*return;*/else/a大于头一?个?人?的?票的?需求量?insertKeHu(&q-exam-custemer,s-nameofKeHu,a);q-exam-leaveNum -= a;q-exam-orderofKeHu-next-numofPiao -= a;a = 0;cout客户名?字?为a:oexam-orderofKeHu-next-nameofKeHuendl票数y量?为a:oaexam-leaveNum 0)returnKeHu(head,N,Data,name,a-s-numofPiao,1);*/if(q-exam-orderofKeHu-next = NULL)printf(n没?有D排?队客户了? 余票部?分?发给?!?-还1有D%d张?票!?n,q-exam-leaveNum);system(pause); Main.cpp/源文件#includeiostreamusing namespace std;#includeFly.hvoid hangBanM(Node *head);void hangBanSearch(Node *head);void hangBanBook(Node *head);void hangBanReturn(Node *head);void GongNeng(Node *head);void main()Node *head;InitiateNode(&head);/char typeHB20 = H,B,C;/char startF20=;/char endF20=;/char startT20=;/char endT20=;/char Data20=;/char name20;/strcpy(name,贺?成立);/strcpy(typeHB,HBC);/strcpy(startF,beijing);/strcpy(endF,wuhan);/strcpy(startT,20120123 14:24);/strcpy(endT,20120126 06:00);/strcpy(Data,20120123 manday);/hangBanInsert(&head,0,typeHB,startF, endF,startT,endT,Data,25,1000,85);/hangBanInsert(&head,1,typeHB,startF, endF,startT,endT,Data,25,1000,85);/hangBanInsert(&head,2,typeHB,startF, endF,startT,endT,Data,25,1000,85);/*searchforNumofHB(head,2);/searchforNumofHB(head,1);/searchforNumofHB(head,0);*/searchforStartF(head,startF);/bookKeHu(&head,1,ff,15);/bookKeHu(&head,1,aa,80);/bookKeHu(&head,1,nn,12);/bookKeHu(&head,1,gg,35);/returnKeHu(head,1,Data,ll,20);GongNeng(head);void GongNeng(Node *head)system(cls);printf(n -欢?迎-进?入?航?空?机票预定系统3-n);printf(n1 :o 航?班信?息管理);printf(n2 : 查询航?线?); printf(n3 :o 订?票业务?);printf(n4 :o 退?票业务?);printf(n5 :o 退?出?系统3n);int GN = 0;printf(n请?您选?择?:o);scanf(%d,&GN);switch(GN)case 1 :hangBanM(hea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 能源天然气综合利用项目建议书
- 2022年交通安全活动总结(15篇)
- 焦炉煤气制甲醇项目建议书(模板)
- 建材物流园工程初步设计
- 既有供暖蒸汽管网及设施改造项目建议书(参考范文)
- 法制宣传教育讲座
- 四川省雅安市名山中学2023-2024学年高一上学期12月月考生物 含解析
- 美术教育生职业生涯规划
- 幼儿识字教学设计及实施策略
- 潍坊护理职业学院《仿生智能材料》2023-2024学年第二学期期末试卷
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- 调机品管理规定
- 线性代数期末试题同济大学第五版附答案
- 国家最新煤的发热量测定方法
- 超星尔雅学习通《美的历程美学导论》章节测试含答案
- 最新民间非盈利组织财务报表(资产负债表)EXCEL版
- 危重病人床头交接班记录(样本)
- 城市综合管廊运营与维护方案设计
- 智力题,移动一根火柴使等式成立复习课程
- 食物过敏儿童的营养管理策略PPT课件
- 《质量管理体系文件》成品检验报告(COA)
评论
0/150
提交评论