正文格式.docx
- 文档编号:27050422
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:35
- 大小:263.93KB
正文格式.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={
基本操作:
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("*************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 正文 格式