飞机订票系统报告和C语言源程序文档格式.docx

上传人:b****6 文档编号:16708092 上传时间:2022-11-25 格式:DOCX 页数:40 大小:490.98KB
下载 相关 举报
飞机订票系统报告和C语言源程序文档格式.docx_第1页
第1页 / 共40页
飞机订票系统报告和C语言源程序文档格式.docx_第2页
第2页 / 共40页
飞机订票系统报告和C语言源程序文档格式.docx_第3页
第3页 / 共40页
飞机订票系统报告和C语言源程序文档格式.docx_第4页
第4页 / 共40页
飞机订票系统报告和C语言源程序文档格式.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

飞机订票系统报告和C语言源程序文档格式.docx

《飞机订票系统报告和C语言源程序文档格式.docx》由会员分享,可在线阅读,更多相关《飞机订票系统报告和C语言源程序文档格式.docx(40页珍藏版)》请在冰豆网上搜索。

飞机订票系统报告和C语言源程序文档格式.docx

inputyour%dnumbers:

x);

//提示输入数据

for(i=0;

i<

x;

i++)//循环控制输入

scanf("

a[i]);

//输入a[i]

//换行

for(j=0;

j<

x-1;

j++)//实现x-1次循环,实现x-1趟比较

for(i=0;

x-1-j;

i++)//每一趟中进行x-1-j次比较

if(a[i]>

a[i+1])//相邻两个数比较

{t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}//如果前者大于后者,交换位置

printf("

thesortednumbers:

//提示要输出结果为从小到大

i++)//循环控制输出

{

%3d"

a[i]);

//输出排序后的数组

}

return0;

//返回函数值为0

}

1.5程序运行结果

上述程序的运行结果如图2和图3所示。

图2基本题目运行结果

图3基本题目运行结果

从图2和图3可以看出,输入不多于一百个数,总是会从小到大排列出来。

2改错题目

2.1题目

#include<

intfun()

{

inta[3][3],sum;

inti,j;

_____;

for(i=0;

i<

3;

i++)

{

for(j=0;

j<

j++)

scanf("

a[i][j]);

}

sum=sum*a[i][i];

Sum=%d\n"

sum);

main()

{fun();

2.2错误分析

没有定义主函数;

调用函数在主函数中没有声明:

sum没有赋初值:

输入矩阵的时候没有地址符;

前面定义的是sum,输出的时候是Sum;

2.3流程图

如图4图5所示:

主函数子函数

图4图5

2.4改正后程序

//编译预处理指令

intmain()//定义主函数

{//主函数体开始

intfun(inta[3][3]);

//调用函数声明

intb[3][3];

//定义数组

intm,i,j;

//定义变量

请输入一个三阶矩阵:

//提示输入矩阵

i++)//控制行循环

for(j=0;

j++)//控制列循环

b[i][j]);

//输入矩阵

m=fun(b);

//调用fun函数

sum=%d\n"

m);

//输出结果

}//主函数体结束

intfun(inta[3][3])//定义fun函数,函数值为整型,形式参数a[3][3]为整型

inti,j,sum=1;

//定义整形变量

i++)//控制行循环

