



付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、飞机订票系统下载可编辑一、课程设计目的( 1)了解并掌握算法的设计方法,具备初步的独立分析和设计能力;( 2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;( 3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;二、课程设计的内容和要求本程序主要用于机票的管理,甩以提供了以下功能,行班信息输入输出保存、航线查询、订票,退票,和修改航班信息。创建航班信息: 包括航班号、起飞时间、降落时间、起飞抵达城市、航班票价、及票价的折扣,票数等信息 . 录入的信息应该保存在一个文件里。浏览航班信息 : 通过浏览系统,客户可以根据自己时间、金钱等多方面的因素选择适合自己的
2、航班。修改航班信息: 当航班信息改变可以修改航班数据文件。查询航班信息: 可通过航班号查询, 可通过飞机终点站查询, 也可以按航线查询 。删除航班信息 : 可通过航班号删除,也可以按航线删除。添加航班信息: 按添加的航班数量依次添加航班信息订票: 可以订票,如果该航班已经无票,可以推荐相关航班退票: 不满意所订的票时可进行退票三、算法的基本思想1. 涉及到的数据结构typedef struct flightnode/定义结构体数组int num;/航班号char start20;/起始城市char over20;/终点城市char Stime10;/起始时间har Etime10;int Pr
3、ice;int Discount;/折扣int count;/机票数struct flightnode *next; NODE;.专业 .整理 .下载可编辑2. 基本功能模块飞机票管理系统创浏修查删添建览改找除加航航航航航航订退班班班班班班票票信信信信信信息息息息息息主函数模块。1)函数原形: void main();2)功能:调用 initlist(&h)函数和 menu()函数,初始化函数和显示主界面创建航班信息模块1)函数原形: void creat();2)功能:本模块是对程序中的 create() 函数和 save()函数的详细说明链表的存储结构,对该创建的链表调用 save
4、()函数,存储到数据文件中去浏览航班信息模块1) 函数原形 : void print();2) 功能:输出航班信息修改航班信息模块1) 函数原形 : void change()2) 功能:当航班信息改变可以修改航班数据文件.专业 .整理 .下载可编辑20 查找航班信息模块1)函数原形 :NODE *search() :查找航班信息数据2) 功能:由于航班的录入和保存是由链表存储结构进行的,所以此查询就可通过链表对该文件进行查看或者查询, 查询我们可根据航班号和航班抵达的城市和航线匹配查询,在查询中将需要查询的航班号no 和文件阅读时指针所指的值num 进行比较,而按抵达城市查找则利用函数str
5、cmp(p->next->start,name1)若匹配则输出;删除航班信息模块1)函数原形 :void del()2) 功能:选择按什么方式删除,然后按该方式删除添加航班信息模块1)函数原形 :void add();2) 功能:按添加的航班数量依次添加航班信息订票信息模块1)函数原形 : int book_tickets()2) 功能: 先根据 search() 函数查询要订票的航班,在订票时应先按乘客想要定的航班号或者抵达城市或航线查询, 并按乘客欲定的票的数目与查询数目进行比较,若订票的票数小于该航班票数,则输出订票成功,且在整个定票系统中,所有的定票都用链表进行存储管理退票
6、信息模块1)函数原形 : int tuipiao()2) 功能:在退票系统中即对航班票的数据文件进行管理,所以可先按照查询航班票的方法, 若查询到的票的信息和乘客此时要求退票的信息相匹配,则在该定票数据文件中删除相应的该票的节点,再修改其航班信息。.专业 .整理 .下载可编辑3主要功能模块流程图开始输出界面选择操作选择 1选择 2选择 3选择 4选择 5选择 6选择 7选择 8选择 0结束创建航班信息浏览航班信息修改航班信息查找航班信息删除航班信息添加航班信息订票信息退票信息退出按航班或终点站或航线按航班号或航线.专业 .整理 .下载可编辑四、系统测试1. 选择 1,运行界面如下:2选择 2,
7、运行界面如下:.专业 .整理 .下载可编辑3选择 3,运行界面如下:4选择 4,运行界面如下:.专业 .整理 .下载可编辑5选择 5,运行界面如下:6. 选择 6,运行界面如下:.专业 .整理 .下载可编辑7. 选择 7,运行界面如下:8. 选择 8,运行界面如下:.专业 .整理 .下载可编辑9. 选择 0,运行界面如下:五结论本次程序设计主要用到了结构体、 调用函数、文件的保存、 输入以及输出等功能。使我对数据结构有了更深一层的认识, 特别是对动态链表和文件的运用得到了很大的提高。在本次实验中程序曾多次编译、 运行出错,多亏了王帅老师的指导才将错误找出并改正,通过本次实验,我认识到实践和动手
8、的重要性。.专业 .整理 .下载可编辑六源程序及系统文件使用说明程序清单#include<stdio.h>/标准输入、输出头文件#include<string.h>/包含字符串函数处理头文件#include<stdlib.h>/包含动态存储与释放函数头文件typedef struct flightnode/定义结构体数组int num;/航班号char start20;/起始城市char over20;/终点城市char Stime10;/起始时间char Etime10;int Price;float Discount;/折扣int count;/机票数s
9、truct flightnode *next; NODE;#define PRINT "%4d %9.6s%9.6s %9.6s %9.6s %9d%.1f%9dn",p->next->num,p->next->start,p->next->over,p->next->Stime,p->next->Etime,p->next->Price,p->next->Discount,p->next->count /定义输出格式void creat();/创建航班信息文件void prin
10、t();/输出航班信息void save();/保存航班信息int read();/读取航班信息NODE *search();/查找航班信息void del();/删除航班信息int book_tickets();/订票信息int tuipiao();/退票信息void change();/修改信息void menu();/菜单void initlist(NODE *);/初始化函数void add();/添加信息函数NODE *h=NULL; / 建立全局变量,存链表头指针int m=0;/航班数量void initlist(NODE *h)*h=(NODE *)malloc(sizeof(
11、NODE);(*h)->next=NULL;void creat()/打印模块程序FILE *fp;.专业 .整理 .下载可编辑NODE *p=NULL;/定义移动指针int i,flightnum;char y;p=h;if(fp=fopen("air.dat","rb")!=NULL)/打开文件,并判断是否出错printf("信息文件已经存在,不必创建! 按任意键后回车返回 nnn");/打印出错提示fclose(fp);fflush(stdin);getchar();return ;p=h;printf("请输入
12、要输入的航班数量:");fflush(stdin);/清除文件缓冲区scanf("%d",&flightnum);/读取航班数system("cls");/清屏printf("请依次输入航班信息 :nn");/打印提示信息printf("-n");for(i=0;i<flightnum;i+)p->next=(NODE *)malloc(sizeof(NODE);p->next->next=NULL;printf("航班号 :");fflush(stdi
13、n);scanf("%d",&p->next->num); / 读取航班号 printf(" 起始站 :");fflush(stdin);scanf("%10s",&p->next->start);/ 读取起飞城市 printf(" 终点站 :");fflush(stdin);scanf("%10s",&p->next->over);/ 读取抵达城市 printf(" 起始时间 :");fflush(stdin);s
14、canf("%10s",&p->next->Stime);/ 读取起飞时间 printf(" 抵达时间 :");fflush(stdin);scanf("%10s",&p->next->Etime);/读取抵达时间printf("航班票价 :");fflush(stdin);scanf("%d",&p->next->Price);/读取航班票价printf("票价折扣 :");.专业 .整理 .下载可编辑fflush
15、(stdin);scanf("%10f",&p->next->Discount);/读取票价折扣printf("机票数 :",m);fflush(stdin);scanf("%d",&p->next->count);/读取机票数printf("第%d个信息已经输完 n",i+1);p=p->next;m+;printf("信息输入完毕,是否存盘: 存盘按 0,不存盘按其他任意键 ");fflush(stdin);y=getchar();if(y=
16、39;0')save();/将结构体信息存盘print();/输出输入的航班信息void save()/保存模块程序NODE *p=NULL;/定义移动指针FILE *fp,*fp1;/定义指向文件指针p=h;if(fp=fopen("air.dat","wb")=NULL)/打开文件并判断是否出错printf("创建文件失败 !nnn");/打印出错提示fflush(stdin);getchar();return;if(fp1=fopen("num.dat","wb")=NULL)/打
17、开文件并判断是否出错printf("创建文件失败 !nnn");/打印出错提示fflush(stdin);getchar();return;while(p->next!=NULL)if(fwrite(p->next,sizeof(NODE),1,fp)=0)/向文件写入数据,并判断是否出错printf("向文件输入数据失.专业 .整理 .下载可编辑败 !nnn");break;else p=p->next;fprintf(fp1,"%d",m); / 按指定的格式输出到 fp1 所指定的文件中 fclose(fp);
18、/ 关闭文件fclose(fp1);/关闭文件int read()/从文件读取信息模块FILE *fp,*fp1;/定义文件指针NODE *p=NULL;int i;initlist(&h);p=h;if(fp=fopen("air.dat","rb")=NULL)/打开文件,并判断是否出错printf("出错,请检查信息文件是否存在,按任意键后回车返回住菜单nnn");/打印出错提示fflush(stdin);getchar();return 0;if(fp1=fopen("num.dat","
19、rb")=NULL)/打开文件并判断是否出错printf("创建文件失败 !nnn");/打印出错提示fflush(stdin);getchar();return 0;fscanf(fp1,"%d",&m); /从 fp1 所指定的文件中按给定的格式将输入数据送内存中fclose(fp1);/关闭文件printf("n总共 %d个航班信息 n",m);for(i=0;i<m;i+)p->next=(NODE *)malloc(sizeof(NODE);p->next->next=NULL;fr
20、ead(p->next,sizeof(NODE),1,fp);/ 从文件中读取信息 p=p->next;fclose(fp);/关闭文件.专业 .整理 .下载可编辑return 1;void print()/打印模块NODE *p=NULL;if(read()=0)return;/调用读取文件函数 , 并判断是否文件存在。p=h;printf(" n");printf("航班号起始站终点站起始时间抵达时间航班票价票价折扣票数 n");while(p->next!=NULL)printf(PRINT);/打印信息p=p->next;
21、printf("");printf("nnnnnn 请按任意键后回车结束返回上层菜单 :n"); fflush(stdin);getchar();NODE *search()/查询模块NODE *p=NULL;NODE *x=NULL;/* 用于记录查询到的记录 */char name120;char name220;char ii10;int n,no;int flag=0;if(read()=0)return 0;p=h;doprintf("请选择查找方式: nn");/ 打印查询方式菜单printf("-n"
22、);printf("1.按航班号查找 nn""2.按终点站查找 nn""3.按航线查找 nn""0.返回 nn");.专业 .整理 .下载可编辑printf("请在 0-3 中选择: nn""按其他键后回车返回主菜单 :nnnnn"); fflush(stdin); scanf("%d",&n);/ 读取查找方式 if(n=0)break;switch(n)case 1:printf("请输入航班号: n");fflush(st
23、din);scanf("%d",&no);/航班号break;case 2:printf("请输入终点站名称: n");fflush(stdin);scanf("%10s",name2);/读取终点站break;case 3:printf("请输入起始站名称: n");fflush(stdin);scanf("%10s",name1);/读取起始站printf("请输入终点站名称: n");fflush(stdin);scanf("%10s",na
24、me2);/终点站break;default: printf("请选择有效查询方式 !nnn");while(p->next!=NULL)if(strcmp(p->next->start,name1)=0|strcmp(p->next->over,name2)=0) / 按终点站起始站判断输出条件printf("n查找航班信息成功 !nnn");printf("航班号起始站终点站起始时间抵达时间航班票价票价折扣票数 n");printf(PRINT);/打印信息x=p->next;flag=1;br
25、eak;.专业 .整理 .下载可编辑if(p->next->num=no)/按航班号判断输出条件printf("n查找航班信息成功 !nnn");printf("航班号起始站终点站起始时间抵达时间航班票价票价折扣票数 n");printf(PRINT);/打印信息x=p->next;flag=1;break;p=p->next;if(!flag) printf("查找失败 ! :nnnnn");printf ( "nnn""是否重新查找 ?n""请键入 yes
26、或 non""后回车键结束 n""-nnnnn");no=0;/ 将航班号赋值为0p=h;flag=0;fflush(stdin);scanf("%10s",ii);while(strcmp(ii,"yes")=0);/判断结束return(x);void add()int flightnum;int i,y;NODE*p=NULL;i=read();if(i=0)return;p=h;while(p->next!=NULL)p=p->next;printf("请输入要输入的航班数量
27、:");fflush(stdin);scanf("%d",&flightnum);/读取航班数system("cls");printf("请依次输入航班信息 :nn"); /打印提示信息.专业 .整理 .下载可编辑printf("-n");for(i=0;i<flightnum;i+)p->next=(NODE *)malloc(sizeof(NODE);p->next->next=NULL;printf("航班号 :");fflush(stdin);s
28、canf("%d",&p->next->num);/读取航班号printf("起飞城市 :");fflush(stdin);scanf("%10s",&p->next->start);/ 读取起飞城市 printf(" 抵达城市 :");fflush(stdin);scanf("%10s",&p->next->over);/ 读取抵达城市 printf(" 起飞时间 :");fflush(stdin);scanf(&
29、quot;%10s",&p->next->Stime);/ 读取起飞时间 printf(" 抵达时间 :");fflush(stdin);scanf("%10s",&p->next->Etime);/读取抵达时间printf("航班票价 :");fflush(stdin);scanf("%d",&p->next->Price);/读取航班票价printf("票价折扣 :");fflush(stdin);scanf("
30、%10f",&p->next->Discount);/读取票价折扣printf("机票数 :",m);fflush(stdin);scanf("%d",&p->next->count);/读取机票数printf("第%d个信息已经输完 n",i+1);p=p->next;m+;printf(" 信息输入完毕,是否存盘 : 存盘按 0,不存盘按其他任意键后回车 "); fflush(stdin);scanf("%d",&y);if(y
31、=0)save();/将结构体信息存盘print();/输出输入的航班信息void del()/删除模块.专业 .整理 .下载可编辑NODE *p=NULL;NODE *temp=NULL;char name120;char name220;char ii10;int no,n;int flag=0;if(read()=0)return;/调用读取函数doprintf("请选择删除以方式回车键结束:nn");printf("*1.按航班号删除 nn""*2.按航线删除 nn""*0.返回 nn");printf(&
32、quot;请在0-2中选择以回车键结束:nnn");fflush(stdin);scanf("%d",&n);/读取删除方式if(n=0)break;/跳出循环switch(n)case 1:printf("航班号: n");fflush(stdin);scanf("%d",&no);/读取航班号p=h;break;/跳出循环case 2:printf("起始站名称: n");fflush(stdin);scanf("%10s",name1);/读取起始站printf(
33、"终点站名称: n");fflush(stdin);scanf("%10s",name2);/读取终点站p=h;break;/跳出循环default: printf("请选择有效的选项: n");continue;while(p->next!=NULL)if(p->next->num=no|(strcmp(p->next->start,name1)=0&&strcmp.专业 .整理 .下载可编辑(p->next->over,name2)=0)./判断输入信息是否存在temp=
34、p->next->next;p->next=temp;m-;flag=1;printf("删 除 成 功 ! 剩 余 %d 条 信 息nnnnn",m);break;p= p->next;if(!flag)printf("没有这个信息 !nnnnn");printf("是否继续删除 n""请键入yes 或 no 以回车键结束n");fflush(stdin);scanf("%10s",ii);/读取是否继续信息save(); /调用存储函数if(!strcmp(ii,&q
35、uot;yes") /判断是否继续删除printf("请按任意键后回车结束返回上层菜单 :nnnnnn");break;while(1); /判断结束int book_tickets()/订票模块int n;char a10;NODE *x=NULL;NODE *p=NULL;doprintf("查找要订票的航班: n");x = search();/调用查询模块if(x!=NULL)printf(" 请输入您要订的机票数以回车键结束: n"); fflush(stdin);scanf("%d",&
36、;n);/读取所订机票数else return (0);if(n<0).专业 .整理 .下载可编辑printf("请输入有效的机票数!nnnnnn");/判断机票数是否出错break;if(x->count!=0&&x->count>=n)/判断是否出错x->count=x->count-n;save();/调用保存函数printf("订票成功 !nn");break;if(x->count<n)/判断是否出错printf(" 该航班机票已被定完,请预定其他航班: nnnnnn&q
37、uot;); break;printf(" 是否继续?请输入 yes 或 no 以回车键结束 :nnnnnn");/ 判断是否继续订票fflush(stdin);scanf("%10s",a);while(!strcmp(a,"yes"); / 判断结束 return(1);int tuipiao()/退票模块int n;char a10;NODE *p=NULL;NODE *x=NULL;doprintf("查找要退票的航班 n");x= search();/调用查询模块if(x!=NULL)printf(&qu
38、ot;请输入您要退的机票数目:n");fflush(stdin);scanf("%d",&n);/输入所退票数else return (0);while(n<0)/判断票数是否有效printf("请输入有效的机票数! nnnnnn");.专业 .整理 .下载可编辑fflush(stdin);scanf("%d",&n);x->count= x->count+n;save();/调用保存模块printf("退票成功 !nnnnn");printf("是否继续退票?
39、请键入yes 或 no 以回车键结束 :nnn");/判断是否继续退票fflush(stdin);scanf("%10s",a);while(!strcmp(a,"yes");/判断并跳出循环return (1);fflush(stdin);getchar();void change()/修改模块char j10;NODE *x=NULL;NODE *p=NULL;if(read()=0)return;dox=search();if(x!=NULL)printf( "请重新输入本条信息nnnnn");printf("
40、;航班号 :n");fflush(stdin);scanf("%d",&x->num);/读取航班号printf("起始站 :n");fflush(stdin);scanf("%10s",&x->start);/读取起始站printf("终点站 :n");fflush(stdin);scanf("%10s",&x->over);/读取终点站printf("起始时间 :n");fflush(stdin);scanf("%10s",&x->Stime);/读取起始时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电脑维修承揽合同范本
- 长期备货协议约定合同
- 长期原料采购合同范本
- 物流专用贷款合同范本
- 饭店农场合作合同范本
- 私人院子出租合同范本
- 2025至2030中国纯水自动售货机行业发展研究与产业战略规划分析评估报告
- 2025至2030中国白水泥产业运行态势与竞争格局分析报告
- 广东省广州市小区消防安全测试题十八(含答案)
- 江苏省淮安市地铁消防安全测试题十二(含答案)
- 中国华电战略发展研究中心招聘笔试题库2025
- 三年级混合运算题100道
- 邮政储汇业务员高级技师理论知识试卷5套(完整版)
- 体育产业经营管理课件第三章体育赛事经营管理
- 百善孝为先主题班会课件
- 业务连续性管理-(BCM)实务培训课件
- 耳鼻喉科多功能手术动力系统
- 北师大版四年级上册数学(全册)同步随堂练习一课一练
- K2FastWave中文操作手册
- 创新小白实操指南 教案.docx
- 高中数学 1.2.3函数的表示法(一)教案 新人教A版必修1[1]
评论
0/150
提交评论