数据结构课程设计-航空客运订票系统

数据结构课程设计-航空客运订票系统
数据结构课程设计-航空客运订票系统

嘉应学院计算机学院

实验报告

课程名称:数据结构课程设计

开课学期:2017-2018学年第2学期

班级:1503

指导老师:钟治初

实验题目:航空客运订票系统

学号:

姓名:

上机时间:

1.需求分析

(1)航空管理。每条航班所涉及的信息有:终点站名、航班号、飞机型号、飞行周日(星期几)、乘员定额、余票量。

(2)客户管理。有关订票的客户信息(包括姓名、订票量、航位等级(1,2和3))以及等候替补的客户名单(包括姓名、所需票量)。

(3)系统实现的主要操作和功能。系统实现的主要操作和功能如下:

①查询航班。根据旅客提出的终点站名输入下列信息:航班号、飞机型号、飞机日期、余票额。

②承办订票业务。根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队后补。

③承办退票业务。根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先查询排在第一的客户,若所退票额能满足该客户的要求,则为其办理订票手续,否则询问其他排队候补的客户。

2.概要设计

1)本系统设计了一个含有多个菜单项的主控菜单,系统主控菜单运行界面

2)存储结构设计

本系统主要采用链表结构类型存储航班信息和订票的乘客信息。航班信息链表结点由10个分量构成,乘客信息链表由5个分量构成。

3)系统功能设计

本系统分为以下5个功能模块。

(1)航班管理。航班管理子模块可完成添加新的航班,按终点站点名查询航班,浏览所有航班。

(2)订票办理。在添加了航班的基础上可办理订票业务。乘客根据所需航班输入终点站名和订票量订票。如果订票量超过余票量,则会提示是否成为候补乘客;如果订票成功,则会要求输入订票乘客的姓名及所订票的舱位等级。

(3)退票办理。已办理订票业务的乘客可根据所订票的航班和乘客姓名办理退票业务。、

(4)乘客管理。可以查看已经订票的乘客信息和候补乘客的信息。

(5)退出系统。退出整个航空客运订票系统。

3.模块设计

1)模块设计

本程序包括主程序模块、菜单选择模块和队列操作模块。

主程序模块 -> 菜单选择模块 -> 队列操作模块

2)系统子程序及功能设计

本系统共设置14个函数,其中包括主函数。个函数名及功能说明如下。

(1)char Continue( ) //询问是否继续的函数

(2)void ErrorMess( ) //操作出错函数

(3-1)int Find_Line1( ) //航班核对函数

(3-2)int Find_Line2( ) //按航班号查询函数

(4)void Line_search( ) //按目录地查询航班函数

(5)void Line_Add( ) //航班添加函数

(6)int Empty_Flight( ) //航班是否为空函数

(7)int Line_See( ) //航班查看函数

(8)void LinemanageMenu() //航班管理菜单

(9)void bookingMenu( ) //订票办理函数

(10)void Display_Reserve( ) //订票乘客信息

(11)void Display_Replace( ) //候补乘客信息

(12)void RefundticketMenu( ) //退票办理函数

(13)void CustomermagMenu( ) //乘客管理子菜单函数

(14)void main( ) //主程序画面函数

4.详细设计

1)数据类型定义

(1)乘客信息的结构体定义

(2)航班信息的结构体定义

(3)全局变量定义

2)系统主要子程序详细设计

(1)主程序模块设计

主函数。设定用户操作界面以及界面的颜色和大小,调用菜单子模块函数。

(2)航班管理模块子菜单界面函数

(3)航班管理的主要工作函数

(4)订票办理函数,用于办理订票业务

5.测试分析

1)航班管理菜单

在主菜单下,用户输入1并按下回车键,运行。该子模块可以实现添加新航班,按终点站名查找航班的信息,浏览查看所有航班信息这三项航班管理操作。

2)订票业务办理

在进行了航班添加之后,即航班不为空时,在主菜单下输入2并回车办理订票业务,在界面提示下输入订票的相关航班信息和订票客户信息。运行。如果需要订票数超过余票量,则可选择等待成为候补乘客或选择放弃订票。

3)退票业务办理

办理订票业务之后,可以办理对应的退票业务。在主菜单下输入3并按下回车键办理订票业务,在界面提示下输入匹配的退票航班信息和订票客户姓名即可退票成功,运行。

4)乘客管理子菜单

办理了订票业务之后,系统可以管理办理了订票业务的乘客信息。在主菜单下输入4并按下回车键进入乘客管理菜单界面,运行。在此子功能模块下可以进行查看订票和候补乘客的信息。

6.退出

在主菜单下输入5并按下回车键,即退出“航空客运订票系统”。

完整代码如下:

#include

#include

#include

#include

#define MAX 60

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

typedef struct Customer

{

char Name[8];

int Amount;

char Rank;

int IDinfor;

struct Customer *Next;

}Customer;

typedef struct Flight

{

char Des_Name[10];

char Flight_No[6];

char Plane_No[6];

int Week_Day;

int Customer_Amount;

int Free_Amount;

int Price[3];

Customer *CustName;

Customer *ReplName;

struct Flight *Next;

}Flight,*PFlight;

//全局变量

int Customer_Count = 0;

Flight *Head = NULL;

Flight *p2;

Customer *Custp1[MAX];

Customer *Replp1[MAX];

int IsEmpty = 1;

int IsReplace = 1;

Customer *prior;

int shouldsave = 0;

//1.询问是否继续的函数

char Continue()

{

char answer;

while(1)

{

printf("\n\t 您是否想继续(Y/N)?");

scanf("%s",&answer);

system("cls");

if(answer == 'y' || answer == 'Y')

return 'y';

else if(answer == 'n' || answer == 'N')

return 'n';

else printf("\n\t输入有误,请重新输入!");

}

}

//2.操作出错函数

void ErrorMess()

{

printf("\n\t 对不起,您的操作有误!"); getch();

}

//3-1.核对航班函数

int Find_Line1(PFlight L, char *key)

{

int flag = 0;

Flight *p1;

p1=L;

if(p1 == p2) return flag;

while(p1 != p2 && p1 != NULL)

{

if(strcmp(p1 ->Flight_No,key) == 0)

{

flag=1;

break;

}

p1=p1->Next;

}

return flag;

}

//3-2.按航班号查询函数

int Find_Line2(PFlight L, char *key, PFlight *pp, int *Flight_No)

{

int flag=0;

Flight *p1;

p1=L;

while(p1!=NULL)

{

if(strcmp(p1->Flight_No,key)==0)

{

flag=1;

*pp=p1;

break;

}

p1=p1->Next;

if(p1!=NULL) Flight_No++;

}

return flag;

}

//4. 按目录地查询航班函数

void Line_search()

