c语言实现机票管理系统源代码
课程设航空订票系统完整源代码及详解

#include<stdio.h> //标准输入、输出头文件#include<string.h> //包含字符串函数处理头文件#include<stdlib.h> //包含动态存储与释放函数头文件#include<process.h>//包含access函数的头文件#define N 10000struct plane //定义结构体数组{int num;char start[20];char over[20];char time[10];int count;int ys;}s[N];int i;int m=0;#define PRINT "%-d%10s%10s%10s%12d%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s [i].count,s[i].ys //定义输出格式void input(); //输入航班信息void save(); //保存航班信息void read(); //读取航班信息void order();//升序输出航班信息void search(); //查找航班信息void dingpiao(); //订票信息void tuipiao(); //退票信息void save1();//void main()//主函数{ int j;save1();do{printf(" \n");printf(" ★--- 您好,欢迎进入自制飞机订票系统!---★\n");printf(" \n");printf("********************************************************************* *\n");printf(" \n");printf(" -------- ☆ 1.输入航班信息☆-------- \n\n" " -------- ※ 2.浏览航班信息※-------- \n\n"" -------- ☆ 3.查找航班信息☆-------- \n\n"" -------- ※ 4.订票信息※-------- \n\n"" -------- ☆ 5.退票信息☆-------- \n\n"" -------- *0.退出* -------- \n\n"); printf(" \n");printf("********************************************************************* **\n");printf(" \n");printf(" 请在0-5中选择以回车键结束:\n\n");scanf("%d",&j);switch(j){case 1: input();//调用输入模块break;case 2:order();//调用打印模块break;case 3:search();//调用查找模块break;case 4:dingpiao();//调用订票模块break;case 5:tuipiao();//调用退票模块break;case 0:;break;}}while(j!=0); //判断结束printf("谢谢使用,再见!\n");}//主函数结束void input()//信息录入{ int y;{FILE *fp;//定义文件指针if((fp=fopen("plane.txt","wb"))==NULL)//打开文件并判断是否出错{printf("创建文件失败!\n\n");//打印出错提示getchar();return;}printf("→→→→→→→→→→→→→→→→→\n");printf("请依次输入航班信息\n\n""完成输入信息请键入0以回车键结束\n\n"); //提示信息printf("←←←←←←←←←←←←←←←←←\n");for(i=0;i<N;i++){printf("请输入航班号: \n");scanf("%d",&s[i].num); //读取航班号printf("请输入起始站: \n");scanf("%s",s[i].start);//读取起始站printf("请输入终点站: \n");scanf("%s",s[i].over);//读取终点站printf("请输入时间: \n");scanf("%s",s[i].time);//读取时间printf("请输入机票数(机票数为0结束输入): \n",);scanf("%d",&s[i].count);//读取机票数m++;//统计输入的航班总数printf("信息已经输完是否继续?请输入任意数字键并回车继续,按0键回车结束",m);scanf("%d",&y);if(y==0){save();//将结构体信息存盘break;}}}}void save()//保存模块程序{ FILE *fp;//定义文件指针if((fp=fopen("plane.txt","wb"))==NULL)//打开文件并判断是否出错{printf("创建文件失败!\n\n");//打印出错提示getchar();return;}for(i=0;i<m;i++)if(fwrite(&s[i],sizeof(struct plane),1,fp)==0)//写入数据判断是否出错printf("向文件输入数据失败!\n\n");fclose(fp);//关闭文件}void save1(){if(access("plane.txt",0))//判断文件是否存在{input();//调用输入模块}elsesave();//调用保存模块}void read()//从文件读取信息模块{FILE *fp;//定义文件指针if((fp=fopen("plane.txt","rb"))==NULL)//打开文件,并判断是否出错{printf("出错,请检查文件是否存在,按z键回车返回主菜单");//错误提示getchar();return;}i=0;while(!feof(fp)){fread(&s[i],sizeof(struct plane),1,fp);//从文件中读取信息i++;m++;}m--;fclose(fp);//关闭文件}void order()//升序排列航班信息模块{int i,j;//冒泡法排序struct plane t;for(i=0;i<m;i++){for(j=0;j<m-1;j++)if(s[j].num>s[j+1].num){t=s[j+1];s[j+1]=s[j];s[j]=t;}}{char w[20];printf("航班号起始站终点站飞行时间机票总数已售票数\n");for(i=0;i<m;i++){printf(PRINT);//打印信息}printf("请按z键回车键结束返回主菜单:\n");scanf("%s",w);}}void search()//查询模块{char name1[20];char name2[20];char hb[10];int n,b;do{printf("→→→→→→→→→→→→→→→→→\n"); printf("请选择查找方式:\n\n");//打印查询方式菜单printf("—— 1.按航班号查找——\n\n""—— 2.按起始站查找——\n\n""—— 3.终点站查找——\n\n""—— 0.返回——\n\n");printf("←←←←←←←←←←←←←←←←←\n"); printf("请在0-3中选择:\n\n");scanf("%d",&n);//读取查找方式if(n==0)break;switch(n){case 1:printf("请输入航班号: \n");scanf("%d",&b);//航班号break;case 2:printf("请输入起始站名称: \n");scanf("%s",name1);//读取终点站break;case 3:printf("请输入终点站名称: \n");scanf("%s",name2);//终点站break;}read();//调用读取函数for(i=0;i<m;i++){ if(strcmp(s[i].start,name1)==0)//按起始站判断输出条件{printf("\n查找航班信息成功!\n");printf("航班号起始站终点站飞行时间机票总数已售票数\n");printf(PRINT);//打印信息break;}if(strcmp(s[i].over,name2)==0)//按终点站判断输出条件{printf("\n查找航班信息成功!\n");printf("航班号起始站终点站飞行时间机票总数已售票数\n");printf(PRINT);//打印信息break;}if(s[i].num==b)//按航班号判断输出条件{ printf("\n查找航班信息成功!\n");printf("航班号起始站终点站飞行时间机票总数已售票数\n");printf(PRINT);//打印信息break;}}b=0;//将航班号赋值为0printf("**查找完毕**\n\n");printf("此航班若是您需要查询航班,请输入yes并回车确定\n""此航班不是您需要查询的航班,请输入no并回车键重新查询:\n"); scanf("%s",hb);}while(strcmp(hb,"no")==0);//判断结束}void dingpiao()//订票模块{int n;char a[10];do{search();//调用查询模块printf("请输入您要订的机票数以回车键结束:\n");scanf("%d",&n);//读取所订机票数if(s[i].count<n)//判断机票数是否足够{printf(" 机票数不足!\n");break;}if(n<=0){printf("请输入有效的机票数!\n");//判断机票数是否出错break;}if(s[i].count!=0&&s[i].count>=n)//判断是否出错{s[i].count=s[i].count-n;s[i].ys=n;save();//调用保存函数printf("\n""\n");printf("Θ⊕订票成功⊕Θ!\n\n");}printf("是否继续订票?请输入yes或no以回车键结束:\n");//判断是否继续scanf("%s",a);}while(strcmp(a,"yes")==0);//判断结束getchar();}void tuipiao()//退票模块{int n;char a[10];do{search();//调用查询模块printf("请输入您要退的机票数目:\n");scanf("%d",&n);//输入所退票数if(s[i].ys<n)//判断可退机票数是否足够{printf(" 可退机票数不足!\n"); break;}if(n<=0) //判断票数是否有效printf("请输入有效的机票数!\n");s[i].count=s[i].count+n;s[i].ys=s[i].ys-n;save(); //调用保存模块printf(" \n""⊙☉退票成功!☉⊙\n\n"" \n");printf("是否继续退票?请键入yes或no以回车键结束:\n\n");//是否继续scanf("%s",a);}while(strcmp(a,"yes")==0);//判断并跳出循环getchar();}。
航班查询系统 C语言源程序

