正文格式.docx
《正文格式.docx》由会员分享,可在线阅读,更多相关《正文格式.docx(35页珍藏版)》请在冰豆网上搜索。
正文格式
航空订票系统
一、选题背景
以下为我选的题目和要求:
录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定);
查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
订票:
(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票:
可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况。
修改航班信息:
当航班信息改变可以修改航班数据文件
要求:
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
因为这道题很切合实际生活,再加上对航空订票的一下事项也有所了解,线性表的应用在数据结构中起到核心作用,可以用线性表来实现此系统的功能,进一步巩固线性表的相关知识,对自身消化数据结构的理论知识有很大的帮助。
所以我选择了这个作为本次课程设计的题目。
二、运行环境(软、硬件环境)
Vc6.0WindowsXP操作系统
三、算法设计的思想
(1)本程序主要完成:
录入航班信息、查询航班信息、修改航班信息、订票业务以及退票业务四个功能。
(2)本程序涉及到线性表的动态分配存储空间及插入、删除、遍历输出等操作。
(3)函数的调用是使得本程序简单易懂的主要工具,程序的模块化增加了本程序的可实用性。
(4)循环语句和switch语句构成了环环相扣的菜单栏,更加人性化。
四、算法的流程图
算法总体框架:
录入航线:
查询航班信息:
Y
修改航班信息:
订票业务:
退票业务:
五、算法设计分析
ADTairline{
数据对象:
D={ai|ai∈elem,i=1,2,3,……,n,n≥0}
数据关系:
R1={|ai-1,ai∈D,i=2,……,n}
基本操作:
luru(airline&L)
初始条件:
线性表L已经存在。
操作结果:
将输入的航班信息存储到L中。
shuchu(airline&L,inti)
初始条件:
线性表L已经存在。
操作结果:
输入L中第i-1个航班的全部信息。
display(person&P,inti)
初始条件:
线性表P已经存在。
操作结果:
输出P中第i-1个客户的全部信息。
search_name(airline&L)
初始条件:
线性表L已经存在。
操作结果:
以终点站查询航班信息,若L为空,则提示是否进入“录入航班信息”模块,若不为空,则会输出该航线的全部信息。
若未找到,则将提示“该航线未找到”。
search_number(airline&L)
初始条件:
线性表L已经存在。
操作结果:
以航班号查询航班信息,若L为空,则提示是否进入“录入航班信息”模块,若不为空,则会输出该航线的全部信息。
若未找到,则将提示“该航线未找到”。
search(airline&L)
初始条件:
线性表L已经存在。
操作结果:
分为三个模块,分别为“返回主菜单”,“按终点站查询”,“按航班号查询”,该函数将根据输入来决定下一步程序。
correct_air_number(airline&L,inti)
初始条件:
线性表L已经存在。
操作结果:
修改第i-1个航班的航班号
correct_leave_time(airline&L,inti)
初始条件:
线性表L已经存在。
操作结果:
修改第i-1个航班的起飞时间
correct_arrive_time(airline&L,inti)
初始条件:
线性表L已经存在。
操作结果:
修改第i-1个航班的降落时间。
correct_name(airline&L,inti)
初始条件:
线性表L已经存在。
操作结果:
修改第i-1个航班的终点站
correct_money(airline&L,inti)
初始条件:
线性表L已经存在。
操作结果:
修改第i-1个航班的票价
correct_hold_number(airline&L,inti)
初始条件:
线性表L已经存在。
操作结果:
修改第i-1个航班的载客量
correct_zi(airline&L,inti)
初始条件:
线性表L已经存在。
操作结果:
分为7个模块,分别为“返回主菜单”,“修改航班号”,“修改起飞时间”,“修改降落时间”,“修改终点站”,“修改票价”,“修改载客量”,该函数将根据输入来决定下一步程序。
order_ticket(airline&L,person&P)
初始条件:
线性表L和P已经存在。
操作结果:
根据输入的航班号查询航线信息库,若为空,则提示是否进入“录入航班信息”模块,若不为空,则输入的客户资料存储到P中,若订票数量大于剩余票量,则提示“该航班已满”。
ticket_return(airline&L,person&P)
初始条件:
线性表L和P已经存在。
操作结果:
若P为空,则将根据提示自动进入“订票”模块。
若不为空,则会根据提示删除客户资料,若查找失败,则提示“该客户未找到”。
}
六、源代码
#include
#include
#include
#defineL_maxsize100;
#defineP_maxsize100;
typedefstruct
{
charair_number[20];//航班号
charleave_time[20];//起飞时间
chararrive_time[20];//降落时间
charname[20];//终点站
intmoney;//票价
inthold_number;//载客量
intrest_number;//余票量
}elemtype;
typedefstruct//定义航线结构
{
elemtype*elem;
intlength;
}airline,*airinfo;
typedefstruct
{
charperson_name[20];
charID[20];
intticket_number;
charair_number[20];
charleave_time[20];
chararrive_time[20];
charname[20];
intmoney;
inthold_number;
}person_elem_type;
typedefstruct
{
person_elem_type*elem;
intlength;
}person;
voidluru(airline&L)//录入航班信息
{
inti;
i=L.length;
printf("请根据提示输入航线信息:
\n");
printf("==========================================================");
printf("\n航班号:
");
scanf("%s",&L.elem[i].air_number);
printf("起飞时间:
");
scanf("%s",&L.elem[i].leave_time);
printf("降落时间:
");
scanf("%s",&L.elem[i].arrive_time);
printf("终点站:
");
scanf("%s",&L.elem[i].name);
printf("票价:
");
scanf("%d",&L.elem[i].money);
printf("载客量:
");
scanf("%d",&L.elem[i].hold_number);
printf("余票量:
");
scanf("%d",&L.elem[i].rest_number);
printf("==========================================================");
L.length++;
printf("\n航线信息载入成功!
\n");
}
voidshuchu(airline&L,inti)//输出指定的航线信息
{
printf("该航线的全部信息为:
\n");
printf("======================================================\n");
printf("航班号\t\t%s\n",L.elem[i].air_number);
printf("起飞时间\t%s\n",L.elem[i].leave_time);
printf("降落时间\t%s\n",L.elem[i].arrive_time);
printf("终点站\t\t%s\n",L.elem[i].name);
printf("票价\t\t%d\n",L.elem[i].money);
printf("载客量\t\t%d\n",L.elem[i].hold_number);
printf("余票量\t\t%d\n",L.elem[i].rest_number);
printf("==============================================================\n");
}
voiddisplay(person&P,inti)//输出指定的客户信息
{
printf("该客户的全部信息为:
\n");
printf("========================================================\n");
printf("姓名%s\n",P.elem[i].person_name);
printf("证件号%s\n",P.elem[i].ID);
printf("订票数量%d\n",P.elem[i].ticket_number);
printf("航班号%s\n",P.elem[i].air_number);
printf("起飞时间%s\n",P.elem[i].leave_time);
printf("降落时间%s\n",P.elem[i].arrive_time);
printf("终点站%s\n",P.elem[i].name);
printf("票价%d\n",P.elem[i].money);
printf("=====================================================\n");
}
intsearch_name(airline&L)//以终点站名查询航线信息
{
inti=0;
charr,name[20];
if(L.length==0)
{
printf("由于该系统还未建立航线信息库,请先输入航线信息!
\n");
luru(L);
}
printf("\n\n请输入需要查询的终点站名:
");
scanf("%s",&name);
while(i{
if(!
strcmp(name,L.elem[i].name))
{
printf("该航线已找到,是否输出该航线的全部信息?
(Y/N)\n");
scanf("%s",&r);
if(r=='Y'||r=='y')
{
shuchu(L,i);
break;
}
elsebreak;
}
i++;
}
if(i==L.length)
printf("\n对不起,该航线未找到!
\n\n");
returni;
}
intsearch_number(airline&L)//以航班号查询航班信息
{
charnumber[20],r;
inti=0;
if(L.length==0)
{
printf("由于该系统还未建立航线信息库,请先输入航线信息!
\n");
luru(L);
}
printf("\n\n请输入需要查询的航班号:
");
scanf("%s",&number);
while(i{
if(!
strcmp(number,L.elem[i].air_number))
{
printf("该航线已找到,是否输出该航线的全部信息?
(Y/N)\n");
scanf("%s",&r);
if(r=='Y'||r=='y')
{
shuchu(L,i);
break;
}
elsebreak;
}
i++;
}
if(i==L.length)
printf("\n对不起,该航线未找到!
\n\n");
returni;
}
voidsearch(airline&L)
{
inti=2;
while(i-1)
{
printf("**************************************************************");
printf("\n1返回主菜单\n2以终点站名查询航班信息\n3以航班号查询航班信息\n");
printf("****************************************************************");
printf("\n请选择功能:
\n");
scanf("%d",&i);
switch(i)
{
case1:
break;
case2:
search_name(L);break;
case3:
search_number(L);break;
}
}
}
voidcorrect_air_number(airline&L,inti)//修改某航班的航班号
{
intb=2;
charnumber[20];
printf("\n请输入正确的航班号:
\n");
scanf("%s",&number);
strcpy(L.elem[i].air_number,number);
printf("\n修改成功!
\n");
while(b-1)
{
printf("======================================================\n");
printf("\n1继续修改该航线其他信息\n2浏览该航线的信息\n");
printf("=======================================================\n");
printf("请选择功能:
");
scanf("%d",&b);
switch(b)
{
case1:
break;
case2:
shuchu(L,i);break;
}
}
}
voidcorrect_leave_time(airline&L,inti)//修改某航班的起飞时间
{
intb=2;
chartime[20];
printf("\n请输入正确的起飞时间:
\n");
scanf("%s",&time);
strcpy(L.elem[i].leave_time,time);
printf("\n修改成功!
\n");
while(b-1)
{
printf("===================================================\n");
printf("\n1继续修改该航线其他信息\n2浏览该航线的信息\n");
printf("=======================================================\n");
printf("请选择功能:
");
scanf("%d",&b);
switch(b)
{
case1:
break;
case2:
shuchu(L,i);break;
}
}
}
voidcorrect_arrive_time(airline&L,inti)//修改某航班的降落时间
{
intb=2;
chartime[20];
printf("\n请输入正确的降落时间:
\n");
scanf("%s",&time);
strcpy(L.elem[i].arrive_time,time);
printf("\n修改成功!
\n");
while(b-1)
{
printf("======================================================\n");
printf("\n1继续修改该航线其他信息\n2浏览该航线的信息\n");
printf("=====================================================\n");
printf("请选择功能:
");
scanf("%d",&b);
switch(b)
{
case1:
break;
case2:
shuchu(L,i);break;
}
}
}
voidcorrect_name(airline&L,inti)//修改某航班的终点站
{
intb=2;
charname[20];
printf("\n请输入正确的终点站名:
\n");
scanf("%s",&name);
strcpy(L.elem[i].name,name);
printf("\n修改成功!
\n");
while(b-1)
{
printf("=======================================================\n");
printf("\n1继续修改该航线其他信息\n2浏览该航线的信息\n");
printf("=======================================================\n");
printf("请选择功能:
");
scanf("%d",&b);
switch(b)
{
case1:
break;
case2:
shuchu(L,i);break;
}
}
}
voidcorrect_money(airline&L,inti)//修改某航班的票价
{
intb=2;
intmoney;
printf("\n请输入正确票价:
\n");
scanf("%d",&money);
L.elem[i].money=money;
printf("\n修改成功!
\n");
while(b-1)
{
printf("=====================================================\n");
printf("\n1继续修改该航线其他信息\n2浏览该航线的信息\n");
printf("======================================================\n");
printf("请选择功能:
");
scanf("%d",&b);
switch(b)
{
case1:
break;
case2:
shuchu(L,i);break;
}
}
}
voidcorrect_hold_number(airline&L,inti)//修改某航班的载客量
{
intb=2;
intnumber;
printf("\n请输入正确的载客量:
\n");
scanf("%d",&number);
L.elem[i].hold_number=number;
printf("\n修改成功!
\n");
while(b-1)
{
printf("=====================================================\n");
printf("\n1继续修改该航线其他信息\n2浏览该航线的信息\n");
printf("======================================================\n");
printf("请选择功能:
");
scanf("%d",&b);
switch(b)
{
case1:
break;
case2:
shuchu(L,i);break;
}
}
}
voidcorrect_zi(airline&L,inti)
{
inta=2;
printf("请选择该航线需要修改的信息:
\n");
while(a-1)
{
printf("###############################################################");
printf("\n1返回主菜单\n2航班号\n3起飞时间\n4降落时间\n5终点站\n6票价\n7载客量\n");
printf("#############################################################");
printf("\n请选择功能:
\n");
scanf("%d",&a);
switch(a)
{
case1:
break;
case2:
correct_air_number(L,i);break;
case3:
correct_leave_time(L,i);break;
case4:
correct_arrive_time(L,i);break;
case5:
correct_name(L,i);break;
case6:
correct_money(L,i);break;
case7:
correct_hold_number(L,i);break;
}
}
}
voidcorrect(airline&L)//修改航班信息
{
inti=2;
printf("\n\n请先查询需要修改的航班信息!
\n");
while(i-1)
{
printf("*************************