航空售票系统c语言学位论文.docx

上传人:b****5 文档编号:4101919 上传时间:2022-11-27 格式:DOCX 页数:37 大小:126.63KB
下载 相关 举报
航空售票系统c语言学位论文.docx_第1页
第1页 / 共37页
航空售票系统c语言学位论文.docx_第2页
第2页 / 共37页
航空售票系统c语言学位论文.docx_第3页
第3页 / 共37页
航空售票系统c语言学位论文.docx_第4页
第4页 / 共37页
航空售票系统c语言学位论文.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

航空售票系统c语言学位论文.docx

《航空售票系统c语言学位论文.docx》由会员分享,可在线阅读,更多相关《航空售票系统c语言学位论文.docx(37页珍藏版)》请在冰豆网上搜索。

航空售票系统c语言学位论文.docx

航空售票系统c语言学位论文

提供全套毕业设计,欢迎咨询

《C语言程序设计》

 

-----航空售票系统

目录

第1章功能需求描述2

1.1需求分析2

1.2功能列表与说明3

1.3操作界面及操作说明4

第2章设计描述7

2.1任务分解说明7

2.2数据结构设计说明7

2.3函数接口即函数调用关系9

第3章算法描述10

3.2按航班号查询函数11

3.3按飞机号查询函数12

3.4按飞行日期查询函数13

3.5按航班终点查询函数14

3.7显示航班客户信息函数17

3.8管理员操作函数19

3.9订票系统函数20

3.10排队订票系统函数22

3.11退票系统函数23

3.12航班查询函数25

第4章开发过程描述27

4.1源代码27

4.2编译过程错误分析41

4.3调试错误分析42

4.4运行结果及说明42

第5章设计心得体会46

第1章功能需求描述

1.1需求分析

随着科技的发展和人们生活水平的日益提高,人们在不断追求更加快捷的交通方式以满足人们快节奏的生活方式,航空系统在交通系统中已扮演着一个越来越重要的角色。

然而,交通的快捷离不开信息的快捷。

随着计算机的发展和普及,人们的生活方式发生了巨大的改变,计算机在代替和延伸脑力劳动方面发挥着越来越重要的作用。

在交通系统中,有大量的数据需要被处理,而这些工作有人来完成几乎是不可能的,而交给计算机处理,就可以很好地满足我们的需求。

航空售票管理系统可以根据乘客和管理人员的要求,进行方便快速的查询、购票、退票和管理等工作。

 

1.2功能列表与说明

**********************欢迎进入航空售票系统**********************

显示所有航线==>1

查询航线信息==>2

订票业务==>3

退票业务==>4

管理系统==>5

退出系统==>0

****************************************************************

清除屏幕信息==>9

请按上面指引操作:

 

 

 

系统共设有5个功能并以菜单方式工作,上图为功能列表图。

功能分别包括以下5个方面:

(1)每条航线所涉及的信息有:

终点站名、航班号、飞机号、飞行日期(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);

(2)查询航线:

根据旅客提出的终点站名输出下列信息:

航班号、飞机号、星期几飞行、最近一天航班的日期和余票额;

(3)订票业务:

根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户班里订票手续,输出作为好;若已满或者余票少于订票额,则需要重新询问客户要求。

若需要,可等级排队侯补;

(4)退票业务:

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

(5)管理员系统:

通过密码认证后可查看所有航班的订票情况,可根据需要增加新的航线。

1.3操作界面及操作说明

(1)显示所有航线

终点站航班号飞机号飞行日期余票量

北京00125869341120

上海00226821542120

广州00345589343120

天津00436678944120

 

系统面向用户显示所有航线信息,为用户提供各个航班的信息,供用户参考。

(2)查询航线信息

请输入查询航班的方式:

航班号--->1

终点站--->2

飞行日期->3

 

用户根据需要可选择三种查询方式,输入“1”,按航班号查询,系统提示输入要查询的航班号;输入“2”,按终点站查询,系统提示输入要查询的终点站名;输入“3”,按飞行日期查询,系统提示输入要查询的飞行日期。

(3)订票业务

请输入查询航班的方式:

航班号--->1

终点站--->2

