飞机订票系统.docx
《飞机订票系统.docx》由会员分享,可在线阅读,更多相关《飞机订票系统.docx(25页珍藏版)》请在冰豆网上搜索。
飞机订票系统
C语言课程设计
-----飞机订票系统
院系:
姓名:
学号:
班号:
指导教师:
一、题目要求
假定民航机场共有n个航班,每个航班有一航班号,确定的航线(起始点,终点站),确定的飞行时间(星期几)和一定的成员订额.试设计一民航订票系统,使之能提供下列服务:
1、航班信息录入功能(航班信息用文件保存)
2、航班信息浏览功能
3、查询航线:
(1)、按航班号查询
(2)、按起点站查询
(3)、按终点站查询
(4)、按飞行时间查询
二、需求分析
航班信息用文件保存;航班信息浏览功能需要提供显示操作;要查询航线需要提供查找功能,可提供按照航班号,起点站,终点站和飞行时间查询;另外要提供键盘式选择菜单以实现功能选择。
三、总体设计
根据需求分析,可以将这个系统的设计分为如下五大模块:
输入航班信息,保存航班信息,浏览航班信息,查找航班信息,退出。
飞机订票系统
飞机订票系统
四、详细设计
1、结构体设计
建立航班结构体,结构体成员包括航班号,起点站,终点站,飞行时间(星期几),
预售票总数.
structair
{intfir_num;
charstart[20];
charterminus[20];
charfir_time[10];
intcount;
}s[N];/*s[N]中每个数组元素依次对应一个航班信息*/
[注意]
s[N]中的N为学生个数,程序中采用宏定义的方式,可以随时在源程序宏定义中改,本程序宏定义#defineN10000.
2、主函数
流程图:
显示一系列功能选项
主要程序:
main()//主函数
{
intj;
printf("---欢迎您到飞机订票系统---\n");
printf("********************************************************************************\n");
do
{printf("1.请输入预定的飞机信息\n\n"
"2.浏览所要预定的飞机信息\n\n"
"3.查询所要预定的飞机信息\n\n"
"0.退出系统\n\n");
printf("********************************************************************************\n");
printf("注意:
这个飞机订票系统仅仅支持最近几个星期的航班信息!
!
!
\n\n");
printf("请在0—3之间选择一个数字,然后按Enter:
\n\n");
scanf("%d",&j);
switch(j)//利用枚举而选择其结构体中的一种
{
case1:
input();
break;
case2:
print();
break;
case3:
search();
break;
case0:
break;}
}while(j!
=0);
printf("谢谢您使用我们的飞机订票系统\n");}
3、各功能模块设计
(1)、输入航班信息模块
流程图:
主要代码:
voidinput()//输入函数的定义
{
charf[]="朱海侨";
inty;
printf("请输入密码,然后再按Enter:
\n\n");
scanf("%s",f);
if(strcmp(f,"朱海侨")==0)
{printf("请按顺序输入飞机航班信息(飞机航班的信息是以0结尾的):
\n\n");
printf("********************************************************************************\n");
for(i=0;i{
printf("请输入飞机号:
\n");
scanf("%d",&s[i].fir_num);
printf("请输入出发地:
\n");
scanf("%s",s[i].start);
printf("请输入终点:
\n");
scanf("%s",s[i].terminus);
printf("请输入飞行时间:
\n");
scanf("%s",s[i].fir_time);
printf("请输入飞机票序列号(序列号应该是以0结尾):
\n",m);
scanf("%d",&s[i].count);
m++;
printf("该组信息已经建立!
请按任意键继续,按0结束!
",m);
scanf("%d",&y);
if(y==0)
{
save();
print();
break;
}
}
}
else
printf("密码错误!
!
!
请在此输入您的密码,谢谢!
\n\n");}
voidsave()//存储函数的定义
{
FILE*fp,*fp1;
if((fp=fopen("chen.dat","wb"))==NULL)
{
printf("建立文件失败!
\n\n");
getchar();
return;
}
if((fp1=fopen("hao.dat","wb"))==NULL)
{
printf("建立文件失败!
\n\n");
getchar();
return;
}
for(i=0;iif(fwrite(&s[i],sizeof(structair),1,fp)==0)
printf("在文件中输入数据失败\n\n");
fprintf(fp1,"%d",m);
fclose(fp);
fclose(fp1);
}
(2)、保存信息模块
流程图:
主要代码:
voidsave()//存储函数的定义
{
FILE*fp,*fp1;
if((fp=fopen("chen.dat","wb"))==NULL)
{
printf("建立文件失败!
\n\n");
getchar();
return;
}
if((fp1=fopen("hao.dat","wb"))==NULL)
{
printf("建立文件失败!
\n\n");
getchar();
return;
}
for(i=0;iif(fwrite(&s[i],sizeof(structair),1,fp)==0)
printf("在文件中输入数据失败\n\n");
fprintf(fp1,"%d",m);
fclose(fp);
fclose(fp1);
}
(3)、信息浏览模块
流程图:
主要代码:
voidread()//读写函数的定义
{
FILE*fp,*fp1;
if((fp=fopen("chen.dat","rb"))==NULL)
{
printf("错误:
请确定文件是存在的!
请输入任意键返回菜单!
");
getchar();
}
if((fp1=fopen("hao.dat","rb"))==NULL)
{
printf("建立文件失败!
\n\n");
getchar();
return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);
for(i=0;i{
fread(&s[i],sizeof(s),1,fp);}
fclose(fp);
}
voidprint()
{
charw[10];
read();
printf("航班号始发地终点时间飞机票号\n");
for(i=0;i{
printf(PRINT);}
printf("请输入任意键返回上一级菜单:
\n");
scanf("%s",w);
}
(4)查询信息模块
流程图:
显示查询方式菜单
主要代码:
voidsearch()//查询函数的定义
{
charname1[20];
charname2[20];
charii[10];
charctime[10];
intn,no;
do
{
printf("请选择一种你想要查找的方式:
\n\n");
printf(
"1.根据航班号查找\n\n"
"2.根据终点地查找\n\n"
"3.根据始发地查找\n\n"
"4.根据飞行时间查找\n\n"
"0.返回\n\n");
printf("请在0—4中间选择一个整数:
\n\n"
"请输入任意键返回开始菜单:
\n\n");
scanf("%d",&n);
if(n==0)
break;
switch(n)
{case1:
printf("请输入航班号:
\n");
scanf("%d",&no);
break;
case2:
printf("请输入终点:
\n");
scanf("%s",name2);
break;
case3:
printf("请输入始发地:
\n");
scanf("%s",name1);
break;
case4:
printf("请输入飞行时间:
\n");
scanf("%s",ctime);
break;
}
read();
for(i=0;i{
if(strcmp(s[i].start,name1)==0||strcmp(s[i].terminus,name2)==0)
{
printf("\n成功查找到了航班信息!
\n");
printf("航班号始发地终点时间飞机票号\n");
printf(PRINT);
}
if(s[i].fir_num==no)
{printf("\n成功查找到了航班信息!
\n");
printf("航班号始发地终点时间飞机票号\n");
printf(PRINT);
}
if(strcmp(s[i].fir_time,ctime)==0)
{printf("\n成功查找到了航班信息!
\n");
printf("航班号始发地终点时间飞机票号\n");
printf(PRINT);
}
}
no=0;
printf("不能找到您所需要的信息!
:
\n\n"
"您还需要继续服务,请输入“YES”或者“NO”,然后再按Enter\n");
scanf("%s",ii);
}while(strcmp(ii,"yes")==0);
}
五、上机操作
1、输入数据
管理员输入航班信息:
航班号起点站终点站飞行时间票数
100武汉西安7.890
101武汉北京7.9780
102上海西安7.9340
103广州武汉7.810
103广州武汉7.9500
2、编译、连接、运行
3、结果显示
(1)主菜单:
(2)、输入密码:
(3)、输入信息
(4)、浏览信息
(5)、信息查询
(5.1)按航班号查询
(5.2)按终点站查询
(5.3)按起点站查询
(5.4)、按时间查询
六、总结
通过这次课程设计,我重新温习了C语言的知识,加深了对书上知识的理解,系统地运用已学的知识,掌握了模块化设计方法以及用流程图表示算法,扩张自己在C语言方面视野,提高了自己用C语言进行程序设计的能力。
相信通过此次C语言课程设计所学的知识,在以后我能够在实际生活中解决所遇到的问题。
七、附录
源程序:
//飞机订票系统.cpp:
Definestheentrypointfortheconsoleapplication.
//
#include"stdafx.h"
#include
#include
#include
#defineN1000
structair//定义一个结构体
{
intfir_num;
charstart[20];
charterminus[20];
charfir_time[10];
intcount;
}s[N];
inti;
intm=0;
#definePRINT"%-d%23s%15s%10s%10d\n",s[i].fir_num,s[i].start,s[i].terminus,s[i].fir_time,s[i].count
voidinput();//声明一些功能函数
voidprint();
voidsave();
voidread();
voidsearch();
voidmain()//主函数
{
intj;
printf("---欢迎您到飞机订票系统---\n");
printf("********************************************************************************\n");
do
{printf("1.请输入预定的飞机信息\n\n"
"2.浏览所要预定的飞机信息\n\n"
"3.查询所要预定的飞机信息\n\n"
"0.退出系统\n\n");
printf("********************************************************************************\n");
printf("注意:
这个飞机订票系统仅仅支持最近几个星期的航班信息!
!
!
\n\n");
printf("请在0—3之间选择一个数字,然后按Enter:
\n\n");
scanf("%d",&j);
switch(j)//利用枚举而选择其结构体中的一种
{
case1:
input();
break;
case2:
print();
break;
case3:
search();
break;
case0:
break;}
}while(j!
=0);
printf("谢谢您使用我们的飞机订票系统\n");}
voidinput()//输入函数的定义
{
charf[]="朱海侨";
inty;
printf("请输入密码,然后再按Enter:
\n\n");
scanf("%s",f);
if(strcmp(f,"朱海侨")==0)
{printf("请按顺序输入飞机航班信息(飞机航班的信息是以0结尾的):
\n\n");
printf("********************************************************************************\n");
for(i=0;i{
printf("请输入飞机号:
\n");
scanf("%d",&s[i].fir_num);
printf("请输入起点站:
\n");
scanf("%s",s[i].start);
printf("请输入终点站:
\n");
scanf("%s",s[i].terminus);
printf("请输入飞行时间:
\n");
scanf("%s",s[i].fir_time);
printf("请输入飞机票数(序列号应该是以0结尾):
\n",m);
scanf("%d",&s[i].count);
m++;
printf("该组信息已经建立!
请按任意键继续,按0结束!
",m);
scanf("%d",&y);
if(y==0)
{
save();
print();
break;
}
}
}
else
printf("密码错误!
!
!
请在此输入您的密码,谢谢!
\n\n");}
voidsave()//存储函数的定义
{
FILE*fp,*fp1;
if((fp=fopen("chen.dat","wb"))==NULL)
{
printf("建立文件失败!
\n\n");
getchar();
return;
}
if((fp1=fopen("hao.dat","wb"))==NULL)
{
printf("建立文件失败!
\n\n");
getchar();
return;
}
for(i=0;iif(fwrite(&s[i],sizeof(structair),1,fp)==0)
printf("在文件中输入数据失败\n\n");
fprintf(fp1,"%d",m);
fclose(fp);
fclose(fp1);
}
voidread()//读写函数的定义
{
FILE*fp,*fp1;
if((fp=fopen("chen.dat","rb"))==NULL)
{
printf("错误:
请确定文件是存在的!
请输入任意键返回菜单!
");
getchar();
}
if((fp1=fopen("hao.dat","rb"))==NULL)
{
printf("建立文件失败!
\n\n");
getchar();
return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);
for(i=0;i{
fread(&s[i],sizeof(s),1,fp);}
fclose(fp);
}
voidprint()
{
charw[10];
read();
printf("航班号起点站终点站时间票数\n");
for(i=0;i{
printf(PRINT);}
printf("请输入任意键返回上一级菜单:
\n");
scanf("%s",w);
}
voidsearch()//查询函数的定义
{
charname1[20];
charname2[20];
charii[10];
charctime[10];
intn,no;
do
{
printf("请选择一种你想要查找的方式:
\n\n");
printf(
"1.根据航班号查找\n\n"
"2.根据终点站查找\n\n"
"3.根据起点站查找\n\n"
"4.根据飞行时间查找\n\n"
"0.返回\n\n");
printf("请在0—4中间选择一个整数:
\n\n"
"请输入任意键返回开始菜单:
\n\n");
scanf("%d",&n);
if(n==0)
break;
switch(n)
{case1:
printf("请输入航班号:
\n");
scanf("%d",&no);
break;
case2:
printf("请输入终点站:
\n");
scanf("%s",name2);
break;
case3:
printf("请输入起点站:
\n");
scanf("%s",name1);
break;
case4:
printf("请输入飞行时间:
\n");
scanf("%s",ctime);
break;
}
read();
for(i=0;i{
if(strcmp(s[i].start,name1)==0||strcmp(s[i].terminus,name2)==0)
{
printf("\n成功查找到了航班信息!
\n");
printf("航班号起点站终点站时间票数\n");
printf(PRINT);
}
if(s[i].fir_num==no)
{printf("\n成功查找到了航班信息!
\n");
printf("航班号起点站终点站时间票数\n");
printf(PRINT);
}
if(strcmp(s[i].fir_time,ctime)==0)
{printf("\n成功查找到了航班信息!
\n");
printf("航班号起点站终点站时间票数\n");
printf(PRINT);
}
}
no=0;
printf("不能找到您所需要的信息!
:
\n\n"
"您还需要继续服务,请输入“YES”或者“NO”,然后再按Enter\n");
scanf("%s",ii);
}while(strcmp(ii,"yes")==0);
}