{

char Desname[50];

Flight *p1=Head;

if(Head==NULL)

{

printf("\n\t没有到达您想要的终点站的航班!"); getch();

return;

}

printf("\n\t请输入终点站名:");

scanf("%s",Desname);

printf("\n\t您所查询的航班的信息:\n");

printf("\n_________________________________________________ \n");

while(p1!=NULL)

{

if(strcmp(p1->Des_Name,Desname)==0)

{

printf("目的地航班号飞机型号星期座位号头等舱价格普通舱价格经济舱价格\n");

printf("\n%-9s%-8s%-8s%-7d%-8d%-10d%-12d%-8d",p1->Des_Name,

p1->Flight_No,p1->Plane_No,p1->Week_Day,p1->Customer_Amount,

p1->Price[0],p1->Price[1],p1->Price[2]);

}

p1=p1->Next;

}

printf("\n__________________________________________________ \n");

Continue();

}

//5. 航班添加函数

void Line_Add()

{

PFlight p,*p1;

p1=&Head;

while(1)

{

if(Head==NULL)

{

*p1=(PFlight)malloc(sizeof(Flight));

(*p1)->Next=NULL;

p2=Head;

}

else

{

p1=&p;

*p1=(PFlight)malloc(sizeof(Flight));

p2->Next=*p1;

p2=*p1;

}

printf("\n\t添加新的航班!\n");

printf("\n\t请输入终点站名:");

scanf("%s",&p2->Des_Name);

while(1)

{

printf("\n\t请输入唯一的航班号:");

scanf("%s",&p2->Flight_No);

if(Find_Line1(Head,p2->Flight_No))

printf("\n\t航班号已经存在!\n");

else break;

}

printf("\n\t请输入航班号:");

scanf("%s",&p2->Plane_No);

while(1)

{

printf("\n\t请输入航班日期(请输入1-7):");

scanf("%d",&p2->Week_Day);

if(p2->Week_Day<1 || p2->Week_Day>7)

printf("\n\t输入日期有误,请重新输入!\n");

else break;

}

printf("\n\t请输入座位数量:");

scanf("%d",&p2->Customer_Amount);

printf("\n\t请输入头等舱的价钱:");

scanf("%d",&p2->Price[0]);

printf("\n\t请输入二等舱的价钱:");

scanf("%d",&p2->Price[1]);

printf("\n\t请输入三等舱的价钱:");

scanf("%d",&p2->Price[2]);

p2->Free_Amount=p2->Customer_Amount;

p2->CustName=NULL;

p2->ReplName=NULL;

shouldsave=1;

if(Continue()=='n')

{

p2->Next=NULL;

return;

}

}

}

//6. 判断航班是否为空函数

int Empty_Flight()

{

if(Head == NULL)

{

system("cls");

printf("\n\t对不起,航班不存在,按任意键返回!"); getch();

return 1;

}

else return 0;

}

//7.航班查看函数

int Line_See()