飞行日期->3

3

请输入飞行日期1

终点站航班号飞机号飞行日期余票量

北京00125869341120

请输入订票数量:

请输入舱位等级(1/2/3):

请输入您的名字:

订票成功,座位号为1—1

 

用户根据所查询的信息,选择相应的航班,系统提示输入订票数量,舱位等级以及用户姓名,最后系统自动提示“订票成功”。

 

(4)退票业务

请输入航班号:

请输入您的名字:

退票信息:

姓名/终点站/票数

确认要退票?

()

(1)

否(0)

1

退票成功

 

用户在退票时,按系统提示输入航班号,用户姓名,系统则会自动显示出用户要退的票的信息,然后选择是否退票,选择“1”退票,选择“2”不退票。

(5)管理员操作界面

请输入管理员密码:

(houkaiyang)

请选择操作

查询航班订票情况

(1)

增加新航班

(2)

1

请输入新航班号:

 

管理员在进入内部管理界面时,根据提示输入密码,进入之后,选择“1”,查询航班订票情况,选择“2”,增加新航班。

第2章设计描述

2.1任务分解说明

(1)分析系统中链表的设计,用来记录航班信息。

(2)根据问题描述,设计链表;

(3)完成系统中各个信息的定义;

(4)完成系统的应用模块;

(5)功能调试;

(6)完成系统设计报告。

2.2数据结构设计说明

航空售票系统

 

退出系统

退票业务

查询航线信息

显示所有航线

管理系统

订票业务

 

本系统中“航线”只用一条单链表记录,故采用全局变量,减少参数的传递。

(1)、定义“航线”类型

ADTLairline{

数据对象:

D={ai|ai∈航线链表集,i=1,2,3……,n,n>=0}

数据关系:

R1={|ai-1,ai∈D,i=1,2,3……,n}

基本操作:

Lairlinesearch_line()//按航班号查找航班

Lairlinesearch_plant()//按飞机号查找航班

Lairlinesearch_day()//按飞行日期查找航班

Lairlinesearch_addr()//按航班终点查找航班voidguide()//主菜单界面

voidinsert_line()//插入新航班

voidprint_customer(airline*p)//显示航班客户信息

voidadmin()//进入管理员操作系统

voidbook()//订票系统

voidwaited(airline*p)//排队订票系统

voidrefund()//退票系统

voidsearch()//航班查询系统

voidInitLine()//初始化航线信息

voidprintline()//显示所有航班信息

}ADTLairline

(2)、主程序

voidmain()

{

初始化;

do{

接受命令;

处理命令(调用相应函数);

}while(“命令”!

=“退出”);

}

(3)、调用关系

函数模块

主程序模块

2.3函数接口即函数调用关系

main()

guide()

 

admin()

refund()

book()

search()

printline()

waited(p))

search_line()

search_addr()

search_day()

search_plant()

printcustomer()p)

printcustomer(p)

第3章算法描述

3.1主函数

主程序流程图,如图3—1

开始

flag=1

主菜单界面

初始化航线

gatchar

7

flag=0

6

清除屏幕

4

退票业务

5

管理界面

3

订票业务

2

查询航线

1

显示航线

flag

结束

图3—1

3.2按航班号查询函数

按航班号查询函数流程图,如图3—2

开始

chara[5]

airline*p

P=L—>next

输入航班号a

p

!

strcmp(a,p—>line_num

p=p—>next

结束

图3—2

3.3按飞机号查询函数

按飞机号查询函数流程图,如图3—3

开始

chara[8]

airline*p

P=L—>next

输入飞机号a

p

!

strcmp(a,p—>plant_num)

p=p—>next

结束

图3—3

3.4按飞行日期查询函数

按飞行日期查询函数流程图,如图3—4

开始

inta

airline*p

P=L—>next

输入飞行日期a

p

a=p—>day

p=p—>next

结束

图3—4

3.5按航班终点查询函数

按航班终点查询函数流程图,如图3—5

开始

chara[20]

airline*p

P=L—>next

输入航班终点a

p

!

strcmp(a,p—>end_addr)

p=p—>next

结束

图3—53.6插入新航班函数流程图

插入新航班函数流程图,如图3—6

开始

airline*p,*q

flag=1

flag

q=(Lairline)malloc(sizeof(airline)))