{for(j=0;

j++)//控制列循环

if(i==j)//如果行标和列标相等

{sum=sum*a[i][j];

}//将行标和列标相等的数相乘,赋值给sum

return(sum);

//返回sum给主函数

2.5程序运行结果

上述程序的运行结果如图6图7所示

图6

图7

3综合题目

3.1题目

综合题目为:

《飞机订票系统》。

3.1.1问题描述

假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。

通过该系统来实现机票的订购问题。

3.1.2功能要求

本系统采用一个包含N个数据的结构体数组。

每个数据的结构应当包括:

起飞地、目的地航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。

1.本系统显示这样的菜单:

(1)输入航班信息

(2)输出航班信息

(3)查找航班信息

a.显示空座的数量

b.显示空座的信息

c.显示以定座的信息

d.起飞时间

(4)订票预约

(5)删除订票预约

(6)退出系统

3.本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。

4.查找航班信息既可按线路查,也可按目的地查。

5.在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,它首先从该文件读入数据。

3.2设计思路

飞机定票系统,实现主题模块,应完成以下设计:

1.一个包含N个数据的结构体数组:

输入起飞地、目的地、航班号、座次号、座次订出与否标记、订座者的姓名和订座者的身份证号码

2.显示菜单:

(2)输出航班信息

3.查询

(1)查询空座信息,包括空座数量

(2)查询已定座的信息,包括起飞时间

4.订票预约

(1)填写个人信息:

包括乘客姓名、乘客所在单位,乘客身份证号

(2)填写订单信息:

包括起飞城市、起飞时间、到达城市、路径城市

5删除订票:

客户不再需要订购的飞机票,客户删除之前定的飞机票,需依次输入

航班号,座位号,确定删除。

其中包含有:

(1)显示菜单函数:

FLIGHTfltlist[5];

PASSENGERpsglist[5][12];

ReadFlight(fltlist);

PASSENGER*k;

k=(PASSENGER*)psglist;

ReadPassenger(k);

用户可以根据菜单提示,选择相关菜单。

(3)查找函数:

查询已定座信息函数chaxunyidingxinxi(PASSENGER*psglist)。

本算法实现查找航班信息功能。

用户可以根据航班号或起飞抵达城市查找航班信息。

如果没有该航班信息,将提示相关信息。

(4)订票函数:

voidBook(FLIGHTfltlist[],PASSENGER*psglist)。

本算法实现订票功能。

用户输入订票信息后,该算法就会根据用户输入信息查找航班信息,找到就显示订票成功相关信息,且该航班票量减去用户订的票数。

如没找到,则提供相关的其他航班信息。

该算法功能可以循环执行。

(5)退票函数:

voidtuipiao(FLIGHTfltlist[],PASSENGER*psglist)。

本算法实现退票功能。

用户可以根据自己的航班型号退票。

3.3流程图

主函数流程图如图8所示:

图8主函数流程图

查询航班流程图如图9所示:

图9查询航班流程图

查询空位信息流程图如图10所示:

图10查询空位信息流程图

订票函数流程图如图11所示:

图11订票函数流程图

退票函数流程图如图12所示:

图12退票函数流程图

已定座位流程图如图13所示:

图13已定座位函数流程图

3.4源程序

stdlib.h>

string.h>

#defineM5//定义符号常量M=5

#defineN12//定义符号常量N=12

typedefstruct_flight//航班数据

{

intm_fltno;

//航班号

structDATE

intm_year;

intm_month;

intm_day;

}m_Date;

//订票日期

structTIME

intm_hour;

intm_min;

}m_start;

//起飞时间

charm_szTo[30];

//到达港

charm_szPass[30];

//途经港

intm_seatno;

//座位号

intyou_wu;

//座次订出与否的标记

charm_szName[20];

//姓名

charm_szNumber[19];

//身份证号(考虑到字母的情况,故使用字符串)

}FLIGHT;

///////////////////////以上是结构体.

voidReadFlight(FLIGHT*fltlist)

inti,j;

FILE*fp;

//定义一个指向文件的指针变量fp

FLIGHT*p;

//定义结构体指针变量p,指向此结构体类型数据

if((fp=fopen("

fltlist.dat"

"

rb"

))!

=NULL)

fread(fltlist,sizeof(FLIGHT),M*N,fp);

/*从fp指向的文件中读入所有航班的座位信息,存储到数组fltlist中*/

else

{

p=fltlist;

M;

i++)

{

for(j=0;

N;

j++)

{

p->

m_fltno=i;

//对航班号进行赋值

m_seatno=j;

//对座位号进行赋值

p->

you_wu=0;

p++;

}}//使p指向下一个数组的地址

fp=fopen("

wb+"

/*打开名为“fltlist”的数据文件,使用文件的方式为“读写”*/

fwrite(fltlist,sizeof(FLIGHT),M*N,fp);

/*将数组fltlist中所有的座位信息写入fp指向的文件*/

fclose(fp);

//关闭fp所指向的文件

///////////////////////以上是读入文件函数.

voidshuruFlight(FLIGHT*fltlist)

intj;

inti;

//定义指向FLIGHT类型数据的指针变量p

FLIGHTfltlist1;

//定义结构体类型变量fltlist1

charc='

y'

;

getchar();

while(c=='

||c=='

Y'

{

请输入航班号(0<

=航班号<

%d):

"

M);

i);

while(i>

=M||i<

0)/*该while语句为若输入航班号超出范围时进行的操作*/

{printf("

航班不存在,"

printf("

请重新输入:

scanf("

&

}

请输入起飞时间,比如(12:

00):

%d:

(fltlist1.m_start.m_hour),&

(fltlist1.m_start.m_min));

请输入途经港,比如(tianjing):

%s"

fltlist1.m_szPass);

请输入到达港,比如(shanghai):

fltlist1.m_szTo);

p=fltlist;

//p指向fltlist数组首地址

j++)//以下6行将输入的航班信息赋给数组中对应元素

(p+i*N+j)->

m_start.m_hour=fltlist1.m_start.m_hour;

m_start.m_min=fltlist1.m_start.m_min;

strcpy((p+i*N+j)->

m_szPass,fltlist1.m_szPass);

