
飞机动态
-
2023年2月18日发(作者:)#include
#include
#include
typedefstructfeiji//存储结构结构体
{
charn[20];//航班号
charqd[20];//起点
charzd[20];//终点
chartime[10];//时间
charysps[10];//预售票数
charscps[10];//售出票数
};
structfeijihb[50];//结构体数组
intnum;//全局变量代表航班信息数量用于控制循环
voidduqu()//从文件中读取信息到结构体
{
FILE*fp;//文件指针
num=0;//初始化航班信息数目
if((fp=fopen(\"D:飞机航班.txt\",\"r\"))==NULL)//如果直接打开失败
{
if((fp=fopen(\"D:飞机航班.txt\",\"w+\"))==NULL)//则通过创建文件的方式来打开文
件
{
printf(\"文件读取失败!\");
return;
}
}
while(!feof(fp))//fp指向的位置为空时,feof函数的值为0
{
fread(&hb[num],sizeof(structfeiji),1,fp);
num++;//数目加一
}
num--;
fclose(fp);//关闭文件指针
}
voidxieru()//将结构体中的信息写入到文件中
{
FILE*fp;//定义文件指针
inti;
if((fp=fopen(\"D:飞机航班.txt\",\"w\"))==NULL)//直接打开文件
{
printf(\"文件读取失败!\");
return;
}
for(i=0;i { fwrite(&hb[i],sizeof(structfeiji),1,fp); } fclose(fp); } voidluru()//添加航班信息录入 { inti; printf(\"请输入该航班的航班号n\"); scanf(\"%s\",hb[num].n);//因为结构体中有num个航班信息,hb[num]是第num+1个, 所以用hb[num].n来接收输入的航班号 for(i=0;i { if(!strcmp(hb[i].n,hb[num].n))//如果有,则说明重复录入,提示并返回strcmp字 符串比较函数string.h { printf(\"已有该航班号号记录,请重新输入!n\"); printf(\"请输入该航班的航班号n\"); scanf(\"%s\",hb[num].n); } } printf(\"请输入该航班的起点n\");//完善航班信息 scanf(\"%s\",hb[num].qd); printf(\"请输入该航班的终点n\"); scanf(\"%s\",hb[num].zd); printf(\"请输入该航班的飞行时间(星期)n\"); scanf(\"%s\",hb[num].time); printf(\"请输入该航班的剩余票数n\"); scanf(\"%s\",hb[num].ysps); printf(\"请输入该航班的已售票数n\"); scanf(\"%s\",hb[num].scps); num++;//添加后全局变量num航班信息数量加一 xieru();//写入到文件中 } voidliulan()//浏览航班信息 { inti; if(num==0)//总量为0则无航班信息记录 { printf(\"无任何记录!n\"); } for(i=0;i { printf(\"航班号:%s起点:%s终点:%s时间:%s预售票数:%s已售票 数:%sn\",hb[i].n,hb[i].qd,hb[i].zd,hb[i].time,hb[i].ysps,hb[i].scps); } } voidchaxun()//查询 { inti=0,b=0; charc[20]; while(i!=1&&i!=2&&i!=3&&i!=4)//若输入的值不是1234中的一个,则不断输出下边 的信息 { printf(\"1.按航班号查询n2.按起点查询n3.按终点查询n4.按飞行时间查询n\"); scanf(\"%d\",&i); } switch(i) { case1:printf(\"请输入航班号:\");//按航班号查询 scanf(\"%s\",c);//用字符串C接收用户输入的航班号 for(i=0;i 号相同的 { if(!strcmp(hb[i].n,c))//若有相同,则输出该航班信息 { printf(\"航班号:%s起点:%s终点:%s时间:%s预售票数:%s 已售票数:%sn\",hb[i].n,hb[i].qd,hb[i].zd,hb[i].time,hb[i].ysps,hb[i].scps); b++;//改变标示位 } } if(b==0)//查看表示位是否改变 printf(\"无记录!n\"); return; case2:printf(\"请输入起始地点:\");//按起始地点查询 scanf(\"%s\",c); for(i=0;i { if(!strcmp(hb[i].qd,c)) { printf(\"航班号:%s起点:%s终点:%s时间:%s预售票数:%s 已售票数:%sn\",hb[i].n,hb[i].qd,hb[i].zd,hb[i].time,hb[i].ysps,hb[i].scps); b++; } } if(b==0) printf(\"无记录!n\"); return; case3:printf(\"请输入终点:\");//按终点查询 scanf(\"%s\",c); for(i=0;i { if(!strcmp(hb[i].zd,c)) { printf(\"航班号:%s起点:%s终点:%s时间:%s预售票数:%s 已售票数:%sn\",hb[i].n,hb[i].qd,hb[i].zd,hb[i].time,hb[i].ysps,hb[i].scps); b++; } } if(b==0) printf(\"无记录!n\"); return; case4:printf(\"请输入航班飞行时间:\");//按时间查询 scanf(\"%s\",c); for(i=0;i { if(!strcmp(hb[i].time,c)) { printf(\"航班号:%s起点:%s终点:%s时间:%s预售票数:%s 已售票数:%sn\",hb[i].n,hb[i].qd,hb[i].zd,hb[i].time,hb[i].ysps,hb[i].scps); b++; } } if(b==0) {printf(\"无记录!n\");} return; } } voidshanchu()//删除航班信息 { inti,j; charb[20]; printf(\"请输入要删除的航班号n\");//输入要删除的航班号 scanf(\"%s\",b); for(i=0;i { if(!strcmp(hb[i].n,b))//若找到 { for(j=i;j { hb[j]=hb[j+1]; } num--;//航班信息数目减一 xieru();//写入文件中 printf(\"删除成功!n\"); return; } } printf(\"无该卡号记录,请核实后再行删除!n\"); } voidmain() { inti=1; duqu(); while(i) { printf(\"********************************************************************* ***********\"); printf(\"******按照下面菜单提示进行操作******nn\"); printf(\"********1.录入新的航班信息********n\"); printf(\"********2.浏览所有的航班信息********n\"); printf(\"********3.查询某一航班信息********n\"); printf(\"********4.删除某一航班信息********n\"); printf(\"********0.退出系统********n\"); printf(\"********************************************************************* ***********\"); scanf(\"%d\",&i); switch(i) { case1:luru();break; case2:liulan();break; case3:chaxun();break; case4:shanchu(); } } }