输入航班号

p=L

p—>next

strcmp(p—>next—>line_num,

q—>line_num)>=0

p=p—>next

P—>next&&strcmp(p—>next—>line_num,q—>line_num)=0

输入飞行日期,飞机号,

终点站

航班已存在,请重新输入

结束

图3—6

3.7显示航班客户信息函数

显示航班客户信息函数流程图,如图3—7

开始

customer*c

p—>book

c=p—>booked

输入已订票客户信息

c

输入c—>num,c—>name

c=c—>next

输出“暂时没有客户订票”

p—>wait

c=p—>wait

输出排队订票客户信息

c

输出c—>num,c—>name

输出“暂时没有客户订票”

c=c—>next

结束

图3—7

 

3.8管理员操作函数

管理员操作函数流程图,如图3—8

开始

inti,flag,tag

chara[20],airline*p

输入管理员密码

i=0

i<3

!

strcmp(a,”houkaiyang”)

密码错误

i++

i=3

tag=1

tag

返回主界面

选择进行的操作

结束

图3—8

3.9订票系统函数

订票系统函数流程图,如图3—9

开始

airline*p

customer*cst,*c

输入查询航班方式

p

输出航班信息

cst=(customer*)malloc(sizeof(customer)))

输入订票数量,舱位等级,名字

cst—>num<=p—>left

cst—>next=p—>booked

p—>booked=cst

p—>left=p—>left—cst—>num

订票成功,座位号为:

余票不足

没有该航班

结束

图3—9

3.10排队订票系统函数

排队订票函数流程图,如图3—10

开始

intflag

customer*q,*q0,*h

airline*p

 

!

p—>wait

 

p—>left>0&&q—>next

q—>next—>numleft

您正在排队订票,现在有票,是否订

flag

q0=q—>next,q—>next=q—>next—>next

q0—>next=p—>booked,p—>booked=q0

p—>left=p—>left—q0—>num

 

订票成功

q=q—>next

p—>wait=h—>next

结束

图3—10

3.11退票系统函数

退票系统函数流程图,如图3—11

开始

intflag,chara[20]

airline*p

customer*c,*c1

 

p=search_line()

c=p—>booked

 

!

p

没有该航班

输入您的姓名

!

p—>booked—>name

没有找到您的信息

假假

输出退票信息

flag

!

strcmp(a,c—>next—name)

p—>booked=p—>booked—>next

p—>left=p—>left+c—>num

free(c)

真真

!

c—>next

对不起,没有找到您的信息

退票成功

返回主界面

结束

图3—11

3.12航班查询函数

航班查询函数流程图,如图3—12

开始

inti,flag=0

airline*p

输入查询航班方式

!

flag

i

2

p=search_plant()

flag=1

其他

操作错误,重新输入

4

p=search_addr()

flag=1

3

p=search_day()

flag=1

1

p=search_line()

flag=1

 

p

没有该航班

输出航班信息

结束

图3—12

第4章开发过程描述

4.1源代码

#include

#include

#include

#include

#definePRprintf

#defineSCscanf

typedefstructcustomer{//客户信息

charname[20];//客户姓名

intnum;//订票量

intlevel;//舱位等级

customer*next;

}customer,*Lcustomer;

typedefstructairline{//航线信息

charend_addr[20];//航线终点

charline_num[5];//航班号

charplant_num[8];//飞机号

intday;//飞行日期

inttotal;//定员

intleft;//剩余票数

customer*booked;//已定客户信息

customer*wait;//排队等候订票信息

airline*next;

}airline,*Lairline;

airline*L;//将航班信息定义为全局变量,减少参数传递

Lairlinesearch_line()//按航班号查找航班

{

chara[5];

airline*p;

p=L->next;

PR("请输入航班号");

SC("%s",a);

for(;p;p=p->next)

if(!

strcmp(a,p->line_num))break;

returnp;

}

Lairlinesearch_plant()//按飞机号查找航班