{

Flight *p1;

system("cls");

p1=Head;

if(Empty_Flight()) return 0;

printf("\n\n\t 航班信息:\n");

printf("\n______________________________________________________________\n"

printf("目的地航班号飞机型号星期座位数头等舱价格普通舱价格经济舱价格\n");

while(p1 != NULL)

{

printf("\n%-9s%-8s%-8s%-7d%-8d%-10d%-12d%-8d",p1->Des_Name,

p1->Flight_No,p1->Plane_No,p1->Week_Day,p1->Customer_Amount, p1->Price[0],p1->Price[1],p1->Price[2]);p1=p1->Next;

}

printf("\n______________________________________________________________\n" );

printf("\n\t按任意键返回!\n"); getch();

}

//8.航班管理菜单

void LinemanageMenu()

{

char c;

system("cls");

while(1)

{

printf("\n\t\t航班管理菜单:\n");

printf("\n______________________________________________________________\n" );

printf("\t 1. 添加新的航班\n");

printf("\t 2. 查询航班 \n");

printf("\t 3. 查看航班 \n");

printf("\t 4. 返回主菜单 \n");

printf("\n\n______________________________________________________________\ n");

printf("\t请选择您想要的服务:");

scanf("%s",&c);

switch(c)

{

case '1': Line_Add(); break;

case '2': Line_search(); break;

case '3': Line_See(); break;

case '4': return;

default: ErrorMess();

}

}

}

//9.订票办理函数

void bookingMenu()

{

int Ticket_Count,IDinfor,i,flag=0;

int Flight_No=0;

Flight *p1;

Customer *c1;

Customer *c2;

char answer[7];

char temp,c;

int tag=0;

int IsRepl=0;

if(Empty_Flight()) return;

while(1)

{

printf("\n\t现在您可以订票!");

flag=0;

tag=0;

printf("\n\t请输入航班号:");

scanf("%s",&answer);

if(Find_Line2(Head,answer,&p1,&Flight_No))

{

while(1)

{

printf("\n\t请输入您想要订购的数量:");

scanf("%d",&Ticket_Count);

if(Ticket_Count==0)

{

printf("\n\t请再次输入飞机型号:\n");

getch();

}

else break;

}

if(p1->Free_Amount>= Ticket_Count)

{

Customer_Count++;

flag=1;

IsRepl=1;

if(p1->CustName==NULL)

{

Custp1[Flight_No]=c1=(Customer*)malloc(sizeof(Customer));

p1->CustName=Custp1[Flight_No];

}

else

{

c1=(Customer*)malloc(sizeof(Customer));

Custp1[Flight_No]->Next=c1;

Custp1[Flight_No]=c1;

}

IsEmpty=0;

Custp1[Flight_No]->Amount=Ticket_Count;

IDinfor = p1->Customer_Amount-p1->Free_Amount+1;

Custp1[Flight_No]->IDinfor = IDinfor;

p1->Free_Amount -= Ticket_Count;

printf("\n\t请输入您的姓名:");

scanf("%s",&Custp1[Flight_No]->Name);

while(1)

{

printf("\n\t请输入舱位等级:");

scanf("%s",&Custp1[Flight_No]->Rank);

if(!(Custp1[Flight_No]->Rank >= '1' && Custp1[Flight_No]->Rank <= '3'))

{

printf("\n\t输入有误,请重新输入!");

getch();

}

else

break;

}

printf("\n\t请输入您的ID信息:");

scanf("%d",&Custp1[Flight_No]->IDinfor);

if(Ticket_Count<10)

printf("\n\t");

else

printf("\n\t");

printf("\n\t恭喜您订票成功!\n");

for(i=1;i<=Ticket_Count; i++)

{

printf("\n\t您所预定的座位号是%d",IDinfor++);

if(i%10==0)

printf("\n\t");

}

printf("\n");

}

else if(p1->Free_Amount==0)

{

printf("\n\t对不起,票已售完!\n");

IsRepl=0;

}

else

{

printf("\n\t对不起,当前没有多余的票!\n");

IsRepl=0;

}

if(!IsRepl)

{

printf("\n\t您是否想成为候补乘客(Y/N)?:");

scanf("%s",&temp);

if(temp=='y' || temp=='Y')

{

if(p1->ReplName==NULL)

{

c2=(Customer*)malloc(sizeof(Customer));

Replp1[Flight_No]=c2;

p1->ReplName = Replp1[Flight_No];

}

else

{

c2=(Customer*)malloc(sizeof(Customer));

Replp1[Flight_No]->Next = c2;

Replp1[Flight_No] =c2;

}

IsReplace=0;

tag=1;

Replp1[Flight_No]->Amount = Ticket_Count;

printf("\n\t请输入您的姓名:");

scanf("%s",&Replp1[Flight_No]->Name);

Replp1[Flight_No]->IDinfor = IDinfor;

Replp1[Flight_No]->Amount = Ticket_Count;

while(1)

{

printf("\n\t请输入舱位等级:");

scanf("%s",&Replp1[Flight_No]->Rank);

printf("\n\t请输入您的ID信息:");

scanf("%d",Replp1[Flight_No]->IDinfor);

if(!(Replp1[Flight_No]->Rank >='1' && Replp1[Flight_No]->Rank <= '3'))

{

printf("\n\t输入有误,请重新输入.");

getch();

}

else break;

}

printf("\n\t没有剩余座位!\n");

shouldsave=1;

}

}

}

else

printf("\n\t对不起,航班不存在!\n");

if(flag)

Custp1[Flight_No]->Next=NULL;

if(tag)

{

Replp1[Flight_No]->Next=NULL;

printf("\n\t您已经成功排入候补订票队列中!\n");

}

printf("\n\t是否退出菜单?:(y/n)");

scanf("%s",&c);

if(c=='y') return;

}

}

//10.订票乘客信息

void Display_Reserver()

{

Flight *p1;

Customer *c1;

system("cls");

p1=Head;

if(Empty_Flight()) return;

printf("\n\t订票乘客信息");

if(IsEmpty)

{

printf("\n\t对不起,没有订票乘客信息!\n"); getch();

return;

}

printf("\n______________________________________________________________\n" );

printf("Name Flight_NoPlane_NoTic_AmountDes_NameRank_No ID\n");

while(p1 != NULL)

{

if(p1->CustName != NULL)

{

c1 = p1->CustName;

while(c1 != NULL)

{

printf("\n%-8s%-10s%-9s%-11d%-9s%-9c%-9d",c1->Name,

p1->Flight_No,p1->Plane_No,c1->Amount,p1->Des_Name,c1->Rank,c1->IDinfor);

if(p1->Free_Amount>= 1)

printf("\n\n\t还有多余的票!\n");

else printf("\n\n\t票已售完!\n");

c1=c1->Next;

}

}

p1=p1->Next;

printf("\n______________________________________________________________\n" );

}

printf("\n\t按任意键返回!"); getch();

return;

}

//11.候补乘客信息

void Display_Replace()

{

Flight *p1;

Customer *c1;

system("cls");

p1=Head;

if(Empty_Flight()) return;

printf("\n\t候补乘客信息!");

if(IsReplace)

{

printf("\n\t对不起,没有候补乘客!\n"); getch();

return;

}

printf("\n______________________________________________________________\n" );

printf("姓名航班号飞机型号订票数目的地舱位等级顾客号\n");

while(p1 != NULL)

{

if(p1->ReplName != NULL)

{

c1=p1->ReplName;

while(c1 != NULL)

{

printf("\n%-8s%-10s%-9s%-11d%-9s%-9c%-9d",c1->Name,

p1->Flight_No,p1->Plane_No,c1->Amount,p1->Des_Name,c1->Rank,c1->IDinfor);

if(p1->Free_Amount>= 1)

printf("\n\n\t还有多余的票!\n");

else printf("\n\n\t票已售完!\n");

c1=c1->Next;

}

}

p1=p1->Next;

}

printf("\n\n______________________________________________________________\ n");

printf("\n\t按任意键返回!"); getch();

return;

}

//12.退票办理函数

void RefundticketMenu()

{

int Flight_No=0,flag=0;

Flight *p1;

Customer *c2,*c4;

Customer *c3,*c5;

char answer[7],name[7];

int tag=0;

int IDinfor;

if(Empty_Flight()) return;

printf("\n\t现在开始进行退票手续");

if(IsEmpty)

{

printf("\n\t对不起,乘客不存在!"); getch();

return;

}

while(1)

{

flag = 0; tag=0; Flight_No=0;

printf("\n\t请输入航班:"); scanf("%s",&answer);

if(Find_Line2(Head,answer,&p1,&Flight_No))

{

c2=p1->CustName;

printf("\n\t请输入您的姓名:");

scanf("%s",&name);

if(c2==NULL)

{

printf("\n\t对不起,乘客不存在!");

if(Continue() == 'n') return;

}

else

while(c2 != NULL)

{

if(strcmp(c2->Name,name) == 0)

{

if(c2==p1->CustName)

{

prior=p1->CustName;

IDinfor=c2->IDinfor;

flag=1; break;

}

}

else if(c2->Next != NULL)

{

if(strcmp(c2->Next->Name,name)==0)

{

tag=1;

prior=c2;

IDinfor=c2->Next->IDinfor;

flag=1; break;

}

}

c2 = c2->Next;

shouldsave = 1;

}

if(!flag)

printf("\n\t对不起,乘客不存在!\n");

}

else printf("\n\t对不起,乘客不存在!\n");

if(flag)

{

if(prior == p1->CustName&& !tag)

{

if(prior->Next == NULL)

{

p1->Free_Amount += prior->Next->Amount;

p1->CustName = NULL;

else

{

p1->Free_Amount += prior->Next->Amount;

p1->CustName = prior->Next;

}

}

else

{

p1->Free_Amount += prior->Next->Amount;

prior->Next = prior->Next->Next;

}

Customer_Count--;

if(Customer_Count == 0) IsEmpty = 1;

shouldsave =1;

}

if(flag)

{

c3=p1->ReplName;

while(c3!=NULL)

{

if(c3->Amount <=p1->Free_Amount);

{

printf("\n\t候补乘客已经存在!\n");

c4=(Customer*)malloc(sizeof(Customer));

Custp1[Flight_No]->Next=c4;

c4->Next=NULL;

IsEmpty=0;

if(p1->CustName == NULL) p1->CustName = c4;

strcpty(c4->Name,c3->Name);

c4->Rank = c3->Rank;

c4->Amount = c3->Amount;

c4->IDinfor = c3->IDinfor;

p1->Free_Amount -= c3->Amount;

Customer_Count++;

if(c3->Next == NULL) IsReplace=1;

if(p1->ReplName==c3)

{

if(p1->ReplName->Next==NULL)

p1->ReplName==NULL;

else p1->ReplName = c3->Next;

}

else c5->Next=c3->Next->Next;

break;

if(c3->Next!=NULL)

if(c3->Next->Amount <= p1->Free_Amount)

c5=c3;

c3=c3->Next;

shouldsave=1;

}

printf("\n\t退票成功!"); getch();

return;

}

shouldsave=1;

if(Continue() == 'n') return;

}

}

//13.乘客管理子菜单函数

void CustomermagMenu()

{

char c;

system("cls");

while(1)

{

printf("\n\t\t乘客管理菜单:\n");

printf("\n______________________________________________________________\n" );

printf("\t 1. 乘客信息 \n");

printf("\t 2. 候补乘客信息 \n");

printf("\t 3. 返回主菜单 \n");

printf("\n\n______________________________________________________________\ n");

printf("\t请选择您想要的服务:");

scanf("%s",&c);

switch(c)

{

case '1': Display_Reserve(); break;

case '2': Display_Replace(); break;

case '3': return;

default: ErrorMess();

}

}

}

int main(int argc, char *argv[]) {

char c;

Flight *p1;

system("color 1f");

system("mode con: colos=78 lines=35");

p1=Head;

do{

system("cls");

printf("\n\t\t 航空客运订票系统主菜单\n");

printf("\n********************************************************\n");

printf("\t 1.航班管理菜单\n");

printf("\t 2.订票办理菜单\n");

printf("\t 3.退票办理菜单\n");

printf("\t 4.乘客管理菜单\n");

printf("\t 5.退出系统\n");

printf("\n*************谢谢使用航空客运订票系统!*****************\n");

printf("请选择您想要的服务:");

scanf("%s",&c);

switch(c)

{

case '1': LinemanageMenu(); break;

case '2': bookingMenu(); break;

case '3': RefundticketMenu();break;

case '4': CustomermagMenu(); break;

case '5': exit(0);

default: break;

}while(c!='5');

}while(c!='5');

return 0;

}

数据结构航空客运订票系统

航空客运订票系统 程序要求: 1、问题描述 航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。设计一个航空客运订票系统,以使上述业务可以借助计算机完成。 2、要求 1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括名字、订票量、舱位等级1、2、3)以及等候替补的客户名单; 2)系统实现的功能如下: 通过此系统可以实现如下功能: 录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) 查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况; 订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班; 退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。 修改航班信息:当航班信息改变可以修改航班数据文件 存储结构:航线的所有信息存储在一个结构体中,增加,查询,订票,退票等操作按队列的操作来实现。 程序流程图:

