ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:251.52KB ,
资源ID:25679387      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25679387.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计航班订票系统.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计航班订票系统.docx

1、数据结构课程设计航班订票系统 东华大学课程设计报告目录 航空订票系统 1一、 实验内容 3二、 实验目的 3三、 实验思路 4四、 源程序 4 运行结果 12 哈希表查找的设计 17一、 问题描述 17二、 源程序 17 运行结果 19航空订票系统一、 实验内容 任务:航空客运定票的业务活动包括:查询航线、客票预定和办理退票等。试设计一个航空客运定票系统,以使上述业务可以借助计算机来完成。 功能要求:1) 录入:可以录入航班情况2) 查询:可以查询某个航线的情况(如输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3) 订票

2、:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4) 退票: 可退票,退票后修改相关数据文件;5) 客户资料:有姓名,证件号,订票数量及航班情况,订单要有编号;6) 修改航班信息:当航班信息改变可以修改航班数据文件。二、 实验目的上机实习是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。实习题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧以至一整套软件工作规范的训练和科学作风的培养。希望通过本次课程设计,使学生能够独立地完成从问题分析到文档撰写一整套的软件设计过程

3、,达到学以致用的目的。三、 实验思路1) 采用带头结点的线性链表储存航班信息2) 同样采用带头结点的线性链表储存订单信息四、 源程序#include#include#includea) 定义结构体/*定义Flight结构体链表,用于储存航班信息。 */typedef struct Flight char number10; /航班号 char staplace10; /出发城市 char endplace10; /到达城市 char statime10; /出发时间 char endtime10; /到达时间 float price; /价格 float discount; /折扣 int s

4、um; /总票数 int rest; /余票数 struct Flight *next;/指向下一个Flight,*Flightlist;/*定义ticket结构体链表,用于储存订票信息以及客户资料*/typedef struct ticket int ordernum; /订单号 char name10; /客户姓名 char passport10; /客户证件号 int num; /订票数量 Flightlist air; /航班信息 struct ticket *next;ticket,*ticketlist;b) 定义相关调用函数/*录入航班信息(“FF”是带头结点的)*/void L