{

chara[8];

airline*p;

p=L->next;

PR("请输入飞机号");

SC("%s",a);

for(;p;p=p->next)

if(!

strcmp(a,p->plant_num))break;

returnp;

}

Lairlinesearch_day()//按飞行日期查找航班

{

inta;

airline*p;

p=L->next;

PR("请输入飞行日期");

SC("%d",&a);

for(;p;p=p->next)

if(a==p->day)break;

returnp;

}

Lairlinesearch_addr()//按航班终点查找航班

{

chara[20];

airline*p;

p=L->next;

PR("请输入航班终点");

SC("%s",a);

for(;p;p=p->next)

if(!

strcmp(a,p->end_addr))break;

returnp;

}

voidguide()//主菜单界面

{

PR("**********************欢迎进入航空售票系统**********************\n");

PR("\t\t显示所有航线==>1\n");

PR("\t\t查询航线信息==>2\n");

PR("\t\t订票业务==>3\n");

PR("\t\t退票业务==>4\n");

PR("\t\t管理系统==>5\n");

PR("\t\t退出系统==>0\n");

PR("**************************************************************\n");

PR("\t\t清除屏幕信息==>9\n\n");

PR("请按上面指引操作:

\t");

}

voidinsert_line()//插入新航班

{

airline*p,*q;

intflag=1;

for(;flag;)

{

q=(Lairline)malloc(sizeof(airline));

PR("请输入航班号:

");

SC("%s",q->line_num);

for(p=L;p->next;p=p->next)

if(strcmp(p->next->line_num,q->line_num)>=0)

break;

if(p->next&&strcmp(p->next->line_num,q->line_num)==0)

{

PR("航班已存在,请重新输入\n");

continue;

}

PR("请输入飞行日期:

");

SC("%d",&q->day);

PR("请输入飞机号:

");

SC("%s",q->plant_num);

PR("请输入终点站:

");

SC("%s",q->end_addr);

q->total=120;

q->left=120;

q->booked=NULL;

q->wait=NULL;

q->next=p->next;

p->next=q;

PR("增加航班成功,是否继续增加\n继续

(1)\n返回(0)");

SC("%d",&flag);

}

}

voidprint_customer(airline*p)//显示航班客户信息

{

customer*c;

if(p->booked)

{

c=p->booked;

PR("已定票客户信息\n票数\t/\t客户姓名\n");

for(;c;c=c->next)

PR("%5d\t/\t%s\n",c->num,c->name);

PR("\n\n");

}

else

PR("暂时没有客户订票\n\n");

if(p->wait)

{

c=p->wait;

PR("排队订票客户信息\n票数\t/\t客户姓名\n");

for(;c;c=c->next)

PR("%5d\t/\t%s\n",c->num,c->name);

PR("\n\n");

}

else

PR("暂时没有客户排队订票\n\n");

}

voidadmin()//进入管理员操作系统

{

inti,flag,tag;

chara[20];

airline*p;

PR("请输入管理员密码:

(houkaiyang)");

for(i=0;i<3;i++)

{

SC("%s",a);

if(strcmp(a,"houkaiyang"))

{

PR("\t\t======密码错误======\n\n");

i++;

}

elsebreak;

}

if(i==3)

{guide();return;}

for(tag=1;tag;)

{

PR("请选择操作\n查询航班订票情况

(1)\n增加新航班

(2)\n");

SC("%d",&flag);

if(flag==1)

{

p=search_line();

if(p)

print_customer(p);

else

PR("没有找到该航班\n");

}

elseif(flag==2)

insert_line();

else

PR("操作错误,请按提示操作\n");

PR("请选择操作\n继续

(1)\n退回主菜单(0)\n");

SC("%d",&tag);

}

guide();

}

voidbook()//订票系统

{

inti;

intflag=0;

airline*p;

customer*cst,*c;

PR("请输入查询航班的方式:

\n");

PR("航班号--->1\n");

PR("终点站--->2\n");

PR("飞行日期->3\n");

for(;!

flag;)

{

SC("%d",&i);

switch(i)

{

case1:

p=search_line();flag=1;break;

case2:

p=se

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

当前位置:首页 > 小学教育 > 数学

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

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