详细代码: #include <> #include <> #include <> #include <> #define m 4 查看排队情况 *"; cout<

数据结构课程设计题目

数据结构课程设计 一、教学目的和要求 课程设计是加强学生实践能力的一个强有力手段。综合课设 1主要针对数据结构和 C/C++语言开展 的实践性课程。要求学生掌握数据结构的应用、算法的编写、类 C 语言的算法转换成 C ( C++)程序并 上机调试的基本方法。 课程设计要求学生在完成程序设计的同时能够写出比较规范的课程设计报告。 培 养学生综合运用所学理论知识解决复杂实际问题的实践能力、研究性学习能力和团队合作能力。 、课程设计要求 1、 选好题目: 每题一人, 每班每个题目只允许一人选做 ,学习委员将选题情况在课设第一天统计上交。 2、 课设报告 独立思考,独立完成: 课设报告出现雷同超过 60% ,不论什么原因,一律不及格。 班和班之间,相同题目的同学,可以组成小组,相互讨论,共同完成课程设计中各任务的设计和调试 要求。小组成员间, 算法思路可以相同, 程序可以类似, 但不能完全一样。 课设报告不能雷同超过 60% 。 3、 做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置 方法,准备好有关的文件。 4、 设计要点: ⑴需求分析: 在该部分中叙述总共几个模块,每个模块的功能要求。 ⑵系统设计 总体设计:定义某个数据结构的抽象数据类型及其他算法的功能说明。 详细设计:在此定义存储结构,每个部分的算法设计说明(建议描述算法采用流程图) 。 ⑶编码实现 各个算法实现的源程序,对每个题目要有相应的源程序(每个功能模块采用不同的函数实现) 。源程 序要按照程序的规则来编写, 要结构清晰, 重点函数的重点变量, 重点功能部分要加上清晰的程序注释。 程序能够运行,要有基本的容错功能,尽量避免出现操作失误时出现死循环。 ⑷调试分析 给出实现功能的一组或多组测试数据, 程序调试后, 将按照此测试数据进行测试的结果列出来。 时间 复杂度分析,每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?) ,算法的改进设 想。 ⑸课设总结: 课程设计过程的收获、 遇到问题、 遇到问题解决问题过程的思考、 程序调试能力的思考、 对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。 5、 实现的结果必须进行检查和演示; 程序源代码和程序的说明文件必须上交, 作为考核内容的一部分; (上交时文件夹的取名规则为: “课设题目( *** 设计完成) ”,如“资源管理系统的设计与实现(张三设 计完成) ”。该文件夹下包括三个目录: “源代码 ”、 “可执行文件 ”、 “张三 _课程设计报告 ”。由学习委员 按规定时间统一上交) 。 6、报告提交 形式:纸介质(要求B5纸张打印,加封皮)和电子文档。 三、考核方法和内容 根据课程设计过程中学生的学生态度、 题目完成情况、 课程设计报告书的质量和回答问题的情况等 按照 10%、 40%、 30%、 20% 加权综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。 评分标准: 任务书( 签名,把题目要求贴在相应位置,注意下划线 ) ---------- 目录(注意目录的格式,页码) -------- 1、设 计任务( 题目要求 ) ---- 2 、需求分析( 准备选用什么数据逻辑结构?数据元素包含哪些属性?需要哪 些函数?为什么要这样设计?最后列出抽象数据类型定义 ) ----------- 3 、系统设计( 设计实现抽象数据类型, 包含选择什么物理存储方式?数据元素的结构体或类定义,以及各函数的设计思路,算法,程序流程 图等 ) 4 、编码实 现( 重要函数的实现代码 ) --------------------------- 5 、调试分析( 选择多组测试数据、运行截图、结 果分析 ) ---- 6、课设总结( 心得体会 ) ----- 7 、谢辞 8 、参考文献; 课设报告打印要求: B5纸张打印,报告总页数控制在 10—15页内,报告中不能全是代码, 报告中代码总量控制在150行内。 版式:无页眉,有页码,页码居中 优秀: 答辩所有问题都能答出 良好: 答辩所有问题都能答出 中等: 答辩大部分问题能答出 及格: 答辩大部分问题能答出 不及格:答辩几乎答不出问题 课设报告的装订顺序如下: + 报告良好 +报告一般 + 报告良好 +报告一般 或者 报告几乎都是代码 或者 雷同部分达到 60%

民用航空客运服务产品评价(一)

