数据结构 程序设计 机票管理系统
数据结构程序设计机票管理系统

数据结构程序设计机票管理系统机票管理系统是一种用于记录和管理机票信息的软件系统。
它可以帮助旅行代理人或航空公司方便地管理和处理所有相关的机票信息,包括航班信息、乘客信息、座位预订等。
本文将介绍机票管理系统的设计和实现。
首先,我们需要定义几个核心的数据结构来表示机票管理系统中的各种对象。
这些数据结构包括:1.航班信息:包括航班号、起飞时间、到达时间、出发地和目的地等信息。
3.座位信息:包括座位号、票价、座位类型等信息。
接下来,我们需要设计一个合适的数据结构来存储和管理机票信息。
可以使用数据库来存储这些信息,使用关系数据库管理系统(如MySQL)或非关系数据库(如MongoDB)来存储和查询数据。
我们可以创建几个数据库表来存储不同类型的数据。
例如,可以创建一个航班信息表、乘客信息表和座位信息表。
每个表都有相应的字段来保存具体的信息。
对于程序设计方面,可以使用面向对象的编程语言来实现机票管理系统。
我们可以创建几个类来表示航班、乘客和座位等对象。
每个类都有相应的属性和方法来对数据进行操作。
例如,可以创建一个Flight类来表示航班信息。
Flight类可以包含航班号、起飞时间、到达时间、出发地和目的地等属性。
它还可以包含方法来查询和更新航班信息。
类似地,可以创建Passenger类来表示乘客信息,Seat类来表示座位信息。
这些类可以与数据库表中的数据进行对应,可以为每个类创建对应的表和字段。
在机票管理系统中,用户可以使用不同的功能来查询和管理机票信息。
1.查询航班信息:用户可以根据航班号、起飞时间和目的地等条件来查询航班信息。
2.预订座位:用户可以根据航班信息选择座位,并填写乘客信息进行预订。
3.取消座位:用户可以取消已预订的座位,并将座位标记为可用状态。
4.修改航班信息:管理员可以修改航班的起飞时间、到达时间和票价等信息。
为了实现这些功能,我们可以在程序中定义相应的逻辑和用户界面。
用户可以通过命令行界面或图形界面与机票管理系统进行交互。
数据结构课程设计(航空系统)