#include <stdio.h〉#include <stdlib.h〉#include <string.h〉#define NOD struct plane_liststruct plane{char number [10];char start[10];char arrive [10];char date[10];char starttime[10];char arrivingtime[10];char price[10];char model[10];};NOD{char number [10];char start[10];char arrive [10];char date[10];char starttime[10];char arrivingtime[10];char price[10];char model[10];NOD*next;};FILE *fp;/*由文件中的数据生成一个飞机航班的链表,如果文件不存在,则是一个空链表*/ NOD *load(char planename[]){ NOD *p,*q,*head;struct plane per;p=(NOD *)malloc(sizeof(NOD));q=head=NULL;if((fp=fopen(planename,”rb”))==NULL)return head;else{while(!feof(fp)){if(fread(&per,sizeof(struct plane),1,fp)==1){p=(NOD *)malloc(sizeof(NOD));strcpy(p->number,per。
number);strcpy(p-〉start,per.start);strcpy(p->arrive,per。
arrive);strcpy(p—〉date,per。
date);strcpy(p->starttime,per.starttime);strcpy(p—〉arrivingtime,per.arrivingtime);strcpy(p—>price,per.price);strcpy(p—>model,per.model);head=p;p-〉next=q;q=head;}}}fclose(fp);return(head);}/*输入*/NOD *insert(NOD *head){NOD *temp,*p;p=head;temp=(NOD *)malloc(sizeof(NOD));printf(”\n\t请输入航班号:");scanf(”%s",temp-〉number);printf(”\n\t请输入起点站:”);scanf(”%s",temp->start);printf("\n\t请输入终点站:”);scanf("%s”,temp—〉arrive);printf(”\n\t请输入起飞时间:”);scanf(”%s",temp—>starttime);printf(”\n\t请输入到达时间:”);scanf(”%s”,temp-〉arrivingtime);printf(”\n\t请输入班期:”);scanf("%s”,temp—>date);printf(”\n\t请输入票价:");scanf(”%s",temp—>price);printf("\n\t请输入航班型号:”);scanf("%s",temp—>model);head=temp;temp—>next=p;return head;}/*保存*/void save(NOD *head, char filename[]){NOD*p;struct plane per;if((fp=fopen(filename,"wb”))==NULL){printf(" 文件无法写入”);exit(0);}else{ p=head;while(p!=NULL){ strcpy(per。
C语言航班管理程序标准系统

//---------------------航班管理程序系统---------------------//#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define N 20void welcome()。
//定义一个欢迎界面函数 //void entrance()。
//定义一个进入界面 //void score()。
//定义一个记录查询函数 //void add()。
//定义一个添加航班的函数 //void cut()。
//定义一个删除航班的函数 //void sell()。
//定义一个售出航班的函数 //void consult()。
//定义一个按要求查询的函数 //void compos()。
//定义一个按航班号排序的函数 //void back()。
//定义一个返回函数 //void read()。
//定义一个读入函数 //void save()。
//定义一个保存函数 //int all=10。
int ans。
typedef struct flight{char flightNum[N]。
//航班号//char setPlace[N]。
//出发地//char destPlace[N]。
//目的地//int Amount。
//数量//char airCompany[N]。
//航空公司//char setTime[N]。
//出发时间//char arrTime[N]。
//到达时间//}ft。
struct flight fli[50]={{"A1001","北京","大连",1000,"北京航空公司","8:00","8:45"},{"A1002","上海","太原",2000,"春秋航空公司","4:00","5:00"},{"A1003","沈阳","长沙",2500,"东北航空公司","10:00","13:30"},{"A1014","石家庄","贵阳",3000,"河北航空公司","15:00","17:40"},{"A1005","长春","广州",4500,"长春航空公司","14:20","16:10"},{"B1006","郑州","武汉",5000,"新郑航空公司","19:30","20:10"},{"B1007","重庆","昆明",6000,"重庆航空公司","18:00","19:10"},{"B1008","厦门","兰州",7000,"厦门航空公司","6:40","8:20"},{"B1009","深圳","黑龙江",8000,"深圳航空公司","21:00","23:50"},{"B1010","海南","台北",8500,"海南航空公司","2:00","2:30"}}。
c语言 航空订票系统代码

}
void order()
/*办理订票业务*/
{ struct airline *info;
int amount,grade;
char name[10];
info=start;
if(!(info=find())) return;/*根据客户提供的航班号进行查询,如为空,退出该模块*/
#include "malloc.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
}
void list()/*打印全部航线信息*/
{ struct airline *info;
int i=0;
info=start;
printf("终点站名\t航班号\t飞机号\t飞行日期\t乘员定额\t余票量\n");
while(i<MAXSIZE)
{
display(info);
char date[7];/*飞行日期(星期几)*/
int tkt_amt;/*乘员定额*/
int tkt_sur;/*余票量*/
linklist *order;/*乘员名单域,指向乘员名单链表的头指针*/
linkqueue wait;/*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/
{ printf("\n请输入您的姓名(排队订票客户):");
C#数据库应用系统(机票预定系统)源代码

C#数据库应用系统(机票预定系统)源代码using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Data.SqlClient;using System.Windows.Forms;namespace TicketOrder{public partial class Form1 : Form{public Form1(){InitializeComponent();}string sql = "";string connStr =@"server=sa\SQLEXPRESS;database=Ticket;trusted_connection=true";SqlDataAdapter da;DataSet ds;private void Form1_Load(object sender, EventArgs e){sql = "select FlightNO as '航班号',LeaveCity as '出发城市',Destination as '目的城市',LeaveTime as '出发时间' from TicketInfo where 1=1";Fill();}/// <summary>/// 初始化函数/// </summary>private void Fill(){da = new SqlDataAdapter(sql, connStr);ds = new DataSet();try{da.Fill(ds);dataGridView1.DataSource = ds.Tables[0];}catch (Exception ex){MessageBox.Show("输入信息有误,可能有不能识别的字符!"+ex.Message);}}private void button3_Click(object sender, EventArgs e){bool isNew = true;while (isNew){if (txtChufa.Text != ""){sql += string.Format(" and LeaveCity like'%{0}%'", txtChufa.Text);Fill();}if (txtMudi.Text != ""){sql += string.Format(" and Destination like'%{0}%'", txtMudi.Text);Fill();}isNew = false;sql = "select FlightNO as '航班号',LeaveCity as '出发城市',Destination as '目的城市',LeaveTime as '出发时间' from TicketInfo where 1=1";}}private void button1_Click(object sender, EventArgs e){sql = string.Format("insert into OrderInfo(FlightNO,SeatType,Number,LeaveDate) values('{0}','{1}','{2}','{3}')", textBox3.Text, cboClass.Text, textBox4.Text, textBox5.Text);SqlConnection conn = new SqlConnection(connStr);int num = 0;try{conn.Open();SqlCommand cmd = new SqlCommand(sql, conn);num = cmd.ExecuteNonQuery();if (num != 0)MessageBox.Show("预定成功!");elseMessageBox.Show("预定失败!");}catch (Exception ex){MessageBox.Show(ex.Message);}finally{conn.Close();}}private void button2_Click(object sender, EventArgs e){Application.Exit();}}}。
飞机订票系统(C语言代码及流程图)

目录第一部分源程序---------------------------------------------------3第二部分函数流程图--------------------------------------------11 menu()-----------------------------------------------------12 enter()-----------------------------------------------------13 input()-----------------------------------------------------14 browse()---------------------------------------------------15 menu1()---------------------------------------------------16 order()-----------------------------------------------------17 search_time()---------------------------------------------18 search_end()----------------------------------------------19 search()----------------------------------------------------20 book()------------------------------------------------------21 back()------------------------------------------------------22 save()------------------------------------------------------23 load()------------------------------------------------------24 第三部分心得体会------------------------------------------------25第一部分:源程序#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 1000typedef struct plane{char ID[10]; /*航班代号*/char BePlace[10];/*飞机起飞地点*/char EnPlace[10];/*飞机降落终点*/char data[15];/*飞机起飞时间*/int max;/*飞机最大乘客人数*/int price;/*飞机票价*/int num;/*飞机已售票数*/}PLANE;PLANE ti[N];int n;/*当前的航班数目*/void menu();void menu1();void input(int i){printf("请输入航班代号:\n");scanf("%s",ti[i].ID);printf("请输入起飞地点:\n");scanf("%s",ti[i].BePlace);printf("请输入降落地点:\n");scanf("%s",ti[i].EnPlace);printf("请输入起飞时间:\n");scanf("%s",ti[i].data);printf("请输入航班的最大载客人数:\n");scanf("%d",&ti[i].max);printf("请输入航班的票价:\n");scanf("%d",&ti[i].price);ti[i].num=0;}void enter(){int i;system( "cls" );printf("请输入航班的数目(0-%d)?:",N);scanf("%d",&n); /*要输入的记录个数*/printf("\n请输入数据\n\n");for(i=0;i<n;i++){printf("\n请输入第%d 航班记录.\n",i+1);input(i); /*调用输入函数*/}getchar();menu();}void printf_one(int i) /*显示一个记录的函数*/{printf("%11s %6s %10s %6s %6d %6d %6d",ti[i].ID,ti[i].BePlace,ti[i].EnPlace ,ti[i].data,ti[i].price,ti[i].max,ti[i].num);}void browse(){int i;system( "cls" );puts("\n--------------------------------------------------------------------");printf("\n\t航班代号起飞地点降落地点起飞时间票价最大乘客已售票数\n");for(i=0;i<n;i++){printf_one(i);printf("\n");}getchar();getchar();menu();}void order() /*排序模块(按平均成绩)*/{int i,j;struct plane s;system( "cls" );for(i=0;i<n;i++) /*冒泡法排序*/{for(j=i+1;j<n;j++)if(strcmp(ti[i].data,ti[j].data)>0){s=ti[i];ti[i]=ti[j];ti[j]=s;}}browse();}void search_time(){int i,m=0;struct plane s;system( "cls" );printf("\n\nEnter the time:");scanf("%s",s.data); /*输入出发的时间*/puts("\n--------------------------------------------------------------------");printf("\n\t航班代号起飞地点降落地点起飞时间票价最大乘客已售票数\n");for(i=0;i<n;i++){if(strcmp(s.data,ti[i].data)==0){m++;if((m!=0)&&(m%10==0)) /*目的是分屏显示*/{printf("\n\nPress any key to contiune . . .");getchar();puts("\n\n");}printf_one(i);printf("\n");/*调用显示一个记录的函数*/}}puts("\n--------------------------------------------------------------------");getchar(); /*按任意健*/getchar();menu1();}void serch_end(){int i,m=0;struct plane s;system( "cls" );printf("\n\nEnter the end Place:");scanf("%s",s.EnPlace); /*输入要到达的地方*/puts("\n--------------------------------------------------------------------");printf("\n\t航班代号起飞地点降落地点起飞时间票价最大乘客已售票数\n");for(i=0;i<n;i++){if(strcmp(ti[i].EnPlace,s.EnPlace)==0){m++;if((m!=0)&&(m%10==0)) /*目的是分屏显示*/{printf("\n\nPress any key to contiune . . .");getchar();puts("\n\n");}printf_one(i);printf("\n");/*调用显示一个记录的函数*/}}puts("\n--------------------------------------------------------------------");getchar(); /*按任意健*/getchar();menu1();}void menu1(){int n,w1;do{system( "cls" ); /*清屏*/puts("\t\t\t\t 飞机售票操作!\n\n");puts("\t\t*********************MENU*********************\n\n");puts("\t\t\t\t1.按照时间排序");puts("\t\t\t\t2.按照时间查找航班");puts("\t\t\t\t3.按照地点查找航班");puts("\t\t\t\t4.返回主菜单");puts("\n\n\t\t**********************************************\n");printf("Choice your number(1-4): [ ]\b\b");scanf("%d",&n);if(n<1||n>4) /*对选择的数字作判断*/{w1=1;printf("your choice is not between 1 and 4,Please input again:");getchar();getchar();}else w1=0;} while(w1==1);/*选择功能*/switch(n){case 1:order();break;case 2:search_time();break;case 3:serch_end();break;case 4:menu();break;}}int search() /*查找模块*/{int i,k;struct plane s;k=-1;system( "cls" );printf("\n\n请输入要订票的起飞地点:");scanf("%s",s.BePlace); /*输入要到达的地方*/printf("\n\n请输入要订票的降落地点:");scanf("%s",s.EnPlace);printf("\n\n请输入要订票的起飞时间:");scanf("%s",s.data); /*输入出发的时间*/for(i=0;i<n;i++) /*查找要修改的数据*/{if(strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&&strcmp(s.dat a,ti[i].data)==0){k=i; /*找到要修改的记录*/printf_one(k);break; /*调用显示一个记录的函数*/}}if(k==-1){printf("\n\nNO exist!");return -1;}elsereturn k;}void book(){int i;system( "cls" );printf("欢迎进入售票窗口!\n");i=search();if(i!=-1){if(ti[i].num>=ti[i].max){printf("\n该趟航班票已售完!");}else{ti[i].num++;printf("\n订票成功!\n");}}elseprintf("该航班不存在!\n");getchar();getchar(); /*按任意健*/menu();}void back(){int i,k=-1;struct plane s;system( "cls" );printf("欢迎进入退票窗口!\n");printf("\n\n输入航班代号:");scanf("%s",s.ID); /*输入要到达的地方*/for(i=0;i<n;i++) /*查找要修改的数据*/{if(strcmp(s.ID,ti[i].ID)==0){k=i; /*找到要修改的记录*/printf_one(k);break; /*调用显示一个记录的函数*/}}if(k==-1){printf("\n\nNO exist!");}else{ti[i].num--;printf("\n退票成功!\n");}getchar(); /*按任意健*/getchar(); /*按任意健*/menu();}void save(){int w=1;FILE *fp;int i;system( "cls" );if((fp=fopen("D:\\我的文档\\桌面\\ticket.txt","wt"))==NULL) /*以输出打开方式,在此前的记录被覆盖*/{printf("\nCannot open file\n");return ;}for(i=0;i<n;i++)if(fwrite(&ti[i],sizeof(struct plane),1,fp)!=1){printf(" error\n");w=0;}if(w==1){printf(" ok!\n");}fclose(fp);getchar();getchar();menu();}void load(){FILE *fp;int i,w;w=1;system( "cls" );if((fp=fopen("D:\\我的文档\\桌面\\ticket.txt","rt"))==NULL){printf("\nCan not open file\n");w=0;return;}n=0;for(i=0;!feof(fp);i++){fread(&ti[i],sizeof(struct plane),1,fp);n++;}n=n-1;fclose(fp);if(w==1)printf("Load !");getchar();getchar();menu();}void menu(){int n,w1;do{system( "cls" ); /*清屏*/ /*清屏*/puts("\t\t\t\t 飞机售票管理系统!\n\n");puts("\t\t*********************MENU*********************\n\n");puts("\t\t\t\t1.输入新航班");puts("\t\t\t\t2.浏览");puts("\t\t\t\t3.航班操作");puts("\t\t\t\t4.订票");puts("\t\t\t\t5.退票");puts("\t\t\t\t6.保存");puts("\t\t\t\t7.载入");puts("\t\t\t\t8.退出");puts("\n\n\t\t**********************************************\n");printf("Choice your number(1-8): [ ]\b\b");scanf("%d",&n);if(n<1||n>8) /*对选择的数字作判断*/{w1=1;printf("your choice is not between 1 and 8,Please input enter to choice again:");getchar();getchar();}else w1=0;} while(w1==1);/*选择功能*/switch(n){case 1:enter();break; /*输入模块*/case 2:browse();break; /*浏览模块*/case 3:menu1();break; /*查找模块*/case 4:book();break; /*订票模块*/case 5:back();break; /*退票模块*/case 6:save();break; /*保存模块*/case 7:load();break; /*加载模块*/case 8:exit(0);}}void main(){menu();}第二部分:函数流程图(2)enter函数流程图第三部分:心得体会(1)开始对c语言只是一种零散的认识,作为一个c语言的初学者对编程没有明确的概念,只是对语句的格式与编程规定有了一个初步了解。
航空管理系统c语言实现

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<ctype.h>#define N 6#define M 150struct airline//*********************************************************飞机航班的结构定义{Charair_num[10];//**************************************************************航班号charplane_num[10];//************************************************************飞机号charstart_place[10];//**********************************************************起点站charend_place[10];//************************************************************终点站chardate[15];//*******************************************************************日期inttotal;//*********************************************************************总票数int left;//********************************************************************剩余票数}airline[N];struct customer//********************************************************客户信息的结构定义{charname[10];//*******************************************************************姓名char shenfenzheng[20];//*******************************************************身份证号charair_num[10];//**************************************************************航班号charcangwei[12];//****************************************************************仓位intpiaoshu;//********************************************************************订票数}customer[M];voidhangbanbaobiao();//***********************************************************航班报表void guanli();//***********************************************************基本信息管理函数(管理员通道)voidkehu();//*********************************************************************客户通道void luru();//*****************************************************************录入航线信息void xiugai();//***************************************************************修改信息函数void shanchu();//**************************************************************删除航线信息void hangxianchaxun();//*******************************************************航线查询函数void jipiaoyuding();//*********************************************************机票预订函数void tuidingjipiao();//********************************************************机票退订函数void zhucaidan();//**************************************************************主菜单函数void jiami(char * s,int);//********************************************************加密函数void main(){system("color 47");zhucaidan();}void zhucaidan(){int n;char mima[13];system("cls");printf("\t\t\t※*************************************※\n");printf("\t\t\t※※\n");//开始界面printf("\t\t\t※★欢迎进入宇宙航空客户管理系统!★※\n");printf("\t\t\t※※\n");printf("\t\t\t※*************************************※\n\n");printf("\t\t\t※*************************************※\n");printf("\t\t\t※※\n");printf("\t\t\t※请选择登入身份:※\n");printf("\t\t\t※管理员登入请按 1 ※\n");printf("\t\t\t※客户登入请按 2 ※\n");printf("\t\t\t※※\n");printf("\t\t\t※*************************************※\n");do//************************************************************************以防客户输错{scanf("%d",&n);if (n!=1&&n!=2)printf("\t\t输入错误,请重新输入\n");}while(n!=1&&n!=2);if(n==1)//*******************************************************************管理员登入{int cuowu=1;do{printf("\t\t请输入12位管理员密码:\n");jiami(mima,12);printf("\n");if (strcmp(mima,"xiongweizhou")==0)guanli();else{printf("\t\t密码输入错误,请注意大小写!\n");cuowu++;}if (cuowu==4){printf("\t\t对不起,你已经没有机会了!\n");printf("\t\t密码如果忘了请联系本系统管理员!\n");break;}}while(cuowu<=3&&strcmp(mima,"xiongweizhou")!=0);}if(n==2)//*********************************************************************客户登入{kehu();}}void kehu()//*********************************************************客户通道{int m;system("cls");do{printf("\t\t\t※*************************************※\n");printf("\t\t\t※※\n");printf("\t\t\t※★欢迎进入客户服务通道!★※\n");printf("\t\t\t※※\n");printf("\t\t\t※*************************************※\n\n");printf("\t\t\t※*************************************※\n");printf("\t\t\t※※\n");printf("\t\t\t※尊敬的客户您好,请选择以下操作: ※\n");printf("\t\t\t※航线查询请按 1 ※\n");printf("\t\t\t※机票预订请按 2 ※\n");printf("\t\t\t※退订机票请按 3 ※\n");printf("\t\t\t※想返回主菜单请按 4 ※\n");printf("\t\t\t※※\n");printf("\t\t\t※*************************************※\n");scanf("%d",&m);if (m!=1&&m!=2&&m!=3&&m!=4)printf("\t请按要求操作,谢谢!\n");}while(m!=1&&m!=2&&m!=3&&m!=4);if (m==1)hangxianchaxun();if (m==2)jipiaoyuding();if (m==3)tuidingjipiao();if (m==4)zhucaidan();}voidguanli()//********************************************************************基本信息管理函数{int m;system("cls");do{printf("\t\t\t※*************************************※\n");printf("\t\t\t※※\n");printf("\t\t\t※★欢迎进入管理员通道!★※\n");printf("\t\t\t※*************************************※\n\n");printf("\t\t\t※*************************************※\n");printf("\t\t\t※※\n");printf("\t\t\t※管理员您好,请选择以下操作: ※\n");printf("\t\t\t※录入航线信息请按 1 ※\n");printf("\t\t\t※修改航线信息请按 2 ※\n");printf("\t\t\t※删除航线信息请按 3 ※\n");printf("\t\t\t※打印航班报表请按 4 ※\n");printf("\t\t\t※想返回主菜单请按 5 ※\n");printf("\t\t\t※※\n");printf("\t\t\t※*************************************※\n");scanf("%d",&m);if (m!=1&&m!=2&&m!=3&&m!=4&&m!=5)printf("\t请按要求操作,谢谢!\n");}while(m!=1&&m!=2&&m!=3&&m!=4&&m!=5);if (m==1)luru();if (m==2)xiugai();if (m==3)shanchu();if (m==4)hangbanbaobiao();if (m==5)zhucaidan();}void luru()//*******************************************************录入航线信息{FILE *fp=NULL;static i=0;int fanhui;char ch='y';system("cls");if ((fp=fopen("flight.txt","a"))==NULL){printf("can not open flight.txt.\n");exit(0);}printf("\t\t\t※***********************※\n");printf("\t\t\t※★请认真输入信息!★※\n");printf("\t\t\t※***********************※\n");getchar();printf("\t\t请输入航班号:\n");gets(airline[i].air_num);printf("\t\t请输入飞机号:\n");gets(airline[i].plane_num);printf("\t\t请输入起始站:\n");gets(airline[i].start_place);printf("\t\t请输入终点站:\n");gets(airline[i].end_place);printf("\t\t请输入日期(****-**-**):\n");gets(airline[i].date);cuowu://goto标志printf("\t\t请输入总票数:\n");scanf("%d",&airline[i].total);printf("\t\t请输入余票数:\n");scanf("%d",&airline[i].left);if (airline[i].total<airline[i].left)//************************防止输入总票数小于余票数{printf("输入错误!总票数小于余票数!请重新输入!\n");goto cuowu;};fwrite(&airline[i],sizeof(airline[0]),1,fp);getchar();do{printf(" 你是否还要录入信息?是按\"y\",否按\"n\"! \n");ch=getchar();if (ch=='y'||ch=='Y'){fseek(fp,0,2);luru();}if (!(ch=='y'||ch=='n'||ch=='Y'||ch=='N'))printf("请按要求输入!\n");}while (!(ch=='y'||ch=='n'||ch=='Y'||ch=='N'));fclose(fp);if (ch=='n'||ch=='N'){fan://goto标志printf("返回主菜单请按1,返回管理员通道请按2!\n");scanf("%d",&fanhui);if (fanhui==1)zhucaidan();if (fanhui==2)guanli();if (fanhui!=1&&fanhui!=2)printf("\t请按要求输入!\n");goto fan;};}}void xiugai()//******************************************************修改信息函数{int n,fanhui;system("cls");printf("\t\t请先找到要修改的航线!\n\n");chongxin://goto的标志do{printf("\t\t\t※*************************************※\n");printf("\t\t\t※※\n");printf("\t\t\t※请选择查询方式:※\n");printf("\t\t\t※航班号查询请按 1 ※\n");printf("\t\t\t※起点站查询请按 2 ※\n");printf("\t\t\t※终点站查询请按 3 ※\n");printf("\t\t\t※日期查询请按 4 ※\n");printf("\t\t\t※返回主菜单请按 5 ※\n");printf("\t\t\t※※\n");printf("\t\t\t※*************************************※\n");scanf("%d",&n);if (n!=1&&n!=2&&n!=3&&n!=4&&n!=5)printf("\t\t请按要求输入!谢谢!\n");}while(n!=1&&n!=2&&n!=3&&n!=4&&n!=5);if (n==1){FILE *fp=NULL;char hangbanhao[10];char ch;int i,cunzai=0;printf("\t\t请输入要查询的航班号:\n");scanf("%s",&hangbanhao);if ((fp=fopen("flight.txt","r+"))==NULL){printf("can not open flight.txt.\n");exit(0);}for(i=0;i<N;i++){fread(&airline[i],sizeof(airline[0]),1,fp);for (i=0;i<N;i++){if (strcmp(hangbanhao,airline[i].air_num)==0){printf("\t航班号飞机号起始站终点站日期总票数余票\n");printf("\t%-10s",airline[i].air_num);printf("%-10s",airline[i].plane_num);printf("%-10s",airline[i].start_place);printf("%-10s",airline[i].end_place);printf("%-14s",airline[i].date);printf("%-8d",airline[i].total);printf("%-8d",airline[i].left);printf("\n");cunzai=1;chongshu://goto标志printf("\t\t确定要修改吗?('y'or'n')\n");getchar();ch=getchar();if(ch=='y'||ch=='Y'){getchar();printf("\t\t请输入航班号:\n");gets(airline[i].air_num);printf("\t\t请输入飞机号:\n");gets(airline[i].plane_num);printf("\t\t请输入起始站:\n");gets(airline[i].start_place);printf("\t\t请输入终点站:\n");gets(airline[i].end_place);printf("\t\t请输入日期(****-**-**):\n");gets(airline[i].date);cuowu:printf("\t\t请输入总票数:\n");scanf("%d",&airline[i].total);printf("\t\t请输入余票数:\n");scanf("%d",&airline[i].left);if (airline[i].total<airline[i].left)//********防止输入总票数小于余票数{printf("输入错误!总票数小于余票数!请重新输入!\n");goto cuowu;};fseek(fp,i*(long)(sizeof(struct airline)),0);fwrite(&airline[i],sizeof(airline[0]),1,fp);printf("\t\t已经修改成功!\n");fclose(fp);printf("\n");hui://goto标志printf("返回主菜单请按1,返回管理员通道请按2!\n");scanf("%d",&fanhui);if (fanhui==1)zhucaidan();if (fanhui==2)guanli();if (fanhui!=1&&fanhui!=2){printf("\t请按要求输入!\n");goto hui;};}if(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y'){printf("\t\t请按要求输入,谢谢!\n");goto chongshu;}};}if (cunzai==0){printf("\t\t所查找的航班不存在,请重新选择查询方式!\n");goto chongxin;};if(ch=='n'||ch=='N'){fan://goto标志printf("返回主菜单请按1,返回管理员通道请按2!\n");scanf("%d",&fanhui);if (fanhui==1)zhucaidan();if (fanhui==2)guanli();if (fanhui!=1&&fanhui!=2){printf("\t请按要求输入!\n");goto fan;};}}if (n==2){FILE *fp=NULL;char qishizhan[10];char hangbanhao[10];char ch;int i,cunzai=0;printf("\t\t请输入要查询的起始站:\n");scanf("%s",&qishizhan);if ((fp=fopen("flight.txt","r+"))==NULL){printf("can not open flight.txt.\n");exit(0);}for(i=0;i<N;i++){fread(&airline[i],sizeof(airline[0]),1,fp);}for (i=0;i<N;i++){if (strcmp(qishizhan,airline[i].start_place)==0){printf("\t航班号飞机号起始站终点站日期票数余票\n");printf("\t%-10s",airline[i].air_num);printf("%-10s",airline[i].plane_num);printf("%-10s",airline[i].start_place);printf("%-10s",airline[i].end_place);printf("%-14s",airline[i].date);printf("%-8d",airline[i].total);printf("%-8d",airline[i].left);printf("\n");cunzai=1;}}if (cunzai==1){printf("\t\t请选择输入航班号:\n");scanf("%s",&hangbanhao);cunzai=0;}for (i=0;i<N;i++){if (strcmp(hangbanhao,airline[i].air_num)==0){printf("\t航班号飞机号起始站终点站日期总票数余票\n");printf("\t%-10s",airline[i].air_num);printf("%-10s",airline[i].plane_num);printf("%-10s",airline[i].start_place);printf("%-10s",airline[i].end_place);printf("%-14s",airline[i].date);printf("%-8d",airline[i].total);printf("%-8d",airline[i].left);printf("\n");cunzai=1;chongshu2://goto标志printf("\t\t确定要修改吗?('y'or'n')\n");getchar();ch=getchar();if(ch=='y'||ch=='Y'){getchar();printf("\t\t请输入航班号:\n");gets(airline[i].air_num);printf("\t\t请输入飞机号:\n");gets(airline[i].plane_num);printf("\t\t请输入起始站:\n");gets(airline[i].start_place);printf("\t\t请输入终点站:\n");gets(airline[i].end_place);printf("\t\t请输入日期(****-**-**):\n");gets(airline[i].date);printf("\t\t请输入总票数:\n");scanf("%d",&airline[i].total);printf("\t\t请输入余票数:\n");scanf("%d",&airline[i].left);fseek(fp,i*(long)(sizeof(struct airline)),0);fwrite(&airline[i],sizeof(airline[0]),1,fp);printf("\t\t已经修改成功!\n");fclose(fp);printf("\n");hui2://goto标志printf("返回主菜单请按1,返回管理员通道请按2!\n");scanf("%d",&fanhui);if (fanhui==1)zhucaidan();if (fanhui==2)guanli();if (fanhui!=1&&fanhui!=2){printf("\t请按要求输入!\n");goto hui2;};}if(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y'){printf("\t\t请按要求输入,谢谢!\n");goto chongshu2;}};}if (cunzai==0){printf("\t\t所查找的航班不存在,请重新选择查询方式!\n");goto chongxin;};if(ch=='n'||ch=='N'){fan2://goto标志printf("返回主菜单请按1,返回管理员通道请按2!\n");scanf("%d",&fanhui);if (fanhui==1)zhucaidan();if (fanhui==2)guanli();if (fanhui!=1&&fanhui!=2){printf("\t请按要求输入!\n");goto fan2;};}}if (n==3){FILE *fp=NULL;char zhongdianzhan[10];char hangbanhao[10];char ch;int i,cunzai=0;printf("\t\t请输入要查询的终点站:\n");scanf("%s",&zhongdianzhan);if ((fp=fopen("flight.txt","r+"))==NULL){printf("can not open flight.txt.\n");exit(0);}for(i=0;i<N;i++){fread(&airline[i],sizeof(airline[0]),1,fp);}for (i=0;i<N;i++){if (strcmp(zhongdianzhan,airline[i].end_place)==0){printf("\t航班号飞机号起始站终点站日期总票数余票\n");printf("\t%-10s",airline[i].air_num);printf("%-10s",airline[i].plane_num);printf("%-10s",airline[i].start_place);printf("%-10s",airline[i].end_place);printf("%-14s",airline[i].date);printf("%-8d",airline[i].total);printf("%-8d",airline[i].left);printf("\n");cunzai=1;}}if (cunzai==1){printf("\t\t请选择输入航班号:\n");scanf("%s",&hangbanhao);cunzai=0;}for (i=0;i<N;i++){if (strcmp(hangbanhao,airline[i].air_num)==0){printf("\t航班号飞机号起始站终点站日期总票数余票\n");printf("\t%-10s",airline[i].air_num);printf("%-10s",airline[i].plane_num);printf("%-10s",airline[i].start_place);printf("%-10s",airline[i].end_place);printf("%-14s",airline[i].date);printf("%-8d",airline[i].total);printf("%-8d",airline[i].left);printf("\n");cunzai=1;chongshu3://goto标志printf("\t\t确定要修改吗?('y'or'n')\n");getchar();ch=getchar();if(ch=='y'||ch=='Y'){getchar();printf("\t\t请输入航班号:\n");gets(airline[i].air_num);printf("\t\t请输入飞机号:\n");gets(airline[i].plane_num);printf("\t\t请输入起始站:\n");gets(airline[i].start_place);printf("\t\t请输入终点站:\n");gets(airline[i].end_place);printf("\t\t请输入日期(****-**-**):\n");gets(airline[i].date);printf("\t\t请输入总票数:\n");scanf("%d",&airline[i].total);printf("\t\t请输入余票数:\n");scanf("%d",&airline[i].left);fseek(fp,i*(long)(sizeof(struct airline)),0);fwrite(&airline[i],sizeof(airline[0]),1,fp);printf("\t\t已经修改成功!\n");fclose(fp);printf("\n");hui3://goto标志printf("返回主菜单请按1,返回管理员通道请按2!\n");scanf("%d",&fanhui);if (fanhui==1)zhucaidan();if (fanhui==2)guanli();if (fanhui!=1&&fanhui!=2){printf("\t请按要求输入!\n");goto hui3;};}if(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y'){printf("\t\t请按要求输入,谢谢!\n");goto chongshu3;};}}if (cunzai==0){printf("\t\t所查找的航班不存在,请重新选择查询方式!\n");goto chongxin;};if(ch=='n'||ch=='N'){fan3://goto标志printf("返回主菜单请按1,返回管理员通道请按2!\n");scanf("%d",&fanhui);if (fanhui==1)zhucaidan();if (fanhui==2)guanli();if (fanhui!=1&&fanhui!=2){printf("\t请按要求输入!\n");goto fan3;};}}if (n==4){FILE *fp=NULL;char riqi[10];char hangbanhao[10];char ch;int i,cunzai=0;printf("\t\t请输入要查询的日期(****-**-**):\n");scanf("%s",&riqi);if ((fp=fopen("flight.txt","r+"))==NULL){printf("can not open flight.txt.\n");exit(0);}for(i=0;i<N;i++){fread(&airline[i],sizeof(airline),1,fp);}for (i=0;i<N;i++){if (strcmp(riqi,airline[i].date)==0){printf("\t航班号飞机号起始站终点站日期总票数余票\n");printf("\t%-10s",airline[i].air_num);printf("%-10s",airline[i].plane_num);printf("%-10s",airline[i].start_place);printf("%-10s",airline[i].end_place);printf("%-14s",airline[i].date);printf("%-8d",airline[i].total);printf("%-8d",airline[i].left);printf("\n");cunzai=1;}}if (cunzai=1){printf("\t\t请选择输入航班号:\n");scanf("%s",&hangbanhao);cunzai=0;}for (i=0;i<N;i++){if (strcmp(hangbanhao,airline[i].air_num)==0){printf("\t航班号飞机号起始站终点站日期总票数余票\n");printf("\t%-10s",airline[i].air_num);printf("%-10s",airline[i].plane_num);printf("%-10s",airline[i].start_place);printf("%-10s",airline[i].end_place);printf("%-14s",airline[i].date);printf("%-8d",airline[i].total);printf("%-8d",airline[i].left);printf("\n");cunzai=1;chongshu4://goto标志printf("\t\t确定要修改吗?('y'or'n')\n");getchar();ch=getchar();if(ch=='y'||ch=='Y'){getchar();printf("\t\t请输入航班号:\n");gets(airline[i].air_num);printf("\t\t请输入飞机号:\n");gets(airline[i].plane_num);printf("\t\t请输入起始站:\n");gets(airline[i].start_place);printf("\t\t请输入终点站:\n");gets(airline[i].end_place);printf("\t\t请输入日期(****-**-**):\n");gets(airline[i].date);printf("\t\t请输入总票数:\n");scanf("%d",&airline[i].total);printf("\t\t请输入余票数:\n");scanf("%d",&airline[i].left);fseek(fp,i*(long)(sizeof(struct airline)),0);fwrite(&airline[i],sizeof(airline[0]),1,fp);printf("\t\t已经修改成功!\n");fclose(fp);printf("\n");hui4://goto标志printf("返回主菜单请按1,返回管理员通道请按2!\n");scanf("%d",&fanhui);if (fanhui==1)zhucaidan();if (fanhui==2)guanli();if (fanhui!=1&&fanhui!=2){printf("\t请按要求输入!\n");goto hui4;};}if(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y'){printf("\t\t请按要求输入,谢谢!\n");goto chongshu4;};}}if (cunzai==0){printf("\t\t所查的航班不存在,请重新选择查询方式!\n");goto chongxin;};if(ch=='n'||ch=='N'){fan4://goto标志printf("返回主菜单请按1,返回管理员通道请按2!\n");scanf("%d",&fanhui);if (fanhui==1)zhucaidan();if (fanhui==2)guanli();if (fanhui!=1&&fanhui!=2){printf("\t请按要求输入!\n");goto fan4;};}}if (n==5)zhucaidan();if (n!=1&&n!=2&&n!=3&&n!=4&&n!=5){printf("\t\t输入错误!请按要求输入!\n");goto chongxin;};}voidshanchu()//********************************************************************** ********删除航线信息{int n,fanhui;system("cls");chongxin://goto的标志printf("\t\t请先找到要删除的航线!\n\n");do{printf("\t\t\t※*************************************※\n");printf("\t\t\t※※\n");printf("\t\t\t※请选择查询方式:※\n");printf("\t\t\t※航班号查询请按 1 ※\n");printf("\t\t\t※起始站查询请按 2 ※\n");printf("\t\t\t※终点站查询请按 3 ※\n");printf("\t\t\t※日期查询请按 4 ※\n");printf("\t\t\t※返回菜单请按 5 ※\n");printf("\t\t\t※※\n");printf("\t\t\t※*************************************※\n");scanf("%d",&n);if (n!=1&&n!=2&&n!=3&&n!=4&&n!=5)printf("请按要求输入!谢谢!\n");}while(n!=1&&n!=2&&n!=3&&n!=4&&n!=5);if (n==1){FILE *fp=NULL;char hangbanhao[10];char ch;int i,j,k,l=0,cunzai=0;printf("\t\t请输入要查询的航班号:\n");scanf("%s",&hangbanhao);if ((fp=fopen("flight.txt","r+"))==NULL){printf("can not open flight.txt.\n");exit(0);}for(i=0;i<N;i++){fread(&airline[i],sizeof(airline[0]),1,fp);}while(isdigit(*airline[l].air_num)){l++;}for (i=0;i<N;i++){if (strcmp(hangbanhao,airline[i].air_num)==0){j=i+1;printf("\t航班号飞机号起始站终点站日期总票数余票\n");printf("\t%-10s",airline[i].air_num);printf("%-10s",airline[i].plane_num);printf("%-10s",airline[i].start_place);printf("%-10s",airline[i].end_place);printf("%-14s",airline[i].date);printf("%-8d",airline[i].total);printf("%-8d",airline[i].left);printf("\n");cunzai=1;chongshu:printf("\t\t确定要删除吗?('y'or'n') \n");getchar();ch=getchar();if(ch=='y'||ch=='Y'){fseek(fp,j*(long)(sizeof(struct airline)),0);for(k=j;k<l;k++){fread(&airline[k-1],sizeof(airline[0]),1,fp);}fclose(fp);if ((fp=fopen("flight.txt","w"))==NULL){printf("can not open flight.txt.\n");exit(0);}for(j=0;j<l-1;j++){fwrite(&airline[j],sizeof(airline[0]),1,fp);}printf("\t\t已经删除成功!\n");fclose(fp);printf("\n");fan://goto标志printf("返回主菜单请按1,返回管理员通道请按2!\n");scanf("%d",&fanhui);if (fanhui==1)zhucaidan();if (fanhui==2)guanli();if (fanhui!=1&&fanhui!=2){printf("\t请按要求输入!\n");goto fan;};}if(ch=='n'||ch=='N')shanchu();if(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y'){printf("\t\t请按要求输入,谢谢!\n");goto chongshu;};}}if (cunzai==0){printf("\t\t所查找的航班不存在,请重新选择查询方式!\n");goto chongxin;};}if (n==2){FILE *fp=NULL;char qishizhan[10];char hangbanhao[10];char ch;int i,j,k,l=0,cunzai=0;printf("\t\t请输入要查询的起始站:\n");scanf("%s",&qishizhan);if ((fp=fopen("flight.txt","r+"))==NULL){printf("can not open flight.txt.\n");exit(0);}for(i=0;i<N;i++){fread(&airline[i],sizeof(airline[0]),1,fp);}while(isdigit(*airline[l].air_num)){l++;}for (i=0;i<N;i++){if (strcmp(qishizhan,airline[i].start_place)==0){printf("\t航班号飞机号起始站终点站日期总票数余票\n");printf("\t%-10s",airline[i].air_num);printf("%-10s",airline[i].plane_num);printf("%-10s",airline[i].start_place);printf("%-10s",airline[i].end_place);printf("%-14s",airline[i].date);printf("%-8d",airline[i].total);printf("%-8d",airline[i].left);printf("\n");cunzai=1;}}if (cunzai==1){printf("\t\t请选择输入航班号:\n");scanf("%s",&hangbanhao);cunzai=0;}for (i=0;i<N;i++){if (strcmp(hangbanhao,airline[i].air_num)==0){j=i+1;printf("\t航班号飞机号起始站终点站日期总票数余票\n");printf("\t%-10s",airline[i].air_num);printf("%-10s",airline[i].plane_num);printf("%-10s",airline[i].start_place);printf("%-10s",airline[i].end_place);printf("%-14s",airline[i].date);printf("%-8d",airline[i].total);printf("%-8d",airline[i].left);printf("\n");cunzai=1;chongshu2://goto标志printf("\t\t确定要删除吗?('y'or'n') \n");getchar();ch=getchar();if(ch=='y'||ch=='Y'){fseek(fp,j*(long)(sizeof(struct airline)),0);for(k=j;k<l;k++){fread(&airline[k-1],sizeof(airline[0]),1,fp);}fclose(fp);if ((fp=fopen("flight.txt","w"))==NULL){printf("can not open flight.txt.\n");exit(0);}for(j=0;j<l-1;j++){fwrite(&airline[j],sizeof(airline[0]),1,fp);}printf("\t\t已经删除成功!\n");fclose(fp);printf("\n");fan2://goto标志printf("返回主菜单请按1,返回管理员通道请按2!\n");scanf("%d",&fanhui);if (fanhui==1)zhucaidan();if (fanhui==2)guanli();if (fanhui!=1&&fanhui!=2){printf("\t请按要求输入!\n");goto fan2;};}if(ch=='n'||ch=='N')shanchu();if(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y'){printf("\t\t请按要求输入,谢谢!\n");goto chongshu2;};}}if (cunzai==0){printf("\t\t所查找的航班不存在,请重新选择查询方式!\n");goto chongxin;};}if (n==3){FILE *fp=NULL;char zhongdianzhan[10];char hangbanhao[10];char ch;int i,j,k,l=0,cunzai=0;printf("\t\t请输入要查询的终点站:\n");scanf("%s",&zhongdianzhan);if ((fp=fopen("flight.txt","r+"))==NULL){printf("can not open flight.txt.\n");。
航班查询系统 C语言源程序

#include 〈stdio、h>#include<stdlib、h〉#include<string、h〉#define NOD struct plane_liststruct plane{char number[10];char start[10];char arrive [10];chardate[10];char starttime[10];chararrivingtime[10];char price[10];charmodel[10];};NOD{char number [10];char start[10];char arrive [10];char date[10];charstarttime[10];char arrivingtime[10];char price[10];charmodel[10];NOD*next;};FILE *fp;/*由文件中得数据生成一个飞机航班得链表,如果文件不存在,则就是一个空链表*/ NOD*load(char planename[]){NOD *p,*q,*head;structplaneper;p=(NOD *)malloc(sizeof(NOD));q=head=NULL;if((fp=fopen(planename,"rb"))==NULL)ﻩreturn head;else{while(!feof(fp)){if(fread(&per,sizeof(struct plane),1,fp)==1){p=(NOD*)malloc(sizeof(NOD));strcpy(p->number,per、number);strcpy(p->start,per、start);strcpy(p->arrive,per、arrive);strcpy(p—>date,per、date);strcpy(p->starttime,per、starttime);ﻩstrcpy(p—>arrivingtime,per、arrivingtime);strcpy(p—>price,per、price);strcpy(p-〉model,per、model);ﻩhead=p;p—〉next=q;q=head;}}}fclose(fp);return(head);}/*输入*/NOD *insert(NOD *head){NOD *temp,*p;p=head;temp=(NOD*)malloc(sizeof(NOD));printf(”\n\t请输入航班号:”);scanf("%s",temp—>number);printf("\n\t请输入起点站:");scanf("%s”,temp—>start);printf(”\n\t请输入终点站:");scanf("%s”,temp->arrive);printf(”\n\t请输入起飞时间:”);scanf("%s”,temp->starttime);printf("\n\t请输入到达时间:”);scanf(”%s”,temp->arrivingtime);printf("\n\t请输入班期:”);scanf("%s",temp—〉date);printf("\n\t请输入票价:");scanf(”%s",temp—〉price);printf("\n\t请输入航班型号:");scanf(”%s",temp—>model);head=temp;temp—〉next=p;return head;}/*保存*/void save(NOD *head,char[]){NOD*p;structplane per;if((fp=fopen(,"wb”))==NULL){printf("文件无法写入");exit(0);}else{p=head;while(p!=NULL){ strcpy(per、number,p—〉number);strcpy(per、start,p—〉start);ﻩstrcpy(per、arrive,p->arrive);strcpy(per、date,p—>date);strcpy(per、starttime,p-〉starttime);ﻩstrcpy(per、arrivingtime,p—〉arrivingtime);strcpy(per、price,p->price);strcpy(per、model,p-〉model);if(fwrite(&per,sizeof(structplane),1,fp)!=1)ﻩ{printf("文件不能写入数据,请检查后重新运行、\n");ﻩexit(0);ﻩ}p=p—>next;}fclose(fp);}}/*显示*/void display(NOD*head){ NOD *p;p=head;while(p!=NULL){ printf("航班号:%s\n”,p—>number);printf(”起点站:%s\n”,p-〉start);printf(”终点站:%s\n",p-〉arrive);printf("班期:%s\n”,p-〉date);printf("起飞时间:%s\n”,p->starttime);ﻩprintf("到达时间:%s\n",p->arrivingtime);printf("票价:%s\n”,p—>price);printf(”飞机型号:%s\n”,p-〉model);p=p-〉next;}}/*航班号查找*/void finda(NOD*head){ NOD*p;char number[10];printf("请输入查找航班得编号:”);scanf("%s”,number);p=head;while (p!=NULL){ if(strcmp(number,p—〉number)==0){printf("航班号:%s\n",p—>number);printf(”起点站:%s\n”,p—>start);printf(”终点站:%s\n",p->arrive);printf("班期:%s\n",p->date);printf(”起飞时间:%s\n”,p->starttime);printf(”到达时间:%s\n",p-〉arrivingtime);printf(”票价:%s\n",p—>price);printf("飞机型号:%s\n”,p-〉model);break;}elseﻩp=p->next;}if(p==NULL)ﻩprintf("\n\t查无此航班\n");}/*起点站查找*/voidfindb(NOD *head){NOD *p;char start[10];printf("请输入查找航班得起点站:");scanf(”%s”,start);p=head;while(p!=NULL){if(strcmp(start,p-〉start)==0){printf(”航班号:%s\n",p->number);printf(”起点站:%s\n",p—〉start);printf(”终点站:%s\n",p->arrive);printf(”班期:%s\n",p—〉date);printf("起飞时间:%s\n",p—〉starttime);printf(”到达时间:%s\n",p->arrivingtime);printf("票价:%s\n”,p->price);printf("飞机型号:%s\n",p->model);ﻩbreak;}elseﻩp=p->next;}if(p==NULL)printf("\n\t查无此航班\n”);}/*终点站查找*/void findc(NOD*head){NOD *p;char arrive[10];printf("请输入查找航班得终点站:”);scanf("%s”,arrive);p=head;while (p!=NULL){if(strcmp(arrive,p->arrive)==0){printf(”航班号:%s\n",p->number);printf(”起点站:%s\n",p—>start);printf("终点站:%s\n",p—>arrive);printf("班期:%s\n",p->date);printf("起飞时间:%s\n",p->starttime);printf("到达时间:%s\n”,p-〉arrivingtime);printf(”票价:%s\n",p—〉price);printf("飞机型号:%s\n",p->model);break;}elseﻩp=p—>next;}if(p==NULL)printf("\n\t查无此航班\n");}/*起飞时间查找*/void findd(NOD *head){ NOD *p;char starttime[10];printf("请输入查找航班得起飞时间:");scanf("%s”,starttime);p=head;while(p!=NULL){if(strcmp(starttime,p->starttime)==0){printf("航班号:%s\n",p->number);printf("起点站:%s\n",p—〉start);printf("终点站:%s\n”,p->arrive);printf(”班期:%s\n",p—〉date);printf("起飞时间:%s\n",p-〉starttime);printf(”到达时间:%s\n",p—>arrivingtime);printf("票价:%s\n",p—〉price);printf("飞机型号:%s\n”,p->model);ﻩbreak;}elsep=p-〉next;}if(p==NULL)printf("\n\t查无此航班\n");}/*到达时间查找*/void finde(NOD*head){NOD *p;chararrivingtime[10];printf(”请输入查找航班得到达时间:");scanf(”%s",arrivingtime);p=head;while (p!=NULL){if(strcmp(arrivingtime,p—〉arrivingtime)==0){printf("航班号:%s\n”,p-〉number);printf("起点站:%s\n",p—〉start);printf(”终点站:%s\n”,p->arrive);printf("班期:%s\n",p-〉date);printf("起飞时间:%s\n”,p—>starttime);ﻩprintf("到达时间:%s\n",p->arrivingtime);printf("票价:%s\n",p-〉price);printf("飞机型号:%s\n",p—〉model);break;}elseﻩp=p—〉next;}if(p==NULL)printf(”\n\t查无此航班\n”);}/*删除*/NOD *dele(NOD *head){NOD *p,*q;char number[5];printf(":请输入要删除得航班编号”);scanf("%s”,number);p=q=head;while(p!=NULL){if(strcmp(number,p->number)==0){ﻩif(head==p)ﻩﻩhead=p—>next;ﻩelseq->next=p->next;ﻩfree(p);ﻩbreak;}else{q=p;p=p—>next;}}if(p==NULL)printf(”\n\t查无此航班\n”);returnhead;}/*主函数*/voidmain(){ NOD*head;char fnum[10];int choise;printf("\n\t欢迎光临航班查询系统:");scanf("%s”,fnum);head=load(fnum);while(1){printf("\n\t\t 航班信息检索与查询\n");printf("\t\t********************************\n”);printf("\t\t1、航班号查找\n”);printf("\t\t 2、起点站查找\n");printf(”\t\t 3、终点站查找\n");printf("\t\t4、起飞时间查找\n");printf("\t\t5、到达时间查找\n");printf("\t\t6、航班号删除\n");printf(”\t\t7、增加新航班\n");printf("\t\t 8、显示所有航班\n");printf("\t\t 9、存盘并退出\n”);printf(”\n\t请选择1—9:");scanf("%d”,&choise);switch(choise){ case 1:finda(head);break;case 2:findb(head);break;case 3:findc(head);break;case4:findd(head);break;case 5:finde(head);break;case 6:head=dele(head);break;ﻩcase 7:head=insert(head);break;ﻩcase 8:display(head);break;ﻩ case9:save(head,fnum);exit(0);default:printf("输入错误,重新输入\n");ﻩ }} }。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*1、用户和管理员及航班信息请以英文字母或数字输入*//*2、管理员账户为:boss,密码为:123。
保存在txt文件中,需要修改请于程序中修改*//*3、部分文件读写为二进制读写,所以打开文件时会看到乱码*/#include <stdio.h>#include <string.h>#include <stdlib.h>#include<conio.h>#define N 1000void zhujiemian();//主界面函数void verify();//用户及管理员登录选择void loginmanager();//管理员登录void loginuser();//用户登录void loginflightm();//管理员登录机票系统void loginflightu();//用户登录机票系统void creatfile();//创建用户信息模块void saveuser();//用户信息保存模块程序void input(); //输入航班信息void print(); //输出航班信息void save(); //保存航班信息void read(); //读取航班信息void paixu(); // 对所有航班按航班号排序void search(); //查找航班信息void dingpiao(); //订票信息struct users //管理员/用户信息结构体,管理员可以修改航班信息{char Name[20]; //管理员/用户姓名char sexual[10];//用户性别char ps[8]; // 用户密码int age; //用户年龄long Number; //用户身份证号码int power; //power为1是管理员登录,为0是用户登录}user[N],up,mg;//up为键盘输入用户信息,user[N]为文件保存的用户信息,mg为管理员结构体int n;//所有用户个数,初始化为0struct air //航班信息结构体{int num; //航班号char start[20]; //出发地char over[20]; //目的地char time[10]; //时间int count; //票数int prize; //票价}s[N],fnew;int i;int m=0; //所有航班个数#define PRINT "%-d%12s%12s%10s%12d%10d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count,s[i].prize //定义输出格式void main()//主函数{zhujiemian();}void zhujiemian()//主界面函数{int j;printf("#===================================================#\n");printf("# 欢迎进入机票管理系统#\n");printf("# 1、登录系统#\n");printf("# 2、新用户注册#\n");printf("# 0、退出#\n");printf("#===================================================#\n");printf("请在1-2中选择以回车键结束:\n\n");scanf("%d",&j);switch(j){case 1:verify();//进入机票系统break;case 2:creatfile();//进入用户注册系统break;case 0:;break;}}void verify()//验证用户及管理员信息模块{system("cls");printf("#===================================================#\n");printf("# 1、管理员登录#\n");printf("# 2、用户登录#\n");printf("# 0、返回主界面#\n");printf("#===================================================#\n");scanf("%d",&j);switch(j){case 1:loginmanager();//进入管理员登录界面break;case 2:loginuser();//进入用户登录界面break;case 0:system("cls");zhujiemian(); //进入主界面break;}}/********管理员登录确定函数**********/void loginmanager(){FILE * fp=NULL;//定义文件指针char DataFile[20]="manager.txt";//存储管理员信息的文件名int i=0,j=1;char relogin; //是否重新登录int success=0; //登录成功的标志printf("\n---管理员登录---\n");fp=fopen(DataFile,"r");if(fp==NULL)//如果当前文件不存在,初始化根用户名为boss,密码为123,权限为管理员{printf("首次使用该系统!\n");printf("管理员账户为:boss 密码为:123\n");fp=fopen(DataFile,"a");//以追加方式打开文件user[0].Number=0;strcpy(user[0].Name,"boss");strcpy(user[0].sexual,"male");user[0].age=22;user[0].power=1;strcpy(user[0].ps,"123");fwrite(&user[0],sizeof(user),1,fp);fclose(fp);elsefclose(fp);again:printf("请输入管理员姓名:");scanf("%s",);//输入用户名[19]='\0';printf("请输入管理员密码:");fflush(stdin);for(i=0;i<7;i++)//输入密码,以*在屏幕显示{up.ps[i]=getch();up.ps[i+1]='\0';//字符要以'\0'结尾if(up.ps[i]=='\b'){i--;up.ps[i]='\0';//清除前一个字符i--;//接收前一个字符printf("\b ");printf("\b");continue;}if(up.ps[i]=='\r'){up.ps[i]='\0';break;}printf("*");}fp=fopen(DataFile,"rt");if(fp==NULL) // 打开文件失败时提示{printf("\n打开%s 失败!按任意键结束程序\n",DataFile);perror("Open file fail");getchar();return;}if((fp=fopen("manager.txt","r"))==NULL)//打开文件,并判断是否出错{printf("\n出错,请检查文件是否存在,按任意键返回主菜单\n");//打印出错提示getchar();}fread(&mg,sizeof(struct users),1,fp);//从文件中读取信息fclose(fp);//关闭文件if(strcmp(,)==0&&strcmp(mg.ps,up.ps)==0){success=1;}if(success==1) //登录成功{printf("\n登录成功,按任意键进入机票调整系统!\n");getchar();loginflightm();}else//未登录成功{fflush(stdin);//清除输入缓冲区中的字符printf("\n用户名或密码错误!重新输入请按y,退出请按n:\n");relogin=getchar();if(relogin=='y'||relogin=='Y'){getchar();goto again;}else{verify();exit(0);}}}/********用户登录函数**********/void loginuser(){FILE *fp=NULL,*fp1;//定义文件指针char DataFile[20]="yonghu.txt";//存储管理员信息的文件名int i=0,j=0;char relogin; //是否重新登录int success=0; //登录成功的标志printf("\n---用户登录---\n");fp=fopen(DataFile,"r");//读取文件中数据if((fp1=fopen("howmanyusers.txt","a"))==NULL)//读写方式打开文件,若文件不存在,则n=0{//printf("创建文件失败!\n\n");//打印出错提示n=0;//getchar();//continue;}else{fp1=fopen("howmanyusers.txt","r");fscanf(fp1, "%d",&n);//读取fp1中的用户个数}fclose(fp1);if((fp=fopen("yonghu.txt","r"))==NULL)//打开文件,并判断是否出错{fp1=fopen("howmanyusers.txt","w+");//以写方式打开fprintf(fp1,"%d",0);//打开用户文件失败,则输入用户个数0到fp1fclose(fp1);printf("\n目前没有用户信息,请按ENTER键返回主菜单先进行注册!\n");getchar();getchar();system("cls");zhujiemian();}for(i=0;i<n;i++){fread(&user[i],sizeof(struct users),1,fp);//从文件中读取信息}fclose(fp);//关闭文件//输入数据与文件中用户比对again:printf("请输入用户姓名:");scanf("%s",);//输入用户名[19]='\0';printf("请输入用户密码:");fflush(stdin);for(i=0;i<7;i++)//输入密码,以*在屏幕显示{up.ps[i]=getch();up.ps[i+1]='\0';//字符要以'\0'结尾if(up.ps[i]=='\b'){i--;up.ps[i]='\0';//清除前一个字符i--;//接收前一个字符printf("\b ");printf("\b");continue;}if(up.ps[i]=='\r'){up.ps[i]='\0';break;}printf("*");}for(i=0;i<n;i++) //对比用户名和密码,进行登录{if(strcmp(user[i].Name,)==0&&strcmp(user[i].ps,up.ps)==0){success=1;break;}}if(success==1) //登录成功{printf("\n登录成功,按任意键进入机票调整系统!\n");getchar();loginflightu();}else //未登录成功{fflush(stdin);//清除输入缓冲区中的字符printf("\n用户名或密码错误!重新输入请按y,退出请按n:\n");relogin=getchar();if(relogin=='y'||relogin=='Y'){getchar();goto again;}else{verify();exit(0);}}}void saveuser(struct users[])//用户信息保存模块程序{FILE *fp,*fp1;//定义文件指针if((fp=fopen("yonghu.txt","a"))==NULL)//打开文件并判断是否出错{printf("创建文件失败!\n\n");//打印出错提示getchar();return;}if((fp1=fopen("howmanyusers.txt","w+"))==NULL)//打开文件并判断是否出错{printf("创建文件失败!\n\n");//打印出错提示getchar();return;}for(i=0;i<n;i++){if(fwrite(&user[i],sizeof(struct users),1,fp)==0)//向文件写入数据,并判断是否出错{printf("向文件输入数据失败!\n\n");}}fprintf(fp1,"%d",n);//输入用户个数到fp1fclose(fp);//关闭文件fclose(fp1);//关闭文件}void creatfile()//增加用户信息模块{FILE *fp=NULL,*p=NULL,*fp1;char DataFile[20]="yonghu.txt";//存储用户信息的文件名//int a[100];int i=0,k=1,count=0;fp=fopen(DataFile,"r");system("cls");//清屏if(fp==NULL)//如果当前文件不存在,提示打开文件失败{fp1=fopen("howmanyusers.txt","w+");//以写方式打开fprintf(fp1,"%d",0);//打开用户文件失败,则输入用户个数0到fp1fclose(fp1);printf("\n不存在%s,正在创建!\n",DataFile);fp=fopen(DataFile,"a");creatfile();}if((fp1=fopen("howmanyusers.txt","a"))==NULL)//读写方式打开文件,若文件不存在,则n=0{n=0;}else{fp1=fopen("howmanyusers.txt","r");fscanf(fp1, "%d",&n);//读取fp1中的用户个数}fclose(fp1);for(i=0;i<n;i++){fread(&user[i],sizeof(struct users),1,fp);//从文件中读取信息}fclose(fp);//关闭文件//如果成功打开文件,则提示输入用户相关信息printf("请输入用户信息\n");fflush(stdin);while(k){//printf("\n输入身份证号码注意身份证号码不能为0!\n");printf("请输入身份证号码:");scanf("%ld",&up.Number);i=0;//再次初始化i为0//判断身份证号是否存在while(i<n){if(user[i].Number==up.Number){printf("该身份证号码已被使用过!\n请重新输入身份证号:");scanf("%ld",&up.Number);i=0;//continue;}elsei++;}//经循环对比后,i的值仍和n相等,将新注册的信息加入数组末位user[i].Number=up.Number;printf("姓名:");scanf("%s",&user[i].Name);user[i].Name[19]='\0';printf("性别:");scanf("%s",&user[i].sexual);printf("用户密码:");scanf("%s",&user[i].ps);printf("年龄:");scanf("%d",&user[i].age);n++;//用户数目增加printf("是否继续注册?是:选1,否:选0;");scanf("%d",&k);}saveuser(user);//保存用户信息fclose(fp);//在屏幕上显示文件内容system("cls");printf("数据已经成功保存到%s中\n",DataFile);getchar();printf("按任意键返回主界面!\n");getchar();system("cls");zhujiemian();//返回主界面}void loginflightm()//管理员登录机票系统{int j;do{system("cls");printf(" ★----------------您好,欢迎进入自动化飞机订票系统!---★\n");printf("===================================================================== ===========\n");printf(" **-------- -------☆1.输入航班信息☆-------- -------------------**\n\n" " **-------- ----☆2. 浏览航班信息☆----- ------------------**\n\n" " **-------- ☆ 3. 查找航班信息-☆-------- ------------**\n\n" " **-------- ---☆ 4.对航班按航班票价排序---☆-----------------------**\n\n" " **-------- ------☆ 5. 订票信息-☆-------- -----------------**\n\n" " **-------- ----------☆0.退出-☆-------- ---------------------**\n\n" " **-------- ---------------☆☆-------- -------------------------**\n\n" " **-------- -----------------☆-------- --------------------------**\n\n" " **-------- ---------------☆☆-------- --------------------------**\n\n");printf("===================================================================== ===========\n");printf("请在0-5中选择以回车键结束:\n\n");scanf("%d",&j);switch(j){case 1:input();//调用输入模块break;case 2:system("cls");print();//调用打印模块break;case 3:search();//调用查找模块break;case 4:paixu();//调用排序模块break;case 5:dingpiao();//调用订票模块break;case 0:;break;}}while(j!=0); //判断结束printf("按任意键返回主界面\n");system("cls");zhujiemian();}//登录函数结束void loginflightu()//用户登录机票系统{int j;do{system("cls");printf(" ★----------------您好,欢迎进入自动化飞机订票系统!---★\n");printf("===================================================================== ===========\n");printf(" **-------- ----☆ 1. 浏览航班信息☆----- ------------------**\n\n" " **-------- ☆ 2. 查找航班信息-☆-------- ------------**\n\n" " **-------- ---☆ 3.对航班按航班票价排序---☆-----------------------**\n\n" " **-------- ------☆ 4. 订票信息-☆-------- -----------------**\n\n" " **-------- ----------☆0.退出-☆-------- ---------------------**\n\n" " **-------- ---------------☆☆-------- -------------------------**\n\n" " **-------- -----------------☆-------- --------------------------**\n\n" " **-------- ---------------☆☆-------- --------------------------**\n\n");printf("===================================================================== ===========\n");printf("请在0-5中选择以回车键结束:\n\n");scanf("%d",&j);switch(j){case 1:system("cls");print();//调用打印模块break;case 2:search();//调用查找模块break;case 3:paixu();//调用排序模块break;case 4:dingpiao();//调用订票模块break;case 0:;break;}}while(j!=0); //判断结束printf("按任意键返回主界面\n");system("cls");zhujiemian();}//登录函数结束void input()//输入航班信息模块,管理员操作{int i=0,k=1;read();printf("请依次输入航班信息(航班号,起始站,终点站,起飞时间,机票数,票价):\n\n");//打印提示信息printf("--------------------------------------------------------------------------\n");//fflush(stdin);while(k){printf("请输入航班号:\n");scanf("%d",&fnew.num); //读取航班号i=0;//再次初始化i为0//判断航班是否已经存在while(i<m){if(s[i].num==fnew.num){printf("该航班已经存在!\n请重新输入:");scanf("%d",&fnew.num);i=0;//continue;}elsei++;}//经循环对比后,i的值仍和n相等,将新注册的信息加入数组末位s[i].num=fnew.num;printf("请输入起始站:\n");scanf("%s",s[i].start);//读取起始站printf("请输入终点站:\n");scanf("%s",s[i].over);//读取终点站printf("请输入时间:\n");scanf("%s",s[i].time);//读取时间printf("请输入余票数(机票数为0结束输入):\n",m);scanf("%d",&s[i].count);//读取机票数printf("请输入机票票价:\n",m);scanf("%d",&s[i].prize);//读取机票票价m++; //所有航班信息个数// printf("第%d个信息已经输完是否继续?按1-9任意数字继续,按0结束",m);//scanf("%d",&y);printf("是否继续添加航班?是:选1,否:选0;");scanf("%d",&k);if(k==0){save();//将结构体信息存盘system("cls");print();//输出输入的航班信息break;}}}void save()//航班信息保存模块程序{FILE *fp,*fp1;//定义文件指针if((fp=fopen("flight.txt","wb"))==NULL)//打开文件并判断是否出错{printf("创建文件失败!\n\n");//打印出错提示getchar();return;}if((fp1=fopen("howmanyflights.txt","wb"))==NULL)//打开文件并判断是否出错{printf("创建文件失败!\n\n");//打印出错提示getchar();return;}for(i=0;i<m;i++)if(fwrite(&s[i],sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错printf("向文件输入数据失败!\n\n");fprintf(fp1,"%d",m);fclose(fp);//关闭文件fclose(fp1);//关闭文件}void read()//从文件读取航班信息模块{FILE *fp,*fp1;//定义文件指针fp=fopen("flight.txt","r");//system("cls");//清屏if(fp==NULL)//如果当前文件不存在,提示打开文件失败{fp1=fopen("howmanyflights.txt","w+");//以写方式打开fprintf(fp1,"%d",0);//打开用户文件失败,则输入用户个数0到fp1fclose(fp1);printf("\n不存在flight.txt,正在创建!\n");fp=fopen("flight.txt","a");printf("创建完成!\n");system("cls");read();//perror("Open file fail");//getch();}if((fp1=fopen("howmanyflights.txt","rb"))==NULL)//读写方式打开文件,若文件不存在,则m=0{//printf("创建文件失败!\n\n");//打印出错提示m=0;}else{fp1=fopen("howmanyflights.txt","r");fscanf(fp1, "%d",&m);//读取fp1中的用户个数}fclose(fp1);for(i=0;i<m;i++){fread(&s[i],sizeof(struct air),1,fp);//从文件中读取信息}fclose(fp);//关闭文件}void print()//屏幕打印航班信息模块{read();//调用读取文件函数if(m==0)printf("\n\n目前没有航班信息!\n");else{printf("航班信息如下:\n");printf("航班号起始站终点站时间余票数票价\n");for(i=0;i<m;i++){printf(PRINT);//打印信息}}printf("\n请按任意键回车键结束返回主菜单");getchar();getchar();}void paixu()//对所有航班按航班价格排序{int j;struct pai{int no;char name1[20];char name2[20];char time[20];int count;int prize;}p[1];//临时定义结构体,作为排序时的第三变量read();//调用读取信息函数for(j=0;j<(m-1);j++){for(i=0;i<(m-(1+j));i++){if(s[i].prize>s[i+1].prize) //按价格升序排列,p[0]为中间变量{p[0].no=s[i].num;//替换航班号strcpy(p[0].name1,s[i].start);//替换其始站strcpy(p[0].name2,s[i].over);//替换终点站strcpy(p[0].time,s[i].time);//替换时间p[0].count=s[i].count;//替换机票数p[0].prize=s[i].prize;//替换票价s[i]=s[i+1];s[i+1].num=p[0].no;//替换航班号strcpy(s[i+1].start,p[0].name1);//替换其始站strcpy(s[i+1].over,p[0].name2);//替换终点站strcpy(s[i+1].time,p[0].time);//替换时间s[i+1].count=p[0].count;//替换机票数s[i+1].prize=p[0].prize;}}}save();//调用保存函数system("cls");printf("排序后,");print();}void search()//按航班号查询模块{char ii[10];int no,k;read();//调用读取函数do{system("cls");k=0;//每次查找都初始化k为0printf("请输入你要找的航班号:");//打印查询方式菜单scanf("%d",&no);//航班号for(i=0;i<m;i++){if(s[i].num==no)//按航班号判断输出条件{k=1;system("cls");printf("\n查找航班信息成功!\n");printf("航班号起始站终点站时间余票数票价\n");printf(PRINT);//打印信息break;}}no=0;//将航班号重新赋值为0if(k==0){printf("没有您需要的信息\n");}printf("\n是否继续查找?请键入yes或no以回车键结束\n");scanf("%s",ii);}while(strcmp(ii,"yes")==0);//判断结束}void dingpiao()//订票模块{int n;char a[10];search();//调用查询模块do{printf("请输入您要订的机票数以回车键结束:\n");scanf("%d",&n);//读取所订机票数if(n<0){printf("请输入有效的机票数!\n");//判断机票数是否出错break;}if(s[i].count!=0&&s[i].count>=n)//判断是否出错{s[i].count=s[i].count-n;save();//调用保存函数printf("订票成功!\n\n");break;}if(s[i].count<n)//判断是否出错{printf("余票不足,请输入有效的机票数!\n");getchar();}printf("是否继续订票?请输入yes或no以回车键结束:\n");//判断是否继续订票scanf("%s",a);}while(!strcmp(a,"yes"));//判断结束getchar();printf("按ENTER键返回用户主界面。