民用航空客运服务产品评价(一) 摘要:航空客运服务产品是航空公司运营的核心,是航空公司竞争的基础。只有充分地研究客运服务产品,很好地提高客运服务产品的品质,树立良好品牌,才能够改变观念,提高航空公司的竞争力,才能从根本上解决中国航空公司运营服务中存在的问题。 关键词:民用航空;客运服务;评价 1航空客运服务产品的概念及性质 1.1航空客运服务产品概念的界定 一项服务产品就是一项顾客服务经历,即指顾客从进入到离开一个服务系统的历经总和。这种历经总和可由标的顾客、顾客流程、接触雇员和物质实据来说明。航空客运服务产品可界定为:标的旅客从购票开始到乘机,直到离开飞机而实现空间位移愿望的整个旅行历经的总和。在整个历经中旅客要接受航空公司提供的各种服务。这种历经总和可由标的旅客、旅客流程、接触雇员和物质实据来说明。 以上界定是从纵向的角度看待客运服务产品的,如果从横向的角度去界定客运服务产品,其可以划分为三个部分:旅客接受的核心服务、便利性服务和支持性服务。 (1)核心服务:它是为顾客提供的本质的、最基本的服务。航空客运服务产品的核心服务是:空间位移。提供航班运营,实现空间位移,满足旅客旅行的需求,是航空公司客运的核心服务。 (2)便利性服务:即为了顾客能够使用核心服务而常常设有的一些附加服务,如果缺少它,核心服务就不能上市或者说是残缺产品。航空客运服务产品的便利性服务是:保证航班运营的必备服务。航空公司提供给旅客的便利性服务是通过售票、办理乘机手续、登机、以及行 李托运等服务,使旅客完成旅行。 (3)支持性服务:即用来使服务增值或有别于竞争者的服务,是核心服务发挥最大效用的服务。航空客运服务产品的支持性服务是:使客运服务增值的服务。航空公司提供给旅客的支持性服务包括免费查询、免费送票服务、空中服务,候机厅内电话、传真、复印、网吧、美容美发、超市、以及鲜花礼仪服务等等。 1.2航空客运服务产品的特征 航空客运服务产品的基本特征包括以下几个方面: (1)无形性:即服务产品不具有有形的、可以看得见、接触到的外表或形状,但是服务产品经常借助于有形物质来实现。客运服务产品属于无形产品,与其他有形产品不同,往往是不可触摸的。但有些情况下,服务和一些物质形态的东西相关联,如旅客花钱买飞机票,不是买飞机,而是借助于飞机,通过航空公司提供给旅客的乘机服务,来实现空间位移的目标,达到旅行的目的。 (2)不可分性:即服务产品的生产与消费同时进行,消费者参与生产过程,核心价值在买卖双方的相互作用中产生。航空客运服务产品的所谓不可分性是指服务的生产过程与消费过程同时进行,也就是说服务人员提供服务给旅客时,也正是旅客消费服务的时刻,两者在时间上不可分离。而且,旅客只有且必须加入到服务的生产过程中才能最终消费到服务。(3)不可存储性:即服务产品不能储存。航空公司提供给旅客的客运服务产品并不能够因为旅客的多少而储存,进行经济批量生产。客运服务产品的不可分性决定了运力不可储存。旅客一进入客运服务系统,客运服务产品就开始生产,旅客一离开客运服务系统,客运服务产品就被消费完毕。 (4)差异性:即服务产品的组成部分和质量水平很容易随不同的人、时间、地点而变化,不易稳定和统一。航空客运服务是以“人”为中心的行业,由于人类个性的存在,使得对服务质量的检验很难采用统一的标准。一方面由于服务人员自身因素的影响,在不同时间、不同的环境会提供不同水准的服务;另一方面由于旅客自身的因素会影响服务质量和服务效果,

航空客运订票系统

航空客运订票系统 设计报告 姓名: 班级: 学号: 学院: 专业: 指导: 2013.6.20

目录 1.需求分析 (1) 1.1概述 (1) 1.2 数据需求 (1) 1.3功能性需求 (2) 1.4 其他需求 (2) 2. 概要设计 (3) 2.1数据结构定义 (3) 3.详细设计 (5) 3.1 系统模块图 (5) 3.2 数据结构定义 (6) 3.3 主要模块算法描述 (8) 1.数据的输入和保存 (8) 4.系统实现 (10) 4.1开发环境 (10) 4.2运行界面 (10) 4.3测试用例 (13) 6.参考文献 (14) 7.源程序 (14)

1.需求分析 该项目是制作一个航空客运订票系统,编写系统需求分析的目的是明确软件的功能、界面,使得系统分析人员及软件开发人员能清楚地了解用户的需求,方便开发工作。 1.1概述 随着出行人数越来越多,航空客运所占的比例越来越多,机场的售票压力越来越大,此软件意在解决机场的售票问题让更多的人在家就能购买机票,减轻机场负担。 1.2 数据需求 两个客户名单可分别由线性表和队列实现。为查找方便,已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。由于预约人数无法预计,队列也应以链表作存储结构。整个系统需汇总各条航线的情况登录在一张线性表上,由于航线基本不变,可采用顺序存储结构,并按航班有序或按终点站名有序。每条航线是这张表上的一个记录,包含上述8个域、其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。

1.3功能性需求 1.主界面模块:供用户选择使用本系统的各个功能。 2.录入航线信息模块:可以录入飞行目的地、航线号、飞机号、时间、一等舱数量、二等舱数量、三等舱数量。为以后的模块提供数据。 3.查询模块:用户输入目的地后,会显示飞往该地的航班、飞机号、起飞时间、一等舱剩余票数、二等舱剩余票数、三等舱剩余票数。 4.订票模块:用户输入目的地后,会显示飞往该地的航班、飞机号、起飞时间、一等舱剩余票数、二等舱剩余票数、三等舱剩余票数。提示用户是否订票,旅客订票成功后会显示订票成功。不成功会提示旅客进入排队等票。 5.退票模块:用户输入目的地后,会显示飞往该地的航班、飞机号、起飞时间、一等舱剩余票数、二等舱剩余票数、三等舱剩余票数。提示用户是否退票,旅客退票成功后会显示退票成功。 1.4 其他需求 ①界面简洁,美观 ②程序实用交互性好

数据结构课程设计-学生成绩管理系统

淮阴工学院 数据结构课程设计报告 选题名称:学生成绩管理系统 系(院):数理学院 专业:信息与计算科学 班级:计科1102班 姓名:徐连喜学号: 1104101233 指导教师:周海岩 学年学期:2011 ~ 2012 学年第 1 学期 2012 年06 月06 日

【摘要】 21世纪,科学技术突飞猛进,经济知识和信息产业初见端倪,特别是信息技术和网络技术的讯速发展和广泛应用,对社会的政治,经济,军事,文化等领域产生越来越深刻。学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。本论文叙述到的学生成绩管理系统是用IIS+ASP网页编程+ACCESS数据库+DREAMWEAVER MX 2004+SQL查询语言实现的。重点介绍了学生成绩管理系统的实现过程:包括系统分析,系统调查,功能设计,数据库设计,系统实现,系统测试和调试等。本系统主要功能有查询学生成绩、单个添加学生成绩、批量添加学生成绩、删除学生成绩、管理页面和修改管理员密码等内容。 【关键词】 成绩管理;成绩查询;C++

目录 中文摘要。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 1 1绪论。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 4 1.1 选题背景。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 5 1.2 需求分析。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 6 2总体设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。7 2.1程序设计组成框图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。8 2.2 模块功能说明。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。9 2.3 程序流程图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。10 2.4 主要函数之间相互调用。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。11 3 在设计过程中的感受。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。12 致谢。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。13 参考文献。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。14附录:源程序清单。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。15

航空客运订票系统

航空客运订票系统 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

课程设计报告 课程名称数据结构 课题名称航空客运订票系统 专业通信工程 班级 学号 姓名 指导教师 2013 年 6 月 29 日

湖南工程学院 课程设计任务书 课程名称数据结构 课题航空客运订票系统 专业班级 学生姓名 学号 指导老师张鏖烽田娟秀李杰君 审批 任务书下达日期 2013 年 6 月 23 日 任务完成日期 2013 年 6 月 29 日 目录 1.需求分析 (1) 2.概要设计 (1) 定义“航线”类型 (2) 主函数 (2) 调用关系 (3) 3.详细设计 (3) 航线与客户的存储结构 (3)