5、istInsert_F(Flightlist &FF) int i; Flightlist p=FF,s; for(;p-next!=NULL;p=p-next); /让“p”指向最后一个结点 printf(所需输入航班数:); scanf(%d,&i); while(i0) /先将航班信息录入“s”中,然后插在“p”后面,循环至录完所有航班 s=(Flightlist)malloc(sizeof(Flight); scanf(%s %s %s %s %s %f %f %d %d,s-number,s-staplace,s-endplace,s-statime,s-endtime,&s-pri

6、ce,&s-discount,&s-sum,&s-rest); p-next=s; p=p-next; i-; p-next=NULL; /以便以后顺利找到尾结点 printf(录入完成!按回车键返回主菜单。); getchar();getchar(); /让主菜单不至于太快出现 printf(nnn);/*查找航班信息*/void Search_F(Flightlist FF) int x=0; char i,number10,staplace10,endplace10; Flightlist p=FF-next; /让“p”指向第一组航班 printf(按航班号查询请输入“1”;按始终点查

7、询请输入“2”。请选择:); scanf(n%c,&i); while(i!=1&i!=2) /当选择不正确时,提示重新输入 printf(选择有误!请重新选择:); scanf(n%c,&i); if(i=1) /按航班号查询 printf(请输入需查询的航班号:); scanf(%s,number); while(1) if(!strcmp(p-number,number) printf(所查询航班信息:n航班号:%sn出发城市:%sn到达城市:%sn出发时间:%sn到达时间:%sn价格:%fn折扣率:%fn,p-number,p-staplace,p-endplace,p-statime

8、,p-endtime,p-price,p-discount); if(p-rest!=0) printf(航班未满员,余票为:%dn,p-rest); else printf(该航班已满员!n); break; else p=p-next; if(p=NULL)printf(没有该航班的信息!);break; /p=NULL时,即将所有航班都查询了但没有找到 else if(i=2) /按出发、到达城市查询 printf(请输入出发城市:);scanf(%s,staplace); printf(请输入到达城市:);scanf(%s,endplace); while(1) if(!strcmp(

9、p-staplace,staplace)&!strcmp(p-endplace,endplace) printf(所查询到的航班信息:n(%d)n航班号:%sn出发城市:%sn到达城市:%sn出发时间:%sn到达时间:%sn价格:%fn折扣率:%fn,x+1,p-number,p-staplace,p-endplace,p-statime,p-endtime,p-price,p-discount); if(p-rest!=0) printf(航班未满员,余票为:%dn,p-rest); else printf(该航班已满员!); x+; /用“x”记录查询满足条件的航班数 p=p-next;

10、if(p=NULL)break; if(x=0) printf(没有查到相关航班!); printf(按回车键返回主菜单。); getchar();getchar(); printf(nnn);/*订票并生成订单。考虑到订票时需改变相应航班的余票数,同时在其他地方调用航班结构体时又不影响结构体变化,因此同时*/void Booking_F(Flight F,Flightlist L,ticketlist &T) int i=0,j,r,x=1; char number10,staplace10,endplace10; Flightlist f=&F,k=L-next; Flightlist h

11、,p,q,s=f-next; ticketlist t,u; printf(按航班订票请输入“1”;按始终点订票请输入“2”。请选择:); scanf(%d,&r); while(r!=1&r!=2) printf(选择有误!请重新选择:); scanf(%d,&r); if(r=1) q=f-next; printf(请输入航班号:); scanf(%s,number); while(strcmp(q-number,number)!=0) /根据航班号寻找航班 if(q-next=NULL) /航班未找到 printf(未搜到相关航班的信息。); x=0; /记录未找到航班 break; q

12、=q-next; if(q-reststaplace,q-staplace)&!strcmp(s-endplace,q-endplace) if(s-rest0) printf((%d)n航班号:%sn出发城市:%sn到达城市:%sn出发时间:%sn到达时间:%sn价格:%fn折扣率:%fn余票:%dn,i+1,s-number,s-staplace,s-endplace,s-statime,s-endtime,s-price,s-discount,s-rest); h-next=s;h=h-next;i+; /用“i”记录供选择的航班数 s=s-next; if(s=NULL)break;

13、/查询完毕,跳出循环 if(i!=0) /“i=0”表示未搜到可供选择的航班 printf(请选择:); scanf(%d,&j); while(ji|j0;j-) p=p-next; /让“p”指向客户需预订的航班 else printf(未搜到有余票的航班。);x=0; else if(x!=0) p=q; printf(航班信息如下:n航班号:%sn出发城市:%sn到达城市:%sn出发时间:%sn到达时间:%sn价格:%fn折扣率:%fn余票:%dn,q-number,q-staplace,q-endplace,q-statime,q-endtime,q-price,q-discount

14、,q-rest); else if(r=2) p=(Flightlist)malloc(sizeof(Flight);h=p;/“p”用来暂时储存供选择的航班信息 printf(请输入出发城市:); scanf(%s,staplace); printf(请输入到达城市:); scanf(%s,endplace); printf(所查询到有余票的航班信息:n); while(1) if(!strcmp(s-staplace,staplace)&!strcmp(s-endplace,endplace) if(s-rest!=0) printf((%d)n航班号:%sn出发城市:%sn到达城市:%s

15、n出发时间:%sn到达时间:%sn价格:%fn折扣率:%fn余票:%dn,i+1,s-number,s-staplace,s-endplace,s-statime,s-endtime,s-price,s-discount,s-rest); h-next=s;h=h-next;i+; s=s-next; if(s=NULL)break; /查询完毕,跳出循环 if(i!=0) printf(请选择:); scanf(%d,&i); for(;i0;i-) p=p-next; /让“p”指向客户需预订的航班 else printf(未搜到有余票的航班。);x=0; if(x!=0) t=T; if

16、(t-next=NULL) t-ordernum=0; /当订单链表为空时,使头结点订单号为零,以便后面操作 for(;t-next!=NULL;t=t-next); /让“t”指向尾结点 u=(ticketlist)malloc(sizeof(ticket); /分配动态储存空间,存储输入的订单信息 printf(请输入姓名:); scanf(%s,u-name); printf(请输入证件号:); scanf(%s,u-passport); printf(订票数量:); scanf(%d,&u-num); if(u-numrest) /订票数不可以大于航班余票,否则订票失败 u-air=p

17、; u-ordernum=t-ordernum+1; /“新订单号”=“前一订单号”+1 t-next=u; /让新订单接着后面 u-next=NULL; /仍然使尾结点的next不指向任何 for(;k-number!=p-number;k=k-next); k-rest=(k-rest)-(u-num); /减少相应余票数量 printf(订票成功!n您的订单为:n); printf(订单号t姓名t证件号tt订票数t航班n); printf(%dt%st%st%dt%sn,u-ordernum,u-name,u-passport,u-num,u-air-number); else prin

18、tf(订票失败,票数不足!); printf(n按回车键返回主菜单); getchar();getchar(); printf(nnn); /*退票,删除相应订单,并增加相应航班余票数*/void return_F(Flightlist L,ticketlist T) int ordernum,x=1,y=1,r; Flightlist p=L-next; ticketlist t=T-next,h=T; printf(请输入订单号:); scanf(%d,&ordernum); while(t-ordernum!=ordernum) /查询订单位置 if(t-next=NULL) print

19、f(没有查询到该订单!);x=0;break; h=t;t=t-next; /让“h”指向所查订单的前一位置,“t”指向所查订单位置 if(x!=0) printf(订单信息:n订单号:%dn姓名:%sn证件号:%sn航班号:%sn出发城市:%sn到达城市:%sn,t-ordernum,t-name,t-passport,t-air-number,t-air-staplace,t-air-endplace); printf(是否确定退票?(1)是 (2)否); printf(n请选择:); scanf(%d,&r); while(r!=1&r!=2) printf(输入有误!请重新输入:);

20、scanf(%d,&r); if(r=1) for(;strcmp(p-number,t-air-number);p=p-next); p-rest+; /增加相应航班余票数 h-next=t-next; /删除订单 free(t); printf(退票成功!); else if(r=2)printf(取消成功!); printf(n请按回车键返回主菜单); getchar();getchar(); printf(nnn);void customer(ticket T) ticketlist t=&T,s=t-next; printf(订单号t姓名t证件号tt订票数t航班号n); while(

21、s!=NULL)printf(%dt%st%st%dt%sn,s-ordernum,s-name,s-passport,s-num,s-air-number); s=s-next; printf(n请按回车键返回主菜单); getchar();getchar(); printf(nnn);void change_F(Flightlist F) int x=1; char number10; Flightlist f; printf(请输入需修改航班的航班号:); do scanf(%s,number); f=F-next; while(strcmp(f-number,number)!=0) i

22、f(f-next=NULL) printf(未查询到该航班。请重新输入:); x=0;break; f=f-next; while(x=0); printf(请输入修改后的信息(出发地点 到达地点 出发时间 到达时间 价格 折扣 总票数 余票):n); scanf(%s %s %s %s %f %f %d %d,f-staplace,f-endplace,f-statime,f-endtime,&f-price,&f-discount,&f-sum,&f-rest); printf(修改成功。请按回车键返回主菜单); getchar();getchar();c) 主函数int main() i

23、nt k,x,z=1; Flightlist FF;Flight F; ticketlist GG;ticket G; FF=&F;GG=&G; FF-next=NULL;GG-next=NULL; while(z=1)printf(*n*t航班订票系统t*n*n);printf(菜单:t1)录入nt2)查询nt3)订票nt4) 退票nt5) 查看客户资料nt6) 修改航班信息nt7)退出n); printf(*n); printf(请选择所需操作:); do x=1; scanf(%d,&k); switch(k) case 1:ListInsert_F(FF);break; case 2:

24、Search_F(FF);break; case 3:Booking_F(F,FF,GG);break; case 4:return_F(FF,GG);break; case 5:customer(G);break; case 6:change_F(FF);break; case 7:z=0;break; default:printf(输入错误!请重新选择:);x=0; while(x=0); return 0; 运行结果主菜单:i. 录入航班信息ii. 查询航班信息按航班号查询按始终点查询iii. 订票按航班号订票按始终点订票还有一组客户就不展示了iv. 查看客户资料v. 退票退票后客户资料为vi. 修改航班信息修改后查询该航班信息为vii. 退出哈希表查找的设计一、 问题描述设哈希表长为20,用除留余数法构造一个哈希函数,以开放定址法中的线性探测再散列法作为解决冲突的方法,编程实现哈希表查找、插入和建立算法。二、 源程序#include#include#define SIZE 20#define M 13#define NULLKEY 01. 定义结构体储存哈希表typedef struct int elemSIZE; int count; /哈希表中已有关键字个数Hashtable;2. 定义需调用函数/*定义哈希表建立、插入函数*/vo

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1