机票票务管理程序的设计与实现.docx

上传人:b****5 文档编号:8205404 上传时间:2023-01-29 格式:DOCX 页数:26 大小:497.97KB
下载 相关 举报
机票票务管理程序的设计与实现.docx_第1页
第1页 / 共26页
机票票务管理程序的设计与实现.docx_第2页
第2页 / 共26页
机票票务管理程序的设计与实现.docx_第3页
第3页 / 共26页
机票票务管理程序的设计与实现.docx_第4页
第4页 / 共26页
机票票务管理程序的设计与实现.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

机票票务管理程序的设计与实现.docx

《机票票务管理程序的设计与实现.docx》由会员分享,可在线阅读,更多相关《机票票务管理程序的设计与实现.docx(26页珍藏版)》请在冰豆网上搜索。

机票票务管理程序的设计与实现.docx

机票票务管理程序的设计与实现

机票票务管理程序的设计与实现

1绪论

1.1选题目的和意义

随着社会发展的不断进步,民航事业的壮大,人们消费水平的提高,乘坐民航的消费者也越来越多,旅游也逐渐成为普通老百姓的生活组成部分,飞机票预订查询系统在各机票预定网点中的作用也越显重要。

目前,我国一些旅行社和酒店的机票预定还停留在人工处理阶段,这已经严重制约了工作效率,在计算机技术高速发展的今天,有必要引入高效的计算机系统,来协助处理机票预订工作。

因此,开发机票票务管理系统势在必行。

1.2系统模拟与简化

为了易于实现但不失仿真性,对问题做如下简化:

1.在初始机票的所有城市共有:

武汉、北京、西安、广州、青岛、济南六个城市。

因此所有的机票组合共有30种。

2.机票只有单程票,不考虑联程票和往返票。

3.假设航班无限,即不存在票售完的情况。

票的数量不作限制。

4.订票能订未来任意时间的票。

不对时间进行检查。

1.3可行性分析

1.3.1前提要求

安全与保密要求:

管理员享有对机票信息库和定票信息库的管理与修改,旅客只享有对订票信息库的部分修改(订票与退票)以及机票信息库的查询。

1.3.2目标

系统实现后,大大提高机票预定服务效率。

降低售票服务中的错误发生率,减少信息交流的烦琐过程及其带来的开销。

1.4系统的主要功能:

(1)票务管理人员对机票基本信息进行输入,删除,修改和查询

(2)旅客对票务信息进行查询

(3)订票处理,输入机票和旅客的信息

(4)退票处理

2需求分析

2.1性能需求

为了保证系统能够长期、安全、稳定、可靠、高效的运行,机票预定系统应该满足以下的性能需求:

2.1.1系统处理的准确性

系统处理的准确性是系统的基本性能。

由于机票预订系统的查询功能对于整个系统的功能和性能完成举足轻重。

作为系统的很多数据来源,在系统开发过程中,必须采用一定的方法保证系统的准确性。

2.1.2系统的开放性和系统的可扩充性

机票预订系统在开发过程中,应该充分考虑以后的可扩充性。

用户查询的需求也会不断的更新和完善。

所有这些,都要求系统提供足够的手段进行功能的调整和扩充。

而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。

2.1.3系统的易用性

机票预订系统是直接面对使用人员的,而使用人员往往对计算机并不是非常熟悉。

这就要求系统能够提供良好的用户接口,易用的人机交互界面。

要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的帮助,缩短用户对系统熟悉的过程。

2.2数据需求

2.2.1数据录入处理的准确性与及时性

数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。

数据的输入来源是手工输入。

手工输入要通过系统界面上的安排系统具有容错性。

2.2.2数据的一致性与完整性

由于系统的数据是共享的,机票是共享数据,所以如何保证这些数据的一致性,是系统必须解决的问题。

因此必须在数据录入处控制数据的去向,并且要求对数据完整性进行严格的约束。

2.2.3数据的共享与独立性

整个机票预定系统的数据是共享的。

然而,从系统开发的角度上看,共享会给设计和调试带来困难。

因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。

这样,也能提供系统的强壮性。

2.3数据字典

3系统总体设计

3.1数据结构设计

对旅客个人信息的数据结构设计

姓名

身份证号

对机票原始信息的数据结构设计

出发城市

目的城市

航班号

所属航空公司

票价

对已订出机票的数据结构设计