各个系统模块 (3) 算法设计 (4) 主函数功能 (6) 整个系统的流程图 (7) 存储结构设计 (7) 4.调试分析 (7) 5.用户使用说明 (8) 6.测试结果 (10) 7.心得体会 (12) 8.附录 (13)

课题名称航空客运订票系统 1.需求分析 航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。 【基本要求】 (1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量); (2)系统能实现的操作和功能如下: ①录入:可以录入航班情况,全部数据可以只放在内存中,最好存储在文件中; ②查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额; ③承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补; ④承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。 初始化航班信息如下: 通过输入0~5这六个数字选择相应的操作,如:查询航班,订票,退票等操作; 2.概要设计 两个客户名单可分别由线性表和队列实现。为查找方便,已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。由于预约人数无法预计,队列也应以链表作存储结构。整个系统需汇总各条航线的情况登录在一张线性表上,由于航线基本不变,可采用顺序存储结构,并按航班有序或按终点站名有序。每条航线是这张表上的一个记录,包含上述8个域、其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。 注:由于“航线”可只用一条单链表记录,故采用全局变量,减少参数的传递。

数据结构课程设计题目及要求

实验一~实验四任选一题;实验五~实验九任选一题。 实验一运动会分数统计 一、实验目的: (1)熟练掌握线性表的两种存储方式 (2)掌握链表的操作和应用。 (3)掌握指针、结构体的应用 (4)按照不同的学校,不同项目和不同的名次要求,产生各学校的成绩单、团体总分报表。 二、实验内容: 【问题描述】 参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表。 【基本要求】 产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。 【测试数据】 对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。 【实现提示】 可以假设m≤20,m≤30,w≤20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名、校名(和成绩)。 【选作内容】 允许用户指定某些项目可采取其他名次取法。

实验二停车场管理 一、实验目的: (1)熟练掌握栈顺存和链存两种存储方式。 (2)掌握栈的基本操作及应用。 (3)以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。 二、实验内容: 【问题描述】 设停车场是一个可停放n辆汽车的长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车信放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场院,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 【基本要求】 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。 【测试数据】 设n=2,输入数据为:(A,1,5),(A,1,15),(A,3,20),(A,4,25),(A,5,30),(D,2,35),(D,4,40),(E,0,0)。其中:A表示到达(Arrival);D表示离去(Departure);E表示输入结束(End)。 【实现提示】 需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。 【选作内容】 (1)两个栈共享空间,思考应开辟数组的空间是多少? (2)汽车可有不同种类,则他们的占地面积不同收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积。(3)汽车可以直接从便道开走,此时排在它前面的汽车要先开走让路,然后再依次排到队尾。 (4)停放在便道上的汽车也收费,收费标准比停放在停车场的车低,请思考如何修改结构以满足这种要求。

航空客运订票系统

通达学院程序设计报告(2017 / 2018 学年第一学期) 题目:航空客运订票系统 专业计算机科学与技术 学生姓名 班级学号 指导教师吴晓诗 指导单位计算机学院计算机科学与技术系 日期2017.11.21-2017.12.8

航空客运订票系统 一、课题内容和要求 1.航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。要求在TC 或VC环境下设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。 2.要求: (1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日期(星期 几)、乘员定额、余票量、已经订票的客户名单(包括姓名、订票量)以及等候替补的客户名单(包括姓名、所需票量)。 (2)作为模拟系统,全部数据可以只存放在内存中。 (3)通过此系统可以实现如下功能: ①录入功能:可以录入航班情况 ②查询功能:根据客户提供的终点站名进行查询,可以输出以下信息:航班号、 飞机号、星期几飞行和余票量等。也可以根据航班号,查询飞机某个航线的情况。 ③订票功能:根据客户提出的要求(姓名、终点站名、订票数量)查询该航班的 余票量情况。如尚有足够的余票,则为客户办理订票手续;若已满员或余票量少于订票数量,则需要重新询问客户要求,如需要,可登记排队候补。 二、需求分析 )运行环境(软、硬件环境) Window10 64位codeblocks 使用语言:c++ 2)输入的形式和输入值的范围 由航空公司输入航线情况并以单链表的形式存储在内存里面 3)输出的形式描述 通过客户的输入输出相应的内容

4)功能描述 用户通过本系统实现该航空公司的查询、订票(包括候补)、和退票功能 5)测试数据 三、概要设计 1)流程图示意 2)抽象数据类型定义描述 (对各类的成员及成员函数进行抽象描述,参见书或ppt 及实验) 一条航线包括了目的地、航班号、飞机号、飞行周日、总票数、余票量、订票人员、候补人员等信息,我们可以将航线看成一类,定义为一个类,而订票人员通

数据结构课程设计

课程设计说明书 课程名称:数据结构和算法 设计题目:多种排序 院系:计算机科学与信息工程学院 学生姓名: 学号: 专业班级:计科嵌入式(12-1) 指导教师: 年月日

课程设计任务书 设计题目表达式计算程序设计 学生姓名所在院系计科专业、年级、班12计科(嵌入式)设计要求: 1) 采用如下七种方法实现上述问题求解:插入排序、希尔排序、起泡排序、快速排 序、选择排序、堆排序、归并排序。 2) 统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出 其中两种较快的方法。并将数据序列和不同的查找算法的性能结果记录入txt 文件。 学生应完成的工作: 1. 利用随机函数产生N 个随机整数(10000 以上)。 2. 对这些数字进行排序。 3. 采用插入、希尔、起泡、快速、选择、归并、堆排序方法解决问题。 4. 对不同的排序算法进行性能比较并记录。 参考文献阅读: 1. 《数据结构(C 语言版)》严蔚敏清华大学出版社 2. 《C 语言程序设计》丁峻岭中国铁道出版社 3. 《C 程序设计》谭浩强清华大学出版社 工作计划: 任务下达日期:年月日 任务完成日期:年月日 指导教师(签名):学生(签名):

多种排序 摘要: 排序是算法中最基础的问题之一,经典的排序算法是前人不断总结得到的,基于比较的方法是比较直观的方式,主要存在插入法排序、堆排序、希尔排序、归并排序、快速排序,每一种排序算法都有自己的优缺点,比如插入法排序适用于那些长度短的排序,要是长的话,有些爱莫能助啦,堆排序主要是依据了二叉堆的特性,但是创建堆的过程也是一个复杂的问题,希尔排序的过程是一个不断精确的过程,但是目前也只是一个经验方式。归并排序是一个递归的问题,采用分治的思想实现,但是这种算法需要额外的存储空间,快速排序虽然是实践中比较常用的算法,但是对于有序的数组采用快速排序就是灾难。比较型算法的时间复杂度最优也只能到达O(NlogN)。 关键词: 归并排序快排排序选择排序冒泡排序 插入排序堆排序希尔排序内部排序

航空客运订票系统

洛阳理工学院 课程设计报告 课程名称数据结构课程设计 设计题目航空客运订票系统 专

课程设计任务书 设计题目:航空客运订票系统__________________________________ _________________________________________________________ 设计内容与要求: 内容: 录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) 查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况; 订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班; 退票:可退票,退票后修改相关数据文件; 客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。 修改航班信息:当航班信息改变可以修改航班数据文件 要求: 根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。 课程设计评语 成绩: 指导教师:_______________ 年月日

