目录
第一部分
源程序---------------------------------------------------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
#include
#include
#define N 1000
typedef 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 { 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 { printf_one(i); printf("\n"); } getchar(); getchar(); menu(); } void order() /*排序模块(按平均成绩)*/ { int i,j; struct plane s; system( "cls" ); for(i=0;i { for(j=i+1;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 { 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 { 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 { 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; } else return 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"); } } else printf("该航班不存在!\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 { 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 if(fwrite(&ti[i],sizeof(struct plane),1,fp)!=1) { printf("file write error\n"); w=0; } if(w==1) { printf("file save 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 file ok!"); 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(); } 第二部分:函数流程图