C语言程序设计航班管理系统总16页.docx
《C语言程序设计航班管理系统总16页.docx》由会员分享,可在线阅读,更多相关《C语言程序设计航班管理系统总16页.docx(22页珍藏版)》请在冰豆网上搜索。
C语言程序设计航班管理系统总16页
C语言程序设计-航班管理系统(总16页)
仲恺农业工程学院
C语言程序设计报告
航班信息管理系统
课程名称C语言程序设计
姓名XXX
院(系)信息科学与技术学院
专业班级网络工程XX
学号201320XX
指导教师XXX
仲恺农业工程学院教务处制
1需求分析
航班信息包括航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号、票价,八项信息。
试设计航班信息管理系统,使之能提供以下功能:
系统以菜单方式工作
航班信息录入功能(航班信息用文件保存)--输入
航班信息浏览功能--输出
航班信息查询功能-算法(其中查询方式可以按学历查询、按职工号查询等)
航班信息排序、筛选功能
2系统总框图和功能模块说明
系统总框图
图1系
统总框图
功能模块说明
输入航班信息模块,完成航班信息的录入。
航班信息的录入前,录入系统先完成新建文件,检测文件是否存在的功能。
检测完毕,采用循环的输入流程,以检测文件是否终止为循环的判定条件;输入信息时,以检测编号判断输入的信息与文件中的信息是否有冲突,防止输入的信息存在冲突;把航班信息一一输入后,判断其有没有存入文件中。
排序航班信息模块,完成航班信息中的价格排序,便于筛选信息结果的查看,排序是利用冒泡排序法,按照价格从高到低编排。
查询航班信息模块,根据输入的航班编号,查询航班编号的信息,。
其过程中,首先是对输入的信息判断,判断输入的信息无误后再查询。
筛选航班信息模块,筛选模板分为四种不同条件的筛选,分别是起点站、到达站、起点时间、到达时间。
利用字符串函数strcmp比较输入的筛选条件与文件中字符串是否一致为判断,利用循环结构把筛选条件与有效字符串一一作比较。
3系统设计
主要结构体
航班编号、起飞点、到达点、班期、起飞时间、达到时间、型号、价格
structfly
{
intno;/*航班号*/
charstartpoint[M];/*起飞点*/
charfinalpoint[M];/*到达点*/
intbanqi;/*班期*/
charstartime[M];/*起飞时机*/
charfinaltime[M];/*到达时间*/
chartipe[M];/*型号*/
floatprice;/*价格*/
};
主要功能函数
voidin();/*航班信息输入系统*/
voidorder();/*航班价格排序系统*/
voidsearch();/*航班信息查询系统*/
voidmenu();/*信息展现函数*/
voidstartpoint();/*起点站筛选系统*/
voidfinalpoint();/*达到站筛选系统*/
voidstartime();/*起点时间筛选系统*/
voidfinaltime();/*到达时间筛选系统*/
关键函数的流程图
4系统调试
1、航班信息的输入
2、输入航班号,对航班信息进行查找
3、输入到达站,对航班信息进行筛选
5总结
在程序的编写中,导致程序出现逻辑错误,我个人经验不足,所以一旦出现错误就添加一些语句,比如添加printf("测试语句|\n");在程序中,断定其程序中哪一些地方出现错误,发现其中的错误,修改后再删除掉。
由于忘记了函数的调用方法,导致程序show无法调用,查看网上类似的程序,终于发现错误。
6源程序清单
#include<>
#include<>
#include<>
#include<>
#defineN15
#defineM20
#defineLENsizeof(structfly)
typedefstructfly{
intno;/*航班号*/
charstartpoint[M];
charfinalpoint[M];
intbanqi[M];
charstartime[M];
charfinaltime[M];
chartipe[M];
floatprice;
};
structflyf[N];
voidin();
voidshow(inti);
voidorder(int);/*排序*/
voidsearch();/*编号查询系统*/
voidmenu();
voidstartpoint();/*起点站查询系统*/
voidfinalpoint();/*达到站查询系统*/
voidstartime();/*起点时间查询系统*/
voidfinaltime();/*到达时间查询系统*/
voidmain()
{
intn;
menu();
scanf("%d",&n);
while(n)
{
switch(n)
{
case1:
in();
break;
case2:
search();
break;
case3:
startpoint();
break;
case4:
finalpoint();
break;
case5:
startime();
break;
case6:
finaltime();
break;
default:
break;
}
getch();
menu();
scanf("%d",&n);
}
}
voidmenu()
{
system("cls");
printf("\n\n\n\n\n");
printf("\t\t|--------------航班信息查询系统----------------|\n");
printf("\t\t|0.退出|\n");
printf("\t\t|1.录入记录|\n");
printf("\t\t|2.航班号查询|\n");
printf("\t\t|3.起点站查询|\n");
printf("\t\t|4.到达站查询|\n");
printf("\t\t|5.起飞时间查询|\n");
printf("\t\t|6.到达时间查询|\n");
printf("\t\t|----------------------------------------------|\n\n");
printf("\t\t\t选择(0-6):
______");
}
voidin()
{
inti,m=0;
charch[2];
FILE*fp;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件\n");
return;
}
while(!
feof(fp))o);
for(i=0;iif(f[i].no==f[m].no)
{
printf("该记录应经存在,请按任意键继续\n");
getch();
fclose(fp);
return;
}
printf("起点站-----");
scanf("%s",&f[m].startpoint);
printf("终点站-----");
scanf("%s",&f[m].finalpoint);
printf("班期-------");
scanf("%s",&f[m].banqi);
printf("起飞时间---");
scanf("%s",&f[m].startime);
printf("到达时间---");
scanf("%s",&f[m].finaltime);
printf("飞机型号---");
scanf("%s",&f[m].tipe);
printf("价格-------");
scanf("%f",&f[m].price);
printf("是否保存?
输入请按‘Y’否则按任意键----");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
if(fwrite(&f[m],LEN,1,fp)!
=1)
{
printf("不能保存\n");
getch();
}
else
{
printf("编号为%d的航班信息已经保存\n",f[i].no);
m++;
}
}
printf("是否继续,继续请按--Y--,否则按任意键");
scanf("%s",ch);
}
fclose(fp);
printf("OK");
}
voidsearch()/*编号查询系统*/
{
FILE*fp;
intsnum,i,m=0;
charch[2];
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件\n");
return;
}
while(!
feof(fp))
if(fread(&f[m],LEN,1,fp)==1);
m++;
fclose(fp);
if(m==0)
{
printf("没有记录");
return;
}
printf("请输入编号----");
scanf("%d",&snum);
for(i=0;iif(snum==f[i].no)
{
printf("已经找到该记录,是否显示?
显示请按—Y—");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
show(i);
break;
}
else
printf("没有相关的记录\n");
return;
}
}
voidstartpoint()/*起点站查询系统*/
{
FILE*fp;
inti,m=0;
charsnum[M];
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件\n");
return;
}
while(!
feof(fp))
if(fread(&f[m],LEN,1,fp)==1);
m++;
fclose(fp);
if(m==0)
{
printf("没有记录");
return;
}
printf("请输入起点站----");
scanf("%s",&snum);
for(i=0;i{
if(strcmp(f[i].startpoint,snum)==0)
{
show(i);
continue;
}
else
printf("没有相关的记录\n");
return;
}
}
voidfinalpoint()/*到达站查询系统*/
{
FILE*fp;
inti,m=0;
charsnum[M];
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件\n");
return;
}
while(!
feof(fp))
if(fread(&f[m],LEN,1,fp)==1);
m++;
fclose(fp);
if(m==0)
{
printf("没有记录");
return;
}
printf("请输入到达站----");
scanf("%s",&snum);
for(i=0;iif(strcmp(f[i].finalpoint,snum)==0)
{
show(i);
continue;
}
else
printf("没有相关的记录\n");
return;
}
voidstartime()/*起点时间查询系统*/
{
FILE*fp;
inti,m=0;
charsnum[M];
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件\n");
return;
}
while(!
feof(fp))
if(fread(&f[m],LEN,1,fp)==1);
m++;
fclose(fp);
if(m==0)
{
printf("没有记录");
return;
}
printf("请输入起点时间----");
scanf("%s",&snum);
for(i=0;iif(strcmp(f[i].startime,snum)==0)
{
show(i);
continue;
}
else
printf("没有相关的记录\n");
return;
}
voidfinaltime()/*达到时间查询系统*/
{
FILE*fp;
inti,m=0;
charsnum[M];
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件\n");
return;
}
while(!
feof(fp))
if(fread(&f[m],LEN,1,fp)==1);
m++;
fclose(fp);
if(m==0)
{
printf("没有记录");
return;
}
printf("请输入到达时间----");
scanf("%s",&snum);
for(i=0;iif(strcmp(f[i].finaltime,snum)==0)
{
show(i);
continue;
}
else
printf("没有相关的记录\n");
return;
}
voidshow(inti)
{
printf("航班编号为%d的航班信息如下:
\n",f[i].no);
printf("起点站----------------%s\n",f[i].startpoint);
printf("终点站----------------%s\n",f[i].finalpoint);
printf("起飞时间--------------%s\n",f[i].startime);
printf("到达时间--------------%s\n",f[i].finaltime);
printf("班期------------------%s\n",f[i].banqi);
printf("航班型号--------------%s\n",f[i].tipe);
printf("价格------------------%\n",f[i].price);
printf("\n\n\n\n");
}
voidorder(inti)
{
intj;
floattemp;
for(i=0;i{
for(j=i+1;jif(f[i].price{
temp=f[i].price;
f[i].price=f[j].price;
f[j].price=temp;
}
}
}