目录 一.问题描述 (2) 二.基本要求 (2) 三.数据结构 (2) 四.总体设计 (3) 五.详细设计 (4) 5.1录入功能 void lurugongneng() (4) 5.2查询功能 void chaxungongnen() (4) 5.3订票功能 void dingpiaogongnen() (6) 5.4退票功能 void tuipiaogongnen() (7) 5.5修改功能 void xiugaigongnen() (8) 六.测试与调试 (9) 6.1 程序的模块 (9) 6.2 程序的调试 (9) 6.3 测试结果 (9) 七.源程序清单 (16)

航空客运订票系统的设计与实现

课程设计说明书 课程名称 题目航空客运订票系统的设计与实现 院系_电子信息工程学院____ 班级__计算机科学与技术__ 学生姓名______________ 指导教师_____________ 日期_ 2011.12.19-2011.12.30__ 数据结构课程设计任务书

指导教师:时间: 2011.12.8 航空客运订票系统的设计与实现

一、简介 1.设计目的: 1.数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发 2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。 3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。 航空空订票系统: (1)熟练掌握链表存储结构及其建立过程和常用操作; (2)熟练掌握队列的建立过程和常用操作; (3)学会自己调试程序的方法并掌握一定的技巧。 2.问题的描述: 航空客运订票的业务包括查询航线和客票预定的信、客票预定和办理退票等,设计一个程序以使上述任务借助计算机完成。 二、数据结构的设计: (1)航班信息:飞机抵达城市、航班号、飞机号、起降时间、航班票价、票价折扣、总位置和剩余位置、以訂票的客户名单。 (2)客户信息:客户姓名、证件号、座位号。 三、功能(函数)设计: 1.每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日(星期几)、载客量、余票量、票价格,折扣,已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);

数据结构课程设计报告

数据结构课程设计 设计说明书 TSP 问题 起止日期:2016 年 6 月27 日至2016 年7 月 1 日 学生姓名 班级 学号 成绩 指导教师( 签字) 2016 年7 月 1 日

目录 第1 章需求分析.................................................................................1... 1.1 简介 (1) 1.2 系统的开发背景 (1) 1.3 研究现状 (1) 第2 章概要设计.................................................................................2... 2.1 系统开发环境和技术介绍 (2) 2.2 系统需求分析 (2) 2.2.1 总体功能分析 (2) 2.2.2 核心功能分析 (3) 第3 章详细设计...................................................................................4... 3.1 系统开发流程 (4) 3.2 系统模块设计 (4) 3.3 系统结构 (6) 3.2 系统流程图 (6) 第4 章调试分析...................................................................................7... 4.1 程序逻辑调试 (7) 4.2 系统界面调试 (8) 第5 章测试结果...................................................................................9... 5.1 测试环境 (9) 5.2 输入输出测试项目 (9) 5.3 测试结果 (10) 结论.....................................................................................................1..1.. 参考文献................................................................................................1..1. 附录.......................................................................................................1..2..

国际航空客运基础

目录 第一章基础知识 (1) 一三大业务区 (1) 二一国规定 (1) 三航线代号 (1) 四航程类型 (1) 五客票点定义 (2) 六飞行时间的计算 (2) 第二章货币与付费 (2) 一货币代码的组成 (2) 二货币的保留位数 (2) 三货币的进整规则 (2) 四付费规定 (3) 第三章客票及客票填开 (3) 一客票的一般规定 (3) 第四章国际运价计算 (4) 一公布直达运价 (6) 二超里程附加(EMS) (7) 三超里程优惠(EMA) (8) 四特殊航线 (9) 五中间较高票价(HIP) (9) 六回拽最低收费检查(BHC、BHM) (9) 七方向性最低收费检查(DMC) (10) 八运价组始发国最低收费检查(COM) (12) 九混合等级运价计算 (13) 十缺口程(OJ) (13) 十一旁岔程 (15) 第五章特殊旅客 (16)

航空旅客国际运输 第一章基础知识 一、三大业务区 1、一区:南、北美洲及其附属岛屿、中美洲格陵兰岛、加勒比海及西印度群岛、百慕 大、夏威夷群岛(包括棕榈岛、中途岛) 2、二区:欧洲、非洲及其附属岛屿、乌拉尔山以西的亚洲部分(包括伊朗) 3、三区:亚洲及其附属岛屿(不包括以含在二区内的部分)、乌拉尔山以东俄罗斯部 分、澳大利亚、新西兰及太平洋岛屿(不包括一区在内的部分) 二、一国规定 在国际课余业务处理上,美国与加拿大;北欧三国(丹麦、挪威、瑞典)分别被视为一国 三、航线代号 1、WH:西半球航线:指整个航程在一区以内的航线。TYO—NYC—RIO 2、EH:东半球航线:指整个航程在二、三区以内的航线。SIN—BKK—PAR 3、PA:经过北、中大西洋航线。BJS—TYO—LAX 4、AT:经过大西洋航线。NYC—LON—PAR 5、AP:经过大西洋及太平洋航线。TYO—NYC—LON 6、SA:北大西洋与东南亚之间飞跃大西洋并经过约翰内斯堡的航线。RIO—JIB—LON 7、SA:二区与三区(不包括中国、南亚四大陆)之间,经过西伯利亚、欧洲与日本/韩国 之间不经停的航线;或欧洲与三区CIS国家(亚美尼亚、阿塞拜疆、白俄罗斯、爱沙尼亚、格鲁吉亚、哈萨克斯坦、吉尔吉斯斯坦、拉托维亚、立陶宛、摩尔多瓦、俄罗斯、塔吉克斯坦、土库曼斯坦、乌克兰、乌兹比克斯坦)/蒙古之间不经停的航线。KUL—TYO—PAR OR FRA—KHV 8、PE:乌拉尔山以西的俄罗斯部分、乌克兰与三区之间的航线(不包括TS航线)。 MOV—HAN—HKG 9、SP:南极航线,南大西洋地区、玻利维亚、秘鲁与西南大西洋之间经过奥克兰及布 宜诺斯艾利斯航线。SYD—AKL—BUE—LIM 10、PO:北极航线,经过北极(ANC)的航线。TYO—ANC—LON 四、航程类型 1、OW:单程。BJS—LAX—NYC 2、RT:来回程。BJS—SIN—BJS 1)航程、运价一致:BJS—SIN—BJS 2)航程不一致、运价一致:BJS—BKK—PAR—HKG—BJS 3)航程一致、运价不同、基础运价相同。BJS—SIN—BJS Y F 3、CT:环程。BJS—TYO—NYC—BJS 来回程是环程特殊的一种 4、RTW:环球程(同时经过太平洋、大西洋,真正到过1、2、3 区) BJS—TYO—HHL—LAX—NYC—LON—HLL—BJS 3 3 1 1 1 2 1 3 5、OJ:缺口程。BJS—CAN……HKG—SIN 6、OOJ:始发站缺口。SHA—TYO—BJS

航空客运订票系统