m_szTo,fltlist1.m_szTo);

if((fp=fopen("

wb"

))==NULL)exit(0);

/*若打开名为“fltlist”的数据文件失败,终止程序*/

fwrite(fltlist,sizeof(FLIGHT),M*N,fp);

/*若成功,将fltlist数组信息写入fp所指向的文件*/

fclose(fp);

//关闭fp指向的文件

修改成功,还要修改吗?

(y/n)"

getchar();

%c"

c);

}

///////////////////////以上是输入航班函数.

voidshuchuFlight(FLIGHT*fltlist)

{printf("

0)/*该while语句为若输入航班号超出范围时进行的操作*/

起飞时间:

%d\n"

(p+i*N)->

m_start.m_hour,(p+i*N)->

m_start.m_min);

途经港:

%s\n"

m_szPass);

到达港:

m_szTo);

查询完毕,还要继续查询吗?

///////////////////////以上是输出航班函数。

voidAddPassenger(FLIGHT*fltlist)

FILE*fp;

//定义一个指向文件的指针变量fp

=NULL)//打开名为“fltlist”的数据文件

{fwrite(fltlist,sizeof(FLIGHT),M*N,fp);

/*成功则将fltlist数组数据写入fp指向的文件*/

{printf("

打开文件失败!

按任意键退出。

/*本行开始的4行表示打开失败进行的操作*/

exit(0);

//终止程序

///////////////////////以上是写入文件函数.

voidBook(FLIGHT*fltlist)

intw=0;

//定义结构体类型变量fltlist1

{

请输入航班号:

(0<

%d)"

loop:

fltlist1.m_fltno);

while(fltlist1.m_fltno>

=M||fltlist1.m_fltno<

航班不存在,"

请重新输入:

for(i=0;

i<

i++)

if((p+i*N)->

m_fltno==fltlist1.m_fltno)/*以下为若输入的航班号与某一结构体变量中航班号吻合进行的操作*/

printf("

检测未订的座位...\n请稍等...\n"

i=(p+i*N)->

m_fltno;

//将寻找到的航班号赋值给i

p=fltlist;

//p指向fltlist数组首地址

for(j=0;

{

if((p+i*N+j)->

you_wu==0)//以下4行为显示空余座位的座位号

{

printf("

%d\t"

j);

w++;

}}

if(w==0)//以下3行为无空余座位进行的操作

{printf("

座位已满!

请重新输入航班号:

gotoloop;

//返回loop所在行,进行操作

}

printf("

\n以上是座位号,要订票吗?

getchar();

scanf("

while(c=='

)//以下进行乘客订票信息输入

printf("

\n请输入订票日期:

(yyyy,mm,dd)"

%d,%d,%d"

fltlist1.m_Date.m_year,&

fltlist1.m_Date.m_month,&

fltlist1.m_Date.m_day);

请输入乘客姓名:

);

scanf("

fltlist1.m_szName);

请输入身份证号:

fltlist1.m_szNumber);

\n请输入订票座位号:

=座位号<

N);

fltlist1.m_seatno);

for(;

)//无条件循环语句,for(;

)=while(true)

if(fltlist1.m_seatno<

0||fltlist1.m_seatno>

=N)

printf("

没有这个座位号!

}

elseif((p+N*(fltlist1.m_fltno)+fltlist1.m_seatno)->

you_wu==1)

{printf("

这个座位有人了!

elsebreak;

}

确认订票吗?

getchar();

)/*以下进行将输入的旅客信息赋给fltlist数组中相应元素*/

{strcpy((p+N*(fltlist1.m_fltno)+fltlist1.m_seatno)->

m_szName,fltlist1.m_szName);

strcpy((p+N*(fltlist1.m_fltno)+fltlist1.m_seatno)->

m_szNumber,fltlist1.m_szNumber);

(p+N*(fltlist1.m_fltno)+fltlist1.m_seatno)->

m_Date.m_day=fltlist1.m_Date.m_day;

(p+N*(fltlist1.m_fltno)+fltlist1.m_seatno)->

m_Date.m_month=fltlist1.m_Date.m_month;

m_Date.m_year=fltlist1.m_Date.m_year;

(p+N*(fltlist1.m_fltno)+fltlist1.m_seatno)->

you_wu=1;

p=fltlist;

AddPassenger(p);

//调用AddPassenger函数,存储订票信息

您的订票已成功。

c='

n'

c='

}}}

你还要继续订其它航班的票吗?

(y/n)\n"

///////////////////////以上是订票函数.

voidchakongweigeshu(FLIGHT*fltlist)

{charc='

FLIG

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

当前位置:首页 > 高中教育 > 英语

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

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