游客信息

出发城市

目的城市

航班号

时间日期

所属航空公司

票价

姓名

身份证号

 

3.2物理结构设计

3.2.1旅客信息

3.2.2原始机票信息

3.2.3已订出机票信息

 

3.2.4两个链表的定义

typedefstruct_tagNode1//定义一个链表,用来存储所有的票务信息,以便来实现管理员删除增加等功能

{

struct_tagNode1*Next;

TInfoAllTicketsInfo;

}AllTickets;

typedefAllTickets*PtrAllTickets;

typedefstruct_tagNode2//定义一个链表,用来存储已订出的票

{

struct_tagNode2*Next;

BookedTInfoBookedTicketInfo;

}BookedTickets;

typedefBookedTickets*PBookedTickets;

3.3主要函数功能设计

3.3.1数据初始化函数

从文件TicketInfo.txt中将所有原始机票的信息读取到一个链表中

PtrAllTicketsInitial()//将所有的票务信息读取到内存中

{

FILE*fp;//从文件中读取机票的信息

charch;

PtrAllTicketsphead,p1,p2,p;

phead=(PtrAllTickets)malloc(sizeof(AllTickets));

p1=phead;

if((fp=fopen("d:

\\TicketInfo.txt","rt"))==NULL)

{

printf("Erroropenfile!

\nPressanykeytoexit!

\n");

getch();

exit

(1);

}

else

{

ch='a';

while(ch!

=EOF)

{

fscanf(fp,"%s%s%s%s%s",p1->AllTicketsInfo.TDepartCity,p1->AllTicketsInfo.TArriveCity,p1->AllTicketsInfo.TFlightNo,p1->AllTicketsInfo.TCompany,p1->AllTicketsInfo.TPrice);

p2=(PtrAllTickets)malloc(sizeof(AllTickets));

p1->Next=p2;

p2->Next=NULL;

p1=p2;

ch=fgetc(fp);

}

}

fclose(fp);

returnphead;

exit(0);

}

3.3.2订票功能的实现

voidGuestBookTickets()//Guest预定机票

{

FILE*fp;

charch;

inttmp_n;

intflag_state=0;

PBookedTicketspb1;

PtrAllTicketsp=phead;

pb1=(PBookedTickets)malloc(sizeof(BookedTickets));

pb1->Next=NULL;

printf("\t\t\t\t欢迎使用订票系统!

\n\n\n");

printf("请输入出发城市:

");//选择出发城市!

scanf("%s",pb1->BookedTicketInfo.TDepartCity);

printf("请输入飞往城市:

");

scanf("%s",pb1->BookedTicketInfo.TArriveCity);

while(p!

=NULL)//航班号,飞行公司,价格等均确定。

{

if(strcmp(p->AllTicketsInfo.TDepartCity,pb1->BookedTicketInfo.TDepartCity)==0&&strcmp(p->AllTicketsInfo.TArriveCity,pb1->BookedTicketInfo.TArriveCity)==0)

{

strcpy(pb1->BookedTicketInfo.TPrice,p->AllTicketsInfo.TPrice);

strcpy(pb1->BookedTicketInfo.TFlightNo,p->AllTicketsInfo.TFlightNo);

strcpy(pb1->BookedTicketInfo.TCompany,p->AllTicketsInfo.TCompany);

flag_state=1;

}

p=p->Next;

}

if(flag_state)

{

printf("请输入要预定的票的日期:

(格式为xxxxxxxx,如20080808)\n");//输入飞行日期

scanf("%s",pb1->BookedTicketInfo.TDate);

printf("请输入您的姓名:

\n");//输入姓名

scanf("%s",pb1->BookedTicketInfo.PassengerInfo.PName);

printf("请输入您的身份证号码:

\n");//输入游客身份证号

scanf("%s",pb1->BookedTicketInfo.PassengerInfo.PID);

//游客订票信息确认

printf("预定成功!

以下是您的订票信息确认单:

\n\n");

printf("\t\t\t姓名:

%s\n",pb1->BookedTicketInfo.PassengerInfo.PName);

printf("\t\t\t身份证号码:

%s\n",pb1->BookedTicketInfo.PassengerInfo.PID);

printf("\t\t\t出发城市:

%s\n",pb1->BookedTicketInfo.TDepartCity);

printf("\t\t\t飞往城市:

%s\n",pb1->BookedTicketInfo.TArriveCity);

printf("\t\t\t航班号:

%s\n",pb1->BookedTicketInfo.TFlightNo);

printf("\t\t\t所属航空公司:

%s\n",pb1->BookedTicketInfo.TCompany);

printf("\t\t\t日期:

%s\n",pb1->BookedTicketInfo.TDate);

printf("\t\t\t价格:

%s\n",pb1->BookedTicketInfo.TPrice);

//将订票的信息存到一个文件中//

if((fp=fopen("d:

\\BookedTicketsInfo.txt","rt"))==NULL)//若文件不存在,则新建,若存在,则采用追加模式写入

{

if((fp=fopen("d:

\\BookedTicketsInfo.txt","wt"))==NULL)

{

printf("文件创立失败!

\n无法写入数据!

");

}

else

{

fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",pb1->BookedTicketInfo.PassengerInfo.PName,pb1->BookedTicketInfo.PassengerInfo.PID,pb1->BookedTicketInfo.TDepartCity,pb1->BookedTicketInfo.TArriveCity,pb1->BookedTicketInfo.TFlightNo,pb1->BookedTicketInfo.TDate,pb1->BookedTicketInfo.TCompany,pb1->BookedTicketInfo.TPrice);

}

}

else

{

fp=fopen("d:

\\BookedTicketsInfo.txt","at");

fprintf(fp,"%s%s%s%s%s%s%s\t%s\n",pb1->BookedTicketInfo.PassengerInfo.PName,pb1->BookedTicketInfo.PassengerInfo.PID,pb1->BookedTicketInfo.TDepartCity,pb1->BookedTicketInfo.TArriveCity,pb1->BookedTicketInfo.TFlightNo,pb1->BookedTicketInfo.TDate,pb1->BookedTicketInfo.TCompany,pb1->BookedTicketInfo.TPrice);

}

fclose(fp);

}

else

{

printf("城市输入有误!

\n订票失败!

\n");

}

}

3.3.3退票功能的实现

voidGuestReturnTickets()//退票注意几种特殊情况的处理1,删除的为第一张票

{

intflag_state=0;

charPName[15];

charPID[20];

charTFlightNo[10];

charTDate[10];//时间格式为:

xxxxxxxx如200080808

FILE*fp;//从文件中读取机票的信息

charch;

PBookedTicketshead,p1,p2,p,p_front,ptrtmp;//先将所有的订票的信息存取到内存中

head=(PBookedTickets)malloc(sizeof(BookedTickets));

p1=head;

p_front=head;

p=head;

if((fp=fopen("d:

\\BookedTicketsInfo.txt","rt"))==NULL)

{

printf("没有找到订票数据!

\n");

getch();

exit

(1);

}

else

{

ch='a';

while(ch!

=EOF)

{

fscanf(fp,"%s%s%s%s%s%s%s%s",p1->BookedTicketInfo.PassengerInfo.PName,p1->BookedTicketInfo.PassengerInfo.PID,p1->BookedTicketInfo.TDepartCity,p1->BookedTicketInfo.TArriveCity,p1->BookedTicketInfo.TFlightNo,p1->BookedTicketInfo.TDate,p1->BookedTicketInfo.TCompany,p1->BookedTicketInfo.TPrice);

p2=(PBookedTickets)malloc(sizeof(BookedTickets));

p1->Next=p2;

p2->Next=NULL;

p1=p2;

ch=fgetc(fp);

}

}

fclose(fp);//输入票务有关信息

printf("请按下列提示输入票务信息:

\n");

printf("\t\t\t请输入票的航班号:

\n");scanf("%s",TFlightNo);

printf("\t\t\t姓名:

\n");scanf("%s",PName);

printf("\t\t\t身份证号:

\n");scanf("%s",PID);

while(p!

=NULL)//查找符合条件的票

{

if(strcmp(p->BookedTicketInfo.PassengerInfo.PName,PName)==0&&strcmp(p->BookedTicketInfo.TFlightNo,TFlightNo)==0&&strcmp(p->BookedTicketInfo.PassengerInfo.PID,PID)==0)

{

ptrtmp=p_front;

flag_state=1;

}

p_front=p;

p=p->Next;

}

if(flag_state)

{

if(ptrtmp==head)head=head->Next;

elseptrtmp->Next=ptrtmp->Next->Next;

p1=head;

if((fp=fopen("d:

\\BookedTicketsInfo.txt","wt"))==NULL)

{

printf("Erroropenfile!

\nPressanykeytoexit!

\n");

getch();

exit

(1);

}

else

{

while(p1!

=NULL)

{

fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p1->BookedTicketInfo.PassengerInfo.PName,p1->BookedTicketInfo.PassengerInfo.PID,p1->BookedTicketInfo.TDepartCity,p1->BookedTicketInfo.TArriveCity,p1->BookedTicketInfo.TFlightNo,p1->BookedTicketInfo.TDate,p1->BookedTicketInfo.TCompany,p1->BookedTicketInfo.TPrice);

p1=p1->Next;

}

}

fclose(fp);

exit(0);

}

elseprintf("退票失败!

\n");

exit

(1);

}

3.3.4按航班号查询功能的实现

PtrAllTicketsGuestAdminSearchTicketsFlightNo()

{

intflag_state=0;

PtrAllTicketsp=phead,ptrtmp,p_front;

charTFlightNo[10];

printf("请输入航班号:

");

scanf("%s",TFlightNo);

while(p!

=NULL)//航班号,飞行公司,价格等均确定。

{

if(strcmp(p->AllTicketsInfo.TFlightNo,TFlightNo)==0)

{

printf("您查询的机票详细信息如下:

\n");

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

printf("\t\t\t出发城市:

%s\n",p->AllTicketsInfo.TDepartCity);

printf("\t\t\t飞往城市:

%s\n",p->AllTicketsInfo.TArriveCity);

printf("\t\t\t航班号:

%s\n",p->AllTicketsInfo.TFlightNo);

printf("\t\t\t所属航空公司:

%s\n",p->AllTicketsInfo.TCompany);

printf("\t\t\t价格:

%s\n",p->AllTicketsInfo.TPrice);

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

flag_state=1;

ptrtmp=p_front;

}

p_front=p;

p=p->Next;

}

if(!

flag_state)

{

printf("航班号输入有误!

没有查询到航班号为%s的票务信息!

\n",TFlightNo);

}

returnptrtmp;

}

3.3.5按地点查询功能的实现

PtrAllTicketsGuestAdminSearchTicketsPlace()//注意删除头结点的特殊性

{

intflag_state=0;

PtrAllTicketsp=phead,ptrtmp,p_front=phead;

charTDepartCity[10];

charTArriveCity[10];

printf("请输入出发城市:

");scanf("%s",TDepartCity);

printf("请输入飞往城市:

");scanf("%s",TArriveCity);

while(p!

=NULL)

{

if(strcmp(p->AllTicketsInfo.TDepartCity,TDepartCity)==0&&strcmp(p->AllTicketsInfo.TArriveCity,TArriveCity)==0)

{

printf("您查询的机票详细信息如下:

\n");

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

printf("\t\t\t出发城市:

%s\n",p->AllTicketsInfo.TDepartCity);

printf("\t\t\t飞往城市:

%s\n",p->AllTicketsInfo.TArriveCity);

printf("\t\t\t航班号:

%s\n",p->AllTicketsInfo.TFlightNo);

printf("\t\t\t所属航空公司:

%s\n",p->AllTicketsInfo.TCompany);

printf("\t\t\t价格:

%s\n",p->AllTicketsInfo.TPrice);

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

flag_state=1;

ptrtmp=p_front;

}

p_front=p;

p=p->Next;

}

if(!

flag_state)

{

printf("城市输入有误!

没有查询到出发城市为%s,目的城市为%s的票务信息!

\n",TDepartCity,TArriveCity);

}

returnptrtmp;

}

3.3.6管理员对票务信息进行删除的函数

voidAdminDeleteTInfo()//Admin删除票务信息,注意删除头结点的特殊性

{

PtrAllTicketsp,ptrtmp=phead;

FILE*fp;//将修改后的机票信息存储

inttmp_n;

charjudege;//确认是否删除,值为y或n

system("cls");

printf("请先选择要删除的票\n");

printf("\t\t\t\t请选择查询方式\n");

printf("\t\t\t\t1.按地点查找\n");

printf("\t\t\t\t2.按航班号查找\n");

printf("\t\t\t\t0.退出\n");

printf("\t\t\t\t按数字0-2选择:

");

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1