char end_place[20];//目的地
int price;//票价
int discount;//折扣
int total;//座位总数
int left;//剩余座位
struct airline *next;//下一个结点
printf("| 航班号 | 起飞时间 | 到达时间 | 目的地 | 票价 | 折扣 |座位总数|剩余座位|\n");
printf("+--------+------------+------------+----------+------+------+--------+--------+\n");
printf("请选择:");
scanf("%d",&d);
if(d==1)
{printf("请输入您所需要的航班号:");
scanf("%s",a);
p=A;
while(p!=NULL)
{if(strcmp(p->line_num,a)==0)
printf("\t3.订票\n");
printf("\t4.退票\n");
printf("\t5.修改航班信息\n");
printf("\t6.退出系统\n");
printf("==============================================\n");
数据结构航班管理系统

#include <stdafx.h> #include <stdio.h>#include <string.h>#define maxspace 100 #define keylen 7#define radix_n 10#define radix_c 26 typedef char keytype; typedef struct{char start[6];char end[6];char sche[10];char time1[5];char time2[5];char model[4];int price;}infotype;typedef struct{keytype keys[keylen]; infotype others;int next;}slnode;typedef struct{slnode sl[maxspace];int keynum;int length;}sllist;typedef int arrtype_n[radix_n];typedef int arrtype_c[radix_c];void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e) {int j,p;for(j=0;j<radix_n;j++){f[j]=e[j]=0;}for(p=sl[0].next;p;p=sl[p].next){j=sl[p].keys[i]%48;if(!f[j])f[j]=p;elsesl[e[j]].next=p;e[j]=p;}}void collect(slnode *sl,int i,arrtype_n f,arrtype_n e) {int j,t;for(j=0;!f[j];j++);sl[0].next=f[j];t=e[j];while(j<radix_c-1){for(j=j+1;j<radix_c-1&&!f[j];j++);if(f[j]){sl[t].next=f[j];t=e[j];}}sl[t].next=0;}void radixsort(sllist &l)//链式{int i;arrtype_n fn,en;arrtype_c fc,ec;for(i=0;i<l.length;i++)l.sl[i].next=i+1;l.sl[l.length].next=0;for(i=l.keynum-1;i>=2;i--) {distribute(l.sl,i,fn,en); collect(l.sl,i,fn,en);}for(i=1;i>=0;i--){distribute_c(l.sl,i,fc,ec); collect_c(l.sl,i,fc,ec);}}void arrange(sllist &l)//重新整理{int p,q,i;slnode temp;p=l.sl[0].next;for(i=1;i<l.length;i++){while(p<i)p=l.sl[p].next;q=l.sl[p].next;if(p!=i){temp=l.sl[p];l.sl[p]=l.sl[i];l.sl[i]=temp;l.sl[i].next=p;}p=q;}}int binsearch(sllist l,keytype key[]) {int low,high,mid;low=1;high=l.length;while(low<=high){mid=(low+high)/2;if(strcmp(key,l.sl[mid].keys)==0)return mid;else if(strcmp(key,l.sl[mid].keys)<0)high=mid-1;elselow=mid+1;}return 0;}void seqsearch(sllist l,keytype key[],int i){int j,k,m=0;printf("***************************************************** ********\n");printf("*航班号起点站终点站航班期起飞时间到达时间机型票价*\n");for(j=1;j<=l.length;j++){switch(i){case 2:k=strcmp(key,l.sl[j].others.start);break;case 3:k=strcmp(key,l.sl[j].others.end);break;case 4:k=strcmp(key,l.sl[j].others.time1);break;case 5:k=strcmp(key,l.sl[j].others.time2);break;}if(k==0){m=1;printf("* %-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d *\n",l.sl[j].keys,l.sl[j].others.start,l.sl[j].others.end,l.sl[j].others.sche,l.sl[j].others.time1,l.sl[j].others.time2,l.sl [j].others.model,l.sl[j].others.price);}}if(m==0)printf("* 无此航班信息,可能输入错误!*\n");printf("***************************************************** ********\n");}void searchcon(sllist l){keytype key[keylen];int i=1,k;while(i>=1&&i<=5){printf("\********************\n");printf(" * 航班信息查询系统\n");printf(" ********************\n");printf(" * 1.航班号*\n");printf(" * 2.起点站*\n");printf(" * 3.终点站*\n");printf(" * 4.起飞时间*\n");printf(" * 5.到达时间*\n");printf(" * 0.退出系统*\n");printf(" ********************\n");printf(" 请选择(0-5):");scanf("%d",&i);printf("\n");switch(i){case 1:printf("输入要查询的航班号(字母要大写):"); scanf("%s",key);k=binsearch(l,key);printf("***************************************************** ********\n");if(k==0)printf("*无此航班信息,可能输入错误!*\n");else {printf("* 航班号起点站终点站航班期起飞时间到达时间机型票价*\n");printf("* %-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d *\n",l.sl[k].keys,l.sl[k].others.start,l.sl[k].others.end,l.sl[k].others.sche,l.sl[k].others.time1,l.sl[k].others.time2,l. sl[k].others.model,l.sl[k].others.price);}printf("***************************************************** ********\n");break;case 2:printf("输入要查询的航班起点站名:");scanf("%s",key);seqsearch(l,key,i);break;case 3:printf("输入要查询的航班终点站名:");scanf("%s",key);seqsearch(l,key,i);break;case 4:printf("输入要查询的航班起飞时间:");scanf("%s",key);seqsearch(l,key,i);break;case 5:printf("输入要查询的航班到达时间:");scanf("%s",key);seqsearch(l,key,i);break;case 0:printf("\n\n\n再见\n\n\n");}}}void inputdata(sllist &l){int i=++l.length;char yn='y';while(yn=='y'||yn=='Y'){printf("航班号起点站终点站航班期起飞时间到达时间机型票价\n");scanf("%s%s%s%s%s%s%s%d",l.sl[i].keys,l.sl[i].others.start,l.sl[i].others.e nd,l.sl[i].others.sche,l.sl[i].others.time1,l.sl[i].others.time2,l.sl[i].others.model, &l.sl [i].others.price);++i; getchar();radixsort(l);arrange(l);printf("继续输入吗?y/n:");scanf("%c",&yn);}l.length=i-1;}void main(){sllist l;l.keynum=6;l.length=0;inputdata(l);searchcon(l);}//数据结构编写航班信息查询系统//航班信息查询系统数据结构课程设计_梦里水乡_百度空间第十三章:干燥通过本章的学习,应熟练掌握表示湿空气性质的参数,正确应用空气的H–I 图确定空气的状态点及其性质参数;熟练应用物料衡算及热量衡算解决干燥过程中的计算问题;了解干燥过程的平衡关系和速率特征及干燥时间的计算;了解干燥器的类型及强化干燥操作的基本方法。
数据结构课程设计 飞机订票系统

飞机订票系统1. 需求分析描述要求编程解决的问题。
以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定:(a) 输入的形式和输入值的范围;(b) 输出的形式;(c) 程序所能达到的功能;(d) 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。
2. 概要设计给出程序要达到的具体的要求。
描述解决相应问题算法的设计思想。
描述所设计程序的各个模块(即函数)功能。
说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。
3. 详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出流程或伪码算法;对主程序和其他模块也都需要写出流程或伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数的调用关系图。
给出所使用的基本抽象数据类型,所定义的具体问题的数据类型,以及新定义的抽象数据类型。
设计出良好的输入输出界面(清晰易懂)。
4. 调试分析内容包括:(a)调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;(b)算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;(c)经验和体会等。
5. 用户使用说明说明如何使用你编写的程序,详细列出每一步的操作步骤。
6. 测试结果设计测试数据,或具体给出测试数据。
要求测试数据能全面地测试所设计程序的功能。
列出你的测试结果,包括输入和输出。
这里的测试数据应该完整和严格,最好多于需求分析中所列。
7. 测试情况:给出程序的测试情况,并分析运行结果附录(非必须,按照需要添加)带注释的源程序。
可以只列出程序文件名的清单。
需求分析任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
数据结构课程设计报告(航班管理系统)分解

数据结构课程设计报告班级:指导老师日期:2014年12月【需求分析】2.航空订票系统试设计一个航空订票系统,基本要求如下:每条航班所涉及的信息有:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,乘员定额,余票量,订定票的客户名单(包括姓名,订票量,舱位等级(头等舱、公务舱、经济仓)以及等候替补的客户名单(包括姓名、所需数量)。
采用链式存储结构。
要求:系统能实现的操作和功能如下:(1)航班信息管理。
(2)查询航线,按以下几种方式查询:①按航班号查询;②按起点站查询;③按终点站查询;④按日期查询;每种查询方式中,查询后输出如下信息:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,余票量。
(3)承办订票业务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。
若需要,可登记排队候补。
(4)承办退票业务:根据客户提出的情况(日期,航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
【设计】2.1 设计思想(1)数据结构设计①.‘航班信息数据结构’采用链式储存结构,并且设置链接‘订票乘客名单域’和‘排队等候名单域’的借口。
设计如下:/*航班信息数据结构 */typedef struct Airp{char airnum[10];//航班号char planenum[10];//机型char departure[10];//起飞机场char terminal[10];//降落机场char weekday[5];//日期struct time uptim;//起飞时间time downtim;// 降落时间time flytim;// 飞行时间int price;//价格int tkt_ful;//乘员定额int tkt_sur;//余票量Book_list *book;//订票客户名单Wait_list wait;//等待候补客户名单Airp *next;}lineinfo;//②‘订票乘客名单域’采用链式存储结构,以单链表形成名单列表。
数据结构课程设计飞机订票系统

订票系统1.需求分析任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;2.概要设计在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。
主菜单0 1 2 3 4 5 6 7 8 9输入航班的信息列出航班的信息按航班号查询航班信息按城市来查询航班订票程序退票系统修改飞机航班的信息保存文件读取文件、下载文件退出详细设计3.源程序/******头文件(.h)***********/#include <stdio.h> /*I/O函数*/#include <stdlib.h> /*其它说明*/#include <string.h> /*字符串函数*/#include <conio.h> /*屏幕操作函数*/ #include <ctype.h> /*字符操作函数*/#define N 20#define Q 40 /*定义常数表示记录数*//*定义数据结构*//*乘客信息*/typedef struct{char number[10];/*编号*/char name[10]; /*姓名*/char id[20]; /*证件号*/int count; /*订票数*/char flightname[10];/*乘坐航班号*/}GUEST;/*航班信息*/typedef struct{char planenumber[10];/*航班号*/char city1[20]; /*起飞城市*/char city2[20]; /*抵达城市*/char time1[20]; /*起飞时间*/char time2[20]; /*降落时间*/int room; /*舱位数*/char price[5]; /*票价*/char discount[5]; /*折扣*/GUEST guest[25];int sit;}FLY;/*菜单函数,函数返回值为整数,代表所选的菜单项*/ menu_select(){char s[80];int c;gotoxy(1,25);/*将光标定为在第25行,第1列*/printf("press any key enter menu......\n");/*提示压任意键继续*/getch(); /*读入任意字符*/clrscr(); /*清屏*/gotoxy(1,1);printf(" Welcome to\n\n");printf(" Tickets Booking System\n\n");printf("********************MENU*********************\n\n");printf(" 0. Enter flight record\n");printf(" 1. List the flight information\n");printf(" 2. Search flightnumber\n");printf(" 3. Search city\n");printf(" 4. Book the ticket\n");printf(" 5. Quit the ticket\n");printf(" 6. Channge the flight information\n");printf(" 7. Save the file\n");printf(" 8. Load the file\n");printf(" 9. exit\n");printf("***********************************************\n");do{printf("\n Enter you choice(0~9):"); /*提示输入选项*/scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/ }while(c<0||c>9); /*选择项不在0~9之间重输*/return c; /*返回选择项,主程序根据该数调用相应的函数*/ }/*输入函数*/int enter(FLY t[]){int i,k,n,m,w,j;char *s;clrscr(); /*清屏*/printf("input the flight's count(n<=40):");/*输入航线总数*/ scanf("%d",&n);while(n>40||n<0){clrscr();printf("input error!!!input again(0<n<=40):");/*输入航线总数*/scanf("%d",&n);}printf(" input the flight's information\n\n");/*提示信息*/printf("flightname start-city end-city start-time end-time room price discount\n");printf("------------------------------------------------------------------------------\ n");for(i=0;i<n;i++){scanf("%s",t[i].planenumber);/*输入姓名*/gotoxy(13,6+i);/*光标跳到地址栏*/scanf("%s",t[i].city1);/*输入起飞城市*/gotoxy(25,6+i);scanf("%s",t[i].city2);/*输入降落城市*/gotoxy(36,6+i);scanf("%s",t[i].time1);/*输入起飞时间*/gotoxy(47,6+i);scanf("%s",t[i].time2);/*输入降落时间*/gotoxy(57,6+i);scanf("%d",&t[i].room);/*输入舱位数*/gotoxy(64,6+i);scanf("%s",t[i].price);/*输入票价*/gotoxy(73,6+i);scanf("%s",t[i].discount);/*输入折扣*/}printf("-----------------------------------------------------------------------------\n ");for(i=0;i<n;i++)t[i].sit=0;return n; /*返回记录条数*/}/*显示记录,参数为记录数组和记录条数*/void list(FLY t[],int n){int i;clrscr();printf("flightname start-city end-city start-time end-time room price discount\n");printf("------------------------------------------------------------------------------\ n");for(i=0;i<n;i++)printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumb er,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);printf("************************end*******************\n");}/*按航班号查找记录*/void search1(FLY t[],int n){char s[20]; /*保存待查找航班名字符串*/int i;clrscr(); /*清屏*/printf("please input the flightname that you want to search:");scanf("%s",s); /*输入待查找航班名*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(s,t[i].planenumber)==0) /*记录中的航班名和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/ }if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("flightname start-city end-city start-time end-time room price discount\n"); /*显示记录*/printf("------------------------------------------------------------------------------\ n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumb er,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);}}/*按起降城市查找记录*/void search2(FLY t[],int n){char s1[20];char s2[20];int i;clrscr(); /*清屏*/printf("please input the start-city:");scanf("%s",s1); /*输入起飞城市名*/printf("please input the end-city:");scanf("%s",s2); /*输入降落城市名*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if((strcmp(s1,t[i].city1)==0)&&(strcmp(s2,t[i].city2)==0)) /*记录中的城市和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/ }if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("flightname start-city end-city start-time end-time room price discount\n"); /*找到,显示记录*/printf("------------------------------------------------------------------------------\n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumb er,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);}}/*订票*/void book(FLY t[],int n){char s[20],number1[10],name1[10],id1[20],flightname1[10];int i,j=0,m,k,count1;clrscr(); /*清屏*/printf("How many tickets do you want to book:");scanf("%d",&m);printf("number name ID book-count flightname\n"); /*提示信息*/printf("------------------------------------------------------------\n");for(k=0;k<m;k++){scanf("%s",number1);gotoxy(13,4+k);/*光标跳到地址栏*/scanf("%s",name1);/*输入订票客户姓名*/gotoxy(25,4+k);scanf("%s",id1);/*输入证件号*/gotoxy(43,4+k);scanf("%d",&count1);/*输入订票票数*/gotoxy(53,4+k);scanf("%s",flightname1);/*输入航班号*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(flightname1,t[i].planenumber)==0) /*记录中的航班名和待比较的是否相等*/{j=t[i].sit;strcpy(t[i].guest[j].number,number1);strcpy(t[i].guest[j].name,name1);strcpy(t[i].guest[j].id,id1);t[i].guest[j].count=count1;strcpy(t[i].guest[j].flightname,flightname1);t[i].room=t[i].room-count1;t[i].sit++;break; /*相等,则返回该记录的下标号,程序提前结结束*/}}if(i>n-1) /*如果整数i值大于n-1,说明没找到*/{printf("Sorry!No this flight\n");m=m+2;k++;}}}/*退票*/void quit(FLY t[],int n){char s1[20],s2[20]; /*保存待查找航班名和证件号字符串*/int i,k,j,h,l,ch;clrscr(); /*清屏*/printf("please input the flightname that you want to quit:");scanf("%s",s1); /*输入待查找航标名*/printf("please input the your id:");scanf("%s",s2); /*输入待查找证件号*/printf("number name ID book-count flightname\n"); /*显示提示*/printf("------------------------------------------------------------\n");for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{for(j=0;j<t[i].sit;j++)if((strcmp(s1,t[i].guest[j].flightname)==0)&&(strcmp(s2,t[i].guest[j].id)= =0)){printf("%-11s%-16s%-16s%-14d%-10s\n",t[i].guest[j].number,t[i].guest[j ].name,t[i].guest[j].id,t[i].guest[j].count,t[i].guest[j].flightname);t[i].room=t[i].room+t[i].guest[j].count;l=j;h=i;break;}}i=h;if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("Are you sure delete it(1/0)\n"); /*确认是否要删除*/scanf("%d",&ch); /*输入一个整数0或1*/if(ch==1) /*如果确认删除整数为1*/{for(k=l+1;k<t[i].sit;k++){strcpy(t[i].guest[k-1].number,t[i].guest[k].number); /*将后一条记录的姓名拷贝到前一条*/strcpy(t[i].guest[k-1].name,t[i].guest[k].name);strcpy(t[i].guest[k-1].id,t[i].guest[k].id);t[i].guest[k-1].count=t[i].guest[k].count;strcpy(t[i].guest[k-1].flightname,t[i].guest[k].flightname);}t[i].sit--;}printf("quit success!!\n");/*提示退票成功*/}}/*修改航班信息*/void channge(FLY t[],int n){char s[20]; /*要删除记录的姓名*/int i,j;clrscr(); /*清屏*/printf("please input the flightname that you want to channge:"); /*提示信息*/scanf("%s",s);/*输入航班名*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(s,t[i].planenumber)==0) /*记录中的航班名和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/ }if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("flightname start-city end-city start-time end-time room price discount\n"); /*找到,显示原先记录*/printf("------------------------------------------------------------------------------\ n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumber,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);printf("please input the new information:\n");scanf("%s",t[i].planenumber);/*输入航班名*/gotoxy(13,6+i);/*光标跳到地址栏*/scanf("%s",t[i].city1);/*输入起始城市*/gotoxy(25,6+i);scanf("%s",t[i].city2);/*输入终点城市*/gotoxy(35,6+i);scanf("%s",t[i].time1);/*输入起飞时间*/gotoxy(47,6+i);scanf("%s",t[i].time2);/*输入降落时间*/gotoxy(57,6+i);scanf("%d",t[i].room);/*输入座位号*/gotoxy(64,6+i);scanf("%s",t[i].price);/*输入票价*/gotoxy(71,6+i);scanf("%s",t[i].discount);/*输入折扣*/}}/*保存资料*/void save(FLY t[],int n){int i,j;FILE *fp; /*指向文件的指针*/if((fp=fopen("record1.txt","wb"))==NULL) /*打开文件,并判断打开是否正常*/{printf("can not open file\n");/*没打开*/exit(1); /*退出*/}printf("\nSaving file\n"); /*输出提示信息*/fprintf(fp,"%d",n); /*将记录数写入文件*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/for(i=0;i<n;i++){fprintf(fp,"%s %s %s %s %s %d %s %s",t[i] .planenumber,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i ].discount);fprintf(fp,"\r\n"); /*将换行符号写入文件*/fprintf(fp,"%d",t[i].sit); /*将记录数写入文件*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/for(j=0;j<t[i].sit;j++){fprintf(fp,"%s %s %s %d %s",t[i].guest[j].number,t[i].gu est[j].name,t[i].guest[j].id,t[i].guest[j].count,t[i].guest[j].flightname);/*格式写入记录*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/}}fclose(fp);/*关闭文件*/printf("****save success***\n"); /*显示保存成功*/}/*读入函数,参数为结构体数组*/int load(FLY t[]){int i,n,j;FILE *fp; /*指向文件的指针*/if((fp=fopen("record1.txt","rb"))==NULL)/*打开文件*/{printf("can not open file\n"); /*不能打开*/exit(1); /*退出*/}fscanf(fp,"%d",&n); /*读入记录数*/for(i=0;i<n;i++){fscanf(fp,"%s %s %s %s %s %d %s %s",t[ i].planenumber,t[i].city1,t[i].city2,t[i].time1,t[i].time2,&t[i].room,t[i].pric e,t[i].discount);fscanf(fp,"%d",&t[i].sit); /*读入记录数*/for(j=0;j<t[i].sit;j++)fscanf(fp,"%s %s %s %d %s",t[i].guest[j].number,t[i].gues t[j].name,t[i].guest[j].id,&t[i].guest[j].count,t[i].guest[j].flightname); /*按格式读入记录*/}fclose(fp); /*关闭文件*/printf("You have success read data from file!!!\n\n\n\n"); /*显示保存成功*/return n; /*返回记录数*/}/*主函数*/main(){ int i;FLY flight[Q];int length; /*保存记录长度*/clrscr(); /*清屏*/textcolor(YELLOW); /*字体颜色*/textbackground(BLUE);/*背景颜色*/for(;;)/*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/{case 0:length=enter(flight);break;/*输入记录*/case 1:list(flight,length);break; /*显示全部记录*/ case 2:search1(flight,length);break; /*查找记录*/case 3:search2(flight,length);break; /*查找记录*/case 4:book(flight,length);break; /*订票*/case 5:quit(flight,length);break; /*退票*/case 6:channge(flight,length);break; /*修改航班信息*/ case 7:save(flight,length);break; /*保存文件*/case 8:length=load(flight); break; /*读文件*/case 9:exit(0); /*如返回值为9则程序结束*/}}}4.菜单窗口订票系统菜单窗口0.输入航班的信息1.列出航班的信息2.按航班号查询航班信息3.按城市来查询航班4.订票程序5.退票系统6.修改飞机航班的信息7.保存文件8.读取文件、下载文件。
数据结构课程设计报告(航班管理系统)分解

数据结构课程设计报告班级:指导老师日期:2014年12月【需求分析】2.航空订票系统试设计一个航空订票系统,基本要求如下:每条航班所涉及的信息有:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,乘员定额,余票量,订定票的客户名单(包括姓名,订票量,舱位等级(头等舱、公务舱、经济仓)以及等候替补的客户名单(包括姓名、所需数量)。
采用链式存储结构。
要求:系统能实现的操作和功能如下:(1)航班信息管理。
(2)查询航线,按以下几种方式查询:①按航班号查询;②按起点站查询;③按终点站查询;④按日期查询;每种查询方式中,查询后输出如下信息:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,余票量。
(3)承办订票业务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。
若需要,可登记排队候补。
(4)承办退票业务:根据客户提出的情况(日期,航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
【设计】2.1 设计思想(1)数据结构设计①.‘航班信息数据结构’采用链式储存结构,并且设置链接‘订票乘客名单域’和‘排队等候名单域’的借口。
设计如下:/*航班信息数据结构 */typedef struct Airp{char airnum[10];//航班号char planenum[10];//机型char departure[10];//起飞机场char terminal[10];//降落机场char weekday[5];//日期struct time uptim;//起飞时间time downtim;// 降落时间time flytim;// 飞行时间int price;//价格int tkt_ful;//乘员定额int tkt_sur;//余票量Book_list *book;//订票客户名单Wait_list wait;//等待候补客户名单Airp *next;}lineinfo;//②‘订票乘客名单域’采用链式存储结构,以单链表形成名单列表。
数据结构课程设计航空订票系统

航空客运订票系统的设计与实现一、设计目的:设计一个航班订票系统,提高对信息管理、信息查找和排序算法的应用能力。
二、问题的描述:航空客运订票的业务包括查询航线和客票预定的信、客票预定和办理退票等,设计一个程序以使上述任务借助计算机完成。
三、数据结构的设计://航线结构struct airline{char cityname[15]; //终点站char airnum[15]; //航班号char planenum[15]; //飞机号char qjtime[15]; //起降时间int price; //价格int disc; //折扣int num; //总座位数int rempla; //剩余位置(票数)linklist *order;linkqueue wait;}line;//定义链表队列typedef struct wait{char name[6];int ordnum;struct wait *next;} qnode,*qptr;//无票时其余等候买票队列typedef struct listqueue{qptr front; //对头qptr rear; //队尾}linkqueue;typedef struct order{char name[15]; //客户姓名char crenum[15]; //证件号char airnum[15]; //航班号char planenum[15]; //飞机号int ordnum; //订票数量int rempla; //剩余位置int num; //总座位数char qjtime[15]; //起降时间struct order *next;}linklist;建立了航班的终点站,航班号,飞机号,起降时间,价格,折扣,总座位数,剩余位置,指向客户信息truct order指针,等候买票的队列的结构体信息。
建立了客户的客户姓名,证件号,航班号,飞机号,订票数量,剩余位置,总座位数,起降时间,链接下一位的指针的结构体信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号数据结构课程设计设计说明书机票管理系统起止日期:2011年12月12 日至2011 年12月16日学生姓名班级成绩指导教师(签字)电子与信息工程系2011年12月16日天津城市建设学院课程设计任务书2011—2012学年第1学期电子与信息工程系软件工程专业班级课程设计名称:数据结构课程设计设计题目:机票管理系统完成期限:自2011 年12 月12 日至2011 年12 月16 日共 1 周设计依据、要求及主要内容(可另加附页):一、设计目的熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。
二、设计要求(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。
凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;(4)认真编写课程设计报告。
三、设计内容机票管理系统1)问题描述一机场每天有n个航班,每个班次都有一班次号(1、2、3…n),固定的起飞时间,固定的路线(起始站、终点站),大致的飞行车时间,固定的额定载客量。
如班次起飞时间起点站终点站飞行时间额定载量已定票人数1 8:00 天津广汉2 145 1302 6:30 天津成都 0.5 140 1403 7:00 天津成都 0.5 140 1204 10:00 天津成都 0.5 140 120…试设计一个机票管理系统,对机场的售票情况进行管理。
2) 基本要求功能要求:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据;(2)浏览班次信息,可显示出所有班次当前状况(如果当前系统时间超过了某班次的起飞时间,则显示“此班已发出”的提示信息)。
(3)查询路线:可按班次号查询 ,可按终点站查询;(4)售票和退票功能A:当查询出已定票人数小于额定载量且当前系统时间小于起飞时间时才能售票,自动更新已售票人数B:退票时,输入退票的班次,当本航班飞机未发出时才能退票,自动更新已售票人数。
目录一、需求分析 (6)二、问题求解 (6)三、总体设计 (6)1.程序设计组成框图: (5)2.程序设计流程图 (6)四、详细设计 (7)1.根据飞机订票系统的可设要求,要实现以下功能: (8)2.具体的方法及函数调用的思想: (8)定义要存储的变量:..................................... 错误!未定义书签。
3.方法的实现: (8)五、调试与测试 (9)1.录入信息时 (9)2.订票时: (9)3.退票时: (10)六、关键源程序清单和执行结果 (10)1.源程序: (10)2.执行结果: (14)七、参考文献 (19)一、需求分析本课程设计的名称是机票管理系统,本系统主要是描述了机票管理的一些具体情况,包括录入航班、查询情况和订票以及退票,查询航班号是否存在,确定订票管理根据飞机的载量判断是否有剩余的载量,当载量小于飞机的载量可以订票,有特殊情况发生时会伴随着退票的发生。
这就是产生订票系统产生的原因。
二、问题求解当我们遇到飞机订票这件事情的时候,我们通常发生的地点是飞机场,首先,我们应该到售票大首先就要查询是否有该路线的票,如果有的话则进行购买,即要通过把信息录入accept()方法来实现。
则要录入航班号(prn),起飞时间(qifei),飞行时间(shijian),起始站(from),终点站(to)等。
在查找chaxun()方法中,首先定义航班号*getprn指针,然后读入文件信息,输入要查询的航班号用指针查询,用strcmp()是用来比较字符串的大小,它的返回值是char类型。
用accept写入信息并存入文件passenger.txt,在读取dis()方法中,读取已有的航班,航班mainmune()输出。
订票时,首先应输入飞机航班号(cin>>prn),因为事先在列表里存储了四个航班信息,输入的订票数量。
根据订票的数量和载量做对比strcmp,如果小于载量就可以订票,则订票成功,返回"订票成功 ",返回是输出mainmune()。
退票时,首先输入航班号prn(),确认退票,就可以显示退票成功。
输出mainmune。
三、总体设计1.程序设计组成框图2.程序设计流程图四、详细设计1.根据订票管理系统的可设要求,要实现以下功能:(1)录入:录入航班情况(2)查询:根据航班号进行查询(3)订票:1)当有余票时显示剩余票数,则可以订票成功,如果没有载量,则订票失败。
2)当系统时间小于起飞时间的方法没有时间。
(4)退票:1)当飞机没有起飞,则可以退票成功。
2.具体的方法及函数调用的思想:(1)函数实现:可以通过以下的声明来建立如图的数据类型char prn[20];char qifei[20];char from[20];char to[20];char shijian[20];char zailiang[20];int piaoshu;{ }里的变量依次表示为:航班号,起飞时间,起始站点,终点站名,飞行时间,载量,已订票人3.方法的实现:1)accept ( ); //写入信息并存入文件因为可设要求把数据存储在文件中,所以必须编写此保存方法,写入实现方式:ofstream out("passenger.txt",ios::app); //输出方式打开文件,写入数据添加在文件末尾2)dis( ); //从文件读取信息并显示read方法是用来读取airpline.txt文件中航班数据的,ios:in 以输入方式打开文件保存 ("passenger.txt")目录下。
并且在目录里显示信息。
3)chaxun( ); //查询,按航班号来查询根据已有的飞机信息来依据航班号信息来查询航班。
查询到并输出列表。
4)dingpiao(); //订票函数可以根据航班的载量来判定是否可以订票。
如果当查询出已定票人数小于额定载量,则可以订票,输出订票成功。
5)tuipiao( ); //订票函数当订票的时候,首先要输入要订票的航班号,因此在这之后应读入在系统中的航班的航班号,航班有没有起飞做对比,则可以办理退票。
五、调试与测试1.录入信息时定义的是字符型,注意输入的时候不能输入别的类型。
否则不能识别。
2.系统时间小于起飞时间的功能没有实现自己经过反复的试着把这功能实现,但是最后都是无功而返,经过同学咨询同学也模糊,由于我的类方法实现的,很难定义结构体时间函数,由于这个功能的缺陷,本人改编将系统的时间在主函数里定义,测试时候显示出来了(struct tm *newtime;char tmpbuf[128];time_t lt1;time( <1 );newtime=localtime(<1);strftime( tmpbuf, 128, " TODASY 9 月 %d %A %H:%M \n", newtime);printf(tmpbuf);),由于个人能力有限,时间有限,根据老师的要求最后决定是自己用C++实现的(本人操作实现)。
自己知道怎么实现的思路但是实际操作还是差点,另外在类中很难实现,但是要把这功能加上根据本人能力。
由于时间关系,这部分功能未能实现。
六、关键源程序清单和执行结果1.源程序:#include<iostream>#include<fstream>#include <stdio.h>#include <time.h>using namespace std;class Airplay //定义类{public:char prn[20];char qifei[20];char from[20];char to[20];char shijian[20];char zailiang[20];int piaoshu;public:void getdetail(){cout<<"请输入航班号: ";cin>>prn;cout<<"请输入起飞时间: ";cin>>qifei;cout<<"请输入起点: ";cin.ignore();cin.getline(from,20);cout<<"请输入终点: ";cin.getline(to,20);cout<<"请输入飞行时间: ";cin>>shijian;cout<<"请输入载量: ";cin>>zailiang;cout<<"请输入订票数: ";cin>>piaoshu;}void display(){cout<<"航班号\t起飞\t起点\t终点\t飞行\t载量\t订票数"<<endl;}void print() //显示信息{cout<<prn<<"\t"<<qifei<<"\t"<<from<<"\t"<<to<<"\t"<<shijian<<"\t"<<zailiang<<"\t"<<pi aoshu<<endl;}char *getPrn(){return prn;}};void mainmune(){cout<<"------------------------------------"<<endl;cout<<"***********机票管理系统*************"<<endl;cout<<"------------------------------------"<<endl;cout<<"1.) 录入机票信息"<<endl;cout<<"2.) 显示所有信息"<<endl;cout<<"3.) 按航班号查询"<<endl;cout<<"4.) 售票的功能"<<endl;cout<<"5.) 退票的功能"<<endl;cout<<"6.) 退出"<<endl;cout<<"please choice:"<<endl;}void accept() //写入信息并存入文件{system("cls");mainmune();Airplay rai;ofstream out("passenger.txt",ios::app); //输出方式打开文件,写入数据添加在文件末尾rai.getdetail();out.write((char *)&rai,sizeof(rai));out.close();}void dis() //从文件读取信息并显示{system("cls");mainmune();Airplay rai;ifstream in("passenger.txt");rai.display();while(in.read((char *)&rai,sizeof(rai))){rai.print();}in.close();}void chaxun() //按航班号查询{system("cls");mainmune();char prns[20];Airplay rai;cout<<"输入航班号:";cin>>prns;fstream fs("passenger.txt",ios::in|ios::out);while(fs.read((char *)&rai,sizeof(rai))){if(strcmp(prns,rai.getPrn())==0){rai.display();rai.print();fs.close();break;}}}void shoupiao() //售票的功能{system("cls");mainmune();int i;char j[20];cout<<"要定的航班:";cin>>j;cout<<"顾客订票数:";cin>>i;system("cls");mainmune();Airplay rai;ifstream in("passenger.txt");rai.display();while(in.read((char *)&rai,sizeof(rai))) {if(strcmp(j,rai.getPrn())==0){rai.print();rai.piaoshu+=i;}}cout<<"订票成功";}void tuipiao() //退票的功能{system("cls");mainmune();char h[20];cout<<"顾客退票的班次:";cin>>h;system("cls");mainmune();Airplay rai;ifstream in("passenger.txt");rai.display();while(in.read((char *)&rai,sizeof(rai))) {if(strcmp(h,rai.getPrn())==0){rai.print();rai.piaoshu-=1;}}cout<<"退票成功";}void main() //主函数{struct tm *newtime;char tmpbuf[128];time_t lt1;time( <1 );newtime=localtime(<1);strftime( tmpbuf, 128, " TODASY 9 月 %d %A %H:%M \n", newtime); printf(tmpbuf);int choice;while(true){mainmune();cin>>choice;switch(choice){case 1: accept();break;case 2: dis();break;case 3: chaxun();break;case 4: shoupiao();break;case 5: tuipiao();break;case 6: exit(0);}}}2.执行结果:查询:售票:退票:退出:七、参考文献1.王红梅.数据结构.清华大学出版社2.王红梅.数据结构学习辅导与实验指导.清华大学出版社3.严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社。