已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
这是我上网搜的一个材料,大家看一下,我们这次课程设计用java语言来实现,大家仔细看一下项目需求分析,基本要实现的功能如下,大家自己也在网上下些资料,共享一下,人多力量大,好好研究研究项目,下周会聚集大家讨论一下,定下每个人要完成的任务,大家一定要仔细研究,到时候有什么要添加修改的都提出来,做到让项目完美。航空客运定票系统应该为客户提供三个基本的功能:查询航线、客票预定和办理退票。(一)查询航线:能够根据客户提出终点站名输出相关的信息,包括航班号、飞机号、飞行日期、载员定额、余票量、已定票的客户名单(包括该客户的姓名、定票量、舱位等级)以及等候替补的客户名单(包括姓名和所需票量)、最近一天航班的日期和余票额;由于航空公司的航班保持基本不变,所以应该采用顺序存储结构将各条航线的基本情况登陆在一张线性表上,按照终点站名有序排列。(二)客票预定:根据客户提出的要求(航班号和定票数额)查询该航班的余票情况。如余票能够满足客户的要求则为客户办理定票手续并输出相应的座位号;若该航班已经满员或余票额少于客户的定票额,则需重新询问客户需求。若需要可登记排队候补并留下客户的联系方式,不需要则退出。在客票预定这一环节里将出现两个客户名单:已定票客户名单和需定票客户名单。两客户名单可分别由线性表和队列实现。为查找方便,已定票客户的线性表应按姓名有序,同时为了插入和删除方便,应以链表作为存储结构。由于无法知道预约的人数,队列也应该以链表作为存储结构。(三)办理退票:根据客户提供的情况(日期航班),为客户办理退票手续,同时在系统中删除该客户的基本信息。然后查询该航班是否有人排队替补,首先访问排在第一的客户,若退票额能够满足他的要求,则为他办理定票手续,否则依次询问其他排队候补的客户。从问题的提出可以看到,我们需要的只是能实现对数据的插入 ,删除,检索这样一个软件。由于乘客的数量较大并且不固定,因此选择用链表来保存乘客的基本信息:包括乘客的姓名,身份证号,搭乘班机的航班号,以及预定的座位号(假设座位预先订号)。为了将这些信息保存起来以备下次程序运行时调用,将必需的信息写入文件中,在程序的初始化时读入。综合一下来看,我们需要做的是建立一个可以插入和删除节点的链表,并能检索这个链表,在必要的时候将链表的内容保存到文件中。任何一家航空公司都想尽可能的为客户提供优质的服务。设计这样一个面向顾客的航空订票系统,最重要的就是设计的功能人性化,这就要求:采用先进的设计理念与开发工具,用技术全面提升服务,保证系统功能的强大与完整;具有高可靠性和强大有效的容错能力是系统设计的重要前提,不能影响平台的运行。在系统设计过程中应充分考虑系统的可扩展性,使系统可满足不断优化、不断升级和新业务整合切入的需求。1、航空客运订票系统 【问题描述】 航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。试设计一个航空客运订票系统,以便上述业务可以借助计算机来实现。 【需求分析】 系统能实现的操作和功能如下: (1)查询航线:根据旅客提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额; (2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补; (3)承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘客定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);航班是否有人排队 候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。 下面这个C编写代码我之所以没删,是想让大家看看各部分功能在C中是怎样实现的,比如说订票的多种情况,不同情况,不同的提示等,这都是可以借鉴的。用顺序表的查找和链队列实现#include #include #include #include #include #include #include /overflow#define ok 1 typedef struct Yidingkehu/单链表char name15;/已订票的客户姓名int dingpiaoshu;/已订票数量struct Yidingkehu *next1;/Yidingkehu,*Link;typedef struct Weidingkehu/单链队char name15;/预订票的客户姓名 int yudingpiao;/ 要订票数量struct Weidingkehu *next2;/下一个链队结点指针Weidingkehu,*Qptr;typedef struct Qptr front;/单链队头结点Qptr rear;/单链队尾结点linkQueue; typedef struct Hangxian/创建一个含有六个信息的结构体char hangbanhao15;/航班号-char feijihao15;/飞机号int feixingriqi;/起飞时间int chenkerenshu;/座位数 int yupiao;/余票char zhongdianzhai15;/降落城市struct Hangxian *next;/指向下一个链结点的指针struct Yidingkehu *yiding;/定义一个指向已订票客户的头结点指针struct Weidingkehu *yudingqueue;Hangxian,*Linklist;struct Hangxian *L=NULL;/struct Yidingkehu *H;/为已订票客户链队来申请空间linkQueue Q;/linkQueue类型的来申请空间Linklist InitLinklist();/01int InsertLinklist(Linklist &head1);/02void hbhchaxun();/通过航班号查询void mddchaxun();/通过目的地查询void lurugongneng();/初始化录入功能void chaxungongnen();/查询功能void dingpiaogongnen();/订票功能void tuipiaogongnen();/退票功能void main()H=(struct Yidingkehu*)malloc(sizeof(Yidingkehu);Q.front=Q.rear=(Qptr)malloc(sizeof(Weidingkehu);InitLinklist();int n;do /打印主界面printf(t 欢迎使用航空客运订票系统n);printf(t+n);printf(t=1. 录入功能 =n);printf(t=2. 查询功能 =n);printf(t=3. 订票功能 =n);printf(t=4. 退票功能 =n);printf(t=5. 退出 =n);printf(t+n);printf(t请选择:);scanf(%d,&n);printf(n);switch(n)case 1: lurugongneng();/录入功能 break;case 2: chaxungongnen();/查询功能 break;case 3: dingpiaogongnen();/订票功能break;case 4:tuipiaogongnen();/退票功能 break;default :exit(0);/退出while(n=1|n=2|n=3|n=4);void lurugongneng()/初始化的单链表*录入功能int j=1,m;do if(!InsertLinklist(Linklist) L) /向其中加入航班信息 printf(内存已满n); exit(OVERFLOW); /向链表中加一结点 printf(t是否要输入下一个航线记录?n); printf(t是请输入1n); printf(t否请输入2nt); scanf(%d,&m); /在这里依靠人来决定是否输入下一条航线记while(m=1);Linklist InitLinklist()/01L=(Linklist)malloc(sizeof(Hangxian);if(!L) exit(OVERFLOW);L-next=NULL;/建立一个带有头结点的单链表return (L);int InsertLinklist(Linklist &L)/02向航线链表添加新的结点 Linklist p;/int m,n;p=(Linklist)malloc(sizeof(Hangxian);/为一个新的结点分配空间if(!p) exit(OVERFLOW);printf(t请依次输入下面几项内容:nn);/这里的输入采用一个个单独输入,避免了乱赋值的现象printf(航班号n);gets(p-hangbanhao);/这里的二个gets主要是因为在回车键的输入,其中的第一个是来接收上次的回车gets(p-hangbanhao);printf(飞机号n);gets(p-feijihao);printf(终点站n);gets(p-zhongdianzhai);printf(飞行日期n);scanf(%d,&p-feixingriqi);printf(乘客总数n);scanf(%d,&p-chenkerenshu);printf(余票数n);scanf(%d,&p-yupiao);p-yiding=(struct Yidingkehu*)malloc(sizeof(Yidingkehu);/为它申请空间p-yudingqueue=Q.front=Q.rear=(Qptr)malloc(sizeof(Weidingkehu);/为它申请空间p-next=L-next;/L-next=p;/这二句是链表中的头插法插入一个结点return (ok);void chaxungongnen()/*查询功能int n;printf(t 查 找 航 线 信 息 n);printf(t+n);printf(t=1. 通过目的地查询 =n);printf(t=2. 通过航班号查询 =n);printf(t+n);printf(t请选择:);scanf(%d,&n);printf(n);/格式化switch(n)case 1:mddchaxun(); break;case 2:hbhchaxun(); break;default :break;void mddchaxun()/通过目的地查询char c15;int m;Linklist p=L;printf(t请输入要查询的目的地:); gets(c); gets(c);/原因同上 do p=p-next; if(p) m=strcmpi(*p).zhongdianzhai,c);/如果=的话则m=0; if(m=0) printf(t航班信息:n); printf(t航班号:%sn,p-hangbanhao); printf(t飞机号:%sn,p-feijihao); printf(t飞行时间:周%dn,p-feixingriqi); printf(t余票量:%dn,p-yupiao); else /如果不匹配的话就做 printf(t对不起没有你要找的目的地:nn); m=0; while(m!=0);void hbhchaxun()/通过目的地查询char c15;int m;Linklist p=L;printf(t请输入要查询的航班号:);gets(c); gets(c);printf(n);do p=p-next; if(p) m=strcmpi(*p).hangbanhao,c);/如果=的话则m=0;这里的(*p).与p-的作用是一样的 if(m=0) printf(t航班信息:n); printf(t航班号:%sn,p-hangbanhao); printf(t飞机号:%sn,p-feijihao); printf(t飞行时间:周%dn,p-feixingriqi); printf(t余票量:%dnn,p-yupiao); else /如果不匹配的话就做 printf(t对不起没有你要找的航班号:n); m=0; while(m!=0);void dingpiaogongnen()/*订票功能Linklist p=L;/Linklist类型的L来指向链表头Yidingkehu *h=H,*h1;/Yidingkehu 定义客户的结点,方便插入与删除linkQueue q=Q;/linkQueue类型的来 ,方便插入与删除char c15;int m=1,piao,ydpiao=0,yd=0,n;/gets(c); printf(请输入终点站名:); gets(c); printf(n); p=L-next; if(p) do/查找一下,是否有这个航班 if(!p) printf(对不起,没有你要找的航班:nn); goto loop1; m=strcmpi(p-zhongdianzhai,c); if(m=0) printf(航班信息:n); printf(航班号:%sn,p-hangbanhao); printf(飞机号:%sn,p-feijihao); printf(飞行时间:周%dn,p-feixingriqi); printf(余票量:%dn,p-yupiao); else p=p-next; while(m!=0); if(m=0) do printf(n请输入你要订的票数:); scanf(%d,&piao); if(piaoyupiao) h=p-yiding; if(h) h1=h; h=h-next1; h=(struct Yidingkehu*)malloc(sizeof(Yidingkehu); printf(请输入你的名字:); gets(h-name);gets(h-name); h-dingpiaoshu=piao; h-next1=h1-next1; h1-next1=h; p-yupiao=p-yupiao-piao; printf(订票成功:n); m=2; else printf(余票量:%dn,p-yupiao); printf(对不起,余票 %d 张不足,不能完成订票nn,p-yupiao); printf( 是否要重新订票?n); printf(需要请输入1 否则请按2 预订请输入3 : ); scanf(%d,&m); printf(n); if(m=3) goto loop3; while(m=1); else if(!p) loop3: struct Weidingkehu *q3; printf(对不起,该航班的票已售完n); q.front=p-yudingqueue; if(q.front=q.rear) printf(没有人预订票,是否要预订?n); else if(q.front!=q.rear) printf(已有人预订票,是否要预订?n); printf(预订请输入1 否则输入2 : ); scanf(%d,&n); printf(n); if(n=1) q3=(Qptr)malloc(sizeof(Weidingkehu); printf(请输入你的姓名); gets(q3-name); gets(q3-name);/q3不能指向name? printf(请输入订票数); scanf(%d,&q3-yudingpiao); q3-next2=NULL; q.rear-next2=q3; q.rear=q3; printf( 你已经预订了 !n); loop1:; void tuipiaogongnen()/*退票功能Linklist p=L;Yidingkehu *h=H,*h1,*h2;linkQueue q=Q;char c15,name115;int m=1,piao,n;/gets(c); printf(请输入航班号:); gets(c); p=L;/-next; if(p) do /使用do while来查找是否有此航班 if(!p) /如果是到了表尾且没有匹配,goto至再输入航班号 printf(n对不起,没有你要找的航班:n); goto loop1; m=strcmpi(p-hangbanhao,c);/如果匹配的话,m=0 if(m=0) printf(t航班信息:n); printf(航班号:%sn,p-hangbanhao); printf(飞机号:%sn,p-feijihao); printf(飞行时间:周%dn,p-feixingriqi); printf(余票量:%dn,p-yupiao); else p=p-next; while(m!=0); if(m=0) /如果找到了,就来给他退票 do h=p-yiding; if(h) printf(请输入你的姓名:); gets(name1);/gets(name1); printf(请输入你订的票数:); scanf(%d,&piao); printf(n); h1=h; h=h-next1; if(strcmpi(h-name,name1)=0&h
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年社区工作者必考试题库带答案解析
- 2025吉林辽源东辽县消防救援大队招聘政府专职消防员20人参考题库附答案解析
- 2025江西九江永修中环物产管理有限公司招聘工作人员1人模拟试卷带答案解析
- 2026年陕西省选调生招录考试已发布参考题库附答案解析
- 中国科学院生态环境研究中心2026年科技和支撑岗位招聘备考题库含答案解析(必刷)
- 2025广东工贸职业技术学院招聘事业编制人员11人历年真题库带答案解析
- 2025年中国科学技术大学火灾安全全国重点实验室劳务派遣岗位招聘2人备考题库附答案解析
- 2025中国储备粮管理集团有限公司安徽分公司员工招聘55人历年真题汇编带答案解析
- 2025海南三亚市卫生健康委员会招聘下属事业单位工作人员(第7号)参考题库带答案解析
- 2025山东滨州平安综合金融招聘社区金融专员16人模拟试卷带答案解析
- 2025 三年级数学上册分数的初步认识课件
- 新闻职称答辩题库及答案
- 点卡售卖合同范本
- 银行工作派遣合同范本
- 酒店用电安全知识培训
- 雨课堂学堂云在线《实yong大学英语语法(内蒙古大学 )》单元测试考核答案
- 班级家委会年终工作总结
- 了解事物的本质课件
- 仓库管理员面试题及答案
- 山西省太原市2025-2026学年高三上学期11月期中考试物理试卷
- 2026品牌营销日历【营销节点】
评论
0/150
提交评论