这是我上网搜的一个材料,大家看一下,我们这次课程设计用java语言来实现,大家仔细看一下项目需求分析,基本要实现的功能如下,大家自己也在网上下些资料,共享一下,人多力量大,好好研究研究项目,下周会聚集大家讨论一下,定下每个人要完成的任务,大家一定要仔细研究,到时候有什么要添加修改的都提出来,做到让项目完美。 航空客运定票系统应该为客户提供三个基本的功能:查询航线、客票预定和办理退票。 (一)查询航线: 能够根据客户提出终点站名输出相关的信息,包括航班号、飞机号、飞行日期、载员定额、余票量、已定票的客户名单(包括该客户的姓名、定票量、舱位等级)以及等候替补的客户名单(包括姓名和所需票量)、最近一天航班的日期和余票额; 由于航空公司的航班保持基本不变,所以应该采用顺序存储结构将各条航线的基本情况登陆在一张线性表上,按照终点站名有序排列。 (二)客票预定: 根据客户提出的要求(航班号和定票数额)查询该航班的余票情况。如余票能够满足客户的要求则为客户办理定票手续并输出相应的座位号;若该航班已经满员或余票额少于客户的定票额,则需重新询问客户需求。若需要可登记排队候补并留下客户的联系方式,不需要则退出。 在客票预定这一环节里将出现两个客户名单:已定票客户名单和需定票客户名单。两客户名单可分别由线性表和队列实现。为查找方便,已定票客户的线性表应按姓名有序,同时为了插入和删除方便,,应以链表作为存储结构。由于无法知道预约的人数,队列也应该以链表作为存储结构。 (三)办理退票: 根据客户提供的情况(日期航班),为客户办理退票手续,同时在系统中删除该客户的基本信息。然后查询该航班是否有人排队替补,首先访问排在第一的客户,若退票额能够满足他的要求,则为他办理定票手续,否则依次询问其他排队候补的客户。 从问题的提出可以看到,我们需要的只是能实现对数据的插入,删除,检索这样一个软件。由于乘客的数量较大并且不固定,因此选择用链表来保存乘客的基本信息:包括乘客的姓名,身份证号,搭乘班机的航班号,以及预定的座位号(假设座位预先订号)。为了将这些信息保存起来以备下次程序运行时调用,将必需的信息写入文件中,在程序的初始化时读入。综合一下来看,我们需要做的是建立一个可以插入和删除节点的链表,并能检索这个链表,在必要的时候将链表的内容保存到文件中。 任何一家航空公司都想尽可能的为客户提供优质的服务。设计这样一个面向顾客的航空订票系统,最重要的就是设计的功能人性化,这就要求:采用先进的设计理念与开发工具,用技术全面提升服务,保证系统功能的强大与完整;具有高可靠性和强大有效的容错能力是系统

数据结构课程设计报告

数据结构课程设计报告 题目:5 班级:计算机1102 学号:4111110030 姓名:陈越 指导老师:王新胜

一:需求分析 1.运行环境 TC 2.程序所需实现的功能 几种排序算法的演示,要求给出从初始开始时的每一趟的变化情况,并对各种排序算法性能作分析和比较: (1)直接插入排序; (2)折半插入排序; (3)冒泡排序; (4)简单选择排序; (5)快速排序; (6)堆排序; (7)归并排序. 二:设计说明 1.算法设计的思想 1)、直接插入排序 排序过程:整个排序过程为n-1趟插入,即先将序列中第1个记录看成是一个有序子序列,然后从第2个记录开始,逐个进行插入,直至整个序列有序。 2)、折半插入排序 排序过程:用折半查找方法确定插入位置的排序叫折半插入排序。 3)、冒泡排序

排序过程:将第一个记录的关键字与第二个记录的关键字进行比较,若为逆序r[1].key>r[2].key,则交换;然后比较第二个记录与第三个记录;依次类推,直至第n-1个记录和第n个记录比较为止——第一趟冒泡排序,结果关键字最大的记录被安置在最后一个记录上。对前n-1个记录进行第二趟冒泡排序,结果使关键字次大的记录被安置在第n-1个记录位置。重复上述过程,直到“在一趟排序过程中没有进行过交换记录的操作”为止 4)、简单选择排序 排序过程:首先通过n-1次关键字比较,从n个记录中找出关键字最小的记录,将它与第一个记录交换。再通过n-2次比较,从剩余的n-1个记录中找出关键字次小的记录,将它与第二个记录交换。重复上述操作,共进行n-1趟排序后,排序结束。 5)、快速排序 基本思想:通过一趟排序,将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录进行排序,以达到整个序列有序。 排序过程:对r[s……t]中记录进行一趟快速排序,附设两个指针i和j,设枢轴记录rp=r[s],x=rp.key。初始时令i=s,j=t。首先从j所指位置向前搜索第一个关键字小于x的记录,并和rp交换。再从i所指位置起向后搜索,找到第一个关键字大于x的记录,和rp交换。重复上述两步,直至i==j为止。再分别对两个子序列进行快速排序,直到每个子序列只含有一个记录为止。 6)、堆排序 排序过程:将无序序列建成一个堆,得到关键字最小(或最大)的记录;输

航空客运服务的基本知识

航空客运服务的基本知识 一、行李规定 1、随身携带行李的限制规定 ⑴、乘坐国内航班:旅客的手提行李总重量不要超过5公斤,体积每件行李不超过20×40×55厘米(根据各航空要求不同可能有所不同)。安检现场有供旅客测试手提行李大小的行李筐,如果旅客的行李可以放入该标准筐,则该件行李可以随身

携带,否则需要托运。⑵、乘坐国际航班:通常情况,手提行李总重量不要超过7公斤,每件行李体积不超过20×40×55厘米(三边之和不超过115厘米)。乘坐美加航线的旅客只能随身携带一件手提行李。(部分航空有特殊重量限制规定,请旅客留意机票上的提示,或向航空咨询。) 2、托运行李的相关规定 ⑴乘坐国内航线:持成人或儿童客票的头等舱旅客为40公斤,公务舱旅客为30公斤,经济舱旅

客为20公斤。持婴儿票的旅客,无免费行李额。 ⑵乘坐国际航线:经济舱旅客的免费托运行李限额为20公斤,经济舱持学生护照的旅客,可以免费托运的行李限额为30公斤;公务舱免费托运行李限额为30公斤;头等舱免费托运行李限额为40公斤。但当目的地为美洲时,其托运行李可以为两件,每件不超过23公斤,单件行李三边长度和不超过158厘米。当超过时,旅客需要支付逾重行李费。(部分航空有特殊重量限制规定,请旅客留意机票上的提示,或向航空咨询) zbc6e 通用航空 https://www.360docs.net/doc/c89445031.html,

★不可作为托运行李运输物品有:重要文件和资料、证券、货币、汇票、珠宝、贵重金属及其制品、古玩字画、易碎易损坏物品、易腐物品、样品、旅行证件、贵重物品等。(具体请向航空问询) 二、安全检查 1、哪些物品是禁止随身携带也禁止托运的? 枪支弹药、管制刀具、警械、易燃易爆物品(如打火机气、酒精、油漆、烟花爆竹)、腐蚀性物品、

相关文档
最新文档